/*
 * Two themes, one stylesheet. `data-game` on <html> selects a variable block.
 *
 * Constraints this file is written against, all of them load-bearing:
 *
 *  - OBS 30.x ships Chromium 103. No :has() (105), no container queries (105),
 *    no oklch()/color-mix() (111), no CSS nesting (112), no unprefixed `mask`
 *    shorthand (120). -webkit-mask-* is used deliberately, not by accident.
 *  - Twitch transcodes to 720p60 with 4:2:0 chroma subsampling, so contrast has
 *    to live in LUMA. Every colour below is annotated with its Rec.709 Y'
 *    (0-255); pairs that matter are noted with their delta. Hue differences
 *    smear; luma differences survive.
 *  - No 1px lines anywhere - they alias into a crawling shimmer. 2px minimum,
 *    3px for anything that must stay crisp.
 *  - Only transform and opacity animate. Never filter, box-shadow, or
 *    background-position on a filtered element.
 *
 * The two games differ in structure, motion and value rather than hue, because
 * that is what survives the encode. Part I dissolves; Part II cuts.
 */

/* ---- embedded font: start ---- */
/* Generated by fonts/make-embed.py - do not hand-edit.
   Subset to uppercase + digits + the punctuation used in chapter names,
   because the overlay uppercases everything it renders. */
/* Anton by Vernon Adams / Kimberly Geswein / Cyreal, SIL OFL 1.1. (9396 bytes woff2) */
@font-face {
  font-family: "Anton Embedded";
  font-weight: 400;
  font-style: normal;
  src: url(data:font/woff2;base64,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) format("woff2");
  /* No network fetch, so the face is ready immediately - block keeps
     the fallback from flashing on screen for a frame. */
  font-display: block;
}
/* Barlow by Jeremy Tribby, SIL OFL 1.1. (10884 bytes woff2) */
@font-face {
  font-family: "Barlow Embedded";
  font-weight: 600;
  font-style: normal;
  src: url(data:font/woff2;base64,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) format("woff2");
  /* No network fetch, so the face is ready immediately - block keeps
     the fallback from flashing on screen for a frame. */
  font-display: block;
}
/* ---- embedded font: end ---- */
:root {
  /* Anton for display: a free Impact-class face standing in for the wordmark's
     Press Gothic. Its very tall x-height is a real legibility win at 720p, not
     just a visual match. Barlow is DIN-adjacent for the meta line, where
     Anton's condensed figures would close up at 22px. */
  --font-display: "Anton Embedded", "Anton", "Arial Narrow", Impact, sans-serif;
  --font-meta: "Barlow Embedded", "Barlow", "Segoe UI", system-ui, sans-serif;

  --pad: 18px;
  --track-h: 26px;
}

/* ------------------------------------------------------- Part I palette --- */
/*
 * Warm, organic, green decaying to gold. Amber-on-black is the relationship a
 * viewer pattern-matches to, so it carries the identity.
 */
[data-game="p1"] {
  --panel:    #12160F;   /* Y21  */
  --track:    #2E3327;   /* Y49  - unplayed chapters, a quiet ghosted field */
  --notch:    #0B0D0A;   /* Y12  - never pure black in Part I */
  --fill:     #E8A33D;   /* Y170 - amber. D121 against the track. */
  --cur:      #F2EDE1;   /* Y237 - D67 against the fill */
  --cap:      #D8D2C4;   /* Y210 - D189 against the panel */
  --keyline:  #4A5240;   /* Y79  - D58; this is what defines the bar's extent */
  --text-1:   #F2EDE1;   /* Y237 - D216 */
  --text-2:   #9BA882;   /* Y163 - D142 */
  --numeral:  #FFC85C;   /* Y204 - D183 */
  --on-numeral: transparent;

  --radius: 5px;
  --ls-1: .30em;         /* airy */
  --ls-2: .22em;
  --move: 900ms cubic-bezier(.22, 1, .36, 1);
  --fade-out: 1200ms;    /* dissolve out - read by the JS */
  --fade-in: 900ms;

  --grain-a: .06;
  --vignette: radial-gradient(120% 140% at 50% 40%,
              rgba(9, 11, 8, 0) 42%, rgba(9, 11, 8, .60) 100%);
}

