/* ============================================================
   ROE ROCKET
   One stylesheet. Change the variables, change everything.
   Make it weird here. Nowhere else.
   ============================================================ */

:root {
  /* ---- THE FOUR DIALS ---------------------------------- */
  --ink:    #282407;   /* text */
  --paper:  #D97904;   /* background */
  --accent: #282407;   /* links, the button, anything loud */
  --quiet:  #372706;   /* dates, captions, small print */
  --heading:#383A2F;   /* h1, h2, h3 only. body text stays --ink */

  /* On a loud background you don't need a loud accent — the
     background IS the loud thing. Hence accent = ink.
     Want a second colour instead? Change --accent only:
       navy  #10243D    teal  #05403A    cream #F7EFE2
     (cream looks great but the button inverts to orange-on-cream,
      which is weak at 13px uppercase. Links only.)

     --quiet is nearly as dark as --ink on purpose. Orange leaves
     almost no room underneath the text colour before things stop
     being readable, so secondary text is distinguished by SIZE,
     not by colour. Don't lighten it. */

  /* ---- THE OTHER DIALS --------------------------------- */
  --measure: 42rem;    /* max line length. ~700px. don't go wider. */
  --face: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  --face-body: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  /* ^ swap --face-body to a serif/sans when you have opinions.
       Monospace by default because it looks deliberate while ugly,
       which is exactly the phase you're in. */
}

/* ---- RESET (the only three rules you need) -------------- */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
img, video { max-width: 100%; height: auto; display: block; }

/* ---- PAGE ----------------------------------------------- */
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--face-body);
  font-size: 1rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

.wrap {
  max-width: var(--measure);
  margin: 0 auto;
  padding: 3rem 1.25rem 6rem;
}

/* ---- MASTHEAD ------------------------------------------- */
.masthead {
  margin-bottom: 3rem;
}
.wordmark {
  font-family: var(--face);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--ink);

  /* The slow grow. transform-origin keeps it anchored to the left
     so it expands rightward instead of off both edges. inline-block
     is required — transforms don't apply to plain inline elements.
     Tune two numbers: the 8s (speed) and the scale(3.2) (size). */
  display: inline-block;
  -webkit-transform-origin: left center;
          transform-origin: left center;
  /* translateZ(0) forces a compositing layer — Safari otherwise
     rasterizes the text once and the grow looks blurry or stalls. */
  -webkit-transform: scale(1) translateZ(0);
          transform: scale(1) translateZ(0);
  -webkit-transition: -webkit-transform 8s cubic-bezier(0.16, 1, 0.3, 1);
          transition: transform 8s cubic-bezier(0.16, 1, 0.3, 1);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  position: relative;
  z-index: 2;
  will-change: transform;
}
/* Kept as SEPARATE rules on purpose. Safari < 15.4 does not know
   :focus-visible, and one unknown selector invalidates the whole
   comma-separated list — which killed :hover along with it. */
.wordmark:hover {
  -webkit-transform: scale(3.2) translateZ(0);
          transform: scale(3.2) translateZ(0);
}
.wordmark:focus-visible {
  -webkit-transform: scale(3.2) translateZ(0);
          transform: scale(3.2) translateZ(0);
}

