/* Play with Joy. Reuses the site tokens from /styles.css (navy, gold, cream, sky, Fredoka, Nunito, .btn). */
.nav a[aria-current="page"]{border-color:var(--gold)}

.play-hero{background:linear-gradient(180deg,var(--sky),var(--cream));padding:40px 0 24px}
.play-hero h1{font-size:clamp(42px,6vw,68px);padding-bottom:.08em;line-height:1.1;margin-bottom:12px}
.play-hero .lede{margin-bottom:26px}
.play-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:880px}
.play-card{display:flex;align-items:center;gap:18px;text-align:left;font:inherit;color:var(--navy);background:var(--white);border:3px solid var(--line);border-radius:var(--r);padding:18px 22px;min-height:112px;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s,border-color .15s}
.play-card:hover{transform:translateY(-2px)}
.play-card[aria-selected="true"]{border-color:var(--navy);box-shadow:0 0 0 4px var(--gold),var(--shadow)}
.play-card:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.play-ico{flex:none;width:64px;height:64px;padding:10px;border-radius:50%;background:var(--sky);color:var(--navy)}
.play-card-txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.play-card-t{font:600 clamp(23px,2.6vw,28px)/1.1 var(--h)}
.play-card-d{font-size:17px;line-height:1.35;color:var(--muted)}
@media (max-width:640px){
  .play-hero{padding:24px 0 18px}
  .play-hero .lede{font-size:18px;margin-bottom:18px}
  .play-cards{grid-template-columns:1fr;gap:10px}
  .play-card{min-height:84px;padding:12px 16px;gap:14px}
  .play-ico{width:52px;height:52px;padding:8px}
  .play-card-d{font-size:15px}
}

.game{padding:34px 0 60px}
.panel[hidden]{display:none}

/* color: page picker */
.pages{display:grid;grid-template-columns:repeat(6,minmax(0,76px));gap:10px;justify-content:center;margin-bottom:22px}
.pg{position:relative;padding:0;aspect-ratio:1;border:3px solid var(--line);border-radius:16px;background:var(--white);cursor:pointer;overflow:hidden;min-width:44px}
.pg img{width:100%;height:100%;object-fit:contain}
.pg[aria-pressed="true"]{border-color:var(--navy);box-shadow:0 0 0 3px var(--gold)}
.pg:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.pg-done{display:none;position:absolute;right:3px;bottom:3px;width:20px;height:20px;border-radius:50%;background:var(--gold-ink)}
.pg-done::after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid var(--white);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.pg[data-done] .pg-done{display:block}

/* color: stage */
.stage{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:start}
.canvas-col{display:flex;flex-direction:column;align-items:center;min-width:0;--arn:1}
.canvas-wrap{position:relative;width:min(100%,calc(var(--arn,1) * 70vh));width:min(100%,calc(var(--arn,1) * 70dvh));aspect-ratio:var(--ar,1);background:var(--white);border:3px solid var(--navy);border-radius:var(--r);overflow:hidden;touch-action:manipulation;-webkit-tap-highlight-color:transparent;box-shadow:var(--shadow);cursor:pointer}
.canvas-wrap:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.canvas-wrap #lines{pointer-events:none}
.loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--white);font:600 22px/1.2 var(--h);color:var(--muted);text-align:center;padding:20px;pointer-events:none}
.loading[hidden]{display:none}
.progress{width:min(100%,calc(var(--arn,1) * 70vh));width:min(100%,calc(var(--arn,1) * 70dvh));height:10px;background:var(--line);border-radius:999px;margin-top:14px;overflow:hidden}
.progress span{display:block;height:100%;width:0;background:var(--gold);border-radius:999px;transition:width .3s}

.tools{display:flex;flex-direction:column;gap:14px;min-width:0}
.tools-h{font:600 22px/1.1 var(--h)}
.palette{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.sw{width:100%;aspect-ratio:1;min-height:48px;border-radius:50%;background:var(--c);border:3px solid var(--navy);cursor:pointer;padding:0;transition:transform .12s}
.sw[aria-pressed="true"]{outline:4px solid var(--gold);outline-offset:3px;transform:scale(1.08)}
.sw:focus-visible{outline:4px solid var(--navy);outline-offset:3px}
.tool-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tool-row .btn{padding:10px 14px;font-size:18px}
.tool-row #save{grid-column:1/-1}
.status{min-height:1.6em;color:var(--muted);font-size:17px;font-weight:700}

.calm{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--white);border:2px solid var(--line);border-radius:var(--r);padding:10px 14px;min-height:56px;font:inherit;color:var(--navy);cursor:pointer}
.calm:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.calm-sw{flex:none;position:relative;width:54px;height:32px;border-radius:999px;background:#d6dcea;border:2px solid var(--navy);transition:background .15s}
.calm-sw::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--navy);transition:transform .15s}
.calm[aria-checked="true"] .calm-sw{background:var(--gold)}
.calm[aria-checked="true"] .calm-sw::after{transform:translateX(22px)}
.calm-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.calm-t b{font:600 18px/1.2 var(--h)}
.calm-t span{font-size:15px;line-height:1.3;color:var(--muted)}
#panel-spot .calm{max-width:460px;margin:26px auto 0}