/* ------------------------------------------------------ Part II palette --- */
/*
 * Cold, hard, pure black. Red is the authored motif, but the true blood red
 * #9B1B1E is Y54 against a Y50 track - a FOUR step luma delta. As the bar fill
 * it would be invisible after transcode, with the whole distinction living in
 * the chroma planes Twitch discards. So it never appears as the fill; the fill
 * is the lifted #E8615A, and the real red lives in the numeral block, which is
 * a large flat area carrying light text on it.
 */
[data-game="p2"] {
  --panel:    #0E1316;   /* Y18  */
  --track:    #2A343A;   /* Y50  */
  --notch:    #000000;   /* Y0   - Part II uses pure black, and a lot of it */
  --fill:     #E8615A;   /* Y125 - D75 against the track */
  --cur:      #EDEAE2;   /* Y234 - D109 against the fill */
  --cap:      #C3C9C8;   /* Y200 - D182 */
  --keyline:  #4A575E;   /* Y85  - D67 */
  --text-1:   #EDEAE2;   /* Y234 - D216 */
  --text-2:   #7C8B91;   /* Y136 - D118 */
  --numeral:  #EDEAE2;   /* light text ON red, not red text */
  --on-numeral: #C0322C; /* Y80  - D62 against the panel, D154 under the text */

  --radius: 0;
  --ls-1: .16em;         /* compressed */
  --ls-2: .14em;
  --move: 220ms linear;
  --fade-out: 0ms;       /* cut - the signature Part II move */
  --fade-in: 400ms;

  --grain-a: .07;
  --vignette: linear-gradient(160deg,
              rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, .75) 100%);
}

/* ------------------------------------------------------------- document --- */

html, body {
  margin: 0;
  padding: 0;
  background: transparent;
  overflow: hidden;
}

/*
 * The panel sits at 0,0 with no body margin, so the OBS source bounding box IS
 * the panel - no wasted transparent canvas to position around.
 *
 * `isolation: isolate` plus an OPAQUE background is mandatory, not cosmetic: a
 * browser source composites against transparency, so the grain's mix-blend-mode
 * would otherwise blend against nothing and leak into OBS's alpha channel.
 */
#panel {
  position: relative;
  isolation: isolate;
  display: inline-block;
  padding: var(--pad);
  background-color: var(--panel);
  border-radius: var(--radius);
  -webkit-font-smoothing: antialiased;
  user-select: none;
  /* The motes/rain layer deliberately overhangs the panel so its loop has
     travel room. Without this it escapes onto the transparent page and the
     particles drift over the gameplay capture in mid-air. */
  overflow: hidden;
}

#panel[hidden] { display: none; }

/* Botanical silhouette, bottom-right, behind everything. Original outlines of
   generic forms - a broadleaf vine for Part I, a fern frond for Part II - not
   traced from any game asset. */
#panel {
  background-repeat: no-repeat;
  background-position: right -14px bottom -18px;
  background-size: auto 128px;
}

[data-game="p1"] #panel {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 160'%3E%3Cg fill='%236E7A5A' fill-opacity='.30'%3E%3Cpath d='M62 160c-6-38 2-72 22-98C70 82 60 112 58 138 52 108 40 84 20 66c14 24 24 54 26 94z'/%3E%3Cpath d='M84 40c14-6 24-18 26-32-16 2-28 10-34 22-4-14-14-24-28-28 6 14 8 28 4 40 12 6 24 5 32-2z'/%3E%3Cpath d='M30 58C18 54 8 44 6 32c14 0 25 6 31 16 3-12 11-21 23-25-5 12-6 24-3 34-10 5-19 5-27 1z'/%3E%3C/g%3E%3C/svg%3E");
}