nav.top {
  margin-top: 0.75rem;
  font-size: 0.85rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
nav.top a { margin-right: 1.25rem; }

/* ---- TYPE ----------------------------------------------- */
h1 {
  font-family: var(--face);
  font-size: 1.9rem;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0 0 1.25rem;
  color: var(--heading);
}
h2 {
  font-family: var(--face);
  font-size: 1.05rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin: 3rem 0 1rem;
  color: var(--heading);
}
p { margin: 0 0 1.25rem; }

.lede {
  font-size: 1.15rem;
  line-height: 1.45;
}

a { color: var(--accent); text-underline-offset: 0.2em; }
a:hover { text-decoration: none; }

.quiet {
  color: var(--quiet);
  font-size: 0.85rem;
}

hr {
  border: 0;
  border-top: 1px solid var(--ink);
  opacity: 0.3;
  margin: 3rem 0;
}

/* ---- THE BUTTON ----------------------------------------
   There is one. Adding a second one halves the first one. */
.button {
  display: inline-block;
  background: var(--accent);
  color: var(--paper);
  font-family: var(--face);
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 0.85rem 1.4rem;
  border: 0;
}
.button:hover { filter: brightness(1.12); }

.button-note {
  display: block;
  margin-top: 0.6rem;
  color: var(--quiet);
  font-size: 0.85rem;
}

/* ---- SECONDARY LINKS ------------------------------------ */
.elsewhere {
  font-size: 0.9rem;
  line-height: 2;
}

/* ============================================================
   THE SPECTRUM LIST — homepage "Elsewhere"

   Five links, five hues from the SouthDakota palette, running
   warm to cool: brown-red, terracotta, gold, olive, blue.
   Straight on the orange. No panel.

   THE CREAM DROP SHADOW IS DOING THE WORK.
   Measured against --paper (#D97904), these hues sit between
   1.53:1 and 3.46:1 — below the 4.5:1 WCAG wants for body text.
   The cream (#FDFFF4) extrude gives every glyph a hard lit edge,
   which is what actually makes them readable here. Formally this
   is still under AA; practically it is a large jump. If you ever
   want the measurable version back, put them on a cream panel.

   Hues are the palette originals with saturation pushed up
   (~1.85x) so they read as colour rather than as mud. Hue is
   untouched — these are the same five swatches, turned up.
   ============================================================ */
:root {
  /* Palette swatch 1 (#FDFFF4) at 80% opacity. Kept as rgba rather
     than a hex + separate opacity so the whole shadow is one dial. */
  --shadow-cream: rgba(253, 255, 244, 0.8);

  /* base = vibrant           hover = darker                palette origin */
  --link-red:         #813514;  --link-red-dark:    #4A1C09;  /* 683F2D */
  --link-orange:      #B55729;  --link-orange-dark: #833C19;  /* 956249 */
  --link-yellow:      #896724;  --link-yellow-dark: #574014;  /* B39B6D */
  --link-green:       #3B3F2A;  --link-green-dark:  #16180F;  /* 383A2F */
  --link-blue:        #2B5AAD;  --link-blue-dark:   #1A3D7C;  /* 49628F */

  /* THE TWO DIALS for the hover grow. The wordmark uses 8s and
     scale(3.2). These are dialled down because a link that takes
     eight seconds to finish growing is a link nobody sees finish.
     Want them identical to the wordmark? Set 8s and 3.2. */
  --link-grow:  1.35;
  --link-speed: 2.2s;
  /* Note: like the wordmark, a growing link overlaps whatever is to
     its right — here, its own description. That is the effect, not a
     bug; z-index keeps the link on top. Lower --link-grow if the
     overlap bothers you. */
}

.spectrum {
  font-size: 1.2rem;       /* was 0.9rem — the bump you asked for */
  line-height: 2.4;        /* roomy enough that a grown link doesn't collide */
  margin-top: 1.5rem;
}

.spectrum a {
  font-weight: 700;
  text-decoration: none;   /* the shadow IS the emphasis — an underline
                              on top of it just muddies the letterforms */

  /* One cream offset: 2px right, 2px down, 2px blur, 80% opacity.
     Blur past ~3px stops reading as a drop shadow and turns into a
     halo; the third value is the one to change if you want it
     softer or harder. Tried stacking three hard offsets for a
     thicker extrude — at this size it filled the counters of
     a, e, o and the text turned to mush. */
  text-shadow: 2px 2px 2px var(--shadow-cream);

  /* Same technique as .wordmark: inline-block so transforms apply,
     origin left so it expands rightward, translateZ(0) to stop
     Safari rasterising the text once and going blurry mid-grow. */
  display: inline-block;
  position: relative;
  -webkit-transform-origin: left center;
          transform-origin: left center;
  -webkit-transform: scale(1) translateZ(0);
          transform: scale(1) translateZ(0);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;

  /* Transition lives on the base rule, so it runs BOTH ways —
     grows on hover, shrinks back when the pointer leaves.
     Colour moves faster than scale so the darkening reads as
     immediate feedback rather than a slow fade. */
  -webkit-transition: -webkit-transform var(--link-speed) cubic-bezier(0.16, 1, 0.3, 1),
                      color 0.4s ease;
          transition: transform var(--link-speed) cubic-bezier(0.16, 1, 0.3, 1),
                      color 0.4s ease;
}

.spectrum a:hover,
.spectrum a:focus-visible {
  -webkit-transform: scale(var(--link-grow)) translateZ(0);
          transform: scale(var(--link-grow)) translateZ(0);
  z-index: 2;              /* the growing link sits above its neighbours */
  /* No shadow change needed — transform scales the shadow with the
     text, so it thickens on its own as the link grows. */
}

.s-red    { color: var(--link-red)    !important; }
.s-orange { color: var(--link-orange) !important; }
.s-yellow { color: var(--link-yellow) !important; }
.s-green  { color: var(--link-green)  !important; }
.s-blue   { color: var(--link-blue)   !important; }

/* The darken half of the hover. */
.s-red:hover,    .s-red:focus-visible    { color: var(--link-red-dark)    !important; }
.s-orange:hover, .s-orange:focus-visible { color: var(--link-orange-dark) !important; }
.s-yellow:hover, .s-yellow:focus-visible { color: var(--link-yellow-dark) !important; }
.s-green:hover,  .s-green:focus-visible  { color: var(--link-green-dark)  !important; }
.s-blue:hover,   .s-blue:focus-visible   { color: var(--link-blue-dark)   !important; }

/* ---- CONTACT LINE — sits under the spectrum on the homepage ----
   Deliberately NOT a sixth spectrum hue. The five above are a closed
   set from the SouthDakota palette; a sixth would dilute them. This
   line uses the normal accent colour and sits a step larger than
   .elsewhere, because it is the only line in that block that goes
   the other direction — a stranger writing to you. */
.contact {
  font-size: 1rem;
  line-height: 2;
  margin-top: 1.35rem;
}

@media (max-width: 30rem) {
  .spectrum { font-size: 1.05rem; line-height: 2.3; }
  :root { --link-grow: 1.25; }   /* less room to grow into on a phone */
}

/* ---- LOG ------------------------------------------------ */
.entry {
  margin-bottom: 3.5rem;
}
.entry-meta {
  font-family: var(--face);
  font-size: 0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--quiet);
  margin-bottom: 0.4rem;
}
.entry-meta a { color: var(--quiet); text-decoration: none; }
.entry-meta a:hover { color: var(--accent); text-decoration: underline; }
.entry h3 {
  font-family: var(--face);
  font-size: 1.15rem;
  margin: 0 0 0.9rem;
  color: var(--heading);
}
.entry dl { margin: 0; }
.entry dt {
  font-size: 0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--quiet);
  margin-top: 0.9rem;
}
.entry dd { margin: 0.15rem 0 0; }

