/* ============================================
   Seek Phoenix — build log
   Ink #14181F · Paper #F6F5F1 · Pine #3A6B5C
   Ochre #B08B3D · Bridge Orange #C1592B (footer only)
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&family=Cormorant+Garamond:ital@1&display=swap');

:root{
  --ink:#14181F;
  --paper:#F6F5F1;
  --paper-dim:#ECEAE3;
  --pine:#3A6B5C;
  --ochre:#B08B3D;
  --slate:#6B7280;
  --line:#D8D5CC;
  --bridge-orange:#C1592B;
  --radius:2px;
  --content-max:1120px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter', sans-serif;
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3{ font-family:'Space Grotesk', sans-serif; margin:0; letter-spacing:-0.01em; }
.mono{ font-family:'IBM Plex Mono', monospace; letter-spacing:0.02em; }
a{ color:inherit; }
img{ max-width:100%; display:block; }

.wrap{
  max-width:var(--content-max);
  margin:0 auto;
  padding:0 clamp(20px, 4vw, 48px);
}

.skip-link{ position:absolute; left:-9999px; top:0; background:var(--ink); color:var(--paper); padding:10px 16px; z-index:200; }
.skip-link:focus{ left:16px; top:16px; }

/* ============================================
   Header / nav
   ============================================ */
header{
  padding:22px 0;
  border-bottom:1px solid var(--line);
  position:sticky;
  top:0;
  background:rgba(246,245,241,0.92);
  backdrop-filter:blur(8px);
  z-index:100;
}
.header-row{ display:flex; align-items:center; justify-content:space-between; }
.brand{ font-family:'Space Grotesk', sans-serif; font-weight:700; font-size:18px; text-decoration:none; display:flex; align-items:center; gap:9px; }
.brand-mark{ width:22px; height:22px; display:inline-block; transition:transform 0.4s ease; }
.brand:hover .brand-mark{ transform:rotate(15deg); }

nav.site-nav{ display:flex; align-items:center; }
nav.site-nav a{
  position:relative;
  text-decoration:none; font-size:14px; color:var(--slate);
  margin-left:30px; padding-bottom:4px;
}
nav.site-nav a::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:2px;
  background:var(--pine); transform:scaleX(0); transform-origin:right;
  transition:transform 0.3s cubic-bezier(.65,.05,.36,1);
}
nav.site-nav a:hover{ color:var(--ink); }
nav.site-nav a:hover::after{ transform:scaleX(1); transform-origin:left; }
nav.site-nav a[aria-current="page"]{ color:var(--ink); }
nav.site-nav a[aria-current="page"]::after{ transform:scaleX(1); }

/* Hamburger button — hidden on desktop by default (belt-and-suspenders:
   also force-hidden via JS on load, in case of stale cached CSS) */
.hamburger{
  display:none;
  -webkit-appearance:none;
  appearance:none;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:5px;
  width:38px; height:38px;
  background:var(--paper);
  border:1px solid var(--line); border-radius:var(--radius);
  cursor:pointer;
  padding:0;
  margin:0;
  box-shadow:none;
  outline:none;
}
.hamburger span{
  display:block; height:2px; width:18px; margin:0 auto;
  background:var(--ink);
  transition:transform 0.3s ease, opacity 0.3s ease;
}
.hamburger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hamburger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.hamburger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

.nav-overlay{
  position:fixed; inset:0; background:rgba(20,24,31,0.55);
  opacity:0; pointer-events:none; transition:opacity 0.3s ease; z-index:150;
}
.nav-overlay.open{ opacity:1; pointer-events:auto; }

/* ============================================
   Full-bleed generative hero backgrounds
   (original CSS/SVG art — no stock imagery)
   ============================================ */
.hero-bg{
  position:relative;
  overflow:hidden;
  border-bottom:1px solid var(--line);
}
.hero-bg::before, .hero-bg::after{
  content:''; position:absolute; border-radius:50%; filter:blur(60px);
  opacity:0.22; z-index:0; animation:drift 18s ease-in-out infinite alternate;
}
.hero-bg::before{ width:280px; height:280px; background:var(--pine); top:-110px; right:-60px; }
.hero-bg::after{ width:220px; height:220px; background:var(--ochre); bottom:-100px; left:-60px; animation-delay:-6s; }
.hero-bg .wrap{ position:relative; z-index:2; }

.mesh{ position:absolute; inset:0; z-index:1; opacity:0.4; pointer-events:none; }

@keyframes drift{
  0%{ transform:translate(0,0) scale(1); }
  100%{ transform:translate(30px,-20px) scale(1.08); }
}

/* ============================================
   Hero copy (page-load entrance, not scroll-based)
   ============================================ */
