/*
  Shared stylesheet for the whole portfolio (homepage + project pages).
  Search "REPLACE:" in the HTML files for content to swap in — this file
  mostly just needs --accent changed if you want a different palette.
*/
@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@600;700&family=Fredoka:wght@600;700&display=swap');
:root{
  --bg:#ffffff;
  --bg-soft:#f4f3f0;
  --text:#111113;
  --text-dim:#6b6b70;
  --accent:#ff5fa8;
  --line:#e6e5e1;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Helvetica Neue',Arial,sans-serif;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none;}

/* ---------- nav ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;justify-content:space-between;align-items:center;
  padding:24px 6vw;
  background:rgba(255,255,255,0.75);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.logo{font-weight:700;letter-spacing:-0.02em;font-size:18px;}
.nav-links{display:flex;gap:32px;font-size:14px;text-transform:uppercase;letter-spacing:0.08em;}
.nav-links a{opacity:0.8;transition:opacity 0.25s ease;}
.nav-links a:hover{opacity:1;}

@media (max-width:600px){
  nav{padding:18px 5vw;}
  .logo{font-size:15px;}
  .nav-links{gap:13px;font-size:10.5px;letter-spacing:0.03em;}
}

/* ---------- hero (chic typographic intro line + floating photo stickers) ---------- */
.hero{
  position:relative;
  overflow:hidden;
  background:#fff;
  padding:118px 6vw 16px;
}
.hero-inner{
  position:relative;
  max-width:900px;
  margin:0 auto;
  text-align:center;
}
.hero-line{
  opacity:0;animation:fadeUp 0.8s ease forwards;
  font-family:'Fredoka',sans-serif;
  font-size:clamp(26px,4.6vw,48px);
  font-weight:600;
  letter-spacing:-0.01em;
  line-height:1.22;
  color:var(--text);
}
.hero-mark{
  position:relative;
  display:inline;
  font-family:'Caveat',cursive;
  font-weight:700;
  font-size:1.3em;
  color:var(--accent);
}

/* stickers floating loosely around the headline — small badges pulled from the Lab page.
   Mix of two shapes for visual variety: circle and an organic "blob" cutout. */
.sticker{
  position:absolute;
  z-index:3;
  width:46px;height:46px;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,0.25));
  animation:floatSticker 4s ease-in-out infinite, fadeUp 0.7s ease forwards;
  opacity:0;
}
.sticker img{
  width:100%;height:100%;object-fit:cover;display:block;background:#fff;
  border:3px solid #fff;
}
.sticker-circle,.sticker-circle img{border-radius:50%;}
.sticker-blob,.sticker-blob img{border-radius:62% 38% 55% 45%/45% 55% 45% 55%;}

.sticker-1{top:2%;left:-7%;width:50px;height:50px;animation-delay:0.1s,0.1s;transform:rotate(-14deg);}
.sticker-2{top:-10%;left:26%;width:36px;height:36px;animation-delay:0.25s,0.25s;transform:rotate(10deg);}
.sticker-3{top:-6%;right:10%;width:42px;height:42px;animation-delay:0.4s,0.4s;transform:rotate(-8deg);}
.sticker-4{top:22%;left:-11%;width:40px;height:40px;animation-delay:0.55s,0.55s;transform:rotate(12deg);}
.sticker-5{top:30%;right:-9%;width:46px;height:46px;animation-delay:0.7s,0.7s;transform:rotate(-11deg);}
.sticker-6{bottom:-4%;left:8%;width:44px;height:44px;animation-delay:0.85s,0.85s;transform:rotate(9deg);}
.sticker-7{bottom:-14%;left:46%;width:34px;height:34px;animation-delay:1s,1s;transform:rotate(-15deg);}
.sticker-8{bottom:-6%;right:6%;width:48px;height:48px;animation-delay:1.15s,1.15s;transform:rotate(13deg);}
@keyframes floatSticker{0%,100%{translate:0 0;}50%{translate:0 -8px;}}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}

@media (max-width:600px){
  .hero{padding:96px 6vw 16px;}
  .sticker-1{top:-4%;left:-2%;width:32px;height:32px;transform:rotate(-14deg);}
  .sticker-2{top:-10%;left:20%;width:24px;height:24px;transform:rotate(10deg);}
  .sticker-3{top:-6%;right:4%;width:28px;height:28px;transform:rotate(-8deg);}
  .sticker-4{top:16%;left:-6%;width:26px;height:26px;transform:rotate(12deg);}
  .sticker-5{top:22%;right:-5%;width:30px;height:30px;transform:rotate(-11deg);}
  .sticker-6{bottom:-2%;left:2%;width:28px;height:28px;transform:rotate(9deg);}
  .sticker-7{display:none;}
  .sticker-8{bottom:-2%;right:0%;width:30px;height:30px;transform:rotate(13deg);}
}

