/* The research shelf shares Parlor's type and colours, with warm paper and editorial notes. */
.research-body{background:#f7f3e8}
.research-page{padding-bottom:50px}
.research-hero{display:grid;grid-template-columns:1fr 240px;gap:60px;align-items:center;padding:80px 0 64px}
.research-hero h1{font-size:clamp(64px,9vw,108px);line-height:.98;margin:24px 0 32px;letter-spacing:-5px}
.research-hero em{font-family:Georgia,serif;font-weight:400}
.research-dot{color:#b56840}
.research-lede{max-width:580px;color:#52604f}
.research-stamp{border:1px solid #acb49e;padding:28px;text-align:center;transform:rotate(5deg);font-size:23px;line-height:1.3;background:#e8eddc}
.research-stamp>span{display:block;font-size:62px;margin-bottom:18px}.research-stamp small{display:block;font-size:12px;margin-top:20px}
.research-shelf-label{display:flex;justify-content:space-between;gap:16px;border-block:1px solid #c9cebd;padding:17px 0;font-size:12px;letter-spacing:1px}
.research-shelf-label span+span{font-family:Georgia,serif;font-style:italic;letter-spacing:0;font-size:16px}
.research-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:30px 0 60px}
.research-card{display:flex;flex-direction:column;background:#fffdf7;border:1px solid #d5d7c9;padding:30px;text-decoration:none;box-shadow:0 4px 0 #e8e5d9}
.research-card h2{font-size:29px;line-height:1.2;letter-spacing:-1px;margin:30px 0 16px}.research-card p{color:#52604f}.research-card .small{margin-top:auto;padding-top:16px}.research-card-link{margin-top:28px;text-decoration:underline;text-underline-offset:5px}.research-card:hover{border-color:#7b8c69;background:#fff}
.research-editorial{max-width:760px;border-left:3px solid #b56840;padding:8px 0 8px 30px;margin-bottom:60px}.research-editorial h2{font-size:30px}
.research-back{display:inline-block;margin-top:38px;font-size:14px}.research-article{max-width:780px;margin:0 auto}.research-heading{padding:52px 0 26px}.research-heading h1{font-size:clamp(38px,5.3vw,62px);line-height:1.08;margin:24px 0}.research-heading .intro{max-width:720px}.research-meta{font-size:13px;line-height:1.8;color:#566357;margin-top:28px}
.research-toc{flex-wrap:wrap;gap:14px 26px;padding:18px 0;border-block:1px solid #c9cebd;font-size:14px}.research-toc a{text-decoration:underline}
.research-article section{padding:34px 0;scroll-margin-top:24px}.research-article h2{font-size:30px;line-height:1.2;letter-spacing:-.8px}.research-article p,.research-article li{font-size:18px;line-height:1.8}.research-article .small{font-size:13px}.research-note{padding:26px 30px;background:#ebe9da;border-left:3px solid #a97d50;margin:8px 0 10px}.research-note p{margin-bottom:0}.research-article .research-exercise{padding:30px;background:#e8eddc;border:1px solid #c9d1ba}.research-exercise ol{padding-left:24px}.research-exercise li+li{margin-top:12px}.research-source{margin-top:24px;overflow-wrap:anywhere}.research-source p{font-size:15px}.research-article+.guide-related{margin-top:40px}.research-article+.guide-related h2{font-size:28px;margin:0 0 10px}
@media(max-width:900px){.research-grid{grid-template-columns:1fr}.research-card h2{margin-top:20px}.research-hero{grid-template-columns:1fr 180px;gap:30px}.research-stamp{padding:22px;font-size:19px}}
@media(max-width:600px){.research-body .topbar{flex-wrap:wrap;gap:20px}.research-body .topbar nav{flex-wrap:wrap;gap:20px}.research-hero{grid-template-columns:1fr;padding:46px 0 36px;gap:28px}.research-hero h1{letter-spacing:-3px}.research-stamp{justify-self:start;transform:rotate(-3deg);font-size:17px;padding:18px 26px}.research-stamp>span{font-size:30px;margin-bottom:10px}.research-stamp small{margin-top:10px}.research-shelf-label{flex-direction:column;gap:4px}.research-card{padding:25px}.research-heading{padding-top:30px}.research-article h2{font-size:27px}.research-note,.research-article .research-exercise{padding:22px}.research-editorial{padding-left:20px}.research-body footer{flex-direction:column}.research-body footer nav{flex-wrap:wrap}}

/* Bert is decorative, stays within his own lane, and never covers article links.
   The checkbox pauses every moving part; reduced motion removes all animation. */
.bert-scene{grid-column:1/-1;margin:0;position:relative;min-width:0}
.bert-track{height:184px;position:relative;overflow:hidden;border-bottom:1px solid #c9cebd}
.bert-traveller{position:absolute;width:190px;left:0;bottom:0;animation:bert-travel 24s linear infinite}
.bert-facing{animation:bert-turn 24s steps(1,end) infinite}
.bert{display:block;width:100%;height:auto;overflow:visible}
.bert-reader{transform-origin:105px 125px;animation:bert-bob 24s linear infinite}
.bert-leg{transform-box:fill-box;transform-origin:50% 0;animation:bert-step 24s linear infinite}
.bert-leg-b{animation-name:bert-step-back}
.bert-head{transform-origin:125px 80px;animation:bert-think 24s ease-in-out infinite}
.bert-book{transform-origin:150px 115px;animation:bert-book-tilt 24s ease-in-out infinite}
.bert-puzzle{opacity:0;animation:bert-question 24s ease-in-out infinite}
.bert-scene figcaption{font-size:13px;color:#52604f;padding-top:15px;max-width:560px}
.bert-control{position:absolute;right:0;top:0;z-index:1;font-size:12px;cursor:pointer;text-decoration:underline;text-underline-offset:4px;padding:8px 0 8px 24px}
.bert-pause{position:absolute;right:70px;top:10px;z-index:2;accent-color:#344b36;width:14px;height:14px}
.bert-pause:focus-visible+label{outline:2px solid #344b36;outline-offset:4px}
.bert-pause:checked~.bert-track *{animation-play-state:paused!important}

/* One shared 24-second timeline: walk, read, puzzle, stomp, aha, hop, return. */
.bert{animation:bert-hop 24s ease-in-out infinite}
.bert-eyes,.bert-mouth{animation:bert-neutral 24s linear infinite}
.bert-angry,.bert-happy,.bert-steam,.bert-aha,.bert-sparkles{opacity:0}
.bert-angry{animation:bert-frustration 24s linear infinite}
.bert-steam{animation:bert-frustration 24s linear infinite}
.bert-happy{animation:bert-joy 24s linear infinite}
.bert-aha{animation:bert-lightbulb 24s ease-in-out infinite;transform-origin:180px 26px}
.bert-sparkles{animation:bert-joy 24s linear infinite}
@keyframes bert-travel{0%,4%{left:0}22%,74%{left:calc(100% - 225px)}96%,100%{left:0}}
@keyframes bert-turn{0%,73%{transform:scaleX(1)}74%,97%{transform:scaleX(-1)}98%,100%{transform:scaleX(1)}}
@keyframes bert-think{0%,23%,55%,74%,100%{transform:translate(0,0) rotate(0)}28%,32%{transform:rotate(-15deg)}36%,40%{transform:rotate(12deg)}44%,48%,52%{transform:rotate(-7deg)}46%,50%{transform:rotate(7deg)}61%,70%{transform:translate(7px,7px) rotate(10deg)}}
@keyframes bert-book-tilt{0%,23%,55%,74%,100%{transform:translate(0,0) rotate(0) scale(1)}29%,33%{transform:rotate(-25deg)}37%,41%{transform:rotate(18deg)}44%,48%,52%{transform:rotate(-12deg)}46%,50%{transform:rotate(12deg)}60%,71%{transform:translate(-75px,40px) rotate(5deg) scale(.8,.3)}}
@keyframes bert-question{0%,25%,43%,100%{opacity:0}28%,40%{opacity:1}}
@keyframes bert-frustration{0%,42%,55%,100%{opacity:0}44%,52%{opacity:1}}
@keyframes bert-neutral{0%,42%,55%,56%,75%,100%{opacity:1}44%,52%,58%,73%{opacity:0}}
@keyframes bert-joy{0%,56%,75%,100%{opacity:0}58%,73%{opacity:1}}
@keyframes bert-lightbulb{0%,54%,73%,100%{opacity:0;transform:scale(.7)}58%,69%{opacity:1;transform:scale(1)}}
@keyframes bert-hop{0%,56%,60%,100%{transform:translateY(0)}58%{transform:translateY(-7px)}}
@keyframes bert-bob{0%,22%,42%,54%,100%{transform:translate(0,0)}44%,48%,52%{transform:translate(-3px,2px)}46%,50%{transform:translate(3px,-2px)}}
@keyframes bert-step{0%{transform:translate(0,0) rotate(0deg)}4%{transform:translate(8px,0) rotate(-18deg)}4.5%{transform:translate(0,1px) rotate(0deg)}5%{transform:translate(-8px,0) rotate(18deg)}5.5%{transform:translate(0,-5px) rotate(0deg)}6%{transform:translate(8px,0) rotate(-18deg)}6.5%{transform:translate(0,1px) rotate(0deg)}7%{transform:translate(-8px,0) rotate(18deg)}7.5%{transform:translate(0,-5px) rotate(0deg)}8%{transform:translate(8px,0) rotate(-18deg)}8.5%{transform:translate(0,1px) rotate(0deg)}9%{transform:translate(-8px,0) rotate(18deg)}9.5%{transform:translate(0,-5px) rotate(0deg)}10%{transform:translate(8px,0) rotate(-18deg)}10.5%{transform:translate(0,1px) rotate(0deg)}11%{transform:translate(-8px,0) rotate(18deg)}11.5%{transform:translate(0,-5px) rotate(0deg)}12%{transform:translate(8px,0) rotate(-18deg)}12.5%{transform:translate(0,1px) rotate(0deg)}13%{transform:translate(-8px,0) rotate(18deg)}13.5%{transform:translate(0,-5px) rotate(0deg)}14%{transform:translate(8px,0) rotate(-18deg)}14.5%{transform:translate(0,1px) rotate(0deg)}15%{transform:translate(-8px,0) rotate(18deg)}15.5%{transform:translate(0,-5px) rotate(0deg)}16%{transform:translate(8px,0) rotate(-18deg)}16.5%{transform:translate(0,1px) rotate(0deg)}17%{transform:translate(-8px,0) rotate(18deg)}17.5%{transform:translate(0,-5px) rotate(0deg)}18%{transform:translate(8px,0) rotate(-18deg)}18.5%{transform:translate(0,1px) rotate(0deg)}19%{transform:translate(-8px,0) rotate(18deg)}19.5%{transform:translate(0,-5px) rotate(0deg)}20%{transform:translate(8px,0) rotate(-18deg)}20.5%{transform:translate(0,1px) rotate(0deg)}21%{transform:translate(-8px,0) rotate(18deg)}21.5%{transform:translate(0,-5px) rotate(0deg)}22%{transform:translate(0,0) rotate(0deg)}74%{transform:translate(8px,0) rotate(-18deg)}74.5%{transform:translate(0,1px) rotate(0deg)}75%{transform:translate(-8px,0) rotate(18deg)}75.5%{transform:translate(0,-5px) rotate(0deg)}76%{transform:translate(8px,0) rotate(-18deg)}76.5%{transform:translate(0,1px) rotate(0deg)}77%{transform:translate(-8px,0) rotate(18deg)}77.5%{transform:translate(0,-5px) rotate(0deg)}78%{transform:translate(8px,0) rotate(-18deg)}78.5%{transform:translate(0,1px) rotate(0deg)}79%{transform:translate(-8px,0) rotate(18deg)}79.5%{transform:translate(0,-5px) rotate(0deg)}80%{transform:translate(8px,0) rotate(-18deg)}80.5%{transform:translate(0,1px) rotate(0deg)}81%{transform:translate(-8px,0) rotate(18deg)}81.5%{transform:translate(0,-5px) rotate(0deg)}82%{transform:translate(8px,0) rotate(-18deg)}82.5%{transform:translate(0,1px) rotate(0deg)}83%{transform:translate(-8px,0) rotate(18deg)}83.5%{transform:translate(0,-5px) rotate(0deg)}84%{transform:translate(8px,0) rotate(-18deg)}84.5%{transform:translate(0,1px) rotate(0deg)}85%{transform:translate(-8px,0) rotate(18deg)}85.5%{transform:translate(0,-5px) rotate(0deg)}86%{transform:translate(8px,0) rotate(-18deg)}86.5%{transform:translate(0,1px) rotate(0deg)}87%{transform:translate(-8px,0) rotate(18deg)}87.5%{transform:translate(0,-5px) rotate(0deg)}88%{transform:translate(8px,0) rotate(-18deg)}88.5%{transform:translate(0,1px) rotate(0deg)}89%{transform:translate(-8px,0) rotate(18deg)}89.5%{transform:translate(0,-5px) rotate(0deg)}90%{transform:translate(8px,0) rotate(-18deg)}90.5%{transform:translate(0,1px) rotate(0deg)}91%{transform:translate(-8px,0) rotate(18deg)}91.5%{transform:translate(0,-5px) rotate(0deg)}92%{transform:translate(8px,0) rotate(-18deg)}92.5%{transform:translate(0,1px) rotate(0deg)}93%{transform:translate(-8px,0) rotate(18deg)}93.5%{transform:translate(0,-5px) rotate(0deg)}94%{transform:translate(8px,0) rotate(-18deg)}94.5%{transform:translate(0,1px) rotate(0deg)}95%{transform:translate(-8px,0) rotate(18deg)}95.5%{transform:translate(0,-5px) rotate(0deg)}96%{transform:translate(0,0) rotate(0deg)}100%{transform:translate(0,0) rotate(0deg)}}
@keyframes bert-step-back{0%{transform:translate(0,0) rotate(0deg)}4%{transform:translate(-8px,0) rotate(18deg)}4.5%{transform:translate(0,-5px) rotate(0deg)}5%{transform:translate(8px,0) rotate(-18deg)}5.5%{transform:translate(0,1px) rotate(0deg)}6%{transform:translate(-8px,0) rotate(18deg)}6.5%{transform:translate(0,-5px) rotate(0deg)}7%{transform:translate(8px,0) rotate(-18deg)}7.5%{transform:translate(0,1px) rotate(0deg)}8%{transform:translate(-8px,0) rotate(18deg)}8.5%{transform:translate(0,-5px) rotate(0deg)}9%{transform:translate(8px,0) rotate(-18deg)}9.5%{transform:translate(0,1px) rotate(0deg)}10%{transform:translate(-8px,0) rotate(18deg)}10.5%{transform:translate(0,-5px) rotate(0deg)}11%{transform:translate(8px,0) rotate(-18deg)}11.5%{transform:translate(0,1px) rotate(0deg)}12%{transform:translate(-8px,0) rotate(18deg)}12.5%{transform:translate(0,-5px) rotate(0deg)}13%{transform:translate(8px,0) rotate(-18deg)}13.5%{transform:translate(0,1px) rotate(0deg)}14%{transform:translate(-8px,0) rotate(18deg)}14.5%{transform:translate(0,-5px) rotate(0deg)}15%{transform:translate(8px,0) rotate(-18deg)}15.5%{transform:translate(0,1px) rotate(0deg)}16%{transform:translate(-8px,0) rotate(18deg)}16.5%{transform:translate(0,-5px) rotate(0deg)}17%{transform:translate(8px,0) rotate(-18deg)}17.5%{transform:translate(0,1px) rotate(0deg)}18%{transform:translate(-8px,0) rotate(18deg)}18.5%{transform:translate(0,-5px) rotate(0deg)}19%{transform:translate(8px,0) rotate(-18deg)}19.5%{transform:translate(0,1px) rotate(0deg)}20%{transform:translate(-8px,0) rotate(18deg)}20.5%{transform:translate(0,-5px) rotate(0deg)}21%{transform:translate(8px,0) rotate(-18deg)}21.5%{transform:translate(0,1px) rotate(0deg)}22%{transform:translate(0,0) rotate(0deg)}74%{transform:translate(-8px,0) rotate(18deg)}74.5%{transform:translate(0,-5px) rotate(0deg)}75%{transform:translate(8px,0) rotate(-18deg)}75.5%{transform:translate(0,1px) rotate(0deg)}76%{transform:translate(-8px,0) rotate(18deg)}76.5%{transform:translate(0,-5px) rotate(0deg)}77%{transform:translate(8px,0) rotate(-18deg)}77.5%{transform:translate(0,1px) rotate(0deg)}78%{transform:translate(-8px,0) rotate(18deg)}78.5%{transform:translate(0,-5px) rotate(0deg)}79%{transform:translate(8px,0) rotate(-18deg)}79.5%{transform:translate(0,1px) rotate(0deg)}80%{transform:translate(-8px,0) rotate(18deg)}80.5%{transform:translate(0,-5px) rotate(0deg)}81%{transform:translate(8px,0) rotate(-18deg)}81.5%{transform:translate(0,1px) rotate(0deg)}82%{transform:translate(-8px,0) rotate(18deg)}82.5%{transform:translate(0,-5px) rotate(0deg)}83%{transform:translate(8px,0) rotate(-18deg)}83.5%{transform:translate(0,1px) rotate(0deg)}84%{transform:translate(-8px,0) rotate(18deg)}84.5%{transform:translate(0,-5px) rotate(0deg)}85%{transform:translate(8px,0) rotate(-18deg)}85.5%{transform:translate(0,1px) rotate(0deg)}86%{transform:translate(-8px,0) rotate(18deg)}86.5%{transform:translate(0,-5px) rotate(0deg)}87%{transform:translate(8px,0) rotate(-18deg)}87.5%{transform:translate(0,1px) rotate(0deg)}88%{transform:translate(-8px,0) rotate(18deg)}88.5%{transform:translate(0,-5px) rotate(0deg)}89%{transform:translate(8px,0) rotate(-18deg)}89.5%{transform:translate(0,1px) rotate(0deg)}90%{transform:translate(-8px,0) rotate(18deg)}90.5%{transform:translate(0,-5px) rotate(0deg)}91%{transform:translate(8px,0) rotate(-18deg)}91.5%{transform:translate(0,1px) rotate(0deg)}92%{transform:translate(-8px,0) rotate(18deg)}92.5%{transform:translate(0,-5px) rotate(0deg)}93%{transform:translate(8px,0) rotate(-18deg)}93.5%{transform:translate(0,1px) rotate(0deg)}94%{transform:translate(-8px,0) rotate(18deg)}94.5%{transform:translate(0,-5px) rotate(0deg)}95%{transform:translate(8px,0) rotate(-18deg)}95.5%{transform:translate(0,1px) rotate(0deg)}96%{transform:translate(0,0) rotate(0deg)}100%{transform:translate(0,0) rotate(0deg)}}
@media(max-width:600px){.bert-traveller{width:150px}.bert-track{height:158px}@keyframes bert-travel{0%,4%{left:0}22%,74%{left:calc(100% - 186px)}96%,100%{left:0}}}
@media(prefers-reduced-motion:reduce){.bert-scene *{animation:none!important}.bert-control,.bert-pause{display:none}.bert-traveller{left:0}}

/* The room is scenery, never an obstacle or an interactive control. */
.bert-room{width:100%;height:auto;aspect-ratio:900/280;min-height:290px;border:1px solid #c9cebd;border-radius:12px;background:#eeeadc;isolation:isolate}
.bert-room-backdrop{position:absolute;inset:0;width:100%;height:100%;z-index:-1}
.bert-room .bert-traveller{bottom:2px}
.bert-scene .bert-control{top:10px;right:14px;background:#f7f3e8e8;border-radius:5px;padding:5px 8px 5px 25px}
.bert-scene .bert-pause{top:17px;right:89px}
@media(max-width:600px){.bert-room{height:245px;aspect-ratio:auto;min-height:0}.bert-room-backdrop{width:760px;max-width:none;left:auto;right:0;transform:none}}

/* A gentle 48-second outdoor cycle; the room remains comfortably lit. */
.bert-sky{animation:bert-sky-cycle 48s ease-in-out infinite}
.bert-day{animation:bert-day-cycle 48s ease-in-out infinite}
.bert-night{opacity:0;animation:bert-night-cycle 48s ease-in-out infinite}
.bert-cloud{animation:bert-cloud-drift 16s ease-in-out infinite alternate}
.bert-lamplight{opacity:.7;animation:bert-lamp-cycle 48s ease-in-out infinite}
.bert-coffee-steam{opacity:0;animation:bert-coffee-rise 4s ease-out infinite}
.bert-coffee-steam-two{animation-delay:-2s}
@keyframes bert-sky-cycle{0%,20%,100%{fill:#cbdfe0}36%,84%{fill:#d4b6a1}48%,72%{fill:#384e65}}
@keyframes bert-day-cycle{0%,20%,100%{opacity:1}44%,78%{opacity:0}}
@keyframes bert-night-cycle{0%,30%,92%,100%{opacity:0}48%,72%{opacity:1}}
@keyframes bert-cloud-drift{from{transform:translateX(-7px)}to{transform:translateX(9px)}}
@keyframes bert-lamp-cycle{0%,20%,100%{opacity:.7}48%,72%{opacity:1}}
@keyframes bert-coffee-rise{0%{opacity:0;transform:translate(0,5px)}25%{opacity:.6}100%{opacity:0;transform:translate(3px,-9px)}}
@media(max-width:600px){.bert-window{transform:translate(205px,-12px) scale(.85);transform-origin:400px 90px}.bert-floor-laptop{transform:translateX(80px)}}
@media(prefers-reduced-motion:reduce){.bert-coffee-steam{opacity:.4}.bert-coffee-steam-two{opacity:.25}}

/* The fly and hinged pane share Bert's 24-second aha timeline. Keeping them
   inside the window group preserves their alignment in the mobile room. */
.bert-window-sash{transform-origin:456px 100px;animation:bert-window-open 24s ease-in-out infinite}
.bert-fly{transform:translate(500px,130px);animation:bert-fly-escape 24s linear infinite}
.bert-fly-wings{transform-box:fill-box;transform-origin:center;animation:bert-wingbeat .12s ease-in-out infinite alternate}
.bert-fly-bump{opacity:0;animation:bert-window-bump 24s linear infinite}
@keyframes bert-window-open{0%,55%,93%,100%{transform:scaleX(1) skewY(0)}60%,80%{transform:scaleX(.16) skewY(-12deg)}}
@keyframes bert-fly-escape{
  0%{transform:translate(530px,132px);opacity:0}
  4%{transform:translate(507px,112px);opacity:1}
  10%{transform:translate(460px,128px)}
  15%{transform:translate(475px,67px)}
  21%{transform:translate(424px,92px)}
  22%{transform:translate(431px,99px) rotate(35deg)}
  27%{transform:translate(490px,119px)}
  33%{transform:translate(511px,73px)}
  40%{transform:translate(424px,92px)}
  41%{transform:translate(433px,103px) rotate(-30deg)}
  47%{transform:translate(478px,144px)}
  53%{transform:translate(498px,106px)}
  58%{transform:translate(467px,116px)}
  63%{transform:translate(433px,102px) scale(1);opacity:1}
  68%{transform:translate(422px,85px) scale(.55);opacity:1}
  73%{transform:translate(417px,68px) scale(.1);opacity:0}
  100%{transform:translate(417px,68px) scale(.1);opacity:0}
}
@keyframes bert-window-bump{0%,20%,23%,39%,42%,100%{opacity:0}21%,40%{opacity:.8}}
@keyframes bert-wingbeat{from{transform:scaleX(.5)}to{transform:scaleX(1.2)}}
@media(prefers-reduced-motion:reduce){.bert-fly{opacity:0}.bert-window-sash{transform:none}}

/* Lamp breathing stays subtle; the companion story follows Bert's aha at 58%. */
.bert-lamplight ellipse{animation:bert-glow-breathe 6s ease-in-out infinite}
@keyframes bert-glow-breathe{0%,100%{opacity:.65}50%{opacity:1}}
.bert-dog{--dog-approach:250px;--dog-nap:305px;--dog-hug:107px;position:absolute;bottom:0;left:5px;width:110px;pointer-events:none;animation:bert-dog-visit 24s linear infinite}
.bert-dog svg{display:block;width:100%;overflow:visible}
.bert-dog-facing{animation:bert-dog-turn 24s steps(1,end) infinite}
.bert-dog-awake{animation:bert-dog-awake 24s linear infinite}
.bert-dog-head{transform-origin:99px 65px;animation:bert-dog-head 24s ease-in-out infinite}
.bert-dog-tail{transform-origin:34px 76px;animation:bert-dog-wag .35s ease-in-out infinite alternate}
.bert-dog-asleep,.bert-dog-zzz,.bert-dog-sad-eye,.bert-dog-tongue,.bert-dog-heart{opacity:0}
.bert-dog-asleep,.bert-dog-zzz{animation:bert-dog-sleep 24s linear infinite}
.bert-dog-sad-eye{animation:bert-dog-sad 24s linear infinite}
.bert-dog-bright-eye{animation:bert-dog-eye 24s linear infinite}
.bert-dog-tongue{transform-origin:126px 60px;animation:bert-dog-lick 24s linear infinite}
.bert-dog-heart{animation:bert-dog-love 24s linear infinite}
@keyframes bert-dog-visit{0%,5%{left:5px;transform:translateY(0)}22%,28%{left:calc(100% - var(--dog-approach));transform:translateY(0)}36%,54%{left:calc(100% - var(--dog-nap));transform:translateY(0)}60%,72%{left:calc(100% - var(--dog-hug));transform:translateY(0)}74%{left:calc(100% - var(--dog-hug));transform:translateY(0)}96%,100%{left:5px;transform:translateY(0)}}
@keyframes bert-dog-turn{0%,29%{transform:scaleX(1)}30%,35%{transform:scaleX(-1)}36%,59%{transform:scaleX(1)}60%,98%{transform:scaleX(-1)}99%,100%{transform:scaleX(1)}}
@keyframes bert-dog-awake{0%,34%,57%,59.99%,72.01%,100%{opacity:1}36%,54%,60%,72%{opacity:0}}
@keyframes bert-dog-sleep{0%,34%,57%,100%{opacity:0}36%,54%{opacity:1}}
@keyframes bert-dog-sad{0%,25%,35%,100%{opacity:0}27%,33%{opacity:1}}
@keyframes bert-dog-eye{0%,25%,35%,100%{opacity:1}27%,33%{opacity:0}}
@keyframes bert-dog-head{0%,18%,36%,55%,100%{transform:rotate(0)}22%,25%{transform:rotate(-16deg)}29%,34%{transform:rotate(16deg)}59%,69%{transform:rotate(-23deg)}}
@keyframes bert-dog-wag{from{transform:rotate(-22deg)}to{transform:rotate(20deg)}}
@keyframes bert-dog-lick{0%,59%,70%,100%{opacity:0;transform:scale(.2)}61%,64%,67%{opacity:1;transform:scale(1)}62%,65%,68%{opacity:1;transform:scale(.35)}}
@keyframes bert-dog-love{0%,57%,76%,100%{opacity:0}60%,71%{opacity:1}}
@media(max-width:600px){.bert-dog{width:85px;--dog-approach:196px;--dog-nap:246px;--dog-hug:93px}}
@media(prefers-reduced-motion:reduce){.bert-dog{left:auto;right:20px}.bert-dog-awake{opacity:0}.bert-dog-asleep{opacity:1}}

.bert-dog-frontleg,.bert-dog-backleg{stroke-width:1.8;animation:parlor-front-near 24s linear infinite}
.bert-dog-backleg{animation-name:parlor-back-far}.bert-dog-farleg{animation-name:parlor-front-far}.bert-dog-nearleg{animation-name:parlor-back-near}

.bert-scene figcaption a{text-decoration:underline;text-underline-offset:3px}.bert-danny-note{max-width:580px;font-size:13px;margin-top:12px}.bert-danny-note summary{cursor:pointer;color:#536447}.bert-danny-note p{line-height:1.7;margin-bottom:0}#danny-story{scroll-margin-top:24px}

/* Reunion: Danny shares Bert's SVG coordinates, so cheek, tongue and arms stay aligned.
   The walking dog hands off at 60%; both settle before leaving at 74%. */
.bert-reunion{opacity:0;animation:bert-embrace 24s ease-in-out infinite;transform-origin:150px 140px}
.bert-hug-danny .bert-dog-head{animation:none}
.bert-hug-danny .bert-dog-frontleg,.bert-hug-danny .bert-dog-backleg{animation:none}
.bert-hug-danny .bert-dog-frontleg{transform-origin:94px 85px;transform:rotate(-25deg)}
.bert-hug-danny .bert-dog-tongue{animation:bert-cheek-lick 24s linear infinite}
@keyframes bert-embrace{0%,59.99%,72.01%,100%{opacity:0;transform:translateY(30px)}60%,72%{opacity:1;transform:translateY(30px)}63%,69%{opacity:1;transform:translateY(0)}70.5%{opacity:1;transform:translateY(30px)}}
@keyframes bert-cheek-lick{0%,63%,69%,100%{opacity:0;transform:scale(.2)}64%,66%,68%{opacity:1;transform:scale(.85)}65%,67%{opacity:1;transform:scale(.25)}}
@media(prefers-reduced-motion:reduce){.bert-reunion{opacity:0}}
.bert-facing>.bert{animation:bert-weight 24s ease-in-out infinite}
.bert-dog-awake{animation:bert-dog-awake 24s linear infinite, danny-weight 24s ease-in-out infinite}
@keyframes bert-weight{0%{transform:translateY(0px)}4%{transform:translateY(0px)}4.5%{transform:translateY(-1.5px)}5%{transform:translateY(0px)}5.5%{transform:translateY(-1.5px)}6%{transform:translateY(0px)}6.5%{transform:translateY(-1.5px)}7%{transform:translateY(0px)}7.5%{transform:translateY(-1.5px)}8%{transform:translateY(0px)}8.5%{transform:translateY(-1.5px)}9%{transform:translateY(0px)}9.5%{transform:translateY(-1.5px)}10%{transform:translateY(0px)}10.5%{transform:translateY(-1.5px)}11%{transform:translateY(0px)}11.5%{transform:translateY(-1.5px)}12%{transform:translateY(0px)}12.5%{transform:translateY(-1.5px)}13%{transform:translateY(0px)}13.5%{transform:translateY(-1.5px)}14%{transform:translateY(0px)}14.5%{transform:translateY(-1.5px)}15%{transform:translateY(0px)}15.5%{transform:translateY(-1.5px)}16%{transform:translateY(0px)}16.5%{transform:translateY(-1.5px)}17%{transform:translateY(0px)}17.5%{transform:translateY(-1.5px)}18%{transform:translateY(0px)}18.5%{transform:translateY(-1.5px)}19%{transform:translateY(0px)}19.5%{transform:translateY(-1.5px)}20%{transform:translateY(0px)}20.5%{transform:translateY(-1.5px)}21%{transform:translateY(0px)}21.5%{transform:translateY(-1.5px)}22%{transform:translateY(0px)}74%{transform:translateY(0px)}74.5%{transform:translateY(-1.5px)}75%{transform:translateY(0px)}75.5%{transform:translateY(-1.5px)}76%{transform:translateY(0px)}76.5%{transform:translateY(-1.5px)}77%{transform:translateY(0px)}77.5%{transform:translateY(-1.5px)}78%{transform:translateY(0px)}78.5%{transform:translateY(-1.5px)}79%{transform:translateY(0px)}79.5%{transform:translateY(-1.5px)}80%{transform:translateY(0px)}80.5%{transform:translateY(-1.5px)}81%{transform:translateY(0px)}81.5%{transform:translateY(-1.5px)}82%{transform:translateY(0px)}82.5%{transform:translateY(-1.5px)}83%{transform:translateY(0px)}83.5%{transform:translateY(-1.5px)}84%{transform:translateY(0px)}84.5%{transform:translateY(-1.5px)}85%{transform:translateY(0px)}85.5%{transform:translateY(-1.5px)}86%{transform:translateY(0px)}86.5%{transform:translateY(-1.5px)}87%{transform:translateY(0px)}87.5%{transform:translateY(-1.5px)}88%{transform:translateY(0px)}88.5%{transform:translateY(-1.5px)}89%{transform:translateY(0px)}89.5%{transform:translateY(-1.5px)}90%{transform:translateY(0px)}90.5%{transform:translateY(-1.5px)}91%{transform:translateY(0px)}91.5%{transform:translateY(-1.5px)}92%{transform:translateY(0px)}92.5%{transform:translateY(-1.5px)}93%{transform:translateY(0px)}93.5%{transform:translateY(-1.5px)}94%{transform:translateY(0px)}94.5%{transform:translateY(-1.5px)}95%{transform:translateY(0px)}95.5%{transform:translateY(-1.5px)}96%{transform:translateY(0px)}100%{transform:translateY(0px)}}
@keyframes danny-weight{0%{transform:translateY(0px)}5%{transform:translateY(0px)}5.25%{transform:translateY(-0.8px)}5.5%{transform:translateY(0px)}5.75%{transform:translateY(-0.8px)}6%{transform:translateY(0px)}6.25%{transform:translateY(-0.8px)}6.5%{transform:translateY(0px)}6.75%{transform:translateY(-0.8px)}7%{transform:translateY(0px)}7.25%{transform:translateY(-0.8px)}7.5%{transform:translateY(0px)}7.75%{transform:translateY(-0.8px)}8%{transform:translateY(0px)}8.25%{transform:translateY(-0.8px)}8.5%{transform:translateY(0px)}8.75%{transform:translateY(-0.8px)}9%{transform:translateY(0px)}9.25%{transform:translateY(-0.8px)}9.5%{transform:translateY(0px)}9.75%{transform:translateY(-0.8px)}10%{transform:translateY(0px)}10.25%{transform:translateY(-0.8px)}10.5%{transform:translateY(0px)}10.75%{transform:translateY(-0.8px)}11%{transform:translateY(0px)}11.25%{transform:translateY(-0.8px)}11.5%{transform:translateY(0px)}11.75%{transform:translateY(-0.8px)}12%{transform:translateY(0px)}12.25%{transform:translateY(-0.8px)}12.5%{transform:translateY(0px)}12.75%{transform:translateY(-0.8px)}13%{transform:translateY(0px)}13.25%{transform:translateY(-0.8px)}13.5%{transform:translateY(0px)}13.75%{transform:translateY(-0.8px)}14%{transform:translateY(0px)}14.25%{transform:translateY(-0.8px)}14.5%{transform:translateY(0px)}14.75%{transform:translateY(-0.8px)}15%{transform:translateY(0px)}15.25%{transform:translateY(-0.8px)}15.5%{transform:translateY(0px)}15.75%{transform:translateY(-0.8px)}16%{transform:translateY(0px)}16.25%{transform:translateY(-0.8px)}16.5%{transform:translateY(0px)}16.75%{transform:translateY(-0.8px)}17%{transform:translateY(0px)}17.25%{transform:translateY(-0.8px)}17.5%{transform:translateY(0px)}17.75%{transform:translateY(-0.8px)}18%{transform:translateY(0px)}18.25%{transform:translateY(-0.8px)}18.5%{transform:translateY(0px)}18.75%{transform:translateY(-0.8px)}19%{transform:translateY(0px)}19.25%{transform:translateY(-0.8px)}19.5%{transform:translateY(0px)}19.75%{transform:translateY(-0.8px)}20%{transform:translateY(0px)}20.25%{transform:translateY(-0.8px)}20.5%{transform:translateY(0px)}20.75%{transform:translateY(-0.8px)}21%{transform:translateY(0px)}21.25%{transform:translateY(-0.8px)}21.5%{transform:translateY(0px)}21.75%{transform:translateY(-0.8px)}22%{transform:translateY(0px)}30%{transform:translateY(0px)}30.5%{transform:translateY(-0.8px)}31%{transform:translateY(0px)}31.5%{transform:translateY(-0.8px)}32%{transform:translateY(0px)}32.5%{transform:translateY(-0.8px)}33%{transform:translateY(0px)}33.5%{transform:translateY(-0.8px)}34%{transform:translateY(0px)}34.5%{transform:translateY(-0.8px)}35%{transform:translateY(0px)}35.5%{transform:translateY(-0.8px)}36%{transform:translateY(0px)}55%{transform:translateY(0px)}55.125%{transform:translateY(-0.8px)}55.25%{transform:translateY(0px)}55.375%{transform:translateY(-0.8px)}55.5%{transform:translateY(0px)}55.625%{transform:translateY(-0.8px)}55.75%{transform:translateY(0px)}55.875%{transform:translateY(-0.8px)}56%{transform:translateY(0px)}56.125%{transform:translateY(-0.8px)}56.25%{transform:translateY(0px)}56.375%{transform:translateY(-0.8px)}56.5%{transform:translateY(0px)}56.625%{transform:translateY(-0.8px)}56.75%{transform:translateY(0px)}56.875%{transform:translateY(-0.8px)}57%{transform:translateY(0px)}57.125%{transform:translateY(-0.8px)}57.25%{transform:translateY(0px)}57.375%{transform:translateY(-0.8px)}57.5%{transform:translateY(0px)}57.625%{transform:translateY(-0.8px)}57.75%{transform:translateY(0px)}57.875%{transform:translateY(-0.8px)}58%{transform:translateY(0px)}58.125%{transform:translateY(-0.8px)}58.25%{transform:translateY(0px)}58.375%{transform:translateY(-0.8px)}58.5%{transform:translateY(0px)}58.625%{transform:translateY(-0.8px)}58.75%{transform:translateY(0px)}58.875%{transform:translateY(-0.8px)}59%{transform:translateY(0px)}59.125%{transform:translateY(-0.8px)}59.25%{transform:translateY(0px)}59.375%{transform:translateY(-0.8px)}59.5%{transform:translateY(0px)}59.625%{transform:translateY(-0.8px)}59.75%{transform:translateY(0px)}59.875%{transform:translateY(-0.8px)}60%{transform:translateY(0px)}74%{transform:translateY(0px)}74.25%{transform:translateY(-0.8px)}74.5%{transform:translateY(0px)}74.75%{transform:translateY(-0.8px)}75%{transform:translateY(0px)}75.25%{transform:translateY(-0.8px)}75.5%{transform:translateY(0px)}75.75%{transform:translateY(-0.8px)}76%{transform:translateY(0px)}76.25%{transform:translateY(-0.8px)}76.5%{transform:translateY(0px)}76.75%{transform:translateY(-0.8px)}77%{transform:translateY(0px)}77.25%{transform:translateY(-0.8px)}77.5%{transform:translateY(0px)}77.75%{transform:translateY(-0.8px)}78%{transform:translateY(0px)}78.25%{transform:translateY(-0.8px)}78.5%{transform:translateY(0px)}78.75%{transform:translateY(-0.8px)}79%{transform:translateY(0px)}79.25%{transform:translateY(-0.8px)}79.5%{transform:translateY(0px)}79.75%{transform:translateY(-0.8px)}80%{transform:translateY(0px)}80.25%{transform:translateY(-0.8px)}80.5%{transform:translateY(0px)}80.75%{transform:translateY(-0.8px)}81%{transform:translateY(0px)}81.25%{transform:translateY(-0.8px)}81.5%{transform:translateY(0px)}81.75%{transform:translateY(-0.8px)}82%{transform:translateY(0px)}82.25%{transform:translateY(-0.8px)}82.5%{transform:translateY(0px)}82.75%{transform:translateY(-0.8px)}83%{transform:translateY(0px)}83.25%{transform:translateY(-0.8px)}83.5%{transform:translateY(0px)}83.75%{transform:translateY(-0.8px)}84%{transform:translateY(0px)}84.25%{transform:translateY(-0.8px)}84.5%{transform:translateY(0px)}84.75%{transform:translateY(-0.8px)}85%{transform:translateY(0px)}85.25%{transform:translateY(-0.8px)}85.5%{transform:translateY(0px)}85.75%{transform:translateY(-0.8px)}86%{transform:translateY(0px)}86.25%{transform:translateY(-0.8px)}86.5%{transform:translateY(0px)}86.75%{transform:translateY(-0.8px)}87%{transform:translateY(0px)}87.25%{transform:translateY(-0.8px)}87.5%{transform:translateY(0px)}87.75%{transform:translateY(-0.8px)}88%{transform:translateY(0px)}88.25%{transform:translateY(-0.8px)}88.5%{transform:translateY(0px)}88.75%{transform:translateY(-0.8px)}89%{transform:translateY(0px)}89.25%{transform:translateY(-0.8px)}89.5%{transform:translateY(0px)}89.75%{transform:translateY(-0.8px)}90%{transform:translateY(0px)}90.25%{transform:translateY(-0.8px)}90.5%{transform:translateY(0px)}90.75%{transform:translateY(-0.8px)}91%{transform:translateY(0px)}91.25%{transform:translateY(-0.8px)}91.5%{transform:translateY(0px)}91.75%{transform:translateY(-0.8px)}92%{transform:translateY(0px)}92.25%{transform:translateY(-0.8px)}92.5%{transform:translateY(0px)}92.75%{transform:translateY(-0.8px)}93%{transform:translateY(0px)}93.25%{transform:translateY(-0.8px)}93.5%{transform:translateY(0px)}93.75%{transform:translateY(-0.8px)}94%{transform:translateY(0px)}94.25%{transform:translateY(-0.8px)}94.5%{transform:translateY(0px)}94.75%{transform:translateY(-0.8px)}95%{transform:translateY(0px)}95.25%{transform:translateY(-0.8px)}95.5%{transform:translateY(0px)}95.75%{transform:translateY(-0.8px)}96%{transform:translateY(0px)}100%{transform:translateY(0px)}}

/* Continuous hands: lower the same book, reach around Danny, then pick it up.
   Matching cubic paths interpolate without switching or fading limb drawings. */
.bert-arm-near{animation:bert-arm-near 24s ease-in-out infinite}
.bert-arm-far{animation:bert-arm-far 24s ease-in-out infinite}
.bert-hand-near{animation:bert-hand-near 24s ease-in-out infinite}
.bert-hand-far{animation:bert-hand-far 24s ease-in-out infinite}
@keyframes bert-arm-near{0%,55%,74%,100%{d:path("M87 102 C95 122 106 122 118 118")}60%,71%{d:path("M87 102 C65 124 56 147 74 155")}63%,69%{d:path("M87 102 C110 143 181 141 202 108")}}
@keyframes bert-arm-far{0%,55%,74%,100%{d:path("M148 92 C167 99 176 103 184 109")}60%,71%{d:path("M148 92 C144 135 109 158 89 157")}63%,69%{d:path("M148 92 C155 105 161 115 174 113")}}
@keyframes bert-hand-near{0%,55%,74%,100%{transform:translate(0,0)}60%,71%{transform:translate(-44px,37px)}63%,69%{transform:translate(84px,-10px)}}
@keyframes bert-hand-far{0%,55%,74%,100%{transform:translate(0,0)}60%,71%{transform:translate(-95px,48px)}63%,69%{transform:translate(-10px,4px)}}

.bert-danny-note h2{font-size:20px;margin:20px 0 8px}.bert-danny-note p{margin-top:10px}#bert-story,#bert-and-danny{scroll-margin-top:24px}

/* Hind paws stay down as Danny's torso rises; his head stays facing Bert. */
.bert-hug-body{transform-origin:99px 65px;animation:danny-rise 24s ease-in-out infinite}
@keyframes danny-rise{0%,60%,70.5%,100%{transform:rotate(0)}63%,69%{transform:rotate(-55deg)}}
.bert-curtain-left{transform-origin:342px 39px;animation:curtain-left 24s ease-in-out infinite}
.bert-curtain-right{transform-origin:460px 39px;animation:curtain-right 24s ease-in-out infinite}
@keyframes curtain-left{0%,56%,94%,100%{transform:skewX(0) rotate(0)}61%,69%,77%{transform:skewX(-5deg) rotate(2deg)}65%,73%,81%{transform:skewX(-2deg) rotate(-1deg)}85%{transform:skewX(-4deg) rotate(1deg)}90%{transform:skewX(-1deg) rotate(0)}}
@keyframes curtain-right{0%,57%,95%,100%{transform:skewX(0) rotate(0)}63%,71%,79%{transform:skewX(-7deg) rotate(3deg)}67%,75%,83%{transform:skewX(-2deg) rotate(-1deg)}87%{transform:skewX(-3deg) rotate(1deg)}92%{transform:skewX(-.5deg) rotate(0)}}
.danny-visit{margin:48px 0 0;padding:28px 0 0;border-block:1px solid #d8d4c4}
.danny-visit-heading{display:flex;justify-content:space-between;gap:20px;align-items:start}
.danny-visit h2{font-size:24px;margin:0 0 8px}.danny-visit p{margin:0;color:#52604f}
.danny-options{display:flex;gap:12px;flex-wrap:wrap;font-size:12px}.danny-options label{cursor:pointer;white-space:nowrap}.danny-options input{accent-color:#344b36}
.danny-walkway{position:relative;height:280px;isolation:isolate;margin-top:20px}
.danny-garden{position:absolute;inset:0;overflow:hidden;border-radius:18px 18px 0 0;background:linear-gradient(#e9f1eb,#f6f5dc);z-index:-1;pointer-events:none}
.danny-garden-sun{position:absolute;top:27px;left:57%;width:42px;height:42px;border-radius:50%;background:#f0d389;box-shadow:0 0 28px 12px #efd38a25}
.danny-cloud{position:absolute;width:95px;height:20px;border-radius:50px;background:#fffdf4;opacity:.85;animation:danny-cloud-drift 28s ease-in-out infinite alternate}
.danny-cloud::before,.danny-cloud::after{content:"";position:absolute;background:inherit;border-radius:50%;width:37px;height:37px;left:16px;bottom:0}
.danny-cloud::after{width:45px;height:45px;left:39px}
.danny-cloud-one{top:64px;left:15%}.danny-cloud-two{top:94px;right:15%;transform:scale(.7);animation-delay:-12s}
.danny-garden-tree{position:absolute;width:145px;height:197px;bottom:24px;overflow:visible}
.danny-tree-left{left:3%;width:115px;height:156px}.danny-tree-right{right:3%}
.danny-tree-sway{transform-origin:70px 176px;animation:danny-tree-breeze 5s ease-in-out infinite alternate}
.danny-tree-left .danny-tree-sway{animation-delay:-2s;animation-duration:6s}
.danny-lawn{position:absolute;bottom:0;width:100%;height:65px}
.danny-grass{position:absolute;bottom:0;width:100%;height:30px;animation:danny-grass-breeze 3s ease-in-out infinite alternate;transform-origin:50% 100%}
@keyframes danny-tree-breeze{from{transform:rotate(-1.5deg) skewX(-.5deg)}to{transform:rotate(2deg) skewX(1deg)}}
@keyframes danny-grass-breeze{from{transform:skewX(-3deg)}to{transform:skewX(4deg)}}
@keyframes danny-cloud-drift{from{translate:-15px 0}to{translate:24px 0}}
.danny-hello{position:absolute;bottom:16px;left:0;width:110px;height:100px;padding:0;background:none;border:0;cursor:pointer;border-radius:20px;touch-action:manipulation}
.danny-hello svg{display:block;width:100%;overflow:visible}.danny-hello:focus-visible{outline:2px solid #536447;outline-offset:5px}
.danny-visit.is-seen .danny-hello{animation:danny-cross 14s linear forwards}
.danny-visit.is-seen .visitor-dog-frontleg,.danny-visit.is-seen .visitor-dog-backleg{animation:danny-front-near .8s linear infinite;stroke-width:1.8}
/* Feet travel backward on the ground, then flex and lift on the return.
   Each silhouette stays attached at its shoulder/hip; no rigid boot rotation. */
.danny-visit.is-seen .visitor-dog-backleg{animation-name:danny-back-far;animation-delay:-.4s}
.danny-visit.is-seen .visitor-dog-farleg{animation-name:danny-front-far;animation-delay:-.4s}
.danny-visit.is-seen .visitor-dog-nearleg{animation-name:danny-back-near;animation-delay:0s}
.visitor-dog-tail{transform-origin:34px 76px;animation:bert-dog-wag .3s ease-in-out infinite alternate}
.visitor-dog-sad-eye,.visitor-dog-tongue,.danny-bark-marks{opacity:0}
.danny-visit.is-greeting .danny-bark-marks{animation:danny-woof .3s ease-in-out 3}
.danny-visit.is-greeting .visitor-dog-head{transform-origin:99px 65px;animation:danny-nod .3s ease-in-out 3}
.danny-visit.is-paused *,.danny-visit.is-offscreen *,.danny-visit.is-greeting .danny-hello,.danny-visit.is-greeting .visitor-dog-frontleg,.danny-visit.is-greeting .visitor-dog-backleg,.danny-visit:has(.danny-hello:focus-visible) .danny-hello,.danny-visit:has(.danny-hello:hover) .danny-hello{animation-play-state:paused!important}
.danny-visit.is-finished .visitor-dog-frontleg,.danny-visit.is-finished .visitor-dog-backleg{animation:none}
.danny-bubble{position:absolute;bottom:132px;width:230px;max-width:calc(100% - 16px);box-sizing:border-box;padding:17px 20px!important;border:1px solid #c6cdbb;border-radius:35px;background:#fffef8;box-shadow:0 4px 12px #344b3610;text-align:center;font-size:15px;font-weight:600;z-index:2}
.danny-bubble::after{content:"";position:absolute;bottom:-10px;left:var(--tail-x,50%);width:16px;height:16px;background:#fffef8;border-right:1px solid #c6cdbb;border-bottom:1px solid #c6cdbb;transform:rotate(45deg)}
@keyframes danny-cross{from{left:0}to{left:calc(100% - 110px)}}
@keyframes danny-woof{0%,100%{opacity:0}35%,65%{opacity:1}}
@keyframes danny-nod{0%,100%{transform:rotate(0)}50%{transform:rotate(-8deg)}}
@media(max-width:600px){.danny-visit-heading{flex-direction:column}.danny-options{gap:16px}.danny-visit{margin-top:32px}}
@media(prefers-reduced-motion:reduce){.danny-visit *{animation:none!important}.danny-visit.is-seen .danny-hello{left:calc(50% - 55px)}.danny-visit.is-greeting .danny-bark-marks{opacity:1}}

.danny-visit:has(.danny-hello:is(:hover,:focus-visible)) .visitor-dog-frontleg,.danny-visit:has(.danny-hello:is(:hover,:focus-visible)) .visitor-dog-backleg{animation-play-state:paused!important}

@keyframes danny-back-far{0%,100%{d:path("M40 85 Q38 93 38 98 Q45 104 45 107 Q44 109 48 109 L52 109 Q54 108 52 106 L49 105 Q43 97 46 85 Z")}55%{d:path("M40 85 Q38 93 38 98 Q37 104 37 107 Q36 109 40 109 L44 109 Q46 108 44 106 L41 105 Q43 97 46 85 Z")}75%{d:path("M40 85 Q38 93 38 98 Q40 99 40 102 Q39 104 43 104 L47 104 Q49 103 47 101 L44 100 Q43 97 46 85 Z")}90%{d:path("M40 85 Q38 93 38 98 Q45 102 45 105 Q44 107 48 107 L52 107 Q54 106 52 104 L49 103 Q43 97 46 85 Z")}}

@keyframes danny-front-far{0%,100%{d:path("M81 85 Q79 93 83 98 Q87 104 87 107 Q86 109 90 109 L94 109 Q96 108 94 106 L91 105 Q88 97 87 85 Z")}55%{d:path("M81 85 Q79 93 83 98 Q79 104 79 107 Q78 109 82 109 L86 109 Q88 108 86 106 L83 105 Q88 97 87 85 Z")}75%{d:path("M81 85 Q79 93 83 98 Q82 99 82 102 Q81 104 85 104 L89 104 Q91 103 89 101 L86 100 Q88 97 87 85 Z")}90%{d:path("M81 85 Q79 93 83 98 Q87 102 87 105 Q86 107 90 107 L94 107 Q96 106 94 104 L91 103 Q88 97 87 85 Z")}}

@keyframes danny-back-near{0%,100%{d:path("M48 85 Q46 93 46 98 Q52 104 52 107 Q51 109 55 109 L59 109 Q61 108 59 106 L56 105 Q51 97 54 85 Z")}55%{d:path("M48 85 Q46 93 46 98 Q44 104 44 107 Q43 109 47 109 L51 109 Q53 108 51 106 L48 105 Q51 97 54 85 Z")}75%{d:path("M48 85 Q46 93 46 98 Q47 99 47 102 Q46 104 50 104 L54 104 Q56 103 54 101 L51 100 Q51 97 54 85 Z")}90%{d:path("M48 85 Q46 93 46 98 Q52 102 52 105 Q51 107 55 107 L59 107 Q61 106 59 104 L56 103 Q51 97 54 85 Z")}}

@keyframes danny-front-near{0%,100%{d:path("M91 85 Q89 93 93 98 Q96 104 96 107 Q95 109 99 109 L103 109 Q105 108 103 106 L100 105 Q98 97 97 85 Z")}55%{d:path("M91 85 Q89 93 93 98 Q88 104 88 107 Q87 109 91 109 L95 109 Q97 108 95 106 L92 105 Q98 97 97 85 Z")}75%{d:path("M91 85 Q89 93 93 98 Q91 99 91 102 Q90 104 94 104 L98 104 Q100 103 98 101 L95 100 Q98 97 97 85 Z")}90%{d:path("M91 85 Q89 93 93 98 Q96 102 96 105 Q95 107 99 107 L103 107 Q105 106 103 104 L100 103 Q98 97 97 85 Z")}}

/* Joint-flexing paws follow the room story: walk, settle, nap, greet, depart.
   Opposite diagonal pairs share contact phases; the reunion copy stays still. */
@keyframes parlor-back-far{
  0%,5%,22%,30%,36%,55%,60%,74%,96%,100%{d:path("M40 85 Q38 93 38 98 Q41 104 41 107 Q40 109 44 109 L48 109 Q50 108 48 106 L45 105 Q43 97 46 85 Z")}
  6.9%,10.1%,13.3%,16.5%,19.7%,31.55%,34.05%,56.3%,58.3%,75.8%,78.8%,81.8%,84.8%,87.8%,90.8%,93.8%{d:path("M40 85 Q38 93 38 98 Q45 104 45 107 Q44 109 48 109 L52 109 Q54 108 52 106 L49 105 Q43 97 46 85 Z")}
  5.46%,8.66%,11.86%,15.06%,18.26%,30.425%,32.925%,55.4%,57.4%,74.45%,77.45%,80.45%,83.45%,86.45%,89.45%,92.45%{d:path("M40 85 Q38 93 38 98 Q37 104 37 107 Q36 109 40 109 L44 109 Q46 108 44 106 L41 105 Q43 97 46 85 Z")}
  6.1%,9.3%,12.5%,15.7%,18.9%,30.925%,33.425%,55.8%,57.8%,75.05%,78.05%,81.05%,84.05%,87.05%,90.05%,93.05%{d:path("M40 85 Q38 93 38 98 Q40 99 40 102 Q39 104 43 104 L47 104 Q49 103 47 101 L44 100 Q43 97 46 85 Z")}
  6.58%,9.78%,12.98%,16.18%,19.38%,31.3%,33.8%,56.1%,58.1%,75.5%,78.5%,81.5%,84.5%,87.5%,90.5%,93.5%{d:path("M40 85 Q38 93 38 98 Q45 102 45 105 Q44 107 48 107 L52 107 Q54 106 52 104 L49 103 Q43 97 46 85 Z")}
}
@keyframes parlor-front-far{
  0%,5%,22%,30%,36%,55%,60%,74%,96%,100%{d:path("M81 85 Q79 93 83 98 Q83 104 83 107 Q82 109 86 109 L90 109 Q92 108 90 106 L87 105 Q88 97 87 85 Z")}
  6.9%,10.1%,13.3%,16.5%,19.7%,31.55%,34.05%,56.3%,58.3%,75.8%,78.8%,81.8%,84.8%,87.8%,90.8%,93.8%{d:path("M81 85 Q79 93 83 98 Q87 104 87 107 Q86 109 90 109 L94 109 Q96 108 94 106 L91 105 Q88 97 87 85 Z")}
  5.46%,8.66%,11.86%,15.06%,18.26%,30.425%,32.925%,55.4%,57.4%,74.45%,77.45%,80.45%,83.45%,86.45%,89.45%,92.45%{d:path("M81 85 Q79 93 83 98 Q79 104 79 107 Q78 109 82 109 L86 109 Q88 108 86 106 L83 105 Q88 97 87 85 Z")}
  6.1%,9.3%,12.5%,15.7%,18.9%,30.925%,33.425%,55.8%,57.8%,75.05%,78.05%,81.05%,84.05%,87.05%,90.05%,93.05%{d:path("M81 85 Q79 93 83 98 Q82 99 82 102 Q81 104 85 104 L89 104 Q91 103 89 101 L86 100 Q88 97 87 85 Z")}
  6.58%,9.78%,12.98%,16.18%,19.38%,31.3%,33.8%,56.1%,58.1%,75.5%,78.5%,81.5%,84.5%,87.5%,90.5%,93.5%{d:path("M81 85 Q79 93 83 98 Q87 102 87 105 Q86 107 90 107 L94 107 Q96 106 94 104 L91 103 Q88 97 87 85 Z")}
}
@keyframes parlor-back-near{
  0%,5%,22%,30%,36%,55%,60%,74%,96%,100%{d:path("M48 85 Q46 93 46 98 Q48 104 48 107 Q47 109 51 109 L55 109 Q57 108 55 106 L52 105 Q51 97 54 85 Z")}
  5.3%,8.5%,11.7%,14.9%,18.1%,30.3%,32.8%,55.3%,57.3%,74.3%,77.3%,80.3%,83.3%,86.3%,89.3%,92.3%{d:path("M48 85 Q46 93 46 98 Q52 104 52 107 Q51 109 55 109 L59 109 Q61 108 59 106 L56 105 Q51 97 54 85 Z")}
  7.06%,10.26%,13.46%,16.66%,19.86%,31.675%,34.175%,56.4%,58.4%,75.95%,78.95%,81.95%,84.95%,87.95%,90.95%,93.95%{d:path("M48 85 Q46 93 46 98 Q44 104 44 107 Q43 109 47 109 L51 109 Q53 108 51 106 L48 105 Q51 97 54 85 Z")}
  7.7%,10.9%,14.1%,17.3%,20.5%,32.175%,34.675%,56.8%,58.8%,76.55%,79.55%,82.55%,85.55%,88.55%,91.55%,94.55%{d:path("M48 85 Q46 93 46 98 Q47 99 47 102 Q46 104 50 104 L54 104 Q56 103 54 101 L51 100 Q51 97 54 85 Z")}
  8.18%,11.38%,14.58%,17.78%,20.98%,32.55%,35.05%,57.1%,59.1%,77%,80%,83%,86%,89%,92%,95%{d:path("M48 85 Q46 93 46 98 Q52 102 52 105 Q51 107 55 107 L59 107 Q61 106 59 104 L56 103 Q51 97 54 85 Z")}
}
@keyframes parlor-front-near{
  0%,5%,22%,30%,36%,55%,60%,74%,96%,100%{d:path("M91 85 Q89 93 93 98 Q92 104 92 107 Q91 109 95 109 L99 109 Q101 108 99 106 L96 105 Q98 97 97 85 Z")}
  5.3%,8.5%,11.7%,14.9%,18.1%,30.3%,32.8%,55.3%,57.3%,74.3%,77.3%,80.3%,83.3%,86.3%,89.3%,92.3%{d:path("M91 85 Q89 93 93 98 Q96 104 96 107 Q95 109 99 109 L103 109 Q105 108 103 106 L100 105 Q98 97 97 85 Z")}
  7.06%,10.26%,13.46%,16.66%,19.86%,31.675%,34.175%,56.4%,58.4%,75.95%,78.95%,81.95%,84.95%,87.95%,90.95%,93.95%{d:path("M91 85 Q89 93 93 98 Q88 104 88 107 Q87 109 91 109 L95 109 Q97 108 95 106 L92 105 Q98 97 97 85 Z")}
  7.7%,10.9%,14.1%,17.3%,20.5%,32.175%,34.675%,56.8%,58.8%,76.55%,79.55%,82.55%,85.55%,88.55%,91.55%,94.55%{d:path("M91 85 Q89 93 93 98 Q91 99 91 102 Q90 104 94 104 L98 104 Q100 103 98 101 L95 100 Q98 97 97 85 Z")}
  8.18%,11.38%,14.58%,17.78%,20.98%,32.55%,35.05%,57.1%,59.1%,77%,80%,83%,86%,89%,92%,95%{d:path("M91 85 Q89 93 93 98 Q96 102 96 105 Q95 107 99 107 L103 107 Q105 106 103 104 L100 103 Q98 97 97 85 Z")}
}
/* Meet Bert and Danny sits after the study break, below the research (September 30, 2026). */
.research-body main>.bert-danny-note{margin:8px 0 40px}
