:root {
  --deep-ink: #171412;
  --soft-charcoal: #3B3632;
  --rain-gray: #77716A;
  --hanji-paper: #F4EFE6;
  --tea-steam: #D8D0C4;
  --wet-graphite: #0E0D0C;
  --font-main: "Commissioner", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-literary: "Gowun Batang", Georgia, serif;
  --font-hand: "Nanum Pen Script", "Bradley Hand", cursive;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  min-height: 100vh;
  background: var(--hanji-paper);
  color: var(--deep-ink);
  font-family: var(--font-main);
  overflow-x: hidden;
}

.paper-grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 20;
  opacity: .42;
  background-image:
    radial-gradient(circle at 12% 18%, rgba(23,20,18,.08) 0 1px, transparent 1.5px),
    radial-gradient(circle at 73% 42%, rgba(119,113,106,.13) 0 1px, transparent 1.8px),
    linear-gradient(95deg, rgba(59,54,50,.035), transparent 22%, rgba(216,208,196,.22) 42%, transparent 66%);
  background-size: 38px 38px, 57px 57px, 180px 100%;
  mix-blend-mode: multiply;
}

.watercolor-field {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(216,208,196,.42), transparent 22%, transparent 78%, rgba(216,208,196,.48)),
    radial-gradient(circle at 50% 0%, rgba(216,208,196,.35), transparent 45%);
}

.bloom {
  position: absolute;
  border-radius: 45% 55% 50% 42%;
  background: radial-gradient(circle, rgba(119,113,106,.34), rgba(216,208,196,.16) 42%, transparent 72%);
  filter: blur(16px);
  transform: scale(.3);
  opacity: 0;
  animation: bloom 8s ease-out forwards, breathe 12s ease-in-out infinite 7s;
}

.bloom-one { width: 46vw; height: 46vw; left: -12vw; top: -9vw; animation-delay: .4s, 7s; }
.bloom-two { width: 34vw; height: 34vw; right: -8vw; top: 32vh; animation-delay: 1.3s, 8s; }
.bloom-three { width: 42vw; height: 42vw; left: 56vw; bottom: -18vw; animation-delay: 2.2s, 9s; }

.scroll {
  position: relative;
  z-index: 1;
  width: min(100%, 1180px);
  margin: 0 auto;
}

.scene {
  position: relative;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 8rem clamp(1.4rem, 5vw, 5rem);
  isolation: isolate;
}

.scene::before {
  content: "";
  position: absolute;
  inset: 2.2rem clamp(.6rem, 3vw, 2.4rem);
  border-left: 1px solid rgba(119,113,106,.22);
  border-right: 1px solid rgba(119,113,106,.14);
  background:
    linear-gradient(90deg, transparent, rgba(244,239,230,.78) 18%, rgba(244,239,230,.92) 50%, rgba(244,239,230,.78) 82%, transparent),
    radial-gradient(circle at 18% 28%, rgba(216,208,196,.25), transparent 28%),
    radial-gradient(circle at 92% 74%, rgba(119,113,106,.14), transparent 24%);
  border-radius: 48% 51% 50% 49% / 2% 3% 2% 3%;
  z-index: -1;
}

.copy-block {
  width: min(100%, 730px);
  padding: clamp(1rem, 3vw, 2rem);
  text-align: left;
}

.hero-copy { text-align: center; }

.chapter-title {
  margin: 0 0 1rem;
  font-family: var(--font-literary);
  color: var(--rain-gray);
  font-size: clamp(1rem, 1.6vw, 1.25rem);
  letter-spacing: .08em;
}

h1, h2 {
  margin: 0;
  color: var(--soft-charcoal);
  letter-spacing: -.055em;
  line-height: .9;
}

.wordmark {
  font-size: clamp(3.4rem, 12vw, 8.2rem);
  font-weight: 800;
}

.wordmark span {
  display: inline-block;
  background: linear-gradient(90deg, rgba(23,20,18,.2), var(--deep-ink), rgba(59,54,50,.72));
  -webkit-background-clip: text;
  color: transparent;
  opacity: 0;
  filter: blur(8px);
  animation: paintedWord 2.8s ease forwards .7s;
}

h2 {
  max-width: 700px;
  font-size: clamp(2.8rem, 8vw, 6.2rem);
  font-weight: 700;
}

.tagline {
  margin: 1.4rem 0 0;
  font-family: var(--font-literary);
  font-size: clamp(1.35rem, 3vw, 2.05rem);
  color: var(--soft-charcoal);
}

.prose {
  max-width: 690px;
  margin: 1.6rem 0 0;
  color: var(--deep-ink);
  font-size: clamp(1.08rem, 2vw, 1.32rem);
  font-weight: 300;
  line-height: 1.75;
}

.hero-copy .prose { margin-left: auto; margin-right: auto; }

.scene-marker {
  position: absolute;
  top: 3.8rem;
  left: clamp(1.6rem, 8vw, 8rem);
  color: var(--rain-gray);
  font-family: var(--font-hand);
  font-size: 1.55rem;
  transform: rotate(-3deg);
}