/* ---- LICENSE BOX (for /loops/) -------------------------- */
.box {
  border: 1px solid var(--ink);
  padding: 1.25rem;
  margin: 1.5rem 0;
}
.box p:last-child { margin-bottom: 0; }

code, pre {
  font-family: var(--face);
  font-size: 0.85rem;
  background: rgba(0,0,0,0.05);
}
code { padding: 0.15em 0.4em; }
pre {
  padding: 1rem;
  overflow-x: auto;
  border-left: 3px solid var(--accent);
}
pre code { background: none; padding: 0; }

/* ---- FOOTER --------------------------------------------- */
footer {
  margin-top: 5rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(0,0,0,0.28);
  font-size: 0.85rem;
  color: var(--quiet);
  line-height: 1.9;
}


/* ---- WHY THE SPRITES ARE PASTED IN AS DATA -----------------
   Both sprites are embedded here as base64 rather than loaded
   from /img/. That folder was empty before this rocket existed,
   so an upload that skips empty folders leaves the images 404ing
   and the rocket flies around completely invisible.

   Embedding costs ~20KB in this file and saves two requests.
   To go back to plain files instead: replace the giant
   url("data:image/png;base64,...") in .rocket with
   url("/img/rocket-sheet.png"), and the one in .egg with
   url("/img/egg.png"), then upload the img/ folder.
   ------------------------------------------------------------ */

/* ---- THE FLYING ROCKET ----------------------------------- */
/* Element is built by rocket.js. Position and rotation live there;
   the two-frame flame flicker lives here.

   The sheet is 2 frames side by side, so background-size:200% shows
   exactly one frame. steps(2) hops between them with no crossfade —
   this is what makes it read as hand-drawn animation instead of a
   dissolve. Change the 0.16s to change the flicker rate. */