/* ---------- section shell ---------- */
section{padding:140px 6vw;}
#work{padding-top:20px;}
.section-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  margin-bottom:64px;border-bottom:1px solid var(--line);padding-bottom:24px;
}
.section-head h2{font-size:clamp(28px,4vw,44px);font-weight:800;letter-spacing:-0.02em;}
.section-head span{font-size:13px;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.1em;}

.work-intro{max-width:640px;margin-bottom:56px;}
.work-intro p{font-size:clamp(18px,2.2vw,26px);font-weight:600;letter-spacing:-0.01em;line-height:1.4;}

/* ---------- work grid (mosaic layout) ---------- */
.grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  grid-template-rows:260px 220px 260px 220px 260px 260px;
  gap:14px;
}
.project{
  position:relative;overflow:hidden;border-radius:22px;
  background:var(--bg-soft);cursor:pointer;
  display:block;
}
/* mosaic placement: repeating rhythm of 2-across, 3-across, 2-across, 3-across... */
.project.p1{grid-column:1/7;grid-row:1/2;}
.project.p2{grid-column:7/13;grid-row:1/2;}
.project.p3{grid-column:1/5;grid-row:2/3;}
.project.p4{grid-column:5/9;grid-row:2/3;}
.project.p5{grid-column:9/13;grid-row:2/3;}
.project.p6{grid-column:1/7;grid-row:3/4;}
.project.p7{grid-column:7/13;grid-row:3/4;}
.project.p8{grid-column:1/5;grid-row:4/5;}
.project.p9{grid-column:5/9;grid-row:4/5;}
.project.p10{grid-column:9/13;grid-row:4/5;}
.project.p11{grid-column:1/7;grid-row:5/6;}
.project.p12{grid-column:7/13;grid-row:5/6;}
.project.p13{grid-column:1/7;grid-row:6/7;}

/* when a tag filter is active, drop the mosaic spans for a clean reflow (desktop only —
   mobile already stacks in a single column, so the mosaic spans don't apply there) */
@media (min-width:769px){
  .grid.is-filtered{grid-template-rows:none;}
  .grid.is-filtered .project{
    grid-column:span 4 !important;grid-row:auto !important;aspect-ratio:4/3;
  }
}
.grid .project.is-hidden{display:none;}

/* clickable tag filter row (reuses .skills pill styling) */
.tag-filter-btn{cursor:pointer;transition:background 0.2s ease,color 0.2s ease,border-color 0.2s ease;}
.tag-filter-btn:hover{border-color:var(--accent);color:var(--text);}
.tag-filter-btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff;}

