/* A tactile playground on top of the shared paper system. Existing engines own
   the physics; these motions only respond to hover, focus and a button press. */
.bar nav a{font-size:13px;font-weight:650}
.bar nav a[href='/squish/']{border-radius:2px;box-shadow:2px 2px 0 var(--text);transition:transform .2s,box-shadow .2s}
.bar nav a[href='/squish/']:hover{background:var(--sharing-surface);transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--text)}
.bar nav a[href='/squish/']:active{transform:translate(2px,2px);box-shadow:none}
.brand::before{transition:transform .6s var(--spring-gelatin)}
.brand:hover::before{transform:scale(.8,1.15) rotate(-15deg)}

.home-page #pick-a-blob{padding-top:48px;padding-bottom:32px}
.play-intro{position:relative;display:flex;align-items:center;justify-content:space-between;margin-bottom:40px}
.home-tagline{font-size:18px;line-height:1.6;margin:-16px 0 32px;max-width:65ch}
.play-intro h1{font-size:clamp(52px,6.8vw,96px);line-height:1.1;letter-spacing:var(--heading-tracking);margin:0;max-width:none}
.play-intro h1 span{display:inline-block;position:relative;isolation:isolate;white-space:nowrap}
.play-intro h1 span::before{content:"";position:absolute;left:-2%;right:-3%;bottom:.05em;height:.22em;
  background:var(--cyan);transform:rotate(-2deg);z-index:-1}
.poke-sketch{width:112px;height:88px;flex:none;margin:12px 22px 0 30px;fill:none;stroke:var(--text);stroke-width:2.2;stroke-linecap:round}
.poke-sketch .sketch-ticks{stroke:var(--magenta);stroke-width:3}
.toy-grid{display:block}
.toy-label,.toy-heading{font-size:19px;font-weight:750;line-height:1.3;letter-spacing:var(--heading-tracking);margin:0;display:block}