.rocket {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 60;
  background-image: url("data:image/png;base64,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");
  background-size: 200% 100%;
  background-repeat: no-repeat;
  background-position: 0 0;
  -webkit-animation: rocket-flicker 0.16s steps(2) infinite;
          animation: rocket-flicker 0.16s steps(2) infinite;
  cursor: pointer;
  touch-action: manipulation;      /* kills the 300ms tap delay on mobile */
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
          user-select: none;
  will-change: transform;
  /* Only opacity transitions. transform is rewritten every frame by
     rocket.js, and a transition on it would smear the flight path. */
  -webkit-transition: opacity 0.3s ease;
          transition: opacity 0.3s ease;
}
@-webkit-keyframes rocket-flicker {
  from { background-position: 0 0; }
  to   { background-position: 200% 0; }
}
@keyframes rocket-flicker {
  from { background-position: 0 0; }
  to   { background-position: 200% 0; }
}

/* Clicked: fades out, stays gone 8s (set in rocket.js), then fades back
   in somewhere else. Not display:none — that would kill the fade. */
.rocket.is-gone {
  opacity: 0;
  pointer-events: none;
}

/* ---- THE EGGS -------------------------------------------- */
/* Fired by a click on the rocket. Position, spin and size are set
   inline by rocket.js; --egg-size is written there too so the two
   sprites always stay in proportion. Click one to pop it. */
