/* Duck Egg Digital — production styles */

:root{
  --bg: oklch(0.97 0.012 85);
  --bg-2: oklch(0.94 0.014 85);
  --ink: oklch(0.21 0.012 250);
  --ink-2: oklch(0.42 0.012 250);
  --ink-3: oklch(0.62 0.010 250);
  --rule: oklch(0.86 0.012 90);
  --accent: oklch(0.82 0.055 195); /* duck egg */
  --accent-ink: oklch(0.32 0.045 215);
  --paper: oklch(0.99 0.008 85);
  --font-display: "Instrument Serif", "Cormorant Garamond", Georgia, serif;
  --font-sans: "Geist", "Söhne", ui-sans-serif, system-ui, -apple-system, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font-family:var(--font-sans);font-weight:400;font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
::selection{background:var(--accent);color:var(--ink)}

/* Skip link */
.skip-link{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--bg);
  padding:10px 14px;border-radius:0 0 8px 0;font-size:14px;z-index:1000}
.skip-link:focus{left:0}

/* ── Layout ─────────────────────────────────────────── */
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
@media (max-width:640px){ .wrap{padding:0 20px} }

/* ── Nav ────────────────────────────────────────────── */
nav.top{position:sticky;top:0;z-index:50;
  background:color-mix(in oklch, var(--bg) 86%, transparent);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
  border-bottom:1px solid color-mix(in oklch, var(--rule) 70%, transparent)}
nav.top .row{display:flex;align-items:center;justify-content:space-between;height:84px}
.brand{display:flex;align-items:center;gap:14px;font-weight:500;letter-spacing:-0.01em;font-size:18px}
.brand .mark{width:52px;height:52px;border-radius:50%;
  background:var(--accent);
  display:grid;place-items:center;
  box-shadow:inset 0 -12px 20px color-mix(in oklch, var(--accent-ink) 22%, transparent),
             inset 0 9px 14px rgba(255,255,255,.55)}
.brand .mark::after{content:"";width:14px;height:14px;border-radius:50%;
  background:color-mix(in oklch, var(--accent-ink) 70%, transparent)}
.brand b{font-weight:500}
.brand .dot{color:var(--accent-ink);margin:0 3px}
.nav-links{display:flex;gap:30px;align-items:center;font-size:14.5px;color:var(--ink-2)}
.nav-links a{position:relative;padding:6px 2px}
.nav-links a:hover{color:var(--ink)}
.nav-links a.active{color:var(--ink)}
.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;
  height:2px;background:var(--accent);border-radius:2px}
.nav-cta{display:inline-flex;align-items:center;gap:8px;
  padding:10px 16px;border-radius:999px;
  background:var(--ink);color:var(--bg);font-size:14px;font-weight:500;
  transition:transform .2s ease, background .2s ease}
.nav-cta:hover{transform:translateY(-1px);background:color-mix(in oklch, var(--ink) 88%, var(--accent-ink))}
.nav-cta .arr{display:inline-block;transition:transform .2s ease}
.nav-cta:hover .arr{transform:translate(2px,-2px)}
.burger{display:none;border:0;background:none;font-size:22px;line-height:1;
  color:var(--ink);cursor:pointer;padding:8px;border-radius:8px}
.burger:hover{background:color-mix(in oklch, var(--ink) 6%, transparent)}
.burger[aria-expanded="true"]{background:color-mix(in oklch, var(--ink) 10%, transparent)}
body.nav-open{overflow:hidden}
@media (max-width:780px){
  nav.top .row{position:relative}
  .nav-cta{display:none}
  .burger{display:block}
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;
    flex-direction:column;align-items:stretch;gap:0;
    margin:0;padding:8px 20px 16px;
    background:#fff;
    border-top:1px solid var(--rule);
    box-shadow:0 16px 32px -16px rgba(20,30,40,.18);
    font-size:16px;color:var(--ink)}
  .nav-links.is-open{display:flex}
  .nav-links a{display:block;width:100%;padding:14px 4px;
    border-bottom:1px solid color-mix(in oklch, var(--rule) 70%, transparent);
    color:var(--ink)}
  .nav-links a:last-child{border-bottom:0}
  .nav-links a.active{color:var(--ink)}
  .nav-links a.active::after{display:none}
}

