/* Harbor House — Dino Discovery (Rebuild Phase B)
   Dino-specific styles only. Shared scene system lives in scene.css;
   shared exhibit chrome in exhibit.css (untouched). */

/* ── Jungle scene stage ─────────────────────────── */
.dino-scene{aspect-ratio:1200/640;background:#ffe9b8;box-shadow:var(--shadow)}
.dino-scene .scene-cam{position:absolute;inset:0}
.dino-scene .scene-world,.dino-dig-scene .scene-world{inset:0}
.dino-scene .scene-world > svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.dino-ambient{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6}
.dino-vignette{position:absolute;inset:0;pointer-events:none;z-index:5}
.no-hit{pointer-events:none}
#dino-scene [data-depth]{will-change:transform}

/* Volcano smoke + light shafts */
.smoke-drift{transform-box:fill-box;transform-origin:center}
body:not(.hh-calm) .smoke-drift{animation:smokeDrift 6.5s ease-in-out infinite}
body:not(.hh-calm) .smoke-drift.s2{animation-delay:-2.2s}
body:not(.hh-calm) .smoke-drift.s3{animation-delay:-4.1s}
@keyframes smokeDrift{0%,100%{transform:translate(0,0);opacity:.75}50%{transform:translate(7px,-9px);opacity:1}}
.shaft{animation:shaftGlow 7s ease-in-out infinite}
@keyframes shaftGlow{0%,100%{opacity:.10}50%{opacity:.18}}
body.hh-calm .shaft{animation:none;opacity:.12}

/* ── Daisy rig ──────────────────────────────────── */
#daisy{cursor:pointer;pointer-events:all}
#daisy:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
#daisy-react{transform-box:fill-box;transform-origin:50% 94%}
#daisy-tail{transform-box:fill-box;transform-origin:96% 38%}
.daisy-neckwrap{transform-box:fill-box;transform-origin:82% 96%;transition:transform .85s var(--ease-bounce)}
#daisy.daisy-lean .daisy-neckwrap{transform:rotate(-7deg)}
body.hh-calm #daisy.daisy-lean .daisy-neckwrap{transform:rotate(-3deg)}
#daisy-look{transform-box:fill-box;transform-origin:68% 94%}
.daisy-spots circle{fill:#40916c;opacity:.32}

/* ── Egg & shards ───────────────────────────────── */
#dino-egg{cursor:pointer;pointer-events:all}
.egg-wiggle{transform-box:fill-box;transform-origin:bottom center}
.egg-shake .egg-wiggle{animation:eggShake .45s ease-in-out}
@keyframes eggShake{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}
.egg-shard{transform-box:fill-box;transition:transform .7s var(--ease-bounce),opacity .5s var(--ease)}
.egg-hatched .shard-1{transform:rotate(-42deg) translate(-20px,14px);opacity:.92}
.egg-hatched .shard-2{transform:rotate(16deg) translate(4px,-16px);opacity:.95}
.egg-hatched .shard-3{transform:rotate(48deg) translate(22px,12px);opacity:.92}
.egg-baby{transition:opacity .45s var(--ease)}
body.hh-calm .egg-baby{animation:none}
body.hh-calm .egg-shard{transition-duration:.01s}

/* ── Footprints in scene + Field Notes hint ─────── */
.footprint{cursor:pointer;pointer-events:all}
.footprint:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.fp-ring{fill:none;stroke:#ffc93c;stroke-width:4;opacity:0;transform-box:fill-box;transform-origin:center}
body:not(.hh-calm) .footprint .fp-ring{animation:fpPulse 2.1s ease-in-out infinite}
.footprint[data-fact="1"] .fp-ring{animation-delay:-.5s}
.footprint[data-fact="2"] .fp-ring{animation-delay:-1s}
.footprint[data-fact="3"] .fp-ring{animation-delay:-1.5s}
@keyframes fpPulse{0%,100%{opacity:.15;transform:scale(.82)}50%{opacity:.95;transform:scale(1.12)}}
.fp-num{font-family:var(--font-display);font-weight:800;fill:#0f2340;pointer-events:none}
.dino-fp-hint{position:absolute;left:10px;bottom:10px;z-index:7;background:rgba(15,35,64,.88);color:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--fs-sm);border-radius:999px;padding:.45rem .9rem;pointer-events:none;transition:opacity .5s var(--ease)}
.dino-fp-hint.used{opacity:0}

/* ── Daisy speech bubble (in-scene, beside her head) ── */
.daisy-bubble{position:absolute;left:58%;top:3.5%;z-index:8;max-width:min(252px,48vw);background:#fff;border:3px solid var(--sun);border-radius:18px;padding:.6rem .85rem;box-shadow:var(--shadow);pointer-events:none;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .35s var(--ease),transform .35s var(--ease),visibility 0s linear .35s}
.daisy-bubble.show{opacity:1;visibility:visible;transform:none;transition:opacity .35s var(--ease),transform .35s var(--ease)}
.daisy-bubble p{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.05rem;line-height:1.35;color:var(--navy)}
.daisy-bubble::after{content:"";position:absolute;left:30px;bottom:-13px;border:7px solid transparent;border-top:10px solid var(--sun)}
body.hh-calm .daisy-bubble{transform:none;transition:opacity .35s var(--ease),visibility 0s linear .35s}
body.hh-calm .daisy-bubble.show{transition:opacity .35s var(--ease)}

/* ── Field Notes trail (HTML markers) ───────────── */
.field-notes{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-4)}
.fn-marker{position:relative;display:inline-flex;align-items:center;gap:var(--sp-2);min-height:52px;padding:var(--sp-2) var(--sp-4) var(--sp-2) var(--sp-2);border-radius:999px;border:3px dashed rgba(45,106,79,.55);background:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--fs-base);color:var(--navy);cursor:pointer}
.fn-marker .fn-num{flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:var(--sun);color:var(--navy);display:inline-flex;align-items:center;justify-content:center;font-weight:800;border:2px solid var(--sun-dark)}
.fn-marker::after{content:"";position:absolute;inset:-7px;border-radius:999px;border:3px solid var(--sun);opacity:0;pointer-events:none}
body:not(.hh-calm) .fn-marker:not(.seen)::after{animation:fnRing 2.1s ease-in-out infinite}
@keyframes fnRing{0%,100%{opacity:.12;transform:scale(.98)}50%{opacity:.85;transform:scale(1.03)}}
.fn-marker.seen{border-style:solid;border-color:var(--w-dino-2);background:var(--w-dino-bg)}
.fn-marker.seen .fn-num{background:var(--w-dino-2);color:#fff;border-color:var(--w-dino)}

/* ── The Dig ────────────────────────────────────── */
.mission{margin-bottom:var(--sp-4)}
.dino-dig-scene{aspect-ratio:800/460;background:#4a3220;box-shadow:var(--shadow-sm)}
.dino-dig-scene .scene-world{overflow:hidden;border-radius:inherit}
.dd-fossil,.dd-bruno{position:absolute;inset:0;width:100%;height:100%;display:block}
.dd-fossil{transition:opacity .8s var(--ease)}
.dd-fossil.fossil-out{opacity:0}
.dd-fossil .fossil-bones{transform-box:fill-box;transform-origin:50% 60%;transition:transform .95s var(--ease)}
.dd-fossil .fossil-bones.bones-lift{transform:translateY(-9px) scale(1.018)}
.dd-fossil .fossil-glow-el{transition:opacity .8s var(--ease)}
.dd-bruno{opacity:0;transform:translateY(16px) scale(.965);transition:opacity .85s var(--ease),transform 1.05s var(--ease);pointer-events:none}
.dd-bruno.bruno-in{opacity:1;transform:none}
.dd-bruno.no-anim,.dd-fossil.no-anim,.dd-fossil.no-anim .fossil-bones{transition:none!important}
#dirt-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair;z-index:3}
#dig-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
#dig-glints{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
.brush-ring{position:absolute;left:0;top:0;border:3px solid rgba(255,255,255,.95);outline:2px solid rgba(15,35,64,.5);border-radius:50%;pointer-events:none;opacity:0;z-index:5;will-change:transform}
.dino-dig-scene .progress-dock{position:absolute;left:50%;transform:translateX(-50%);bottom:10px;z-index:6;width:min(700px,calc(100% - 16px));flex-wrap:wrap;justify-content:center;pointer-events:none}
.dino-dig-scene .discovery-card{position:absolute;top:10px;right:10px;z-index:8;width:min(330px,calc(100% - 20px));max-height:calc(100% - 20px);overflow-y:auto;user-select:none;-webkit-user-select:none}
.discovery-card h3{padding-right:52px}
/* Phase G: on small screens cap the card so part of the dig stays visible */
@media (max-width:640px){
  .dino-dig-scene .discovery-card{max-height:74%}
}
.discovery-card .disc-close{position:absolute;top:6px;right:6px;width:44px;height:44px;min-width:44px;min-height:44px;border-radius:50%;border:2px solid rgba(15,35,64,.25);background:#fff;font-size:1.05rem;font-weight:800;color:var(--navy);cursor:pointer;line-height:1}
.discovery-card .disc-keep{margin-top:var(--sp-3);width:100%;min-height:52px;font-size:var(--fs-md);justify-content:center}
.discovery-card{position:relative}
.dino-dig-scene .discovery-card{position:absolute}
.bruno-bubble{position:absolute;top:10px;left:10px;z-index:7;background:#fff;border:3px solid var(--sun);border-radius:18px;padding:var(--sp-3) var(--sp-4);max-width:min(300px,72%);box-shadow:var(--shadow);animation:disc-in .5s var(--scene-ease)}
.bruno-bubble p{margin:0;font-weight:800;color:var(--navy);font-size:var(--fs-base);line-height:1.4}
.bruno-bubble::after{content:"";position:absolute;left:34px;bottom:-13px;border:7px solid transparent;border-top:10px solid var(--sun)}
body.hh-calm .bruno-bubble{animation:none}
.dig-controls{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;margin-top:var(--sp-4)}
.dig-controls .ex-progress{flex:1 1 200px}
.dig-done-panel{border:3px solid var(--sun)}
.dig-done-panel .passport-link{font-family:var(--font-display);font-weight:800}

/* Calm: dig transitions become fades only */
body.hh-calm .dd-bruno,body.hh-calm .dd-fossil,body.hh-calm .dd-fossil .fossil-bones{transition-duration:.01s}
body.hh-calm .discovery-card{animation:none}

@media (max-width:560px){
  .dino-scene{aspect-ratio:1200/700}
  .dino-dig-scene .progress-dock{gap:var(--sp-2);padding:.4rem .6rem}
  .dino-dig-scene .progress-dock .pd-text{white-space:normal;text-align:center;font-size:.8rem}
  .dino-dig-scene .progress-dock .pd-bar{min-width:70px}
  .daisy-bubble{left:auto;right:2%;top:2%;max-width:47vw;padding:.5rem .7rem}
  .daisy-bubble p{font-size:.95rem}
  .bruno-bubble{padding:var(--sp-2) var(--sp-3)}
  .bruno-bubble p{font-size:var(--fs-sm)}
  .dino-fp-hint{font-size:.78rem;padding:.35rem .7rem;bottom:auto;top:8px;left:50%;transform:translateX(-50%);white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){
  .smoke-drift,.shaft,.fp-ring,.fn-marker::after{animation:none!important}
}