:root { --egg-size: 28px; }   /* placeholder; rocket.js sets the real value */
.egg {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 59;                     /* just under the rocket */
  width: var(--egg-size);
  height: var(--egg-size);
  background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABSCAYAAADKMvPcAAASrklEQVR42u2deWxc13XGf/e9NwvJGe6bSEokRWux7Eh0vGaxE8mWHTuLg7ZoiiIoUhQoiqYo0g1F06ZIC3RFtxRNWwQN0BRtgCKAE8d26oCOCUm2ZVuWRG0UTYnDnRySQw45+7yZd2//eG9GMxRpcrhosw4wkDDLm7kfz/Kdc+85T3ALyeGjIvffBqACqAXqnIcFJIFZYNF5pIAIQG+PuiXWIG4ygH7gEPBx4AGgEagHfA6gXsAAXIB0PmY6j4QD5hIwCQwDJ4EzwBRg3QyQxU3QwFbgYeBp4HFgF1DmgKY2+JuU80gBIeA94BXgLWDU0ewbosXiBplwI/Ak8AtAN7DD0T5RImiihPdmHO29CPwMeKm3R52/3QGtB34F+ArQBZSvBYIQ6JoBmo7QDdANMlaWUDpOUDeo0wxqpYVHSTQlEUqhAUKpVdeiHHcxA7wE/C0Q2C5tFdukldXALwG/DtwHuFdbqKaRcJcxW70Ds6Fd7fT6qPBWIFxecHlg7sfadR+sfU5iJsFMQjqBioeFWAyiovOQToC0Vl2b5QS1/wG+09ujrtzSgB4+KrzA88BvAw86QIplIKYNN2Z1M1rzPcrTsAt9qUfTtuL76z4rWZiCmYDIzA6zkElRqRQeYPn1s04g+0/gP4CJrfKxYgu18mHgm8ATToQuvLYElsr8DO95VJU17aZr/hXNvd3+zP2YjAWHhJwexGUm8TjuoVAywADwN8APenuUedMBPXxUuIEvA38CdKygkbGqRiYOPKEq0ie1XTeDntV/TqrAGSEn+rFScVwrrDsKfBf4cyC8GW3Vt4BH/hnwR07kFgV/qrivlvHuZ5RVHdR2WxOi6mbx3cSgEJ6o0PY8r3QpBakoSmaLFMrjuKhDwAkgMhK4gRrqmHgb8PeOz/QUXDFbXsnSgSeUkGe0Wm5B8T8pGTolmL6KsjLXuaYB4DeBYxvRUrEBIAEeA/4JeKhQyzWddPshVM2M8G5mwbrhorKpjYq6JlAKKS3CEwHMRAylFDKb2RpkD0kunxBWMmpTr4JXZpx48F0gUwqwGwH0M8C/LveX7jLSB55QunZRMzYcRMp9NOw+QP3ue3F5ytAMAxQIIUgszZNNp8ikk8TnZxCajsyYREPTmIkYCIFlppFWtqTv9B2WVt+rIhYJ4V/GBhaBv3Me6fWCWiqgjwD/64CZDzy+WjLdzygjcXxj9Mdd7qPt4GNUt3SguzwIIVDSQmg6wrmklBZmPIru8qDpOkIIEAJlWVhZE81wMXv1EuPn3gJVmqk2fEGqC6+L1PQgLqUoVIglJ1D9w3oDlShBMzuAHzjOW4CtFA0dqINPKWPhJxujktU72ul87Clc3nKUtFBKoRsu29SVRAjNBm95ViAlqWiY6OwUqXgEITQiwTFi8zMb9gDRNmUGTqOsbEFMgHngV53UdfOAOmDWAP8FPJczCyGQbQegYVFsmJS33PcQrR95FE3TUUrlgZPSQtNWJyBKKSLBcbJmCpe3HCubIRIcJxlZwFPuR9MNFLA4GSAdj5b0m8x9MnP5hLCsDIVxYBz4Um+POrkVgJYD/+zk5C4HTNW4G9Wa2hiYXn81+z79Bbz+alAKhUKs81JKKbLpFLrLjaZfD7q0spiJGFkzxejp48RCwZJ/X3K3zL7/llDSstfr8Ok+4BeBqx+kqWINMF3A14E/dEpsAKq6CfnwF5U+/3JpeLrLKuh85Aj+pjZ03UBK6bCDTdHhIknHIwyd7CEVWSCTSm74OuFGZY30gVJ5FiOBnwK/DCyuBupaiDwH/FYBmJT5yXY/o7RSwfQ3trL3U5/HW1XrgGmBklsKJoDhKcNX27jpJLBmVuhNXUiuFbY14CngT1cp9nxwpnT4qKgFvgPck/t1hpv0R59VrsQJbd2/VgiN5r0H2XnoY5iJKBU1DSilQCk0w7VlQColbdqUNXGV+8imkiSX5jd1zc5nlT4/LjKpeJ6n6sBe4FRnlwislE0ZHxCIvgIczEd0DfPex5VmvlMamC33PUR9xz4Wp0dp6LwXZa9+S8G0fadFPDzLleOvYG0R8Q+9pHHoael6+wVhpeN5rGqBr2Fvt8TXa/IdwK8VpJSqrpWsa0ArCYXm/d3Ud+5nbvgy9R370HSbqGuGsaVgWhmTSHCc8XMnbVeyhRJ9XRN7H1O6puVNXwCHnZR7bZM/fFRowDcKKZJukH7gWeXJjIp1a2dd+17aDn6M6f7TNO89aPNM1Jb7TCUtRk4fZ2bwPKnIQsmkfl2pcEiIZAVWKoZwADWAXZ1d4oXOLpEsNH1jBVM/CHyp4DXZsh9RShbkb2xlZ/cnmBu6RFlVLe6KSpSSH8gtN1x/1HTaP/o4i1MjmMk4Xl8lHl8VicV5QJFNJRk9c2LT33PPw0o//YqwpIXhgHrQoZL/uKqGdnYJN/CXwMdy2ukuI9P9tHKnA+vTTl9dE52PHCE2N8XC2CDtDz6BQGwLmNd8tUB3u/H4qtB0g9BQP3OBfiLBCaJzU1gZc/OWMC2EVYeMh4u0tAv4YWeXyJf7ljuzvcCzOaCFwOroRl/qWV8g8vqraX/o08QXZpg4f5L9R75o5+Nim/YClQIhQEBicZ6l6VHiC7MbIvPr0tJHlLEwJaxMKq+I7U5x/a9XC0rPO2mmzTkrsToOKX29prfj3o+CUoz3vUnrRx7FW1m7fWACmVSCdCxCKHCZ4XdeY2bw/LaBCZA8odG8uwgzF/DzhbzUWJYVPV/oO5u7EKGX1uc6q1s7qGxqY+S9Y5RV1dGw+95tAVNmMyxMBNB1AzMZY/LiKTKpxA0rTnd0KzF9VcismQe2C+g+fFS829tTvGl1ENh9rchLpnX/+rTTXe6j5cCDhCcCRGYm2Hno44it9JlKoaRFNp0ksTiPv34HicgCY2ffvKFgAsSPaVRUF6VhfuDoSiZ/FKgqMHcRP7Z2ZBeaRvP+B1BSMn35DP6GHVTUNW4tmA5xT8ejuMsriM0HmTh3suRi8lZJ/S6EUzDJWflncnFHW1aJz5m7amhf3wZe7a491O3aw8T5t8mkEngra9ZdOVpvShmbD3Lux99jKTjG/OgVrr75KjdTmu9RGO7rgvm+Qg3dB+zPm7sLtWPP2uburvDTcuBBQiMDRGenAGja85EtIuySRDjEUnCCK8dfoa5zHx5fFRMX3uFmS/KEhtdXrFeOQuYB/bjzpE1/fIjUm2trWfWOdgSCmcELKCWp2dlFeVXdlmQ/0dlJrIzJ8LuvU9e+F1/9DsbOnNi6DbotMPuCmKsDRw4fFa4cag8UkHxV3bw+mlRR00Dw/T7MRBRN1+l67CgIQSYZ35TPjMxOorvcDJ/qpbymnsqmVsbOvmFvxt0i0tihKPBsAtgDlGkFPiC3tUFVoxLr0aLxcycJDQ/YF/jU59F0g0wqsamFL06P4qmoZPTMCbLpJPUd+5ge6MMscStju8VXA3pxqagSqNMK9owczYMy//oumjVTSGnhLvfjb2jBymZIRcJoro0dW4rOTuHylDE9cJZYKEh9537MRIzo7CS3mrjKYFkFsgyo0hy2XwSoOltalO585DDKsjDjERJL83h9pZ+6yZppEotzZM00oaF+KpvbqGzeyeTFd7kVZe5FbXmk9wCtGtDikFObmG6A8Xh9VcwFLpOMhJm9crHkDElJi+DAWSqb2hg9fRxXWQWNXfcz8/65LSlsbJuWFp+PEUCD5ti+p5AylXrhmSvnEbpOeHIYf2NLyUFo+vIZanftYebKBVLRRRq6DpCMhFmcGuFWFndZMb7ADo1r591zKWeJF61gKTjO6OljLE4O429osfeM1pvKLYZQSmEmYsxevYSvrony6nqm+9/jVpcym4sWLrZVc8w9Z6PKcOdL/esTTcOMR1FSUtnUxsLYFYZPvZ7fwo2Fplf9qJXNMHHuJPWd9zLe9wYCqG7bTXgisGX7QtspQs+beo7Td2nYjQR6Qa22JDHjUaxsBt3lxt/QwuLkCMmlMLrbTToeJZNKrqqxU5dOoRsuQsO2/xW6TiYRY350kNtBNB25TEN1DVjAPhpt1xhNNhQFlLSYHx1EKknLgQfJppKEAv0Ybi8omfeXZiIGSpFJJVkYvUJFXRMTF95BSYmVMQkOnrtpRY9SxcqQ4Nq+vQRGNexGKeta0XZjJwSkZRFfmKWitpFUdJHAOz/D19DCVP8pQiODzg8wmRk8RyadZOzsG6RiS0xdOrUtG2s3JKeP5tPOnAQNYA6708zvuNhNHZatbGwlPBGgvKaBdGyJyOwkHl8V9R37GHr7NcITQ8wMns/7yKyZ5nYVM4nOtYa0LDBpADEKNuyl3NwZluBAHwhh5/kDZ9E0ncau+5kL9LM4GcgHoztBzGR+wy4X7We13h41i90F4Zju5uuXKMVScJxkJIy/qQ1XWQXBgb6S6NTtIFmzSPlMYMpwcvkQG29cXaFO6iOdiOZZQH/PD0hFF7nTxCo2tDQQ1pxjebM5MKUF4cbNaZIQWr5uGV+YvSPBdAAtTNQTQCT3xOlC6rQYLJHcL5M7FcCiDK9dyYKzo2C3kecBfduJ9ABE5shUPikVd2X1+kUAVdDqKIE3entUPPdEHzByLSXECA4RvQvbKtTwKUk8XJQhxYBXc/ln7onXC1i/NnZRBO9Ct7LMDlN40AHspoYLhYCCPVIiZ/YiGaGh6mmZvAvfSoAKuczcj+M03WqQb2jqcxxrjqX6ZofJ3oWvWGqfk0Tni+hlEniZgpITDqgh7GPOykHUNXZByLsQFsvYBYGZLLLsaQc3lps82BMO8sEouoAn1SXfvgujLXWfk0wOQMF8Ewv4CXZf6IqAvok99yinpZ7+48K4C6Utw2cFiUjRUwvA9wCV61sqArS3Ryng2wXFEgEcDFaoF+9SJcn4pWulXUc7f5SL7qtpKI6Dfa2AQrmnr3Kw5lk59mEG9Oq7QqbjRdxzEntmQFE//UqAprB7xMP5iC/Z2X9MhD6sYJY/LpPTV8hwrXiUxR5VdHn5e687YdfZJQCC2B10hxzQtXiY8o5nlGmNC8+HDdC+80xm0tQ5gCoHyK/19qjrZpNcp6GO+mawm+7zZq4UlX2vinTdZ+WHiptOetVgOk5rgXamsCdaTKz0/hXPgI4EYCTAXGeX8GIP/DMAkTUpC0+JUI0Qvg8DmPF2NT96gXquHQSR2HP0vgmkV+r1XOvgzb87QSpXx9fC09TN+NUdn+cbD0nryruUo661tQND2O3uS6t9bi1Al4DfAU4VRH1j8n1qlprV1J0KpvcTknOvCSWzFB62mXPA7CtwjaUB6nxoHLtnfriQ8AfOUmnuk3dcic9/RHL+NaHS8SJ3GAP+AvjhWp9f78wRsJvvv489zhcAlxe551Glea9qd4xmXviZIFrcZm8C3wL+uLdHrbldu2ZjghOgGAkQ6OwSS9jDAr0AMotYmBIYO6E8KW5rMK37JBdfFySKvWMWexLQ7wOp9YxvK6k7q7NLnMM+tvdgLvIpCZEQZGug/SlFauj2Azbaphh8W2AmrwOzB/gNPmDGyKYAHQkgO7vEO44ZdJObWKsgGYG5UUHzJxVy8vYAteELkqFxGL+IsrJF7i8FvAh81UlyWO9wwZJX7vhUgd2X822uH9mmOg4hOroV6+0TvRkiHpC8/5ZQ8XBROQ7syePfAv6qt0eVvGOxKVU6fFTcB/wbdn99vswnBMpXi9h5v2LX/TD7o1sHWNejksBpwcLUdQcVlMNovgH8NyA3Mp1xUx2unV1iDnsvqhm7Ey8HqjCTEBoXam5EUH1ICTF7c91A2SclY7Mw9J4gtlBUhsNJXN7Dnhn9MgX1zRuqoQUuwAP8HvbczeZlfyil6ajKBujoVlrDLph/5cZprPcTkpFzgtAomKnrXlYOx3wZ+IPeHrXp/p2tnMGsY7eIfxX4OexJ4UXX1zSkuwKqGxFNXUrUtcHiT7cW3PrPy/n5cRbmRkVreBpvMopYdqgrB2TayQD/xbGy+C0z1HoZsAb2wNbfBY5gd5lctyChoVxu8Dcg6ncialuVSr+liQ0ASDKKWpohOTkgwuFpDGnhd7jyavXeS05AfaEwL7/lAF0GrIY93+jr2JNw/at8n3K0N6sZZHUDabixDDfS60N4fbjK/MrQdIx0Qoh0ApGOQyYNmRQqa2Jl0igpEdhnjVZbkwkEHCC/Dyxsx80BbsStKzzYww2+7GhuI+u/bYVa9q9GaccuTYcGve9kPN93ihxbppE3FNBltQANexD2o8BnHa3tcMDdqnkaErs4PgP0A/8HHMOusJu3/c1V1gC5DnuL5QjwSWCn4xbKHIBz8+a1FUDDAc5ygkvCAfEs0Iu9HT56x9/+Zw3t3eGkso0O2I3Ocy3Y91jSsA8UBLHvlzSDvS8+jb3tPdXbo2769sz/A7NH3dVDFGKGAAAAAElFTkSuQmCC") center / contain no-repeat;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
          user-select: none;
  /* Deliberately no transition here: rocket.js rewrites transform every
     frame while an egg is in flight, and a transition would smear it
     into mush. The pop transition is switched on inline, at pop time. */
}
/* Nudges the tap target out to ~36px without changing how big the egg
   looks — matters for the smallest eggs on a phone. Padding would scale
   the background image, so use an invisible overlay instead. */
.egg::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 36px;
  height: 36px;
  margin: -18px 0 0 -18px;
}
/* The shrink itself is applied by rocket.js, which rewrites the full
   transform — a `transform: scale()` here would wipe out the egg's
   position and pop it in the top-left corner instead. */
.egg.is-popped {
  opacity: 0;
  pointer-events: none;
}

/* ---- SMALL SCREENS -------------------------------------- */
@media (max-width: 30rem) {
  .wrap { padding: 2rem 1rem 4rem; }
  h1 { font-size: 1.5rem; }
}
