/* Puzzle answer pages (/maths/fly/0/, /science/fly/0/).
   Everything is scoped under .pz so it never clashes with main.css. */
.pz{max-width:760px;margin:0 auto;padding:36px var(--gutter) 0}
.pz .crumbs{justify-content:center;margin-bottom:14px}
.pz-intro{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:0 0 30px}
.pz-intro .by{margin-top:0}
.pz-intro h1{margin:10px 0 6px;font-size:clamp(28px,7vw,40px);font-weight:800;line-height:1.1}
.pz-intro h1 em{font-style:normal;color:var(--blue)}
.pz-intro .lead{font-size:15px;color:var(--body);max-width:520px;line-height:1.55}
.pz-intro .note{font-family:var(--hand);font-size:22px;color:var(--blue);transform:rotate(-2deg);margin-top:6px}
.pz .card{padding:20px;margin:0 0 18px;border-radius:20px;box-shadow:0 1px 0 rgba(11,27,63,.03)}
.pz .card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.pz .card-head h2{margin:0;font-size:19px;font-weight:800;letter-spacing:-.3px}
.pz .tag{border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800;letter-spacing:1px}
.pz .easy{background:var(--wash);color:var(--blue)}
.pz .medium{background:var(--soft);color:var(--ink)}
.pz .hard{background:var(--ink);color:#fff}
.pz .q{margin:8px 0 14px;font-size:14.5px;color:var(--body);line-height:1.5}
.pz .redstrip{fill:#FCA5A5}
.pz .qfig{background:#FFFFFF;border:1.5px dashed var(--pale);border-radius:14px;padding:14px;display:flex;justify-content:center;margin-bottom:4px}
.pz .qfig svg{width:100%;max-width:var(--w,420px);height:auto;display:block}
.pz .sol-label{margin:16px 0 8px;font-size:11px;font-weight:800;letter-spacing:1.6px;color:var(--blue2)}
.pz .stage{background:var(--mist);border-radius:14px;padding:12px;display:flex;justify-content:center}
.pz .stage svg{width:100%;max-width:520px;height:auto;display:block}
.pz-steps{margin:14px 0 0;padding:0;list-style:none;counter-reset:s;display:flex;flex-direction:column;gap:8px}
.pz-steps li{counter-increment:s;position:relative;display:block;padding-left:34px;font-size:14.5px;line-height:1.5;color:var(--body)}
.pz-steps li::before{content:counter(s);position:absolute;left:0;top:0;width:24px;height:24px;border-radius:7px;background:var(--wash);color:var(--navy);font-family:var(--display);font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center}
.pz-steps b{color:var(--ink)}
.pz .card:not(.open) .reveal,.pz .card:not(.open) .answer{display:none}
.pz .card:not(.open) .foot{justify-content:flex-end}
.pz .foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}
.pz .answer{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(120deg,var(--blue2),var(--navy));color:#fff;border-radius:999px;padding:8px 16px;font-family:var(--display);font-weight:800;font-size:16px}
.pz .answer small{font-family:var(--text);font-weight:700;font-size:11px;letter-spacing:1px;color:var(--pale)}
.pz .replay{appearance:none;border:1.5px solid var(--pale);background:#fff;color:var(--navy);border-radius:999px;min-height:40px;padding:0 14px;font:700 13px var(--text);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.pz .replay:hover{border-color:var(--blue2)}
.pz .replay[aria-expanded="false"]{background:var(--blue2);border-color:var(--blue2);color:#fff}
.pz .replay[aria-expanded="false"]:hover{background:var(--blue)}
.pz-more{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:26px 0 0}

/* animation system */
.pz .a{opacity:0}
.pz .play .a{animation:pzFadeUp .6s ease forwards;animation-delay:var(--d,0s)}
.pz .play .pop{animation:pzPop .55s cubic-bezier(.2,1.4,.4,1) forwards;animation-delay:var(--d,0s)}
.pz .play .draw{stroke-dasharray:var(--len,400);stroke-dashoffset:var(--len,400);opacity:1;animation:pzDraw 1s ease forwards;animation-delay:var(--d,0s)}
.pz .play .rise{transform-box:fill-box;transform-origin:bottom;transform:scaleY(0);opacity:1;animation:pzRise 1.4s ease forwards;animation-delay:var(--d,0s)}
.pz .play .shrink{transform-box:fill-box;transform-origin:center;animation:pzShrink 1s ease forwards;animation-delay:var(--d,0s)}
.pz .play .hl{animation:pzHl .6s ease forwards;animation-delay:var(--d,0s)}
.pz .play .dim{animation:pzDim .5s ease forwards;animation-delay:var(--d,0s)}
.pz .play .flip{transform-box:fill-box;transform-origin:center;animation:pzFlip .7s ease forwards;animation-delay:var(--d,0s)}
.pz .play .out{animation:pzOut .4s ease forwards;animation-delay:var(--d,0s)}
.pz .draw,.pz .rise,.pz .flip{opacity:0}
.pz .pop{transform-box:fill-box;transform-origin:center}
@keyframes pzFadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes pzPop{0%{opacity:0;transform:scale(.4)}100%{opacity:1;transform:scale(1)}}
@keyframes pzDraw{to{stroke-dashoffset:0}}
@keyframes pzRise{to{transform:scaleY(1)}}
@keyframes pzShrink{to{transform:scale(.15);opacity:0}}
@keyframes pzHl{to{fill:#93C5FD}}
@keyframes pzDim{to{opacity:.35}}
@keyframes pzFlip{0%{opacity:0;transform:scaleX(0)}100%{opacity:1;transform:scaleX(1)}}
@keyframes pzOut{to{opacity:0}}
@media (prefers-reduced-motion: reduce){
  .pz .a,.pz .pop,.pz .draw,.pz .rise,.pz .flip{opacity:1 !important;animation:none !important;transform:none !important;stroke-dashoffset:0 !important}
  .pz .shrink,.pz .out{opacity:0 !important;animation:none !important}
}