/* ── Hero ───────────────────────────────────────────── */
.hero{padding:80px 0 64px;position:relative;overflow:hidden}
.hero .grid{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:end}
@media (max-width:900px){ .hero .grid{grid-template-columns:1fr;gap:36px} }
.eyebrow{display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.05em;
  color:var(--ink-2);text-transform:uppercase}
.eyebrow .pulse{width:7px;height:7px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 0 color-mix(in oklch, var(--accent) 70%, transparent);
  animation:pulse 2.4s infinite}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 color-mix(in oklch, var(--accent) 60%, transparent)}
  70%{box-shadow:0 0 0 10px color-mix(in oklch, var(--accent) 0%, transparent)}
  100%{box-shadow:0 0 0 0 color-mix(in oklch, var(--accent) 0%, transparent)}
}
h1.display{
  font-family:var(--font-display);font-weight:400;
  font-size:clamp(54px,8.2vw,124px);
  line-height:.95;letter-spacing:-0.022em;
  margin:22px 0 0;color:var(--ink);
}
h1.display .it{font-style:italic;color:var(--accent-ink)}
.lede{margin-top:28px;max-width:46ch;color:var(--ink-2);font-size:18px;line-height:1.55}
.hero-cta{display:flex;gap:14px;margin-top:32px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:10px;
  padding:14px 20px;border-radius:999px;font-size:15px;font-weight:500;
  transition:transform .15s ease, background .2s ease, color .2s ease;cursor:pointer}
.btn.primary{background:var(--ink);color:var(--bg)}
.btn.primary:hover{transform:translateY(-1px);
  background:color-mix(in oklch, var(--ink) 84%, var(--accent-ink))}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--rule)}
.btn.ghost:hover{box-shadow:inset 0 0 0 1px var(--ink)}

.hero .meta{display:flex;flex-direction:column;gap:18px;font-size:13.5px;color:var(--ink-2)}
.hero .meta .meta-hero{margin:0 0 4px;border-radius:14px;overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--rule);aspect-ratio:4/3;background:var(--rule)}
.hero .meta .meta-hero img{display:block;width:100%;height:100%;object-fit:cover}
.hero .meta .stat{display:flex;align-items:baseline;gap:14px;
  padding:14px 0;border-top:1px solid var(--rule)}
.hero .meta .stat:last-child{border-bottom:1px solid var(--rule)}
.hero .meta .stat .num{font-family:var(--font-display);font-size:44px;
  color:var(--ink);line-height:1;letter-spacing:-.02em;min-width:90px}
.hero .meta .stat .num .sub{color:var(--ink-3)}
.hero .meta .stat .lbl{flex:1;color:var(--ink-2)}

/* Decorative egg */
.egg-deco{position:absolute;right:-120px;top:-60px;width:520px;height:560px;
  background:radial-gradient(closest-side, var(--accent) 0%, var(--accent) 55%,
    color-mix(in oklch, var(--accent) 0%, transparent) 75%);
  border-radius:48% 52% 52% 48% / 60% 60% 40% 40%;
  filter:blur(2px);opacity:.55;pointer-events:none;z-index:-1}

/* ── Marquee ────────────────────────────────────────── */
.marquee{margin-top:48px;border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule);padding:18px 0;overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee .track{display:flex;gap:48px;width:max-content;
  animation:scroll 38s linear infinite;
  font-family:var(--font-mono);font-size:13px;color:var(--ink-2);
  text-transform:uppercase;letter-spacing:.05em}
.marquee .track span{display:inline-flex;align-items:center;gap:48px}
.marquee .track span::after{content:"●";color:var(--accent);font-size:9px}
@keyframes scroll{ from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* ── Section heads ──────────────────────────────────── */
section.bay{padding:120px 0;position:relative}
section.bay + section.bay{border-top:1px solid var(--rule)}
.sec-head{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;
  align-items:end;margin-bottom:64px}
@media (max-width:780px){ .sec-head{grid-template-columns:1fr;gap:18px;margin-bottom:40px} }
.sec-head .idx{font-family:var(--font-mono);font-size:13px;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.08em}
.sec-head h2{margin:8px 0 0;font-family:var(--font-display);font-weight:400;
  font-size:clamp(40px,5.5vw,72px);line-height:1;letter-spacing:-.02em}
.sec-head h2 .it{font-style:italic;color:var(--accent-ink)}
.sec-head p{margin:0;font-size:17px;color:var(--ink-2);max-width:48ch;line-height:1.55}

/* ── Services ───────────────────────────────────────── */
.services{display:grid;grid-template-columns:repeat(2,1fr);gap:0;
  border-top:1px solid var(--rule)}
@media (max-width:780px){ .services{grid-template-columns:1fr} }
.svc{padding:36px 36px 40px;border-bottom:1px solid var(--rule);
  position:relative;transition:background .25s ease}
.svc:nth-child(odd){border-right:1px solid var(--rule)}
@media (max-width:780px){ .svc:nth-child(odd){border-right:0} }
.svc:hover{background:var(--bg-2)}
.svc .no{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);letter-spacing:.06em}
.svc h3{margin:14px 0 14px;font-family:var(--font-display);font-weight:400;
  font-size:36px;line-height:1.05;letter-spacing:-.015em}