.scene-marker span {
  display: inline-block;
  width: 2.6rem;
  height: 2.6rem;
  margin-right: .45rem;
  vertical-align: middle;
  border: 1px solid rgba(59,54,50,.46);
  border-radius: 50% 45% 48% 54%;
  background: radial-gradient(circle, rgba(119,113,106,.2), transparent 62%);
}

.thread-nav {
  position: fixed;
  top: 50%;
  right: clamp(.7rem, 2vw, 1.6rem);
  z-index: 10;
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  transform: translateY(-50%);
}

.thread-nav::before {
  content: "";
  position: absolute;
  top: .35rem;
  bottom: .35rem;
  left: .35rem;
  border-left: 1px dashed rgba(119,113,106,.45);
}

.thread-dot {
  position: relative;
  width: .78rem;
  height: .78rem;
  padding: 0;
  border: 1px solid var(--tea-steam);
  border-radius: 50%;
  background: var(--tea-steam);
  cursor: pointer;
  transition: background .4s ease, transform .4s ease, border-color .4s ease;
}

.thread-dot.active { background: var(--deep-ink); border-color: var(--deep-ink); transform: scale(1.35); }
.thread-dot span { position: absolute; right: 1.2rem; top: -.45rem; width: 7rem; opacity: 0; color: var(--rain-gray); font-family: var(--font-hand); font-size: 1.2rem; transition: opacity .3s ease; }
.thread-dot:hover span { opacity: 1; }

.margin-note, .terminal-note {
  position: absolute;
  color: var(--rain-gray);
  font-family: var(--font-hand);
  font-size: clamp(1.35rem, 2.5vw, 1.8rem);
  opacity: 0;
  transform: translateY(12px) rotate(-5deg);
  transition: opacity 1.2s ease, transform 1.2s ease;
}

.scene.dry .margin-note, .scene.dry .terminal-note { opacity: 1; transform: translateY(0) rotate(-5deg); }
.note-one { right: clamp(1rem, 10vw, 8rem); top: 32%; }
.note-final { left: clamp(1rem, 9vw, 7rem); bottom: 18%; }
.terminal-note { left: clamp(1rem, 10vw, 7rem); bottom: 26%; font-family: var(--font-main); font-size: 1rem; letter-spacing: .08em; }

.artifact, .margin-art, .bojagi, .margin-flower, .teacup-ring, .commit-seal { position: absolute; }