[data-game="p2"] #panel {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 160'%3E%3Cg fill='%234A575E' fill-opacity='.34'%3E%3Cpath d='M58 160V16h4v144z'/%3E%3Cg%3E%3Cpath d='M58 26C50 18 38 14 26 16c6 10 16 16 28 16zM62 30c8-10 20-15 32-13-7 11-18 17-30 17zM58 48c-9-8-21-12-33-10 6 10 17 16 29 16zM62 52c8-10 20-14 32-12-7 11-18 17-30 17zM58 70c-9-8-21-11-33-9 6 10 17 15 29 15zM62 74c8-10 20-14 32-12-7 11-18 16-30 16zM58 92c-8-7-19-10-30-8 6 9 16 14 27 14zM62 96c7-9 18-13 29-11-6 10-16 15-27 15zM58 113c-7-6-17-9-27-7 5 8 14 12 24 12zM62 117c6-8 16-12 26-10-6 9-15 13-24 13z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}

/* ------------------------------------------------- texture: grain, vignette --- */
/*
 * The grain is a STATIC rasterised data-URI, never a live filter and never
 * per-frame noise. Animated full-panel noise is maximum entropy: it eats the
 * bitrate budget and degrades the gameplay capture sharing the encode. At panel
 * size a static grain is indistinguishable from an animated one anyway.
 *
 * stitchTiles='stitch' is what makes it tile without visible seams.
 */
#panel::before,
#panel::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
}

#panel::before {          /* grain */
  z-index: 3;
  mix-blend-mode: overlay;
  opacity: var(--grain-a);
}

#panel::after {           /* vignette */
  z-index: 4;
  background: var(--vignette);
}

[data-game="p1"] #panel::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch' seed='7'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/*
 * Part II's grain is anisotropic - a low horizontal frequency against a high
 * vertical one - which reads as paper fibre rather than film grain, matching
 * the journal surface the game leans on. The 45-degree hatching over it is the
 * pencil texture.
 */
[data-game="p2"] #panel::before {
  background-image:
    repeating-linear-gradient(45deg,
      rgba(255, 255, 255, .05) 0 1px, rgba(0, 0, 0, 0) 1px 4px),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.04 0.9' numOctaves='2' stitchTiles='stitch' seed='11'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Torn bottom edge - Part II only. Bottom edge alone; a fully deckled perimeter
   reads as noise rather than as torn paper. Prefixed because the unprefixed
   mask shorthand is Chromium 120 and OBS is on 103.
   The mask rect runs past the left, right and top edges so only the BOTTOM is
   displaced - it sits at 196/200, so the tear eats a few pixels of the bottom
   padding rather than biting into the bar. Extra bottom padding below gives it
   that room back. */
[data-game="p2"] #panel {
  padding-bottom: calc(var(--pad) + 8px);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='200' preserveAspectRatio='none'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.02 0.09' numOctaves='4' seed='3' result='t'/%3E%3CfeDisplacementMap in='SourceGraphic' in2='t' scale='7' xChannelSelector='R' yChannelSelector='G'/%3E%3C/filter%3E%3Crect x='-20' y='-20' width='740' height='216' fill='%23fff' filter='url(%23r)'/%3E%3C/svg%3E");
  -webkit-mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
}

/* ------------------------------------------------- motion: motes and rain --- */
/*
 * One element, one composited layer, transform only. Tile height and the
 * translate distance match exactly so the loop is seamless.
 */
#fx {
  position: absolute;
  left: 0;
  right: 0;
  top: -200px;
  height: calc(100% + 400px);
  z-index: 2;
  pointer-events: none;
  will-change: transform;
}

[data-game="p1"] #fx {
  /* Spores drifting up through the panel. Slow enough to read as atmosphere. */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cg fill='%23FFC85C' fill-opacity='.5'%3E%3Ccircle cx='24' cy='36' r='2'/%3E%3Ccircle cx='96' cy='18' r='2.5'/%3E%3Ccircle cx='158' cy='62' r='2'/%3E%3Ccircle cx='58' cy='104' r='2.5'/%3E%3Ccircle cx='132' cy='138' r='2'/%3E%3Ccircle cx='16' cy='168' r='2'/%3E%3Ccircle cx='184' cy='118' r='2'/%3E%3Ccircle cx='78' cy='182' r='2.5'/%3E%3C/g%3E%3C/svg%3E");
  animation: drift 26s linear infinite;
}

