/* Fixed autumn courtyard. Palette and motion are local to the home page. */
:root {
  --bv-sky-top:#e9e9dc; --bv-sky-bottom:#f0dfbc; --bv-sun:#f7dfac;
  --bv-skyline:#b3beab; --bv-skyline-edge:#d8dcc3; --bv-distant-window:#e7d1a1;
  --bv-distant-house:#b4b99a; --bv-roof:#7f9277;
  --bv-paving-far:#d1cfb1; --bv-paving-near:#e5d7b7; --bv-paving-line:#a7a78a;
  --bv-sidewalk:#c4c5a7; --bv-kerb:#f1e5c5;
  --bv-wall-one:#cfbb97; --bv-wall-two:#b9bd9e; --bv-wall-three:#d3c3a4; --bv-wall-four:#c4aa8c;
  --bv-building-edge:#9a997b; --bv-cornice:#e9daba; --bv-frame:#a89a78; --bv-mullion:#75856c;
  --bv-glass-top:#8ba18c; --bv-glass-bottom:#c0c8a6; --bv-warm-window:#ead29b;
  --bv-shop:#56735b; --bv-shop-glass:#b7c29d; --bv-door:#d3d2af;
  --bv-awning-gold:#c49b60; --bv-awning-green:#738a69;
  --bv-sign:#4e6752; --bv-sign-edge:#c7ab70; --bv-sign-text:#ead9ae;
  --bv-lamp:#536b53; --bv-shadow:#5d674c; --bv-trunk:#7f694d;
  --bv-foliage:#b77043; --bv-leaf-light:#dcaa60; --bv-tree-grate:#849374;
  --bv-mist:#edebdb;
}
[data-theme="dark"] {
  --bv-sky-top:#22392f; --bv-sky-bottom:#485740; --bv-sun:#d7d4a5;
  --bv-skyline:#5a7360; --bv-skyline-edge:#7c8d70; --bv-distant-window:#e5c584;
  --bv-distant-house:#6f8061; --bv-roof:#49644e;
  --bv-paving-far:#687552; --bv-paving-near:#9a9970; --bv-paving-line:#727c58;
  --bv-sidewalk:#72805d; --bv-kerb:#acac7d;
  --bv-wall-one:#9b9575; --bv-wall-two:#8d9a77; --bv-wall-three:#a69e7c; --bv-wall-four:#a18a6d;
  --bv-building-edge:#718464; --bv-cornice:#b5b08b; --bv-frame:#9e986c; --bv-mullion:#657f63;
  --bv-glass-top:#486c57; --bv-glass-bottom:#7d9472; --bv-warm-window:#e9c780;
  --bv-shop:#365843; --bv-shop-glass:#a0a976; --bv-door:#c1c391;
  --bv-awning-gold:#a28a52; --bv-awning-green:#617e5b;
  --bv-sign:#32543e; --bv-sign-edge:#b09c65; --bv-sign-text:#e1d4a1;
  --bv-lamp:#405d44; --bv-shadow:#334a35; --bv-trunk:#6c6448;
  --bv-foliage:#9e7243; --bv-leaf-light:#c39b51; --bv-tree-grate:#627e58;
  --bv-mist:#2a4032;
}