.home-page .daily-toy{position:relative;display:block;padding:22px 24px 18px;margin:0;background:var(--paper);
  border:1.5px solid var(--text);border-radius:4px;box-shadow:5px 5px 0 #dce0d4;overflow:visible;scroll-margin-top:24px}
.daily-toy>.toy-heading{margin:0 0 20px;font-size:22px;display:flex;align-items:center;gap:10px}
.daily-toy>.toy-heading::before{content:"";width:9px;height:9px;background:var(--cyan);border:1px solid var(--text);border-radius:50%}
.daily-launch{position:relative;display:block;color:var(--text);text-decoration:none;padding-bottom:27px;margin-bottom:9px}
.daily-preview{position:relative;aspect-ratio:16/8.6;background:#dde0d9;border:1px solid var(--text);border-radius:3px;overflow:hidden;
  transition:transform .6s var(--spring-gelatin)}
.daily-preview video{position:absolute;inset:0;display:none;width:100%;height:100%;object-fit:cover;transition:transform .65s var(--spring-gelatin)}
#daily:not([data-blob]) [data-preview-blob='jelly'],
#daily[data-blob='jelly'] [data-preview-blob='jelly'],
#daily[data-blob='elastic-ball'] [data-preview-blob='elastic-ball'],
#daily[data-blob='layered-and-flowing'] [data-preview-blob='layered-and-flowing'],
#daily[data-blob='bright-and-shifting'] [data-preview-blob='bright-and-shifting']{display:block}
.specimen-marks{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#171b1a;stroke-width:1;opacity:.42;pointer-events:none}
.poke-button{position:absolute;right:18px;bottom:0;display:flex;align-items:center;gap:38px;padding:14px 20px;
  background:var(--cyan);color:var(--text);border:1.5px solid var(--text);box-shadow:3px 3px 0 var(--text);border-radius:3px;
  font-size:18px;font-weight:750;line-height:1.2;letter-spacing:var(--heading-tracking);transform:rotate(-3deg);
  transition:transform .55s var(--spring-gelatin),box-shadow .2s}
.poke-button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2}
.daily-launch:hover .daily-preview video,.daily-launch:focus-visible .daily-preview video{transform:scale(1.035,.97)}
.daily-launch:hover .poke-button,.daily-launch:focus-visible .poke-button{transform:rotate(0) translate(-2px,-2px);box-shadow:5px 5px 0 var(--text)}
.daily-launch:active .poke-button{transform:translate(3px,3px);box-shadow:none}
.daily-toy .daily-main{padding-top:6px}
.daily-toy .daily-name{font-size:clamp(23px,2.15vw,30px);font-weight:700;line-height:1.25;letter-spacing:var(--heading-tracking);min-height:1.25em;margin:0 0 10px}
.daily-toy .daily-challenge{font-size:15px;line-height:1.65;min-height:3.3em;margin:0 0 20px}
.daily-toy .daily-side{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:0 24px;
  border:0;border-top:1px solid var(--rule);padding:16px 0 0;align-items:start}
.daily-toy .daily-label{font:500 12px/1.5 var(--font-mono);letter-spacing:.015em;text-transform:uppercase;color:var(--text-soft);margin:0 0 6px}
.daily-toy .daily-clock{font:500 24px/1.2 var(--font-mono);letter-spacing:-.055em;margin:0}
.daily-toy .daily-count{font:600 24px/1.2 var(--font-mono);letter-spacing:-.055em;margin:0!important}
.daily-toy .daily-shared-label{margin-top:0}
.daily-toy .daily-day{grid-column:1/-1;font-size:12px;color:var(--text-soft);max-width:none;margin:12px 0 0!important;line-height:1.5}

.squish-toy{position:relative;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:0 32px;min-width:0;
  padding:24px 36px;margin:0 0 30px;background:var(--sharing-surface);color:var(--text);border:1.5px solid var(--text);border-radius:4px;text-decoration:none;
  box-shadow:5px 5px 0 #e7c6d1;overflow:hidden}
.squish-copy{position:relative;z-index:1}
.squish-title{position:relative;display:block;width:fit-content;margin:0;padding-right:58px;font-size:clamp(42px,4.7vw,64px);line-height:1.05;
  font-weight:750;letter-spacing:var(--heading-tracking)}
.squish-line{margin:14px 0 0;font-size:18px;line-height:1.5;max-width:34ch}
.postcard-scene{position:relative;display:block;justify-self:end;width:min(100%,360px);height:240px}
.postcard-back,.squish-postcard{position:absolute;top:10%;left:5%;width:88%;aspect-ratio:1.5;border:1px solid var(--text);border-radius:2px}
.postcard-back{background:var(--cyan);transform:rotate(8deg) translate(3px,14px);transition:transform .65s var(--spring-gelatin)}
.squish-postcard{background:var(--paper);transform:rotate(-10deg);box-shadow:3px 4px 0 #171b1a;
  transition:transform .65s var(--spring-gelatin);overflow:hidden}
.squish-postcard img{position:absolute;left:4%;top:25%;width:49%;height:65%;object-fit:cover;object-position:50% 38%;mix-blend-mode:multiply}
.postcard-stamp{position:absolute;top:9%;right:7%;width:18%;aspect-ratio:1;border:1px dashed var(--magenta-text);background:#ffe6ed;display:grid;place-items:center}
.postcard-stamp svg{width:75%;height:75%;fill:var(--magenta);stroke:var(--text);stroke-width:1}
.postcard-address{position:absolute;top:52%;right:7%;width:33%;border-left:1px solid var(--rule);padding-left:10px}
.postcard-address i{display:block;height:12px;border-bottom:1px solid var(--rule)}
.postcard-wobble{position:absolute;top:10%;left:8%;width:37%;height:24%;fill:none;stroke:var(--text);stroke-width:1.4}
.postcard-flight{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--text);stroke-width:1.2;stroke-dasharray:3 5;pointer-events:none}
.postcard-flight .flight-arrow{stroke-dasharray:none;stroke-width:2}
.squish-title svg{position:absolute;right:0;bottom:1px;width:44px;height:44px;fill:none;stroke:var(--text);stroke-width:2.3;
  transition:transform .6s var(--spring-gelatin)}
.squish-toy:hover .squish-postcard,.squish-toy:focus-visible .squish-postcard{transform:rotate(-3deg) translateY(-8px)}
.squish-toy:hover .postcard-back,.squish-toy:focus-visible .postcard-back{transform:rotate(12deg) translate(7px,20px)}
.squish-toy:hover .squish-title svg,.squish-toy:focus-visible .squish-title svg{transform:translate(4px,-4px)}
.squish-toy:active .squish-postcard{transform:rotate(-6deg) scale(.95,1.02)}

/* Pick a blob: four linked thumbnails under Today's blob. */
.pick-row{margin-top:40px;padding:0}
.pick-row h2{font-size:22px;font-weight:750;line-height:1.3;letter-spacing:var(--heading-tracking);margin:0 0 16px}
.pick-row ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.pick-row a{display:block;color:var(--text);text-decoration:none}
.pick-row img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;background:#dde0d9;border:1px solid var(--text);border-radius:3px;
  transition:transform .55s var(--spring-gelatin),box-shadow .2s}
.pick-row img[src^='/experiments/']{background:#0d0d0d}
.pick-row a:hover img,.pick-row a:focus-visible img{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--text)}
.pick-row span{display:block;margin-top:10px;font-size:15px;font-weight:650;line-height:1.3;letter-spacing:var(--heading-tracking)}
/* The newest blob wears a sticker: the blue blob holding a NEW! card. It floats over the thumbnail's corner (absolute, so nothing moves). */
.pick-row .pick-new{position:relative}
.pick-row .new-badge{position:absolute;z-index:2;top:-18px;right:-8px;width:clamp(92px,26%,132px);height:auto;overflow:visible;pointer-events:none;
  transform:rotate(3deg);transform-origin:50% 90%}
@media(prefers-reduced-motion:no-preference){
  .pick-row .new-badge{animation:new-bob 3.4s ease-in-out infinite}
}
@keyframes new-bob{0%,100%{transform:rotate(3deg) translateY(0)}50%{transform:rotate(-2deg) translateY(-5px)}}
.home-page .foot>div:first-child{flex-wrap:wrap}
.home-page .foot-line{flex:0 0 100%;margin:0;padding:0 0 8px;font-size:13px;line-height:1.5;color:var(--text-soft)}
@media(min-width:1001px){
  .home-page .daily-toy{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-template-rows:auto auto 1fr;gap:0 36px}
  .daily-toy>.toy-heading{grid-column:1/-1}
  .daily-toy>.daily-launch{grid-column:1;grid-row:2/4;margin-bottom:0}
  .daily-toy>.daily-main{grid-column:2;grid-row:2}
  .daily-toy>.daily-side{grid-column:2;grid-row:3;align-self:end}
}
.science-door{display:flex;align-items:center;gap:28px;padding:26px 4px 16px;margin-top:40px;border-top:1px solid var(--text);text-decoration:none}
.science-door>span{font-size:31px;font-weight:700;letter-spacing:var(--heading-tracking)}
.science-sketch{width:135px;height:50px;fill:none;stroke:var(--text);stroke-width:1.6;flex:none}
.science-sketch .sketch-axis{stroke:var(--rule);stroke-width:1}
.science-sketch circle{fill:var(--cyan);stroke:var(--text)}
.door-arrow{width:36px;height:36px;margin-left:auto;fill:none;stroke:var(--text);stroke-width:1.8;transition:transform .55s var(--spring-gelatin)}
.science-door:hover .door-arrow{transform:translateX(8px)}
.home-page .foot{margin-top:18px}

/* Experiments and the original reading live together in the science notebook. */
.science-hub .science-intro{padding-bottom:44px}
.science-hub .science-intro .measure{max-width:57rem}
.science-hub .science-intro h1{max-width:12ch}
.science-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:60px}
.science-reading-notes{padding-top:32px}
.science-reading-notes h2{margin:0 0 18px;font-size:26px}
.science-reading-notes p{font-size:15px;line-height:1.75}
.science-hub .catalogue-title{font:600 23px/1.3 var(--font-sans);letter-spacing:var(--heading-tracking);text-transform:none;color:var(--text);margin-bottom:20px}
.science-hub .experiment-index{padding-top:36px}
.science-hub .secondary-intro{border:0;margin:0;padding:0}
.science-hub .secondary-intro .lead{font-size:18px;max-width:65ch}
.science-hub .experiment-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:36px}
.science-hub .experiment-cards .card{transition:transform .5s var(--spring-agar)}
.science-hub .experiment-cards .card[hidden]{display:none}
.science-hub .experiment-cards .card:hover{transform:translateY(-4px)}
.science-hub .experiment-cards .card:hover video{box-shadow:4px 4px 0 var(--text)}
.science-hub .experiment-cards video{transition:box-shadow .25s,border-color .25s}
.science-hub .physics-section>.wrap{display:grid;grid-template-columns:1.1fr 1fr;gap:0 64px;align-items:start}
.science-hub .physics-section .btn{justify-self:start}
.science-hub .reading-intro>.wrap,.science-hub .closing-section>.wrap{max-width:1280px;display:grid;
  grid-template-columns:.7fr 1fr;column-gap:100px}