.svc h3 .arr{display:inline-block;color:var(--accent-ink);font-style:italic;
  margin-left:6px;transition:transform .25s ease;opacity:0}
.svc:hover h3 .arr{opacity:1;transform:translate(6px,-4px)}
.svc p{margin:0;color:var(--ink-2);max-width:52ch;font-size:15.5px}
.svc .tags{margin-top:22px;display:flex;flex-wrap:wrap;gap:6px}
.svc .tag{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.05em;padding:5px 9px;border-radius:999px;color:var(--ink-2);
  background:color-mix(in oklch, var(--accent) 18%, transparent)}
.svc .quote{margin-top:24px;padding-top:18px;border-top:1px dashed var(--rule);
  font-family:var(--font-display);font-style:italic;font-size:17px;
  color:var(--ink-2);line-height:1.4;max-width:46ch}
.svc .quote cite{display:block;margin-top:8px;font-style:normal;
  font-family:var(--font-mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-3)}

/* ── Work / Case studies ────────────────────────────── */
.work-grid{display:grid;grid-template-columns:1fr;gap:32px}
.case{position:relative;display:grid;grid-template-columns:1.3fr 1fr;gap:0;
  background:var(--paper);border:1px solid var(--rule);border-radius:22px;
  overflow:hidden;transition:transform .25s ease, box-shadow .25s ease}
@media (max-width:880px){ .case{grid-template-columns:1fr} }
.case:hover{transform:translateY(-2px);
  box-shadow:0 24px 60px -30px color-mix(in oklch, var(--ink) 35%, transparent)}
.case .frame{position:relative;min-height:340px;overflow:hidden;
  background:var(--bg-2);
  border-right:1px solid var(--rule);
  display:flex;align-items:center;justify-content:center;padding:24px}
@media (max-width:880px){
  .case .frame{border-right:0;border-bottom:1px solid var(--rule);min-height:0;aspect-ratio:16/9}
}
.case .frame img{max-width:100%;max-height:100%;width:auto;height:auto;
  object-fit:contain;display:block;
  border-radius:8px;
  box-shadow:0 12px 30px -16px color-mix(in oklch, var(--ink) 40%, transparent)}
.case .body{padding:36px;display:flex;flex-direction:column;gap:14px;justify-content:center}
@media (max-width:880px){ .case .body{padding:28px 26px 30px} }
.case .row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  font-family:var(--font-mono);font-size:11px;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.06em}
.case h3{margin:2px 0 0;font-family:var(--font-display);font-weight:400;
  font-size:34px;line-height:1.05;letter-spacing:-.015em;
  display:flex;align-items:baseline;gap:10px}
.case h3 .arr{color:var(--accent-ink);font-style:italic;
  transition:transform .25s ease;font-size:26px}
.case:hover h3 .arr{transform:translate(4px,-2px)}
.case p.desc{margin:0;color:var(--ink-2);font-size:15.5px;line-height:1.55}
.case .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.case .tag{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.05em;padding:5px 9px;border-radius:999px;color:var(--ink-2);
  background:color-mix(in oklch, var(--accent) 18%, transparent)}
.case .status{display:inline-flex;align-items:center;gap:6px}
.case .status .dot{width:6px;height:6px;border-radius:50%;background:var(--accent-ink)}
.case .status.shipped .dot{background:oklch(0.72 0.14 145)}
.case .status.live .dot{background:oklch(0.72 0.14 145);
  box-shadow:0 0 0 3px color-mix(in oklch, oklch(0.72 0.14 145) 25%, transparent)}

