/* AM-A13 — typographie AM-ART-025 V1.1 (polices libres Noto, WOFF2 locaux) : A « Atlante Royale » = titres, B « Chroniques » = narration, C « Océan » = interface, chiffres, boutons. Aucune dépendance réseau. */
:root{--f-title:'AM Atlante',Georgia,serif;--f-narr:'AM Chroniques',Georgia,serif;--f-ui:'AM Ocean',system-ui,sans-serif}
html,body,button,input,select,textarea{font-family:var(--f-ui)}
h1,h2,h3,.a1card h2,.goal h2,.gk,.am-title{font-family:var(--f-title)}
.bubble p,.pbub p,#pit-b p,.cart,.plq,.tipbox p,.tip-text,.chest-msg{font-family:var(--f-narr)}
button,.nav2 *,.hud *,.num,.cost,.pv,.os-count,.order-reward,.os-count{font-family:var(--f-ui);font-variant-numeric:tabular-nums}
#v-goals .carnet .ctitle,.carnet .goal h2,.carnet .gk{font-family:var(--f-title)}
#coral-gauge .cg-num,#coral-gauge .cg-sub{font-family:var(--f-ui)}
/* A13 (req. 76) : compteur d'énergie « valeur/capacité » lisible dans la pastille ; l'horloge de régénération reste à droite (absente au plafond). */
.hud-values .energy-readout{gap:6px;left:22px}
.hud-values .energy-readout .energy-line{display:flex;align-items:baseline;gap:1px}
.hud-values .energy-readout #energy{font-size:29px;font-family:var(--f-ui);font-weight:800}
.hud-values .energy-readout #energy.long{font-size:23px}
.hud-values #energy-cap{font-family:var(--f-ui);font-size:17px;font-weight:700;color:#bfe9ff;text-shadow:0 1px 2px #001}
.hud-values #energy-clock{font-size:15px}

