:root{font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;color:#193f35;background:#f6f2e7;font-synthesis:none;font-size:16px}*{box-sizing:border-box}body{margin:0}header{max-width:940px;margin:auto;display:flex;align-items:center;gap:12px;padding:14px 16px}h1{font-size:clamp(18px,3.5vw,26px);line-height:1.15;margin:0;flex:1}a{color:inherit}button,a,input{touch-action:manipulation}button,.home,.profile{min-height:44px}button{font:inherit;color:inherit;border:1px solid #a7b7a6;background:#fffdf6;border-radius:9px;padding:9px 14px;font-weight:650;cursor:pointer}button:hover{background:#e4eadb}button:disabled{opacity:.6;cursor:wait}.primary{background:#b63f26;color:#fff;border-color:#b63f26}.primary:hover{background:#96331e}.home{display:grid;place-items:center;width:44px;flex:none}.profile{display:flex;align-items:center;font-size:14px}main{max-width:760px;margin:auto;padding:0 16px}#game{border-radius:16px;overflow:hidden;background:#e7eddb;box-shadow:0 10px 35px #153d3315}.hud{display:flex;align-items:center;gap:10px;padding:8px 12px;min-height:60px;background:#193f35;color:#fff}.hud>span{flex:1;font-size:14px}.hud>strong{white-space:nowrap;font-size:18px}#full button{display:flex;align-items:center;gap:5px;padding:7px 10px;font-size:14px;background:transparent;color:inherit;border-color:#8da89a}#field{position:relative;aspect-ratio:600/610;max-height:650px;min-height:260px;background:#527653}canvas{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px}#line{font-size:15px;text-align:center;line-height:1.4;min-height:21px;margin:0;padding:9px 12px;background:#fbf8ee}.sheet{position:absolute;inset:0;background:#f6f2e7f2;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:10px;padding:22px;overflow:auto}.sheet h2{font-family:Georgia,serif;font-size:clamp(27px,5vw,40px);line-height:1.08;margin:0;max-width:390px}.sheet p{margin:0;line-height:1.45;max-width:380px}.sheet button{min-width:215px}.sheet .eyebrow{font-size:14px;letter-spacing:.03em;margin-bottom:5px}.sheet .small{font-size:14px;margin-top:3px}.controls{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:8px;padding:10px 12px}.controls>button{padding:8px}.controls label{grid-column:span 2;display:flex;align-items:center;gap:8px;font-size:14px;flex-wrap:wrap}.controls input{width:100%;height:26px;accent-color:#b63f26;margin:0}.controls output{margin-left:auto}.controls label{padding:2px 5px}.controls #menu-button{align-self:center;font-weight:500}details{margin:20px 0 25px;font-size:16px;line-height:1.6}summary{cursor:pointer;min-height:44px;display:list-item;padding:8px 0;font-weight:650}details p{margin:8px 0 16px}.document{max-width:760px;padding:16px;line-height:1.65}.document h1{font-size:30px}.document h2{font-size:22px;margin-top:28px}.document a{overflow-wrap:anywhere}[hidden]{display:none!important}:focus-visible{outline:3px solid #e18d27;outline-offset:3px}.game-fullscreen-lock{overflow:hidden}#game.is-fullscreen{position:fixed;inset:0;z-index:10000;border-radius:0;width:100%;height:100dvh;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.fullscreen-fit{display:contents}.is-fullscreen .fullscreen-fit{display:flex;flex:1;min-height:0;align-items:center;justify-content:center;container-type:size;background:#527653}.is-fullscreen #field{height:100cqh;width:min(100cqw,calc(100cqh * 600 / 610));min-height:0;max-height:none;flex:none}.is-fullscreen .controls{padding:5px 10px}.is-fullscreen .controls label{display:none}.is-fullscreen #menu-button{display:none}.is-fullscreen #line{padding:5px;font-size:14px}.is-fullscreen .hud{min-height:48px;padding:4px 12px}.is-fullscreen .sheet{padding:10px;gap:7px}.is-fullscreen .sheet h2{font-size:25px}.is-fullscreen .sheet .small,.is-fullscreen #share{display:none}.fullscreen-tip{position:absolute;z-index:3;background:white;color:#193f35;padding:12px;max-width:350px}.fullscreen-tip button{float:right}@media(max-width:420px){header{gap:6px;padding:8px}main{padding:0 8px}.hud{gap:6px;padding:6px 9px}#full button{padding:7px;font-size:13px}.hud>strong{font-size:16px}#field{aspect-ratio:600/680}.sheet{padding:14px;gap:9px}.sheet h2{font-size:30px}.controls{gap:6px;padding:8px}.controls button{font-size:14px}.sheet p{font-size:15px}.hud>span{font-size:13px}}@media(max-height:460px){.is-fullscreen .sheet{gap:4px}.is-fullscreen .sheet p,.is-fullscreen .sheet .eyebrow{display:none}.is-fullscreen .sheet h2{font-size:19px}.is-fullscreen .sheet button{min-height:36px;padding:4px 12px;font-size:14px}.is-fullscreen #back{display:none}.is-fullscreen #line{font-size:12px}.is-fullscreen .hud{min-height:40px}.is-fullscreen .controls button{min-height:38px;padding:4px}}
/* Enlarged text may scroll the menu; flex items must not shrink or clip above it. */
.sheet{justify-content:safe center}.sheet>*{flex-shrink:0}
#game:not(.is-fullscreen) #field:has(.sheet:not([hidden])){aspect-ratio:auto;max-height:none;min-height:clamp(345px,calc((100vw - 16px)*1.13),650px)}
#game:not(.is-fullscreen) #field:has(.sheet:not([hidden])) canvas{position:absolute;inset:0}
#game:not(.is-fullscreen) .sheet{position:relative;min-height:clamp(345px,calc((100vw - 16px)*1.13),650px)}

/* Preserve the camera aspect ratio in fullscreen instead of stretching the board. */
.is-fullscreen #field{width:min(100cqw,calc(100cqh * 600 / 670));height:min(100cqh,calc(100cqw * 670 / 600))}

.release-control{grid-column:1/-1;text-align:center;font-size:14px;font-weight:650}.release-track{height:14px;border:1px solid #788b70;border-radius:8px;position:relative;overflow:hidden;margin:4px 0;background:linear-gradient(90deg,#a3b69b 40%,#f4ce78 48%,#f4ce78 52%,#a3b69b 60%)}#release-needle{position:absolute;left:0;top:0;bottom:0;width:3px;background:#193f35}.is-fullscreen .release-control{font-size:12px}.is-fullscreen .release-track{margin:2px 0;height:10px}
#game:not(.is-fullscreen) #field{width:100%;aspect-ratio:auto;height:clamp(350px,calc((100vw - 32px)*670/600),650px)}
#game:not(.is-fullscreen) #field:has(.sheet:not([hidden])){height:auto}
.is-fullscreen .fullscreen-fit{background:#436047}
@media(min-width:650px) and (max-height:500px){#game.is-fullscreen{display:grid;grid-template-columns:minmax(0,1fr) 230px;grid-template-rows:auto minmax(0,1fr) auto}.is-fullscreen .hud{grid-column:1/-1}.is-fullscreen .fullscreen-fit{grid-column:1;grid-row:2/4}.is-fullscreen .controls{grid-column:2;grid-row:2;display:flex;flex-wrap:wrap;align-content:center}.is-fullscreen .release-control{width:100%}.is-fullscreen .controls button{flex:1;min-height:44px}.is-fullscreen #throw{order:3;flex-basis:100%}.is-fullscreen #line{grid-column:2;grid-row:3;align-self:end}.is-fullscreen #field{height:min(100cqh,calc(100cqw * 670 / 600));width:min(100cqw,calc(100cqh * 600 / 670))}}

/* Extend the yard into spare space; keep world geometry uniformly scaled. */
.is-fullscreen #field{width:100cqw;height:100cqh}

/* Power is part of the timed throw, so keep it available in fullscreen. */
.is-fullscreen .controls label{display:flex;grid-column:1/-1;gap:4px;font-size:13px}.is-fullscreen .controls input{height:32px}
@media(min-width:650px) and (max-height:500px){.is-fullscreen .controls label{order:4;width:100%;flex-basis:100%}}

/* Keep the daily date intact when text is enlarged; controls wrap below it. */
.hud{flex-wrap:wrap}.hud>span{flex:1 0 auto;white-space:nowrap}

/* dayplay-footer:start — shared Dayplay Games footer and waiting card (lib/dayplay-footer.css; synced into every
   game stylesheet, checked by lib/dayplay-footer.test.mjs). Each game sets --dpf-* in its own
   :root so the footer wears the game's colours; structure and spacing stay the same everywhere. */
footer.dp-footer{box-sizing:border-box;width:var(--dpf-width,min(100% - 32px,560px));margin:var(--dpf-margin,16px auto 0);padding:12px var(--dpf-pad,0px) max(16px,env(safe-area-inset-bottom));border-top:1px solid var(--dpf-line,#d8d2c4);color:var(--dpf-muted,#5f5a52);font-size:15px;line-height:1.45;text-align:left;overflow-wrap:anywhere}
footer.dp-footer>*+*{margin-top:4px}
.dp-footer .dp-home{box-sizing:border-box;display:flex;align-items:center;gap:8px;width:fit-content;max-width:100%;min-height:44px;margin-inline:0;margin-bottom:0;padding:0;border:0;border-radius:6px;background:transparent;color:var(--dpf-ink,#2c2a26);font:inherit;text-decoration:none;box-shadow:none;transition:border-color .15s,box-shadow .15s}
.dp-footer .dp-home img{display:block;flex:none;width:28px;height:28px;margin:0;padding:2px;box-sizing:border-box;border-radius:10px;background:#fef8f0;box-shadow:inset 0 0 0 1px rgba(44,34,64,.1)}
.dp-footer .dp-home-text{display:flex;flex-direction:column;flex:1;min-width:0;gap:1px}
.dp-footer .dp-home-text strong{font-size:16px;font-weight:700;line-height:1.25;color:var(--dpf-ink,#2c2a26)}
.dp-footer .dp-home-text span{font-size:14px;line-height:1.3;color:var(--dpf-muted,#5f5a52)}
.dp-footer .dp-home svg{flex:none;width:20px;height:20px;color:var(--dpf-accent,currentColor);transition:transform .15s}
.dp-footer .dp-home:hover{border-color:var(--dpf-accent,currentColor);box-shadow:0 2px 0 var(--dpf-accent,currentColor)}
.dp-footer .dp-home:hover svg{transform:translateX(3px)}
.dp-footer .dp-home:focus-visible,.dp-footer .dp-links a:focus-visible,.dp-footer .dp-links button:focus-visible{outline:3px solid var(--dpf-accent,currentColor);outline-offset:3px}
.dp-footer .dp-links{display:flex;flex-wrap:wrap;align-items:center;gap:0 16px;margin-bottom:0;padding:0}
.dp-footer .dp-links a,.dp-footer .dp-links button{display:inline-flex;align-items:center;min-height:44px;min-width:44px;flex-shrink:1;overflow-wrap:anywhere;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;font:inherit;font-size:14px;font-weight:600;line-height:1.3;color:var(--dpf-ink,#2c2a26);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--dpf-line,#c9c2b4);cursor:pointer;white-space:normal}
.dp-footer .dp-links a:hover,.dp-footer .dp-links button:hover{text-decoration-color:currentColor}
.dp-footer .dp-note{margin:0;font-size:13px;line-height:1.45;color:var(--dpf-muted,#5f5a52)}
.dp-footer .dp-note+.dp-note{margin-top:2px}
/* Links wrap naturally at phone widths and keep 44px touch targets. */
@media(max-width:560px){.dp-footer .dp-links{gap:0 16px}}
@media(prefers-reduced-motion:reduce){.dp-footer .dp-home,.dp-footer .dp-home svg{transition:none}.dp-footer .dp-home:hover svg{transform:none}}
/* The "someone wants to play" card (lib/game-presence.mjs), in the footer's colours: it sits at the
   bottom of any game page, over the game, until the player picks Play or Not now. It never grows
   past the screen: with very large text it scrolls inside, so its first line and both buttons stay reachable. */
.dp-wait{position:fixed;z-index:1000;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);box-sizing:border-box;width:min(100% - 24px,420px);margin:0;padding:14px 16px;border:1.5px solid var(--dpf-line,#d8d2c4);border-radius:14px;background:var(--dpf-card,#fffdf8);color:var(--dpf-ink,#2c2a26);box-shadow:0 10px 30px rgba(20,16,10,.24);font-size:16px;line-height:1.4;text-align:left;overflow-wrap:anywhere;max-height:calc(100vh - 24px);max-height:calc(100dvh - 12px - max(12px,env(safe-area-inset-bottom)));overflow-y:auto;overscroll-behavior:contain}
.dp-wait p{margin:0}
.dp-wait .dp-wait-text{font-weight:700}
.dp-wait .dp-wait-about{margin-top:2px;font-size:14px;color:var(--dpf-muted,#5f5a52)}
.dp-wait .dp-wait-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.dp-wait button{min-height:44px;min-width:44px;margin:0;padding:0 18px;border-radius:10px;font:inherit;font-weight:700;line-height:1.2;cursor:pointer;box-shadow:none}
.dp-wait .dp-wait-go{border:1.5px solid var(--dpf-ink,#2c2a26);background:var(--dpf-ink,#2c2a26);color:var(--dpf-card,#fffdf8)}
.dp-wait .dp-wait-later{border:1.5px solid var(--dpf-line,#d8d2c4);background:transparent;color:var(--dpf-ink,#2c2a26)}
.dp-wait button:focus-visible{outline:3px solid var(--dpf-accent,currentColor);outline-offset:2px}
/* The small Dayplay home button at the top of every game page (the dp mark, linking to the Dayplay
   home). It sits at the end of the game's own header so the game's name still leads. */
.dp-top{box-sizing:border-box;position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;margin:0;padding:0;border:1.5px solid var(--dpf-line,#d8d2c4);border-radius:12px;background:var(--dpf-card,#fffdf8);text-decoration:none;box-shadow:none;transition:border-color .15s}
.dp-top svg{display:block;width:24px;height:24px;margin:0;color:var(--dpf-ink,currentColor)}
.dp-top:hover{border-color:var(--dpf-accent,currentColor)}
.dp-top:focus-visible{outline:3px solid var(--dpf-accent,currentColor);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.dp-top{transition:none}}
/* Line breaks, in every game (this block is the one stylesheet every game shares): headings, buttons,
   labels and short lines (taglines, card details, captions) wrap into even lines; longer paragraphs
   avoid leaving one word alone on the last line. :where() keeps this under any rule a game sets, and
   the -style longhand leaves white-space:nowrap alone. */
:where(p,li,dd,td,blockquote){text-wrap-style:pretty}
:where(h1,h2,h3,h4,h5,h6,dt,label,legend,summary,figcaption,caption,th,button,small,.lede,.tagline,.hook,.meta,.eyebrow,.choice-meta,.dpt-text){text-wrap-style:balance}
/* dayplay-footer:end */

/* Inline catalogue invitation belongs to the result, including the very first game. */
.dp-more-games,.dp-more-games *{box-sizing:border-box}
a.dp-more-games{display:flex;align-items:center;gap:12px;grid-column:1/-1;width:100%;margin:12px 0 0;padding:13px 14px;border:2px solid #5943a8;border-radius:14px;background:#5943a8;color:#fff8ef;font:16px/1.35 system-ui,sans-serif;text-align:left;text-decoration:none;white-space:normal;min-height:64px;box-shadow:none}
a.dp-more-games:hover{background:#463387;border-color:#463387;color:#fff8ef}
a.dp-more-games:focus-visible{outline:3px solid #302741;outline-offset:3px}
.dp-more-games svg{flex:0 0 30px;width:30px;height:30px;fill:#d3f36b}
.dp-more-games>span{min-width:0;flex:1}
.dp-more-games strong{display:block;font:750 17px/1.3 system-ui,sans-serif;text-wrap:balance}
.dp-more-games span span{display:block;margin-top:4px;font:14px/1.4 system-ui,sans-serif;text-wrap:pretty}
.overlay[data-kind=result] .dp-more-games{order:10}
#overlay:not([data-kind=result]) .dp-more-games,#feedback-box:not([data-kind=won]) .dp-more-games{display:none}
/* Same optional, nonmodal card on the collection and game recap. */
.dp-install,.dp-install *{box-sizing:border-box}.dp-install[hidden],.dp-install [hidden]{display:none!important}
.dp-install{position:fixed;z-index:100;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));width:min(360px,calc(100% - 24px));min-height:min(338px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);overflow-y:auto;padding:22px 18px 18px;border:1.5px solid #302741;border-radius:20px;background:#faf7ef;color:#302741;box-shadow:0 8px 32px #2c224026;font:15px/1.4 system-ui,sans-serif;text-align:left;isolation:isolate;overflow-wrap:break-word}
.dp-install h2{color:inherit;font:750 23px/1.15 system-ui,sans-serif;letter-spacing:-.035em;margin:0 26px 8px 0;text-wrap:pretty}.dp-install p{color:inherit;font:inherit;margin:0 0 12px}.dp-install .dp-phone{display:block;width:184px;height:100px;margin:-5px auto 9px;fill:none}.dp-install button,.dp-install a{font:inherit}.dp-install .dp-install-close{position:absolute;display:grid;place-items:center;right:3px;top:3px;width:44px;height:44px;min-height:44px;padding:12px;border:0;border-radius:9px;background:transparent;color:inherit;box-shadow:none;cursor:pointer}.dp-install-close svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.dp-install .dp-guide{font-size:14px;line-height:1.65}.dp-platform{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.dp-platform svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round;vertical-align:middle}
.dp-install .dp-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dp-install .dp-actions button{min-height:44px;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:inherit;cursor:pointer}.dp-install .dp-primary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1.5px solid #302741!important;border-radius:9px;background:#d4f76b!important;color:#302741!important;font-weight:750;text-decoration:none;padding:9px 12px;cursor:pointer;white-space:normal}.dp-install .dp-entry{display:flex;gap:8px;flex-wrap:wrap}.dp-entry input{flex:1 1 145px;min-width:0;width:100%;min-height:44px;border:1px solid #a59db3;border-radius:9px;background:#fff;padding:9px 10px;color:#302741;font:16px/1.4 system-ui,sans-serif}.dp-install .dp-consent{display:flex;align-items:center;gap:9px;margin:7px 0;min-height:44px;font:14px/1.4 system-ui,sans-serif;cursor:pointer}.dp-consent input{appearance:auto;flex:0 0 18px;width:18px;height:18px;margin:0;accent-color:#6752ad}.dp-install .dp-note{font-size:13px;line-height:1.5}.dp-install .dp-note a{display:inline-block;color:#6752ad;padding-block:7px}.dp-install #welcome-status{margin:12px 0;font-size:15px}.dp-install .dp-label,.dp-install .dp-hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.dp-install :focus-visible{outline:3px solid #6752ad;outline-offset:3px}.dp-install button:disabled{opacity:.6;cursor:wait}
.dp-app-icon{animation:dp-add 3.8s ease-in-out 3;transform-origin:107px 56px}.dp-ring{opacity:0;animation:dp-ring 3.8s ease-out 3;transform-origin:107px 56px}.dp-trail{animation:dp-trail 3.8s ease 3}@keyframes dp-add{0%,10%{transform:translate(-64px,24px) rotate(-12deg) scale(.8);opacity:0}30%,75%,100%{transform:translate(0,0) rotate(0) scale(1);opacity:1}40%{transform:scale(1.12)}50%{transform:scale(1)}}@keyframes dp-ring{32%{opacity:.7;transform:scale(.7)}60%,100%{opacity:0;transform:scale(1.25)}}@keyframes dp-trail{0%,15%{opacity:1}50%,100%{opacity:0}}@media(prefers-reduced-motion:reduce){.dp-app-icon,.dp-ring,.dp-trail{animation:none}.dp-ring,.dp-trail{display:none}}

.dp-platform svg{animation:dp-guide-button 3.8s ease 3;transform-origin:center}.dp-platform:nth-of-type(2) svg{animation-delay:.7s}@keyframes dp-guide-button{0%,15%,75%,100%{transform:translateY(0);color:#302741}30%,50%{transform:translateY(-3px);color:#6752ad}}@media(prefers-reduced-motion:reduce){.dp-platform svg{animation:none}}
.dp-steps{margin:10px 0 0;padding:0 0 0 1.4em}.dp-steps .dp-platform{display:inline;white-space:normal}.dp-steps .dp-nw{white-space:nowrap}.dp-steps .dp-platform svg{display:inline-block;vertical-align:-.3em;margin-right:4px}.dp-ios-steps:focus{outline:none}.dp-steps li{padding-left:2px}.dp-steps li+li{margin-top:4px}
.dp-guide-more{margin:8px 0 0;font-size:14px;line-height:1.5}.dp-guide-more summary{cursor:pointer;font-weight:650;min-height:24px}.dp-guide-more p{margin:6px 0 0}