/* ── Testimonials ───────────────────────────────────── */
.philosophy{padding:120px 0;background:var(--bg-2);
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.quotes{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:0;
  border-top:1px solid var(--rule);border-left:1px solid var(--rule)}
.q{padding:30px 28px 32px;border-bottom:1px solid var(--rule);
  border-right:1px solid var(--rule);min-height:240px;display:flex;flex-direction:column;
  justify-content:space-between;gap:18px;background:var(--paper)}
.q .qt{font-family:var(--font-display);font-style:italic;font-size:21px;
  line-height:1.3;color:var(--ink);letter-spacing:-.005em}
.q .qt::before{content:"\201C";display:block;font-size:42px;line-height:.4;
  color:var(--accent-ink);margin-bottom:18px;opacity:.7}
.q .who{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-3);display:flex;align-items:center;gap:12px}
.q .who .av{width:32px;height:32px;border-radius:50%;
  background:color-mix(in oklch, var(--accent) 60%, var(--bg-2));
  display:grid;place-items:center;color:var(--accent-ink);
  font-family:var(--font-display);font-style:italic;font-size:16px;
  text-transform:none;letter-spacing:0;flex:0 0 auto}
.q .who .meta b{font-family:var(--font-sans);font-weight:500;color:var(--ink);
  text-transform:none;letter-spacing:0;font-size:13.5px;display:block;margin-bottom:2px}

/* ── Approach (process) ─────────────────────────────── */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media (max-width:880px){ .steps{grid-template-columns:repeat(2,1fr)} }
@media (max-width:520px){ .steps{grid-template-columns:1fr} }
.step{position:relative;padding-top:28px;border-top:1px solid var(--ink)}
.step .n{font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}
.step h4{margin:8px 0 10px;font-family:var(--font-display);font-weight:400;
  font-size:30px;letter-spacing:-.012em;line-height:1.05}
.step p{margin:0;font-size:14.5px;color:var(--ink-2);line-height:1.55}

/* ── Contact / Footer ───────────────────────────────── */
footer.foot{padding:120px 0 40px;background:var(--ink);color:var(--bg);
  position:relative;overflow:hidden}
footer.foot .grid{display:grid;grid-template-columns:1.4fr 1fr;gap:48px}
@media (max-width:780px){ footer.foot .grid{grid-template-columns:1fr;gap:36px} }
footer.foot h2{margin:0 0 32px;font-family:var(--font-display);font-weight:400;
  font-size:clamp(48px,7vw,96px);line-height:.96;letter-spacing:-.022em;color:var(--bg)}
footer.foot h2 em{color:var(--accent);font-style:italic}
footer.foot .col h5{margin:0 0 14px;font-family:var(--font-mono);
  font-size:11px;text-transform:uppercase;letter-spacing:.08em;
  color:color-mix(in oklch, var(--bg) 60%, var(--ink))}
footer.foot .col p, footer.foot .col a{font-size:15px;
  color:color-mix(in oklch, var(--bg) 88%, transparent);line-height:1.6;margin:0}
footer.foot .col a{display:block;padding:3px 0;transition:color .2s ease}
footer.foot .col a:hover{color:var(--accent)}
footer.foot .col a.email{font-size:20px;font-family:var(--font-display);
  font-style:italic;color:var(--accent)}
footer.foot .col a.phone{font-family:var(--font-mono);font-size:13px;margin-top:6px}
footer.foot .end{display:flex;justify-content:space-between;align-items:end;
  margin-top:80px;padding-top:24px;
  border-top:1px solid color-mix(in oklch, var(--bg) 14%, transparent);
  font-size:12.5px;font-family:var(--font-mono);
  color:color-mix(in oklch, var(--bg) 55%, transparent);
  text-transform:uppercase;letter-spacing:.06em;gap:18px;flex-wrap:wrap}

.big-mark{position:absolute;right:-80px;bottom:-160px;width:440px;height:440px;
  border-radius:50%;background:var(--accent);opacity:.16;
  filter:blur(2px);pointer-events:none}

/* ── Reduced motion ─────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  .marquee .track{animation:none}
  .eyebrow .pulse{animation:none}
  .btn, .nav-cta, .case, .svc h3 .arr, .case h3 .arr, .nav-cta .arr{transition:none}
  .btn:hover, .nav-cta:hover, .case:hover{transform:none}
  .svc:hover h3 .arr, .case:hover h3 .arr{transform:none}
}