[data-game="p2"] #fx {
  /* Seattle. Streaks are 2px wide - anything thinner is pure shimmer. */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='200'%3E%3Cg stroke='%23C3C9C8' stroke-opacity='.20' stroke-width='2'%3E%3Cpath d='M18 -6 L10 46'/%3E%3Cpath d='M74 10 L66 62'/%3E%3Cpath d='M126 -2 L118 50'/%3E%3Cpath d='M46 84 L38 136'/%3E%3Cpath d='M100 96 L92 148'/%3E%3Cpath d='M148 74 L140 126'/%3E%3Cpath d='M8 130 L0 182'/%3E%3C/g%3E%3C/svg%3E");
  animation: rain 1.15s linear infinite;
}

@keyframes drift { to { transform: translate3d(14px, -200px, 0); } }
@keyframes rain  { to { transform: translate3d(-31px, 200px, 0); } }

/* ----------------------------------------------------------------- text --- */

#meta, #name {
  position: relative;
  z-index: 5;
  text-transform: uppercase;
  white-space: nowrap;
}

#meta {
  font-family: var(--font-meta);
  font-weight: 600;
  font-size: 22px;
  line-height: 1;
  letter-spacing: var(--ls-2);
  color: var(--text-2);
}

/* The current number is the readout that actually does the work - on a 46-notch
   bar nobody counts cells. Part I lifts it in amber; Part II sets it in a solid
   red block, which is the only place the true blood red is legible. */
#num {
  color: var(--numeral);
  background-color: var(--on-numeral);
  padding: 3px 7px;
  margin: 0 1px;
}

#of { margin: 0 2px; opacity: .7; }

#name {
  font-family: var(--font-display);
  font-size: 44px;
  line-height: 1.05;
  letter-spacing: var(--ls-1);
  /* Cancels the trailing letter-space so the line still starts flush left. */
  margin: 14px 0 16px calc(var(--ls-1) * -0.5);
  color: var(--text-1);
  transition: opacity var(--fade-in) ease-out;
}

#name.out {
  opacity: 0;
  transition-duration: var(--fade-out);
}

/* ------------------------------------------------------------------ bar --- */

#bar {
  position: relative;
  z-index: 5;
}

#track {
  position: absolute;
  left: 0;
  right: 0;
  overflow: hidden;
  background-color: var(--track);
  border-radius: var(--radius);
  /* 3px, not 1px - a hairline keyline crawls badly at 720p. */
  box-shadow: inset 0 0 0 3px var(--keyline);
}

#fill {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  background-color: var(--fill);
  transition: width var(--move);
}

/*
 * The current chapter's cell, in near-white. This is the strongest mitigation
 * for a 46-notch bar: at 6.7px delivered nobody counts to 16, but a single
 * bright cell is locatable at a glance.
 */
#cur {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  background-color: var(--cur);
  transform: translateX(0);
  transition: transform var(--move);
  will-change: transform;
}

/* Suppressed for exactly one frame after a (re)connect, so a network blip does
   not replay the playthrough as an animated sweep on stream. */
#fill.nofx, #cur.nofx { transition: none; }

#ticks {
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
}

/* Painted over the fill - this is what cuts the bar into one cell per chapter. */
#ticks .gap { fill: var(--notch); }

/* Act boundaries. These sit OUTSIDE the track, above and below, so their
   contrast against the panel is constant whether the neighbouring chapter is
   completed or not. Drawn over an amber fill they would be Y210 on Y170 - a
   delta of 40 - and would disappear exactly where the action is. Keeping them
   out of the track also means adjacent boundaries stay a full pitch apart,
   which is what makes the single-chapter acts (The Park, The Farm, Epilogue)
   render as two distinct pips flanking a lone cell instead of a solid block. */
#ticks .cap { fill: var(--cap); }

/* Part I only: a slow amber bloom on the fill. Part II is matte by design -
   --glow does not exist there, and that absence is part of the identity. */
[data-game="p1"] #fill {
  animation: bloom 5.5s ease-in-out infinite;
}

@keyframes bloom {
  0%, 100% { opacity: 1; }
  50%      { opacity: .88; }
}