.science-hub .bento{margin-top:36px}
.science-hub .bento .card{position:relative;padding-right:46px}
.science-read-arrow{position:absolute;right:20px;top:30px;width:23px;height:23px;fill:none;stroke:var(--text);stroke-width:1.5;transition:transform .4s var(--spring-agar)}
.science-hub .bento .card:hover .science-read-arrow{transform:translate(3px,-3px)}
.foot{border-top:1.5px solid var(--text)}
.foot::after{border-radius:2px;transform:rotate(-8deg);box-shadow:3px 3px 0 var(--text)}
.foot a[aria-current]{color:var(--text);text-decoration-color:var(--text)}

@media(min-width:1600px){.home-page .wrap{max-width:1440px}.play-intro h1{font-size:104px}}
@media(max-width:1000px){
  .home-page .daily-toy{padding:20px}
  .play-intro h1{font-size:clamp(46px,6.8vw,76px)}
  .poke-sketch{width:78px;margin-right:0;margin-left:16px}
  .daily-toy .daily-side{column-gap:18px}
  .daily-toy .daily-name{min-height:2.5em}
  .squish-toy{padding:22px 24px;gap:0 20px}
  .squish-title{font-size:48px;padding-right:44px}
  .squish-title svg{width:32px;height:32px}
  .squish-line{font-size:16px}
  .postcard-scene{height:215px}
  .science-hub .reading-intro>.wrap,.science-hub .closing-section>.wrap{column-gap:48px}
}
@media(max-width:720px){
  .bar{padding:12px 18px;gap:6px}
  .bar nav a{font-size:13px;padding:0 3px}
  .bar nav{justify-content:space-between}
  .bar nav a[href='/squish/']{padding:0 8px}
  .home-page #pick-a-blob{padding-top:30px}
  .play-intro{margin-bottom:28px;align-items:flex-end}
  .home-tagline{font-size:16px;margin:-12px 0 28px}
  .play-intro h1{font-size:clamp(40px,10.5vw,64px);max-width:none;line-height:1.1}
  .play-intro h1 span{display:block;width:fit-content}
  .poke-sketch{position:absolute;right:4px;bottom:0;width:64px;height:70px;margin:0}
  .home-page .daily-toy{padding:18px 18px 16px}
  .toy-label,.toy-heading{font-size:18px}
  .daily-toy>.toy-heading{margin-bottom:16px;font-size:20px}
  .daily-preview{aspect-ratio:16/10}
  .poke-button{padding:12px 17px;gap:28px;right:12px;font-size:17px}
  .daily-toy .daily-name{font-size:24px;line-height:1.25;min-height:2.5em}
  .daily-toy .daily-challenge{font-size:14px;min-height:4.95em;margin-bottom:16px}
  .daily-toy .daily-side{grid-template-columns:.8fr 1.2fr;column-gap:16px;padding-top:14px}
  .daily-toy .daily-clock,.daily-toy .daily-count{font-size:21px}
  .squish-toy{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:0 10px;padding:18px 18px 18px 20px;margin-bottom:24px}
  .squish-title{font-size:clamp(34px,10.2vw,40px);padding-right:0}
  .squish-title svg{display:none}
  .squish-line{font-size:14px;margin-top:10px}
  .postcard-scene{height:170px;margin:0 -8px 0 0}
  .postcard-back,.squish-postcard{top:12%;left:0;width:96%}
  .pick-row{margin-top:32px}
  .pick-row ul{grid-template-columns:1fr;gap:24px}
  .science-door{margin-top:32px;gap:16px;padding-top:20px}
  .science-door>span{font-size:28px}
  .science-sketch{width:92px;height:44px}
  .door-arrow{width:28px;height:28px}
  .science-hub .experiment-cards{grid-template-columns:1fr;gap:24px}
  .science-hub .physics-section>.wrap,.science-hub .reading-intro>.wrap,.science-hub .closing-section>.wrap{display:block}
  .science-hub .science-intro{padding-bottom:36px}
  .science-hub .science-intro h1{font-size:clamp(40px,10.5vw,64px)}
  .science-overview{display:block}
  .science-reading-notes{padding-top:10px}
  .science-hub .bento .card{padding-right:38px}
  .science-read-arrow{right:4px;top:28px}
  .foot>div:first-child{gap:8px 22px;flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){
  .brand:hover::before,.bar nav a[href='/squish/']:hover,.bar nav a[href='/squish/']:active,
  .daily-launch:hover .daily-preview video,.daily-launch:focus-visible .daily-preview video,
  .daily-launch:hover .poke-button,.daily-launch:focus-visible .poke-button,.daily-launch:active .poke-button,
  .squish-toy:hover .squish-postcard,.squish-toy:focus-visible .squish-postcard,
  .squish-toy:hover .postcard-back,.squish-toy:focus-visible .postcard-back,.squish-toy:active .squish-postcard,
  .squish-toy:hover .squish-title svg,.squish-toy:focus-visible .squish-title svg,
  .science-door:hover .door-arrow,.science-hub .experiment-cards .card:hover,
  .science-hub .bento .card:hover .science-read-arrow{transform:none}
  .daily-preview video,.poke-button,.squish-postcard,.postcard-back,.squish-title svg,
  .door-arrow,.brand::before,.bar nav a,.science-hub .experiment-cards .card{transition:none}
}

/* Little physical jokes. Individual translate/rotate/scale compose with the
   existing component transforms, so a tilted postcard keeps its resting pose.
   Motion changes no layout, runs on demand, and never moves a canvas or slider. */
.foot{padding-top:22px;padding-bottom:22px;gap:0}
.foot>div:first-child{padding-right:42px}
.foot::after{top:30px}
@media(max-width:720px){
  .foot{padding-top:18px;padding-bottom:18px;gap:0}
  .foot::after{top:29px}
  .foot>div:first-child{padding-right:26px}
}

@keyframes lab-peck{
  0%,100%{translate:0;rotate:0deg;scale:1}
  22%{translate:0 -3px;rotate:-2deg;scale:1.03 .96}
  48%{translate:0 1px;rotate:1.5deg;scale:.985 1.025}
  72%{translate:0 -1px;rotate:-.7deg;scale:1.01 .99}
}
@keyframes lab-heading{
  0%,100%{translate:0;rotate:0deg;scale:1}
  20%{translate:0 -3px;rotate:-1deg;scale:1.025 .945}
  45%{translate:0 2px;rotate:.65deg;scale:.99 1.04}
  68%{translate:0 -1px;rotate:-.35deg;scale:1.01 .98}
}
@keyframes lab-gel{
  0%,100%{scale:1;rotate:0deg}
  18%{scale:1.065 .915;rotate:-1.5deg}
  40%{scale:.96 1.055;rotate:1.1deg}
  62%{scale:1.03 .98;rotate:-.55deg}
  82%{scale:.99 1.015;rotate:.2deg}
}
@keyframes lab-paper{
  0%,100%{translate:0;rotate:0deg}
  18%{translate:0 -4px;rotate:-.65deg}
  40%{translate:0 -2px;rotate:.45deg}
  64%{translate:0 -3px;rotate:-.25deg}
  82%{translate:0 -2px;rotate:.1deg}
}
@keyframes lab-nod{
  0%,100%{translate:0;rotate:0deg}
  25%{translate:2px -1px;rotate:.3deg}
  50%{translate:-1px 1px;rotate:-.2deg}
  75%{translate:1px 0;rotate:.1deg}
}
@keyframes lab-boing{
  0%,100%{translate:0;scale:1;rotate:0deg}
  16%{translate:0 2px;scale:1.16 .83;rotate:-7deg}
  37%{translate:0 -7px;scale:.92 1.09;rotate:6deg}
  58%{translate:0 1px;scale:1.06 .95;rotate:-3deg}
  80%{translate:0 -2px;scale:.98 1.02;rotate:1deg}
}
@keyframes lab-flap{
  0%,100%{rotate:0deg;translate:0}
  24%{rotate:4deg;translate:2px -5px}
  48%{rotate:-3deg;translate:-2px -2px}
  72%{rotate:1.5deg;translate:1px -3px}
}
@keyframes lab-heart{
  0%,60%,100%{scale:1;rotate:0deg}
  18%{scale:1.16 1.08;rotate:-7deg}
  34%{scale:.97 1.03;rotate:5deg}
  46%{scale:1.07;rotate:-2deg}
}
@keyframes lab-scribble{to{stroke-dashoffset:-48}}

@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  /* Navigation and small controls keep their generous, stable click areas. */
  .brand:hover{animation:lab-peck .62s ease-out}
  .brand:hover::before{animation:lab-boing .8s ease-out}
  .bar nav a:hover,.foot a:hover,.btn:hover,button:hover{animation:lab-peck .55s ease-out}
  .bar nav a:nth-child(2):hover,.foot a:nth-child(even):hover{animation-direction:reverse}
  .foot:hover::after{animation:lab-boing .85s ease-out}
  .field:hover label,.field:hover .row,.squish-field:hover label{animation:lab-nod .65s ease-out}

  /* Big type becomes briefly soft; smaller text gives a tiny sideways nod. */
  main h1:hover,main h2:hover{animation:lab-heading .78s ease-out;transform-origin:15% 80%}
  main h3:hover,main p:hover,main li:not(:has(.card)):hover,
  main figcaption:hover,main th:hover,main td:hover{animation:lab-nod .68s ease-out;transform-origin:left center}
  main p a:hover,main li a:not(.card):hover{text-decoration-style:wavy;text-underline-offset:5px}
  .play-intro:hover h1 span{animation:lab-gel .85s ease-out;transform-origin:50% 85%}
  .play-intro:hover .poke-sketch{animation:lab-flap .85s ease-out;transform-origin:70% 50%}
  .play-intro:hover h1 span::before{animation:lab-gel .85s .07s ease-out}
  .kicker:hover,.toy-label:hover,.tag:hover{animation:lab-peck .6s ease-out}

  /* Today's specimen, marks and counters each react in their own way. */
  .daily-toy:hover{animation:lab-paper .75s ease-out;transform-origin:50% 75%}
  .daily-toy:hover>.toy-heading::before{animation:lab-boing .85s .08s ease-out}
  .daily-launch:hover .daily-preview video{animation:lab-gel .9s ease-out}
  .daily-launch:hover .specimen-marks{animation:lab-nod .7s .08s ease-out}
  .daily-launch:hover .poke-button{animation:lab-peck .75s .1s ease-out}
  .daily-toy .daily-main:hover .daily-name{animation:lab-heading .8s ease-out}
  .daily-toy .daily-main:hover p{animation:lab-nod .7s .08s ease-out}
  .daily-side:hover .daily-clock,.daily-side:hover .daily-count{animation:lab-boing .8s ease-out}
  .daily-side:hover .daily-count{animation-delay:.1s}

  /* The postcard fidgets, its stamp beats and its little address lines wave. */
  .squish-toy:hover{animation:lab-paper .75s ease-out;transform-origin:50% 75%}
  .squish-toy:hover .squish-title{animation:lab-heading .8s ease-out}
  .squish-toy:hover .squish-postcard{animation:lab-flap .95s ease-out;transform-origin:50% 80%}
  .squish-toy:hover .postcard-back{animation:lab-flap .95s .1s ease-out;animation-direction:reverse}
  .squish-toy:hover .squish-postcard img{animation:lab-gel .95s .12s ease-out}
  .squish-toy:hover .postcard-stamp svg{animation:lab-heart 1.2s .15s ease-in-out infinite;transform-origin:50% 55%}
  .squish-toy:hover .postcard-address i{animation:lab-nod .8s ease-out}
  .squish-toy:hover .postcard-address i:nth-child(2){animation-delay:.08s}
  .squish-toy:hover .postcard-address i:nth-child(3){animation-delay:.16s}
  .squish-toy:hover .postcard-wobble{animation:lab-nod .85s .1s ease-out}
  .squish-toy:hover .postcard-flight path:first-child{animation:lab-scribble 2.4s linear infinite}

  /* Science opens like a lively notebook, with hopping plots and wonky cards. */
  .science-door:hover{animation:lab-paper .75s ease-out;transform-origin:left center}
  .science-door:hover>span{animation:lab-heading .8s ease-out}
  .science-door:hover .science-sketch{animation:lab-flap .8s ease-out}
  .science-door:hover .science-sketch circle{animation:lab-boing .8s .1s ease-out;transform-box:fill-box;transform-origin:center}
  .science-door:hover .door-arrow{animation:lab-peck .75s .08s ease-out}
  .card:not(.soon):hover{animation:lab-paper .8s ease-out;transform-origin:50% 75%}
  .card.soon{pointer-events:auto}
  .card.soon:hover{animation:lab-nod .7s ease-out}
  .card:nth-child(even):hover,.bento li:nth-child(even) .card:hover{animation-direction:reverse}
  .card:hover h3{animation:lab-heading .78s .06s ease-out}
  .card:hover p{animation:lab-nod .7s .1s ease-out}
  .card:hover .tag::before{animation:lab-boing .8s .12s ease-out}
  .experiment-cards .card:hover video{animation:lab-gel .9s .04s ease-out}
  .card:hover .science-read-arrow{animation:lab-peck .75s .08s ease-out}
  .inshort:hover,main blockquote:hover,main figure:hover{animation:lab-paper .8s ease-out}
  .specimen-notes img:hover{animation:lab-gel .85s ease-out}
  .not-found-page .kicker:hover{animation:lab-gel .9s ease-out}
}