.load-in{ animation:fadeInUp 0.8s cubic-bezier(.2,.8,.2,1) both; }
.load-in.d1{ animation-delay:0.05s; }
.load-in.d2{ animation-delay:0.18s; }
.load-in.d3{ animation-delay:0.3s; }
@keyframes fadeInUp{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}

.eyebrow{ font-size:13px; color:var(--pine); text-transform:uppercase; letter-spacing:0.04em; display:block; margin-bottom:16px; }

/* ============================================
   Hub hero
   ============================================ */
.hub-hero{ padding:64px 0 48px; }
.hub-hero h1{ font-size:clamp(28px,4vw,42px); line-height:1.15; max-width:17ch; font-weight:600; }
.hub-hero p{ max-width:56ch; color:#3a3f47; font-size:16px; margin-top:16px; }

/* Contained divider mark — replaces the old full-bleed stretched chevron,
   which distorted on very wide screens. Bounded width, sits within .wrap. */
.divider{ display:flex; align-items:center; gap:16px; padding:0 0 8px; }
.divider svg{ flex-shrink:0; width:64px; height:22px; }
.divider .rule{ flex:1; height:1px; background:var(--line); }

/* ============================================
   Card grid + tilt interaction
   ============================================ */
.card-grid{ padding:56px 0 84px; display:grid; gap:22px; }
.proj-card{
  position:relative; overflow:hidden;
  border:1px solid var(--line); background:var(--paper-dim);
  text-decoration:none; color:var(--ink);
  display:block;
  transform-style:preserve-3d;
  transition:border-color 0.2s ease, box-shadow 0.35s ease, transform 0.25s ease;
  will-change:transform;
}
.proj-card:hover{ border-color:var(--pine); box-shadow:0 18px 40px -20px rgba(20,24,31,0.35); }
.proj-card:focus-visible{ outline:2px solid var(--pine); outline-offset:2px; }
.proj-card-inner{ padding:34px; position:relative; z-index:1; }
.proj-card h2{ font-size:24px; margin-bottom:6px; }
.proj-card .role{ font-size:14px; color:var(--slate); margin-bottom:14px; }
.proj-card p.blurb{ margin:0 0 18px; color:#2c2f35; max-width:56ch; }

.tag{ display:inline-block; font-size:11px; padding:3px 8px; border:1px solid currentColor; border-radius:var(--radius); text-transform:uppercase; letter-spacing:0.05em; }
.tag-live{ color:var(--pine); }
.tag-dev{ color:var(--ochre); }
.card-arrow{ font-size:13px; color:var(--pine); font-family:'IBM Plex Mono',monospace; display:inline-block; transition:transform 0.25s ease; }
.proj-card:hover .card-arrow{ transform:translateX(6px); }

.card-corner{ position:absolute; top:0; right:0; width:130px; height:130px; pointer-events:none; transition:transform 0.4s ease; }
.proj-card:hover .card-corner{ transform:scale(1.12) rotate(4deg); }

/* ============================================
   Project detail hero
   ============================================ */
.detail-hero{ padding:52px 0 40px; }
.detail-hero h1{ font-size:clamp(26px,3.6vw,38px); font-weight:600; margin-bottom:8px; }
.detail-hero .role{ font-size:15px; color:var(--slate); max-width:58ch; }
.back-link{ font-size:13px; color:var(--slate); text-decoration:none; display:inline-block; margin-bottom:20px; transition:color 0.2s ease; }
.back-link:hover{ color:var(--ink); }

/* ============================================
   Section rhythm + scroll reveal
   ============================================ */
.section-pad{ padding:52px 0; border-bottom:1px solid var(--line); }

.reveal{ opacity:0; transform:translateY(22px) scale(0.99); transition:opacity 0.6s cubic-bezier(.2,.7,.2,1), transform 0.6s cubic-bezier(.2,.7,.2,1); }
.reveal.in{ opacity:1; transform:translateY(0) scale(1); }
.reveal.d1{ transition-delay:0.05s; }
.reveal.d2{ transition-delay:0.15s; }
.reveal.d3{ transition-delay:0.25s; }

/* ============================================
   Steps ("how it works")
   ============================================ */
.steps{ display:grid; gap:0; }
.step{ display:grid; grid-template-columns:64px 1fr; gap:20px; padding:26px 0; border-bottom:1px solid var(--line); transition:padding-left 0.3s ease; }
.step:last-child{ border-bottom:none; }
.step:hover{ padding-left:8px; }
.step-num{ font-family:'IBM Plex Mono',monospace; font-size:14px; color:var(--ochre); padding-top:2px; }
.step h3{ font-size:17px; margin-bottom:6px; }
.step p{ margin:0; color:#3a3f47; max-width:60ch; }

/* ============================================
   Diagram / visual frame
   ============================================ */
.visual-frame{ border:1px solid var(--line); background:var(--paper-dim); border-radius:var(--radius); padding:22px; margin:8px 0; transition:box-shadow 0.3s ease; }
.visual-frame:hover{ box-shadow:0 12px 30px -18px rgba(20,24,31,0.3); }
.visual-frame svg{ width:100%; height:auto; display:block; }
.visual-caption{ font-size:12px; color:var(--slate); margin-top:10px; }

/* ============================================
   Video embed
   ============================================ */
.video-frame{
  position:relative; width:100%; padding-top:56.25%;
  border:1px solid var(--line); background:var(--paper-dim); border-radius:var(--radius); overflow:hidden;
}
.video-frame iframe{ position:absolute; top:0; left:0; width:100%; height:100%; border:0; }

/* ============================================
   Screenshot placeholder / generative fallback art
   ============================================ */
.shot-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.shot-placeholder{
  position:relative; overflow:hidden;
  border:1px dashed var(--slate); background:var(--paper-dim); border-radius:var(--radius);
  padding:40px 20px; text-align:center; color:var(--slate);
  font-family:'IBM Plex Mono',monospace; font-size:13px; min-height:160px;
  display:flex; align-items:center; justify-content:center;
}
@media (max-width:640px){ .shot-grid{ grid-template-columns:1fr; } }

/* ============================================
   Stack chips
   ============================================ */
.stack-row{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
  font-size:12px; padding:5px 11px; background:var(--ink); color:var(--paper); border-radius:var(--radius);
  transition:transform 0.2s ease, background 0.2s ease;
}
.chip:hover{ transform:translateY(-2px); background:var(--pine); }

.note{ font-size:13px; color:var(--slate); border-left:2px solid var(--ochre); padding-left:12px; margin-top:16px; max-width:65ch; }

/* ============================================
   Footer bridge to achintbhatnagar.com
   ============================================ */
footer{ padding:0; background:var(--ink); color:var(--paper); }
.bridge{ padding:48px 0; display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.bridge-name{ font-family:'Cormorant Garamond', serif; font-style:italic; font-size:24px; color:var(--bridge-orange); }
.bridge-caption{ font-size:12px; color:#9AA0A9; font-family:'IBM Plex Mono',monospace; margin-top:4px; }
.bridge-btn{
  border:1px solid var(--bridge-orange); color:var(--bridge-orange);
  padding:10px 18px; font-size:13px; text-transform:uppercase; letter-spacing:0.05em;
  border-radius:var(--radius); text-decoration:none; font-family:'IBM Plex Mono',monospace;
  transition:background 0.2s ease, color 0.2s ease, transform 0.2s ease;
  display:inline-block;
}
.bridge-btn:hover{ background:var(--bridge-orange); color:var(--ink); transform:translateY(-2px); }

/* ============================================
   Responsive breakpoints
   Wide desktop → laptop → tablet → mobile
   ============================================ */

/* Ultra-wide: let the content breathe a bit more */
@media (min-width:1601px){
  :root{ --content-max:1240px; }
}

/* Laptop */
@media (max-width:1280px){
  :root{ --content-max:1000px; }
}

/* Tablet / hamburger breakpoint */
@media (max-width:880px){
  .hamburger{ display:flex; }
  nav.site-nav{
    position:fixed; top:0; right:0; height:100vh; width:min(78vw, 320px);
    background:var(--ink); color:var(--paper);
    flex-direction:column; align-items:flex-start;
    padding:90px 32px 32px;
    transform:translateX(100%);
    transition:transform 0.4s cubic-bezier(.65,.05,.36,1);
    z-index:160;
  }
  nav.site-nav.open{ transform:translateX(0); }
  nav.site-nav a{ margin-left:0; margin-bottom:26px; font-size:16px; color:#C7CBD1; }
  nav.site-nav a::after{ background:var(--bridge-orange); }
  nav.site-nav a[aria-current="page"]{ color:var(--paper); }
  :root{ --content-max:100%; }
  .card-grid{ padding:48px 0 64px; }
}

/* Tablet layout tweaks */
@media (max-width:700px){
  .step{ grid-template-columns:1fr; gap:6px; }
  .bridge{ flex-direction:column; align-items:flex-start; }
  .hero-bg::before{ width:180px; height:180px; }
  .hero-bg::after{ width:150px; height:150px; }
}

/* Mobile */
@media (max-width:480px){
  body{ font-size:16px; }
  .hub-hero, .detail-hero{ padding-top:64px; padding-bottom:40px; }
  .section-pad{ padding:44px 0; }
  .proj-card-inner{ padding:24px; }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .reveal{ opacity:1; transform:none; transition:none; }
  .load-in{ animation:none; }
  .hero-bg::before, .hero-bg::after{ animation:none; }
}