.thumb{
  position:absolute;inset:0;
  background:linear-gradient(135deg,#1a1a1e,#2a2a30);
  transition:transform 0.6s cubic-bezier(.16,1,.3,1);
}
.thumb video,.thumb img{width:100%;height:100%;object-fit:cover;display:block;}

/* shows an image at its native resolution instead of stretched/cropped to fill —
   keeps small/low-res source images crisp rather than upscaled and blurry */
.thumb-native{display:flex;align-items:center;justify-content:center;}
.thumb-native img{width:auto !important;height:auto !important;max-width:100%;max-height:100%;object-fit:contain;}
@media (min-width:1300px){.p11-thumb-img{object-position:center 10%;}}
.p1 .thumb{background:linear-gradient(135deg,#ff4d2e,#7a1f10);}
.p2 .thumb{background:linear-gradient(135deg,#f4dcc8,#caa47f);}
.p3 .thumb{background:linear-gradient(135deg,#ff2ea0,#7a0d4a);}
.p4 .thumb{background:linear-gradient(135deg,#ff4d9e,#b3005c);}
.p5 .thumb{background:linear-gradient(135deg,#2e6bff,#0d1a4d);}
.p6 .thumb{background:linear-gradient(135deg,#ffb3d9,#ff6fae);}
.p7 .thumb{background:linear-gradient(135deg,#ff2e6b,#b3003f);}
.p8 .thumb{background:linear-gradient(135deg,#5cd9ff,#0d5f7a);}
.p9 .thumb{background:linear-gradient(135deg,#ff2ea0,#3d0d26);}
.p10 .thumb{background:linear-gradient(135deg,#ffce2e,#7a5a00);}
.p11 .thumb{background:linear-gradient(135deg,#9c6bff,#3d0d8a);}
.p12 .thumb{background:linear-gradient(135deg,#ff8dc0,#a8146b);}
.p13 .thumb{background:linear-gradient(135deg,#ffce2e,#b37b00);}
.p14 .thumb{background:linear-gradient(135deg,#2effe0,#0d7a66);}
.project:hover .thumb{transform:scale(1.06);}

.lock-overlay{
  position:absolute;inset:0;z-index:5;
  display:flex;align-items:center;justify-content:center;
  background:rgba(10,10,12,0.72);
  opacity:0;transition:opacity 0.25s ease;
  pointer-events:none;
}
.lock-overlay span{
  color:#fff;font-size:14px;font-weight:800;letter-spacing:0.04em;text-transform:uppercase;
  padding:10px 20px;border:1.5px solid rgba(255,255,255,0.6);border-radius:100px;
}
.project.is-locked:hover .lock-overlay,
.lock-overlay.show{opacity:1;}
.project.is-locked{cursor:default;}

.project-info{
  position:absolute;left:0;right:0;bottom:0;
  padding:20px;display:flex;justify-content:space-between;align-items:flex-end;gap:12px;
  background:linear-gradient(to top,rgba(0,0,0,0.65),transparent);
}
.project-info h3{font-size:clamp(15px,1.6vw,20px);font-weight:700;color:#fff;}
.project-info p{font-size:12px;color:rgba(255,255,255,0.75);margin-top:4px;}
.project-tag{
  font-size:10px;text-transform:uppercase;letter-spacing:0.1em;white-space:nowrap;
  border:1px solid rgba(255,255,255,0.4);border-radius:100px;padding:5px 12px;color:#fff;
}

/* ---------- personal / fun grid (simple 3-up row) ---------- */
.grid-personal{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.grid-personal .project{aspect-ratio:3/4;}
.f1 .thumb{background:linear-gradient(135deg,#ffce2e,#b37b00);}
.f2 .thumb{background:linear-gradient(135deg,#2effe0,#0d7a66);}
.f3 .thumb{background:linear-gradient(135deg,#9c6bff,#3d0d8a);}
.f4 .thumb{background:linear-gradient(135deg,#ff8a5c,#c23b1e);}
.f5 .thumb{background:linear-gradient(135deg,#5cd9ff,#0d5f7a);}
.f6 .thumb{background:linear-gradient(135deg,#ff8dc0,#a8146b);}
.f7 .thumb{background:linear-gradient(135deg,#a8e05f,#3d7a1e);}
.f8 .thumb{background:linear-gradient(135deg,#ff6b6b,#8a1f1f);}
.f9 .thumb{background:linear-gradient(135deg,#6b8aff,#1f2f8a);}

/* ---------- about ---------- */
.about{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
.about p{font-size:18px;line-height:1.7;color:var(--text-dim);margin-bottom:20px;}
.skills{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
.skills span{
  font-size:13px;border:1px solid var(--line);border-radius:100px;
  padding:8px 16px;color:var(--text-dim);
}

/* ---------- contact ---------- */
.contact{text-align:left;position:relative;overflow:hidden;}

.contact-doodle{
  position:absolute;width:180px;height:180px;color:var(--accent);opacity:0.07;z-index:0;
  animation:labDoodleFloat 6s ease-in-out infinite;
}
.contact-doodle-1{top:-20px;right:6vw;}
.contact-doodle-2{bottom:-10px;left:2vw;width:120px;height:120px;animation-delay:0.6s;}

.contact-badge{
  position:relative;z-index:1;
  display:inline-flex;align-items:center;gap:9px;
  padding:9px 18px;border-radius:100px;border:1px solid var(--line);
  font-size:13px;color:var(--text-dim);margin-bottom:32px;
}
.badge-dot{
  width:8px;height:8px;border-radius:50%;background:#3ddc71;
  box-shadow:0 0 0 0 rgba(61,220,113,0.45);
  animation:badgePulse 2s infinite;
}
@keyframes badgePulse{
  0%{box-shadow:0 0 0 0 rgba(61,220,113,0.45);}
  70%{box-shadow:0 0 0 8px rgba(61,220,113,0);}
  100%{box-shadow:0 0 0 0 rgba(61,220,113,0);}
}

.contact-scribble{
  position:relative;z-index:1;
  font-family:'Caveat',cursive;font-size:34px;font-weight:700;color:var(--accent);
  display:inline-block;transform:rotate(-3deg);margin:0 0 2px;
}

.contact h2{
  position:relative;z-index:1;
  font-size:clamp(36px,7vw,90px);font-weight:800;letter-spacing:-0.02em;line-height:1;
  margin-bottom:20px;
}
.contact-sub{
  position:relative;z-index:1;
  font-size:18px;line-height:1.6;color:var(--text-dim);max-width:480px;margin-bottom:48px;
}

.contact-links{position:relative;z-index:1;display:flex;gap:14px;flex-wrap:wrap;}
.contact-pill{
  display:inline-flex;align-items:center;gap:10px;
  padding:14px 24px;border-radius:100px;border:1.5px solid var(--line);
  font-size:14px;font-weight:600;color:var(--text);
  transition:transform 0.2s ease,box-shadow 0.2s ease,border-color 0.2s ease,color 0.2s ease;
}
.contact-pill-icon{font-size:16px;line-height:1;}
.contact-pill:hover{
  transform:translateY(-3px);
  border-color:var(--accent);color:var(--accent);
  box-shadow:0 10px 24px rgba(255,95,168,0.18);
}
.contact-pill-primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.contact-pill-primary:hover{color:#fff;box-shadow:0 10px 24px rgba(255,95,168,0.35);}
footer{
  padding:32px 6vw;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);
}

/* ---------- case-study (individual project) pages ---------- */
.back-link{
  position:relative;top:0;padding:120px 6vw 0;display:block;
  font-size:13px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-dim);
  transition:color 0.25s ease;
}
.back-link:hover{color:var(--accent);}
.case-hero{padding:24px 6vw 60px;}
.case-hero h1{
  font-size:clamp(36px,7vw,96px);font-weight:800;letter-spacing:-0.03em;line-height:0.95;
  max-width:900px;
}
.case-meta{
  display:flex;flex-wrap:wrap;gap:48px;margin-top:48px;
  border-top:1px solid var(--line);padding-top:24px;
}
.case-meta div{display:flex;flex-direction:column;gap:6px;}
.case-meta span:first-child{font-size:11px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-dim);}
.case-meta span:last-child{font-size:15px;font-weight:600;}
.case-link-btn{
  display:inline-block;margin-top:28px;
  padding:12px 24px;border-radius:100px;
  background:var(--accent);color:#fff;
  font-size:14px;font-weight:700;letter-spacing:-0.01em;
  transition:transform 0.2s ease,box-shadow 0.2s ease;
}
.case-link-btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(255,95,168,0.35);}

.resume-btn{
  display:inline-block;margin-top:8px;
  padding:12px 24px;border-radius:100px;
  background:var(--accent);color:#fff;
  font-size:14px;font-weight:700;letter-spacing:-0.01em;
  transition:transform 0.2s ease,box-shadow 0.2s ease;
}
.resume-btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(255,95,168,0.35);}

/* embedded Figma (or other iframe) presentation, sized like case-media */
.case-embed{
  margin:0 6vw 100px;aspect-ratio:16/9;border-radius:24px;overflow:hidden;
  border:1px solid var(--line);background:var(--bg-soft);
}
.case-embed iframe{width:100%;height:100%;border:0;display:block;}
.case-media{
  margin:0 6vw 24px;aspect-ratio:16/9;border-radius:24px;overflow:hidden;position:relative;
}

/* browser-chrome mockup for showcasing a live website — rounded frame, traffic-light
   dots, and a URL bar, wrapped around a full-page screenshot */
.browser-mockup{
  margin:0 6vw 24px;border-radius:18px;overflow:hidden;
  border:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,0.14);
  background:#fff;
}
.browser-mockup-bar{
  display:flex;align-items:center;gap:16px;
  padding:14px 18px;background:var(--bg-soft);border-bottom:1px solid var(--line);
}
.browser-mockup-dots{display:flex;gap:7px;flex:none;}
.browser-mockup-dots span{width:11px;height:11px;border-radius:50%;background:var(--line);}
.browser-mockup-dots span:nth-child(1){background:#ff5f57;}
.browser-mockup-dots span:nth-child(2){background:#febc2e;}
.browser-mockup-dots span:nth-child(3){background:#28c840;}
.browser-mockup-url{
  flex:1;text-align:center;font-size:12px;color:var(--text-dim);
  background:#fff;border:1px solid var(--line);border-radius:100px;padding:6px 14px;
  max-width:280px;margin:0 auto;
}
.browser-mockup img{width:100%;display:block;}
.case-media video,.case-media img,.thumb-still img,.thumb-still video{width:100%;height:100%;object-fit:cover;display:block;}

/* text + image feature row (e.g. a callout still with a caption beside it) */
.case-feature{
  display:flex;align-items:center;justify-content:flex-end;gap:32px;
  margin:0 6vw 100px;flex-wrap:wrap;
}
.case-feature-text{font-size:17px;color:var(--text-dim);max-width:320px;}
.case-feature-media{width:440px;max-width:100%;flex-shrink:0;aspect-ratio:1/1;}

@media (min-width:769px){
  .case-feature{justify-content:space-between;gap:48px;}
  .case-feature-text{font-size:32px;font-weight:700;color:var(--text);max-width:420px;letter-spacing:-0.01em;line-height:1.3;}
  .case-feature-media{width:640px;}
}
.sound-toggle{
  position:absolute;bottom:16px;right:16px;z-index:2;
  width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(0,0,0,0.55);color:#fff;font-size:16px;
  display:flex;align-items:center;justify-content:center;
  transition:background 0.2s ease,transform 0.2s ease;
}
.sound-toggle:hover{background:rgba(0,0,0,0.75);transform:scale(1.06);}
.case-gallery{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 6vw 100px;
}
.case-gallery .thumb-still{aspect-ratio:4/3;border-radius:18px;position:relative;overflow:hidden;}

/* compact 3-up variant for smaller supporting assets (brand marks, patterns) —
   keeps square/near-square source images from being force-cropped into 4:3 */
.case-gallery-compact{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 6vw 100px;
}
.case-gallery-compact .thumb-still{aspect-ratio:1/1;border-radius:18px;position:relative;overflow:hidden;}

/* 3-up variant sized for portrait photography (phone shots held upright) so tall
   images aren't cropped down into a landscape frame */
.case-gallery-portrait{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 6vw 100px;
}
.case-gallery-portrait .thumb-still{aspect-ratio:3/4;border-radius:18px;position:relative;overflow:hidden;}
@media (max-width:768px){
  .case-gallery-compact,.case-gallery-portrait{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:480px){
  .case-gallery-compact,.case-gallery-portrait{grid-template-columns:1fr;}
}

/* grid of same-size square clips (e.g. a set of short vertical/square social cuts) —
   each cell is sized to the clips' true resolution (1:1) rather than a generic case ratio */
.clip-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 6vw 100px;
}
.clip-cell{position:relative;aspect-ratio:1/1;border-radius:18px;overflow:hidden;background:var(--bg-soft);}
.clip-cell video,.clip-cell img{width:100%;height:100%;object-fit:cover;display:block;}
@media (max-width:768px){
  .clip-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:480px){
  .clip-grid{grid-template-columns:1fr;}
}

/* variant for a set of vertical/portrait social clips, each with a caption below it */
.clip-grid-portrait{grid-template-columns:repeat(3,1fr);align-items:start;}
.clip-cell-wrap{display:flex;flex-direction:column;gap:10px;}
.clip-cell-portrait{aspect-ratio:9/16;}
.clip-title{
  font-size:13px;font-weight:600;color:var(--text-dim);text-align:center;
}
@media (max-width:768px){
  .clip-grid-portrait{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:480px){
  .clip-grid-portrait{grid-template-columns:1fr;}
}
.case-body{padding:0 6vw 100px;max-width:760px;}
.case-body h2{font-size:24px;font-weight:800;margin-bottom:20px;letter-spacing:-0.01em;}
.case-body p{font-size:17px;line-height:1.75;color:var(--text-dim);margin-bottom:20px;}

/* full-width heading dropped above a media grid, to label a group of clips
   without being boxed into .case-body's narrower reading column */
.case-section-head{padding:0 6vw;margin:0 0 20px;font-size:20px;font-weight:800;letter-spacing:-0.01em;}
.case-section-text{padding:0 6vw;margin:0 0 24px;max-width:640px;font-size:16px;line-height:1.7;color:var(--text-dim);}

/* wide venue-screen aspect ratio (~2.08:1), for clip grids shot for LED walls/holding
   screens rather than the standard 16:9 case-media ratio */
.clip-cell-wide{aspect-ratio:3200/1536;}

/* process breakdown — numbered stages with a short note under each, for case studies
   that want to walk through how the work actually got made rather than just the result */
.process-list{padding:0 6vw 100px;max-width:760px;display:flex;flex-direction:column;gap:32px;}
.process-step{display:flex;gap:24px;}
.process-step .step-num{
  flex:none;font-size:13px;font-weight:800;color:var(--accent);
  padding-top:3px;letter-spacing:0.04em;
}
.process-step .step-body h3{font-size:17px;font-weight:700;margin-bottom:8px;letter-spacing:-0.01em;}
.process-step .step-body p{font-size:16px;line-height:1.7;color:var(--text-dim);margin:0;}
@media (max-width:480px){
  .process-step{gap:14px;}
}
.case-nav{
  display:flex;justify-content:space-between;align-items:center;
  padding:48px 6vw;border-top:1px solid var(--line);
}
.case-nav a{font-size:13px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-dim);transition:color 0.25s ease;}
.case-nav a:hover{color:var(--accent);}
.case-nav .next-title{display:block;font-size:20px;font-weight:700;color:var(--text);margin-top:6px;text-transform:none;letter-spacing:normal;}

@media (max-width:768px){
  .grid{grid-template-columns:1fr;grid-template-rows:none;gap:0;padding-top:20px;}
  .project{
    grid-column:auto !important;grid-row:auto !important;
    aspect-ratio:21/9;
    margin-top:-22px;
    border:1px solid var(--bg);
    box-shadow:0 -4px 14px rgba(0,0,0,0.12);
  }
  .project:first-child{margin-top:0;}
  /* keep each card's tap target above the one that overlaps it from below */
  .grid .project:nth-child(1){z-index:14;}
  .grid .project:nth-child(2){z-index:13;}
  .grid .project:nth-child(3){z-index:12;}
  .grid .project:nth-child(4){z-index:11;}
  .grid .project:nth-child(5){z-index:10;}
  .grid .project:nth-child(6){z-index:9;}
  .grid .project:nth-child(7){z-index:8;}
  .grid .project:nth-child(8){z-index:7;}
  .grid .project:nth-child(9){z-index:6;}
  .grid .project:nth-child(10){z-index:5;}
  .grid .project:nth-child(11){z-index:4;}
  .grid .project:nth-child(12){z-index:3;}
  .grid .project:nth-child(13){z-index:2;}
  .grid .project:nth-child(14){z-index:1;}
  .grid-personal{grid-template-columns:1fr;gap:0;padding-top:20px;}
  .grid-personal .project{aspect-ratio:21/9;}
  .grid-personal .project:nth-child(1){z-index:3;}
  .grid-personal .project:nth-child(2){z-index:2;}
  .grid-personal .project:nth-child(3){z-index:1;}
  .about{grid-template-columns:1fr;}
  .case-gallery{grid-template-columns:1fr;}
  .case-meta{gap:24px;}
  section{padding:90px 6vw;}
}

/* scroll reveal utility */
.reveal{opacity:0;transform:translateY(24px);transition:opacity 0.7s ease,transform 0.7s ease;}
.reveal.in{opacity:1;transform:translateY(0);}

/* ---------- lab (fun / personal scrapbook page) ---------- */
#lab{
  position:relative;
  overflow:hidden;
  background-color:#fdfbf7;
  background-image:
    linear-gradient(rgba(17,17,19,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(17,17,19,0.05) 1px, transparent 1px);
  background-size:44px 44px;
  padding:150px 6vw 140px;
}
.lab-doodle{
  position:absolute;width:220px;height:220px;color:var(--accent);opacity:0.08;z-index:0;
  animation:labDoodleFloat 6s ease-in-out infinite;
}
.lab-doodle-1{top:60px;right:4vw;}
.lab-doodle-2{bottom:80px;left:2vw;width:140px;height:140px;animation-delay:0.6s;}
.lab-doodle-3{top:46%;right:10vw;width:100px;height:100px;opacity:0.07;animation-delay:1.2s;}
.lab-doodle-4{
  top:22%;left:8vw;width:auto;height:auto;font-size:64px;line-height:1;color:var(--accent);opacity:0.12;
  font-family:'Caveat',cursive;animation-delay:0.3s;
}
.lab-doodle-5{
  bottom:20%;right:20vw;width:auto;height:auto;font-size:40px;line-height:1;color:#ff8dc0;opacity:0.16;
  animation-delay:0.9s;
}
@keyframes labDoodleFloat{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-14px) rotate(6deg);}}

.lab-heading{position:relative;z-index:1;text-align:center;max-width:560px;margin:0 auto 72px;}
.scribble-title{
  font-family:'Caveat',cursive;
  font-size:clamp(52px,8vw,84px);
  font-weight:700;color:var(--text);
  display:inline-block;transform:rotate(-3deg);
  position:relative;
}
.scribble-star{
  position:absolute;top:-6px;right:-34px;
  font-size:0.4em;color:var(--accent);
  transform:rotate(18deg);
}
.lab-heading p{margin-top:14px;font-size:16px;color:var(--text-dim);}

.scrapboard{
  position:relative;z-index:1;
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(220px,1fr));
  align-items:start;
  gap:52px 32px;
  max-width:1180px;
  margin:0 auto;
}

.scrap-card{
  position:relative;
  background:#fff;
  padding:14px 14px 44px;
  box-shadow:0 10px 24px rgba(0,0,0,0.12);
  transform:rotate(var(--r,0deg));
  transition:transform 0.35s cubic-bezier(.16,1,.3,1),box-shadow 0.35s ease;
}
.scrap-card:hover{transform:rotate(0deg) scale(1.06) translateY(-6px) !important;box-shadow:0 18px 34px rgba(0,0,0,0.18);z-index:5;}
/* gentle vertical scatter so cards don't line up in strict rows */
.scrapboard > *:nth-child(3n+2){margin-top:16px;}
.scrapboard > *:nth-child(3n+3){margin-top:-4px;}

/* full-width card, at any screen size */
.scrap-card.xl{grid-column:1/-1;}

/* mosaic sizing, like the homepage work grid — a couple of cards run bigger/smaller */
@media (min-width:640px){
  .scrap-card.lg{grid-column:span 2;}
  .scrap-card.sm{max-width:78%;}
}

/* media variant: plain full-bleed image/video placeholder, pinned like a board clipping
   (no white photo-print border — the pin is what says "this is on the board", not a frame) */
.scrap-card.media{background:transparent;padding:0;box-shadow:none;}
.scrap-card.media .thumb{
  position:relative;inset:auto;aspect-ratio:1/1;border-radius:14px;overflow:hidden;
  background:linear-gradient(135deg,#1a1a1e,#2a2a30);
  box-shadow:0 10px 22px rgba(0,0,0,0.18);
}
.scrap-card.media .caption{
  position:absolute;left:0;right:0;bottom:0;margin:0;
  padding:20px 14px 14px;
  background:linear-gradient(to top, rgba(0,0,0,0.72), transparent);
  border-radius:0 0 14px 14px;
}
.scrap-card .caption{
  font-family:'Caveat',cursive;font-size:24px;font-weight:700;
  text-align:center;color:var(--text);margin-top:12px;
}
.scrap-card.media .caption{color:#fff;}
@media (min-width:640px){
  .scrap-card.media.lg .thumb{aspect-ratio:21/9;}
}
.media-play{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;
  background:rgba(0,0,0,0.45);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;padding-left:3px;
  border:2px solid rgba(255,255,255,0.8);
}

/* scattered sticker badges floating around the board */
.board-sticker{
  position:absolute;z-index:2;
  width:52px;height:52px;border-radius:50%;
  background:#fff;border:2px solid #111;
  display:flex;align-items:center;justify-content:center;
  font-size:24px;line-height:1;
  box-shadow:0 8px 16px rgba(0,0,0,0.16);
  animation:floatSticker 5s ease-in-out infinite;
}
.board-sticker-1{top:100px;left:2vw;transform:rotate(-10deg);animation-delay:0.1s;}
.board-sticker-2{top:60px;right:6vw;transform:rotate(8deg);animation-delay:0.6s;}
.board-sticker-3{top:46%;left:1vw;transform:rotate(6deg);animation-delay:1.1s;}
.board-sticker-4{top:38%;right:2vw;transform:rotate(-8deg);animation-delay:0.3s;}
.board-sticker-5{bottom:120px;left:6vw;transform:rotate(10deg);animation-delay:0.9s;}

/* sticky-note variant */
.scrap-card.sticky{
  padding:22px 22px;aspect-ratio:3/2;display:flex;align-items:center;
  clip-path:polygon(0 0,100% 0,100% 88%,88% 100%,0 100%);
}
.scrap-card.sticky.pink{background:#ffd6ea;}
.scrap-card.sticky.yellow{background:#ffe98a;}
.sticky-text{font-family:'Caveat',cursive;font-size:22px;font-weight:600;line-height:1.2;color:#5c3d00;}
.scrap-card.sticky.pink .sticky-text{color:#7a1f4d;}

/* torn-paper variant */
.scrap-card.torn{
  padding:30px 24px;aspect-ratio:1/1;display:flex;flex-direction:column;justify-content:center;
  clip-path:polygon(0% 2%,6% 0%,14% 3%,22% 0%,30% 2%,38% 0%,46% 3%,54% 0%,62% 2%,70% 0%,78% 3%,86% 0%,94% 2%,100% 0%,100% 100%,0% 100%);
}
.scrap-card.torn.cream{background:#fff2df;}
.scrap-card.torn.blue{background:#e3ecff;}
.torn-title{font-family:'Caveat',cursive;font-size:30px;font-weight:700;color:var(--text);}
.torn-sub{margin-top:8px;font-size:14px;color:var(--text-dim);}

/* postage-stamp variant */
.scrap-card.stamp{
  padding:24px 18px;aspect-ratio:1/1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:#fff;border:3px dashed var(--line);
}
.stamp-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:0.15em;color:var(--text-dim);}
.stamp-title{font-family:'Caveat',cursive;font-size:40px;font-weight:700;color:var(--accent);line-height:1;margin-top:2px;}
.stamp-sub{margin-top:6px;font-size:13px;color:var(--text-dim);}

@media (max-width:640px){
  #lab{padding:120px 6vw 90px;}
  .scrapboard{grid-template-columns:repeat(auto-fill, minmax(150px,1fr));gap:40px 18px;}
  .lab-doodle{width:120px;height:120px;}
  .board-sticker{width:38px;height:38px;font-size:18px;}
  .board-sticker-3,.board-sticker-4{display:none;}
}

/* ---------- about (stamp / collage intro) ---------- */
#about-hero{
  padding:170px 6vw 70px;
  position:relative;
  background:#fff;
  text-align:center;
}
#about-hero::before{
  content:'';position:absolute;top:8%;left:50%;
  width:640px;height:640px;transform:translateX(-50%);
  background:radial-gradient(circle, rgba(255,95,168,0.14) 0%, transparent 68%);
  z-index:0;pointer-events:none;
}
#about{padding-top:70px;}

.about-collage{position:relative;z-index:1;max-width:820px;margin:0 auto;}
.about-row{
  display:flex;align-items:flex-start;justify-content:center;
  gap:36px;flex-wrap:wrap;
}

/* torn-paper note listing name + roles */
.about-note{
  background:#fdf8ec;
  padding:32px 30px 36px;
  width:270px;text-align:left;
  box-shadow:0 18px 36px rgba(0,0,0,0.14);
  transform:rotate(var(--r,0deg));
  clip-path:polygon(0% 2%,6% 0%,14% 3%,22% 0%,30% 2%,38% 0%,46% 3%,54% 0%,62% 2%,70% 0%,78% 3%,86% 0%,94% 2%,100% 0%,100% 100%,0% 100%);
}
.note-greeting{
  font-family:'Caveat',cursive;font-size:32px;font-weight:700;
  color:var(--text);margin-bottom:16px;
}
.note-roles{list-style:none;}
.note-roles li{
  font-size:15px;font-weight:700;letter-spacing:0.02em;text-transform:uppercase;
  color:var(--text-dim);padding:8px 0;border-bottom:1px dashed var(--line);
}
.note-roles li:last-child{border-bottom:none;}

/* little postage-stamp badge */
.about-stamp{
  width:88px;height:88px;flex:none;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent);border:3px dashed rgba(255,255,255,0.7);border-radius:14px;
  box-shadow:0 14px 26px rgba(255,95,168,0.3);
  transform:rotate(var(--r,0deg));
  margin-top:26px;
}
.about-stamp span{
  font-family:'Caveat',cursive;font-size:32px;font-weight:700;color:#fff;
}

/* photo, paperclipped like a snapshot */
.about-photo-card{
  position:relative;
  width:230px;background:#fff;padding:10px;border-radius:6px;
  box-shadow:0 20px 40px rgba(0,0,0,0.2);
  transform:rotate(var(--r,0deg));
}
.about-photo-card img{
  width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center 22%;
  display:block;border-radius:3px;
}
.paperclip{
  position:absolute;top:-30px;left:24px;width:32px;height:58px;
  transform:rotate(-8deg);
  filter:drop-shadow(0 3px 4px rgba(0,0,0,0.25));
}

@media (max-width:640px){
  #about-hero{padding:130px 6vw 40px;}
  .about-row{gap:20px;}
  .about-note{width:200px;padding:22px 20px 26px;}
  .about-stamp{width:64px;height:64px;}
  .about-photo-card{width:170px;}
}

.timeline{position:relative;max-width:680px;margin:0 auto 70px;padding-left:32px;}
.timeline::before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line);}
.timeline-item{position:relative;padding-bottom:36px;}
.timeline-item:last-child{padding-bottom:0;}
.timeline-dot{
  position:absolute;left:-32px;top:4px;width:12px;height:12px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 4px #ffe3f0;
}
.timeline-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;margin-bottom:6px;}
.timeline-role{font-size:17px;font-weight:800;color:var(--text);}
.timeline-company{font-size:14px;color:var(--accent);font-weight:600;margin-left:8px;}
.timeline-dates{
  font-size:12px;color:var(--text-dim);white-space:nowrap;
  background:var(--bg-soft);padding:4px 12px;border-radius:100px;
}
.timeline-item p{font-size:15px;line-height:1.65;color:var(--text-dim);}

.pin-row-outline .pin{background:transparent;border:1.5px solid var(--accent);color:var(--accent);}
.pin-row-outline .pin:hover{background:var(--accent);color:#fff;}

@media (max-width:640px){
  .timeline{padding-left:26px;}
  .timeline-dot{left:-26px;}
}

.about-editorial{max-width:640px;margin:0 auto 70px;text-align:center;}
.about-editorial .lede{font-size:clamp(22px,3vw,32px);font-weight:700;line-height:1.4;color:var(--text);margin-bottom:20px;}
.about-editorial .lede span{color:var(--accent);}
.about-editorial p{font-size:17px;line-height:1.75;color:var(--text-dim);margin-bottom:16px;}

.quick-facts{
  max-width:720px;margin:0 auto 70px;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:16px;text-align:center;
}
.fact{display:flex;flex-direction:column;gap:6px;padding:18px 12px;border:1px solid var(--line);border-radius:16px;}
.fact-label{font-size:11px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-dim);}
.fact-value{font-size:15px;font-weight:700;color:var(--text);}

.pin-row-wrap{max-width:720px;margin:0 auto;text-align:center;}
.pin-row-label{font-size:12px;text-transform:uppercase;letter-spacing:0.12em;color:var(--text-dim);margin-bottom:16px;}
.pin-row{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;}
.pin{
  display:inline-block;
  padding:10px 18px;border-radius:100px;
  background:var(--bg-soft);border:1px solid var(--line);
  font-size:13px;font-weight:600;color:var(--text);
  transition:transform 0.25s ease,background 0.25s ease,color 0.25s ease,border-color 0.25s ease;
}
.pin:hover{transform:translateY(-4px) rotate(-3deg);background:var(--accent);color:#fff;border-color:var(--accent);}

@media (max-width:640px){
  #about{padding-top:50px;}
  .quick-facts{grid-template-columns:repeat(2,1fr);}
}
