/* Halloween Escape Room type system (release 25, TYPOGRAPHY-01).
   Self-hosted, OFL-licensed faces only; no font CDNs. Licenses: ./fonts/OFL-Lora.txt, ./fonts/OFL-IMFellEnglish.txt.
   HouseSerif  = Lora (variable 400-700, roman + italic): rail, pages, controls, captions, figures.
   HouseDisplay = IM Fell English (regular): room names, titles, ending and danger lines, the loading word. */
@font-face{font-family:HouseSerif;src:url("./fonts/Lora-wght.ttf") format("truetype");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:HouseSerif;src:url("./fonts/Lora-Italic-wght.ttf") format("truetype");font-weight:400 700;font-style:italic;font-display:swap}
@font-face{font-family:HouseDisplay;src:url("./fonts/IMFellEnglish-Regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
:root{
  --font-display:HouseDisplay,HouseSerif,"Palatino Linotype",Georgia,serif;
  --font-body:HouseSerif,"Palatino Linotype",Georgia,serif;
  --font-control:HouseSerif,"Palatino Linotype",Georgia,serif;
  --tracking-display:.04em;
  --tracking-body:0;
  --tracking-control:.025em;
  --tracking-caps:.09em;
  --weight-display:400;
  --weight-body:400;
  --weight-control:500;
  --weight-strong:600;
  --figures:lining-nums tabular-nums;
}

/* TYPOGRAPHY-04 / EXIT-LABEL-02 (supersedes 03): the earned exit label (room.transition.label in #room-exit > span) is set in the display face,
   large, candle-lit, with an engraved dark halo so it reads on any plate, and a slow idle glow. Copy, IDs and geometry untouched. */
:root{--exit-ink:#f4d9a0;--exit-ember:#ffb763;--exit-halo:#140a03;--exit-size:30px;--exit-max:100%}
@media(max-width:700px){:root{--exit-size:23px;--exit-max:50%}}
#room-exit.exit.unlocked>span,html.decision-active #room-exit.earned-exit>span{
  font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--exit-size);line-height:1.12;letter-spacing:.07em;
  color:var(--exit-ink);opacity:1;width:max-content;max-width:var(--exit-max);white-space:normal;text-align:center;padding:8px 14px;border-radius:50%/40%;
  background:radial-gradient(closest-side,#07100ddd 0%,#07100d99 55%,transparent 100%);
  text-shadow:0 1px 0 #fff3d64d,0 -1px 0 var(--exit-halo),0 0 2px var(--exit-halo),0 0 5px var(--exit-halo),0 0 12px var(--exit-halo),0 0 22px #000000cc,0 0 18px #ffb76333;
  animation:exit-label-glow 3.4s ease-in-out infinite}
@keyframes exit-label-glow{
  0%,100%{color:var(--exit-ink);text-shadow:0 1px 0 #fff3d64d,0 -1px 0 var(--exit-halo),0 0 2px var(--exit-halo),0 0 5px var(--exit-halo),0 0 12px var(--exit-halo),0 0 22px #000000cc,0 0 18px #ffb76333}
  50%{color:#fbe6b8;text-shadow:0 1px 0 #fff3d666,0 -1px 0 var(--exit-halo),0 0 2px var(--exit-halo),0 0 5px var(--exit-halo),0 0 12px var(--exit-halo),0 0 22px #000000cc,0 0 26px #ffb76380}}
#room-exit.exit.unlocked>span{top:62%}
/* No-script fallback geometry only: exit-label.js places the box per room from the placement table and the room's registered
   occluders, overriding left/top/max-width inline; without it the label stays inside its door's footprint (phone: half of it). */
/* #exit-stage: the unlocked door's parking layer (exit-label.js exitHome), the same inset:0 box as #hotspots so the door keeps its
   coordinates, above the scene films and foreground canvases (z 7-9) and below the mechanism controls and HUD (z 19-20). It
   inherits every state that hides #hotspots. */
#exit-stage{position:absolute;inset:0;z-index:10;pointer-events:none}
#exit-stage>.hotspot{pointer-events:auto}
.decision-active #exit-stage,.ending-active #exit-stage,body.character-charge #exit-stage,body.passage-confront #exit-stage{visibility:hidden;pointer-events:none}
@media(max-width:700px){#room-exit.exit.unlocked>span,html.decision-active #room-exit.earned-exit>span{padding:6px 8px;letter-spacing:.05em}}
@media(prefers-reduced-motion:reduce){#room-exit.exit.unlocked>span,html.decision-active #room-exit.earned-exit>span{animation:none}}
