@font-face{font-family:EDF;src:url('../commun/EDF2020.otf');font-display:swap}@font-face{font-family:EDF;src:url('../commun/EDF2020-Bold.otf');font-weight:700;font-display:swap}@font-face{font-family:Soft;src:url('../commun/EDF2020Soft-BoldItalic.otf');font-weight:700;font-style:italic;font-display:swap}
:root{--blue:#001a70;--green:#c0e410;--warm:#ffb210;--orange:#fe5716}*{box-sizing:border-box}body{margin:0;background:var(--blue);font:16px/1.4 EDF,system-ui,sans-serif;color:var(--blue);-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible,.field:focus-visible{outline:3px solid #1089ff;outline-offset:4px}.game{max-width:440px;background:white;margin:28px auto;border-radius:28px;overflow:hidden;box-shadow:0 24px 75px #0004}header{display:flex;justify-content:space-between;align-items:center;padding:19px 26px 14px;gap:15px}header img{object-fit:contain}header>span{font-size:13px;text-align:right;font-weight:700}header small{display:block;font-weight:400;font-size:12px;color:#526187}.intro{padding:12px 26px 20px}.intro>p:first-child{font-size:13px;color:#526187;margin:0 0 12px}h1{font-size:51px;line-height:.97;letter-spacing:-.045em;margin:0}em{font-family:Soft,Georgia,serif;color:#4f9e30;font-weight:700}.instruction{font-size:16px;color:#526187;line-height:1.4;margin:15px 0 0}.signal{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin:0 16px 9px;border-radius:11px;background:#001a7008;min-height:46px;font-size:14px;font-weight:700}#signal{display:flex;gap:4px;align-items:center}#signal i{display:block;width:6px;height:16px;border-radius:2px;background:#001a7018}#signal i:nth-child(2){height:19px}#signal i:nth-child(3){height:22px}#signal i:nth-child(4){height:25px}#signal i:nth-child(5){height:28px}#signal i.on{background:var(--blue)}.warm #signal i.on{background:#ff861d}.hot #signal i.on{background:#d6430a}.hot .signal{background:#ffb21018}.inspection{position:relative;margin:0 16px}.field{position:relative;aspect-ratio:1;overflow:hidden;border-radius:17px;touch-action:none;cursor:crosshair;background:var(--blue);outline-offset:3px;user-select:none;-webkit-user-select:none}.landscape{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}#lens{position:absolute;left:0;top:0;width:116px;height:116px;border:3px solid white;border-radius:50%;overflow:hidden;transform:translate3d(var(--x,0px),var(--y,0px),0) translate(-50%,-50%);box-shadow:0 0 0 2px var(--blue),0 5px 16px #0005;pointer-events:none;will-change:transform;opacity:0}.exploring #lens{opacity:1}.lens-picture{position:absolute;inset:0;background-image:url('assets/pylone-edf.webp');background-repeat:no-repeat;pointer-events:none}.reticle{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:white;stroke-width:1.5;filter:drop-shadow(0 1px 2px #001a70)}.hold-ring{stroke:var(--green);stroke-width:4;stroke-dasharray:1;stroke-dashoffset:var(--remaining,1);transform:rotate(-90deg);transform-origin:center}#heat{position:absolute;left:0;top:0;transform:translate3d(var(--hx,0px),var(--hy,0px),0) translate(-50%,-50%);width:40px;height:40px;pointer-events:none;opacity:0;transition:opacity .35s}#heat i,.lens-heat{display:block;width:40px;height:40px;background:radial-gradient(circle,#fff 0 8%,#ffb210 17%,#fe5716 34%,#fe571600 70%);border-radius:50%}.lens-heat{position:absolute;left:0;top:0;width:66px;height:66px;transform:translate(var(--heat-lens-x,0px),var(--heat-lens-y,0px)) translate(-50%,-50%);pointer-events:none}.initial-hint{position:absolute;left:50%;top:54%;transform:translate(-50%,-50%);border-radius:15px;padding:10px 20px;background:#fffef5ee;text-align:center;box-shadow:0 3px 20px #001a7035;pointer-events:none;white-space:nowrap}.initial-hint span{display:block;font-size:34px;line-height:1.2}.initial-hint b{font-size:14px}.exploring .initial-hint{display:none}.found-marker{position:absolute;left:0;top:0;transform:translate3d(var(--hx,0px),var(--hy,0px),0) translate(-50%,-50%);width:66px;height:66px;border:3px solid var(--green);border-radius:50%;display:grid;place-items:center;opacity:0;pointer-events:none}.found-marker span{background:var(--green);color:var(--blue);border-radius:50%;width:30px;height:30px;display:grid;place-items:center;font-size:21px}.located #heat,.located .found-marker{opacity:1}.located #lens{opacity:0}.won .field{filter:blur(4px)}#success{position:absolute;inset:0;display:grid;place-items:center;background:#001a7030;border-radius:17px;padding:14px;animation:appear .35s ease}#success[hidden]{display:none}.success-card{background:var(--green);border-radius:20px;padding:16px 18px;width:100%;display:grid;justify-items:center;gap:10px;box-shadow:0 12px 28px #001a7045}.success-card h2{font-size:clamp(26px,7vw,30px);line-height:1.08;letter-spacing:-.03em;text-align:center;text-wrap:balance;margin:0}.success-card button{background:var(--blue);border:0;color:white;padding:15px;width:100%;border-radius:11px;display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700;gap:12px}.success-card button span{color:var(--green)}footer{display:flex;align-items:center;justify-content:space-between;padding:7px 23px 0}footer button{background:none;border:0;min-height:44px;color:#526187;font-size:14px;padding:9px 0}.note{font-size:11px;text-align:center;color:#526187;padding:0 12px 16px;margin:4px 0 0}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:520px){body{background:white}.game{margin:0 auto;border-radius:0;box-shadow:none;min-height:100svh}header{padding:14px 23px 10px}.intro{padding:8px 23px 15px}h1{font-size:46px}.intro>p:first-child{margin-bottom:9px}.instruction{margin-top:12px}.note{padding-bottom:max(12px,env(safe-area-inset-bottom))}}@media(max-height:700px) and (max-width:520px){h1{font-size:36px}h1 br{display:none}.intro{padding-top:4px;padding-bottom:12px}.instruction{font-size:15px;margin-top:10px}.signal{padding:7px 13px;min-height:41px}.note{font-size:10px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
#pointer{position:absolute;left:0;top:0;width:14px;height:14px;border:2px solid white;box-shadow:0 0 0 1px var(--blue);border-radius:50%;transform:translate3d(var(--px,0px),var(--py,0px),0) translate(-50%,-50%);opacity:0;pointer-events:none}.exploring #pointer{opacity:1}.located #pointer{opacity:0}h1 br::after{content:' '}
/* The existing scene is unchanged: a reusable iguana sprite is composited above it. */
#heat{opacity:1;width:var(--iguana-width);height:calc(var(--iguana-width) / 1.5);mix-blend-mode:multiply;transition:none;transform:translate3d(var(--hx,0px),var(--hy,0px),0) translate(-60%,-50%)}
#heat img,.lens-heat img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.lens-heat{width:var(--iguana-width);height:calc(var(--iguana-width) / 1.5);background:none;border-radius:0;mix-blend-mode:multiply;transform:translate(var(--heat-lens-x,0px),var(--heat-lens-y,0px)) translate(-60%,-50%)}

.success-card{position:relative}.success-card .prize{display:block;width:180px;max-width:100%;height:126px;object-fit:cover;pointer-events:none}

/* Remove only near-white background; retain original green pigment in normal blending. */
#heat,.lens-heat,.prize{mix-blend-mode:normal}#heat img,.lens-heat img,.prize{filter:url(#iguane-detoure)}
/* Keep the magnified animal visible through the reveal, before the success overlay. */
.located #lens{opacity:1}
/* Keep the capture card inside the square scene on small phones. */
@media(max-width:360px){.success-card .prize{width:144px;height:104px}.success-card{gap:8px;padding:14px 16px}.success-card h2{font-size:26px}}

/* Completing the mission is the primary action; searching again remains optional. */
.success-card{gap:6px}.success-card .prize{width:144px;height:104px}
.success-card button{min-height:44px;padding:12px 15px}
.success-card #next{justify-content:center;padding:8px;background:transparent;color:var(--blue);font-weight:400;text-decoration:underline;text-underline-offset:3px}
@media(max-width:360px){.success-card{gap:4px;padding:10px 16px}.success-card .prize{width:116px;height:80px}.success-card h2{font-size:24px}.success-card button{font-size:14px}}

header small a{display:inline-block;color:inherit;text-underline-offset:3px;min-height:24px;padding-top:3px}