:root { --bv-terracotta:#ae7550; --bv-pot-rim:#d0a477; --bv-plant:#6d855a; --bv-flower:#d4aa5d; --bv-window-reflection:#f4e9c7; --bv-roof-line:#b4b89a; --bv-awning-cream:#eadbb6; --bv-bench:#5c725a; --bv-basket:#a99061; --bv-leaf-shadow:#9f5d3e; }
[data-theme="dark"] { --bv-terracotta:#91633f; --bv-pot-rim:#b69868; --bv-plant:#526b47; --bv-flower:#be9d55; --bv-window-reflection:#e9d89e; --bv-roof-line:#899777; --bv-awning-cream:#b9b18a; --bv-bench:#759068; --bv-basket:#a89864; --bv-leaf-shadow:#775236; }
.home-hero .boulevard-art { overflow:hidden; filter:none; }
.home-hero .scene-caption { top:20px; bottom:auto; right:24px; }
.courtyard-canopy { animation:courtyard-canopy var(--canopy-time,11s) ease-in-out infinite; animation-delay:var(--canopy-delay,0s); transform-origin:0 -88px; }
.courtyard-light { animation:courtyard-light 9s ease-in-out infinite; }
.courtyard-steam { animation:courtyard-steam 7s ease-in-out infinite; }
.courtyard-fall { animation:courtyard-fall 21s linear infinite; opacity:0; }
:root { --bv-skin:#d4a27c; --bv-child-trousers:#53635b; --bv-shoe:#354d47; --bv-child-coral:#ba6846; --bv-child-blue:#557e89; --bv-child-gold:#c4a04e; --bv-reader-coat:#976e67; --bv-walker-coat:#657c57; --bv-book-cover:#486e64; --bv-ball:#d7954d; --bv-ball-line:#885c3d; --bv-rope:#8a764a; --bv-chalk:#f7ecd0; }
[data-theme="dark"] { --bv-skin:#d0a880; --bv-child-trousers:#42574e; --bv-shoe:#233e36; --bv-child-coral:#c8825d; --bv-child-blue:#6a9397; --bv-child-gold:#ceb068; --bv-reader-coat:#ac8275; --bv-walker-coat:#83936b; --bv-book-cover:#335a4b; --bv-ball:#e2b25f; --bv-ball-line:#9e7748; --bv-rope:#d0b984; --bv-chalk:#d3c79e; }
.courtyard-play,.courtyard-reader,.court-walker { pointer-events:none; }
.court-child-weight { animation:court-child-weight 4.8s ease-in-out infinite; }
.courtyard-child-right .court-child-weight { animation-delay:-2.4s; }
.court-child-throw-arm { transform-origin:6px -50px; animation:court-left-throw 4.8s ease-in-out infinite; }
.courtyard-child-right .court-child-throw-arm { animation-name:court-right-throw; }
.court-child-rear-arm { transform-origin:-5px -49px; animation:court-catch-arm 4.8s ease-in-out infinite; }
.courtyard-child-right .court-child-rear-arm { animation-delay:-2.4s; }
.court-ball { transform:translate(635px,326px); animation:court-ball 4.8s linear infinite; }
.court-ball-shadow { transform:translate(635px,371px); opacity:.15; animation:court-ball-shadow 4.8s linear infinite; }
.court-jumper { animation:court-jump 1.5s cubic-bezier(.4,0,.6,1) infinite; }
.court-rope { transform-origin:0 -40px; animation:court-rope 1.5s linear infinite; }
.court-jump-shadow { transform-box:fill-box; transform-origin:center; animation:court-jump-shadow 1.5s ease-in-out infinite; }
.court-jump-back-leg { transform-origin:-5px -29px; animation:court-jump-leg 1.5s ease-in-out infinite; }
.court-jump-front-leg { transform-origin:5px -29px; animation:court-jump-leg 1.5s ease-in-out infinite reverse; }
.court-jump-left-arm { transform-origin:-7px -50px; animation:court-rope-arm 1.5s ease-in-out infinite; }
.court-jump-right-arm { transform-origin:7px -50px; animation:court-rope-arm 1.5s ease-in-out infinite reverse; }
.court-reader-head { transform-origin:0 -35px; animation:court-reader-nod 6s ease-in-out infinite; }
.court-reader-page { transform-origin:0 0; animation:court-page-turn 7s ease-in-out infinite; }
.court-walker { animation:court-walker 30.5454545s linear infinite; animation-delay:-13s; transform:translate(440px,311px); }
.court-walk-back-arm { transform-origin:-6px -56px; animation:court-walk-arm 1.2s ease-in-out infinite; }
.court-walk-front-arm { transform-origin:7px -57px; animation:court-walk-arm 1.2s ease-in-out infinite; animation-delay:-.6s; }
@keyframes court-child-weight { 0%,4%,50%,100% { transform:translateY(0); } 8% { transform:translateY(1px); } 14% { transform:translateY(-1px); } 23% { transform:translateY(0); } }
@keyframes court-left-throw { 0%,4%,45%,100% { transform:rotate(0); } 10% { transform:rotate(-40deg); } 22%,29% { transform:rotate(-58deg); } 36% { transform:rotate(-16deg); } 82% { transform:rotate(9deg); } 96% { transform:rotate(0); } }
@keyframes court-right-throw { 0%,42%,53%,100% { transform:rotate(0); } 62% { transform:rotate(30deg); } 69% { transform:rotate(42deg); } 79% { transform:rotate(15deg); } 88% { transform:rotate(0); } }
@keyframes court-catch-arm { 0%,5%,100% { transform:rotate(0); } 12%,26% { transform:rotate(-20deg); } 45%,70% { transform:rotate(10deg); } 90% { transform:rotate(-5deg); } }
@keyframes court-ball {
  0%,4% { transform:translate(635px,326px) rotate(0); }
  10% { transform:translate(636px,314px) rotate(15deg); }
  16% { transform:translate(656px,294px) rotate(40deg); }
  23% { transform:translate(679px,282px) rotate(70deg); }
  29% { transform:translate(700px,280px) rotate(100deg); }
  35% { transform:translate(723px,291px) rotate(130deg); }
  41% { transform:translate(746px,312px) rotate(160deg); }
  45%,53% { transform:translate(757px,326px) rotate(180deg); }
  62% { transform:translate(763px,334px) rotate(205deg); }
  68% { transform:translate(736px,341px) rotate(225deg); }
  73% { transform:translate(713px,351px) rotate(245deg); }
  77% { transform:translate(695px,363px) rotate(265deg) scale(1.08,.88); }
  81% { transform:translate(680px,348px) rotate(285deg) scale(1); }
  87% { transform:translate(659px,332px) rotate(315deg); }
  94%,100% { transform:translate(635px,326px) rotate(360deg); }
}
@keyframes court-ball-shadow {
  0%,4% { transform:translate(635px,371px) scale(.65); opacity:.15; }
  10% { transform:translate(636px,371px) scale(.6); opacity:.13; }
  29% { transform:translate(700px,371px) scale(.4); opacity:.08; }
  45%,53% { transform:translate(757px,371px) scale(.65); opacity:.15; }
  62% { transform:translate(763px,371px) scale(.7); opacity:.16; }
  77% { transform:translate(695px,371px) scale(1); opacity:.3; }
  87% { transform:translate(659px,371px) scale(.7); opacity:.16; }
  94%,100% { transform:translate(635px,371px) scale(.65); opacity:.15; }
}
@keyframes court-jump { 0%,100% { transform:translateY(-13px); } 25% { transform:translateY(-6px); } 48% { transform:translateY(0); } 65% { transform:translateY(2px); } 80% { transform:translateY(-6px); } }
@keyframes court-rope { 0%,100% { transform:scaleY(1); } 25%,75% { transform:scaleY(0); } 50% { transform:scaleY(-1); } }
@keyframes court-jump-shadow { 0%,100% { transform:scaleX(.72); opacity:.13; } 50%,65% { transform:scaleX(1); opacity:.25; } }
@keyframes court-jump-leg { 0%,100% { transform:rotate(-12deg); } 30% { transform:rotate(-5deg); } 50%,65% { transform:rotate(3deg); } }
@keyframes court-rope-arm { 0%,100% { transform:rotate(-8deg); } 50% { transform:rotate(8deg); } }
@keyframes court-reader-nod { 0%,100% { transform:translateY(18px) rotate(0); } 40%,65% { transform:translateY(18px) rotate(5deg); } }
@keyframes court-page-turn { 0%,38%,100% { transform:scaleX(1); } 48%,65% { transform:scaleX(-1); } 76% { transform:scaleX(1); } }
@keyframes court-walker { 0% { transform:translate(440px,311px); opacity:0; } 7% { opacity:1; } 91% { opacity:1; } 100% { transform:translate(1112px,311px); opacity:0; } }
@keyframes court-walk-arm { 0%,100% { transform:rotate(-16deg); } 50% { transform:rotate(16deg); } }
@keyframes courtyard-canopy { 0%,100% { transform:rotate(-.3deg); } 50% { transform:rotate(.55deg); } }
@keyframes courtyard-light { 0%,100% { opacity:.65; } 50% { opacity:.9; } }
@keyframes courtyard-steam { 0% { opacity:0; transform:translateY(2px); } 20%,60% { opacity:.6; } 100% { opacity:0; transform:translate(2px,-8px); } }
@keyframes courtyard-fall { 0% { opacity:0; transform:translate(0,0) rotate(-10deg); } 8% { opacity:.8; } 30% { transform:translate(15px,34px) rotate(25deg); } 55% { transform:translate(7px,72px) rotate(75deg); } 80% { opacity:.75; transform:translate(24px,109px) rotate(130deg); } 97%,100% { opacity:0; transform:translate(31px,135px) rotate(170deg); } }
/* A home-only pace. Inherited state also reaches SVG use-instance subtrees. */
.home-page .scene-card { --home-scene-play:running; }
.home-page .scene-card.scene-paused,.home-page .scene-card.scene-outside,.home-page.page-inactive .scene-card,.home-page.host-inactive .scene-card,.home-page.motion-paused .scene-card { --home-scene-play:paused; }
.home-page.host-inactive .boulevard-art .animated { animation-play-state:paused!important; }
.park-canopy { animation:home-park-canopy 10s ease-in-out infinite; animation-play-state:var(--home-scene-play,running); }
.park-lamp { animation-duration:8s; animation-play-state:var(--home-scene-play,running); }
.home-page .park-water-jet { animation:home-fountain 6s ease-in-out infinite; }
.home-page .park-water-flow { animation-duration:8s; }
.home-page .park-water-flow.second { animation-delay:-4s; }
.home-page .park-water-sheen { animation-duration:12s; opacity:.25; }
.home-page .park-water-drop { animation-duration:2.2s; }
.home-page .park-ripple { animation-duration:4.5s; }
.home-page .park-ripple.second { animation-delay:-2.25s; }
.home-page .park-ripple.wide { animation-duration:6.5s; }
.home-page .park-falling { animation-duration:12s; }
.home-page .park-falling.second { animation-delay:-6s; }
.home-page .coffee-steam { animation-duration:6s; }
.home-page .coffee-steam.second { animation-delay:-3s; }
.home-page .coffee-botanical { animation-duration:11s; }
.home-page .coffee-mote { animation-duration:9s; }
.home-page .letter-scene .animated { animation-duration:24s; }
.home-page .letter-scene .letter-flight { animation:home-letter-rest 12s ease-in-out infinite; opacity:1; }
.home-page .letter-scene .letter-ground-shadow { animation:none; opacity:.16; }
@keyframes home-park-canopy { 0%,100% { transform:rotate(-.2deg); } 50% { transform:rotate(.6deg); } }
@keyframes home-fountain { 0%,100% { transform:scaleY(1); opacity:.85; } 50% { transform:scaleY(.97); opacity:.95; } }
@keyframes home-letter-rest { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-1.5px); } }
.home-actions .home-open-icon { width:18px; height:18px; margin:0 0 0 auto; flex:none; opacity:.7; filter:brightness(0) saturate(100%) invert(35%) sepia(13%) saturate(1016%) hue-rotate(92deg); }
[data-theme="dark"] .home-actions .home-open-icon { filter:brightness(0) saturate(100%) invert(83%) sepia(13%) saturate(600%) hue-rotate(5deg); }
@media (max-width:760px) {
  .home-actions .home-open-icon { width:16px; height:16px; margin:3px 0 0; }
  .home-hero .boulevard-art { position:absolute; width:150%; max-width:none; height:230px; right:0; bottom:0; transform:none; }
  .home-hero .hero-copy { max-width:calc(100% - 40px); }
  .home-hero .hero-copy p { max-width:250px; line-height:1.8; }
}
/* Keep the children inside the narrow crop and give playback its own strip. */
@media (max-width:380px) {
  .home-hero .hero-copy h2 { font-size:26px; letter-spacing:2px; }
  .home-hero .boulevard-art { height:210px; bottom:44px; }
  .home-hero .hero-controls { bottom:10px; }
}
@media (prefers-reduced-motion:reduce) {
  .courtyard-canopy,.courtyard-light,.courtyard-steam,.courtyard-fall,.park-canopy,.park-lamp,.home-page .home-miniature .animated { animation:none!important; }
  .courtyard-fall { display:none; }
}

/* Short, low steps: 26.4 px stride / 1.2 s = 22 px/s, with planted stance feet. */
.court-grounded-leg { stroke-linecap:butt; animation:court-grounded-leg 1.2s linear infinite; }
.court-grounded-shoe { animation:court-grounded-shoe 1.2s linear infinite; }
.court-gait-back { animation-delay:-.6s; }
@keyframes court-grounded-leg {
0% { d:path("M0 -31 L4.664 -17.000 L7.920 -3.000"); }
2.5% { d:path("M0 -31 L4.367 -17.000 L7.260 -3.000"); }
5% { d:path("M0 -31 L4.070 -17.000 L6.600 -3.000"); }
7.5% { d:path("M0 -31 L3.773 -17.000 L5.940 -3.000"); }
10% { d:path("M0 -31 L3.476 -17.000 L5.280 -3.000"); }
12.5% { d:path("M0 -31 L3.179 -17.000 L4.620 -3.000"); }
15% { d:path("M0 -31 L2.882 -17.000 L3.960 -3.000"); }
17.5% { d:path("M0 -31 L2.585 -17.000 L3.300 -3.000"); }
20% { d:path("M0 -31 L2.288 -17.000 L2.640 -3.000"); }
22.5% { d:path("M0 -31 L1.991 -17.000 L1.980 -3.000"); }
25% { d:path("M0 -31 L1.694 -17.000 L1.320 -3.000"); }
27.5% { d:path("M0 -31 L1.397 -17.000 L0.660 -3.000"); }
30% { d:path("M0 -31 L1.100 -17.000 L0.000 -3.000"); }
32.5% { d:path("M0 -31 L0.803 -17.000 L-0.660 -3.000"); }
35% { d:path("M0 -31 L0.506 -17.000 L-1.320 -3.000"); }
37.5% { d:path("M0 -31 L0.209 -17.000 L-1.980 -3.000"); }
40% { d:path("M0 -31 L-0.088 -17.000 L-2.640 -3.000"); }
42.5% { d:path("M0 -31 L-0.385 -17.000 L-3.300 -3.000"); }
45% { d:path("M0 -31 L-0.682 -17.000 L-3.960 -3.000"); }
47.5% { d:path("M0 -31 L-0.979 -17.000 L-4.620 -3.000"); }
50% { d:path("M0 -31 L-1.276 -17.000 L-5.280 -3.000"); }
52.5% { d:path("M0 -31 L-1.573 -17.000 L-5.940 -3.000"); }
55% { d:path("M0 -31 L-1.870 -17.000 L-6.600 -3.000"); }
57.5% { d:path("M0 -31 L-2.167 -17.000 L-7.260 -3.000"); }
60% { d:path("M0 -31 L-2.464 -17.000 L-7.920 -3.000"); }
62.5% { d:path("M0 -31 L-2.384 -17.224 L-7.742 -3.449"); }
65% { d:path("M0 -31 L-2.158 -17.440 L-7.239 -3.880"); }
67.5% { d:path("M0 -31 L-1.806 -17.639 L-6.458 -4.278"); }
70% { d:path("M0 -31 L-1.350 -17.813 L-5.445 -4.626"); }
72.5% { d:path("M0 -31 L-0.811 -17.956 L-4.246 -4.912"); }
75% { d:path("M0 -31 L-0.209 -18.062 L-2.908 -5.125"); }
77.5% { d:path("M0 -31 L0.435 -18.128 L-1.477 -5.256"); }
80% { d:path("M0 -31 L1.100 -18.150 L0.000 -5.300"); }
82.5% { d:path("M0 -31 L1.765 -18.128 L1.477 -5.256"); }
85% { d:path("M0 -31 L2.409 -18.062 L2.908 -5.125"); }
87.5% { d:path("M0 -31 L3.011 -17.956 L4.246 -4.912"); }
90% { d:path("M0 -31 L3.550 -17.813 L5.445 -4.626"); }
92.5% { d:path("M0 -31 L4.006 -17.639 L6.458 -4.278"); }
95% { d:path("M0 -31 L4.358 -17.440 L7.239 -3.880"); }
97.5% { d:path("M0 -31 L4.584 -17.224 L7.742 -3.449"); }
100% { d:path("M0 -31 L4.664 -17.000 L7.920 -3.000"); }
}
@keyframes court-grounded-shoe {
0% { transform:translate(7.920px,-1.000px); }
2.5% { transform:translate(7.260px,-1.000px); }
5% { transform:translate(6.600px,-1.000px); }
7.5% { transform:translate(5.940px,-1.000px); }
10% { transform:translate(5.280px,-1.000px); }
12.5% { transform:translate(4.620px,-1.000px); }
15% { transform:translate(3.960px,-1.000px); }
17.5% { transform:translate(3.300px,-1.000px); }
20% { transform:translate(2.640px,-1.000px); }
22.5% { transform:translate(1.980px,-1.000px); }
25% { transform:translate(1.320px,-1.000px); }
27.5% { transform:translate(0.660px,-1.000px); }
30% { transform:translate(0.000px,-1.000px); }
32.5% { transform:translate(-0.660px,-1.000px); }
35% { transform:translate(-1.320px,-1.000px); }
37.5% { transform:translate(-1.980px,-1.000px); }
40% { transform:translate(-2.640px,-1.000px); }
42.5% { transform:translate(-3.300px,-1.000px); }
45% { transform:translate(-3.960px,-1.000px); }
47.5% { transform:translate(-4.620px,-1.000px); }
50% { transform:translate(-5.280px,-1.000px); }
52.5% { transform:translate(-5.940px,-1.000px); }
55% { transform:translate(-6.600px,-1.000px); }
57.5% { transform:translate(-7.260px,-1.000px); }
60% { transform:translate(-7.920px,-1.000px); }
62.5% { transform:translate(-7.742px,-1.449px); }
65% { transform:translate(-7.239px,-1.880px); }
67.5% { transform:translate(-6.458px,-2.278px); }
70% { transform:translate(-5.445px,-2.626px); }
72.5% { transform:translate(-4.246px,-2.912px); }
75% { transform:translate(-2.908px,-3.125px); }
77.5% { transform:translate(-1.477px,-3.256px); }
80% { transform:translate(0.000px,-3.300px); }
82.5% { transform:translate(1.477px,-3.256px); }
85% { transform:translate(2.908px,-3.125px); }
87.5% { transform:translate(4.246px,-2.912px); }
90% { transform:translate(5.445px,-2.626px); }
92.5% { transform:translate(6.458px,-2.278px); }
95% { transform:translate(7.239px,-1.880px); }
97.5% { transform:translate(7.742px,-1.449px); }
100% { transform:translate(7.920px,-1.000px); }
}
@media(prefers-reduced-motion:reduce) { .boulevard-art .animated { animation:none!important; } .court-walker { transform:translate(545px,311px); opacity:1; } }

/* Home-only people in the park and correspondence vignettes. */
:root { --bv-terrace:#d8c8a6; --bv-playground:#d5d4ad; }
[data-theme="dark"] { --bv-terrace:#8a8862; --bv-playground:#7b845d; }
.mini-wave-arm { transform-origin:7px -48px; animation:mini-friendly-wave 2.8s ease-in-out infinite; }
.mini-park-stroller { animation:mini-park-stroll 20.9090909s linear infinite; animation-delay:-5s; }
@keyframes mini-friendly-wave { 0%,18%,100% { transform:rotate(0); } 30%,54% { transform:rotate(-22deg); } 42%,66% { transform:rotate(12deg); } 78% { transform:rotate(0); } }
@keyframes mini-park-stroll { 0% { transform:translateX(0); opacity:0; } 8%,92% { opacity:1; } 100% { transform:translateX(460px); opacity:0; } }
.home-page .mini-sender .mini-writing-hand { transform-origin:47px 52px; animation:mini-writing 2.4s ease-in-out infinite; }
.home-page .mini-sender .court-reader-head { animation-duration:4s; }
.home-page .mini-sender .court-reader-page { animation-duration:7s; }
@keyframes mini-writing { 0%,100% { transform:translate(0,0) rotate(0); } 25% { transform:translate(1.5px,.3px) rotate(-8deg); } 50% { transform:translate(2.5px,.5px) rotate(2deg); } 75% { transform:translate(1px,1px) rotate(-5deg); } }
@media(prefers-reduced-motion:reduce) { .home-page .home-miniature .animated { animation:none!important; } .mini-park-stroller { opacity:1; transform:translateX(100px); } }