/* ───── A13 (req. 61–70) : gros plan A1 — aquarium dominant et légèrement agrandi, plus de vide, journal vivant + galerie + restauration interactive, compact et tactile ───── */
#v-a1:not([hidden]){display:flex;flex-direction:column}#v-a1{overflow:hidden}
#v-a1 .a1top{flex:none;overflow:hidden;padding-top:calc(max(8px,env(safe-area-inset-top)) + 46px)}
#v-a1 .a1img{width:114%;margin-left:-7%}
#v-a1 .a1card{flex:1;min-height:0;display:flex;flex-direction:column;padding:6px 0 0;background:linear-gradient(#030f1d,#061b32 40%)}
#v-a1 .a1body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:4px 14px 10px;display:flex;flex-direction:column;gap:9px}
#v-a1 .a1card h2{margin:0;font:700 19px/1.15 var(--f-title);color:#fff;letter-spacing:.02em}
#v-a1 .a1card h2 small{font:400 13px var(--f-title);color:var(--gold)}
#v-a1 .a1body h3{margin:0 0 5px;font:700 12px/1 var(--f-ui);letter-spacing:.09em;text-transform:uppercase;color:#f2d28b}
#v-a1 .a1body h3 small{font-size:12px;color:#bfe9ff;margin-left:6px;letter-spacing:0}
#v-a1 section{background:rgba(8,40,72,.55);border:1px solid rgba(217,178,90,.35);border-radius:12px;padding:8px 10px}
#v-a1 .obs{margin:0 0 4px;font:400 14px/1.35 var(--f-narr);color:#fff5dc}
#v-a1 .jl{list-style:none;margin:0;padding:0;display:grid;gap:2px}
#v-a1 .jl li{display:flex;justify-content:space-between;gap:8px;font:600 12.5px/1.3 var(--f-ui);color:#cfe6f5}
#v-a1 .jl time{flex:none;color:#8fb4cc;font-weight:400}
#v-a1 .gal{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#v-a1 .sp{display:grid;justify-items:center;gap:1px;padding:5px 2px;min-height:44px;background:rgba(3,15,29,.6);border:1px solid rgba(217,178,90,.4);border-radius:10px;color:#fff;font-family:var(--f-ui)}
#v-a1 .sp img{width:46px;height:46px;object-fit:contain}
#v-a1 .sp.unk img{filter:brightness(0) opacity(.45)}
#v-a1 .sp b{font:700 11.5px/1.15 var(--f-ui);text-align:center}
#v-a1 .sp .qty{font:800 13px var(--f-ui);color:#ffd980}
#v-a1 .sp.sel,#v-a1 .rs.sel{outline:2px solid #ffd980;outline-offset:1px}
#v-a1 .rbar{height:7px;border-radius:5px;background:rgba(0,0,0,.45);overflow:hidden;margin-bottom:6px}
#v-a1 .rbar i{display:block;height:100%;background:linear-gradient(90deg,#27b8e8,#7ff0c0);transition:width .4s}
#v-a1 .rsteps{list-style:none;margin:0;padding:0;display:flex;gap:5px}
#v-a1 .rsteps li{flex:1;min-width:0}
#v-a1 .rs{display:grid;place-items:center;width:100%;min-height:42px;padding:0;background:rgba(3,15,29,.55);border:1px solid rgba(255,255,255,.18);border-radius:10px;color:#fff;font:800 15px var(--f-ui)}
#v-a1 .rs.done{border-color:rgba(127,240,192,.6);color:#bff0c8}
#v-a1 .rs.open{border-color:#ffd980;background:rgba(60,42,5,.7);color:#ffd980}
#v-a1 .rs.locked{opacity:.55}
#v-a1 .a1d{background:rgba(255,245,220,.96);color:#2b1c08;border-radius:12px;padding:8px 12px;font:400 14px/1.35 var(--f-narr);box-shadow:0 4px 12px rgba(0,0,0,.4)}
#v-a1 .a1d[hidden]{display:none}
#v-a1 .a1d b{font:700 14px var(--f-title)}
#v-a1 .a1d p{margin:2px 0 0}#v-a1 .a1d .go{color:#6a4a10;font-weight:700}
#v-a1 .back{position:static;flex:none;margin:6px 14px calc(var(--nav) + env(safe-area-inset-bottom) + 8px);min-height:46px;font:700 16px var(--f-ui)}
body[data-view="a1"] .assist{top:auto;left:auto;right:12px;bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 10px)}
#v-a1 .back{margin-right:70px}
#v-a1 .sp img{width:36px;height:36px}#v-a1 .sp{min-height:40px;padding:4px 2px}
#v-a1 .obs{font-size:13.5px}#v-a1 .jl li{font-size:12px}
#v-a1 .a1body{gap:7px}
/* A13 (req. 40–45) : effets de récompense — purement visuels */
.rfx-p{position:fixed;left:0;top:0;margin:-12px 0 0 -12px;pointer-events:none;z-index:1600;will-change:transform,opacity;filter:drop-shadow(0 0 6px rgba(255,220,120,.9))}
.rfx-spark{position:fixed;width:6px;height:6px;border-radius:50%;pointer-events:none;z-index:1601;box-shadow:0 0 8px currentColor}
.rfx-pulse{animation:rfxPulse .7s ease-out}
@keyframes rfxPulse{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.22);filter:brightness(1.6) drop-shadow(0 0 8px #ffe9a8)}100%{transform:scale(1);filter:brightness(1)}}
@media (prefers-reduced-motion:reduce){.rfx-pulse{animation:none}}

/* ───── A13 (req. 23–27) : Corail vivant — calque lumineux sur l'illustration du bassin (transform / opacity uniquement ; aucun effet sur l'état ni les timers) ───── */
#coral-fx{position:absolute;left:384px;top:1318px;width:260px;height:230px;pointer-events:none;z-index:3}
#coral-fx i{position:absolute;inset:0;border-radius:50%;pointer-events:none}
#coral-fx .cf-glow{background:radial-gradient(ellipse at 50% 52%,rgba(190,235,255,.85) 0%,rgba(120,200,255,.45) 32%,rgba(120,200,255,0) 68%);mix-blend-mode:screen;opacity:.22;animation:cfRest 4.2s ease-in-out infinite}
@keyframes cfRest{0%,100%{opacity:.14;transform:scale(.94)}50%{opacity:.36;transform:scale(1.04)}}
#coral-fx .cf-wave{border:3px solid rgba(190,240,255,.9);box-shadow:0 0 16px rgba(120,210,255,.8);opacity:0;transform:scale(.4)}
#coral-fx.gen .cf-glow{animation:cfGen .7s ease-out}
@keyframes cfGen{0%{opacity:.35;transform:scale(.95)}30%{opacity:.95;transform:scale(1.22)}100%{opacity:.22;transform:scale(1)}}
#coral-fx.gen .cf-wave,#coral-fx.last .cf-wave,#coral-fx.wake .cf-wave{animation:cfWave .9s ease-out}
#coral-fx.gen .cf-wave.w2{animation:cfWave .9s ease-out .18s}
@keyframes cfWave{0%{opacity:.8;transform:scale(.35)}100%{opacity:0;transform:scale(1.25)}}
/* faible endurance : pulsations atténuées (ralenties et plus douces — sans toucher à la vitesse de génération) */
#coral-fx[data-status="low"] .cf-glow{animation-duration:6.4s;opacity:.12}
#coral-fx[data-status="low"].gen .cf-glow{animation:cfGenLow .7s ease-out}
@keyframes cfGenLow{0%{opacity:.2}35%{opacity:.5;transform:scale(1.08)}100%{opacity:.12;transform:scale(1)}}
/* épuisement : dernière pulsation, puis lumière faible et teinte assombrie */
#coral-fx .cf-dim{background:radial-gradient(ellipse at 50% 52%,rgba(2,10,30,.55),rgba(2,10,30,0) 70%);mix-blend-mode:multiply;opacity:0;transition:opacity 1.2s ease}
#coral-fx[data-status="exhausted"] .cf-dim{opacity:1}
#coral-fx[data-status="exhausted"] .cf-glow{animation:none;opacity:.05}
#coral-fx.last .cf-glow{animation:cfLast 1.2s ease-out}
@keyframes cfLast{0%{opacity:.9;transform:scale(1.25)}100%{opacity:.05;transform:scale(.9)}}
#coral-fx.wake .cf-glow{animation:cfWake 1.2s ease-out}
@keyframes cfWake{0%{opacity:.05;transform:scale(.8)}45%{opacity:1;transform:scale(1.3)}100%{opacity:.22;transform:scale(1)}}
/* après une fiole : bref effet de revitalisation (halo doré-vert qui monte) */
#coral-fx .cf-vital{background:radial-gradient(ellipse at 50% 60%,rgba(255,240,170,.8),rgba(140,255,200,.35) 45%,rgba(140,255,200,0) 70%);mix-blend-mode:screen;opacity:0}
#coral-fx.vital .cf-vital{animation:cfVital 1.3s ease-out}
@keyframes cfVital{0%{opacity:0;transform:translateY(24px) scale(.7)}35%{opacity:.9}100%{opacity:0;transform:translateY(-30px) scale(1.2)}}
@media (prefers-reduced-motion:reduce){#coral-fx .cf-glow{animation:none;opacity:.2}#coral-fx[data-status="exhausted"] .cf-glow{opacity:.05}}
/* A13 (req. 12, 49) : pendant une scène (livre, dialogue, niveau, coffres), le bouton d'assistance quitte le milieu de l'écran pour le coin haut-droit — plus aucun chevauchement des cadres. */
body[data-scene] .assist,body.bd-on .assist,body.guide-on .assist{top:calc(max(8px,env(safe-area-inset-top)) + 2px);left:auto;right:8px;bottom:auto;width:36px;height:36px;font-size:16px;opacity:.7}