.done{display:flex;align-items:center;gap:14px;background:var(--white);border:3px solid var(--gold);border-radius:var(--r);padding:12px 14px}
.done[hidden]{display:none}
.done img{flex:none;width:56px;height:auto;border-radius:12px}
.done-t{font:600 22px/1.15 var(--h)}
.done-d{font-size:17px;line-height:1.35;color:var(--muted);margin-top:4px}
body:not(.calm) .done{animation:pop .4s ease-out}

/* ripples, confetti, keyboard cursor: decoration never takes the tap */
.ripple{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border:4px solid var(--gold);border-radius:50%;pointer-events:none;animation:ripple .55s ease-out forwards;z-index:3}
.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:60}
.kcur{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;border:4px solid var(--navy);border-radius:50%;box-shadow:0 0 0 3px var(--white);pointer-events:none;z-index:4}
.kcur[hidden]{display:none}

/* spot */
.spot-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;max-width:980px;margin:0 auto 10px}
.spot-count{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.spot-n{font:600 clamp(26px,3vw,34px)/1 var(--h)}
.stars{display:flex;gap:4px}
.star svg{display:block;fill:none;stroke:var(--gold-ink);stroke-width:1.8;stroke-linejoin:round;transition:fill .2s}
.star.on svg{fill:var(--gold)}
.spot-actions{display:flex;gap:10px}
.spot-actions [hidden]{display:none}
.spot-msg{min-height:1.7em;max-width:980px;margin:0 auto 14px;font-size:19px;font-weight:700;color:var(--navy)}
.boards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;max-width:980px;margin:0 auto}
.board{position:relative;background:var(--white);border:3px solid var(--navy);border-radius:var(--r);box-shadow:var(--shadow);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.board:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.board img{width:100%;height:auto;border-radius:calc(var(--r) - 3px);pointer-events:none;user-select:none;-webkit-user-drag:none}
.marks{position:absolute;inset:0;pointer-events:none}
.ring{position:absolute;aspect-ratio:1;min-width:56px;height:auto;border:5px solid var(--gold);border-radius:50%;background:rgba(224,166,64,.16);transform:translate(-50%,-50%) scale(.5);opacity:0;pointer-events:none;transition:transform .25s ease-out,opacity .2s}
.ring.found{opacity:1;transform:translate(-50%,-50%) scale(1)}
.ring.hint:not(.found){opacity:1;transform:translate(-50%,-50%) scale(1);border-style:dashed;border-color:var(--navy);animation:glow 1.3s ease-in-out infinite}
body:not(.calm) .board.nudge{animation:nudge .4s ease-in-out}
@media (max-width:700px){
  .boards{grid-template-columns:1fr;max-width:440px;gap:16px}
  .spot-bar{position:sticky;top:68px;z-index:5;background:var(--cream);padding:8px 0;margin-bottom:0;border-bottom:1px solid var(--line);max-width:440px}
  .spot-msg{max-width:440px;margin-top:10px;font-size:18px}
}

.grownups{background:var(--sky);padding:64px 0}
.grownups-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:center}
.grownups h2{margin-bottom:12px}
.grownups p:not(.eyebrow){font-size:19px;color:var(--muted);max-width:40em}
.grownups-cta{display:flex;flex-direction:column;gap:12px}

@media (max-width:900px){
  .stage{grid-template-columns:1fr;gap:20px}
  .tools{max-width:440px;width:100%;margin-inline:auto}
  .canvas-wrap{width:min(100%,calc(var(--arn,1) * 62vh));width:min(100%,calc(var(--arn,1) * 62dvh))}
  .progress{width:min(100%,calc(var(--arn,1) * 62vh));width:min(100%,calc(var(--arn,1) * 62dvh))}
  .grownups-in{grid-template-columns:1fr}
  .grownups-cta{flex-direction:row;flex-wrap:wrap}
}
@media (max-width:560px){
  .game{padding:22px 0 44px}
  .pages{gap:8px;margin-bottom:16px}
  .palette{grid-template-columns:repeat(6,1fr);gap:8px}
  .sw{border-width:2px;min-height:44px}
  .grownups{padding:44px 0}
  .grownups-cta .btn{width:100%}
  .top-in{gap:10px}
}

@keyframes ripple{from{transform:scale(.4);opacity:.9}to{transform:scale(2.6);opacity:0}}
@keyframes pop{from{transform:scale(.94);opacity:0}to{transform:none;opacity:1}}
@keyframes nudge{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(27,47,87,.35)}50%{box-shadow:0 0 0 12px rgba(27,47,87,0)}}
body.calm .ripple,body.calm .confetti{display:none}
body.calm *{animation:none!important}
@media (prefers-reduced-motion:reduce){
  .ripple,.confetti{display:none}
  *{animation:none!important;transition:none!important}
}