.moon-jar { right: clamp(1rem, 10vw, 8rem); bottom: 14%; width: clamp(120px, 18vw, 210px); opacity: .72; }
svg path { fill: none; stroke: var(--soft-charcoal); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.moon-jar svg path { stroke-dasharray: 420; stroke-dashoffset: 420; animation: drawLine 3.4s ease forwards 1.5s; }

.teacup-ring {
  width: 120px;
  height: 96px;
  left: clamp(1rem, 12vw, 9rem);
  bottom: 18%;
  border: 2px solid rgba(119,113,106,.38);
  border-radius: 50%;
  filter: blur(.2px);
  transform: rotate(12deg);
}

.teacup-ring.ripple::after {
  content: "";
  position: absolute;
  inset: -10px;
  border: 1px solid rgba(59,54,50,.22);
  border-radius: 50%;
  animation: ripple 1.7s ease-out;
}

.ring-small { left: auto; right: 12%; top: 22%; width: 86px; height: 68px; }

.torn-band {
  position: absolute;
  left: 8%;
  right: 8%;
  bottom: -1rem;
  height: 4rem;
  background: linear-gradient(135deg, transparent 0 10%, rgba(216,208,196,.75) 10% 22%, transparent 22% 34%, rgba(216,208,196,.7) 34% 51%, transparent 51% 63%, rgba(216,208,196,.62) 63% 82%, transparent 82%);
  filter: blur(.2px);
  opacity: .68;
}
.torn-band.reverse { transform: rotate(180deg); }

.tool-slip-row { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.8rem; }
.paper-slip, .commit-slip {
  position: relative;
  display: inline-block;
  border: 1px solid rgba(59,54,50,.4);
  background: rgba(244,239,230,.62);
  color: var(--soft-charcoal);
  padding: .82rem 1.05rem;
  font-family: var(--font-main);
  font-weight: 500;
  text-decoration: none;
  box-shadow: 5px 7px 0 rgba(216,208,196,.58);
  cursor: pointer;
  transition: transform .25s ease, box-shadow .25s ease;
}
.paper-slip:hover, .commit-slip:hover { transform: translate(-2px, -3px) rotate(-1deg); box-shadow: 8px 11px 0 rgba(216,208,196,.72); }
.paper-slip::after, .commit-slip::after { content: ""; position: absolute; left: .6rem; right: .6rem; bottom: .45rem; height: 6px; background: rgba(119,113,106,.18); transform: scaleX(0); transform-origin: left; filter: blur(3px); transition: transform .55s ease; }
.paper-slip.inked::after, .commit-slip.inked::after { transform: scaleX(1); }

.bug-blanket { right: clamp(1rem, 8vw, 7rem); top: 18%; width: clamp(170px, 24vw, 280px); }
.bug-blanket svg { width: 100%; }
.bug-blanket .blanket { fill: rgba(216,208,196,.42); }
.bug-blanket span { display: block; margin-top: -.4rem; font-family: var(--font-hand); color: var(--rain-gray); font-size: 1.4rem; transform: rotate(3deg); }

.bojagi {
  left: clamp(1rem, 8vw, 7rem);
  top: 18%;
  width: clamp(170px, 24vw, 280px);
  display: grid;
  grid-template-columns: 1fr .65fr 1.2fr;
  grid-template-rows: 74px 58px 86px;
  border: 1px solid rgba(59,54,50,.28);
  transform: rotate(-4deg);
  opacity: .75;
}
.bojagi span { border: 1px solid rgba(119,113,106,.28); background: rgba(216,208,196,.18); }
.bojagi span:nth-child(2n) { background: rgba(119,113,106,.09); }
.bojagi span:nth-child(3) { grid-row: span 2; }

blockquote {
  margin: 2rem 0 0;
  padding-left: 1.5rem;
  border-left: 2px solid rgba(59,54,50,.35);
  color: var(--soft-charcoal);
  font-family: var(--font-literary);
  font-size: clamp(1.25rem, 2.4vw, 1.65rem);
  line-height: 1.55;
}

.margin-flower { right: 12%; bottom: 18%; width: 128px; height: 146px; transition: transform .8s ease; }
.margin-flower span { position: absolute; left: 52px; top: 42px; width: 40px; height: 54px; border: 1px solid rgba(59,54,50,.42); border-radius: 65% 35% 58% 42%; transform-origin: 10px 48px; background: rgba(216,208,196,.18); transition: transform .8s ease, background .8s ease; }
.margin-flower span:nth-child(1) { transform: rotate(-46deg) scaleY(.75); }
.margin-flower span:nth-child(2) { transform: rotate(4deg) scaleY(.78); }
.margin-flower span:nth-child(3) { transform: rotate(52deg) scaleY(.7); }
.margin-flower span:nth-child(4) { top: 92px; left: 62px; width: 1px; height: 52px; border-radius: 0; background: var(--rain-gray); }
.margin-flower:hover span:nth-child(1) { transform: rotate(-65deg) scaleY(1); background: rgba(216,208,196,.32); }
.margin-flower:hover span:nth-child(2) { transform: rotate(0deg) scaleY(1.05); background: rgba(216,208,196,.32); }
.margin-flower:hover span:nth-child(3) { transform: rotate(70deg) scaleY(1); background: rgba(216,208,196,.32); }
.margin-flower em { position: absolute; left: -50px; bottom: -20px; width: 210px; color: var(--rain-gray); font-family: var(--font-hand); font-size: 1.25rem; font-style: normal; }

.commit-scene::before { background: radial-gradient(circle at 55% 62%, rgba(14,13,12,.16), transparent 28%), linear-gradient(90deg, transparent, rgba(244,239,230,.9) 18%, rgba(244,239,230,.96) 50%, rgba(216,208,196,.6) 82%, transparent); }
.commit-slip { margin-top: 2rem; }
.commit-seal {
  right: clamp(1.2rem, 13vw, 10rem);
  bottom: 22%;
  width: 132px;
  height: 132px;
  display: grid;
  place-items: center;
  align-content: center;
  border: 4px solid var(--wet-graphite);
  color: var(--hanji-paper);
  background: var(--wet-graphite);
  font-family: var(--font-hand);
  font-size: 2rem;
  line-height: .78;
  transform: rotate(8deg) scale(.94);
  box-shadow: 0 0 0 10px rgba(14,13,12,.06);
  opacity: .96;
}
.commit-seal strong { display: block; font-family: var(--font-main); font-size: .8rem; letter-spacing: .18em; text-transform: uppercase; }

.redraw svg path { animation: redraw .9s ease; }
.redraw.margin-flower { animation: flowerNod .9s ease; }

@keyframes bloom { to { opacity: 1; transform: scale(1); } }
@keyframes breathe { 50% { transform: scale(1.06) translate(1%, -1%); opacity: .78; } }
@keyframes paintedWord { to { opacity: 1; filter: blur(0); } }
@keyframes drawLine { to { stroke-dashoffset: 0; } }
@keyframes ripple { from { transform: scale(.85); opacity: .7; } to { transform: scale(1.35); opacity: 0; } }
@keyframes redraw { 0% { stroke-dashoffset: 120; } 100% { stroke-dashoffset: 0; } }
@keyframes flowerNod { 50% { transform: rotate(-5deg) translateY(-6px); } }

@media (max-width: 820px) {
  .thread-nav { display: none; }
  .scene { padding: 7rem 1rem; align-items: center; }
  .scene::before { inset: 1rem .5rem; }
  .moon-jar, .bug-blanket, .bojagi, .margin-flower, .teacup-ring, .margin-note, .terminal-note { position: relative; left: auto; right: auto; top: auto; bottom: auto; margin: 1.4rem auto 0; }
  .scene { display: flex; flex-direction: column; }
  .scene-marker { top: 2.4rem; left: 1.2rem; }
  .note-final, .note-one { transform: rotate(-4deg); }
}
