body > dialog.iphone-dialog { --iphone-width: min(92vw, 360px, 50.625dvh, var(--desktop-game-width, 92vw)); box-sizing: border-box; width: var(--iphone-width); height: calc(var(--iphone-width) * 16 / 9); min-height: 0; aspect-ratio: 9 / 16; overflow: auto; padding: 48px 20px 24px; border: 1px solid #333; border-radius: 28px; background: #000; color: #fff; text-align: center; font-family: Arial, sans-serif; }
.iphone-dialog::backdrop { background: #0009; }
.iphone-dialog h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.iphone-dialog button { padding: 0; border: 0; box-shadow: none; text-shadow: none; color: white; font-family: Arial, sans-serif; }
.iphone-dialog .iphone-close { position: absolute; top: 40px; right: 14px; width: 36px; height: 36px; font-size: 28px; border-radius: 50%; background: #1c1c1e; }
.iphone-status-bar { position: absolute; top: 17px; left: 24px; right: 28px; display: flex; align-items: center; justify-content: space-between; pointer-events: none; }
.iphone-clock { color: white; font: 600 13px/1 Arial, sans-serif; font-variant-numeric: tabular-nums; }
.iphone-battery { position: relative; box-sizing: border-box; width: 25px; height: 12px; border: 1px solid #777; border-radius: 3px; }
.iphone-battery::before { content: ''; position: absolute; left: 2px; top: 2px; bottom: 2px; width: 3px; background: #ff453a; border-radius: 1px; }
.iphone-battery::after { content: ''; position: absolute; right: -4px; top: 3px; width: 2px; height: 4px; background: #777; border-radius: 0 2px 2px 0; }
.iphone-keypad { width: min(100%, 252px); margin: clamp(0px, 7dvh, 58px) auto 0; }
.iphone-dialog input { box-sizing: border-box; width: 100%; height: 48px; padding: 0; border: 0; border-radius: 0; outline-offset: 4px; background: transparent; color: white; font: 26px Arial, sans-serif; text-align: center; box-shadow: none; }
.iphone-dialog .iphone-keys { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 18px 0; }
.iphone-dialog .iphone-keys button { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; height: auto; min-height: 0; aspect-ratio: 1; border-radius: 50%; background: #303030; }
.iphone-digit { font-size: 32px; line-height: 1; font-weight: 400; }
.iphone-letters { font-size: 9px; line-height: 1.4; letter-spacing: 2px; padding-left: 2px; min-height: 12px; }
.iphone-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; align-items: center; }
.iphone-dialog .iphone-call { grid-column: 2; width: 100%; min-width: 0; min-height: 0; aspect-ratio: 1; border-radius: 50%; background: #218c3e; }
.iphone-call svg { width: 30px; height: 30px; vertical-align: middle; }
.iphone-dialog .iphone-erase { grid-column: 3; background: transparent; color: #aaa; font-size: 26px; min-height: 44px; }
.iphone-dialog .iphone-keys button:active { background: #686868; }
.iphone-dialog .iphone-call:active { background: #39ae58; }
.iphone-keypad p { min-height: 1.4em; color: #aaa; font-size: 13px; }
:root {
  color-scheme: dark;
  font-family: Inter, system-ui, sans-serif;
  background: #130c09;
  color: #fff5d6;
  --action-neutral-border: #a66b3b;
  --action-neutral-top: #70411f;
  --action-neutral-bottom: #3b2110;
  --action-spend-border: #79d1e6;
  --action-spend-top: #247a96;
  --action-spend-bottom: #12475f;
  --action-danger-border: #d66f60;
  --action-danger-top: #9d382d;
  --action-danger-bottom: #5f1913;
  --action-min-height: 2.75rem;
}

* {
  box-sizing: border-box;
  /* Supprime le zoom iOS au double-tap sans désactiver le pincement volontaire. */
  touch-action: manipulation;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}

input,
textarea,
[contenteditable="true"] {
  -webkit-user-select: text;
  user-select: text;
  -webkit-touch-callout: default;
}

img,
canvas { -webkit-user-drag: none; }

html, body { width: 100%; min-height: 100%; margin: 0; }

body { overflow: hidden; background: #130c09; }

.phone-only[hidden] { display: none; }
.phone-only { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 2rem; color: #f5dfaa; background: linear-gradient(rgba(8,4,2,.78), rgba(8,4,2,.92)), url("/assets/paysages/auberge-splash.png?media_version=373c4131c38c22f24eb50569") center / cover no-repeat; }
.phone-only__card { width: min(30rem, 100%); padding: 2.2rem; border: 1px solid #bd8741; border-radius: .45rem; background: rgba(27,14,8,.94); box-shadow: inset 0 0 0 3px #35190d, 0 1rem 4rem #000; text-align: center; }
.phone-only__icon { width: 3.4rem; height: 5.2rem; margin: 0 auto 1.2rem; border: 2px solid #e0ac53; border-radius: .45rem; color: transparent; box-shadow: inset 0 -.45rem 0 -.3rem #e0ac53, 0 0 1.3rem rgba(224,172,83,.18); }
.phone-only__card p { margin: 0 0 .45rem; color: #c98d49; font: 700 .65rem/1 Cinzel, serif; letter-spacing: .2em; text-transform: uppercase; }
.phone-only__card h1 { margin: 0; color: #ffe7a5; font: 700 clamp(1.5rem, 4vw, 2.2rem)/1.2 Cinzel, serif; letter-spacing: 0; text-shadow: 0 2px #3b190d; }
.phone-only__card span { display: block; margin-top: .9rem; color: #cdbb98; font-size: .9rem; line-height: 1.55; }
.phone-only__languages { display: flex; justify-content: center; gap: .55rem; margin-top: 1.35rem; }
.phone-only__languages button { display: grid; place-items: center; width: 2.9rem; height: 2.9rem; border: 1px solid rgba(224,172,83,.55); border-radius: 50%; color: #cdbb98; background: rgba(12,6,3,.7); font: 700 .72rem/1 Cinzel, serif; text-transform: lowercase; cursor: pointer; }
.phone-only__languages button[aria-pressed="true"] { border-color: #f0c36a; color: #fff0bd; background: linear-gradient(#8a471f, #54210e); box-shadow: inset 0 0 0 2px #32150b, 0 0 1rem rgba(224,172,83,.2); }
.is-phone-blocked > :not(.phone-only) { visibility: hidden; }

button, input { font: inherit; }

/* Repli visuel pour tout bouton qui n'a pas encore de variante dédiée. */
button {
  -webkit-appearance: none;
  appearance: none;
  border: 1px solid #a66b3b;
  border-radius: .3rem;
  color: #f8dfb4;
  background: linear-gradient(#70411f, #3b2110);
  cursor: pointer;
}

/* Métaphore commune : brun=navigation, bleu=dépense, rouge=perte définitive. */
button[data-action-intent] {
  min-height: var(--action-min-height);
  padding: .65rem .8rem;
  white-space: normal;
  overflow-wrap: anywhere;
  font-weight: 700;
  line-height: 1.2;
}
button[data-action-intent="spend"] {
  border-color: var(--action-spend-border);
  color: #f5fdff;
  background: linear-gradient(var(--action-spend-top), var(--action-spend-bottom));
  box-shadow: inset 0 0 0 2px rgba(7,35,49,.55);
}
button[data-action-intent="danger"] {
  border-color: var(--action-danger-border);
  color: #fff3e4;
  background: linear-gradient(var(--action-danger-top), var(--action-danger-bottom));
}
button[data-action-intent="neutral"] {
  border-color: var(--action-neutral-border);
  color: #f8dfb4;
  background: linear-gradient(var(--action-neutral-top), var(--action-neutral-bottom));
}

button:disabled {
  opacity: .5;
  cursor: not-allowed;
}

.splash {
  isolation: isolate;
  position: relative;
  display: grid;
  grid-template-rows: 1fr auto;
  align-items: start;
  min-height: 100svh;
  min-height: 100dvh;
  overflow: hidden;
  padding: max(1.5rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));
}

.splash[hidden] { display: none; }

.splash__backdrop,
.splash__shade {
  position: absolute;
  inset: 0;
  z-index: -2;
}

.splash__backdrop {
  background: url("/assets/paysages/auberge-splash.png?media_version=373c4131c38c22f24eb50569") center center / cover no-repeat;
  scale: 1.02;
  animation: awaken 7s ease-out both;
}

.splash__shade {
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(7, 4, 3, .78) 0%, rgba(8, 4, 2, .30) 34%, transparent 51%, rgba(5, 3, 2, .25) 67%, rgba(6, 3, 2, .88) 100%),
    radial-gradient(circle at 50% 22%, transparent 0 28%, rgba(3, 2, 1, .34) 76%);
}

.brand {
  width: min(34rem, 100%);
  margin: clamp(1rem, 8vh, 5rem) auto 0;
  text-align: center;
  filter: drop-shadow(0 .15rem .1rem #000) drop-shadow(0 .5rem 1rem #000);
  animation: title-in 1s .15s cubic-bezier(.2,.8,.2,1) both;
}

.brand__ornament { display: flex; align-items: center; gap: .7rem; margin: 0 auto .65rem; width: 9rem; color: #d8a547; }
.brand__ornament::before, .brand__ornament::after { content: ""; height: 1px; flex: 1; background: currentColor; box-shadow: 0 0 .4rem currentColor; }
.brand__ornament span { width: .55rem; height: .55rem; rotate: 45deg; border: 1px solid currentColor; background: #7c411c; }

.brand__eyebrow,
.brand__subtitle {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: .25em;
  color: #e7c47a;
  font-size: clamp(.61rem, 2.3vw, .78rem);
  font-weight: 600;
}

h1 {
  margin: .22rem 0 .05rem;
  font: 800 clamp(2.8rem, 13vw, 6.2rem)/.83 Cinzel, Georgia, serif;
  letter-spacing: -.055em;
  text-transform: uppercase;
  color: #f5d991;
  text-shadow: 0 2px 0 #7d3817, 0 5px 0 #32160d, 0 0 1.6rem rgba(224, 142, 40, .3);
}

h1 span { display: block; font-size: .52em; letter-spacing: .23em; margin-right: -.23em; color: #fff3c0; }
.brand__subtitle { color: #c98d49; letter-spacing: .36em; margin-right: -.36em; }

.actions {
  align-self: end;
  width: min(29rem, 100%);
  margin: 0 auto clamp(2.2rem, 7vh, 5rem);
  text-align: center;
  animation: actions-in .85s .65s ease-out both;
}

.enter-button {
  position: relative;
  width: 100%;
  min-height: 4.2rem;
  border: 1px solid #efbd5e;
  border-radius: .35rem;
  padding: .9rem 1rem;
  overflow: hidden;
  color: #fff3cb;
  background: linear-gradient(180deg, rgba(139, 66, 25, .96), rgba(76, 31, 14, .98));
  box-shadow: inset 0 0 0 2px #3c1b0e, inset 0 1px 0 3px rgba(255, 214, 126, .25), 0 .5rem 1.5rem rgba(0,0,0,.6), 0 0 1.8rem rgba(223, 126, 30, .18);
  font: 700 clamp(.88rem, 3.8vw, 1.1rem)/1 Cinzel, Georgia, serif;
  letter-spacing: .055em;
  text-transform: uppercase;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform .14s ease, filter .14s ease;
}

.enter-button::before, .enter-button::after { content: "◆"; position: absolute; top: 50%; translate: 0 -50%; color: #dca64d; font-size: .55rem; }
.enter-button::before { left: 1rem; }
.enter-button::after { right: 1rem; }
.enter-button__icon { margin-right: .55rem; color: #f6cd75; font-size: 1.2em; }
.enter-button__glow { position: absolute; inset: -100% 45%; rotate: 20deg; background: rgba(255,255,255,.12); animation: glint 3.8s 1.4s infinite; }
.enter-button:hover { filter: brightness(1.16); transform: translateY(-2px); }
.enter-button:active { transform: translateY(1px) scale(.985); }
.enter-button:focus-visible { outline: 3px solid #fff2b1; outline-offset: 4px; }

.hint { margin: .8rem 0 0; color: rgba(255, 230, 186, .7); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; animation: breathe 2.2s infinite ease-in-out; }
.version { position: absolute; bottom: max(.55rem, env(safe-area-inset-bottom)); left: 0; right: 0; margin: 0; text-align: center; color: rgba(255,255,255,.32); font-size: .61rem; letter-spacing: .1em; }

.game-screen[hidden] { display: none; }
.game-screen { position: relative; isolation: isolate; min-height: 100svh; min-height: 100dvh; overflow: hidden; opacity: 0; }
.game-screen.is-active { animation: location-in .9s ease-out forwards; }
.game-screen.is-leaving { animation: location-out .6s ease-in forwards; pointer-events: none; }
.dungeon-screen { background: #080706; }
.dungeon-view { position: absolute; top: max(3.35rem, calc(env(safe-area-inset-top) + 2.75rem)); right: 0; bottom: max(6.15rem, calc(env(safe-area-inset-bottom) + 5.55rem)); left: 0; overflow: hidden; }
.dungeon-plan-pane, .dungeon-first-person-pane { position: absolute; z-index: 1; inset: 0; overflow: hidden; background: #080706; transition: inset .35s ease, border-radius .35s ease, box-shadow .35s ease; }
.dungeon-first-person-pane { z-index: 2; }
.dungeon-first-person-pane canvas { display: block; width: 100%; height: 100%; background: #111; touch-action: none; cursor: grab; }
.dungeon-first-person-pane canvas:active { cursor: grabbing; }
.dungeon-first-person-loading { position:absolute;z-index:7;inset:0;display:grid;place-content:center;justify-items:center;gap:.8rem;color:#ffe4a0;background:rgba(8,7,6,.86);font:800 clamp(.72rem,2.5vw,1rem)/1.35 Cinzel,serif;text-align:center;text-transform:uppercase;letter-spacing:.05em;pointer-events:auto; }
.dungeon-first-person-loading[hidden] { display:none; }
.dungeon-first-person-loading span { width:2.5rem;height:2.5rem;border:.22rem solid rgba(244,188,81,.2);border-top-color:#f4bc51;border-radius:50%;animation:dungeon-loading-spin .8s linear infinite;filter:drop-shadow(0 0 .5rem rgba(244,188,81,.55)); }
.dungeon-first-person-pane.is-mini .dungeon-first-person-loading strong { display:none; }
.dungeon-first-person-pane.is-mini .dungeon-first-person-loading span { width:1.6rem;height:1.6rem; }
@keyframes dungeon-loading-spin { to { rotate:360deg; } }
.dungeon-first-person-hero { position: absolute; z-index: 2; bottom: -23%; left: 50%; width: min(58vw, 24rem); max-width: none; pointer-events: none; opacity:.62; translate: -50% 0; scale:var(--hero-visual-scale,1);transform-origin:50% 100%;filter: drop-shadow(0 .4rem .45rem rgba(0,0,0,.75)); }
.dungeon-first-person-pane:not(.is-mini) .dungeon-first-person-hero { opacity: .36; }
.dungeon-first-person-hero[data-hero-id="nain"],
.dungeon-first-person-hero[data-hero-id="gnome"] { bottom:-7%;width:min(48vw,19rem); }
.dungeon-first-person-pane.is-walking .dungeon-first-person-hero { animation: dungeon-walk-bob .46s ease-in-out infinite alternate; }
.dungeon-first-person-pane.is-mini .dungeon-first-person-hero { bottom: -20%; width: 62%; }
.dungeon-first-person-pane.is-mini .dungeon-first-person-hero[data-hero-id="nain"],
.dungeon-first-person-pane.is-mini .dungeon-first-person-hero[data-hero-id="gnome"] { bottom:-5%;width:54%; }
.dungeon-plan-pane.is-mini, .dungeon-first-person-pane.is-mini { z-index: 4; inset: .65rem .65rem auto auto; width: min(8.2rem, 30vw); height: min(13rem, 25vh); border: 2px solid #d5a34f; border-radius: .35rem; box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.75), 0 0 .7rem rgba(225,170,75,.25); cursor: pointer; }
.dungeon-view.is-minimap-left :is(.dungeon-plan-pane.is-mini, .dungeon-first-person-pane.is-mini) { inset: .65rem auto auto .65rem; }
.dungeon-camera-toggle { position:absolute;z-index:6;bottom:.65rem;right:.65rem;width:auto;min-height:2.75rem;padding:.45rem .7rem;border:1px solid #d5a34f;border-radius:.45rem;background:#160e08;color:#ffe4a0;font-size:.75rem;line-height:1.2;white-space:nowrap;cursor:pointer;touch-action:manipulation; }
.dungeon-minimap-side-toggle { position:absolute;z-index:6;top:calc(.65rem + min(6.5rem, 12.5vh) - 1.2rem);right:calc(.65rem + min(8.2rem, 30vw) + .05rem);width:2.4rem;height:2.4rem;padding:0;border:0;background:transparent;filter:drop-shadow(0 0 .18rem #000) drop-shadow(0 0 .38rem #f4bc51);cursor:pointer;touch-action:manipulation; }
.dungeon-minimap-side-toggle::before,
.dungeon-minimap-side-toggle::after { content:'';position:absolute;top:50%;left:50%;width:1.05rem;height:1.3rem;clip-path:polygon(50% 0,100% 100%,50% 76%,0 100%);transform:translate(-50%,-50%) rotate(-90deg); }
.dungeon-minimap-side-toggle::before { background:#fff0b5; }
.dungeon-minimap-side-toggle::after { width:.73rem;height:.98rem;background:#f4bc51; }
.dungeon-view.is-minimap-left .dungeon-minimap-side-toggle { right:auto;left:calc(.65rem + min(8.2rem, 30vw) + .18rem); }
.dungeon-view.is-minimap-left .dungeon-minimap-side-toggle::before,
.dungeon-view.is-minimap-left .dungeon-minimap-side-toggle::after { transform:translate(-50%,-50%) rotate(90deg); }
.dungeon-plan-pane.is-mini .dungeon-elements { display: block; pointer-events: none; }
.dungeon-plan-pane.is-mini .dungeon-elements > :not(.dungeon-room-highlight) { display: none !important; }
.dungeon-plan-pane.is-mini .dungeon-map { top: 0; bottom: 0; height: 100%; }
.dungeon-first-person-controls { position: fixed; z-index: 5; left: max(.65rem, env(safe-area-inset-left)); bottom: max(.65rem, env(safe-area-inset-bottom)); width: 8rem; height: 8rem; pointer-events: none; }
.dungeon-first-person-controls::before { content: attr(data-message); position: absolute; right: 0; bottom: calc(100% + .7rem); left: 0; color: #ffbe83; font: 700 .72rem/1.35 Cinzel, serif; text-align: center; text-shadow: 0 2px .35rem #000; }
.dungeon-movement-pad { inset: 0; left: 0; bottom: 0; pointer-events: auto; }
.dungeon-direction-fallback { display: none; }
.dungeon-first-person-controls.is-moving { opacity: .78; }
.dungeon-movement-capacity { position: fixed; z-index: 5; top: max(4.05rem, calc(env(safe-area-inset-top) + 3.45rem)); left: 50%; min-height: 2rem; padding: .48rem .75rem; border: 1px solid rgba(101,229,255,.72); border-radius: 1.2rem; color: #c9f8ff; background: rgba(8,22,27,.9); box-shadow: 0 0 .8rem rgba(74,211,239,.3), inset 0 0 .65rem rgba(69,187,211,.16); font: 800 .55rem/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; translate: -50% 0; backdrop-filter: blur(6px); }
.dungeon-map { position: absolute; inset: 0; width: 100%; height: 100%; }
.dungeon-elements { position: absolute; z-index: 2; inset: 0; pointer-events: none; }
.dungeon-elements button { position: absolute; display: grid; place-items: center; min-width: 1.85rem; min-height: 1.85rem; padding: .18rem; border: 1px solid rgba(244,188,81,.88); border-radius: 50%; color: #ffe4a0; background: rgba(45,22,10,.92); box-shadow: 0 0 .65rem rgba(238,151,47,.38); translate: -50% -50%; cursor: pointer; }
.dungeon-elements button { pointer-events: auto; }
.dungeon-elements button > span { font-size: .78rem; line-height: 1; }
.dungeon-elements button > strong { position: absolute; top: calc(100% + .04rem); left: 50%; padding: .12rem .24rem; border-radius: .18rem; color: #f0d49b; background: rgba(8,6,4,.88); font: 700 .39rem/1.05 Cinzel, serif; text-transform: uppercase; white-space: nowrap; translate: -50% 0; }
.dungeon-elements button.is-looted { opacity: .38; filter: grayscale(.8); cursor: default; }
.dungeon-elements button.is-completed,
.dungeon-elements button.is-completed:is(.is-objective,.is-blocker,.is-malus) {
  opacity: 1;
  border: 2px solid #9affba;
  color: #f2fff6;
  background: radial-gradient(circle, #38dd72, #09632c 74%);
  box-shadow: 0 0 .55rem #8dffb1, 0 0 1.2rem rgba(45,220,105,.78), inset 0 0 .45rem rgba(235,255,241,.5);
  filter: none;
  cursor: default;
}
.dungeon-elements button.is-completed > span { font-size: 1rem; font-weight: 900; }
.dungeon-elements button.is-completed > strong { color: #baffce; border-color: rgba(85,236,137,.5); background: rgba(3,57,24,.94); }
.dungeon-room-highlight { position: absolute; z-index: 8; box-sizing: border-box; pointer-events: none; border: 2px solid #fff2a4; background: rgba(255,205,55,.22); box-shadow: inset 0 0 .65rem #fff4b4, 0 0 .75rem #ffd438; animation: dungeon-room-highlight 900ms ease-in-out 4; }
@keyframes dungeon-room-highlight {
  0%, 100% { opacity: .22; filter: brightness(.9); }
  50% { opacity: 1; filter: brightness(1.65); }
}
.dungeon-elements button.is-obstacle { border-style: dashed; border-color: rgba(202,157,84,.58); color: #cbb890; background: rgba(31,24,17,.82); box-shadow: none; }
.dungeon-elements button.is-objective { border: 2px solid #fff09a; color: #fff8bd; background: radial-gradient(circle, #ffd94c, #9a5b05 72%); box-shadow: 0 0 .45rem #fff3a0, 0 0 1.15rem rgba(255,198,36,.9), inset 0 0 .5rem rgba(255,255,210,.55); }
.dungeon-elements button.is-objective > strong { color: #fff0a1; border: 1px solid rgba(255,211,75,.45); background: rgba(62,35,2,.94); }
.dungeon-elements button.is-blocker { border: 2px solid #ffad45; color: #fff0c8; background: radial-gradient(circle, #f58b2d, #813407 74%); box-shadow: 0 0 .8rem rgba(255,126,24,.78), inset 0 0 .45rem rgba(255,218,150,.34); }
.dungeon-elements button.is-blocker > strong { color: #ffc276; background: rgba(65,25,3,.94); }
.dungeon-elements button.is-malus { border: 2px solid #ff554d; color: #ffe1dd; background: radial-gradient(circle, #e83931, #6e0907 74%); box-shadow: 0 0 .85rem rgba(255,47,39,.82), inset 0 0 .45rem rgba(255,183,171,.3); }
.dungeon-elements button.is-malus > strong { color: #ff9288; background: rgba(58,5,4,.95); }
.dungeon-elements button.is-blocker.is-malus { border-color: #ff7650; background: linear-gradient(135deg, #e88724 0 49%, #c82620 51% 100%); box-shadow: -.25rem 0 .75rem rgba(255,137,34,.55), .25rem 0 .75rem rgba(255,47,39,.62); }
.dungeon-elements button.is-completed,
.dungeon-elements button.is-completed:is(.is-objective,.is-blocker,.is-malus),
.dungeon-elements button.is-completed.is-blocker.is-malus {
  border:2px solid #9affba;
  color:#f2fff6;
  background:radial-gradient(circle,#38dd72,#09632c 74%);
  box-shadow:0 0 .55rem #8dffb1,0 0 1.2rem rgba(45,220,105,.78),inset 0 0 .45rem rgba(235,255,241,.5);
}
.dungeon-elements button.is-completed > strong,
.dungeon-elements button.is-completed:is(.is-objective,.is-blocker,.is-malus) > strong {
  color:#baffce;
  border-color:rgba(85,236,137,.5);
  background:rgba(3,57,24,.94);
}
.dungeon-player-cursor { position: absolute; z-index: 5; width: 1.3rem; height: 1.55rem; pointer-events: none; translate: -50% -50%; rotate: var(--dungeon-player-facing, 0deg); filter: drop-shadow(0 0 .18rem #000) drop-shadow(0 0 .34rem #65e5ff); }
.dungeon-player-cursor::before,
.dungeon-player-cursor::after { content: ''; position: absolute; clip-path: polygon(50% 0, 100% 100%, 50% 76%, 0 100%); }
.dungeon-player-cursor::before { inset: 0; background: #effcff; }
.dungeon-player-cursor::after { inset: .16rem; background: #65e5ff; }
.dungeon-retreat { position: fixed; z-index: 5; right: max(.65rem, env(safe-area-inset-right)); bottom: max(.65rem, env(safe-area-inset-bottom)); min-height: 2.75rem; max-width: calc(100vw - 13.5rem); padding: 0 .85rem; border: 1px solid rgba(214,166,89,.72); border-radius: 1.5rem; color: #ead3a4; background: rgba(24,13,8,.9); box-shadow: 0 .4rem 1.2rem rgba(0,0,0,.55); font: 700 .57rem/1.15 Cinzel, serif; letter-spacing: .04em; text-transform: uppercase; cursor: pointer; backdrop-filter: blur(7px); }
.dungeon-camp-marker { position: absolute; z-index: 4; translate: -50% -50%; color: #ffe09a; font-size: 1.25rem; text-shadow: 0 0 .25rem #000, 0 0 .5rem #ffad42; pointer-events: none; }
.dungeon-element-detail { position: fixed; z-index: 6; right: max(.75rem, env(safe-area-inset-right)); bottom: max(.75rem, env(safe-area-inset-bottom)); left: max(.75rem, env(safe-area-inset-left)); padding: 1rem 2.7rem 1rem 1rem; border: 1px solid #c28a43; border-radius: .35rem; color: #ead5a8; background: rgba(25,13,8,.96); box-shadow: 0 .7rem 2rem rgba(0,0,0,.7); }
.dungeon-element-detail[hidden] { display: none; }
.dungeon-element-detail button { position: absolute; top: .2rem; right: .25rem; width: 2.4rem; height: 2.4rem; border: 0; color: #ddba79; background: transparent; font-size: 1.5rem; cursor: pointer; }
.dungeon-element-detail strong { display: block; color: #ffd98b; font: 700 .78rem/1.2 Cinzel, serif; text-transform: capitalize; }
.dungeon-element-detail p { margin: .45rem 0 0; font-size: .68rem; line-height: 1.45; }
.dungeon-element-boss { float: left; width: 5.2rem; height: 6.4rem; margin: .35rem .75rem .25rem 0; overflow: hidden; }
.dungeon-element-boss[hidden] { display: none; }
.dungeon-element-boss img { display: block; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 .3rem .4rem rgba(0,0,0,.7)); }
.dungeon-element-detail dl { display: grid; gap: .3rem; margin: .7rem 0 0; padding-top: .65rem; border-top: 1px solid rgba(194,138,67,.45); }
.dungeon-element-detail dl[hidden] { display: none; }
.dungeon-element-detail dl > div { display: flex; justify-content: space-between; gap: .7rem; font-size: .58rem; }
.dungeon-element-detail dt { color: #ae9a77; text-transform: capitalize; }
.dungeon-element-detail dd { margin: 0; color: #f1c978; text-align: right; }
.dungeon-route { width: min(30rem, calc(100% - 1.25rem)); max-height: calc(100dvh - 1.25rem); margin: auto; padding: 0; overflow: visible; border: 0; color: #ead5a8; background: transparent; }
.dungeon-route::backdrop { background: rgba(3,5,7,.82); backdrop-filter: blur(5px); }
.dungeon-route__card { max-height: calc(100dvh - 1.25rem); overflow: auto; padding: 1.25rem; border: 1px solid #b88743; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(93,113,115,.24), transparent 38%), linear-gradient(#1c211f, #0b0e0d); box-shadow: inset 0 0 0 3px #29302b, 0 1.5rem 4rem #000; }
.dungeon-route.is-region-unlock .dungeon-route__card { border-color:#ffe17b;background:radial-gradient(circle at 50% 18%,rgba(255,218,77,.32),transparent 46%),linear-gradient(#4b2b08,#170c03);box-shadow:inset 0 0 2.4rem rgba(255,195,44,.22),0 0 2rem rgba(255,205,62,.65),0 1.5rem 4rem #000;animation:level-up-pulse 1.65s ease-in-out infinite; }
.dungeon-route.is-region-unlock .dungeon-route__status { color:#fff0ad; }
.dungeon-route h2 { margin: 0; color: #ffe4a0; font: 700 1.12rem/1.2 Cinzel, serif; text-align: center; text-transform: uppercase; }
.dungeon-route h3 { margin: 0 0 .55rem; color: #ffe4a0; font: 700 .9rem/1.2 Cinzel, serif; text-transform: uppercase; }
#dungeon-route-target { margin: .55rem 0 .85rem; color: #d4c39e; font-size: .7rem; line-height: 1.4; text-align: center; }
.dungeon-route__paths { display: flex; justify-content: center; gap: .35rem; margin: 0 0 .7rem; }
.dungeon-route__paths[hidden] { display: none; }
.dungeon-route__paths button { min-height: 2.15rem; padding: .35rem .55rem; border: 1px solid #555454; border-radius: 1rem; color: #bbb7ae; background: #242323; font: 700 .52rem/1 Cinzel, serif; text-transform: uppercase; }
.dungeon-route__paths button.is-selected { border-color: #ef695b; color: #ffe0da; background: #772820; box-shadow: 0 0 .55rem rgba(239,63,54,.42); }
#dungeon-route-costs { display: grid; gap: .35rem; margin: 0; }
#dungeon-route-costs[hidden], .dungeon-route__encounters[hidden], #dungeon-route-target[hidden] { display: none; }
#dungeon-route-costs > div { display: flex; justify-content: space-between; gap: .8rem; padding: .48rem .6rem; border: 1px solid rgba(177,135,71,.42); border-radius: .25rem; background: rgba(8,10,9,.55); font-size: .65rem; }
#dungeon-route-costs dt { color: #b9aa8e; } #dungeon-route-costs dd { margin: 0; color: #f2cb78; font-weight: 800; }
.dungeon-route__encounters { display: grid; gap: .3rem; margin-top: .7rem; }
.dungeon-route__encounters p { margin: 0; padding: .4rem .55rem; border-left: 2px solid #a36c35; color: #cdbb98; background: rgba(67,35,18,.32); font-size: .58rem; line-height: 1.35; }
.dungeon-route__status { min-height: 1rem; margin: .75rem 0; color: #e8ad67; font-size: .95rem; line-height: 1.55; text-align: center; }
.dungeon-route__status.is-impossible { color: #ff8e79; }
.dungeon-route__status.is-prophecy {
  margin: 1rem 0;
  padding: clamp(1rem, 4vw, 1.6rem);
  border: 1px solid #cba44e;
  border-radius: .6rem;
  background: #211609;
  color: #fff0ca;
  font-size: clamp(1.15rem, 3.5vw, 1.45rem);
  font-weight: 600;
  line-height: 1.7;
  overflow-wrap: anywhere;
  box-shadow: inset 0 0 1.5rem rgba(203, 164, 78, .1);
}
.dungeon-route__actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: .55rem; }
.dungeon-route__actions[hidden] { display: none; }
.dungeon-route__actions button, .dungeon-route__continue { min-height: 3rem; border: 1px solid #a9793e; border-radius: .3rem; color: #f3dfb2; background: linear-gradient(#5d3c21, #2e1c10); font: 700 .63rem/1.2 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.dungeon-route__actions button:last-child { border-color: #d3a04e; background: linear-gradient(#945326, #572b13); }
.dungeon-route__actions button:disabled { opacity: .38; cursor: not-allowed; }
.dungeon-route__result { margin: .8rem 0; padding: .8rem; border: 1px solid #c99b4d; border-radius: .3rem; background: rgba(104,61,24,.35); text-align: center; }
.dungeon-route__result[hidden] { display: none; }
#dungeon-route-rewards, .dungeon-rewards { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem; }
#dungeon-route-rewards > span, .dungeon-rewards > li { padding: .35rem .5rem; border: 1px solid rgba(239,190,91,.45); border-radius: 1rem; color: #ffe19a; background: rgba(15,9,5,.7); font-size: .62rem; }
#dungeon-route-rewards > span.is-lost { border-color: rgba(224,82,66,.72); color: #ffd0c8; background: rgba(76,14,10,.82); }
.dungeon-route__roll { flex: 0 0 100%; display: grid; justify-items: center; }
#dungeon-route-rewards .dungeon-route__roll-summary { max-width: 100%; padding: .25rem .45rem; border: 1px solid rgba(239,190,91,.35); border-radius: .25rem; color: #ffe19a; background: rgba(15,9,5,.55); line-height: 1.25; }
.dungeon-route__continue { width: 100%; }
.tavern-screen__backdrop, .tavern-screen__shade, .public-square__backdrop, .public-square__shade { position: absolute; inset: 0; z-index: -2; }
.tavern-screen__backdrop { background: var(--city-landscape-2029, url("/assets/paysages/auberge-splash.png?media_version=373c4131c38c22f24eb50569")) center center / cover no-repeat; scale: 1.03; }
.tavern-screen__shade { z-index: -1; background: linear-gradient(180deg, rgba(9,5,3,.55), transparent 30%, transparent 70%, rgba(8,4,2,.58)); }
.public-square__backdrop { background: var(--city-landscape-2029, url("/assets/paysages/place-publique.png?media_version=fb015c6e602e6259611cde12")) center center / cover no-repeat; scale: 1.03; }
.destination-screen[data-city-transmuted]:not(.is-playing):not(.is-boss-capture) { background-image: var(--city-landscape-2029); }
.city-transmutation-veil { position: absolute; inset: 0; z-index: 0; background: #000; pointer-events: none; }
.city-transmutation-veil { overflow: hidden; }
.city-transmutation-static { display: block; width: 100%; height: 100%; image-rendering: pixelated; }
.city-transmutation-veil::after { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,0,0,.22) 2px 4px); pointer-events: none; }
.mission-rumor__related-items { grid-column: 1 / -1; display: flex; justify-content: center; gap: .8rem; width: 100%; }
.mission-rumor__related-items figure { margin: 0; flex: 1; max-width: 7rem; text-align: center; }
.mission-rumor__item .mission-rumor__related-items img { display: block; width: 100%; height: 4rem; object-fit: contain; }
.mission-rumor__related-items figcaption { font-size: .7rem; line-height: 1.25; }
.public-square.is-gossip .public-square__backdrop { background-image: var(--gossip-background, url("/assets/paysages/place-publique-gossip.png?media_version=395405f9c640b11d4ee25d4c")); }
.public-square[data-city-transmuted].is-gossip .public-square__backdrop { background-image: url("/assets/paysages/place-publique-gossip_2029.png?media_version=dc2ac6bdb7c7ff6ba3409ffe"); }
.city-hero-3d { position:absolute; inset:0; width:100%; height:100%; z-index:1; pointer-events:none; }
/* City overlays replace the walking scene, including its shared 3D canvas.
   Native dialogs must be open; custom modal sections use the hidden attribute. */
.destination-screen:has([role="dialog"][aria-modal="true"]:not(dialog):not([hidden]), dialog[open], [data-city-overlay]:not([hidden])) > .city-hero-3d { display:none; }
.public-square.is-gossip .city-hero-3d { display:none; }
.public-square.is-gossip .location-banner,
.public-square.is-gossip .public-hero,
.public-square.is-gossip .travel-zones,
.public-square.is-gossip .movement-pad { display:none; }
.mission-rumor { border: 0; padding: 0; background: transparent; color: #f8e3b5; }
.mission-rumor::backdrop { background: rgba(5, 2, 0, .72); }
.mission-rumor__panel { width: min(84vw, 430px); padding: 1.5rem; border: 2px solid #d8a52c; border-radius: 18px; background: rgba(35, 17, 8, .97); text-align: center; box-shadow: 0 0 32px rgba(255, 194, 48, .42); }
.mission-journal .mission-rumor__panel { position:relative; }
.mission-journal__close { position:absolute;top:.65rem;right:.65rem;display:grid;place-items:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid rgba(216,165,44,.72);border-radius:50%;color:#ffe09a;background:#3b1c0d;font-size:1.2rem; }
.mission-rumor__kicker { color: #ffd96b; text-transform: uppercase; letter-spacing: .08em; }
.mission-rumor__item { display: grid; gap: .55rem; justify-items: center; margin: 1rem 0; }
.mission-rumor__item[hidden], .mission-rumor__item img[hidden] { display:none !important; }
.mission-rumor__portrait { position:relative;display:grid;place-items:center;width:min(54vw,230px);aspect-ratio:1;overflow:hidden;filter:drop-shadow(0 0 18px #ffd750);animation:mission-item-pulse 1.4s ease-in-out infinite alternate; }
.mission-rumor__item img { width:100%;height:100%;object-fit:contain; }
.mission-rumor__item.is-sprite-sheet .mission-rumor__portrait { width:auto;height:min(42vh,280px);aspect-ratio:var(--mission-frame-ratio, 1 / 2); }
.mission-rumor__item.is-sprite-sheet .mission-rumor__portrait img { position:absolute;left:50%;width:auto;max-width:none;height:100%;object-fit:initial;transform:translateX(-10%);transform-origin:center bottom; }
.mission-rumor__item span { font-size: .9rem; }
.mission-rumor__item.has-companion { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.mission-rumor__item.has-companion > :not(.mission-rumor__portrait) { grid-column: 1 / -1; }
.mission-rumor__item.has-companion.is-sprite-sheet .mission-rumor__portrait { max-width:100%;height:min(32vh,210px); }
@keyframes mission-item-pulse { to { filter: drop-shadow(0 0 34px #fff0a0); transform: scale(1.025); } }
.world-map__dungeon.is-legendary-mission { box-shadow: 0 0 14px #ffd64d, inset 0 0 10px rgba(255,214,77,.35); animation: mission-item-pulse 1.4s ease-in-out infinite alternate; }
.public-square__shade { z-index: -1; background: linear-gradient(180deg, rgba(9,6,3,.6), transparent 28%, transparent 68%, rgba(8,5,3,.55)); }
.location-banner { position: absolute; top: max(4.75rem, calc(env(safe-area-inset-top) + 4rem)); left: 50%; translate: -50%; width: min(22rem, calc(100% - 2.5rem)); padding: .75rem 1rem .85rem; border: 1px solid rgba(225,174,82,.75); border-radius: .25rem; color: #f7dfa0; background: linear-gradient(rgba(45,24,12,.88), rgba(24,12,7,.92)); box-shadow: inset 0 0 0 2px rgba(48,23,10,.8), 0 .6rem 1.8rem rgba(0,0,0,.5); text-align: center; backdrop-filter: blur(5px); }
.location-banner::before, .location-banner::after { content: "◆"; position: absolute; top: 50%; translate: 0 -50%; color: #c78c42; font-size: .45rem; }
.location-banner::before { left: .75rem; }
.location-banner::after { right: .75rem; }
.location-banner p, .location-banner span { margin: 0; color: #c98d49; font: 700 .55rem/1 Cinzel, serif; letter-spacing: .22em; text-transform: uppercase; }
.location-banner h2 { margin: .2rem 0 .15rem; color: #ffe8a9; font: 700 clamp(1.25rem, 6vw, 1.7rem)/1 Cinzel, serif; text-transform: uppercase; text-shadow: 0 2px #421d0d; }
.location-banner span { color: #d8bd87; font-size: .5rem; }
.location-arrival { position: absolute; left: 50%; bottom: max(1.5rem, env(safe-area-inset-bottom)); translate: -50%; margin: 0; color: rgba(255,242,207,.88); font: 600 .66rem/1 Cinzel, serif; letter-spacing: .18em; text-transform: uppercase; text-shadow: 0 2px .5rem #000; white-space: nowrap; animation: breathe 2.5s ease-in-out infinite; }
.public-hero, .shop-hero, .gate-hero, .church-hero, .guard-hero, .cartographer-hero, .bestiary-hero, .apothecary-hero, .road-hero { position: absolute; z-index: 1; left: var(--hero-x, 50%); top: var(--hero-y, 68%); translate: -50% -100%; scale: var(--hero-scale, 1.027); transform-origin: 50% 100%; width: min(8.5rem, 34vw); filter: drop-shadow(0 .7rem .45rem rgba(0,0,0,.65)); will-change: left, top, scale; }
.cartographer-hero img { display:block; width:100%; image-rendering:pixelated; }
.cartographer { background-image:linear-gradient(rgba(0,0,0,.08),rgba(0,0,0,.24)),url('/assets/paysages/cartographe.png?media_version=85cf9be81995d48f7cd4bbf6'); background-size:cover; background-position:center; }
.cartographer-zone { position:absolute; z-index:3; display:grid; place-items:center; border:1px solid rgba(255,219,146,.58); border-radius:.35rem; color:#ffe8b1; background:rgba(62,31,15,.54); font:700 .62rem/1 Cinzel,serif; }
.cartographer-zone--map { left:35%; top:48%; width:30%; height:7%; }.cartographer-zone--exit { left:18%; bottom:2%; width:64%; height:7%; }
.cartographer-movement-pad { z-index:4; }
.cartographer-dialog,.cartographer-purchase { position:fixed; z-index:95; inset:0; display:grid; place-items:center; padding:1rem; background:rgba(8,5,3,.68); }
.cartographer-dialog[hidden],.cartographer-purchase[hidden] { display:none; }
.cartographer-dialog>div { position:relative; width:min(27rem,100%); padding:1.2rem; border:1px solid #b88445; border-radius:.5rem; color:#f8e5bd; background:#2b180e; }
.cartographer-close { position:absolute; z-index:4; top:.5rem; right:.5rem; width:2.5rem; height:2.5rem; border:1px solid #a78250; border-radius:50%; color:#f5ddb2; background:#352315; font-size:1.25rem; }
.cartographer-map > .cartographer-close { top:max(4.15rem,calc(env(safe-area-inset-top) + 3.4rem));right:max(.75rem,env(safe-area-inset-right)); }
.cartographer-dialog__actions { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }.cartographer-dialog__actions button { min-height:3rem; }
.cartographer-map { position:fixed; z-index:91; inset:0; overflow:hidden; padding:4.5rem .9rem 2rem; color:#fff1ce; background:#080604 url('/assets/paysages/monde.png?media_version=20f0be8ce298b2d34a43e244') center/contain no-repeat; animation:cartographer-fade .75s ease both; }
.cartographer-map[hidden],.cartographer-focus[hidden] { display:none; }
.cartographer-map__regions { position:absolute; inset:0; }
.cartographer-region { display:flex; justify-content:space-between; align-items:center; min-height:3.2rem; padding:.55rem .8rem; border:1px solid #b98a45; border-radius:.35rem; color:#ffe7b3; background:rgba(31,16,9,.86); font-family:Cinzel,serif; }
.cartographer-map__regions .cartographer-region { position:absolute; min-height:0; padding:.18rem .28rem; font-size:clamp(.42rem,1.8vw,.62rem); }
.cartographer-region span { display:flex; align-items:center; gap:.2rem; color:#8bd7ff; }.cartographer-region img { width:1.25rem; height:1.25rem; object-fit:contain; }
.cartographer-map>p { position:absolute; z-index:3; left:6%; right:6%; bottom:1rem; margin:0; padding:.5rem; background:rgba(0,0,0,.78); text-align:center; }
.cartographer-purchase .purchase-dialog__card {
  width:min(23rem,calc(100vw - 2rem));
  padding:1.4rem 1.1rem 1.1rem;
  border:1px solid #65b9d0;
  border-radius:.45rem;
  color:#eff9ff;
  background:radial-gradient(circle at 50% 0,rgba(60,164,193,.3),transparent 50%),linear-gradient(#153449,#07131e);
  box-shadow:inset 0 0 0 3px #0b2434,0 1.5rem 5rem #000,0 0 2rem rgba(53,170,235,.3);
  text-align:center;
}
.cartographer-purchase .purchase-dialog__card h2 { margin:0;color:#e9fbff;font:700 clamp(.88rem,4.3vw,1.25rem)/1.2 Cinzel,serif;text-transform:uppercase; }
.cartographer-purchase .purchase-dialog__card p { margin:.9rem auto .65rem;max-width:19rem;color:#d2e9ef;font-size:.76rem;line-height:1.45; }
.cartographer-purchase .purchase-dialog__card>div { display:grid;grid-template-columns:1fr 1.3fr;gap:.55rem;margin:1rem auto 0; }
.cartographer-purchase .purchase-dialog__card button { min-height:3rem;padding:.55rem;border:1px solid #497e91;border-radius:.25rem;color:#d6edf3;background:rgba(9,32,45,.95);font:700 .61rem/1.2 Cinzel,serif;text-align:center;text-transform:uppercase;cursor:pointer; }
.cartographer-purchase #cartographer-purchase-confirm { color:#fff;background:linear-gradient(#247a96,#12475f);border-color:#79d1ff; }
.cartographer-purchase #cartographer-purchase-confirm:disabled { opacity:.55;cursor:wait; }
.cartographer-focus { z-index:99; }
.dungeon-route__boss-discovery { display:grid;justify-items:center;gap:.35rem;width:100%;padding:.65rem;border:1px solid #b88445;border-radius:.45rem;background:rgba(43,24,14,.9);text-align:center; }
.dungeon-route__boss-discovery img { width:min(10rem,42vw);height:min(10rem,42vw);object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 0 .7rem rgba(255,197,85,.45)); }
.dungeon-route__boss-discovery strong { color:#ffe3a4;font-family:Cinzel,serif; }.dungeon-route__boss-discovery small { color:#d2e9ef; }
@keyframes cartographer-fade { from { opacity:0; } to { opacity:1; } }
.public-hero.is-warrior, .shop-hero.is-warrior, .gate-hero.is-warrior, .church-hero.is-warrior, .guard-hero.is-warrior, .cartographer-hero.is-warrior, .bestiary-hero.is-warrior, .apothecary-hero.is-warrior, .road-hero.is-warrior { width: min(10rem, 40vw); }
.public-hero img, .shop-hero img, .gate-hero img, .church-hero img, .guard-hero img, .bestiary-hero img, .apothecary-hero img, .road-hero img { display: block; width: 100%; height: auto; image-rendering: pixelated; }
.public-hero img.is-facing-left, .shop-hero img.is-facing-left, .gate-hero img.is-facing-left, .church-hero img.is-facing-left, .guard-hero img.is-facing-left, .bestiary-hero img.is-facing-left, .apothecary-hero img.is-facing-left, .road-hero img.is-facing-left { transform: scaleX(-1); }
.movement-pad { --direction-angle: 0deg; position: absolute; z-index: 2; left: max(1.25rem, env(safe-area-inset-left)); bottom: max(1.75rem, env(safe-area-inset-bottom)); display: grid; place-items: center; width: 8rem; height: 8rem; border-radius: 50%; touch-action: none; user-select: none; -webkit-user-select: none; }
.movement-pad__ring { position: relative; width: 7rem; height: 7rem; border: 1px solid rgba(245,211,143,.48); border-radius: 50%; background: radial-gradient(circle, rgba(31,16,9,.42) 0 42%, rgba(20,10,6,.65) 43% 100%); box-shadow: inset 0 0 0 3px rgba(50,25,12,.45), 0 .4rem 1.3rem rgba(0,0,0,.4); backdrop-filter: blur(4px); }
.movement-pad__knob { position: absolute; left: 50%; top: 50%; width: 2.8rem; height: 2.8rem; margin: -1.4rem; border: 1px solid #d8a652; border-radius: 50%; background: linear-gradient(#8b491f, #4c210f); box-shadow: inset 0 0 0 2px #32160c, 0 .25rem .6rem rgba(0,0,0,.6); transition: transform .08s linear; }
.movement-pad__arrow { position: absolute; z-index: 1; left: 50%; top: .42rem; translate: -50%; color: rgba(250,217,151,.45); font-size: .75rem; transform: rotate(var(--direction-angle)); transform-origin: 50% 3.05rem; transition: color .15s ease; }
.movement-pad.is-active .movement-pad__arrow { color: #ffd77f; text-shadow: 0 0 .5rem #e88c27; }
.movement-pad.is-active .movement-pad__knob { filter: brightness(1.15); }
.travel-zones { position: absolute; z-index: 1; inset: 0; pointer-events: none; }
.travel-zone { position: absolute; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08), 0 .3rem 1rem rgba(0,0,0,.25); opacity: 0; pointer-events: none; backdrop-filter: blur(2px); transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.travel-zone span { display: block; max-width: 100%; padding: .15rem .3rem; font: 700 clamp(.5rem, 2.2vw, .68rem)/1.1 Cinzel, serif; letter-spacing: .06em; text-align: center; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.public-square.is-moving .travel-zone { opacity: 1; pointer-events: auto; }
.travel-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.38); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.3), 0 0 1.5rem rgba(238,145,43,.35); animation: zone-target 1s ease-in-out infinite; }
.travel-zone--gates { top: 45%; left: 15%; width: 80%; height: 5%; }
.travel-zone--shop { left: 0; bottom: 18%; width: 7%; height: 32%; }
.travel-zone--tavern { right: 0; bottom: 0; width: 58%; height: 6%; }
.travel-zone--bestiary { right: 0; bottom: 8%; width: 7%; height: 25%; }
.travel-zone--gates span, .travel-zone--tavern span { white-space: nowrap; }
.travel-zone--shop span { writing-mode: vertical-rl; rotate: 180deg; white-space: nowrap; }
.travel-zone--bestiary span, #bestiary-arcade span { writing-mode: vertical-rl; white-space: nowrap; }

.destination-screen { display: grid; place-items: center; padding: 1rem; background-position: center; background-size: cover; background-repeat: no-repeat; }
.weapon-shop { background-image: url("/assets/paysages/magasin-d-armes.png?media_version=9d663af7dc49243421d807ef"); }
.shop-counter-zone { position:absolute; z-index:2; left:42%; top:53%; width:20%; height:5%; display:grid; place-items:center; border:1px solid rgba(255,219,146,.5); border-radius:.35rem; color:#ffe8b1; background:rgba(62,31,15,.42); box-shadow:inset 0 0 2rem rgba(228,151,48,.08),0 .3rem 1rem rgba(0,0,0,.25); opacity:.36; backdrop-filter:blur(2px); transition:opacity .22s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease; }
.shop-counter-zone span { font:700 clamp(.5rem,2.2vw,.68rem)/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop.is-moving .shop-counter-zone { opacity:1; }
.apothecary.is-moving .apothecary-counter-zone { opacity:1; }
.shop-counter-zone.is-targeted { border-color:#ffd57d;background:rgba(196,104,30,.38);box-shadow:inset 0 0 2.5rem rgba(255,184,69,.3),0 0 1.5rem rgba(238,145,43,.35);animation:zone-target 1s ease-in-out infinite; }
.weapon-shop-transfer__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center; gap:.55rem; margin-top:.65rem; }
.weapon-shop-transfer__actions > button:not(.weapon-shop-discard) { flex:1; }
.weapon-shop-resale, .weapon-shop-discard { min-height:44px; padding:.65rem .9rem; border:1px solid; border-radius:.4rem; font:700 .65rem/1.35 Cinzel,serif; letter-spacing:.035em; box-shadow:inset 0 1px 0 #ffffff12,0 2px 4px #0005; cursor:pointer; }
.weapon-shop-resale { color:#ffe4a1; border-color:#bf8c3e; background:linear-gradient(#71471f,#3e230e); }
.weapon-shop-discard { flex:0 0 auto; color:#efc2b7; border-color:#8b5147; background:linear-gradient(#462922,#291713); }
.weapon-shop-resale::before { content:'◆'; color:#f7c35e; margin-right:.45rem; }
.weapon-shop-discard::before { content:'×'; margin-right:.4rem; font:700 1rem/1 Inter,sans-serif; vertical-align:-.04rem; }
.weapon-shop-resale:hover:not(:disabled), .weapon-shop-discard:hover:not(:disabled) { filter:brightness(1.2); }
.weapon-shop-resale:focus-visible, .weapon-shop-discard:focus-visible { outline:2px solid #ffe4a1; outline-offset:3px; }
.weapon-shop-resale:disabled, .weapon-shop-discard:disabled { opacity:.5; cursor:wait; }
.weapon-shop-subdialog .danger-action { border-color:#bd5549;color:#ffe0d9;background:#6f211b; }
.weapon-shop-ui { --shop-toolbar-clearance:max(4rem,calc(env(safe-area-inset-top) + 3.25rem)); position:fixed; z-index:90; inset:0; display:grid; place-items:center; padding:.75rem; padding-top:var(--shop-toolbar-clearance); background:rgba(7,3,1,.78); }
.weapon-shop-ui[hidden], .weapon-shop-subdialog[hidden] { display:none; }
.weapon-shop-ui__card { position:relative; width:min(34rem,100%); max-height:86dvh; overflow:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y; padding:1rem; border:1px solid #b87943; border-radius:.5rem; color:#f5dfb9; background:linear-gradient(#442511,#1d0e07); box-shadow:inset 0 0 0 3px #281208,0 1rem 3rem #000; }
.weapon-shop-ui__card>p:first-of-type { margin:0; color:#d9a66d; font:700 .58rem/1 Cinzel,serif; letter-spacing:.14em; text-transform:uppercase; }
.weapon-shop-ui__card { max-height:min(86dvh,calc(100dvh - var(--shop-toolbar-clearance) - .75rem)); }
.weapon-shop-ui__card>h2 { margin:.3rem 2rem .8rem 0; color:#ffe4b5; font:700 1.25rem/1 Cinzel,serif; }
.weapon-shop-ui__close { position:absolute; top:.55rem; right:.55rem; width:2.5rem; height:2.5rem; border:1px solid #a66b3b; border-radius:50%; color:#ffe3b4; background:#3b1c0d; font-size:1.2rem; }
.weapon-shop-ui nav { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; }
.weapon-shop-ui nav[hidden] { display:none; }
.weapon-shop-ui nav button,.weapon-shop-ui__item button,.weapon-shop-ui__offer button,.weapon-shop-subdialog button { min-height:2.7rem; border:1px solid #a66b3b; border-radius:.25rem; color:#f8dfb4; background:#5a2c14; font:700 .62rem/1.2 Cinzel,serif; }
.weapon-shop-ui nav button.is-active { border-color:#efb56f; background:#925025; }
.weapon-shop-ui__status { min-height:1.2rem; color:#e7bf83; text-align:center; font-size:.68rem; }
.weapon-shop-ui__status.is-error { color:#ff9c8d; }
.player-day-countdown { margin:.35rem 0 .55rem;color:#8edfff;font:700 .62rem/1.3 Cinzel,serif;text-align:center;text-shadow:0 0 .45rem rgba(50,190,235,.4); }
.weapon-shop-ui__hero { margin:.7rem 0; padding:.65rem; border:1px solid rgba(184,121,67,.45); background:rgba(18,8,4,.35); }
.weapon-shop-ui__hero h3 { margin:0 0 .5rem; color:#ffdca5; font:700 .82rem/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop-ui__slot { margin:.45rem 0;padding:.4rem;border-left:2px solid #80502e; }
.weapon-shop-ui__slot h4 { display:flex;justify-content:space-between;margin:0 0 .35rem;color:#dcb681;font:700 .66rem/1 Cinzel,serif;text-transform:uppercase; }
.weapon-shop-ui__slot h4 small { color:#a98a67; }
.weapon-shop-ui__transfer-target { display:grid;grid-template-columns:1fr 1fr;gap:.4rem;align-items:center;margin:.4rem 0; }
.weapon-shop-ui__transfer-target button { grid-column:1/-1; }
.weapon-shop-ui__items,.weapon-shop-ui__offers { display:grid; gap:.45rem; }
.weapon-shop-ui__item { display:grid; grid-template-columns:3rem 1fr auto; align-items:center; gap:.5rem; }
.weapon-shop-ui__item strong,.weapon-shop-ui__offer strong { display:block; font-size:.72rem; }
.weapon-shop-ui__item small { display:block; color:#c4a27d; }
.weapon-shop-ui__image { display:grid; place-items:center; width:3rem; height:3rem; }
.weapon-shop-ui__image img { max-width:100%; max-height:100%; object-fit:contain; image-rendering:pixelated; }
.weapon-shop-ui__image b { font-size:1.5rem; }
.weapon-shop-ui__offer { display:grid; grid-template-columns:3.2rem 1fr auto; align-items:center; gap:.45rem; padding:.5rem; border:1px solid rgba(184,121,67,.4); }
.weapon-shop-ui__offer select,.weapon-shop-ui__offer button { grid-column:2 / 4; min-height:2.55rem; }
.weapon-shop-ui__offer select { padding:.3rem; color:#f5dfb9; background:#281208; border:1px solid #82502f; }
.weapon-shop-ui__balance { text-align:center; font-weight:800; }
.weapon-shop-offer-picker { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.35rem;margin:.5rem 0; }
.weapon-shop-ui .weapon-shop-offer-icon { display:grid;justify-items:center;gap:.15rem;min-width:0;min-height:4.5rem;padding:.2rem;border:1px solid #704727;background:#28150b; }
.weapon-shop-offer-icon .weapon-shop-ui__image { width:100%;height:3rem; }
.weapon-shop-offer-icon span:last-child { width:100%;overflow:hidden;color:#d8b98a;font-size:.4rem;text-overflow:ellipsis;white-space:nowrap; }
.weapon-shop-ui .weapon-shop-offer-icon.is-selected { border-color:#f2bd68;background:#6b3718;box-shadow:0 0 .7rem rgba(235,158,65,.45); }
.weapon-shop-offer-detail { min-height:3.8rem;margin:.45rem 0 .65rem;padding:.55rem;border:1px solid rgba(184,121,67,.5);background:rgba(18,8,4,.45);text-align:center; }
.weapon-shop-offer-detail strong { color:#ffe0aa;font:.72rem/1.2 Cinzel,serif; }
.weapon-shop-offer-detail p { margin:.3rem 0 0;color:#cdb08a;font-size:.62rem;line-height:1.4; }
.weapon-shop-purchase-assignment .weapon-shop-slot-box.is-compatible>span { position:static;color:#fff0a6;font:800 .52rem/1.1 Cinzel,serif;white-space:normal; }
.weapon-shop-transfer__instruction { margin:.75rem 0; color:#f1cea0; font-size:.72rem; line-height:1.4; text-align:center; }
.weapon-shop-transfer__empty,.weapon-shop-transfer__selection { min-height:4.2rem; margin:.55rem 0; border:1px solid rgba(184,121,67,.5); background:rgba(18,8,4,.42); }
.weapon-shop-transfer__empty { display:grid; place-items:center; color:#a98a67; font-size:.68rem; }
.weapon-shop-information { margin:.65rem 0 .2rem; }
.has-item-details { --item-details-height:clamp(6.7rem,21.44dvh,12.06rem); }
.weapon-shop-ui.has-item-details { box-sizing:border-box; grid-template-rows:minmax(0,1fr) var(--item-details-height); gap:.6rem; place-items:stretch center; }
.weapon-shop-ui.has-item-details > .weapon-shop-ui__card { box-sizing:border-box; min-height:0; max-height:none; height:100%; box-shadow:inset 0 0 0 3px #281208; }
.hero-sheet.equipment-sheet.has-item-details[open] { display:grid; grid-template-rows:minmax(0,1fr) var(--item-details-height); gap:.6rem; height:calc(100dvh - 2rem); overflow:hidden; }
.hero-sheet.equipment-sheet.has-item-details > .hero-sheet__card { min-height:0; height:100%; max-height:none; box-sizing:border-box; box-shadow:inset 0 0 0 3px #2b160c; }
.item-details-panel { width:100%; min-width:0; min-height:0; box-sizing:border-box; overflow:auto; overscroll-behavior:contain; padding:.65rem; border:1px solid #dba34d; border-radius:.65rem; color:#f5dfb9; background:#241307; box-shadow:0 .3rem 1rem #0008; text-align:left; }
.item-details-panel .weapon-shop-information, .item-details-panel .weapon-shop-offer-detail { margin:0; }
.weapon-shop-information .weapon-shop-transfer__empty,
.weapon-shop-information .weapon-shop-transfer__selection { margin:0; }
.weapon-shop-transfer__empty.is-error { padding:.65rem;border-color:#e65e50;color:#ffd8d1;background:rgba(91,22,17,.88);font-weight:700;text-align:center; }
.weapon-shop-transfer__selection { display:grid; grid-template-columns:3.4rem 1fr; align-items:center; gap:.55rem; padding:.4rem; }
.weapon-shop-transfer__selection>img { width:3.2rem; height:3.2rem; object-fit:contain; object-position:center bottom; image-rendering:pixelated; }
.weapon-shop-transfer__shared { display:grid!important;place-items:center;width:3.2rem;height:3.2rem;border:1px solid #8d6339;border-radius:50%;color:#f0c98f;background:#28150b;font-size:1.35rem; }
.weapon-shop-transfer__selection small,.weapon-shop-transfer__selection strong,.weapon-shop-transfer__selection span { display:block; }
.weapon-shop-transfer__selection small { color:#ba8f60; font:700 .52rem/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop-transfer__selection strong { margin:.18rem 0; color:#ffe1ad; font-size:.76rem; }
.weapon-shop-transfer__selection span { color:#c6a57e; font-size:.62rem; }
.item-details-panel .weapon-shop-transfer__selection { grid-template-columns:3.4rem minmax(0,1fr); align-items:start; text-align:left; }
.item-details-panel .weapon-shop-transfer__selection > .commercial-item__image { width:3.4rem; height:3.4rem; display:grid; }
.item-details-panel .weapon-shop-transfer__selection > div > strong { display:block; margin:.18rem 0; color:#ffe1ad; font:700 .82rem/1.3 Cinzel,serif; }
.item-details-panel .weapon-shop-transfer__selection > div > small { display:block; color:#ba8f60; font:700 .58rem/1.3 Cinzel,serif; text-transform:uppercase; }
.item-details-panel .weapon-shop-transfer__selection > div > span { color:#c6a57e; font:400 .68rem/1.4 Inter,sans-serif; }
.item-details-panel .weapon-shop-transfer__selection > div > p { margin:.35rem 0 0; color:#e3cba9; font:400 .74rem/1.5 Inter,sans-serif; }
.weapon-shop-energy-preview { display:grid;gap:.2rem;margin:.4rem 0;padding:.38rem;border:1px solid rgba(103,196,214,.45);border-radius:.25rem;background:rgba(13,55,65,.35); }
.weapon-shop-energy-preview span { color:#d9f8ff;font-size:.62rem; }
.weapon-shop-energy-preview em { margin-left:.25rem;color:#79ef9b;font-style:normal;font-weight:800; }
.weapon-shop-information .weapon-shop-energy-feedback { min-height:4.2rem;margin:0;place-content:center;place-items:center; }
.weapon-shop-energy-feedback { display:grid;gap:.3rem;margin:.55rem 0;padding:.65rem;border:1px solid #8cefa4;border-radius:.35rem;color:#8cffaa;background:rgba(24,91,48,.72);text-align:center;animation:energy-restored-pulse .55s ease-in-out 4 alternate; }
.weapon-shop-energy-feedback span { font-size:.7rem; }.weapon-shop-energy-feedback strong { color:#8cffaa;font-size:.9rem; }
@keyframes energy-restored-pulse { to { box-shadow:0 0 1.2rem rgba(107,255,143,.75),inset 0 0 .8rem rgba(117,255,151,.25);transform:scale(1.015); } }
.weapon-shop-assignment { display:grid; grid-template-columns:4.2rem minmax(0,1fr); gap:.65rem; }
.weapon-shop-assignment>aside { display:flex; flex-direction:column; gap:.4rem; }
.weapon-shop-hero-entry { display:grid;gap:.16rem; }
.weapon-shop-hero-icon { position:relative; display:grid; place-items:center; min-height:4.25rem; padding:.15rem; overflow:hidden; border:1px solid #6f4529; border-radius:.3rem; color:#dec49b; background:#251208; }
.weapon-shop-hero-icon img { width:100%; height:3.25rem; object-fit:contain; object-position:center bottom; image-rendering:pixelated; }
.weapon-shop-hero-icon span { position:absolute; right:0; bottom:0; left:0; padding:.14rem .08rem; overflow:hidden; color:#f2d7ad; background:rgba(20,8,3,.86); font:700 .42rem/1 Cinzel,serif; text-overflow:ellipsis; white-space:nowrap; }
.weapon-shop-hero-icon.is-selected { border-color:#f0b967; background:#5a2d14; box-shadow:0 0 .75rem rgba(222,139,51,.42); }
.weapon-shop-hero-icon.is-target::after { content:'›'; position:absolute; top:.15rem; right:.2rem; color:#7de4ff; font-size:1rem; text-shadow:0 0 .4rem #55cdf0; }
.weapon-shop-quick-vials { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.08rem; }
.weapon-shop-quick-vial { display:grid;place-items:center;min-width:0;aspect-ratio:1;padding:0;overflow:hidden;border:1px solid #78522e;border-radius:.12rem;background:rgba(20,10,5,.9); }
.weapon-shop-quick-vial.is-empty { border-style:dashed;border-color:#4e3523;background:rgba(8,4,2,.5); }
.weapon-shop-quick-vial .commercial-item,.weapon-shop-quick-vial .weapon-shop-ui__image,.weapon-shop-quick-vial .commercial-item__image { width:100%;height:100%;min-width:0;padding:0;border:0;background:transparent;object-fit:contain; }
.weapon-shop-quick-vial img { width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none; }
.weapon-shop-quick-vial:disabled { opacity:.45; }
.weapon-shop-assignment__inventory>h3 { margin:.1rem 0 .6rem; color:#ffdda7; font:700 .88rem/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop-hero-totals { display:grid; grid-template-columns:1fr 1fr; gap:.35rem; margin:0 0 .55rem; }
.weapon-shop-hero-totals span { padding:.42rem .3rem; border:1px solid rgba(224,164,79,.48); border-radius:.25rem; color:#ffe2ad; background:rgba(26,12,5,.58); text-align:center; font:700 .66rem/1.25 Cinzel,serif; }
.weapon-shop-shared-equipment { clear:both;margin-top:.75rem;padding-top:.65rem;border-top:1px solid rgba(184,121,67,.55); }
.weapon-shop-shared-equipment .weapon-shop-inventory-group { margin:0; }
.weapon-shop-shared-equipment .weapon-shop-inventory-group h4 { color:#f0c98f;line-height:1.25; }
.weapon-shop-keyring { clear:both;margin-top:.75rem;padding-top:.65rem;border-top:1px solid rgba(184,121,67,.55); }
.weapon-shop-keyring h4 { margin:0 0 .45rem;color:#f0c98f;font:700 .68rem/1.25 Cinzel,serif;text-transform:uppercase; }
.weapon-shop-keyring h4 small { color:#b99a72;font-size:.55rem; }
.weapon-shop-keyring__grid { display:flex;flex-wrap:wrap;gap:.3rem; }
.weapon-shop-keyring__grid>p { margin:.1rem 0;color:#987f65;font-size:.62rem;font-style:italic; }
.weapon-shop-keyring__key { position:relative;display:grid;place-items:center;width:2.7rem;height:2.7rem;padding:.12rem;overflow:hidden;border:1px solid #684329;border-radius:.22rem;background:rgba(17,8,4,.72);cursor:pointer; }
.weapon-shop-keyring__key.is-selected { border-color:#e2ad42;box-shadow:0 0 .55rem rgba(226,173,66,.72); }
.weapon-shop-keyring__key .weapon-shop-ui__image,.weapon-shop-keyring__key .commercial-item__image { width:100%;height:100%;padding:.08rem;border:0;object-fit:contain;background:transparent; }
.weapon-shop-keyring__key>span { position:absolute;right:.08rem;bottom:.05rem;left:.08rem;overflow:hidden;color:#f2d6a7;font-size:.3rem;text-align:center;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 2px #000; }
.castle-leaderboard .castle-leaderboard-region{display:grid;gap:.4rem;padding:.65rem;border-color:#8f5928;border-radius:.4rem;background:linear-gradient(135deg,#160904,#2b1308 48%,#140804);box-shadow:inset 0 0 1.2rem rgba(211,143,53,.08),0 .35rem .8rem rgba(0,0,0,.42)}
.boss-ranking-row{display:grid;grid-template-columns:2rem auto minmax(0,1fr) auto;align-items:center;gap:.55rem;min-height:3.3rem;padding:.38rem .55rem;border:1px solid rgba(196,127,49,.35);border-radius:.3rem;background:linear-gradient(90deg,rgba(68,28,11,.88),rgba(24,10,5,.9));text-align:left}.boss-ranking-row__rank{color:#9c6939;font:700 .68rem Cinzel,serif;text-align:center}.boss-ranking-row__portrait{width:2.7rem;height:2.7rem;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 .15rem .18rem #000)}.boss-ranking-row__identity{display:grid;min-width:0;gap:.1rem}.boss-ranking-row__boss{overflow:hidden;color:#ffd978;font:700 clamp(.68rem,2.5vw,.86rem)/1.2 Cinzel,serif;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px #321400}.boss-ranking-row__owner{overflow:hidden;color:#79b9c7;font:600 .55rem/1.2 Inter,sans-serif;text-overflow:ellipsis;white-space:nowrap}.boss-ranking-row__score{display:grid;justify-items:end;min-width:6.2rem;color:#f4d99e;text-align:right}.boss-ranking-row__score b{color:#fff0ae;font:700 clamp(1.35rem,5vw,2rem)/.85 "Apple Chancery","Segoe Script","Brush Script MT",cursive;text-shadow:0 .1rem #5a240d,0 0 .45rem rgba(255,194,83,.42)}.boss-ranking-row__score small{max-width:6.2rem;color:#bda57d;font-size:.43rem;line-height:1.15;text-transform:uppercase}
@media(max-width:30rem){.castle-leaderboard .boss-ranking-row{grid-template-columns:1.5rem minmax(0,1fr) auto;gap:.35rem;padding-inline:.35rem}.castle-leaderboard .boss-ranking-row__portrait{display:none}.castle-leaderboard .boss-ranking-row__score{min-width:0;max-width:4.5rem}.castle-leaderboard .boss-ranking-row__score small{max-width:4.5rem;overflow-wrap:anywhere}}
.castle-leaderboard .boss-ranking-row:nth-child(1){border-color:#ffd65a;background:linear-gradient(90deg,rgba(112,75,10,.94),rgba(42,23,5,.95));box-shadow:0 0 .8rem rgba(255,214,90,.68),inset 0 0 .65rem rgba(255,240,158,.2)}
.castle-leaderboard .boss-ranking-row:nth-child(2){border-color:#d9e3ef;background:linear-gradient(90deg,rgba(76,85,98,.94),rgba(28,31,38,.95));box-shadow:0 0 .7rem rgba(217,227,239,.55),inset 0 0 .6rem rgba(255,255,255,.14)}
.castle-leaderboard .boss-ranking-row:nth-child(3){border-color:#d88b4f;background:linear-gradient(90deg,rgba(105,51,20,.94),rgba(40,20,9,.95));box-shadow:0 0 .7rem rgba(216,139,79,.55),inset 0 0 .6rem rgba(255,189,128,.14)}
.castle-leaderboard .boss-ranking-row:nth-child(1) .boss-ranking-row__rank{color:#ffe98a;text-shadow:0 0 .45rem #ffd54a}
.castle-leaderboard .boss-ranking-row:nth-child(2) .boss-ranking-row__rank{color:#f2f6fb;text-shadow:0 0 .4rem #cbd8e8}
.castle-leaderboard .boss-ranking-row:nth-child(3) .boss-ranking-row__rank{color:#f1aa70;text-shadow:0 0 .4rem #c86e35}
.castle-leaderboard .boss-ranking-row--personal{margin-top:.35rem;border-color:#a46d42;background:linear-gradient(90deg,rgba(83,48,26,.96),rgba(35,20,13,.96));box-shadow:0 0 .55rem rgba(159,99,55,.35),inset 0 0 .55rem rgba(205,145,91,.1)}
.boss-ranking-row__region{overflow:hidden;color:#c79b62;font:600 .5rem/1.2 Inter,sans-serif;text-overflow:ellipsis;white-space:nowrap}.boss-ranking-row__global-rank{color:#d2a276;font:600 .48rem/1.2 Inter,sans-serif;text-transform:uppercase}

.equipment-captured-bosses{clear:both;margin-top:.8rem;padding-top:.7rem;border-top:1px solid rgba(184,121,67,.55)}.equipment-captured-bosses h4{margin:0 0 .45rem;color:#f0c98f;font:700 .68rem/1.25 Cinzel,serif;text-transform:uppercase}.equipment-captured-bosses h4 small{color:#b99a72;font-size:.55rem}.equipment-captured-bosses__limit{margin:.15rem 0 .5rem;padding:.4rem;border:1px solid #c88642;color:#ffd5a4;background:rgba(104,48,16,.55);font-size:.62rem;text-align:center}.equipment-captured-bosses__list{display:grid;gap:.35rem}.equipment-captured-bosses__list>p{margin:.15rem 0;color:#987f65;font-size:.62rem;font-style:italic}.equipment-captured-bosses .boss-ranking-row{grid-template-columns:1.5rem auto minmax(0,1fr) auto}.equipment-captured-bosses .boss-ranking-row__score{min-width:6.2rem}
.equipment-captured-bosses__choice{display:block;width:100%;padding:0;border:1px solid transparent;background:transparent;color:inherit;text-align:inherit}.equipment-captured-bosses__choice.is-selected{border-color:#e5b74f;box-shadow:0 0 .55rem rgba(229,183,79,.38)}.captured-boss-loadout{margin-top:.55rem;padding:.55rem;border:1px solid rgba(229,183,79,.45);background:rgba(18,8,4,.68)}.captured-boss-loadout>p{margin:.4rem 0;color:#cdb999;font-size:.62rem}.captured-boss-loadout__stats{display:flex;justify-content:space-between;gap:.5rem;color:#f2cd8d;font:700 .65rem Cinzel,serif}.captured-boss-loadout__slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.captured-boss-loadout__slot{min-height:4.4rem;border:1px dashed #8d6538;background:#1a0d08;color:#e8cfaa;display:flex;align-items:center;justify-content:center;gap:.4rem;flex-direction:column}.captured-boss-loadout__slot.is-compatible{border-style:solid;border-color:#3f9ee8;box-shadow:0 0 .5rem rgba(63,158,232,.45)}.captured-boss-loadout__slot.is-selected{border-style:solid;border-color:#e5b74f;box-shadow:0 0 .6rem rgba(229,183,79,.55)}.captured-boss-loadout__slot img{width:2.6rem;height:2.6rem;object-fit:contain}.captured-boss-loadout__slot span{font-size:.58rem;text-align:center}.captured-boss-loadout__slot b{font-size:1.25rem}
.equipment-captured-bosses__value{display:block;padding:.15rem .4rem .3rem;color:#f0c36a;font:700 .62rem Cinzel,serif;text-align:right}.captured-boss-loadout__sell{display:block;margin:.55rem auto 0;padding:.48rem .75rem;border:1px solid #c99738;border-radius:.25rem;background:linear-gradient(#6b3818,#35170a);color:#ffe2a1;font:700 .64rem Cinzel,serif;text-transform:uppercase}
.weapon-shop-transfer__selection--key { grid-template-columns:3rem minmax(0,1fr); }
.weapon-shop-transfer__key-image { width:3rem;height:3rem; }
.weapon-shop-transfer__key-image .commercial-item { width:100%;height:100%; }
.weapon-shop-inventory-group { margin:.55rem 0; }
.weapon-shop-inventory-group h4 { display:flex; justify-content:space-between; margin:0 0 .3rem; color:#dcb681; font:700 .62rem/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop-inventory-group h4 small { color:#a98a67; }
.weapon-shop-slot-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.35rem; }
.weapon-shop-slot-grid--equipement { grid-template-columns:repeat(5,minmax(0,1fr)); }
.weapon-shop-slot-grid--fioles { grid-template-columns:repeat(5,minmax(0,1fr));gap:.22rem; }
.weapon-shop-inventory-group--fioles { margin-top:.4rem; }
.weapon-shop-inventory-group--fioles .weapon-shop-slot-box { width:100%;max-width:3rem;justify-self:center;padding:.08rem; }
.weapon-shop-slot-box { position:relative; display:grid; place-items:center; aspect-ratio:1; min-width:0; padding:.12rem; overflow:hidden; border:1px solid #684329; border-radius:.25rem; color:#d8b98a; background:rgba(17,8,4,.72); touch-action:pan-y; }
.weapon-shop-slot-box>*,.weapon-shop-slot-box img { pointer-events:none; }
.weapon-shop-slot-box img { -webkit-user-drag:none; user-drag:none; }
.weapon-shop-slot-box.is-extension-sac-a-dos { border-color:#77736e;background:rgba(75,75,75,.38); }
.weapon-shop-slot-box.is-extension-sac-contenance { border-color:#568db2;background:rgba(31,76,111,.42); }
.weapon-shop-slot-box .weapon-shop-ui__image { width:100%; height:100%; }
.weapon-shop-slot-box .commercial-item__image { width:100%;height:100%;padding:.1rem;border:0;background:transparent; }
.weapon-shop-slot-box>span { position:absolute; right:.1rem; bottom:.08rem; left:.1rem; overflow:hidden; color:#f2d6a7; font-size:.38rem; text-align:center; text-overflow:ellipsis; white-space:nowrap; text-shadow:0 1px 2px #000; }
.weapon-shop-slot-box>.weapon-shop-slot-name { position:static;display:-webkit-box;overflow:hidden;padding:.15rem;color:#f2d6a7;font-size:clamp(.46rem,1.8vw,.58rem);line-height:1.15;text-align:center;white-space:normal;text-overflow:clip;text-shadow:none;-webkit-box-orient:vertical;-webkit-line-clamp:3; }
.weapon-shop-slot-box.is-selected { border:2px solid #79e8ff; background-color:rgba(20,94,117,.46); box-shadow:0 0 .85rem rgba(68,220,255,.78),inset 0 0 .55rem rgba(102,229,255,.28); }
.weapon-shop-slot-box.is-magical { border-color:#ffd64d; background:radial-gradient(circle,rgba(126,83,19,.45),rgba(17,8,4,.78)); box-shadow:0 0 .8rem rgba(255,214,77,.72),inset 0 0 .7rem rgba(255,214,77,.24); }
.weapon-shop-slot-box.is-magical.is-selected { border:2px solid #79e8ff; background:radial-gradient(circle,rgba(126,83,19,.45),rgba(13,63,78,.82)); box-shadow:0 0 .95rem rgba(68,220,255,.88),inset 0 0 .75rem rgba(255,214,77,.42); }
.weapon-shop-slot-box.is-empty>span { position:static; color:#715338; font-size:1rem; }
.weapon-shop-slot-box.is-compatible { border-style:dashed; border-color:#65bfd0; color:#86def0; cursor:pointer; }
.weapon-shop-slot-box.is-compatible>span { color:#86def0; }
.weapon-shop-slot-box .weapon-shop-slot-price { position:static;display:flex;align-items:center;justify-content:center;gap:.12rem;color:#eaf8ff;font:800 .58rem/1 Cinzel,serif; }
.weapon-shop-slot-box .weapon-shop-slot-price img { width:1.05rem;height:1.05rem;object-fit:contain; }
.weapon-shop-slot-box.is-compatible .weapon-shop-slot-price { color:#eaf8ff; }
.weapon-shop-slot-box.is-insufficient { border-color:#df6558; color:#ff9c8d; background:rgba(92,22,18,.58); box-shadow:inset 0 0 .7rem rgba(213,61,48,.2); }
.weapon-shop-slot-box.is-insufficient>span { color:#ff9c8d; }
.weapon-shop-slot-box.is-incompatible { border:2px solid #e65e50;color:#ffd4cc;background:rgba(104,24,18,.72);box-shadow:0 0 .75rem rgba(225,61,48,.5),inset 0 0 .65rem rgba(255,116,91,.2);cursor:pointer; }
.weapon-shop-slot-box.is-incompatible>span { color:#ffd4cc; }
.weapon-shop-local-error { margin:.35rem 0 .55rem;padding:.5rem .6rem;border:1px solid #d85a4c;border-radius:.28rem;color:#ffd8d1;background:rgba(91,22,17,.88);font:700 .62rem/1.35 Inter,sans-serif;text-align:left; }
.weapon-shop-slot-box.is-target { border-style:solid; border-color:#8eeaff; background:rgba(24,91,105,.45); box-shadow:0 0 .8rem rgba(82,218,242,.55); }
.weapon-shop-transfer__submit { width:100%; min-height:3rem; margin-top:.75rem; border:1px solid #d18b3b; border-radius:.3rem; color:#fff0ce; background:#8b491d; font:700 .72rem/1 Cinzel,serif; text-transform:uppercase; }
.weapon-shop-transfer__submit:disabled { opacity:.38; }
.item-details-panel .weapon-shop-transfer__actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr)); grid-auto-rows:1fr; align-items:stretch; gap:.5rem; margin-top:.65rem; }
.item-details-panel > .weapon-shop-transfer__actions { position:sticky; top:-.65rem; z-index:1; margin:0 0 .45rem; padding:.35rem 0; background:#241307; }
.item-details-panel :is(.weapon-shop-transfer__submit,.weapon-shop-resale,.weapon-shop-discard) { display:flex; align-items:center; justify-content:center; gap:.4rem; box-sizing:border-box; width:100%; min-width:0; min-height:3rem; margin:0; padding:.65rem .75rem; border:1px solid var(--action-neutral-border); border-radius:.45rem; font:700 .68rem/1.35 Cinzel,serif; letter-spacing:.035em; text-transform:uppercase; box-shadow:inset 0 1px 0 #ffffff38,inset 0 -2px 0 #0005,0 3px 6px #0006; cursor:pointer; }
.item-details-panel .weapon-shop-transfer__submit { color:#e6faff; border-color:var(--action-spend-border); background:linear-gradient(var(--action-spend-top),var(--action-spend-bottom)); }
.item-details-panel .weapon-shop-transfer__submit::before { content:'✦'; color:#b6efff; font-size:1rem; }
.item-details-panel .weapon-shop-resale { color:#ffe4a1; border-color:#bf8c3e; background:linear-gradient(#805326,#44260e); }
.item-details-panel .weapon-shop-discard { color:#ffe0d9; border-color:var(--action-danger-border); background:linear-gradient(var(--action-danger-top),var(--action-danger-bottom)); }
.item-details-panel :is(.weapon-shop-resale,.weapon-shop-discard)::before { margin:0; }
.item-details-panel :is(.weapon-shop-transfer__submit,.weapon-shop-resale,.weapon-shop-discard):hover:not(:disabled) { filter:brightness(1.15); }
.item-details-panel :is(.weapon-shop-transfer__submit,.weapon-shop-resale,.weapon-shop-discard):active:not(:disabled) { box-shadow:inset 0 2px 4px #0008; }
.item-details-panel :is(.weapon-shop-transfer__submit,.weapon-shop-resale,.weapon-shop-discard):focus-visible { outline:2px solid #ffe4a1; outline-offset:2px; }
.item-details-panel :is(.weapon-shop-transfer__submit,.weapon-shop-resale,.weapon-shop-discard):disabled { opacity:.45; cursor:wait; }
.weapon-shop-subdialog { position:fixed; z-index:95; inset:0; display:grid; place-items:center; padding:1rem; background:rgba(5,2,1,.86); }
.weapon-shop-subdialog>div { box-sizing:border-box; width:min(28rem,100%); max-height:calc(100dvh - 2rem); overflow:auto; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem; padding:1.2rem; border:1px solid #b87943; border-radius:.65rem; color:#f5dfb9; background:linear-gradient(#402412,#211108); box-shadow:inset 0 1px 0 #ffffff20,0 1rem 3rem #0009; text-align:center; }
.weapon-shop-subdialog>div>h2 { grid-column:1/-1; min-width:0; margin:0; padding:0; color:#ffe0a9; font:700 clamp(1rem,3vw,1.35rem)/1.35 Cinzel,serif; overflow-wrap:anywhere; }
.weapon-shop-subdialog>div>p { grid-column:1/-1; margin:0 0 .3rem; color:#dfc5a3; font:400 .8rem/1.5 Inter,sans-serif; }
.weapon-shop-subdialog>div>div { display:grid; gap:.45rem; min-width:0; }
.weapon-shop-subdialog button { width:100%; min-height:3rem; margin:0; padding:.65rem .75rem; border-radius:.45rem; color:#f8dfb4; border-color:var(--action-neutral-border); background:linear-gradient(var(--action-neutral-top),var(--action-neutral-bottom)); font:700 .68rem/1.35 Cinzel,serif; box-shadow:inset 0 1px 0 #ffffff38,inset 0 -2px 0 #0005,0 3px 6px #0006; cursor:pointer; }
.weapon-shop-subdialog .danger-action { border-color:var(--action-danger-border); color:#ffe0d9; background:linear-gradient(var(--action-danger-top),var(--action-danger-bottom)); }
.weapon-shop-subdialog .weapon-shop-resale { border-color:#bf8c3e; color:#ffe4a1; background:linear-gradient(#805326,#44260e); }
.weapon-shop-subdialog button:hover:not(:disabled) { filter:brightness(1.15); }
.weapon-shop-subdialog button:active:not(:disabled) { box-shadow:inset 0 2px 4px #0008; }
.weapon-shop-subdialog button:focus-visible { outline:2px solid #ffe4a1; outline-offset:2px; }
.weapon-shop-subdialog button:disabled { opacity:.45; cursor:wait; }
.city-gates { background-image: url("/assets/paysages/porte-de-la-ville.png?media_version=9f502caa5b38d3328566a72d"); }
.city-gates.is-boss-capture {
  background-image:url("/assets/paysages/capture.png?media_version=6095fc2f0a951d689ecc0723");
  opacity:0;
  transition:opacity 2s ease-in-out;
}
.city-gates.is-boss-capture-visible { opacity:1; }
.city-gates.is-boss-capture .destination-screen__shade,
.city-gates.is-boss-capture .location-banner,
.city-gates.is-boss-capture .gate-hero,
.city-gates.is-boss-capture .city-hero-3d,
.city-gates.is-boss-capture .gate-zone,
.city-gates.is-boss-capture .movement-pad { display:none; }
.church { background-image: url("/assets/paysages/eglise.png?media_version=8bc6fc332bee8c356b308fa8"); }
.bestiary { background-image: url("/assets/paysages/bestiaire-dt.png?media_version=87bf994d64fbdb3e1a1476cc"); }
.narrative-conversation{box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:clamp(1rem,3vw,2rem);border:0;color:#ffe8b1;background:radial-gradient(ellipse at center,#432915,#100904);overflow:auto;}
.narrative-conversation::backdrop{background:rgba(16,9,4,.45);}
.end-credits{box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#060504;color:#e8d6ab;overflow:hidden;text-align:center;}
.end-credits::backdrop{background:#000c;}
.end-credits__close,.end-credits__pause{position:absolute;z-index:2;top:1rem;background:#100d08;color:#efd18f;border:1px solid #b98c35;padding:.55rem .8rem;}
.end-credits__close{right:1rem;font-size:1.5rem;}.end-credits__pause{left:1rem;}
.end-credits__viewport{height:100%;overflow-y:auto;scrollbar-width:thin;overscroll-behavior:contain;}
.end-credits__roll{padding:65vh 1.5rem 40vh;margin:auto;max-width:32rem;font:400 1.1rem/1.8 Georgia,serif;}
.end-credits h1,.end-credits h2{color:#e8bf67;font-family:Cinzel,serif;}.end-credits section{margin:5rem 0;}
.end-credits__heroes{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;align-items:end;margin-top:2rem;}
.end-credits__heroes img{height:4.5rem;max-width:4.5rem;object-fit:contain;image-rendering:pixelated;}
.end-credits__landscape{width:9rem;margin-top:1rem;border:1px solid #82662d;}
.end-credits__codex{display:block;width:5rem;height:5rem;margin:1rem auto;}
.end-credits__trailer{display:block;width:min(100%,18rem);height:auto;margin:1.5rem auto;}
.end-credits__logos{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:2rem;margin:2rem auto;}
.end-credits__logos img{width:5rem;height:5rem;object-fit:contain;}
.end-credits__controls{position:absolute;z-index:2;top:1rem;right:4.5rem;display:flex;gap:.4rem;}
.end-credits__controls > :is(.sound-toggle,.language-toggle){position:static;display:grid;margin:0;}
.narrative-conversation__lines{max-width:65rem;margin:auto;}
.narrative-conversation__line{display:flex;align-items:center;gap:1rem;margin:.7rem 0;}
.narrative-conversation__line[hidden]{display:none;}
.narrative-conversation__line[data-side="1"]{flex-direction:row-reverse;}
.narrative-conversation__portrait{flex:0 0 clamp(4rem,12vw,7rem);height:clamp(4rem,12vw,7rem);border-radius:50%;border:2px solid #c99d4c;background-repeat:no-repeat;background-color:#201308;}
.narrative-conversation__bubble{position:relative;max-width:48rem;padding:.8rem 1rem;border:2px solid #c99d4c;border-radius:1.2rem;background:#f5e3bb;color:#301b0b;}
.narrative-conversation__bubble::before{content:'';position:absolute;left:-.65rem;top:45%;width:1rem;height:1rem;background:#f5e3bb;border-left:2px solid #c99d4c;border-bottom:2px solid #c99d4c;transform:rotate(45deg);}
.narrative-conversation__line[data-side="1"] .narrative-conversation__bubble::before{left:auto;right:-.65rem;transform:rotate(225deg);}
.narrative-conversation__bubble p{margin:.4rem 0 0;line-height:1.45;}
.narrative-conversation>button{display:block;margin:1rem auto;padding:.8rem 2rem;background:#744013;color:#ffe8b1;border:1px solid #c99d4c;border-radius:.4rem;}
.narrative-conversation>button[hidden]{display:none;}
.apothecary { background-image: url("/assets/paysages/apothicaire.png?media_version=a0c5dc1dc650000750fe7f10"); }
.castle-road { background-image: url("/assets/paysages/allee.png?media_version=b118ea2761b438068d7b06dc"); }
.castle{background-image:url("/assets/paysages/chateau.png?media_version=96dca296f5914fb8d0b2ff64");}.castle-status{position:absolute;inset:48% 1rem auto;text-align:center;color:#ffe2a1}.castle-panel{position:absolute;z-index:8;left:50%;top:53%;translate:-50% -50%;box-sizing:border-box;width:min(28rem,92%);max-height:78%;overflow:auto;padding:1.2rem;border:1px solid #9c5e20;border-radius:.45rem;background:rgba(40,18,8,.95);color:#f5dfb4;text-align:center;box-shadow:0 0 2rem #000}.castle-panel--wide{width:min(50rem,94%)}.castle-panel>button:not(.dialog-close){display:block;width:100%;margin:.55rem 0;padding:.8rem}.castle-captures{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.65rem}.castle-boss-card{position:relative;display:grid;grid-template-rows:7rem auto auto;gap:.25rem;place-items:center;padding:.5rem;border:1px solid #8f5928;border-radius:.35rem;background:#281208;color:#f8ddb0}.castle-boss-card img{max-width:100%;height:7rem;object-fit:contain;image-rendering:pixelated}.castle-boss-card small{font-size:.65rem}.castle-leaderboard{display:grid;gap:.7rem}.castle-leaderboard-region{padding:.5rem;border:1px solid #70431f;background:#1b0d07}.castle-leaderboard-region div{display:grid;grid-template-columns:2rem 1fr auto;gap:.5rem;padding:.35rem;text-align:left}.castle-battle{width:min(52rem,96%);display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:.65rem}.castle-battle[hidden]{display:none}.castle-fighter>div{min-height:11rem}.castle-duel-fighter{display:grid;gap:.35rem}.castle-duel-owner{display:block;overflow:hidden;color:#e6b968;font:700 clamp(.72rem,2.8vw,.95rem) Cinzel,serif;text-overflow:ellipsis;white-space:nowrap}.castle-fighter>i{display:block;height:.7rem;background:#210606;border:1px solid #8d3a27}.castle-fighter>i span{display:block;width:100%;height:100%;background:#36b44e;transition:width .12s linear}.castle-versus{align-self:center;font:800 1.5rem Cinzel,serif}.castle-battle>p,.castle-battle>button{grid-column:1/-1}.castle-battle .castle-boss-card{grid-template-rows:min(25vh,12rem) auto auto}.castle-battle .castle-boss-card img{height:min(25vh,12rem)}

.season-introduction{position:fixed;z-index:10000;inset:0;display:grid;place-items:center;box-sizing:border-box;padding:max(1rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom));overflow:auto;background:radial-gradient(circle at 50% 15%,rgba(96,49,20,.48),transparent 42%),rgba(8,4,3,.97);color:#f4dfb7}.season-introduction[hidden]{display:none}.season-introduction__card{position:relative;width:min(34rem,100%);box-sizing:border-box;padding:1.3rem;border:1px solid #b47a32;border-radius:.65rem;background:linear-gradient(160deg,rgba(54,25,12,.98),rgba(22,10,7,.99));box-shadow:0 1.5rem 4rem #000,inset 0 0 2rem rgba(201,135,53,.08)}.season-introduction__languages{display:flex;justify-content:flex-end;gap:.35rem}.season-introduction__languages button{min-width:2.5rem;min-height:2.3rem;border:1px solid #986126;border-radius:2rem;color:#f0d49d;background:#251108;text-transform:uppercase}.season-introduction__languages button[aria-pressed="true"]{color:#241006;background:#e3b65e}.season-introduction__kicker{margin:.35rem 0;color:#d59749;font:700 .68rem/1.2 Cinzel,serif;letter-spacing:.16em;text-align:center;text-transform:uppercase}.season-introduction h1{margin:.45rem 0 .8rem;color:#ffe09a;font:800 clamp(1.45rem,6.5vw,2.2rem)/1.12 Cinzel,serif;text-align:center;text-shadow:0 2px #401b0a}.season-introduction__card>p{font-size:.86rem;line-height:1.5}.season-introduction__bug{display:grid;grid-template-columns:3.25rem 1fr;align-items:center;gap:.8rem;margin:.9rem 0;padding:.75rem;border:1px solid #73502c;background:rgba(10,6,4,.55)}.season-introduction__bug>span{display:grid;place-items:center;width:3rem;height:3rem;border:1px solid #d4a04b;border-radius:50%;background:#241109;box-shadow:0 0 1rem rgba(229,171,71,.22);font-size:1.45rem}.season-introduction__bug p{margin:0;font-size:.78rem;line-height:1.45}.season-introduction__sandbox{color:#ffe1a5}.season-introduction form{display:grid;gap:.55rem;margin-top:1rem}.season-introduction label{display:grid;grid-template-columns:1.35rem 1fr;align-items:start;gap:.55rem;padding:.5rem;border:1px solid rgba(151,99,42,.45);background:rgba(12,7,5,.45);font-size:.76rem;line-height:1.35}.season-introduction input{width:1.15rem;height:1.15rem;margin:.05rem 0 0;accent-color:#c98331}.season-introduction .auth-submit{margin-top:.45rem}.season-introduction .auth-submit:disabled{opacity:.38;cursor:not-allowed}
.guard-room { background-image:url("/assets/paysages/gardes.png?media_version=fd0ce24bffa1297ca35b0616"); transition:background-image .8s ease; }
.guard-room::after { content:"";position:absolute;z-index:85;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .6s ease; }
.guard-room.is-transitioning::after { opacity:1; }
.guard-room.is-playing { background-image:url("/assets/paysages/triple-garde/triple-garde.png?media_version=adcbad57812454a0335b6ca6"); }
.guard-room.is-playing .location-banner { display:none; }
.guard-zone { position:absolute;z-index:2;display:grid;place-items:center;border:1px solid rgba(255,219,146,.5);border-radius:.35rem;color:#ffe8b1;background:rgba(62,31,15,.42);opacity:.36;transition:background .18s,border-color .18s,box-shadow .18s; }
.guard-zone span { font:700 clamp(.5rem,2.2vw,.68rem)/1 Cinzel,serif;text-transform:uppercase;text-shadow:0 2px .3rem #000; }
.guard-zone--table { left:40%;top:47%;width:20%;height:5%; }
.guard-zone--exit { left:38%;bottom:0;width:62%;height:6%; }
.guard-zone.is-targeted { border-color:#ffd57d;background:rgba(196,104,30,.5);box-shadow:inset 0 0 2.5rem rgba(255,184,69,.38),0 0 1.5rem rgba(238,145,43,.45);animation:zone-target 1s ease-in-out infinite; }
.guard-room.is-playing .guard-hero,.guard-room.is-playing .city-hero-3d,.guard-room.is-playing .guard-zone,.guard-room.is-playing .guard-movement-pad { display:none; }
.guard-panel { position:fixed; z-index:90; inset:0; display:grid; place-items:end center; padding:.85rem; background:linear-gradient(transparent 8%,rgba(11,5,2,.78) 52%); opacity:1; transform:translateY(0); transition:opacity .32s ease,transform .32s ease; }
.guard-panel.is-fading { opacity:0;transform:translateY(.65rem);pointer-events:none; }
.guard-panel[hidden],.guard-game[hidden],.guard-intro-actions[hidden] { display:none; }
.guard-panel__card { position:relative; width:min(27rem,100%); max-height:82dvh; overflow:auto; padding:1rem; border:1px solid #bd7c36; border-radius:.55rem; color:#ffe8bf; background:linear-gradient(155deg,rgba(63,32,15,.97),rgba(22,10,5,.98)); box-shadow:inset 0 0 2rem rgba(255,190,90,.08),0 1rem 3rem #000; }
.guard-panel__close,.guard-rules>button { position:absolute; top:.45rem; right:.45rem; width:2.35rem; height:2.35rem; border:1px solid #9f6c36; border-radius:50%; color:#f9dfae; background:#2c160b; font-size:1.2rem; }
.guard-panel__card>p:first-of-type { margin:0;color:#d9a866;font:700 .55rem/1 Cinzel,serif;letter-spacing:.14em;text-transform:uppercase; }
.guard-panel__card h2 { margin:.35rem 2.5rem .55rem 0;font:800 1.25rem/1.2 Cinzel,serif; }
.guard-room.is-playing .guard-panel { padding:.65rem;background:linear-gradient(transparent 50%,rgba(11,5,2,.9)); }
.guard-room.is-playing .guard-panel__card { padding:.7rem .8rem;transition:width .32s ease,max-height .32s ease; }
.guard-room.is-playing.is-wagering .guard-panel__card { width:min(32rem,100%);max-height:76dvh; }
.guard-room.is-playing.is-ready-to-roll .guard-panel__card { width:min(22rem,100%);max-height:32dvh;overflow:visible; }
.guard-room.is-playing .guard-panel__card>p:first-of-type,
.guard-room.is-playing .guard-panel__card>h2,
.guard-room.is-playing #guard-message,
.guard-room.is-playing .guard-panel__close { display:none; }
.guard-intro-actions,.guard-game-actions { display:grid;gap:.55rem; }
.guard-intro-actions button,.guard-game-actions button { min-height:2.8rem;border:1px solid #b47a3a;border-radius:.3rem;color:#fff0ce;background:#6c381a;font:800 .66rem/1.2 Cinzel,serif;text-transform:uppercase; }
.guard-dice-board { position:absolute;z-index:4;inset:0;pointer-events:none; }
.guard-dice-board[hidden] { display:none; }
.guard-dice-board section { position:absolute;left:50%;width:100%;transform:translateX(-50%);text-align:center; }
.guard-dice-board section:first-child { top:22%; }
.guard-dice-board section:last-child { top:47%; }
.guard-dice-board h3 { margin:0 0 .2rem;color:#ffe8b1;font:800 clamp(.6rem,2.5vw,.8rem)/1 Cinzel,serif;text-shadow:0 2px .45rem #000;text-transform:uppercase; }
.guard-dice-board section>div { display:flex;justify-content:center;gap:clamp(.35rem,2vw,.7rem);min-height:4.7rem; }
.guard-dice-board .guard-die { width:clamp(4rem,16vw,5.8rem);height:clamp(4rem,16vw,5.8rem);object-fit:contain;filter:drop-shadow(0 .18rem .16rem #000) drop-shadow(0 0 .3rem rgba(173,98,28,.6)); }
.guard-dice-board section:last-child .guard-die { width:clamp(4.8rem,19vw,6.8rem);height:clamp(4.8rem,19vw,6.8rem); }
.guard-dice-board .is-rolling .guard-die { animation:guard-dice-roll .28s steps(2,end) infinite; }
@keyframes guard-dice-roll { 50%{transform:rotate(8deg) scale(.94);filter:brightness(1.35) drop-shadow(0 .18rem .16rem #000)} }
.guard-result { min-height:2.3em;margin:.2rem 0 .55rem;color:#ffd47d;font-weight:700;line-height:1.35;text-align:center; }
.guard-lys-wager { margin:.35rem 0; }
.guard-lys-wager #guard-balance { color:#75dcff;font-size:.72rem;font-weight:800; }
.guard-wager-help { margin:.15rem 0 .35rem;color:#dbc09b;font-size:.62rem;line-height:1.35;text-align:center; }
.guard-stake-total { margin:.35rem 0 .55rem;color:#77ddff;font:800 .76rem/1.2 Cinzel,serif;text-align:center;text-shadow:0 0 .45rem rgba(37,183,230,.45); }
.guard-wager-confirmation { display:grid;place-items:center;min-height:3.5rem; }
.guard-wager-confirmation[hidden] { display:none; }
.guard-wager-confirmation p { color:#77ddff;font:800 1rem/1.35 Cinzel,serif;text-align:center;text-shadow:0 0 .55rem rgba(37,183,230,.5); }
.lys-stake-control { display:grid;grid-template-columns:2.25rem 1fr;align-items:center;overflow:hidden;border:1px solid #bd7f35;border-radius:.4rem;background:linear-gradient(135deg,#543014,#211006);box-shadow:inset 0 0 1rem rgba(255,190,77,.08),0 0 .55rem rgba(0,0,0,.35); }
.lys-stake-control b { display:grid;place-items:center;height:100%;color:#84ddff;background:rgba(12,55,70,.58);font-size:1.15rem;text-shadow:0 0 .5rem #1ba5d2; }
.neutral-interaction__stake .lys-stake-control input { height:2.8rem;border:0;border-radius:0;background:transparent;text-align:center;outline:none; }
.neutral-interaction__stake .lys-stake-control:focus-within { border-color:#5fdcff;box-shadow:0 0 .7rem rgba(48,193,238,.55); }
.guard-wagers { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin:.55rem 0 .8rem; }
.guard-wagers button { position:relative;display:grid;justify-items:center;min-width:0;padding:.35rem;border:1px solid #79512e;border-radius:.35rem;color:#f6dab0;background:#28140a; }
.guard-wagers button.is-selected { border-color:#45bce7;box-shadow:0 0 .75rem #168db7; }
.guard-wagers img { width:3.2rem;height:3.2rem;object-fit:contain;image-rendering:pixelated; }
.guard-wagers span { overflow:hidden;width:100%;font-size:.55rem;text-overflow:ellipsis;white-space:nowrap; }
.guard-wagers strong { color:#71d8ff;font-size:.7rem; }
.guard-wagers small { position:absolute;top:.15rem;right:.2rem; }
.guard-rules { position:fixed;width:min(25rem,calc(100% - 1.2rem));max-height:88dvh;overflow:auto;padding:1.4rem 1rem;border:1px solid #b78648;border-radius:.4rem;color:#3b210f;background:#ead09a;box-shadow:inset 0 0 3rem rgba(106,55,16,.2),0 1rem 4rem #000;font-size:.72rem;line-height:1.5; }
.guard-rules::backdrop { background:rgba(5,2,1,.75); }
.guard-rules h2 { margin:0 2.5rem .8rem 0;font:800 1.15rem/1.2 Cinzel,serif; }
.guard-rules>button { position:absolute; }
.guard-round-result { width:min(24rem,calc(100% - 1.4rem));padding:1.25rem;border:1px solid #b78648;border-radius:.55rem;color:#ffe8bf;background:linear-gradient(155deg,#4a2613,#160a05);box-shadow:inset 0 0 2rem rgba(255,190,90,.1),0 1rem 4rem #000;text-align:center; }
.guard-round-result::backdrop { background:rgba(5,2,1,.72); }
.guard-round-result h2 { margin:0 0 .8rem;font:800 1.15rem/1.2 Cinzel,serif; }
.guard-round-result p { color:#ffd47d;font-weight:800;line-height:1.5; }
.guard-round-result button { width:100%;min-height:2.8rem;border:1px solid #b47a3a;border-radius:.3rem;color:#fff0ce;background:#6c381a;font:800 .66rem/1.2 Cinzel,serif;text-transform:uppercase; }
.destination-screen__shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(8,5,3,.48), transparent 35%, transparent 68%, rgba(8,5,3,.48)); }
.shop-exit-zone { position: absolute; z-index: 1; right: 0; bottom: 0; display: grid; place-items: center; width: 62%; height: 6%; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08); opacity: 0; pointer-events: none; transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.shop-exit-zone span { font: 700 clamp(.5rem, 2.2vw, .68rem)/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.weapon-shop.is-moving .shop-exit-zone { opacity: 1; pointer-events: auto; }
.shop-exit-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.5); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.38), 0 0 1.5rem rgba(238,145,43,.45); animation: zone-target 1s ease-in-out infinite; }
.church-exit-zone { position: absolute; z-index: 1; right: 0; bottom: 0; display: grid; place-items: center; width: 62%; height: 6%; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08); opacity: 0; pointer-events: none; transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.church-exit-zone span { font: 700 clamp(.5rem, 2.2vw, .68rem)/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.church.is-moving .church-exit-zone { opacity: 1; pointer-events: auto; }
.church-exit-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.5); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.38), 0 0 1.5rem rgba(238,145,43,.45); animation: zone-target 1s ease-in-out infinite; }
.bestiary-exit-zone { position:absolute;z-index:1;right:0;bottom:0;display:grid;place-items:center;width:62%;height:6%;border:1px solid rgba(255,219,146,.5);border-radius:.35rem;color:#ffe8b1;background:rgba(62,31,15,.42);box-shadow:inset 0 0 2rem rgba(228,151,48,.08);opacity:.36;pointer-events:none;transition:opacity .22s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease; }
.bestiary-exit-zone span { font:700 clamp(.5rem,2.2vw,.68rem)/1 Cinzel,serif;letter-spacing:.06em;text-transform:uppercase;text-shadow:0 2px .3rem #000; }
.bestiary.is-moving .bestiary-exit-zone { opacity:1;pointer-events:auto; }
.bestiary.is-moving .bestiary-counter-zone { opacity:1; }
.bestiary-counter-zone[hidden]{display:none!important}
.bestiary-book__add strong{display:flex;align-items:center;justify-content:center;gap:.35rem}.bestiary-book__add strong img{width:1.4rem;height:1.4rem;object-fit:contain}
.bestiary-book__section{grid-column:1/-1;margin:.55rem 0 -.15rem;padding:.4rem .25rem;border-bottom:1px solid rgba(215,163,74,.58);color:#ffe0a0;font:800 .76rem Cinzel,serif;letter-spacing:.08em;text-align:left;text-transform:uppercase}
.bestiary-book__monster .bestiary-book__region{margin-top:.2rem;color:#efc66e;font-weight:750}
.bestiary-book__monster .bestiary-book__region.is-locked{justify-self:center;padding:.22rem .4rem;border:1px solid rgba(215,163,74,.78);border-radius:.24rem;color:#e2bc72;background:rgba(25,13,7,.86);box-shadow:inset 0 0 0 1px rgba(73,41,18,.8)}
.bestiary-book{position:fixed;z-index:45;inset:0;display:grid;place-items:center;padding:max(5.5rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom));background:rgba(8,4,2,.78);backdrop-filter:blur(3px)}
.bestiary-book[hidden]{display:none}.bestiary-book__card{position:relative;width:min(34rem,100%);max-height:100%;overflow:auto;padding:1.25rem 1rem;border:1px solid #a87332;border-radius:.5rem;background:linear-gradient(105deg,#3b2112,#1d0f09 49%,#402515);box-shadow:inset 0 0 0 3px #1a0d07,0 1.4rem 4rem #000;text-align:center}.bestiary-book__close{position:absolute;top:.35rem;right:.45rem;width:2.6rem;height:2.6rem;border:0;border-radius:50%;color:#f2d29a;background:rgba(25,12,6,.82);font-size:1.65rem}.bestiary-book__card>p:first-of-type{margin:0;color:#d49a52;font:700 .65rem Cinzel,serif;text-transform:uppercase}.bestiary-book__card h2{margin:.35rem 2.5rem .5rem;color:#ffe5aa;font:800 clamp(1.05rem,5vw,1.5rem) Cinzel,serif;text-transform:uppercase}.bestiary-book__status{min-height:1.2rem;margin:.25rem 0 .8rem;color:#cfb78d;font-size:.72rem}.bestiary-book__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.bestiary-book__monster,.bestiary-book__add{min-height:10rem;padding:.55rem;border:1px solid #805326;border-radius:.35rem;background:rgba(31,15,8,.8);color:#f6dfb3}.bestiary-book__monster{display:grid;grid-template-rows:7rem auto auto;align-items:center}.bestiary-book__monster img{width:100%;height:7rem;object-fit:contain;image-rendering:pixelated}.bestiary-book__monster strong,.bestiary-book__monster small{display:block}.bestiary-book__monster strong{font:700 .72rem Cinzel,serif}.bestiary-book__monster small{color:#bca17b;font-size:.58rem}.bestiary-book__add{display:grid;place-content:center;gap:.3rem;border-color:#6abbd5;color:#e8f8ff;background:linear-gradient(#1f6581,#10384f)}.bestiary-book__add b{font:300 3.6rem/1 sans-serif}.bestiary-book__add strong{font:800 1rem Cinzel,serif}.bestiary-book__add small{font:700 .6rem Cinzel,serif;text-transform:uppercase}.bestiary-book__add:disabled{filter:grayscale(1);opacity:.55}
.bestiary-exit-zone.is-targeted { border-color:#ffd57d;background:rgba(196,104,30,.5);box-shadow:inset 0 0 2.5rem rgba(255,184,69,.38),0 0 1.5rem rgba(238,145,43,.45);animation:zone-target 1s ease-in-out infinite; }
.church-actions { position:fixed; z-index:120; inset:0; isolation:isolate; display:grid; place-items:center; padding:.85rem; background:rgba(11,7,3,.68); }
.church-actions[hidden] { display:none; }
.church-actions__card { position:relative; z-index:1; width:min(27rem,100%); max-height:84dvh; overflow:auto; padding:1.15rem; border:1px solid #c69c62; border-radius:.55rem; color:#f7e8c8; background:linear-gradient(160deg,rgba(68,48,28,.98),rgba(25,16,10,.98)); box-shadow:inset 0 0 2rem rgba(255,221,157,.08),0 1rem 3rem #000; }
.church-actions__close { position:absolute; top:.45rem; right:.45rem; width:2.5rem; height:2.5rem; border:1px solid #a78250; border-radius:50%; color:#f5ddb2; background:#352315; font-size:1.25rem; }
.church-actions__card>p:first-of-type { margin:0; color:#d2b27c; font:700 .55rem/1 Cinzel,serif; letter-spacing:.14em; text-transform:uppercase; }
.church-actions__card h2 { margin:.35rem 2.5rem .65rem 0; color:#fff0c6; font:700 1.2rem/1.15 Cinzel,serif; }
.church-actions__card>p { font-size:.7rem; line-height:1.45; }
.church-actions__choices { display:grid; gap:.75rem; }
.church-actions__pray,.church-actions__resurrection button { min-height:3rem; border:1px solid #c59a60; border-radius:.3rem; color:#fff0cf; background:#67451f; font:700 .68rem/1.25 Cinzel,serif; }
.church-actions__resurrection { padding-top:.7rem; border-top:1px solid rgba(198,156,98,.4); }
.church-actions__resurrection h3 { margin:0 0 .55rem; color:#f3d59f; font:700 .78rem/1 Cinzel,serif; }
.church-actions__resurrection>div { display:grid; grid-template-columns:repeat(3,1fr); gap:.45rem; }
.church-actions__resurrection button { display:grid; place-items:center; padding:.25rem; }
.church-actions__resurrection img { width:3.2rem; height:3.5rem; object-fit:contain; object-position:center bottom; image-rendering:pixelated; filter:grayscale(1); }
.church-actions__resurrection span { font-size:.55rem; }
.church-actions button:disabled { opacity:.42; }
.church-actions__status { min-height:1.4rem; margin:.8rem 0 0; color:#ffe39e; text-align:center; }
.church-party-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr)); gap:.6rem; }
.church-hero-card { position:relative; display:grid; gap:.28rem; padding:.55rem; border:1px solid rgba(198,156,98,.45); border-radius:.4rem; background:rgba(19,11,7,.56); }
.church-hero-card__portrait { position:relative; z-index:0; display:grid; place-items:end center; height:5.2rem; overflow:hidden; }
.church-hero-card__portrait img { display:block; width:100%; height:100%; object-fit:contain; object-position:center bottom; image-rendering:pixelated; transform:scale(var(--church-portrait-scale,1)); transform-origin:center bottom; }
.church-hero-card.is-dead .church-hero-card__portrait img { height:72%; filter:drop-shadow(0 0 .7rem rgba(150,20,20,.8)); transform:scale(1); }
.church-hero-card h3 { margin:0; color:#ffe3ab; font:700 .68rem/1.1 Cinzel,serif; text-align:center; }
.church-hero-card button,.church-actions__heal { min-height:2.65rem; margin-top:.35rem; border:1px solid #c59a60; border-radius:.3rem; color:#fff0cf; background:#67451f; font:700 .66rem/1.2 Cinzel,serif; }
.church-energy { display:grid; grid-template-columns:1fr auto; gap:.18rem .3rem; align-items:center; font-size:.52rem; }
.church-energy strong { font-size:.5rem; }
.church-energy i { grid-column:1/-1; display:block; height:.3rem; overflow:hidden; border-radius:1rem; background:#120b08; }
.church-energy i b { display:block; height:100%; transition:width .12s linear; }
.church-energy--vital i b { background:#c8342d; }.church-energy--astral i b { background:#467dc4; }.church-energy--spiritual i b { background:#d2b23e; }
.church-energy.is-changing { animation:church-energy-pulse .25s ease; }
.church-resurrection-stage { display:grid; grid-template-columns:1fr auto 1fr; gap:.55rem; align-items:center; }
.church-resurrection-stage__light { color:#fff1a0; font-size:2rem; text-shadow:0 0 .4rem #fff,0 0 1.4rem #ffd64e; animation:church-light 1s ease-in-out infinite; }
.church-hero-card.is-resurrecting .church-hero-card__portrait { animation:church-resurrection 1s ease-in-out; }
.church:has(.church-actions:not([hidden])) > .church-hero { visibility:hidden; }
.church-missal{position:absolute;z-index:3;left:14%;bottom:29%;width:3.2rem;height:2.2rem;padding:0;border:0;background:transparent;filter:drop-shadow(0 0 .45rem #ffd675);animation:church-light 1.5s ease-in-out infinite}.church-missal[hidden]{display:none}.church-missal img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.church-mission{position:fixed;z-index:180;inset:0;display:grid;place-items:end center;overflow:hidden;background:#050201}.church-mission[hidden]{display:none}.church-mission__landscape{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:church-mission-fade .9s ease}.church-mission__dialog{position:relative;width:min(32rem,calc(100% - 1.2rem));margin-bottom:max(1rem,env(safe-area-inset-bottom));padding:1rem;border:1px solid #bd873c;border-radius:.45rem;color:#ffe6b3;background:rgba(40,19,9,.95);box-shadow:0 1rem 3rem #000;text-align:center}.church-mission__dialog h2{margin:0 0 .65rem;font:800 1.05rem Cinzel,serif}.church-mission__dialog p{font-size:.75rem;line-height:1.5}.church-mission__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.55rem}.church-mission__actions button{min-height:2.8rem;border:1px solid #bd873c;border-radius:.3rem;color:#ffedc6;background:#6b3517;font:800 .65rem Cinzel,serif}.church-mission__item{grid-column:1/-1;justify-self:center;width:min(10rem,40vw);height:min(10rem,40vw);object-fit:contain;filter:drop-shadow(0 0 1rem #ffc85b);animation:church-light 1.4s ease-in-out infinite}.church-mission__item~button{grid-column:1/-1;justify-self:center;width:min(12rem,100%)}@keyframes church-mission-fade{from{opacity:0}to{opacity:1}}
@keyframes church-energy-pulse { 50% { filter:brightness(2); transform:scale(1.025); } }
@keyframes church-light { 50% { transform:scale(1.35) rotate(25deg); opacity:.65; } }
@keyframes church-resurrection { 50% { filter:brightness(2.8) drop-shadow(0 0 1.5rem #fff3a3); transform:scale(1.08); } }
.apothecary-exit-zone { position: absolute; z-index: 1; right: 0; bottom: 0; display: grid; place-items: center; width: 62%; height: 6%; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08); opacity: 0; pointer-events: none; transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.apothecary-exit-zone span { font: 700 clamp(.5rem, 2.2vw, .68rem)/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.apothecary.is-moving .apothecary-exit-zone { opacity: 1; pointer-events: auto; }
.apothecary-exit-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.5); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.38), 0 0 1.5rem rgba(238,145,43,.45); animation: zone-target 1s ease-in-out infinite; }
.gate-zone { position: absolute; z-index: 1; display: grid; place-items: center; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08); opacity: 0; pointer-events: none; transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.gate-zone span { font: 700 clamp(.5rem, 2.2vw, .68rem)/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.gate-zone--adventure { top: 48%; left: 22%; width: 58%; height: 6%; }
.gate-zone--square { right: 0; bottom: 0; width: 62%; height: 6%; }
.gate-zone--apothecary { left: 0; bottom: 18%; width: 7%; height: 28%; }
.gate-zone--castle { right: 0; bottom: 18%; width: 7%; height: 28%; }
.gate-zone--apothecary span { writing-mode: vertical-rl; rotate: 180deg; white-space: nowrap; }
.gate-zone--castle span { writing-mode: vertical-rl; white-space: nowrap; }
.city-gates.is-moving .gate-zone { opacity: 1; pointer-events: auto; }
.gate-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.5); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.38), 0 0 1.5rem rgba(238,145,43,.45); animation: zone-target 1s ease-in-out infinite; }
.road-zone { position: absolute; z-index: 1; display: grid; place-items: center; border: 1px solid rgba(255,219,146,.5); border-radius: .35rem; color: #ffe8b1; background: rgba(62,31,15,.42); box-shadow: inset 0 0 2rem rgba(228,151,48,.08); opacity: 0; pointer-events: none; transition: opacity .22s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease; }
.road-zone span { font: 700 clamp(.5rem, 2.2vw, .68rem)/1 Cinzel, serif; letter-spacing: .06em; text-transform: uppercase; text-shadow: 0 2px .3rem #000; }
.road-zone--castle { top: 41%; left: 35%; width: 30%; height: 5%; }
.road-zone--church { right: 27%; top: 47%; width: 9%; height: 15%; }
.road-zone--cartographer { right: 16%; top: 63%; width: 9%; height: 15%; }
.road-zone--guard { right: 6%; top: 79%; width: 9%; height: 15%; }
.road-zone--church span, .road-zone--cartographer span, .road-zone--guard span { writing-mode: vertical-rl; display: block; padding: .2rem; line-height: 1.1; rotate: 180deg; text-align: center; white-space: nowrap; }
.road-zone--gates { right: 0; bottom: 0; width: 62%; height: 6%; }
.castle-road.is-moving .road-zone { opacity: 1; pointer-events: auto; }
.road-zone.is-targeted { border-color: #ffd57d; background: rgba(196,104,30,.5); box-shadow: inset 0 0 2.5rem rgba(255,184,69,.38), 0 0 1.5rem rgba(238,145,43,.45); animation: zone-target 1s ease-in-out infinite; }
.road-zone--locked { border-color: rgba(191,183,165,.45); color: #d4cbbb; background: rgba(34,31,29,.52); }
.road-zone--locked.is-targeted { border-color: #e4a96a; background: rgba(112,55,35,.62); box-shadow: inset 0 0 2rem rgba(197,91,48,.25), 0 0 1.2rem rgba(216,112,61,.3); }
.travel-zone, .shop-exit-zone, .church-exit-zone, .bestiary-exit-zone, .apothecary-exit-zone, .gate-zone, .road-zone { opacity: .36; pointer-events: auto; }
.road-zone--locked { opacity: .27; }
.road-lock-dialog { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 1rem; color: #ffe0aa; background: rgba(6,3,2,.82); }
.road-lock-dialog[hidden] { display: none; }
.road-lock-dialog > div { width: min(22rem, 100%); padding: 1.15rem 1rem 1rem; border: 1px solid #c7804d; border-radius: .4rem; background: linear-gradient(rgba(55,25,13,.98), rgba(27,12,7,.98)); box-shadow: inset 0 0 0 3px #30150c, 0 .8rem 2.5rem rgba(0,0,0,.68); text-align: center; }
.road-lock-dialog p:first-child { margin: 0 0 .35rem; color: #d4935d; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .12em; text-transform: uppercase; }
.road-lock-dialog h2 { margin: 0; color: #ffe0aa; font: 700 1.25rem/1.2 Cinzel, serif; text-transform: uppercase; }
.road-lock-dialog #road-lock-message,
.road-lock-dialog #departure-inventory-message { margin: .7rem 0 1rem; color: #d8c09a; font-size: .78rem; line-height: 1.5; }
.road-lock-dialog button { min-width: 8rem; min-height: 2.6rem; border: 1px solid #d99b57; border-radius: .25rem; color: #fff0c5; background: linear-gradient(#8d4925, #5b260f); box-shadow: inset 0 0 0 2px #35160b; font: 700 .68rem/1 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.departure-inventory-actions { display: flex; justify-content: center; gap: .65rem; }
.adventure-screen { background-image: url("/assets/paysages/exterieur.png?media_version=0b4f841406f4690e365f42f8"); }
.adventure-screen.is-active { opacity: 1; animation: none; filter: none; }
.adventure-screen.is-awaiting-encounter .location-banner { opacity: 0; translate: -50% .8rem; pointer-events: none; }
.adventure-screen.is-awaiting-encounter .encounter-draw { opacity: 0; translate: 0 .8rem; pointer-events: none; }
.adventure-screen .location-banner, .encounter-draw { transition: opacity 2.6s ease, translate 2.6s ease; }
.adventure-screen.is-encounter-revealed .location-banner { opacity: 1; translate: -50% 0; pointer-events: auto; }
.adventure-screen.is-encounter-revealed .encounter-draw { opacity: 1; translate: 0 0; pointer-events: auto; }
.adventure-screen .location-banner { max-width: calc(100vw - 2rem); }
.adventure-screen .location-banner h2 { overflow-wrap: anywhere; font-size: clamp(1rem, 5.2vw, 1.5rem); line-height: 1.08; }
.encounter-draw { position: relative; width: min(27rem, calc(100% - 2rem)); margin: 6.5rem auto 1rem; padding: 1.15rem 1rem 1.25rem; border: 1px solid rgba(225,174,82,.75); border-radius: .5rem; color: #f4dfad; background: radial-gradient(circle at 50% 35%, rgba(101,64,25,.38), transparent 45%), linear-gradient(rgba(35,18,10,.97), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px rgba(48,23,10,.85), 0 1rem 3rem rgba(0,0,0,.72); text-align: center; }
.encounter-draw[hidden] { display: none; }
.encounter-draw.is-fading-out { opacity: 0 !important; translate: 0 -.55rem !important; pointer-events: none; }
.encounter-draw__close { position: absolute; z-index: 2; top: .3rem; right: .4rem; width: 2.5rem; height: 2.5rem; border: 0; color: #e0bd7d; background: transparent; font-size: 1.7rem; cursor: pointer; }
.encounter-draw > p:first-of-type { margin: 0 0 .35rem; color: #d9a352; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .14em; text-transform: uppercase; }
.encounter-draw h3 { margin: 0 0 .75rem; color: #ffe6a4; font: 700 clamp(1rem, 5vw, 1.35rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.fortune-wheel { position: relative; width: min(17rem, 65vw); aspect-ratio: 1; margin: 0 auto; }
.fortune-wheel__face { position: absolute; inset: 6%; overflow: hidden; border: .35rem solid #5c3015; border-radius: 50%; background: conic-gradient(from 0deg, #8f2d28 0 10%, #426a75 10% 25%, #d5a52f 25% 26%, #427247 26% 100%); box-shadow: inset 0 0 0 .18rem #d3a24d, 0 .7rem 1.5rem rgba(0,0,0,.55); }
.fortune-wheel__face::after { content: ""; position: absolute; inset: 11%; border: 1px solid rgba(255,230,164,.3); border-radius: 50%; }
.fortune-wheel__pointer { position: absolute; z-index: 2; inset: 8%; border-radius: 50%; transform: rotate(0deg); transition: transform 5.4s cubic-bezier(.12,.72,.16,1); }
.fortune-wheel__pointer::before { content: ""; position: absolute; left: calc(50% - .13rem); top: 17%; width: .26rem; height: 34%; border-radius: .2rem; background: linear-gradient(90deg, #8e581f, #ffe49a 45%, #8e581f); box-shadow: 0 1px 3px #000; }
.fortune-wheel__pointer span { position: absolute; left: 50%; top: 4%; color: #ffe18a; font-size: 1.65rem; line-height: 1; translate: -50%; filter: drop-shadow(0 2px 2px #321607); }
.fortune-wheel__hub { position: absolute; z-index: 3; left: 50%; top: 50%; width: 1.8rem; aspect-ratio: 1; border: .2rem solid #6f3a18; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #ffe59a, #b96f28 58%, #4e250e 60%); translate: -50% -50%; box-shadow: 0 .2rem .5rem #000; }
.fortune-wheel__legend { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; margin: .45rem 0 .55rem; padding: 0; list-style: none; }
.fortune-wheel__legend li { display: grid; grid-template-columns: .55rem minmax(0, 1fr); align-items: center; gap: .22rem .3rem; min-width: 0; padding: .35rem .28rem; border: 1px solid rgba(222,180,105,.32); border-radius: .25rem; background: rgba(10,6,3,.42); text-align: left; }
.fortune-wheel__legend i { grid-row: 1 / span 2; width: .52rem; aspect-ratio: 1; border: 1px solid rgba(255,239,197,.5); border-radius: 50%; }
.fortune-wheel__legend span { min-width: 0; color: #ead9b1; font: 700 clamp(.42rem, 1.8vw, .52rem)/1.15 Cinzel, serif; text-transform: uppercase; overflow-wrap: anywhere; }
.fortune-wheel__legend--monster i { background: #8f2d28; }
.fortune-wheel__legend--neutral i { background: #426a75; }
.fortune-wheel__legend--legendary i { background: linear-gradient(135deg, #fff0a3, #d5a52f 52%, #8b5b0a); box-shadow: 0 0 .35rem rgba(255,211,74,.65); }
.fortune-wheel__legend--quiet i { background: #427247; }
.encounter-draw__result { min-height: 1.35rem; margin: .55rem 0; color: #ffe29a; font: 800 .75rem/1.3 Cinzel, serif; text-transform: uppercase; }
.encounter-draw__spin { min-height: 3rem; padding: 0 1rem; border: 1px solid #e0ac54; border-radius: .28rem; color: #fff1c1; background: linear-gradient(#945025, #5b270f); box-shadow: inset 0 0 0 2px #35160b; font: 700 .67rem/1.2 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.encounter-draw__spin:disabled { opacity: .65; cursor: wait; }
.encounter-draw__actions { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.encounter-draw__actions[hidden], .encounter-draw__actions button[hidden] { display: none; }
.encounter-draw__actions:has(button[hidden]) { grid-template-columns: 1fr; }
.encounter-draw__actions button { min-height: 3rem; padding: .45rem .7rem; border: 1px solid #9c7441; border-radius: .28rem; color: #f5dfad; background: rgba(49,27,14,.94); font: 700 .61rem/1.25 Cinzel, serif; text-transform: uppercase; }
.encounter-draw__actions button:last-child { border-color: #e0ac54; background: linear-gradient(#945025, #5b270f); }
.encounter-choice { position: relative; width: min(25rem, calc(100% - 2rem)); margin: 8rem auto 1rem; padding: 1.45rem 1.1rem 1.15rem; border: 1px solid rgba(225,174,82,.75); border-radius: .5rem; color: #f4dfad; background: radial-gradient(circle at 50% 0, rgba(128,79,27,.3), transparent 50%), linear-gradient(rgba(35,18,10,.98), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px rgba(48,23,10,.85), 0 1rem 3rem rgba(0,0,0,.72); text-align: center; opacity: 0; translate: 0 .65rem; transition: opacity 1.1s ease, translate 1.1s ease; }
.encounter-choice[hidden] { display: none; }
.encounter-choice.is-visible { opacity: 1; translate: 0 0; }
.encounter-choice.is-legendary { isolation: isolate; overflow: hidden; border-color: #ffe080; background: radial-gradient(circle at 50% 25%, rgba(255,224,113,.4), transparent 44%), linear-gradient(rgba(70,43,8,.98), rgba(25,14,3,.99)); box-shadow: inset 0 0 2.2rem rgba(255,195,55,.25), 0 0 2rem rgba(255,202,57,.48), 0 1rem 3rem rgba(0,0,0,.72); }
.encounter-choice.is-legendary::before { content: ''; position: absolute; z-index: -1; inset: -65%; background: repeating-conic-gradient(from 0deg, transparent 0 9deg, rgba(255,230,133,.22) 10deg 11deg, transparent 12deg 24deg); animation: discovery-rays 12s linear infinite; }
.encounter-choice.is-legendary h3 { color: #fff1a7; text-shadow: 0 0 .25rem #fff, 0 0 .8rem #ffc547, 0 0 1.4rem #e47718; animation: discovery-title-pulse 1.15s ease-in-out infinite alternate; }
.encounter-choice__close, .encounter-scene-close { position: absolute; z-index: 5; top: .35rem; right: .45rem; width: 2.55rem; height: 2.55rem; border: 0; color: #e0bd7d; background: rgba(22,11,6,.72); border-radius: 50%; font-size: 1.7rem; cursor: pointer; }
.encounter-choice > p:first-of-type { margin: 0 0 .4rem; color: #d9a352; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.encounter-choice h3 { margin: 0; color: #ffe6a4; font: 700 clamp(1.05rem, 5vw, 1.4rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.encounter-choice #encounter-choice-message { margin: .9rem auto 1.1rem; color: #d4c09a; font-size: .76rem; line-height: 1.5; }
.encounter-choice > div { display: grid; grid-template-columns: 1fr; gap: .55rem; }
.encounter-choice button:not(.encounter-choice__close) { min-height: 3.1rem; border: 1px solid #9c7441; border-radius: .28rem; color: #f5dfad; background: rgba(49,27,14,.94); font: 700 .62rem/1.25 Cinzel, serif; text-transform: uppercase; }
.encounter-choice #encounter-choice-accept { border-color: #e0ac54; background: linear-gradient(#945025, #5b270f); }
.encounter-scene-close { position: absolute; top: max(6.6rem, calc(env(safe-area-inset-top) + 5.8rem)); }
.encounter-scene-close[hidden], .encounter-hero[hidden], .encounter-troop-followers[hidden], .encounter-featured-hero[hidden] { display: none; }
.encounter-location-title { position: absolute; z-index: 3; top: max(6.7rem, calc(env(safe-area-inset-top) + 5.9rem)); left: 50%; width: min(24rem, calc(100% - 7rem)); margin: 0; padding: .55rem .8rem; translate: -50%; border: 1px solid rgba(238,191,94,.8); border-radius: .35rem; color: #ffe9af; background: rgba(27,14,7,.86); box-shadow: 0 .4rem 1rem rgba(0,0,0,.55); font: 700 clamp(.8rem, 4vw, 1.15rem)/1.2 Cinzel, serif; text-align: center; text-transform: uppercase; }
.encounter-location-title[hidden], .legendary-reward[hidden] { display: none; }
.encounter-viewport { container-type:inline-size; }
.encounter-troop-followers { position:absolute; z-index:4; left:0; right:0; bottom:0; height:min(11rem,40cqw); overflow:visible; pointer-events:none; }
.encounter-troop-follower { position:absolute; left:calc(50% + var(--follower-x, 0%)); bottom:-6.2rem; width:min(11.5rem,43cqw); opacity:0; translate:-50% 105%; scale:var(--follower-scale, 1); transform-origin:50% 100%; filter:drop-shadow(0 .55rem .4rem rgba(0,0,0,.72)); transition:translate 2.2s ease-out var(--arrival-delay, 0ms),opacity 1.25s ease-out var(--arrival-delay, 0ms),scale 4.5s ease; }
.encounter-troop-follower.is-visible { opacity:1; translate:-50% 0; }
.encounter-troop-follower img { display:block; width:100%; height:auto; image-rendering:pixelated; }
.encounter-troop-followers.is-departing .encounter-troop-follower { opacity:0; translate:-50% -75%; transition-duration:1.3s; transition-delay:0ms; }
.encounter-hero { position: absolute; z-index: 3; left: 50%; bottom: max(1.2rem, env(safe-area-inset-bottom)); width: min(10rem, 38cqw); translate: -50%; transform-origin:50% 100%; filter: drop-shadow(0 .7rem .5rem rgba(0,0,0,.7)); }
.encounter-hero.is-warrior { width: min(11.75rem, 44.7cqw); }
.encounter-hero img { display: block; width: 100%; height: auto; image-rendering: pixelated; }
.encounter-hero.is-departing { pointer-events:none; transform-origin:50% 100%; }
.encounter-models { position:absolute; inset:0; width:100%; height:100%; z-index:4; pointer-events:none; }
/* The late-mounted WebGL canvas is scenery, never a layer above encounter UI. */
.encounter-viewport :is(.neutral-interaction, .monster-encounter, .legendary-reward, .encounter-choice, .encounter-draw, .encounter-location-title) { z-index:6; }
.encounter-viewport .encounter-scene-close { z-index:7; }
.encounter-model-anchor { height:38%; }
.encounter-model-anchor img { display:none; }
.encounter-hero.encounter-model-anchor { bottom:0; }
.encounter-troop-follower.encounter-model-anchor { bottom:0; height:min(16rem,60cqw); }
.encounter-featured-hero.encounter-model-anchor { height:min(12rem,44cqw); }
.encounter-featured-hero { position:absolute; z-index:3; width:min(7.5rem,29cqw); translate:-50% -50%; opacity:0; transform:translateY(-2rem) scale(.78); transition:opacity .9s ease,transform 1.9s ease; pointer-events:none; filter:drop-shadow(0 .6rem .45rem rgba(0,0,0,.72)); }
.encounter-featured-hero.is-arriving { opacity:1; transform:translateY(3.2rem) scale(1); }
.encounter-featured-hero img { display:block; width:100%; height:auto; image-rendering:pixelated; }
.legendary-reward { position: relative; z-index: 4; width: min(25rem, calc(100% - 2rem)); margin: 10rem auto 1rem; padding: 1.15rem; border: 1px solid #f5d26f; border-radius: .5rem; color: #fff1bb; background: radial-gradient(circle at 50% 18%, rgba(255,220,91,.3), transparent 42%), linear-gradient(rgba(57,38,8,.97), rgba(21,13,3,.99)); box-shadow: inset 0 0 0 3px rgba(112,72,13,.75), 0 0 2.2rem rgba(255,210,66,.32), 0 1rem 3rem rgba(0,0,0,.75); text-align: center; opacity: 0; translate: 0 .8rem; transition: opacity 1.3s ease, translate 1.3s ease; }
.legendary-reward.is-visible { opacity: 1; translate: 0 0; }
.legendary-reward.is-fading-out { opacity: 0; translate: 0 -.7rem; pointer-events: none; transition-duration: .9s; }
.legendary-reward > p:first-child { margin: 0; color: #f0c953; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.legendary-reward h3 { margin: .35rem 0 .7rem; font: 700 clamp(1rem, 5vw, 1.35rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.legendary-wheel { position: relative; width: min(12rem, 48vw); aspect-ratio: 1; margin: 0 auto .65rem; }
.legendary-wheel__face { position: absolute; inset: 0; border: .35rem solid #e9c454; border-radius: 50%; background: conic-gradient(#6c9d55 0 70%, #4779a5 70% 95%, #b88a24 95% 100%); box-shadow: inset 0 0 0 .2rem #5b3909, 0 .4rem 1rem rgba(0,0,0,.5); }
.legendary-wheel__pointer { position: absolute; z-index: 2; inset: -1rem; transform-origin: 50% 50%; transition: transform 5.4s cubic-bezier(.12,.62,.08,1); }
.legendary-wheel__pointer span { position: absolute; top: -.2rem; left: 50%; color: #fff0a6; font-size: 2rem; translate: -50%; filter: drop-shadow(0 2px 2px #241000); }
.legendary-wheel__hub { position: absolute; z-index: 3; inset: 42%; border: .18rem solid #6d450e; border-radius: 50%; background: #e8c350; }
.legendary-wheel__legend { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem .7rem; margin: 0 0 .55rem; padding: 0; list-style: none; color: #e8d49c; font-size: .65rem; }
.legendary-reward__result { min-height: 1.6rem; margin: .4rem 0; color: #fff09b; font: 700 .82rem/1.35 Cinzel, serif; }
.legendary-reward button { width: 100%; min-height: 3rem; border: 1px solid #f0cd63; border-radius: .3rem; color: #fff3bd; background: linear-gradient(#a36c19, #68400b); font: 700 .68rem/1.2 Cinzel, serif; text-transform: uppercase; }
.neutral-interaction { position: relative; z-index: 4; width: min(26rem, calc(100% - 2rem)); margin: 10rem auto 1rem; padding: 1.2rem; border: 1px solid #a97846; border-radius: .5rem; color: #f2dfbd; background: radial-gradient(circle at 50% 0, rgba(148,91,41,.3), transparent 48%), linear-gradient(rgba(48,28,15,.97), rgba(20,11,6,.99)); box-shadow: inset 0 0 0 3px rgba(77,42,19,.82), 0 1rem 3rem rgba(0,0,0,.75); text-align: center; opacity: 0; translate: 0 .8rem; transition: opacity 1.3s ease, translate 1.3s ease; }
.neutral-interaction[hidden] { display: none; }
.neutral-interaction.is-visible { opacity: 1; translate: 0 0; }
.neutral-interaction.is-fading-out { opacity: 0; translate: 0 -.7rem; pointer-events: none; transition-duration: .9s; }
.neutral-interaction > p:first-child { margin: 0; color: #d5a262; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.neutral-interaction h3 { margin: .4rem 0 .7rem; color: #ffe2ac; font: 700 clamp(1rem, 5vw, 1.35rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.neutral-interaction #neutral-interaction-description { color: #d7bea0; font-size: .72rem; line-height: 1.5; }
.neutral-interaction__stake { display: grid; grid-template-columns: 1fr minmax(5rem, 8rem); align-items: center; gap: .35rem .7rem; margin: .85rem 0; color: #ead6b8; font: 700 .62rem/1.2 Cinzel, serif; text-align: left; }
.neutral-interaction__stake[hidden] { display: none; }
.neutral-interaction__gift{display:grid;justify-items:center;gap:.35rem;margin:.75rem auto 0;color:#ffe2a9}
.neutral-interaction__gift img{width:min(9rem,42vw);height:min(9rem,42vw);object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 .4rem .55rem rgba(0,0,0,.75))}
.neutral-interaction__gift strong{font:700 .72rem Cinzel,serif}
.neutral-interaction__stake input { width: 100%; height: 2.8rem; padding: 0 .65rem; border: 1px solid #a97846; border-radius: .25rem; color: #fff1b8; background: rgba(24,12,6,.92); font: 800 1.1rem/1 Inter, sans-serif; }
.neutral-interaction__stake small { grid-column: 1 / -1; color: #c5a783; font-size: .55rem; }
.neutral-interaction__choices { display: grid; gap: .55rem; margin-top: .9rem; }
.neutral-interaction.is-snake-oil { position:absolute;top:max(6.8rem,calc(env(safe-area-inset-top) + 5.8rem));right:.5rem;bottom:max(.5rem,env(safe-area-inset-bottom));left:.5rem;box-sizing:border-box;width:auto;max-width:30rem;margin:0 auto;padding:.85rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain; }
.snake-oil-offers { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem; }
.commercial-item-grid,
.weapon-shop-offer-picker { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem; }
.commercial-item-card { position:relative;display:grid;grid-template-rows:5.2rem auto auto;align-content:start;justify-items:center;gap:.35rem;box-sizing:border-box;min-width:0;padding:.45rem;border:1px solid #9f7041;border-radius:.3rem;color:#f4dec0;background:linear-gradient(#623b20,#301b0e);text-align:center; }
.commercial-item-card.is-selected { border:2px solid #79e8ff;background:linear-gradient(#245b69,#183641);box-shadow:0 0 .9rem rgba(68,220,255,.72),inset 0 0 .55rem rgba(116,232,255,.18); }
.commercial-item-card__selection { position:absolute;z-index:2;top:.18rem;right:.18rem;display:grid;place-items:center;width:1.15rem;height:1.15rem;border:1px solid #d7faff;border-radius:50%;color:#092530;background:#79e8ff;box-shadow:0 0 .45rem rgba(68,220,255,.85);font:900 .72rem/1 system-ui,sans-serif; }
.commercial-item__image { display:grid;place-items:center;box-sizing:border-box;width:100%;height:100%;min-width:0;padding:.25rem;border:1px solid rgba(208,154,83,.45);border-radius:.25rem;background:radial-gradient(circle,rgba(120,75,35,.38),rgba(15,8,4,.75));overflow:hidden; }
.commercial-item__image img { display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 .25rem .25rem rgba(0,0,0,.55)); }
.commercial-item__image.is-magical img,
.commercial-item-card.is-magical img { filter:drop-shadow(0 0 .45rem #ffd64d) drop-shadow(0 .25rem .25rem #000); }
.commercial-item-card strong { max-width:100%;font-size:.72rem;line-height:1.2;overflow-wrap:anywhere; }
.commercial-item-card__price { width:100%;box-sizing:border-box;padding:.55rem;border:1px solid #75bde9;border-radius:.25rem;color:#f1f9ff;background:linear-gradient(#287db7,#164d7c);font:800 .8rem/1.1 Cinzel,serif; }
.commercial-item-card.is-insufficient .commercial-item-card__price { border-color:#df6558;color:#fff1ee;background:linear-gradient(#9c3128,#611b17); }
.merchant-lys-balance { margin:.2rem 0 .75rem;color:#f6df9a;font:800 1rem/1.2 Cinzel,serif;text-align:center; }
.weapon-shop-offer-picker { grid-template-columns:repeat(5,minmax(0,1fr)); }
.weapon-shop-offer-picker .commercial-item-card { grid-template-rows:3.4rem auto auto;padding:.25rem; }
.weapon-shop-offer-picker .commercial-item-card strong { font-size:.52rem; }
.weapon-shop-offer-picker .commercial-item-card small { color:#f1d1a8;font-size:.5rem;line-height:1.25;overflow-wrap:anywhere; }
.weapon-shop-offer-picker .commercial-item-card__price { padding:.3rem;font-size:.58rem; }
.neutral-interaction .snake-oil-offer { display:grid;grid-template-rows:5.2rem auto auto;align-content:start;justify-items:center;gap:.35rem;box-sizing:border-box;min-width:0;padding:.45rem;border:1px solid #9f7041;border-radius:.3rem;background:linear-gradient(#623b20,#301b0e); }
.snake-oil-offer__image { display:grid;place-items:center;box-sizing:border-box;width:100%;height:5.2rem;padding:.35rem;border:1px solid rgba(208,154,83,.45);border-radius:.25rem;background:radial-gradient(circle,rgba(120,75,35,.38),rgba(15,8,4,.75));overflow:hidden; }
.snake-oil-offer__image img { display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 .25rem .25rem rgba(0,0,0,.55)); }
.snake-oil-offer strong { max-width:100%;font-size:.62rem;line-height:1.2;overflow-wrap:anywhere; }
.neutral-interaction button.snake-oil-offer__price { align-self:end;width:100%;min-height:2.55rem;margin-top:auto;border-color:#75bde9;color:#f1f9ff;background:linear-gradient(#287db7,#164d7c);box-shadow:inset 0 0 0 1px rgba(181,226,255,.18);font:800 .78rem/1.1 Cinzel,serif; }
.snake-oil-actions { display:grid;gap:.5rem;margin-top:.25rem;padding-top:.65rem;border-top:1px solid rgba(180,125,67,.4); }
.magical-merchant-offer { border-color:#d9b64d !important;box-shadow:inset 0 0 .8rem rgba(255,207,54,.22),0 0 .8rem rgba(255,194,30,.28); }
.magical-merchant-offer .snake-oil-offer__image img { filter:drop-shadow(0 0 .45rem #ffd64d) drop-shadow(0 .25rem .25rem #000); }
.neutral-interaction .commercial-item-card small { color:#f4d9ad;font-size:.62rem;line-height:1.35;overflow-wrap:anywhere; }
.weapon-shop-ui__image.is-magical img { filter:drop-shadow(0 0 .38rem #ffd64d) drop-shadow(0 .18rem .2rem #000); }
.merchant-gems { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;margin:.35rem 0 .7rem; }
.merchant-gems button .merchant-gem-price { display:block;width:100%;box-sizing:border-box;margin-top:.5rem;padding:.5rem;border:1px solid #75bde9;border-radius:.25rem;color:#f1f9ff;background:linear-gradient(#287db7,#164d7c);font:800 .82rem/1.1 Cinzel,serif; }
.neutral-interaction button { min-height: 3.15rem; padding: .55rem .7rem; border: 1px solid #9f7041; border-radius: .3rem; color: #f5dfb6; background: linear-gradient(#70411f, #3b2110); font: 700 .62rem/1.3 Cinzel, serif; }
.neutral-interaction button:disabled { opacity: .5; }
.neutral-interaction button.is-xp-cost { border-color: #c96559; color: #ffe3dc; background: linear-gradient(#7e3028, #431714); }
.neutral-interaction button.is-xp-cost:disabled { border-color:#ff6f61;color:#ffe9e5;background:linear-gradient(#8b2b25,#4b1411);box-shadow:inset 0 0 0 1px rgba(255,179,169,.18),0 0 .55rem rgba(209,54,43,.28);opacity:1; }
.neutral-interaction button small { display:block; margin-top:.3rem; color:#d7bd91; font:500 .55rem/1.35 Inter,sans-serif; text-transform:none; }
.neutral-interaction__result { min-height: 1.4rem; margin: .8rem 0 .2rem; color: #f2d792; font: 700 .72rem/1.4 Cinzel, serif; }
.d20-roll { --die-light:#f09a94;--die-mid:#a7282c;--die-dark:#3e090d;--die-accent:#ffcf8d;display:grid;justify-items:center;gap:.35rem;margin:.75rem auto .35rem;color:#e8c27c; }
.d20-roll[data-color="saphir"], .dice-choices button[data-dice-color="saphir"] { --die-light:#91cfff;--die-mid:#2867b6;--die-dark:#071c4d;--die-accent:#d5efff; }
.d20-roll[data-color="emeraude"], .dice-choices button[data-dice-color="emeraude"] { --die-light:#8ce2ad;--die-mid:#238753;--die-dark:#07331d;--die-accent:#d3ffbc; }
.d20-roll[data-color="amethyste"], .dice-choices button[data-dice-color="amethyste"] { --die-light:#d0a2f2;--die-mid:#7a3ca0;--die-dark:#280d3b;--die-accent:#f0d1ff; }
.d20-roll[data-color="ivoire"], .dice-choices button[data-dice-color="ivoire"] { --die-light:#fff7d8;--die-mid:#cbbd91;--die-dark:#665b3d;--die-accent:#fff; }
.d20-roll[data-color="obsidienne"], .dice-choices button[data-dice-color="obsidienne"] { --die-light:#77727e;--die-mid:#29252f;--die-dark:#050407;--die-accent:#d7a3ff; }
.d20-roll[hidden] { display: none; }
.d20-roll__die { --d20-roll-duration: 1800ms; position: relative; display: grid; place-items: center; width: 5.6rem; aspect-ratio: 1; filter: drop-shadow(0 .55rem .6rem rgba(0,0,0,.65)); transform-style: preserve-3d; }
.d20-roll__die::before { content:'';position:absolute;inset:0;clip-path:polygon(50% 0,90% 22%,100% 65%,73% 100%,27% 100%,0 65%,10% 22%);background:linear-gradient(145deg,var(--die-light) 0 7%,var(--die-mid) 34%,var(--die-dark) 70%,var(--die-accent) 100%);box-shadow:inset 0 0 1rem var(--die-dark); }
.d20-roll__facets { position:absolute;inset:8%;clip-path:polygon(50% 0,100% 30%,88% 87%,50% 100%,12% 87%,0 30%);background:conic-gradient(from 30deg at 50% 55%,var(--die-dark) 0 16.6%,var(--die-mid) 0 33.2%,var(--die-dark) 0 49.8%,var(--die-light) 0 66.4%,var(--die-dark) 0 83%,var(--die-mid) 0);opacity:.88; }
.d20-roll__facets::after { content: ''; position: absolute; inset: 0; background: linear-gradient(30deg, transparent 48%, rgba(255,231,171,.65) 49% 51%, transparent 52%), linear-gradient(-30deg, transparent 48%, rgba(42,13,4,.7) 49% 51%, transparent 52%); }
.d20-roll__value { position: relative; z-index: 1; display: grid; place-items: center; width: 2.65rem; aspect-ratio: 1; border: 1px solid rgba(255,229,157,.72); clip-path: polygon(50% 0, 100% 100%, 0 100%); padding-top: .55rem; color: #fff0b6; background: rgba(45,15,5,.64); font: 900 1.35rem/1 Cinzel, serif; text-shadow: 0 2px 2px #210702; }
.d20-roll__caption { font: 700 .56rem/1 Cinzel, serif; letter-spacing: .13em; text-transform: uppercase; }
.d20-roll__die.is-rolling { animation: d20-tumble var(--d20-roll-duration) cubic-bezier(.2,.8,.22,1) both; }
.d20-roll.is-settled .d20-roll__die { animation: d20-land .36s ease-out both; }
@keyframes d20-tumble { 0% { transform: rotate(-8deg) scale(.7); } 18% { transform: rotate(145deg) scale(1.12) translateY(-.35rem); } 42% { transform: rotate(330deg) scale(.88); } 67% { transform: rotate(555deg) scale(1.06) translateY(-.18rem); } 85% { transform: rotate(690deg) scale(.96); } 100% { transform: rotate(720deg) scale(1); } }
@keyframes d20-land { 0% { transform: scale(1.18); filter: drop-shadow(0 0 1.2rem #f0a741); } 100% { transform: scale(1); filter: drop-shadow(0 .55rem .6rem rgba(0,0,0,.65)); } }
@media (prefers-reduced-motion: reduce) { .d20-roll__die.is-rolling, .d20-roll.is-settled .d20-roll__die { animation-duration: .2s; } }
.dice-dialog::backdrop { background:rgba(4,2,1,.88);backdrop-filter:blur(3px); }
.world-item-dialog::backdrop { background:rgba(4,2,1,.9);backdrop-filter:blur(4px); }
.world-item-dialog { width:min(32rem,calc(100% - 1rem));border:0;padding:0;color:#f4dfbc;background:transparent; }
.world-item-dialog__card { position:relative;padding:4.1rem 1rem 1.35rem;border:1px solid #c08a36;border-radius:.55rem;background:radial-gradient(circle at 50% 15%,rgba(245,185,57,.25),transparent 45%),linear-gradient(#3a2111,#160c07);box-shadow:inset 0 0 0 3px #4b2917,0 1.2rem 4rem #000;text-align:center; }
.world-item-dialog__card>p:first-child { margin:0;color:#e3ad54;font:700 .58rem Cinzel,serif;letter-spacing:.15em;text-transform:uppercase; }
.world-item-dialog h2 { margin:.4rem 0;color:#ffe2a0;font:800 1.3rem Cinzel,serif;text-transform:uppercase;text-shadow:0 0 .8rem rgba(255,196,65,.55); }
.world-item-dialog h2+p { margin:.4rem auto 1rem;max-width:27rem;color:#d7bea0;font-size:.76rem;line-height:1.5; }
.world-item-options { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem; }
.world-item-options button { min-width:0;padding:.55rem;border:1px solid #8c612b;border-radius:.4rem;color:#ffe7ad;background:#211208;font:700 .6rem/1.25 Cinzel,serif; }
.world-item-options button[aria-pressed="true"] { border-color:#ffe078;background:#5a3518;box-shadow:0 0 1.2rem #e9a82d,inset 0 0 1rem rgba(255,214,92,.25);animation:world-item-glow 1.3s ease-in-out infinite alternate; }
.world-item-options img { display:block;width:100%;aspect-ratio:1;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 0 .65rem rgba(255,205,70,.65)); }
.world-item-options strong { display:block;overflow-wrap:anywhere; }
.world-item-options small { display:block;margin-top:.35rem;line-height:1.35; }
.world-item-options__stats { color:#ead7b4;font:650 clamp(.55rem,2.1vw,.68rem)/1.35 Inter,sans-serif; }
.world-item-options__multiplier { color:#ffd66f;text-shadow:0 0 .45rem rgba(255,202,66,.55); }
@keyframes world-item-glow { to { box-shadow:0 0 2rem #ffd75f,inset 0 0 1.25rem rgba(255,228,128,.4); } }
@media(max-width:390px){.world-item-options{gap:.3rem}.world-item-options button{padding:.35rem;font-size:.52rem}}
.dice-dialog { width:min(29rem,calc(100% - 1rem));border:0;padding:0;color:#f4dfbc;background:transparent; }
.dice-dialog__card { position:relative;padding:1.4rem 1rem 1.1rem;border:1px solid #a97846;border-radius:.55rem;background:radial-gradient(circle at 50% 0,rgba(149,91,40,.35),transparent 43%),linear-gradient(#3c2314,#160c07);box-shadow:inset 0 0 0 3px #4b2917,0 1.2rem 4rem #000;text-align:center; }
.dice-dialog__card>p:first-of-type { margin:0;color:#d5a262;font:700 .58rem Cinzel,serif;letter-spacing:.15em;text-transform:uppercase; }
.dice-dialog h2 { margin:.4rem 0;color:#ffe2ac;font:800 1.35rem Cinzel,serif;text-transform:uppercase; }
.dice-dialog h2+p { margin:.4rem auto 1rem;max-width:23rem;color:#d7bea0;font-size:.76rem;line-height:1.5; }
.dice-choices { display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem; }
.dice-choices button { --die-light:#f09a94;--die-mid:#a7282c;--die-dark:#3e090d;--die-accent:#ffcf8d;display:grid;justify-items:center;gap:.4rem;min-width:0;padding:.7rem .25rem;border:1px solid #76502e;border-radius:.35rem;color:#e8d2ae;background:#201108;font:700 .55rem Cinzel,serif; }
.dice-choices button[aria-pressed="true"] { border-color:#ffd778;background:#5a351b;box-shadow:0 0 1rem rgba(255,190,80,.45),inset 0 0 .8rem rgba(255,204,111,.17); }
.dice-choices i { width:3.15rem;aspect-ratio:1;clip-path:polygon(50% 0,90% 22%,100% 65%,73% 100%,27% 100%,0 65%,10% 22%);background:linear-gradient(145deg,var(--die-light),var(--die-mid) 38%,var(--die-dark) 72%,var(--die-accent));filter:drop-shadow(0 .3rem .25rem #000); }
.dice-choices button[aria-pressed="true"] i { animation:d20-land .36s ease-out; }
@media(max-width:380px){.dice-choices{grid-template-columns:repeat(2,1fr)}}
.dice-initial-roll>p { margin:.2rem auto .7rem;max-width:23rem;color:#d7bea0;font-size:.74rem;line-height:1.5; }
.dice-initial-roll>strong { display:block;min-height:2.2rem;margin:.35rem 0;color:#ffe091;font:800 .9rem/1.4 Cinzel,serif; }
.dice-initial-roll .d20-roll { margin-top:.25rem; }
.monster-encounter { position: relative; z-index: 4; width: min(27rem, calc(100% - 2rem)); margin: 8.5rem auto 1rem; padding: 1rem; border: 1px solid #b65a4b; border-radius: .5rem; color: #f5ded1; background: radial-gradient(circle at 50% 30%, rgba(154,47,32,.28), transparent 48%), linear-gradient(rgba(47,18,14,.97), rgba(16,7,5,.99)); box-shadow: inset 0 0 0 3px rgba(75,24,17,.82), 0 1rem 3rem rgba(0,0,0,.78); text-align: center; opacity: 0; translate: 0 .8rem; transition: opacity 1.3s ease, translate 1.3s ease; }
.monster-encounter[hidden] { display: none; }
.monster-encounter.is-visible { opacity: 1; translate: 0 0; }
.monster-encounter.is-fading-out { opacity: 0; translate: 0 -.7rem; pointer-events: none; transition-duration: .9s; }
.monster-encounter > p:first-child { margin: 0; color: #df8b6f; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.monster-encounter h3 { margin: .35rem 0 .25rem; color: #ffd5b5; font: 800 clamp(1.1rem, 5.5vw, 1.55rem)/1.15 Cinzel, serif; text-transform: uppercase; }
.monster-encounter__sprite { position:absolute; z-index:2; left:50%; top:42%; width:min(8.5rem,34cqw); aspect-ratio:1/2; translate:-50% -33%; transform-origin:50% 33%; background-position:left top; background-repeat:no-repeat; background-size:500% 100%; image-rendering:pixelated; filter:drop-shadow(0 .65rem .5rem rgba(0,0,0,.75)); }
.monster-encounter__sprite[hidden] { display:none; }
.monster-encounter__energies { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.monster-encounter__energies > div { display: grid; gap: .25rem; padding: .5rem; border: 1px solid rgba(196,112,85,.55); background: rgba(16,7,5,.58); }
.monster-encounter__energies span { font: 700 .48rem/1.2 Cinzel, serif; text-transform: uppercase; }
.monster-encounter__energies strong { color: #ffd39b; font: 800 .86rem/1 Inter, sans-serif; }
.monster-encounter__energies i { display: block; height: .45rem; overflow: hidden; border-radius: 1rem; background: #170805; }
.monster-encounter__energies b { display: block; width: var(--energy, 100%); height: 100%; background: linear-gradient(90deg, #8e261d, #e66c42); }
.monster-encounter #monster-encounter-note { margin: .7rem 0; color: #c7a99b; font-size: .62rem; }
.monster-encounter button { width: 100%; min-height: 3rem; border: 1px solid #b76c54; border-radius: .3rem; color: #ffe2c9; background: linear-gradient(#743428, #421a15); font: 700 .65rem/1.2 Cinzel, serif; text-transform: uppercase; }

.combat-dialog { width:min(46rem,calc(100% - 1rem)); max-height:calc(100dvh - 1rem); padding:0; border:1px solid #a94838; border-radius:.75rem; color:#f8dfc4; background:#180a07; box-shadow:0 1.5rem 5rem #000; }
.combat-dialog::backdrop { background:rgba(0,0,0,.82); backdrop-filter:blur(3px); }
.combat-dialog__card { padding:clamp(.75rem,3vw,1.4rem); background:radial-gradient(circle at 50% 35%,rgba(151,45,24,.32),transparent 45%),linear-gradient(#32130d,#120705); text-align:center; }
.combat-dialog__kicker { margin:0; color:#e89673; font:800 .72rem/1 Cinzel,serif; letter-spacing:.15em; text-transform:uppercase; }
.combat-dialog h2 { margin:.35rem 0 .8rem; color:#ffd6a3; font:800 clamp(1.15rem,5vw,1.7rem)/1.1 Cinzel,serif; }
.combatants { display:grid; grid-template-columns:minmax(0,1fr) 6rem minmax(0,1fr); align-items:center; gap:.5rem; }
.combatants article { display:grid; justify-items:center; gap:.3rem; min-width:0; }
.combatants article:first-child { position:relative; z-index:2; }
.combatants article:last-child { position:relative; z-index:1; }
.combatant-sprite { position:relative; width:min(9rem,30vw); height:min(10rem,32vw); background-repeat:no-repeat; background-position:center bottom; background-size:contain; image-rendering:pixelated; filter:drop-shadow(0 .5rem .35rem #000); }
.combatant-sprite--monster { background-size:500% 100%; background-position:left top; }
.combat-dialog[open] .combatant-sprite--monster:not(.is-single-frame) { animation:combat-monster-frames 2.6s steps(1,end) infinite; }
.combatant-sprite--monster.is-single-frame { background-size:contain; background-position:center bottom; }
.combat-magic-animation { position:absolute; z-index:3; left:50%; bottom:-10%; display:block; height:125%; aspect-ratio:1/2; translate:-50% 0; pointer-events:none; background-repeat:no-repeat; background-size:500% 100%; background-position:0 0; image-rendering:pixelated; filter:drop-shadow(0 0 .55rem rgba(255,215,105,.38)); animation:combat-magic-frames 1.65s steps(1,end) both; }
@keyframes combat-magic-frames { 0%{background-position:0 0} 20%{background-position:25% 0} 40%{background-position:50% 0} 60%{background-position:75% 0} 80%,100%{background-position:100% 0} }
@keyframes combat-monster-frames { 0%{background-position:0 top} 20%{background-position:25% top} 40%{background-position:50% top} 60%{background-position:75% top} 80%,100%{background-position:100% top} }
.combatants strong { color:#ffe1b5; font:800 .75rem/1.15 Cinzel,serif; }
.combatants article > span { min-height:2.4em; color:#cdb09d; font-size:.68rem; }
.combatants article > i { width:100%; height:.55rem; overflow:hidden; border:1px solid #6c241c; border-radius:2rem; background:#160302; }
.combatants article > i b { display:block; width:100%; height:100%; background:linear-gradient(90deg,#8d1717,#e8583b); transition:width .45s ease; }
.combatants em { color:#ffd19a; font:800 .72rem/1 Inter,sans-serif; font-style:normal; }
.combat-die-host { display:grid; place-items:center; min-width:5.8rem; }
.combat-attack-dice { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:.25rem; max-width:8rem; }
.combat-attack-dice__column { display:flex; flex-direction:column; align-items:center; gap:.25rem; min-width:0; }
.combat-round-counter { margin:0 0 .5rem; color:#ffd19a; font:800 .8rem/1.2 Inter,sans-serif; }
.combat-attack-dice .d20-roll__die { width:2.8rem; height:2.8rem; }
.combat-attack-dice .d20-roll__value { font-size:1.4rem; }
.combat-attack-dice .d20-roll__caption { font-size:.55rem; overflow-wrap:anywhere; }
.combat-die-host .d20-roll { margin:0; }
.combat-die-host .d20-roll__caption { max-width:5.8rem; min-height:1.2em; line-height:1.25; }
.combat-message { min-height:2.5em; margin:.8rem 0; color:#f2cda8; font-size:.78rem; }
.combat-loadout { max-height:min(48dvh,30rem); margin:.7rem 0; overflow:auto; }
.combat-loadout[hidden] { display:none; }
.combat-loadout__roster { display:grid; gap:.65rem; }
.combat-loadout-hero { padding:.55rem; border:1px solid rgba(189,116,88,.5); border-radius:.45rem; background:rgba(30,8,5,.72); text-align:left; }
.combat-loadout-hero > header { display:grid; grid-template-columns:2.6rem 1fr auto; align-items:center; gap:.5rem; margin-bottom:.4rem; }
.combat-loadout-hero > header i { width:2.6rem; height:2.6rem; background:center bottom/contain no-repeat; image-rendering:pixelated; }
.combat-loadout-hero > header strong { color:#ffe1b5; font:800 .72rem/1.15 Cinzel,serif; }
.combat-loadout-hero > header small { color:#c99777; font:700 .57rem/1 Cinzel,serif; text-transform:uppercase; }
.combat-loadout-options h3 { margin:.3rem 0; color:#d9b18f; font:700 .62rem/1.2 Cinzel,serif; text-transform:uppercase; }
.combat-loadout-options > div { display:grid; grid-template-columns:repeat(auto-fit,minmax(5.2rem,1fr)); gap:.35rem; }
.combat-loadout-option { display:grid; justify-items:center; gap:.16rem; min-width:0; min-height:6.7rem; padding:.35rem; border:1px solid #6f3b2e; border-radius:.35rem; color:#f5d5b1; background:#28100b; text-transform:none; }
.combat-loadout-option.is-selected { border-color:#ffd35e; background:linear-gradient(#6b3b13,#2c1509); box-shadow:0 0 .7rem rgba(255,202,72,.48),inset 0 0 0 1px #ffe49a; }
.combat-loadout-option i { width:3.1rem; height:3.1rem; background:center/contain no-repeat; image-rendering:pixelated; }
.combat-loadout-option i.is-empty { display:grid; place-items:center; color:#b98d70; font-style:normal; }
.combat-loadout-option strong { overflow:hidden; width:100%; font:700 .58rem/1.15 Cinzel,serif; text-align:center; text-overflow:ellipsis; }
.combat-loadout-option small { color:#c6a58d; font:.54rem/1.2 Inter,sans-serif; text-align:center; }
.combat-party-member--selecting { position:relative; }
.combat-party-member--selecting .combat-loadout-options { position:absolute; z-index:2; top:0; left:0; right:0; max-height:var(--combat-portrait-height); overflow-y:auto; padding:.15rem; --choice-size:min(44px,calc((var(--combat-portrait-height) - .5rem)/2)); }
.combat-party-member--selecting .combat-loadout-options h3,
.combat-party-member--selecting .combat-loadout-option strong,
.combat-party-member--selecting .combat-loadout-option small { display:none; }
.combat-party-member--selecting .combat-loadout-options > div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.2rem; }
.combat-party-member--selecting .combat-loadout-option:nth-child(2) { grid-column:1; grid-row:2; }
.combat-party-member--selecting .combat-loadout-option:nth-child(3) { grid-column:2; grid-row:1; }
.combat-party-member--selecting .combat-loadout-option { width:100%; max-width:44px; height:var(--choice-size); min-height:0; padding:3px; justify-self:center; background:rgba(30,12,6,.85); }
.combat-party-member--selecting .combat-loadout-option i { width:100%; max-width:34px; height:calc(var(--choice-size) - 8px); }
.combat-party-member--selecting .combat-loadout-option.is-selected { background:rgba(105,62,15,.92); border-color:#ffe49a; box-shadow:inset 0 0 0 1px #ffe49a,0 0 .3rem #ffd35e80; }
.combat-party-member--selecting .combat-loadout-option:focus-visible { outline:2px solid white; outline-offset:1px; }
.combat-log { max-height:7rem; margin:.5rem 0; padding:0; overflow:auto; list-style:none; color:#d6b6a0; font-size:.68rem; text-align:left; }
.combat-log li { padding:.32rem .4rem; border-bottom:1px solid rgba(202,120,88,.22); }
.combat-log li.is-reward { color:#ffe080; font-weight:800; text-align:center; }
.combat-log li.is-reward-title { border:1px solid rgba(255,214,91,.58); color:#fff0a8; background:rgba(91,49,8,.72); font:800 .76rem/1.4 Cinzel,serif; text-align:center; text-transform:uppercase; }
.combat-actions { display:grid; gap:.5rem; }
.combat-actions button, .combat-loadout > #combat-fight { min-height:3rem; border:1px solid #bd7458; border-radius:.35rem; color:#ffe4c8; background:linear-gradient(#733222,#421710); font:800 .72rem/1.2 Cinzel,serif; text-transform:uppercase; }
.combat-loadout > #combat-fight { position:sticky; z-index:3; top:0; width:100%; margin-bottom:.55rem; box-shadow:0 .4rem .8rem rgba(12,3,2,.72); }
#combat-flee { border-color:#c23f36; background:linear-gradient(#842b26,#4a1714); }
@media (max-width:430px) { .combatants { grid-template-columns:minmax(0,1fr) 5.8rem minmax(0,1fr); gap:.2rem; } .combatant-sprite { height:7.5rem; } .combat-loadout { grid-template-columns:1fr; } }
.barcode-capture { position: relative; width: min(30rem, calc(100% - 2rem)); margin: 7rem auto 1rem; padding: clamp(1.1rem, 5vw, 1.6rem); border: 1px solid rgba(225,174,82,.7); border-radius: .45rem; color: #f4dfad; background: linear-gradient(rgba(35,18,10,.97), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px rgba(48,23,10,.8), 0 1rem 3rem rgba(0,0,0,.65); text-align: center; }
.barcode-capture[hidden] { display: none; }
.capture-close { position: absolute; z-index: 2; top: .55rem; right: .55rem; display: grid; place-items: center; width: 2.65rem; height: 2.65rem; padding: 0 0 .18rem; border: 1px solid #d5a14b; border-radius: 50%; color: #ffe6a5; background: rgba(55,25,12,.92); box-shadow: inset 0 0 0 2px #32170c, 0 .3rem .8rem rgba(0,0,0,.55); font: 700 1.8rem/1 Georgia, serif; cursor: pointer; }
.capture-close[hidden] { display: none; }
.capture-close:focus-visible { outline: 3px solid #fff2b1; outline-offset: 3px; }
.about-dialog__close,
.encounter-draw__close,
.encounter-choice__close,
.encounter-scene-close,
.capture-close,
.dungeon-element-detail button,
.discovered-dungeons__close,
.hero-sheet__close,
.auth-close {
  -webkit-tap-highlight-color: transparent;
}
.about-dialog__close:focus-visible,
.encounter-draw__close:focus-visible,
.encounter-choice__close:focus-visible,
.encounter-scene-close:focus-visible,
.capture-close:focus-visible,
.dungeon-element-detail button:focus-visible,
.discovered-dungeons__close:focus-visible,
.hero-sheet__close:focus-visible,
.auth-close:focus-visible {
  outline: 2px solid #d5a14b;
  outline-offset: 2px;
  box-shadow: 0 0 .55rem rgba(213,161,75,.38);
}
.lys-store__close { -webkit-tap-highlight-color: transparent; }
.lys-store__close:focus-visible {
  outline: 2px solid #79d1e6;
  outline-offset: 2px;
  box-shadow: 0 0 .55rem rgba(121,209,230,.4);
}
.barcode-capture__intro[hidden], .capture-preview[hidden] { display: none; }
.barcode-icon { display: flex; align-items: stretch; justify-content: center; gap: .16rem; width: 4.6rem; height: 3.2rem; margin: 0 auto .9rem; padding: .45rem; border: 1px solid #c69245; border-radius: .25rem; color: #f3c66b; background: rgba(7,4,2,.7); }
.barcode-icon::before, .barcode-icon::after, .barcode-icon span { content: ""; width: .18rem; background: currentColor; box-shadow: .35rem 0 currentColor, .7rem 0 currentColor, 1.05rem 0 currentColor; }
.barcode-icon::after { width: .3rem; margin-left: 1rem; }
.barcode-capture h3 { margin: 0; color: #ffe6a4; font: 700 clamp(1.05rem, 5vw, 1.4rem)/1.3 Cinzel, serif; text-transform: uppercase; text-shadow: 0 2px #3b190d; }
.barcode-capture__intro p { margin: .8rem auto 1.2rem; color: #cbb995; font-size: .78rem; line-height: 1.55; }
.capture-input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.capture-button-wrap { position: relative; }
.capture-button, .capture-actions button { position: relative; display: flex; align-items: center; justify-content: center; gap: .5rem; width: 100%; min-height: 3.5rem; border: 1px solid #e5b157; border-radius: .3rem; color: #fff0c4; background: linear-gradient(#88451f, #54210e); box-shadow: inset 0 0 0 2px #32150b, 0 .4rem 1rem rgba(0,0,0,.5); font: 700 clamp(.68rem, 3vw, .82rem)/1.2 Cinzel, serif; letter-spacing: .055em; text-transform: uppercase; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.capture-input--primary { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; overflow: visible; border: 0; opacity: .001; clip: auto; clip-path: none; cursor: pointer; pointer-events: auto; }
.capture-input--primary::file-selector-button,
.capture-input--primary::-webkit-file-upload-button { width: 100%; height: 100%; margin: 0; padding: 0; border: 0; opacity: 0; cursor: pointer; }
.capture-button:focus-visible, .capture-actions button:focus-visible { outline: 3px solid #fff2b1; outline-offset: 3px; }
.discovered-dungeons-button { width: 100%; min-height: 3rem; margin-top: .7rem; border: 1px solid #85643c; border-radius: .3rem; color: #d9c49b; background: rgba(23,13,8,.86); font: 700 .63rem/1.2 Cinzel, serif; letter-spacing: .045em; text-transform: uppercase; cursor: pointer; }
.capture-preview__image { position: relative; width: 100%; max-height: 48dvh; overflow: hidden; border: 1px solid #886036; border-radius: .3rem; background: #080503; touch-action: none; user-select: none; }
.capture-preview__image img { display: block; width: 100%; max-height: 48dvh; object-fit: contain; transform-origin: center; will-change: transform; pointer-events: none; }
.capture-preview.is-dungeon-ready .capture-preview__image,
.capture-preview.is-dungeon-ready .photo-controls,
.capture-preview.is-dungeon-ready .photo-hint,
.capture-preview.is-dungeon-ready .capture-actions,
.capture-preview.is-dungeon-ready .barcode-result,
.capture-preview.is-dungeon-ready > #capture-status { display: none; }
.capture-preview.is-generating .capture-preview__image,
.capture-preview.is-generating .photo-controls,
.capture-preview.is-generating .photo-hint,
.capture-preview.is-generating .capture-actions,
.capture-preview.is-generating .barcode-result,
.capture-preview.is-generating > #capture-status { display: none; }
.capture-preview.is-discovery-ready .capture-preview__image,
.capture-preview.is-discovery-ready .photo-controls,
.capture-preview.is-discovery-ready .photo-hint,
.capture-preview.is-discovery-ready .capture-actions,
.capture-preview.is-discovery-ready .barcode-result,
.capture-preview.is-discovery-ready > #capture-status { display: none; }
.capture-preview.is-rewarding .capture-preview__image,
.capture-preview.is-rewarding .photo-controls,
.capture-preview.is-rewarding .photo-hint,
.capture-preview.is-rewarding .capture-actions,
.capture-preview.is-rewarding .barcode-result,
.capture-preview.is-rewarding > #capture-status { display: none; }
.barcode-guide { position: absolute; inset: 27% 10%; border: 2px solid rgba(255,211,112,.88); border-radius: .3rem; box-shadow: 0 0 0 999px rgba(0,0,0,.18), inset 0 0 1.2rem rgba(255,192,64,.12); }
.photo-controls { display: grid; grid-template-columns: 3rem 1fr 3rem; gap: .45rem; margin-top: .55rem; }
.photo-controls button { min-height: 2.4rem; border: 1px solid #9d743d; border-radius: .25rem; color: #f5d99a; background: rgba(48,25,13,.92); font: 700 .68rem/1 Cinzel, serif; cursor: pointer; }
.photo-controls button:first-child, .photo-controls button:last-child { font: 700 1.4rem/1 Inter, sans-serif; }
.photo-hint { display: block; margin-top: .4rem; color: #a99572; font-size: .58rem; }
.dungeon-progress { margin: .9rem 0 .7rem; color: #e6c681; font: 700 .62rem/1.35 Cinzel, serif; }
.dungeon-progress[hidden] { display: none; }
.dungeon-progress > small { display: block; margin-top: .35rem; color: #c6ae83; font: 600 .58rem/1.35 Inter, sans-serif; }
.dungeon-progress__track { height: .65rem; margin-top: .55rem; overflow: hidden; border: 1px solid #9d743d; border-radius: 999px; background: rgba(8,5,3,.85); box-shadow: inset 0 .15rem .35rem rgba(0,0,0,.65); }
.dungeon-progress__track i { position: relative; display: block; width: 0; height: 100%; overflow: hidden; border-radius: inherit; background: linear-gradient(90deg, #a94b20, #f0b64e); box-shadow: 0 0 .7rem rgba(244,157,48,.6); transition: width 1.1s ease; }
.dungeon-progress__track i::after { content: ''; position: absolute; inset: 0; width: 45%; background: linear-gradient(90deg, transparent, rgba(255,244,190,.7), transparent); transform: translateX(-120%); animation: dungeon-progress-glint 1.8s ease-in-out infinite; }
@keyframes dungeon-progress-glint { to { transform: translateX(340%); } }
.discovery-choice { position: relative; isolation: isolate; margin: 0; padding: 1.25rem 1rem; overflow: hidden; border: 1px solid #ffe08a; border-radius: .35rem; background: radial-gradient(circle at 50% 28%, rgba(255,224,113,.36), transparent 42%), radial-gradient(circle at 50% 0, rgba(222,142,49,.32), transparent 66%), rgba(35,17,9,.96); box-shadow: inset 0 0 2.4rem rgba(255,190,62,.22), 0 0 1.4rem rgba(255,190,62,.35); animation: discovery-arrival .8s cubic-bezier(.2,.8,.2,1) both; }
.discovery-choice::before, .discovery-choice::after { content: ''; position: absolute; z-index: -1; inset: -45%; background: repeating-conic-gradient(from 0deg, transparent 0 9deg, rgba(255,224,130,.22) 10deg 11deg, transparent 12deg 24deg); animation: discovery-rays 12s linear infinite; }
.discovery-choice::after { inset: 0; background: radial-gradient(circle at 18% 25%, #fff7bd 0 1px, transparent 2px), radial-gradient(circle at 80% 34%, #ffd76a 0 1px, transparent 2px), radial-gradient(circle at 30% 72%, #fff1a1 0 1.5px, transparent 2.5px), radial-gradient(circle at 72% 78%, #ffc94f 0 1px, transparent 2px); background-size: 2.4rem 2.4rem, 3rem 3rem, 3.5rem 3.5rem, 2.8rem 2.8rem; animation: discovery-sparkles 1.7s ease-in-out infinite alternate; }
.discovery-choice[hidden] { display: none; }
.discovery-choice > p { margin: 0 0 .65rem; color: #fff1a7; font: 900 clamp(1.2rem, 6.8vw, 2.35rem)/1 Cinzel, serif; letter-spacing: .045em; white-space: nowrap; text-shadow: 0 0 .25rem #fff, 0 0 .75rem #ffc547, 0 0 1.5rem #e46f16; animation: discovery-title-pulse 1.15s ease-in-out infinite alternate; }
.discovery-choice h3 { margin: 0; color: #e8bb66; font: 700 .68rem/1.2 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.discovery-choice > strong, .discovery-choice > span { display: block; margin-top: .55rem; }
.discovery-choice > strong { color: #ffe7a7; font: 700 .9rem/1.25 Cinzel, serif; }
.discovery-choice > span { color: #cdb992; font-size: .68rem; line-height: 1.45; }
.discovery-choice > div { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; margin-top: 1rem; }
.discovery-choice button { min-height: 3rem; border: 1px solid #c88b43; border-radius: .25rem; color: #f7dfaa; background: rgba(53,27,14,.92); font: 700 .65rem/1 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.discovery-choice button:last-child { border-color: #edb457; background: linear-gradient(#91471f, #57220e); }
.dungeon-reward { margin: 0 0 .8rem; padding: 1.15rem .9rem; border: 1px solid #f1c15c; border-radius: .35rem; color: #ffe7a0; background: radial-gradient(circle at 50% 25%, rgba(255,201,75,.25), transparent 55%), rgba(64,31,12,.97); box-shadow: 0 0 1.8rem rgba(238,160,50,.45); animation: reward-reveal .75s ease-out both; }
.dungeon-reward[hidden] { display: none; }
.dungeon-reward > strong { display: block; font: 700 .7rem/1.2 Cinzel, serif; text-transform: uppercase; }
.dungeon-reward > div { display: flex; justify-content: center; gap: .7rem; margin-top: .65rem; }
.dungeon-reward span { padding: .45rem .65rem; border: 1px solid rgba(246,198,103,.6); border-radius: 2rem; background: rgba(18,8,3,.7); font: 800 .8rem/1 Inter, sans-serif; animation: reward-gain 1.2s .15s ease both; }
.dungeon-reward button { width: 100%; min-height: 3rem; margin-top: 1rem; border: 1px solid #ffe08a; border-radius: .25rem; color: #fff0bd; background: linear-gradient(#a85320, #64260d); font: 800 .68rem/1 Cinzel, serif; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; box-shadow: 0 0 .8rem rgba(255,190,62,.25); }
.scan-refund { margin: 0 0 .8rem; padding: 1.2rem .9rem; border: 1px solid #9dd4ff; border-radius: .35rem; color: #e8f7ff; background: radial-gradient(circle at 50% 20%, rgba(91,180,255,.28), transparent 58%), rgba(12,35,55,.97); box-shadow: 0 0 1.8rem rgba(76,170,239,.4); animation: reward-reveal .75s ease-out both; }
.scan-refund[hidden] { display: none; }
.scan-refund > strong { display: block; color: #dff3ff; font: 800 .78rem/1.25 Cinzel, serif; text-transform: uppercase; }
.scan-refund > p { margin: .55rem 0; color: #b9d9ef; font-size: .68rem; line-height: 1.45; }
.scan-refund > div span { display: inline-block; padding: .5rem .75rem; border: 1px solid rgba(157,212,255,.65); border-radius: 2rem; background: rgba(4,18,30,.72); font: 800 .85rem/1 Inter, sans-serif; }
.scan-refund button { width: 100%; min-height: 3rem; margin-top: 1rem; border: 1px solid #9dd4ff; border-radius: .25rem; color: #effaff; background: linear-gradient(#286b9d, #123c5d); font: 800 .65rem/1.2 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
@keyframes discovery-arrival { from { opacity: 0; transform: scale(.72); filter: brightness(2); } 65% { transform: scale(1.04); } to { opacity: 1; transform: scale(1); filter: none; } }
@keyframes discovery-rays { to { transform: rotate(1turn); } }
@keyframes discovery-sparkles { from { opacity: .35; transform: scale(.96); } to { opacity: 1; transform: scale(1.04); } }
@keyframes discovery-title-pulse { to { transform: scale(1.035); filter: brightness(1.25); } }
.capture-preview > p { min-height: 2.5rem; margin: .75rem 0; color: #d3c09a; font-size: .72rem; line-height: 1.45; }
.capture-preview.is-analyzing > #capture-status { color: #ffe08a; animation: scan-status-pulse .75s ease-in-out infinite alternate; }
@keyframes scan-status-pulse { from { opacity: .58; } to { opacity: 1; } }
.barcode-result[hidden] { display: none; }
.barcode-result [hidden] { display: none; }
.barcode-result { margin: 0 0 .8rem; padding: .7rem .8rem; border: 1px solid #d4a04b; border-radius: .3rem; background: rgba(108,55,20,.42); box-shadow: inset 0 0 1.2rem rgba(246,174,63,.12); overflow-wrap: anywhere; }
.barcode-result span, .barcode-result small { display: block; color: #cfa965; font: 700 .53rem/1.3 Cinzel, serif; letter-spacing: .12em; text-transform: uppercase; }
.barcode-result strong { display: block; margin: .3rem 0; color: #ffe8a9; font: 700 clamp(1rem, 5vw, 1.35rem)/1.2 Inter, sans-serif; letter-spacing: .08em; }
.dungeon-choice { margin: 0 0 .8rem; padding: .9rem; border: 1px solid #dc9949; border-radius: .35rem; background: radial-gradient(circle at 50% 0, rgba(205,103,31,.24), transparent 55%), rgba(35,17,9,.9); box-shadow: inset 0 0 1.5rem rgba(239,138,42,.12); }
.dungeon-choice-shell { position: relative; z-index: 5; width: min(30rem, calc(100% - 2rem)); margin: 7rem auto 1rem; padding: clamp(1.1rem, 5vw, 1.6rem); border: 1px solid rgba(225,174,82,.7); border-radius: .45rem; color: #f4dfad; background: linear-gradient(rgba(35,18,10,.97), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px rgba(48,23,10,.8), 0 1rem 3rem rgba(0,0,0,.65); text-align: center; }
.dungeon-choice-shell[hidden] { display: none; }
.dungeon-choice-shell .dungeon-choice { margin-bottom: 0; }
.dungeon-choice[hidden] { display: none; }
.dungeon-choice > p { margin: 0; color: #c99854; font: 700 .55rem/1 Cinzel, serif; letter-spacing: .12em; text-transform: uppercase; }
.dungeon-choice h3 { margin: .45rem 0; color: #ffe19b; font: 700 clamp(1rem, 5vw, 1.35rem)/1.2 Cinzel, serif; }
.dungeon-choice > .dungeon-choice__origin-name { margin: 0 0 .65rem; overflow-wrap: anywhere; }
.dungeon-choice > .dungeon-choice__origin-name[hidden] { display: none; }
.dungeon-choice > span, .dungeon-choice > small { display: block; color: #d2bd94; font-size: .68rem; }
.dungeon-choice > small { margin-top: .3rem; color: #9f8b6b; font-size: .56rem; }
.dungeon-choice > .dungeon-discoverer { color:#e6c47f;font-weight:700; }
.dungeon-choice > .dungeon-choice__completion,
.discovered-dungeons__completion { position:relative;display:block;height:1.15rem;margin:.55rem 0 .2rem;overflow:hidden;border:1px solid #9f7137;border-radius:999px;background:rgba(8,5,3,.8); }
.dungeon-choice__completion i,
.discovered-dungeons__completion i { position:absolute;inset:0 auto 0 0;display:block;background:linear-gradient(90deg,#986318,#f1c24e);box-shadow:0 0 .7rem rgba(246,191,65,.55);transition:width .3s ease; }
.dungeon-choice__completion b,
.discovered-dungeons__completion b { position:relative;z-index:1;display:grid;height:100%;place-items:center;color:#fff1bf;font:800 .5rem/1 Cinzel,serif;text-shadow:0 1px 2px #000; }
.dungeon-boss-preview { display: grid; justify-items: center; gap: .2rem; margin: .35rem auto 0; }
.dungeon-boss-preview[hidden] { display: none; }
.dungeon-boss-preview > div { width: 5.4rem; height: 10.8rem; overflow: hidden; }
.dungeon-boss-preview img { display: block; width: 100%; height: 100%; object-fit: contain; }
.dungeon-boss-preview figcaption { color: #f2c879; font: 700 .62rem/1.2 Cinzel, serif; }
.dungeon-choice > div { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; margin-top: .85rem; }
.dungeon-choice button { min-height: 2.9rem; border: 1px solid #c88b43; border-radius: .25rem; color: #f7dfaa; background: rgba(53,27,14,.92); font: 700 .65rem/1 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.dungeon-choice button:last-child { border-color: #edb457; background: linear-gradient(#91471f, #57220e); }
.barcode-result .product-name { margin-top: .65rem; color: #fff0bd; font-size: clamp(.85rem, 4.4vw, 1.15rem); letter-spacing: .02em; }
.capture-actions { display: grid; grid-template-columns: 1fr 1.35fr; gap: .65rem; }
.capture-actions button { min-height: 3.2rem; padding: .5rem; }
.capture-actions button:first-child { color: #d8bc87; background: rgba(44,24,13,.85); }
.capture-actions button:disabled { opacity: .65; cursor: default; }

.hero-select { display: flex; flex-direction: column; align-items: center; justify-content: space-between; width: min(36rem, 100%); height: 100dvh; min-height: 0; margin: auto; overflow: hidden; padding: max(1.25rem, env(safe-area-inset-top)) 1rem max(.7rem, env(safe-area-inset-bottom)); text-align: center; }
.hero-carousel { display: grid; grid-template-columns: 3rem minmax(0, 1fr) 3rem; align-items: center; width: 100%; min-height: 0; flex: 1; }
.hero-arrow { display: grid; place-items: center; width: 3rem; height: 3rem; border: 1px solid #d5a14b; border-radius: 50%; color: #ffe6a5; background: rgba(45,22,10,.78); box-shadow: inset 0 0 0 2px #32170c, 0 .3rem 1rem rgba(0,0,0,.5); font: 700 2rem/1 Georgia, serif; cursor: pointer; }
.hero-arrow:disabled { opacity: .35; cursor: not-allowed; }
.hero-choice { position: relative; display: flex; flex-direction: column; align-items: center; min-width: 0; height: clamp(14rem, 46dvh, 27rem); margin: 0; }
.hero-choice.has-3d-carousel > img,.hero-choice.has-3d-carousel > .hero-choice__aura,.hero-choice.has-3d-carousel > .hero-lock{visibility:hidden}
.hero-choice.has-3d-carousel > .hero-lock{z-index:100;top:68%;font-size:.8rem;line-height:1.3;max-width:95%;text-align:center;color:#ffe4a0;border-color:#c09549;background:#211307f5}
@media (min-width:760px), (hover:hover) and (pointer:fine) {
  .tavern-screen .hero-carousel:has(.has-3d-carousel){align-items:end;padding-bottom:.65rem}
  .tavern-screen .hero-carousel:has(.has-3d-carousel) .hero-arrow{align-self:center}
}
.tavern-3d-stage{position:absolute;inset:0 -2.75rem;overflow:hidden;pointer-events:none}
.hero-carousel .hero-arrow{position:relative;z-index:2}
.tavern-3d-stage canvas{display:block;width:100%;height:100%}
.tavern-3d-preload.boss-creation-dialog__progress{position:absolute;left:50%;top:50%;translate:-50% -50%;box-sizing:border-box;width:min(22rem,90%);z-index:101;padding:.8rem 1rem;gap:.55rem;text-align:center;box-shadow:0 .5rem 1.5rem #0009}
.tavern-3d-preload[hidden]{display:none}
.model-progress-indeterminate i{animation:model-progress-pulse 1.2s ease-in-out infinite alternate}
@keyframes model-progress-pulse{from{opacity:.35}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.model-progress-indeterminate i{animation:none}}
.tavern-3d-preload p{margin:0}
.tavern-3d-preload small{overflow-wrap:anywhere;color:#bfa77b;font-size:.65rem;line-height:1.4}
.tavern-3d-preload nav:empty{display:none}
.tavern-3d-preload button{margin:.25rem}
@media(prefers-reduced-motion:reduce){.tavern-3d-preload.boss-creation-dialog__progress i{transition:none}}
.hero-choice__aura { position: absolute; z-index: -1; left: 50%; bottom: 0; translate: -50%; width: min(18rem, 70vw); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(245,186,77,.24), rgba(217,111,25,.07) 48%, transparent 70%); filter: blur(3px); animation: breathe 2.4s ease-in-out infinite; }
.hero-choice.is-locked img { filter: grayscale(.8) brightness(.55) drop-shadow(0 .7rem .45rem rgba(0,0,0,.65)); }
.hero-lock { position: absolute; z-index: 2; left: 50%; top: 52%; min-width: 9rem; padding: .55rem .7rem; border: 1px solid #9dcfff; border-radius: 2rem; color: #eaf7ff; background: rgba(10,31,48,.94); box-shadow: 0 .35rem 1rem rgba(0,0,0,.65); font: 800 .62rem/1 Cinzel, serif; text-transform: uppercase; translate: -50% -50%; }
.hero-lock[hidden] { display: none; }
.hero-choice img { width: min(11.5rem, 44vw); height: 100%; object-fit: contain; object-position: center bottom; image-rendering: pixelated; scale:var(--hero-visual-scale,1);transform-origin:50% 100%;filter: drop-shadow(0 .8rem .5rem rgba(0,0,0,.65)); }
.hero-choice img.is-warrior { translate: clamp(.8rem, 4vw, 1.25rem) clamp(.15rem, .8dvh, .4rem); }
.hero-choice img.is-thief,
.hero-choice img.is-paladin,
.hero-choice img.is-elf { translate: 0 0; }
.hero-choice img.is-dwarf { width: min(9.4rem, 36vw); height: 82%; margin-top: auto; translate: 0 0; }
.hero-choice img.is-gnome { width: min(8.2rem, 32vw); height: 72%; margin-top: auto; translate: var(--welcome-frame-offset-x, 0) 0; }
.hero-choice img.is-dead { width: min(8.5rem, 34vw); height: 82%; margin-top: auto; translate: 0 0; filter: drop-shadow(0 .8rem .55rem rgba(0,0,0,.75)); }
.hero-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: .35rem; width: min(25rem, calc(100% - 1rem)); margin: 0 0 .65rem; }
.hero-stats > div { min-width: 0; padding: .38rem .3rem; border: 1px solid color-mix(in srgb, var(--stat-color, #d4a04b) 72%, #42210f); border-radius: .25rem; background: rgba(26,13,8,.84); box-shadow: inset 0 .16rem 0 var(--stat-color, #d4a04b); }
.hero-stats > [role="button"] { cursor: pointer; touch-action: manipulation; transition: filter .15s ease, transform .15s ease; user-select: none; -webkit-user-select: none; }
.hero-stats > [role="button"]:active { filter: brightness(1.3); transform: scale(.97); }
.hero-stats > [role="button"]:focus-visible { outline: 2px solid #ffe09a; outline-offset: 2px; }
.hero-stats dt { overflow: hidden; color: #cdbb98; font: 700 clamp(.43rem, 1.9vw, .56rem)/1 Cinzel, serif; letter-spacing: .04em; text-overflow: ellipsis; text-transform: uppercase; }
.hero-stats dd { margin: .28rem 0 0; color: var(--stat-color, #f0c56d); font: 800 clamp(.82rem, 3.4vw, 1.05rem)/1 Inter, sans-serif; text-shadow: 0 2px #180b06; }
.hero-confirm { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .32rem; width: min(24rem, calc(100% - 2rem)); min-height: 4.2rem; border: 1px solid #efbd5e; border-radius: .3rem; color: #fff3cb; background: linear-gradient(#985027, #61280f); box-shadow: inset 0 0 0 2px #35160b, 0 .5rem 1.3rem rgba(0,0,0,.55); cursor: pointer; }
.hero-confirm strong { font: 700 clamp(.78rem, 3.4vw, .95rem)/1 Cinzel, serif; letter-spacing: .055em; text-transform: uppercase; }
.hero-confirm small { color: #e0bc7c; font-size: .53rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.hero-confirm:hover { filter: brightness(1.14); }
.hero-confirm:active { transform: translateY(1px) scale(.99); }
.hero-confirm:focus-visible, .hero-arrow:focus-visible { outline: 3px solid #fff2b1; outline-offset: 3px; }
.hero-confirm.is-lys-spend,
#encounter-reroll { border-color: #79d1e6; color: #f5fdff; background: linear-gradient(#247a96, #12475f); box-shadow: inset 0 0 0 2px rgba(7,35,49,.72), 0 .4rem 1rem rgba(21,131,171,.24); }
.hero-count { margin: .55rem 0 0; color: rgba(255,230,186,.62); font-size: .6rem; letter-spacing: .12em; text-transform: uppercase; }
.hero-count[hidden] { display: none; }
.tavern-primary-actions { display:flex; flex:0 0 4.4rem; align-items:center; justify-content:center; gap:.7rem; width:100%; }
.tavern-primary-header { flex:none; width:100%; }
.inn-day-countdown { margin:.35rem 0 0; color:#f4d695; text-align:center; font-size:.75rem; font-variant-numeric:tabular-nums; }
.tavern-meta-actions { display: flex; align-items: center; justify-content: center; gap: .25rem; margin-top: .35rem; }
.inn-night-button {
  display:grid; flex:0 0 4.4rem; place-items:center; align-content:center; gap:.15rem;
  width:4.4rem; height:4.4rem; margin:0; padding:0;
  border:2px solid #79d1e6; border-radius:50%; color:#effcff;
  background:radial-gradient(circle at 38% 30%,#2598c2,#075478 72%);
  box-shadow:inset 0 0 1rem rgba(184,239,255,.2),0 0 .8rem rgba(42,172,218,.42),0 .5rem 1.4rem rgba(0,0,0,.58);
  cursor:pointer;
}
.inn-night-button[hidden] { display:none; }
.inn-night-button > span { font:700 1.75rem/.8 Georgia,serif; }
.inn-night-button > small { font:700 .48rem/1 Cinzel,serif; letter-spacing:.02em; white-space:nowrap; }
.inn-night-button:hover { filter:brightness(1.15); }
.inn-night-button:focus-visible { outline:3px solid #dffaff; outline-offset:4px; }
.inn-night-transition {
  position: absolute; inset: 0; z-index: 40; opacity: 0; pointer-events: none;
  background: #05030a; transition: opacity 1.4s ease;
}
.inn-night-transition.is-visible { opacity: 1; }
.inn-night-transition img { width: 100%; height: 100%; object-fit: cover; }

.hero-join-celebration { position: absolute; z-index: 140; inset: 0; display: grid; place-items: center; overflow: hidden; background: #080402; opacity: 0; transition: opacity 1.4s ease-in-out; pointer-events: auto; }
.hero-join-celebration[hidden] { display: none; }
.hero-join-celebration.is-visible { opacity: 1; }
.hero-join-celebration img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.priest-blessing-dialog { border:1px solid #b88423; border-radius:18px; color:#f6e6b5; background:rgba(13,10,8,.97); max-width:min(88vw,420px); padding:0; }
.priest-blessing-dialog::backdrop { background:rgba(0,0,0,.78); }
.priest-blessing-dialog__card { padding:1.25rem; text-align:center; }
.priest-blessing-dialog__hero { display:block; height:min(42vh,330px); max-width:100%; object-fit:contain; margin:0 auto; filter:drop-shadow(0 0 10px #fff3ad) drop-shadow(0 0 24px #d69d22); animation:priest-blessing-glow 1.8s ease-in-out infinite alternate; }
.priest-blessing-dialog h2 { color:#e8bd5a; }
.priest-blessing-dialog button { margin-inline:auto; }
@keyframes priest-blessing-glow { to { filter:drop-shadow(0 0 16px #fffbd0) drop-shadow(0 0 36px #e3ad35); } }
.help-button { display: grid; place-items: center; flex: 0 0 1.75rem; width: 1.75rem; height: 1.75rem; padding: 0; border: 1px solid rgba(225,187,125,.6); border-radius: 50%; color: #f1cf91; background: rgba(42,21,11,.72); font: 800 .75rem/1 Cinzel, serif; cursor: pointer; }
.tavern-help-button {
  position:relative;
  z-index:6;
  flex:0 0 4.4rem;
  width:4.4rem;
  height:4.4rem;
  border:2px solid #ffe18a;
  color:#fff2b9;
  background:radial-gradient(circle at 38% 30%,#b96f28,#5b2b10 58%,#241006);
  box-shadow:inset 0 0 1.1rem rgba(255,231,147,.34),0 0 .85rem rgba(255,202,79,.75),0 .5rem 1.4rem rgba(0,0,0,.58);
  font-size:1.85rem;
  text-shadow:0 0 .35rem #fff,0 0 .8rem #ffc947;
  backdrop-filter:blur(8px);
  animation:tavern-help-glow 1.45s ease-in-out infinite alternate;
}
.tavern-help-button:hover { filter:brightness(1.16); }
.tavern-help-button:focus-visible { outline:3px solid #fff6cf;outline-offset:4px; }
@keyframes tavern-help-glow {
  from { scale:.96;box-shadow:inset 0 0 .8rem rgba(255,231,147,.25),0 0 .6rem rgba(255,202,79,.55),0 .5rem 1.4rem rgba(0,0,0,.58); }
  to { scale:1.04;box-shadow:inset 0 0 1.35rem rgba(255,239,180,.48),0 0 1.65rem rgba(255,204,74,.95),0 .5rem 1.4rem rgba(0,0,0,.58); }
}
.new-game-button { margin: 0; padding: .35rem .6rem; border: 0; color: rgba(225,187,125,.72); background: transparent; font: 600 .55rem/1 Inter, sans-serif; text-decoration: underline; cursor: pointer; }
.new-game-button:focus-visible { outline: 2px solid #f0c56d; outline-offset: 2px; }
.about-button { margin: 0; padding: .35rem .6rem; border: 0; color: rgba(225,187,125,.72); background: transparent; font: 700 .55rem/1 Cinzel, serif; letter-spacing: .08em; text-decoration: underline; text-transform: uppercase; cursor: pointer; }
.logout-button { margin: 0; padding: .35rem .6rem; border: 0; color: rgba(225,187,125,.72); background: transparent; font: 600 .55rem/1 Inter, sans-serif; text-decoration: underline; cursor: pointer; }
.about-dialog { width: min(25rem, calc(100% - 2rem)); margin: auto; padding: 0; border: 0; color: #f6e3b5; background: transparent; }
.about-dialog::backdrop { background: rgba(5,3,2,.82); backdrop-filter: blur(6px); }
.about-dialog__card { position: relative; padding: 1.6rem 1.25rem 1.35rem; border: 1px solid #b37836; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(152,87,30,.22), transparent 48%), linear-gradient(rgba(40,21,12,.99), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px #2b160c, 0 1.5rem 5rem #000; text-align: center; }
.help-dialog__card { min-height: 8rem; }
.help-dialog__image { display: block; width: calc(100% + 2.5rem); max-width: none; height: auto; max-height: 48vh; margin: 0 -1.25rem 1rem; border-block: 1px solid rgba(225,187,125,.45); object-fit: contain; }
.help-dialog__image[hidden] { display: none; }
.help-dialog__copy { font-size: clamp(1rem, 3.8vw, 1.15rem); line-height: 1.55; }
.help-dialog__copy p { margin: .65rem 0; }
.help-dialog__video { position:relative;display:block;overflow:hidden;border:1px solid #aa8043;border-radius:.65rem;background:#080808;color:#fff;text-decoration:none; }
.help-dialog__video img { display:block;width:100%;height:auto;max-height:38vh;object-fit:contain; }
.help-dialog__video-play { position:absolute;top:calc((100% - 3rem)/2);left:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:4.25rem;height:3rem;border-radius:.8rem;background:#f00;box-shadow:0 2px 12px #0009; }
.help-dialog__video-play::after { content:'';margin-left:.2rem;border-left:1.15rem solid white;border-top:.7rem solid transparent;border-bottom:.7rem solid transparent; }
.help-dialog__video-label { display:block;padding:.65rem;text-align:center;font-size:.85rem;line-height:1.35; }
.help-dialog__video:hover .help-dialog__video-play { background:#d90000; }
.help-dialog__video:focus-visible { outline:3px solid #ffe4a3;outline-offset:3px; }
.help-dialog__bullets { display:grid;gap:.55rem;margin:.7rem 0;padding-left:1.25rem;text-align:left; }
.help-dialog__bullets li { padding-left:.2rem;color:#ead8b6;font-size:.78rem;line-height:1.42; }
.help-dialog__bullets li::marker { color:#e5ae53; }
.help-dialog__stats { display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:.9rem 0 0;text-align:left; }
.help-dialog__stats>div { min-width:0;padding:.65rem;border:1px solid color-mix(in srgb,var(--stat-color) 72%,#42210f);border-radius:.35rem;background:rgba(26,13,8,.88);box-shadow:inset 0 .2rem 0 var(--stat-color); }
.help-dialog__stats dt { color:var(--stat-color);font:800 .78rem/1.15 Cinzel,serif;text-transform:uppercase; }
.help-dialog__stats dd { margin:.4rem 0 0;color:#e3d2b2;font-size:.72rem;line-height:1.4; }
.help-dialog__greeting { margin: 1rem 0; color: #f1cf91; font: 700 1.05rem/1.35 Cinzel, serif; }
.help-dialog__pagination { display: grid; grid-template-columns: 3rem 1fr 3rem; align-items: center; gap: .75rem; margin-top: 1rem; }
.help-dialog__pagination[hidden] { display: none; }
.help-dialog__pagination button { min-height: 2.75rem; padding: 0; border: 1px solid rgba(225,187,125,.55); border-radius: .5rem; color: #f1cf91; background: rgba(61,31,17,.9); font-size: 1.6rem; }
.help-dialog__pagination button:disabled { opacity: .32; }
.help-dialog__pagination strong { text-align: center; color: #f1cf91; font-family: Cinzel, serif; }
.about-dialog__close { position: absolute; top: .35rem; right: .5rem; width: 2.5rem; height: 2.5rem; border: 0; color: #e0bd7d; background: transparent; font-size: 1.7rem; cursor: pointer; }
.about-dialog__card > p:first-of-type { margin: 0 0 .45rem; color: #c98d49; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.about-dialog h2 { margin: 0; color: #ffe8a9; font: 700 1.3rem/1.2 Cinzel, serif; text-transform: uppercase; }
.hero-stat-dialog .about-dialog__card { padding-top: 2.6rem; }
.hero-stat-dialog p { margin: 1rem 0 .25rem; color: #e1cfaa; font-size: .9rem; line-height: 1.55; }
.about-dialog #about-copy { margin: 1rem 0; color: #d8c6a3; font-size: .74rem; line-height: 1.55; }
.about-dialog a { display: inline-block; padding: .65rem .9rem; border: 1px solid rgba(214,166,89,.55); border-radius: 2rem; color: #ffd98b; background: rgba(17,8,4,.65); font: 700 .72rem/1 Inter, sans-serif; text-decoration: none; }
.about-dialog:has(.about-policies) { width: min(36rem, calc(100% - 1rem)); }
.about-dialog:has(.about-policies) .about-dialog__card { max-height: min(88vh, 48rem); overflow-y: auto; text-align: left; }
.about-dialog:has(.about-policies) #about-kicker,
.about-dialog:has(.about-policies) #about-title,
.about-dialog:has(.about-policies) #about-copy,
.about-dialog:has(.about-policies) .about-dialog__card > a { display: block; width: max-content; margin-inline: auto; text-align: center; }
.about-policies { display: grid; gap: .65rem; margin-top: 1rem; }
.about-policies details { border: 1px solid rgba(214,166,89,.45); border-radius: .45rem; background: rgba(12,6,3,.55); }
.about-policies summary, .bestiary-book__disclosure > summary { padding: .85rem 2rem .85rem .9rem; color: #ffe1a0; font: 700 .78rem/1.3 Cinzel, serif; cursor: pointer; }
.bestiary-book__disclosure { grid-column:1/-1; border:1px solid #805326; border-radius:.35rem; text-align:left; }
.bestiary-book__disclosure > .bestiary-book__grid { padding:0 .65rem .65rem; text-align:center; }
.about-policy { padding: 0 .9rem .9rem; color: #dcc9a7; font-size: .78rem; line-height: 1.55; }
.about-policy h3 { margin: 1rem 0 .25rem; color: #f2c97f; font: 700 .76rem/1.35 Cinzel, serif; text-transform: none; }
.about-policy p { margin: .45rem 0; }
.scan-consent { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 1rem; color: #e5f4ff; background: rgba(3,7,12,.92); }
.scan-consent__card{position:relative}.scan-consent .scan-consent__close{position:absolute;top:.35rem;right:.4rem;display:grid;place-items:center;width:3rem;height:3rem;min-height:3rem;padding:0 0 .16rem;border:1px solid rgba(123,202,236,.72);border-radius:50%;color:#eaf8ff;background:rgba(11,49,70,.92);font:400 1.9rem/1 Arial,sans-serif}
.scan-consent[hidden] { display: none; }
.scan-consent__card { width: min(25rem, 100%); padding: 1.4rem 1.1rem 1.1rem; border: 1px solid #65b9d0; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(43,101,151,.34), transparent 48%), linear-gradient(#14283b, #080f17); box-shadow: inset 0 0 0 3px #102337, 0 1.5rem 5rem #000; text-align: center; }
.scan-consent__card > p:first-of-type { margin: 0 0 .4rem; color: #91d7e8; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.scan-consent h2 { margin: 0; color: #e9fbff; font: 700 clamp(.88rem, 4.3vw, 1.25rem)/1.2 Cinzel, serif; text-transform: uppercase; white-space: nowrap; }
.scan-consent__card > strong { display: block; margin: .9rem 0 .65rem; color: #ffe09a; font: 800 1.15rem/1 Cinzel, serif; text-shadow: 0 0 .8rem rgba(255,223,117,.4); }
.scan-consent__card > small { display: block; margin-top: .35rem; color: #a9c8dc; font-size: .61rem; }
.scan-consent__card > div { display: grid; grid-template-columns: 1fr 1.3fr; gap: .55rem; margin-top: 1rem; }
.scan-consent button { min-height: 3rem; border: 1px solid #497e91; border-radius: .25rem; color: #d6edf3; background: rgba(9,32,45,.95); font: 700 .61rem/1.2 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.scan-consent button:last-child { border-color: #79d1e6; color: #f5fdff; background: linear-gradient(#247a96, #12475f); }

.hero-purchase-confirm { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 1rem; color: #eff9ff; background: rgba(2,7,13,.92); }
.hero-purchase-confirm[hidden] { display: none; }
.hero-purchase-confirm__card { width: min(25rem, 100%); padding: 1.4rem 1.1rem 1.1rem; border: 1px solid #65b9d0; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(60,164,193,.3), transparent 50%), linear-gradient(#153449, #07131e); box-shadow: inset 0 0 0 3px #0b2434, 0 1.5rem 5rem #000; text-align: center; }
.hero-purchase-confirm__card > p:first-child { margin: 0 0 .4rem; color: #91d7e8; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.hero-purchase-confirm h2 { margin: 0; color: #e9fbff; font: 700 clamp(.88rem, 4.3vw, 1.25rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.hero-purchase-confirm__card > p:not(:first-child) { margin: .9rem auto .65rem; color: #d2e9ef; font-size: .76rem; }
.hero-purchase-confirm__card > strong { display: block; color: #fff4c4; font: 800 1.05rem/1 Cinzel, serif; text-shadow: 0 0 .8rem rgba(255,223,117,.38); }
.hero-purchase-confirm__card > div { display: grid; grid-template-columns: 1fr 1.3fr; gap: .55rem; margin-top: 1rem; }
.hero-purchase-confirm button { min-height: 3rem; border: 1px solid #497e91; border-radius: .25rem; color: #d6edf3; background: rgba(9,32,45,.95); font: 700 .61rem/1.2 Cinzel, serif; text-transform: uppercase; cursor: pointer; }
.hero-purchase-confirm button:last-child { border-color: #79d1e6; color: #f5fdff; background: linear-gradient(#247a96, #12475f); }
.hero-purchase-confirm button:disabled { opacity: .55; cursor: wait; }
.lys-expense-confirm__balance { display: block; margin-top: .55rem; color: #a9cfe0; font-size: .72rem; }
.lys-expense-confirm { width: auto; max-width: none; border: 0; padding: 1rem; }
.lys-expense-confirm::backdrop { background: rgba(3,7,12,.92); backdrop-filter: blur(5px); }
.neutral-interaction button.is-lys-spend,
.snake-oil-offer button.is-lys-spend { border-color: #79d1e6; color: #f5fdff; background: linear-gradient(#247a96, #12475f); box-shadow: inset 0 0 0 2px rgba(7,35,49,.55); }
.reset-confirm { position: fixed; z-index: 110; inset: 0; display: grid; place-items: center; padding: 1rem; color: #fff0ed; background: rgba(10,2,2,.94); }
.reset-confirm[hidden] { display: none; }
.reset-confirm__card { width: min(26rem, 100%); padding: 1.45rem 1.15rem 1.15rem; border: 1px solid #b85d51; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(173,62,45,.27), transparent 48%), linear-gradient(#351614, #130706); box-shadow: inset 0 0 0 3px #421713, 0 1.5rem 5rem #000; text-align: center; }
.reset-confirm__card > p:first-child { margin: 0 0 .4rem; color: #e58a7d; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.reset-confirm h2 { margin: 0; color: #fff0dd; font: 700 clamp(1rem, 4.8vw, 1.35rem)/1.2 Cinzel, serif; text-transform: uppercase; }
.reset-confirm #reset-confirm-warning { margin: .85rem auto 1rem; color: #e2bbb4; font-size: .74rem; line-height: 1.5; }
.reset-confirm label { display: block; margin-bottom: .45rem; color: #f2d0c8; font-size: .68rem; line-height: 1.45; text-align: left; }
.reset-confirm input { width: 100%; height: 3.2rem; padding: 0 .8rem; border: 1px solid #86483f; border-radius: .25rem; color: #fff5e8; background: rgba(8,3,3,.78); font: 700 .9rem/1 Inter, sans-serif; outline: none; }
.reset-confirm input:focus { border-color: #ec8878; box-shadow: 0 0 0 3px rgba(236,136,120,.16); }
.reset-confirm__status { min-height: 1.2rem; margin: .45rem 0; color: #f09a8e; font-size: .65rem; }
.reset-confirm__card > div { display: grid; grid-template-columns: 1fr 1.25fr; gap: .55rem; }
.reset-confirm button { min-height: 3rem; border: 1px solid #75453e; border-radius: .25rem; color: #ead4cf; background: rgba(36,14,12,.95); font: 700 .61rem/1.2 Cinzel, serif; text-transform: uppercase; }
.reset-confirm button:last-child { border-color: #d66f60; color: #fff3e4; background: linear-gradient(#9d382d, #5f1913); }
.reset-confirm button:disabled { opacity: .35; cursor: not-allowed; }
.logout-confirm { position: fixed; z-index: 110; inset: 0; display: grid; place-items: center; padding: 1rem; color: #f6e3b5; background: rgba(8,4,2,.9); }
.logout-confirm[hidden] { display: none; }
.logout-confirm__card { width: min(25rem, 100%); padding: 1.4rem 1.1rem 1.1rem; border: 1px solid #a87339; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(157,92,35,.22), transparent 48%), linear-gradient(#301b10, #120905); box-shadow: inset 0 0 0 3px #2c160b, 0 1.5rem 5rem #000; text-align: center; }
.logout-confirm__card > p:first-child { margin: 0 0 .4rem; color: #d09954; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.logout-confirm h2 { margin: 0; color: #ffe8b3; font: 700 1.2rem/1.2 Cinzel, serif; text-transform: uppercase; }
.logout-confirm #logout-confirm-message { margin: .85rem auto; color: #d8c5a4; font-size: .74rem; line-height: 1.5; }
.logout-confirm__status { min-height: 1.2rem; margin: .35rem 0; color: #e1ad68; font-size: .65rem; }
.logout-confirm__card > div { display: grid; grid-template-columns: 1fr 1.25fr; gap: .55rem; }
.logout-confirm button { min-height: 3rem; border: 1px solid #76512f; border-radius: .25rem; color: #ead8bc; background: rgba(39,22,12,.96); font: 700 .61rem/1.2 Cinzel, serif; text-transform: uppercase; }
.logout-confirm button:last-child { border-color: #c08443; color: #fff0ce; background: linear-gradient(#8b4c24, #54260f); }
.logout-confirm button:disabled { opacity: .45; cursor: wait; }

.player-status-controls { position: fixed; z-index: 8; top: max(1rem, env(safe-area-inset-top)); left: max(1rem, env(safe-area-inset-left)); display: grid; gap: .25rem; max-width: calc(100vw - 8rem); }
.player-status-controls__main { display:flex;gap:.4rem;align-items:center; }
.prepared-effects { display:flex;gap:.25rem;min-height:0;align-items:center; }
.prepared-effect { position:relative;width:1.8rem;height:1.8rem;padding:0;border:1px solid rgba(239,189,94,.75);border-radius:.35rem;background:rgba(20,9,5,.9);box-shadow:0 .2rem .7rem #000;cursor:pointer; }
.prepared-effect img { width:100%;height:100%;object-fit:contain;image-rendering:auto; }
.prepared-effect span { position:absolute;right:-.25rem;bottom:-.2rem;min-width:.9rem;padding:.08rem .18rem;border-radius:.5rem;color:#fff4c3;background:#6b2d12;font:800 .52rem/1 Cinzel,serif;text-align:center; }
.prepared-effect:focus-visible { outline:2px solid #ffe59c;outline-offset:2px; }
.prepared-effects-dialog { width:min(28rem,calc(100% - 1rem)); }
.prepared-effects-dialog .about-dialog__card { max-height:min(86vh,44rem);overflow-y:auto;padding-top:2.8rem; }
.prepared-effects-dialog__list { display:grid;gap:.55rem;margin-top:1rem;text-align:left; }
.prepared-effects-dialog__effect { display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto;align-items:center;gap:.65rem;padding:.6rem;border:1px solid rgba(205,153,75,.48);border-radius:.4rem;background:rgba(20,9,5,.7); }
.prepared-effects-dialog__effect img { width:3.2rem;height:3.2rem;object-fit:contain; }
.prepared-effects-dialog__effect strong { color:#ffe2a4;font:700 .72rem/1.2 Cinzel,serif; }
.prepared-effects-dialog__effect p { margin:.3rem 0 0;color:#d3bea0;font-size:.68rem;line-height:1.42; }
.prepared-effects-dialog__effect>b { align-self:start;padding:.2rem .35rem;border-radius:1rem;color:#fff1bc;background:#713314;font:800 .62rem/1 Cinzel,serif; }
.player-level,
.player-equipment { min-height: 2.75rem; padding: 0 .85rem; border: 1px solid rgba(239,189,94,.72); border-radius: 1.4rem; color: #f7dda0; background: rgba(25,12,7,.82); box-shadow: 0 .3rem 1rem rgba(0,0,0,.45); font: 700 .62rem/1 Cinzel, serif; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; backdrop-filter: blur(8px); white-space: nowrap; }
.player-level[hidden],
.player-equipment[hidden] { display: none; }
.movement-pad[hidden] { display: none; }
.level-up-dialog { width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; padding: 1rem; border: 0; color: #fff0ad; background: rgba(7,3,1,.82); }
.level-up-dialog[open] { display: grid; place-items: center; }
.level-up-dialog::backdrop { background: rgba(4,2,1,.72); backdrop-filter: blur(3px); }
.level-up-dialog__card { position: relative; isolation: isolate; width: min(23rem, 100%); padding: 1.6rem 1.1rem 1.15rem; overflow: hidden; border: 1px solid #ffe17b; border-radius: .55rem; background: radial-gradient(circle at 50% 20%, rgba(255,226,111,.38), transparent 45%), linear-gradient(rgba(71,42,9,.98), rgba(27,14,3,.99)); box-shadow: inset 0 0 2.5rem rgba(255,194,45,.25), 0 0 1.6rem rgba(255,204,66,.55), 0 1rem 3rem rgba(0,0,0,.75); text-align: center; animation: level-up-pulse 1.65s ease-in-out infinite; }
.level-up-dialog__card::before { content: ''; position: absolute; z-index: -1; inset: -70%; background: repeating-conic-gradient(from 0deg, transparent 0 10deg, rgba(255,234,143,.22) 11deg 12deg, transparent 13deg 25deg); animation: discovery-rays 14s linear infinite; }
.level-up-dialog__card > p:first-child { margin: 0; color: #efc65d; font: 700 .6rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.level-up-dialog__card h2 { margin: .65rem 0; color: #fff3a8; font: 900 clamp(1.8rem, 10vw, 3rem)/1 Cinzel, serif; text-transform: uppercase; text-shadow: 0 0 .3rem #fff, 0 0 1rem #ffc83d, 0 0 1.8rem #db7016; }
.level-up-dialog__card #level-up-message { margin: 0 auto 1.15rem; max-width: 18rem; color: #ead7a4; font-size: .76rem; line-height: 1.5; }
.level-up-unlocks { display: grid; gap: .55rem; margin: -.35rem auto 1.15rem; max-width: 19rem; }
.level-up-unlocks[hidden] { display: none; }
.level-up-unlocks section { padding: .55rem .7rem; border: 1px solid rgba(255,225,123,.55); border-radius: .35rem; background: rgba(23,11,2,.58); box-shadow: inset 0 0 1rem rgba(255,196,45,.1); }
.level-up-unlocks h3 { margin: 0 0 .35rem; color: #ffe17b; font: 800 .65rem/1.25 Cinzel, serif; letter-spacing: .05em; text-transform: uppercase; }
.level-up-unlocks ul { margin: 0; padding: 0; list-style: none; color: #fff4c3; font: 800 .82rem/1.4 Cinzel, serif; }
.level-up-dialog__card button { width: 100%; min-height: 3rem; border: 1px solid #ffe17b; border-radius: .3rem; color: #fff4c3; background: linear-gradient(#a66b17, #663b08); font: 800 .7rem/1 Cinzel, serif; letter-spacing: .08em; text-transform: uppercase; }
@keyframes level-up-pulse { 0%, 100% { transform: scale(.97); filter: brightness(.96); box-shadow: inset 0 0 2.5rem rgba(255,194,45,.2), 0 0 1rem rgba(255,204,66,.38), 0 1rem 3rem rgba(0,0,0,.75); } 50% { transform: scale(1.025); filter: brightness(1.16); box-shadow: inset 0 0 3rem rgba(255,213,75,.34), 0 0 2.5rem rgba(255,211,78,.72), 0 1rem 3rem rgba(0,0,0,.75); } }
.hero-death-dialog { width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; padding: 1rem; border: 0; color: #ffd5cb; background: rgba(8,1,1,.84); }
.hero-death-dialog[open] { display: grid; place-items: center; }
.hero-death-dialog::backdrop { background: rgba(5,0,0,.78); backdrop-filter: blur(4px); }
.hero-death-dialog__card { width: min(23rem, 100%); padding: 1.35rem 1.1rem 1.1rem; border: 1px solid #be493d; border-radius: .45rem; background: radial-gradient(circle at 50% 15%, rgba(180,45,35,.28), transparent 45%), linear-gradient(#45130f, #1d0706); box-shadow: inset 0 0 0 3px #2b0907, 0 0 2rem rgba(191,48,38,.38), 0 1rem 3rem rgba(0,0,0,.78); text-align: center; animation: death-arrival .85s ease-out both; }
.hero-death-dialog__card img { width: min(6.5rem, 28vw); height: 7rem; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 .55rem .45rem rgba(0,0,0,.72)); }
.hero-death-dialog__card > p:first-of-type { margin: .25rem 0 .45rem; color: #df7769; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.hero-death-dialog__card h2 { margin: 0; color: #ffd0c5; font: 800 clamp(1.2rem, 7vw, 1.8rem)/1.15 Cinzel, serif; text-transform: uppercase; text-shadow: 0 0 .8rem rgba(255,82,65,.55); }
.hero-death-dialog__card #hero-death-message { margin: .8rem auto 1rem; max-width: 19rem; color: #d9aaa2; font-size: .74rem; line-height: 1.5; }
.hero-death-dialog__card button { width: 100%; min-height: 3rem; border: 1px solid #d66b5c; border-radius: .3rem; color: #ffe0d8; background: linear-gradient(#8c3028, #521712); font: 800 .68rem/1 Cinzel, serif; text-transform: uppercase; }
@keyframes death-arrival { from { opacity: 0; transform: scale(.82); filter: brightness(1.7); } to { opacity: 1; transform: scale(1); filter: none; } }
.discovered-dungeons { width: min(28rem, calc(100% - 1.5rem)); max-height: calc(100dvh - 1.5rem); margin: auto; padding: 0; overflow: visible; border: 0; color: #f5dfad; background: transparent; }
.dungeon-exhausted { width: min(25rem, calc(100% - 1.5rem)); margin: auto; padding: 0; border: 0; color: #f4dfb7; background: transparent; }
.dungeon-exhausted::backdrop { background: rgba(5,3,2,.9); backdrop-filter: blur(3px); }
.dungeon-exhausted__card { padding: 1.45rem 1.1rem 1.1rem; border: 1px solid #a87339; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(153,91,34,.28), transparent 46%), linear-gradient(#331d10, #130a06); box-shadow: inset 0 0 0 3px #2d180c, 0 1.5rem 5rem #000; text-align: center; }
.dungeon-exhausted__card > p:first-child { margin: 0 0 .45rem; color: #cf9453; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .15em; text-transform: uppercase; }
.dungeon-exhausted h2 { margin: 0; color: #ffe5ac; font: 800 1.45rem/1.15 Cinzel, serif; text-transform: uppercase; }
.dungeon-exhausted #dungeon-exhausted-message { margin: .9rem auto 1.1rem; max-width: 20rem; color: #dbc7a4; font-size: .78rem; line-height: 1.55; }
.dungeon-exhausted button { width: 100%; min-height: 3.1rem; padding: .55rem; border: 1px solid #bd7b38; border-radius: .3rem; color: #fff0ce; background: linear-gradient(#8b4c24, #54260f); font: 800 .68rem/1.3 Cinzel, serif; text-transform: uppercase; }
.discovered-dungeons::backdrop { background: rgba(5,3,2,.9); }
.discovered-dungeons__card { position: relative; max-height: calc(100dvh - 1.5rem); overflow: auto; padding: 1.5rem 1rem 1.1rem; border: 1px solid #a97439; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(126,73,27,.25), transparent 42%), linear-gradient(#29180d, #100805); box-shadow: inset 0 0 0 3px #2d190d, 0 1.5rem 5rem #000; text-align: center; }
.discovered-dungeons__close { position: absolute; top: .4rem; right: .5rem; width: 2.5rem; height: 2.5rem; border: 0; color: #dfbd7c; background: transparent; font-size: 1.7rem; cursor: pointer; }
.discovered-dungeons__card > p:first-of-type { margin: 0 0 .35rem; color: #bd8547; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .14em; text-transform: uppercase; }
.discovered-dungeons h2 { margin: 0 0 1rem; color: #ffe3a3; font: 700 1.3rem/1.15 Cinzel, serif; text-transform: uppercase; }
.discovered-dungeons__list { display: grid; gap: .55rem; text-align: left; }
.discovered-dungeons__item { display: grid; grid-template-columns: 1fr auto; gap: .4rem; }
.discovered-dungeons__list button { padding: .75rem; border: 1px solid #8f6639; border-radius: .28rem; color: #f1d9a5; background: rgba(25,14,8,.82); text-align: left; cursor: pointer; }
.discovered-dungeons__list button:active { border-color: #e2aa58; background: rgba(86,43,18,.9); }
.discovered-dungeons__list button:disabled { cursor: default; opacity: .72; }
.discovered-dungeons__open { width: 100%; }
.discovered-dungeons__unlock { width: 8.4rem; min-height: 3.4rem; padding: .55rem !important; border-color: #70cbe5 !important; color: #effcff !important; background: linear-gradient(#247b98, #123f59) !important; box-shadow: inset 0 0 0 2px rgba(7,35,49,.78), 0 .3rem .8rem rgba(21,131,171,.25); font: 800 .62rem/1.3 Cinzel, serif; text-align: center !important; }
.discovered-dungeons__list strong, .discovered-dungeons__list span { display: block; }
.discovered-dungeons__list strong { font: 700 .75rem/1.25 Cinzel, serif; }
.discovered-dungeons__list span { margin-top: .32rem; color: #ad9b7b; font-size: .59rem; text-transform: capitalize; }
.discovered-dungeons__list .discovered-dungeons__completion { margin-top:.45rem; }
.discovered-dungeons__list small { display: block; margin-top: .42rem; color: #d5aa65; font-size: .55rem; }
.discovered-dungeons__status { min-height: 1.2rem; margin: .85rem 0 0; color: #b9a381; font-size: .65rem; }
.hero-sheet { width: min(27rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); margin: auto; padding: 0; overflow: visible; border: 0; color: #f6e3b5; background: transparent; }
.hero-sheet::backdrop { background: rgba(5,3,2,.78); backdrop-filter: blur(5px); }
.hero-sheet__card { position: relative; max-height: calc(100dvh - 2rem); overflow: auto; padding: 1.5rem; border: 1px solid #b37836; border-radius: .45rem; background: linear-gradient(rgba(40,21,12,.98), rgba(18,9,5,.99)); box-shadow: inset 0 0 0 3px #2b160c, 0 1.5rem 5rem #000; text-align: center; }
/* Niveau: one native vertical scroller, including gestures starting on a
   hero card or a meter. Keep equipment's interactive panels independent. */
#hero-sheet > .hero-sheet__card {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y pinch-zoom;
}
#hero-sheet .hero-sheet__troop-member,
#hero-sheet .hero-sheet__troop-energies {
  overflow: visible;
  touch-action: pan-y pinch-zoom;
}
/* Clip the decorative fill without creating an inner scroll container. */
#hero-sheet .energy-meter { overflow: clip; touch-action: pan-y pinch-zoom; }
.equipment-sheet { width: min(34rem, calc(100% - 1rem)); }
.equipment-sheet .hero-sheet__card { padding: 1rem; text-align: left; }
.equipment-sheet h2 { margin-bottom: .8rem; text-align: left; }
.hero-sheet__close { position: absolute; top: .5rem; right: .6rem; width: 2.5rem; height: 2.5rem; border: 0; color: #e0bd7d; background: transparent; font-size: 1.7rem; cursor: pointer; }
.hero-sheet__level { margin: .55rem 0 .35rem; color: #c98d49; font: 700 .62rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.hero-sheet__season { margin: 0 0 .75rem; color: #e2bd73; font: 700 .56rem/1.25 Cinzel, serif; letter-spacing: .08em; text-transform: uppercase; }
.hero-sheet h2 { margin: 0; padding: 0 2rem; overflow-wrap: anywhere; color: #ffe8a9; font: 700 clamp(1.65rem, 8vw, 2.2rem)/1.08 Cinzel, serif; text-transform: none; }
.hero-sheet__hero { margin: 0; color: #e8c77f; font: 700 .82rem/1.1 Cinzel, serif; letter-spacing: .1em; text-transform: uppercase; }
.hero-sheet__motto { margin: .35rem 0 1rem; color: #cdb58a; font-size: .56rem; letter-spacing: .09em; text-transform: uppercase; }
.hero-sheet__player-stats { margin-bottom: .35rem; }
.hero-sheet__identity { margin: .9rem 0 .65rem; padding-top: .85rem; border-top: 1px solid rgba(187,135,67,.4); text-align: center; }
.hero-sheet__stats { display: grid; grid-template-columns: 1fr; gap: .4rem; margin: 0 0 1rem; }
.hero-sheet__attributes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; margin-bottom:.35rem; }
.hero-sheet__stats > .hero-sheet__attributes { padding:0; border:0; background:transparent; }
.hero-sheet__attributes > .hero-sheet__attribute { display:grid; grid-template-columns:1fr auto; align-items:center; gap:.35rem; min-width:0; padding:.5rem .6rem; border:1px solid var(--stat-color,#8d6334); border-radius:.25rem; background:rgba(15,8,5,.7); }
.hero-sheet__stats > div { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: .4rem .75rem; padding: .55rem .7rem; border: 1px solid var(--stat-color, #8d6334); border-radius: .25rem; background: rgba(15,8,5,.7); }
.hero-sheet__stats dt { justify-self: start; color: #cdbb98; font: 700 .5rem/1 Cinzel, serif; text-align: left; text-transform: uppercase; }
.hero-sheet__stats dd { margin: 0; color: var(--stat-color, #f0c56d); font: 800 1rem/1 Inter, sans-serif; }
.hero-sheet__stats dd.is-overcharged .energy-current { color: #ffe87b; text-shadow: 0 0 .2rem #fff8c4, 0 0 .55rem #ffd43b, 0 0 1rem #e99811; animation: energy-overcharge-glow 1.15s ease-in-out infinite alternate; }
.hero-sheet__stats dd.is-overcharged .energy-maximum { color: #c7ad79; }
@keyframes energy-overcharge-glow { from { filter: brightness(1); } to { filter: brightness(1.45); text-shadow: 0 0 .3rem #fff, 0 0 .8rem #ffe04d, 0 0 1.25rem #f29d13; } }
.energy-meter { grid-column: 1 / -1; height: .48rem; overflow: hidden; border: 1px solid color-mix(in srgb, var(--stat-color, #8d6334) 65%, #211007); border-radius: 1rem; background: rgba(0,0,0,.55); box-shadow: inset 0 1px .2rem rgba(0,0,0,.7); }
.energy-meter span { display: block; width: var(--energy-percent, 100%); height: 100%; border-radius: inherit; background: linear-gradient(90deg, color-mix(in srgb, var(--stat-color) 72%, #39170b), var(--stat-color)); box-shadow: 0 0 .55rem var(--stat-color); transition: width .3s ease; }
.experience-stat__cost { grid-column: 1 / -1; justify-self: start; color: #bda77e; font-size: .56rem; line-height: 1.3; text-align: left; }
.hero-sheet section { padding: .7rem; border-top: 1px solid rgba(187,135,67,.4); text-align: left; }
.hero-sheet section h3 { margin: 0 0 .35rem; color: #dca85c; font: 700 .62rem/1 Cinzel, serif; letter-spacing: .08em; text-transform: uppercase; }
.hero-sheet section p { margin: 0; color: #ead8b2; font-size: .72rem; line-height: 1.5; }
.inventory-group h3 { display: flex; align-items: center; justify-content: space-between; }
.inventory-slots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .4rem; }
.inventory-slots--equipment { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.inventory-slot { display: grid; place-items: center; min-width: 0; min-height: 3.15rem; padding: .3rem; overflow: hidden; border: 1px solid #76512c; border-radius: .28rem; background: rgba(10,6,4,.72); color: #ead8b2; font: 600 .55rem/1.2 Inter, sans-serif; text-align: center; overflow-wrap: anywhere; }
.inventory-slot.is-filled { border-color: #bd8240; background: radial-gradient(circle at 50% 20%, rgba(191,128,56,.22), transparent 70%), rgba(17,9,5,.82); box-shadow: inset 0 0 .55rem rgba(208,145,70,.12); }
.inventory-slot.is-empty { color: rgba(202,163,104,.32); font: 300 1.35rem/1 Inter, sans-serif; }
.hero-currency__row { display: flex; align-items: center; gap: .7rem; }
.hero-currency__row p { flex: 1; }
.hero-currency__balance { display: flex; align-items: center; justify-content: space-between; gap: .75rem; color: #ffbd63; font-family: Cinzel, serif; text-transform: uppercase; }
.hero-currency__amount { display: flex; flex-direction: column; align-items: flex-start; gap: .12rem; }
#hero-lys { color: #ffe09a; font: 800 clamp(1.8rem, 8vw, 2.35rem)/.9 Cinzel, serif; text-shadow: 0 .12rem #5c2c13, 0 0 .7rem rgba(255,189,99,.28); }
#hero-lys-label { color: #d7b878; font: 700 .58rem/1.1 Cinzel, serif; letter-spacing: .09em; }
.buy-lys-button { display: inline-grid; place-items: center; flex: 0 0 auto; width: 2rem; height: 2rem; padding: 0 0 .08rem; border: 1px solid #9dcfff; border-radius: 50%; color: #eaf7ff; background: #255783; box-shadow: inset 0 0 0 2px #102d49; font: 800 1.3rem/1 Inter, sans-serif; cursor: pointer; }
.hero-currency__row small { display: block; margin-top: .25rem; color: #baa98a; font-size: .62rem; line-height: 1.4; }
.lys-icon { position: relative; flex: 0 0 4rem; width: 4rem; height: 3.8rem; overflow: hidden; border: 1px solid rgba(132,201,255,.58); border-radius: 50%; background: transparent; box-shadow: inset 0 0 1rem rgba(76,177,255,.18), 0 0 .8rem rgba(74,158,226,.2); }
.lys-icon img { position: absolute; inset: 8%; width: 84%; height: 84%; object-fit: contain; }
.lys-store { width: min(30rem, calc(100% - 1.5rem)); max-height: calc(100dvh - 1.5rem); margin: auto; padding: 0; overflow: visible; border: 0; color: #e5f4ff; background: transparent; }
.lys-store::backdrop { background: rgba(3,7,12,.86); backdrop-filter: blur(6px); }
.lys-store__card { position: relative; max-height: calc(100dvh - 1.5rem); overflow: auto; padding: 1.5rem 1rem 1.2rem; border: 1px solid #477da9; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(43,101,151,.32), transparent 38%), linear-gradient(#14283b, #080f17); box-shadow: inset 0 0 0 3px #102337, 0 1.5rem 5rem #000; text-align: center; }
.lys-store__close { position: absolute; top: .45rem; right: .55rem; width: 2.5rem; height: 2.5rem; border: 0; color: #b9dfff; background: transparent; font-size: 1.7rem; cursor: pointer; }
.lys-store__card > p:first-of-type, .lys-store__card > span { display: block; margin: 0 0 .35rem; color: #7fb7e5; font: 700 .58rem/1 Cinzel, serif; letter-spacing: .14em; text-transform: uppercase; }
.lys-store h2 { display:grid;place-items:center;min-height:2.8rem;margin: 0 0 .35rem;padding-inline:2.9rem;color: #e8f7ff; font: 700 1.35rem/1.15 Cinzel, serif; text-transform: uppercase; }
.lys-packs { display: grid; grid-template-columns: 1fr; gap: .65rem; margin-top: 1.1rem; }
.lys-pack { display: grid; grid-template-columns: 5.2rem 1fr; grid-template-rows: auto auto; align-items: center; gap: .22rem .75rem; min-width: 0; padding: .55rem .75rem; border: 1px solid #477da9; border-radius: .35rem; color: #dcefff; background: rgba(8,20,31,.82); box-shadow: inset 0 0 1.2rem rgba(67,167,239,.1); text-align: left; cursor: pointer; }
.lys-pack:active { scale: .98; }
.lys-pack:disabled { opacity: .48; filter: grayscale(.45); cursor: not-allowed; }
.lys-pack--intro { border-color:#8ed8ff;background:linear-gradient(135deg,rgba(28,104,157,.96),rgba(8,35,66,.96));box-shadow:0 0 1rem rgba(91,192,255,.42),inset 0 0 1.2rem rgba(173,226,255,.18); }
.lys-pack--intro[hidden] { display:none!important; }
.lys-pack strong { align-self: end; font: 800 clamp(.92rem, 4.4vw, 1.15rem)/1.15 Cinzel, serif; text-transform: uppercase; }
.lys-pack > small { align-self: start; color: #9dcfff; font: 700 clamp(.8rem, 3.8vw, 1rem)/1.25 Inter, sans-serif; }
.lys-pack__image { position: relative; display: block; grid-row: 1 / 3; width: 5.2rem; height: 5rem; overflow: hidden; border-radius: .3rem; background: transparent; }
.lys-pack__image img { width: 100%; height: 100%; object-fit: contain; }
.lys-store__status { min-height: 2rem; margin: .9rem 0 0; color: #b9dfff; font-size: .8rem; font-weight: 600; line-height: 1.4; }

.sound-toggle {
  position: fixed;
  z-index: 5;
  top: max(1rem, env(safe-area-inset-top));
  right: max(1rem, env(safe-area-inset-right));
  display: none;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid rgba(239, 189, 94, .65);
  border-radius: 50%;
  color: #f5d991;
  background: rgba(25, 12, 7, .72);
  box-shadow: 0 .3rem 1rem rgba(0,0,0,.45);
  cursor: pointer;
  backdrop-filter: blur(8px);
}
.sound-toggle.is-visible { display: grid; }
.sound-toggle__off { display: none; position: absolute; font-size: 1.35rem; color: #e6a762; }
.sound-toggle__off::after { content: ""; position: absolute; left: 50%; top: 50%; width: 1.55rem; height: 2px; border-radius: 2px; background: currentColor; box-shadow: 0 0 2px #1a0b06; transform: translate(-50%, -50%) rotate(-48deg); }
.sound-toggle.is-muted .sound-toggle__on { opacity: 0; }
.sound-toggle.is-muted .sound-toggle__off { display: block; }
.language-toggle {
  position: fixed;
  z-index: 5;
  top: max(1rem, env(safe-area-inset-top));
  right: max(1rem, env(safe-area-inset-right));
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid rgba(239, 189, 94, .65);
  border-radius: 50%;
  color: #f5d991;
  background: rgba(25, 12, 7, .72);
  box-shadow: 0 .3rem 1rem rgba(0,0,0,.45);
  font: 700 .68rem/1 Cinzel, serif;
  letter-spacing: .04em;
  text-transform: lowercase;
  cursor: pointer;
  backdrop-filter: blur(8px);
}
.language-toggle.is-visible { display: grid; }
.sound-toggle.is-visible + .language-toggle { right: max(3.85rem, calc(env(safe-area-inset-right) + 2.85rem)); }
.mission-toggle { position:fixed;z-index:5;top:max(1rem,env(safe-area-inset-top));right:max(6.7rem,calc(env(safe-area-inset-right) + 5.7rem));display:none;place-items:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid rgba(239,189,94,.65);border-radius:50%;color:#f5d991;background:rgba(25,12,7,.72);box-shadow:0 .3rem 1rem rgba(0,0,0,.45);font:800 .9rem/1 Cinzel,serif;backdrop-filter:blur(8px); }
.mission-toggle.is-visible { display:grid; }
body:has(#tavern-screen:not([hidden])) .mission-toggle { display:none; }
.bug-toggle { position:fixed;z-index:5;top:max(1rem,env(safe-area-inset-top));right:max(9.55rem,calc(env(safe-area-inset-right) + 8.55rem));display:none;place-items:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid rgba(239,189,94,.65);border-radius:50%;color:#f5d991;background:rgba(25,12,7,.72);box-shadow:0 .3rem 1rem rgba(0,0,0,.45);font-size:1rem;cursor:pointer;backdrop-filter:blur(8px); }
.bug-toggle.is-visible { display:grid; }
.sound-toggle,.language-toggle { width:2.5rem;height:2.5rem; }
@media (max-width:430px) {
  /* Conserver toutes les commandes dans la barre supérieure. Les quatre
     boutons ronds utilisent un pas compact, tandis que les commandes du
     joueur sont bornées à l'espace réellement disponible à gauche. */
  .sound-toggle,
  .language-toggle,
  .mission-toggle,
  .bug-toggle { top:max(.65rem,env(safe-area-inset-top));width:2.15rem;height:2.15rem; }
  .sound-toggle { right:max(.5rem,env(safe-area-inset-right)); }
  .sound-toggle.is-visible + .language-toggle,
  .language-toggle { right:max(2.9rem,calc(env(safe-area-inset-right) + 2.4rem)); }
  .mission-toggle { right:max(5.3rem,calc(env(safe-area-inset-right) + 4.8rem)); }
  .bug-toggle { right:max(7.7rem,calc(env(safe-area-inset-right) + 7.2rem)); }
  .player-status-controls { top:max(.65rem,env(safe-area-inset-top));gap:.2rem;max-width:calc(100vw - 10.5rem); }
  .player-status-controls__main { gap:.25rem; }
  .prepared-effect { width:1.55rem;height:1.55rem; }
  .player-level,
  .player-equipment { min-width:0;min-height:2.15rem;padding-inline:.5rem;overflow:hidden;font-size:.5rem;letter-spacing:.025em;text-overflow:ellipsis; }
}
.bug-report { width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:1rem;border:0;color:#f8e4bd;background:rgba(7,3,1,.82); }
.bug-report[open] { display:grid;place-items:center; }
.bug-report::backdrop { background:rgba(4,2,1,.7);backdrop-filter:blur(3px); }
.bug-report__card { position:relative;width:min(25rem,100%);padding:1.35rem 1rem 1rem;border:1px solid #a87339;border-radius:.5rem;background:linear-gradient(#321c10,#150a05);box-shadow:inset 0 0 0 3px #2c160b,0 1.5rem 5rem #000; }
.bug-report__close { position:absolute;top:.55rem;right:.55rem;width:2.2rem;height:2.2rem;padding:0;border:1px solid #8f6234;border-radius:50%;color:#f4d498;background:#251207;font:700 1.2rem/1 serif; }
.bug-report__card>p:first-child { margin:0 2.5rem .35rem 0;color:#d09954;font:700 .56rem/1 Cinzel,serif;letter-spacing:.14em;text-transform:uppercase; }
.bug-report h2 { margin:0 2.5rem 1rem 0;color:#ffe8b3;font:700 1.15rem/1.25 Cinzel,serif;text-transform:uppercase; }
.bug-report label { display:block;margin:0 0 .45rem;color:#f0d7aa;font-size:.75rem;font-weight:700; }
.bug-report textarea { width:100%;min-height:6rem;resize:vertical;padding:.75rem;border:1px solid #76512f;border-radius:.3rem;color:#fff4df;background:#0e0704;font:600 16px/1.45 Inter,sans-serif; }
.bug-report__privacy { margin:.7rem 0;color:#bca987;font-size:.64rem;line-height:1.45; }
.bug-report__status { min-height:1.25rem;margin:.35rem 0;color:#efb86f;font-size:.68rem; }
.bug-report__submit { width:100%;min-height:3rem;border:1px solid #c08443;border-radius:.3rem;color:#fff0ce;background:linear-gradient(#8b4c24,#54260f);font:800 .68rem/1 Cinzel,serif;text-transform:uppercase; }
.bug-report__submit:disabled { opacity:.5;cursor:wait; }

.auth-dialog {
  position: fixed;
  top: calc(var(--auth-viewport-top, 0px) + .5rem);
  right: 0;
  bottom: auto;
  left: 0;
  width: min(29rem, calc(100% - 2rem));
  max-height: calc(var(--auth-viewport-height, 100dvh) - 1rem);
  margin: 0 auto;
  padding: 0;
  overflow: visible;
  border: 0;
  color: #f9e8bf;
  background: transparent;
}
.auth-dialog::backdrop { background: rgba(5, 3, 2, .78); backdrop-filter: blur(5px); animation: veil-in .25s ease-out; }
.auth-dialog[open] { animation: card-in .35s cubic-bezier(.2,.8,.2,1); }
.auth-card {
  position: relative;
  max-height: calc(var(--auth-viewport-height, 100dvh) - 1rem);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-color: #b37836 #1b0d07;
  scrollbar-gutter: stable;
  padding: 2.5rem clamp(1.25rem, 6vw, 2.2rem) 1.8rem;
  border: 1px solid #b37836;
  border-radius: .45rem;
  background:
    linear-gradient(rgba(35, 18, 10, .96), rgba(20, 10, 6, .98)),
    repeating-linear-gradient(90deg, transparent 0 2rem, rgba(255,255,255,.02) 2.1rem);
  box-shadow: inset 0 0 0 3px #2b160c, inset 0 0 3rem rgba(199, 111, 26, .12), 0 1.5rem 5rem #000;
}
.auth-card::-webkit-scrollbar { width: .55rem; }
.auth-card::-webkit-scrollbar-track { background: #1b0d07; }
.auth-card::-webkit-scrollbar-thumb { border: 1px solid #dda85a; border-radius: 1rem; background: #7f421f; }
.auth-card::before, .auth-card::after { content: "◆"; position: absolute; color: #b37836; top: .7rem; font-size: .6rem; }
.auth-card::before { display: none; }
.auth-card::after { right: .8rem; }
.auth-close { position: absolute; z-index: 1; top: .55rem; right: .7rem; width: 2.35rem; height: 2.35rem; border: 0; color: #cda96d; background: transparent; font-size: 1.65rem; cursor: pointer; }
.auth-seal { position: absolute; z-index: 1; left: .75rem; top: .55rem; translate: 0; display: grid; place-items: center; width: 2.55rem; height: 2.55rem; rotate: 45deg; border: 2px solid #e1ae52; color: #ffd988; background: #713416; box-shadow: inset 0 0 0 3px #32160d, 0 .4rem 1rem #000; }
.auth-seal::first-letter { rotate: -45deg; }
.auth-step { text-align: center; }
.auth-step[hidden] { display: none; }
.auth-character { display: flex; align-items: center; justify-content: center; min-height: 9.6rem; margin: -.8rem 0 .35rem; }
.auth-character img { width: 7.4rem; height: 9.6rem; object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 .55rem .4rem rgba(0,0,0,.55)); }
.auth-character p { position: relative; align-self: flex-start; margin: .75rem 0 0 -.3rem; border: 1px solid #8e693c; border-radius: .5rem; padding: .65rem .75rem; color: #442312; background: #f3dfad; box-shadow: inset 0 0 0 2px rgba(91,51,25,.15), 0 .3rem .7rem rgba(0,0,0,.35); font: 700 .67rem/1.35 Cinzel, serif; text-align: left; }
.auth-character p::before { content: ""; position: absolute; left: -.48rem; bottom: .65rem; width: .75rem; height: .75rem; border-left: 1px solid #8e693c; border-bottom: 1px solid #8e693c; background: #f3dfad; transform: rotate(45deg); }
.auth-kicker { margin: 0 0 .35rem; color: #c98d49; font: 700 .65rem/1 Cinzel, serif; letter-spacing: .2em; text-transform: uppercase; }
.auth-step h2 { margin: 0; color: #f5d991; font: 700 clamp(1.55rem, 7vw, 2rem)/1.1 Cinzel, serif; text-shadow: 0 2px #3b190d; }
.auth-copy { margin: .85rem auto 1.25rem; color: #cdbb98; font-size: .88rem; line-height: 1.55; }
.auth-copy strong { color: #f2d18b; overflow-wrap: anywhere; }
.auth-step label { display: block; margin: 0 0 .45rem; text-align: left; color: #e6c98f; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.auth-step input { width: 100%; height: 3.5rem; border: 1px solid #73502d; border-radius: .25rem; padding: 0 .9rem; color: #fff4d4; background: rgba(8, 5, 3, .7); outline: none; box-shadow: inset 0 2px .5rem rgba(0,0,0,.45); }
.auth-step input:focus { border-color: #e4ae55; box-shadow: 0 0 0 3px rgba(228,174,85,.15), inset 0 2px .5rem rgba(0,0,0,.45); }
.auth-step input::placeholder { color: rgba(230, 201, 143, .35); }
.auth-step .code-input { text-align: center; font-size: 1.4rem; letter-spacing: .35em; font-variant-numeric: tabular-nums; }
.auth-error { min-height: 1.25rem; margin: .45rem 0; color: #ee9b7e; font-size: .75rem; }
.auth-submit { width: 100%; min-height: 3.35rem; border: 1px solid #e8b45a; border-radius: .25rem; color: #fff0c5; background: linear-gradient(#985027, #61280f); box-shadow: inset 0 0 0 2px #35160b, 0 .4rem 1rem rgba(0,0,0,.35); font: 700 .85rem/1 Cinzel, serif; letter-spacing: .055em; text-transform: uppercase; cursor: pointer; }
.auth-submit:hover { filter: brightness(1.12); }
.auth-submit:disabled { opacity: .6; cursor: wait; }
.auth-links { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1rem; }
.auth-links button { border: 0; padding: .25rem 0; color: #c99b5b; background: transparent; font-size: .72rem; text-decoration: underline; cursor: pointer; }

.dialog-controls { display: flex; justify-content: center; gap: .4rem; margin: -.55rem 2.5rem .75rem; }
.dialog-controls button { position: relative; display: grid; place-items: center; width: 2.35rem; height: 2.35rem; padding: 0; border: 1px solid rgba(224,172,83,.5); border-radius: 50%; color: #cdbb98; background: rgba(12,6,3,.72); font: 700 .62rem/1 Cinzel, serif; text-transform: lowercase; cursor: pointer; }
.dialog-controls button[aria-pressed="true"]:not(.dialog-sound) { border-color: #f0c36a; color: #fff0bd; background: linear-gradient(#8a471f, #54210e); }
.dialog-sound { font-size: 1.1rem !important; }
.dialog-sound.is-muted::after { content: ""; position: absolute; width: 1.25rem; height: 2px; border-radius: 2px; background: #e6a762; transform: rotate(-48deg); }

.name-dialog { width: min(29rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); margin: auto; padding: 0; overflow: visible; border: 0; color: #f4e4bf; background: transparent; }
.name-dialog::backdrop { background: rgba(4,2,1,.88); backdrop-filter: blur(7px); }
.name-dialog__card { max-height: calc(100dvh - 2rem); overflow: auto; padding: 1.5rem 1.15rem 1.2rem; border: 1px solid #bd8741; border-radius: .45rem; background: radial-gradient(circle at 50% 0, rgba(152,87,30,.25), transparent 42%), linear-gradient(#2b170d, #100805); box-shadow: inset 0 0 0 3px #35190d, 0 1.5rem 5rem #000; text-align: center; }
.name-dialog__card > p:first-child { margin: 0 0 .4rem; color: #c98d49; font: 700 .56rem/1 Cinzel, serif; letter-spacing: .16em; text-transform: uppercase; }
.name-dialog h2 { margin: 0; color: #ffe8a9; font: 700 clamp(1.15rem, 5vw, 1.5rem)/1.15 Cinzel, serif; text-transform: uppercase; }
#name-copy { margin: .65rem 0 1rem; color: #cdbb98; font-size: .72rem; line-height: 1.45; }
.name-suggestions { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.name-suggestions button { min-height: 2.8rem; padding: .45rem; border: 1px solid #87613a; border-radius: .25rem; color: #f0d8a4; background: rgba(29,14,8,.9); font: 700 .72rem/1.2 Cinzel, serif; cursor: pointer; }
.name-suggestions button[aria-pressed="true"] { border-color: #efbd5e; color: #fff3cb; background: linear-gradient(#985027, #61280f); box-shadow: inset 0 0 0 2px #35160b; }
.name-dialog__status { min-height: 1.2rem; margin: .7rem 0; color: #c99b5b; font-size: .67rem; }
.name-dialog form { text-align: left; }
.name-dialog label { display: block; margin-bottom: .35rem; color: #d8bd85; font: 700 .62rem/1 Cinzel, serif; text-transform: uppercase; }
.name-dialog input { width: 100%; height: 3.35rem; border: 1px solid #73502d; border-radius: .25rem; padding: 0 .85rem; color: #fff4d4; background: rgba(8,5,3,.75); font-size: 1rem; outline: none; }
.name-dialog input:focus { border-color: #e4ae55; box-shadow: 0 0 0 3px rgba(228,174,85,.15); }
#name-limit { display: block; margin-top: .3rem; color: #9f8b6c; font-size: .6rem; }

.splash.is-entering { animation: fade-out .65s ease-in forwards; pointer-events: none; }

@keyframes awaken { from { scale: 1.1; filter: brightness(.6); } to { scale: 1.02; filter: none; } }
@keyframes title-in { from { opacity: 0; translate: 0 -1.2rem; } to { opacity: 1; translate: 0; } }
@keyframes actions-in { from { opacity: 0; translate: 0 1.5rem; } to { opacity: 1; translate: 0; } }
@keyframes glint { 0%, 68% { translate: -500% 0; } 88%, 100% { translate: 500% 0; } }
@keyframes breathe { 50% { opacity: .45; } }
@keyframes fade-out { to { opacity: 0; scale: 1.035; filter: brightness(1.5); } }
/* Ne pas conserver un filtre neutre après le fondu : les paysages à z-index
   négatif n'ont pas besoin d'une surface filtrée permanente (notamment Safari). */
@keyframes location-in { from { opacity: 0; filter: brightness(1.5); } to { opacity: 1; filter: none; } }
@keyframes location-out { from { opacity: 1; } to { opacity: 0; scale: 1.025; filter: brightness(1.35); } }
@keyframes reward-reveal { 0% { opacity: 0; scale: .82; } 70% { opacity: 1; scale: 1.04; } 100% { opacity: 1; scale: 1; } }
@keyframes reward-gain { 0% { opacity: 0; translate: 0 .8rem; } 35%, 100% { opacity: 1; translate: 0 0; } }
@keyframes zone-target { 50% { filter: brightness(1.25); } }
@keyframes veil-in { from { opacity: 0; } }
@keyframes card-in { from { opacity: 0; translate: 0 1rem; scale: .97; } }
@keyframes dungeon-walk-bob { to { translate: -50% .18rem; } }

/* Readability floor for meaningful game text. Decorative glyphs keep their original size. */
.version,
.location-banner p,
.location-banner span,
.location-arrival,
.travel-zone span,
.shop-exit-zone span,
.church-exit-zone span,
.apothecary-exit-zone span,
.gate-zone span,
.road-zone span { font-size: .7rem; }

.dungeon-movement-capacity,
.dungeon-retreat,
.dungeon-route__paths button,
.dungeon-route__actions button,
.dungeon-route__continue,
.dungeon-choice button { font-size: .72rem; }
.dungeon-elements button > strong { font-size: .68rem; }
.dungeon-element-detail p,
.dungeon-element-detail dl > div,
#dungeon-route-target,
#dungeon-route-costs > div,
.dungeon-route__encounters p,
.dungeon-route__status,
#dungeon-route-rewards > span,
.dungeon-rewards > li,
#dungeon-route-rewards .dungeon-route__roll-summary,
.dungeon-choice > span,
.dungeon-choice > small,
.dungeon-boss-preview figcaption { font-size: .72rem; }

.hero-lock,
.hero-confirm small,
.hero-count,
.new-game-button,
.about-button,
.logout-button { font-size: .7rem; }
.hero-stats dt { font-size: clamp(.7rem, 2.4vw, .8rem); }

.hero-sheet__level,
.hero-sheet__season,
.hero-sheet__motto,
.hero-sheet__stats dt,
.experience-stat__cost,
.hero-sheet section h3,
.inventory-slot,
#hero-lys-label,
.hero-currency__row small { font-size: .72rem; }

.encounter-draw > p:first-of-type,
.encounter-choice > p:first-of-type,
.legendary-reward > p:first-child,
.neutral-interaction > p:first-child,
.monster-encounter > p:first-child,
.dice-dialog__card > p:first-of-type,
.d20-roll__caption,
.neutral-interaction__stake,
.neutral-interaction__stake small,
.monster-encounter__energies span,
.monster-encounter #monster-encounter-note { font-size: .7rem; }
.fortune-wheel__legend span { font-size: clamp(.68rem, 2.2vw, .74rem); }
.encounter-draw__spin,
.encounter-draw__actions button,
.encounter-choice button:not(.encounter-choice__close),
.legendary-reward button,
.neutral-interaction button,
.monster-encounter button { font-size: .72rem; }

.photo-hint,
.dungeon-progress,
.barcode-result span,
.barcode-result small,
.discovery-choice h3,
.discovery-choice > span,
.discovery-choice button,
.scan-refund > p,
.scan-refund button,
.dungeon-choice > p,
.discovered-dungeons-button { font-size: .7rem; }

.road-lock-dialog p:first-child,
.about-dialog__card > p:first-of-type,
.scan-consent__card > p:first-child,
.scan-consent__card > small,
.scan-consent button,
.hero-purchase-confirm__card > p:first-child,
.hero-purchase-confirm button,
.reset-confirm__card > p:first-child,
.reset-confirm label,
.reset-confirm__status,
.reset-confirm button,
.logout-confirm__card > p:first-child,
.logout-confirm__status,
.logout-confirm button,
.level-up-dialog__card > p:first-child,
.hero-death-dialog__card > p:first-of-type,
.discovered-dungeons__card > p:first-of-type,
.discovered-dungeons__unlock,
.discovered-dungeons__list span,
.discovered-dungeons__list small,
.discovered-dungeons__status,
.lys-store__card > p:first-of-type,
.lys-store__card > span,
.auth-kicker,
.auth-character p,
.dialog-controls button,
.name-dialog__card > p:first-child,
.name-dialog__status,
.name-dialog label,
#name-limit { font-size: .7rem; }

@media (min-width: 760px) and (orientation: landscape) {
  .splash { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; align-items: center; padding-inline: 7vw; }
  .brand { margin: 0; width: min(35rem, 46vw); }
  .actions { align-self: center; margin: 11rem auto 0; width: min(25rem, 36vw); }
  .splash__backdrop { background-position: center 57%; }
  .splash__shade { background: linear-gradient(90deg, rgba(5,3,2,.72), transparent 47%, rgba(5,3,2,.63)); }
}

@media (min-width: 700px) and (max-width: 1100px) and (orientation: portrait) {
  .tavern-screen .hero-select { padding-top: max(5rem, calc(env(safe-area-inset-top) + 4.25rem)); }
  .public-hero, .shop-hero, .gate-hero, .church-hero, .guard-hero, .bestiary-hero, .apothecary-hero, .road-hero { width: min(14rem, 29vw); }
  .public-hero.is-warrior, .shop-hero.is-warrior, .gate-hero.is-warrior, .church-hero.is-warrior, .guard-hero.is-warrior, .bestiary-hero.is-warrior, .apothecary-hero.is-warrior, .road-hero.is-warrior { width: min(16.5rem, 34vw); }
}

@media (max-width: 699px) {
  .tavern-screen .hero-select { padding-top: max(5rem, calc(env(safe-area-inset-top) + 4.25rem)); }
  .location-banner { top: max(4.6rem, calc(env(safe-area-inset-top) + 4rem)); }
  .encounter-draw { margin-top: max(8rem, calc(env(safe-area-inset-top) + 7.4rem)); }
  .barcode-capture { margin-top: 10rem; }
}

@media (max-height: 620px) {
  .brand { margin-top: .15rem; }
  .actions { margin-bottom: 1.45rem; }
  h1 { font-size: clamp(2.4rem, 11vw, 4rem); }
  .enter-button { min-height: 3.6rem; }
  .auth-character { min-height: 6.8rem; }
  .auth-character img { width: 5.4rem; height: 6.8rem; }
  .auth-copy { margin-block: .55rem .8rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}

.world-map {
  position: absolute; inset: 0; z-index: 28; overflow: hidden;
  background: #0c0805 url("/assets/paysages/monde.png?media_version=20f0be8ce298b2d34a43e244") center/contain no-repeat;
}
.world-map::before { content: ""; position: absolute; inset: 0; background: rgba(8,5,3,.18); pointer-events: none; }
.world-map__close { position: absolute; z-index: 6; top:max(4.25rem,calc(env(safe-area-inset-top) + 3.25rem));right:max(1rem,env(safe-area-inset-right));display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid rgba(239,189,94,.65);border-radius:50%;color:#f4d7a0;background:rgba(55,29,16,.94);box-shadow:inset 0 0 0 2px #241109,0 .3rem 1rem rgba(0,0,0,.45);font-size:1.45rem; }
.world-map__regions { position: absolute; z-index: 2; inset: 0; }
.world-map__region { position: absolute; padding: .25rem; overflow:hidden; color: #ffe3bd; background: rgba(42,21,9,.86); border: 1px solid #ca8a2d; font-size: clamp(.52rem,2.2vw,.68rem); }
.world-map__region.is-locked { opacity: .62; filter: grayscale(.7); cursor:pointer; }
.world-map__region.is-locked:active { opacity:.82; }
.world-map__side-quest{position:absolute;z-index:3;padding:.2rem;color:#fff1b7;background:rgba(55,25,5,.92);border:2px solid #e0ad3b;box-shadow:0 0 .8rem #f0b629;font-size:clamp(.5rem,2vw,.68rem);animation:legendary-pulse 2.2s ease-in-out infinite}
@keyframes legendary-pulse{0%,100%{filter:brightness(1);transform:scale(1)}50%{filter:brightness(1.3);transform:scale(1.035)}}
.world-map__side-quest.is-complete{animation:none;border-color:#54bd72;box-shadow:0 0 .55rem #24733e}
.world-map__side-quest-dialog{position:absolute;z-index:8;inset:10% 5% 5%;display:flex;flex-direction:column;gap:.7rem;overflow:auto;padding:2.8rem .9rem 1rem;color:#ffe3bd;background:rgba(30,15,8,.97);border:1px solid #c9892c;box-shadow:0 1rem 3rem #000;text-align:center}
.world-map__side-quest-dialog[hidden]{display:none}
.world-map__side-quest-landscape{display:block;width:100%;max-height:55%;object-fit:contain;border:1px solid #9c6a35}
.world-map__side-quest-dialog h3,.world-map__side-quest-dialog p{margin:.1rem 0}
.world-map__side-quest-dialog small{font-size:.72rem;color:#f3ce88}
.world-map__side-quest-close{position:absolute;top:.45rem;right:.45rem;width:2.3rem;min-height:2.3rem;padding:0;border-radius:50%;background:#4b2919;color:#f4d7a0}
.world-map__side-quest-complete:disabled{border-color:#844b3e;background:#55241e;color:#ffd7ce;opacity:1}
.world-map__side-quest-rewards h4{margin:.2rem 0;color:#f3ce88}
.world-map__side-quest-rewards>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}
.world-map__side-quest-reward{display:grid;grid-template-rows:4.4rem auto auto;gap:.3rem;align-items:start;padding:.45rem;background:linear-gradient(#623b20,#301b0e);border:1px solid #c9892c;color:#ffe3bd}
.world-map__side-quest-reward>span{display:flex;align-items:center;justify-content:center;min-width:0;height:4.4rem}
.world-map__side-quest-reward img{display:block;min-width:0;width:auto;max-width:52%;height:100%;object-fit:contain;filter:drop-shadow(0 0 .35rem #e9bb52)}
.world-map__side-quest-reward img[hidden]{display:none}
.world-map__side-quest-reward strong{font-size:.62rem;line-height:1.2;overflow-wrap:anywhere}
.world-map__side-quest-reward small{color:#f1d1a8;font-size:.52rem;line-height:1.25;overflow-wrap:anywhere}
.world-map__panel { position: absolute; z-index: 5; inset: 19% 6% 7%; overflow: auto; padding:2.9rem 1rem 1rem;color:#ffe3bd;background:rgba(30,15,8,.94);border:1px solid #c9892c;box-shadow:0 1rem 3rem #000; }
.world-map__panel h3 { margin: .6rem 0; }.world-map__panel p { font-size: .75rem; }
.world-map__panel > div { display: grid; gap: .55rem; margin: 1rem 0; }
.world-map__panel button { min-height: 2.8rem; }
.world-map__panel h4{margin:1rem 0 .45rem;color:#efc274;font-size:.82rem;text-align:left}
.world-map__dungeon-list{display:grid;gap:.5rem;margin:0!important}
.world-map__dungeon-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.4rem;align-items:stretch}
.world-map__dungeon{display:grid;gap:.22rem;padding:.65rem .75rem;text-align:left;background:#4b2919;border:1px solid #9c6a35;color:#f9dfb4}
.world-map__dungeon strong{font-size:.84rem}.world-map__dungeon span{font-size:.68rem;color:#e6c99b}
.world-map__dungeon .world-map__dungeon-cooldown{display:block;color:#e6b867;font-size:.64rem;line-height:1.35}
.world-map__dungeon-progress{display:grid!important;grid-template-columns:minmax(0,1fr) 2.6rem;gap:.45rem;align-items:center}
.world-map__dungeon-progress>i{display:block;height:.52rem;overflow:hidden;border:1px solid #a8732c;background:#160c07}
.world-map__dungeon-progress>i>b{display:block;height:100%;background:linear-gradient(90deg,#9b4e18,#efb638)}
.world-map__dungeon-progress>small{color:#f1cf91;font-size:.68rem;text-align:right}
.world-map__locked-detail{display:grid;gap:.7rem;padding:.9rem;border:1px solid #765331;background:rgba(25,13,8,.72);text-align:left}
.world-map__locked-detail>strong{color:#efc274;font:800 .88rem/1.35 Cinzel,serif}
.world-map__locked-detail p{margin:0;color:#e4c79f;line-height:1.5}
.world-map__unlock-progress{display:grid;gap:.4rem}
.world-map__unlock-progress>i{display:block;height:.68rem;overflow:hidden;border:1px solid #a8732c;background:#160c07}
.world-map__unlock-progress>i>b{display:block;height:100%;background:linear-gradient(90deg,#9b4e18,#efb638);transition:width .35s ease}
.world-map__unlock-progress>small{color:#f1cf91;font-size:.72rem;text-align:center}
.world-map__unlock-sequence{color:#c9a77d!important;font-style:italic}
.world-map__dungeon-cooldown.is-complete,
.discovered-dungeons__cooldown.is-complete{color:#73f39b;font-weight:800;text-shadow:0 0 .65rem rgba(50,255,123,.7)}
.world-map__panel .world-map__dungeon-delete{width:auto;min-height:0;padding:.4rem .55rem;border-color:#a64035;color:#ffe1d5;background:#5b211d;font-size:.64rem}
.world-map__panel .world-map__dungeon-delete.is-icon{display:grid;place-items:center;width:2.65rem;padding:.25rem;font-size:1rem;line-height:1}
.world-map__dungeon:disabled{cursor:default;opacity:.78}
.dungeon-choice__unlock{border-color:#70cbe5!important;color:#effcff!important;background:linear-gradient(#247b98,#123f59)!important;box-shadow:inset 0 0 0 2px rgba(7,35,49,.78),0 .3rem .8rem rgba(21,131,171,.25)}
.world-map__empty{margin:.15rem 0 .5rem;color:#c7aa83}
.sound-credits p{margin:1rem 0}
.sound-credits p>strong,.sound-credits p>span{display:block}
.sound-credits a{color:inherit;text-decoration:underline;overflow-wrap:anywhere}
.world-map__discovery-places{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin:.6rem 0}
.world-map__discovery-places figure{margin:0;max-width:112px;text-align:center}
.help-dialog__illustrations{display:flex;flex-direction:column;align-items:center;gap:1rem;margin:1rem 0}
.help-dialog__illustrations figure{margin:0;text-align:center;max-width:12rem}
.help-dialog__illustrations img{display:block;width:112px;max-width:100%;height:auto;object-fit:contain;margin:0 auto .4rem}
.world-map__discovery-places img{display:block;width:112px;max-width:100%;height:auto;object-fit:contain;border:1px solid #ae863b;border-radius:6px}
.world-map__discovery-places figcaption{margin-top:.25rem;font-size:.8rem;color:#ffe0a1}
.world-map__panel .world-map__panel-close{position:absolute;z-index:2;top:.55rem;right:.55rem;display:grid;place-items:center;width:2.35rem;height:2.35rem;min-height:2.35rem;padding:0;border:1px solid #9c6a35;border-radius:50%;color:#f4d7a0;background:#4b2919;font-size:1.35rem;line-height:1}
#world-map-expedition { width: 100%; border-color: #9c6a35; color:#f4d7a0; background:#4b2919; }
.world-map__generation{position:absolute;z-index:7;inset:34% 8% auto;padding:1.25rem;color:#ffe3bd;text-align:center;background:rgba(30,15,8,.96);border:1px solid #c9892c;box-shadow:0 1rem 3rem #000}
.world-map__generation strong{display:block;min-height:2.8rem;font-size:clamp(.85rem,3.3vw,1.05rem)}
.world-map__generation-track{height:.8rem;overflow:hidden;border:1px solid #a8732c;background:#120a06}
.world-map__generation-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#9b4e18,#efb638);transition:width .7s ease}

.bestiary-book__monster{font:inherit;cursor:pointer}
.bestiary-book__monster{position:relative}
.bestiary-book__defeated{position:absolute;top:.45rem;right:.45rem;z-index:2;display:grid;place-items:center;width:2rem;height:2rem;border:.15rem solid #b9ff9d;border-radius:50%;color:#efffe8;background:#168b38;box-shadow:0 0 .85rem #5cff78;font:900 1.35rem/1 sans-serif}
.bestiary-book__defeated[hidden]{display:none}
.bestiary-cage{position:absolute;z-index:1;inset:.45rem .45rem auto;height:7rem;border:.24rem solid #493a2a;border-radius:.35rem;box-sizing:border-box;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0,transparent 15%,#68533b 15%,#2c2118 19%,transparent 19%,transparent 31%),repeating-linear-gradient(0deg,transparent 0,transparent 43%,#68533b 43%,#2c2118 49%,transparent 49%,transparent 100%);filter:drop-shadow(0 .15rem .12rem #000)}.bestiary-cage[hidden]{display:none}.bestiary-focus__portrait .bestiary-cage{display:none;inset:4% 6%;height:auto;border-width:.38rem;background:repeating-linear-gradient(90deg,transparent 0,transparent 10%,#806748 10%,#302319 13%,transparent 13%,transparent 22%),repeating-linear-gradient(0deg,transparent 0,transparent 44%,#806748 44%,#302319 48%,transparent 48%,transparent 100%)}.bestiary-focus__portrait.is-captured .bestiary-cage{display:block}
.bestiary-focus{position:fixed;z-index:46;inset:0;display:grid;place-items:center;padding:max(5.5rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom));background:rgba(5,2,1,.9);backdrop-filter:blur(5px)}
.bestiary-focus__stats #bestiary-focus-abilities{grid-column:1/-1;font-size:.64rem;line-height:1.35}
.bestiary-focus[hidden]{display:none}.bestiary-focus__card{box-sizing:border-box;position:relative;width:min(31rem,100%);max-height:100%;overflow:auto;padding:1.4rem 1rem 1.2rem;border:1px solid #bd7e31;border-radius:.55rem;background:radial-gradient(circle at 50% 35%,rgba(116,60,20,.75),#251108 70%);box-shadow:inset 0 0 0 3px #160a05,0 0 2.5rem rgba(213,139,47,.3);text-align:center}.bestiary-focus__card>p:first-of-type{margin:0;color:#e5aa59;font:700 .68rem Cinzel,serif;text-transform:uppercase}.bestiary-focus__card h2{margin:.35rem 2.5rem;color:#ffe4a0;font:800 clamp(1.25rem,6vw,1.9rem) Cinzel,serif}.bestiary-focus__portrait{position:relative;width:100%;height:min(42vh,22rem);min-height:12rem;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:.25rem 0;box-sizing:border-box}.bestiary-focus__portrait img{display:block;width:auto;height:auto;max-width:88%;max-height:100%;object-fit:contain;object-position:center center;image-rendering:pixelated}.bestiary-focus__portrait span{position:absolute;right:8%;bottom:8%;display:grid;place-items:center;width:4rem;height:4rem;border-radius:50%;color:#eaffdf;background:#168b38;border:.25rem solid #b9ff9d;box-shadow:0 0 1.4rem #5cff78;font:900 2.8rem/1 sans-serif}.bestiary-focus__portrait span[hidden]{display:none}.bestiary-focus__card>strong{display:block;color:#f1c878;font:700 .78rem Cinzel,serif}.bestiary-focus__card>p{margin:.55rem;color:#cdb48a;font-size:.75rem}.bestiary-focus__stats{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.7rem}.bestiary-focus__stats span{padding:.55rem;border:1px solid #74471e;border-radius:.3rem;background:rgba(18,8,4,.7);color:#f7dfae;font-size:.72rem}
.capture-gallery-wrap{position:relative;width:max-content;max-width:100%;margin:.65rem auto 0}.capture-gallery-wrap[hidden]{display:none}.capture-gallery-button{margin:0;padding:.65rem 1rem;border:1px solid #9e6d2d;border-radius:.35rem;color:#f5deb0;background:#43230f;font:700 .7rem Cinzel,serif;text-transform:uppercase}
.gate-march-order-button {
  display: block;
  margin: .45rem auto 0;
  padding: .45rem .8rem;
  border: 1px solid #b67722;
  border-radius: 999px;
  color: #ffe2ac;
  background: rgba(42, 22, 12, .88);
  font: 700 .72rem/1.1 Cinzel, serif;
}
.gate-march-order-button[hidden] { display: none; }

.march-order-dialog {
  width: min(92vw, 32rem);
  padding: 0;
  border: 1px solid #a96820;
  border-radius: 1rem;
  color: #ffe3b0;
  background: #28150d;
}

.march-order-dialog::backdrop { background: rgba(0, 0, 0, .78); }
.march-order-dialog__card { padding: 1.05rem; }
.march-order-dialog h3 { margin: .7rem 0 .35rem; color: #e8bd78; font-size: .78rem; text-transform: uppercase; }
.march-order-waiting { display: flex; flex-wrap: wrap; gap: .45rem; min-height: 4.35rem; }
.march-order-waiting-empty { min-height: 4.35rem; margin: 0; padding: 1.25rem .5rem; color: #a98b67; text-align: center; }
.march-order-lines { display: grid; gap: .55rem; margin: .6rem 0; }
.march-order-line { padding: .45rem; border: 1px solid #74451f; border-radius: .65rem; background: #351d12; }
.march-order-line h3 { margin: 0 0 .4rem; }
.march-order-line__slots { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; }
.march-order-slot,
.march-order-hero { position: relative; min-width: 0; height: 4.35rem; padding: .2rem; border: 1px dashed #9d713b; border-radius: .45rem; color: #dcb47b; background: rgba(21, 10, 6, .62); }
.march-order-slot { font-size: 1.7rem; }
.march-order-slot:disabled { opacity: .42; }
.march-order-hero { display: grid; grid-template-rows: 2.9rem auto; justify-items: center; border-style: solid; cursor: pointer; }
.march-order-hero img { width: 100%; height: 2.9rem; object-fit: contain; object-position: center bottom; pointer-events: none; }
.march-order-hero span { overflow: hidden; width: 100%; font-size: .6rem; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.march-order-hero.is-selected { border-color: #ffd569; box-shadow: 0 0 .7rem rgba(255, 207, 77, .75); }
.march-order-hero.has-warning { border-color: #c74738; }
.march-order-hero small { position: absolute; top: .15rem; right: .2rem; display: grid; width: 1.1rem; height: 1.1rem; place-items: center; border-radius: 50%; color: white; background: #b42622; }
.march-order-line__warnings { display: grid; gap: .25rem; margin: .45rem 0 0; padding: 0; list-style: none; color: #ffaaa0; font-size: .72rem; line-height: 1.35; }
.march-order-line__warnings li::before { content: "!"; display: inline-grid; width: 1rem; height: 1rem; margin-right: .35rem; place-items: center; border-radius: 50%; color: white; background: #b42622; font-weight: 800; }
.march-order-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; }
.march-order-actions button { padding: .75rem; }
.march-order-status { min-height: 1.2em; color: #ffbe76; }
.combat-party-roster { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); justify-content:center; gap:.38rem; width:100%; margin-top:.2rem; }
.combat-party-roster--hero { grid-template-columns:minmax(0,1fr); gap:.28rem; }
.combat-party-rank { display:grid; min-width:0; }
.combat-party-rank__label { justify-self:start; margin:0 0 .12rem .12rem; padding:.1rem .38rem; border:1px solid rgba(207,154,62,.7); border-radius:1rem; color:#f5d18c; background:rgba(31,13,6,.82); font:700 .48rem/1.2 Cinzel,serif; letter-spacing:.06em; text-transform:uppercase; }
.combat-party-rank__grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.38rem; }
.combat-party-member { --combat-portrait-height:min(5.7rem,20vw); position:relative; display:grid; justify-items:center; align-content:end; min-width:0; color:#f5d6ad; font-size:.62rem; }
.combat-party-member__sprite { position:relative; display:block; width:min(5.2rem,18vw); height:var(--combat-portrait-height); background:transparent center bottom/contain no-repeat; image-rendering:pixelated; filter:drop-shadow(0 .35rem .25rem #000); }
.combat-party-member--monster .combat-party-member__sprite { background-size:500% 100%; background-position:left top; animation:combat-monster-frames 2.6s steps(1,end) infinite; }
.combat-party-member--summon .combat-party-member__sprite { background-size:500% 100%; background-position:left top; animation:none; }
.combat-party-member--monster .combat-party-member__sprite.is-single-frame { background-size:contain; background-position:center bottom; animation:none; }
.combat-party-member.is-illusion { opacity:.5; }
.combat-party-member.is-illusion .combat-party-member__sprite { filter:drop-shadow(0 0 .55rem #8ddcff); }
.combat-party-member.is-illusion .combat-party-energy { border-color:#79bfe8; background:#07131d; }
.combat-party-member.is-illusion .combat-party-energy > span { width:100%; background:linear-gradient(90deg,#397faf,#9ce5ff); }
.combat-quick-vials { display:grid;grid-template-columns:repeat(5,.82rem);justify-content:center;gap:.1rem;margin:.14rem 0;min-height:.82rem; }
.combat-quick-vial { display:grid;place-items:center;width:.82rem;height:.82rem;padding:0;overflow:hidden;border:1px solid #956735;border-radius:.12rem;background:rgba(20,9,4,.9); }
.combat-quick-vial.is-empty { border-style:dashed;border-color:#4e3523;background:rgba(8,4,2,.45); }
.combat-quick-vial img { width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none; }
.combat-quick-vial:disabled { opacity:.4; }
.combat-party-member > span { overflow:hidden; width:100%; color:#ffe1b5; font:700 .58rem/1.2 Cinzel,serif; text-overflow:ellipsis; white-space:nowrap; }
.combat-party-energy { position:relative; width:100%; height:.82rem; margin-top:.13rem; overflow:hidden; border:1px solid #762c24; border-radius:1rem; background:#180403; }
.combat-party-energy > span { position:absolute; inset:0 auto 0 0; width:var(--combat-energy); background:linear-gradient(90deg,#8d1717,#e8583b); transition:width .45s ease; }
.combat-party-energy--astral { border-color:#345b8b; background:#06101c; }
.combat-party-energy--spiritual { border-color:#ad954d; background:#1c1606; }
.combat-party-energy--spiritual > span { background:linear-gradient(90deg,#ad8d32,#f4df91); }
.combat-party-energy--astral > span { background:linear-gradient(90deg,#255aa1,#61b9ef); }
.combat-party-energy small { position:relative; z-index:1; display:block; color:#fff4e7; font:700 .48rem/.72rem Inter,sans-serif; text-shadow:0 1px 2px #000; }
.monster-special-abilities { display:flex; flex-wrap:wrap; justify-content:center; gap:.14rem .24rem; width:100%; margin:.2rem 0 0; padding:0; list-style:none; }
.monster-special-abilities li { padding:.08rem .3rem; border:1px solid rgba(202,151,76,.58); border-radius:1rem; color:#f6d79a; background:rgba(31,13,6,.86); font:700 .43rem/1.25 Cinzel,serif; letter-spacing:.02em; }
.combat-floating-damage { position:absolute; z-index:8; left:calc(50% + var(--damage-offset, 0px)); top:28%; color:#ff392f; font:900 clamp(1.15rem,5vw,1.8rem)/1 Inter,sans-serif; text-shadow:0 2px 0 #4d0000,0 0 .45rem #000; pointer-events:none; translate:-50% 0; animation:combat-floating-damage 1s ease-out both; }
.combat-floating-damage.is-poison { color:#a6bb2f;text-shadow:0 2px 0 #303800,0 0 .45rem #111900,0 0 .7rem #697714; }
.combat-floating-damage.is-blessed { color:#fff;text-shadow:0 2px 0 #7b6939,0 0 .45rem #fff4b8,0 0 .8rem #fff; }
.combat-floating-healing { position:absolute; z-index:8; left:calc(50% + var(--healing-offset, 0px)); top:28%; color:#5dff83; font:900 clamp(1.15rem,5vw,1.8rem)/1 Inter,sans-serif; text-shadow:0 2px 0 #064619,0 0 .45rem #000; pointer-events:none; translate:-50% 0; animation:combat-floating-damage 1s ease-out both; }
.combat-extra-attack { position:absolute; z-index:9; top:.15rem; right:.08rem; display:grid; min-width:1.65rem; height:1.65rem; padding:0 .15rem; place-items:center; border:2px solid #ffe296; border-radius:50%; color:#fff3bf; background:#7b250e; font:900 .78rem/1 Cinzel,serif; box-shadow:0 0 .75rem #ffb839,0 2px 0 #351006; pointer-events:none; animation:combat-extra-attack .75s ease-out both; }
.combat-blessed-attack { position:absolute;z-index:9;top:8%;left:50%;font-family:serif;font-size:clamp(2.2rem,9vw,3.6rem);font-weight:400;line-height:1;color:#fff7cf;pointer-events:none;translate:-50% 0;text-shadow:0 0 .35rem #fff,0 0 .7rem #ffd86b;animation:combat-blessed-attack 1s ease-out both; }
@keyframes combat-floating-damage { 0%{opacity:0;transform:translateY(.65rem) scale(.65)} 18%{opacity:1;transform:translateY(0) scale(1.2)} 75%{opacity:1} 100%{opacity:0;transform:translateY(-2.2rem) scale(1)} }
@keyframes combat-extra-attack { 0%{opacity:0;transform:scale(.45) rotate(-12deg)} 22%{opacity:1;transform:scale(1.25) rotate(4deg)} 72%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:scale(.85)} }
@keyframes combat-blessed-attack { 0%{opacity:0;transform:scale(.45)} 20%{opacity:1;transform:scale(1.18)} 72%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:translateY(-1rem) scale(.88)} }
.combat-party-roster--monster { align-content:end; }
.hero-sheet__troop-member { margin:.7rem 0; padding:.65rem; border:1px solid rgba(202,151,76,.38); border-radius:.45rem; background:rgba(31,15,9,.48); }
.hero-sheet__troop-member h3 { margin:0 0 .45rem; color:#f0c77e; font:800 .78rem/1.2 Cinzel,serif; text-transform:uppercase; }
.hero-sheet__troop-energies { display:grid; gap:.45rem; margin:0; }
.hero-sheet__troop-energies > div { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:.25rem .55rem; }
.hero-sheet__troop-energies .energy-meter { grid-column:1/-1; }
.loot-distribution { margin:.7rem 0 1rem; padding:.75rem; border:1px solid #a96b25; border-radius:.65rem; background:rgba(39,20,10,.92); }
.loot-distribution > p { margin:0 0 .55rem; color:#f4d8a5; }
.loot-distribution .weapon-shop-offer-picker { margin:0; }
.loot-distribution [data-pending-loot].is-selected { outline:3px solid #62d8ff; }
#castle-leaderboard-close,
#castle-leave-button { position:absolute; z-index:2; top:.55rem; right:.55rem; display:grid; width:2.15rem; height:2.15rem; margin:0; padding:0; place-items:center; font-size:1.45rem; line-height:1; }
.castle-roster { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; }
.castle-roster-column { display:grid; gap:.5rem; }
.castle-roster-slot { position:relative; height:8.5rem; min-width:0; border:1px solid #666; border-radius:.35rem; background:#343434; }
.castle-roster-slot-number { position:absolute; top:.25rem; left:.4rem; z-index:1; color:#bcbcbc; font-size:.7rem; pointer-events:none; }
.castle-roster-slot.is-occupied { background:#281208; border-color:#8f5928; }
.castle-roster-slot.has-sale { display:grid; grid-template-rows:minmax(0,1fr) auto; }
.castle-boss-sell { width:100%; margin:0; padding:.3rem .2rem; font-size:.65rem; border-radius:0 0 .3rem .3rem; }
.castle-roster-slot.has-sale .castle-boss-card { grid-template-rows:2.3rem auto auto; }
.castle-roster-slot.has-sale .castle-boss-card img { height:2.3rem; }
.castle-roster-slot-hint { display:grid; place-items:center; height:100%; padding:.5rem; box-sizing:border-box; color:#c4c4c4; font-size:.8rem; }
.castle-roster-slot button.castle-roster-slot-hint { width:100%; border:0; border-radius:inherit; background:transparent; align-content:center; gap:.7rem; cursor:pointer; }
.castle-roster-slot button.castle-roster-slot-hint:hover:not(:disabled) { background:#444; color:#ffe2a1; }
.castle-roster-slot button.castle-roster-slot-hint:focus-visible { outline:2px solid #efbd5e; outline-offset:-3px; }
.castle-roster-slot button.castle-roster-slot-hint:disabled { cursor:wait; opacity:.55; }
.castle-transfer-arrow { width:2.5rem; height:1.9rem; fill:#e9b85a; filter:drop-shadow(0 2px 2px #0009); }
.castle-transfer-arrow.is-left { transform:rotate(180deg); }
.castle-roster-column .castle-boss-card { width:100%; height:100%; min-width:0; cursor:pointer; border:0; background:#281208; grid-template-rows:3rem auto auto; gap:.15rem; padding:.35rem .4rem; overflow:auto; }
.castle-roster-column .castle-boss-card img { height:3rem; }
.castle-roster-column .castle-boss-card strong { font-size:.78rem; line-height:1.1; }
.castle-roster-column .castle-boss-card small { font-size:.6rem; }
.castle-boss-region { color:#e0b875; font-style:italic; }
.castle-roster-column .monster-special-abilities { margin:0; gap:.15rem; }
.castle-roster h3 { font-size:clamp(.75rem,3vw,1.1rem); }
.castle-battle > button[hidden] { display:none; }
.bestiary-book__add--iris{border-color:#c99636;color:#ffe5a6;background:radial-gradient(circle at 50% 20%,#4b3515,#0b0906 70%)}
.bestiary-book__add--iris strong img,.iris-icon img{filter:drop-shadow(0 0 .35rem #e0ae42)}
.hero-currency__row--iris{margin-top:.65rem;padding-top:.65rem;border-top:1px solid rgba(205,158,62,.35)}
.buy-iris-button{border-color:#b9862f!important;color:#ffe2a0!important;background:#171006!important}
.iris-store__card{border-color:#a97828;background:radial-gradient(circle at 50% 0,rgba(178,126,35,.28),transparent 38%),linear-gradient(#201708,#080704);box-shadow:inset 0 0 0 3px #2c1c08,0 1.5rem 5rem #000;color:#ffe4a2}
.iris-store .lys-store__close,.iris-store .lys-store__status{color:#f2ca73}
.iris-store .lys-pack{border-color:#936621;background:linear-gradient(#3b290d,#100c05);color:#ffe6aa}
.boss-creation-dialog{width:min(94vw,38rem);max-height:90dvh;padding:0;border:0;background:transparent;color:#ffe7ae}.boss-creation-dialog::backdrop{background:rgba(0,0,0,.82)}.boss-creation-dialog__card{position:relative;display:grid;gap:.75rem;max-height:88dvh;overflow:auto;padding:1.15rem;border:2px solid #bd8831;border-radius:.7rem;background:radial-gradient(circle at 50% 0,rgba(177,124,36,.24),transparent 34%),linear-gradient(#211707,#080704);box-shadow:inset 0 0 0 3px #382309,0 1rem 4rem #000}.boss-creation-dialog__close{position:absolute;right:.55rem;top:.45rem;width:2.2rem;height:2.2rem;padding:0;border:1px solid #b7832c;border-radius:50%;color:#ffe4a2;background:#160e04;font-size:1.4rem}.boss-creation-dialog__kicker,.boss-creation-dialog h2,.boss-creation-dialog__status{margin:0;text-align:center}.boss-creation-dialog__kicker{color:#cfa85b;font:700 .68rem Cinzel,serif;text-transform:uppercase}.boss-creation-dialog h2{padding:0 2rem;color:#ffe6ac;font:800 1.25rem Cinzel,serif}.boss-creation-dialog__status{min-height:1.1rem;color:#efca78;font-size:.72rem}.boss-creation-dialog__status.is-error{color:#ff8f7d}.boss-creation-dialog__content{display:grid;gap:.75rem}.boss-creation-dialog__actions{display:flex;justify-content:center;gap:.55rem}.boss-creation-dialog__actions button{min-height:2.7rem;padding:.55rem .8rem;border:1px solid #9e7028;border-radius:.35rem;color:#ffe4a5;background:#251805;font:750 .66rem Cinzel,serif}.boss-creation-dialog__actions .is-primary{background:linear-gradient(#704315,#3a2108)}.boss-creation-dialog__actions button:disabled{opacity:.4}.boss-creation-dialog__strength,.boss-creation-dialog__description{display:grid;gap:.55rem}.boss-creation-dialog__strength input{width:100%;accent-color:#d3a545}.boss-creation-dialog__strength>span{display:flex;justify-content:space-between;color:#cbb98e;font-size:.68rem}.boss-creation-dialog__strength p{margin:.4rem 0;text-align:center;color:#ffe09a;font:700 .75rem Cinzel,serif}.boss-creation-dialog__monsters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;max-height:48dvh;overflow:auto}.boss-creation-dialog__monster{display:grid;gap:.25rem;place-items:center;padding:.35rem;border:1px solid #60451e;border-radius:.35rem;color:#ead6aa;background:#100d08}.boss-creation-dialog__monster.is-selected,.boss-creation-dialog__products button.is-selected{border-color:#ffd66b;box-shadow:0 0 .75rem #bc7c20}.boss-creation-dialog__monster img{width:100%;aspect-ratio:1;object-fit:contain}.boss-creation-dialog__monster span{font-size:.61rem}.boss-creation-dialog__description textarea{box-sizing:border-box;width:100%;padding:.65rem;border:1px solid #9b6e29;border-radius:.35rem;color:#fff0c8;background:#090806;font:inherit;resize:none}.boss-creation-dialog__description small{text-align:right;color:#c8ae78}.boss-creation-dialog__names{display:grid;gap:.25rem;padding:.75rem;border:1px solid #9e7028;text-align:center;background:#120d04}.boss-creation-dialog__names strong{color:#ffe09a;font:800 .95rem Cinzel,serif}.boss-creation-dialog__names span{color:#c7aa70;font-size:.72rem}.boss-creation-dialog__products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.boss-creation-dialog__products button{display:grid;gap:.2rem;min-height:5rem;padding:.6rem;border:1px solid #64491e;border-radius:.35rem;color:#efd8a6;background:#100d08;text-align:left}.boss-creation-dialog__products button strong{color:#ffe2a0}.boss-creation-dialog__products button span,.boss-creation-dialog__products button small{font-size:.65rem;color:#bfa878}@media(max-width:420px){.boss-creation-dialog__monsters{grid-template-columns:repeat(2,minmax(0,1fr))}.boss-creation-dialog__products{grid-template-columns:1fr}}
.city-interest{position:absolute;z-index:18;left:50%;bottom:clamp(7.5rem,18dvh,11rem);display:flex;max-width:min(82%,24rem);align-items:center;gap:.65rem;translate:-50% 0;padding:.65rem .9rem;border:1px solid #d6a439;border-radius:.45rem;background:linear-gradient(135deg,rgba(38,18,5,.94),rgba(78,42,10,.94));color:#ffe594;pointer-events:none;filter:drop-shadow(0 .25rem .5rem #000);animation:city-interest-pulse 1.2s ease-in-out 5}.city-interest__arrow{display:block;color:#ffd75c;font:900 clamp(2.6rem,12vw,5rem)/.8 Cinzel,serif;text-shadow:0 0 .35rem #ffb62f,0 0 .8rem rgba(255,196,55,.72)}.city-interest strong{font:800 clamp(.68rem,3vw,1rem)/1.25 Cinzel,serif;text-align:left;text-shadow:0 1px #3b1904}.city-interest--down{flex-direction:column}.city-interest--down .city-interest__arrow{rotate:90deg}.city-interest--left .city-interest__arrow{rotate:180deg}.city-interest--up{flex-direction:column}.city-interest--up .city-interest__arrow{rotate:-90deg}@keyframes city-interest-pulse{0%,100%{opacity:.68;scale:.97}50%{opacity:1;scale:1.03}}@media(prefers-reduced-motion:reduce){.city-interest{animation:none}}
.boss-creation-dialog__monster-preview{display:block;width:min(62%,5.2rem);aspect-ratio:1/2;background-position:0 top;background-repeat:no-repeat;background-size:500% 100%;image-rendering:pixelated;filter:drop-shadow(0 .35rem .3rem #000);animation:combat-monster-frames 2.6s steps(1,end) infinite}.boss-creation-dialog__monster-label{font-size:.61rem}@media(prefers-reduced-motion:reduce){.boss-creation-dialog__monster-preview{animation:none}}
.boss-creation-dialog__progress{display:grid;gap:.4rem;padding:.55rem .7rem;border:1px solid rgba(189,136,49,.6);border-radius:.35rem;background:#0d0903}.boss-creation-dialog__progress[hidden]{display:none}.boss-creation-dialog__progress>div{height:.55rem;overflow:hidden;border:1px solid #80591f;border-radius:999px;background:#050402;box-shadow:inset 0 0 .35rem #000}.boss-creation-dialog__progress i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#765019,#ffe090,#b77b20);box-shadow:0 0 .65rem rgba(255,205,94,.7);transition:width .65s ease}.boss-creation-dialog__progress p{min-height:1rem;margin:0;color:#d6bc83;font-size:.68rem;text-align:center}
.location-quest-hotspot{position:absolute;z-index:6;padding:0;border:0;background:transparent;filter:drop-shadow(0 0 .55rem #ffd36a);animation:church-light 1.45s ease-in-out infinite}.location-quest-hotspot[hidden]{display:none}.location-quest-hotspot.is-mushroom{left:8%;top:48%;width:18%;height:16%}.location-quest-hotspot.is-notice-board{right:10%;top:35%;width:20%;height:22%}.location-quest-reveal{position:absolute;z-index:185;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(5,2,1,.76)}.location-quest-reveal[hidden]{display:none}.location-quest-reveal>div{display:grid;justify-items:center;width:min(26rem,100%);padding:1rem;border:1px solid #bd873c;border-radius:.5rem;color:#ffe8bb;background:rgba(45,22,10,.97);text-align:center}.location-quest-reveal img{width:min(11rem,42vw);height:min(11rem,42vw);object-fit:contain;filter:drop-shadow(0 0 1rem #ffc85b);animation:church-light 1.4s ease-in-out infinite}.location-quest-reveal h2{font:800 1.05rem Cinzel,serif}.location-quest-reveal p{font-size:.72rem;line-height:1.45}.location-quest-reveal button{width:100%;min-height:2.8rem;border:1px solid #bd873c;border-radius:.3rem;color:#ffedc6;background:#6b3517;font:800 .65rem Cinzel,serif}
.level-energy-boost {
  display: grid;
  gap: 0.65rem;
  margin-top: 1rem;
  padding: 0.9rem;
  border: 1px solid rgba(231, 185, 86, 0.7);
  background: rgba(35, 20, 8, 0.72);
}

.level-energy-boost h3,
.level-energy-boost p {
  margin: 0;
}

.level-energy-boost select {
  width: 100%;
  min-height: 2.75rem;
  color: var(--parchment, #f4dfb0);
  border: 1px solid #a87525;
  background: #21170d;
}
.location-quest-hotspot__item{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:2.5rem;height:2.5rem;object-fit:contain;image-rendering:pixelated;pointer-events:none}
.castle-leaderboard .boss-ranking-row:has(.boss-ranking-row__portrait){grid-template-columns:1.5rem 2.7rem minmax(0,1fr) auto}
.castle-leaderboard .boss-ranking-row__portrait{display:block}
.boss-ranking-row__bonus{display:inline-flex;align-items:center;gap:.25rem;color:#ffd978;font:700 .72rem/1.2 Inter,sans-serif}
.boss-ranking-row__bonus img{width:1.1rem;height:1.1rem;object-fit:contain}
.combat-reward-list {
  list-style: none;
  padding: 0;
  text-align: center;
}
.reward-badge { display:flex; align-items:center; gap:.5rem; max-width:100%; padding:.35rem .5rem; border:1px solid rgba(239,190,91,.45); border-radius:1rem; color:#ffe19a; background:rgba(15,9,5,.7); font-size:.72rem; }
.reward-badge > span { overflow-wrap:anywhere; }
.reward-badge img { width:2.5rem; height:2.5rem; object-fit:contain; image-rendering:pixelated; }
.discovery-wheel-dialog { width:min(90vw, 26rem); padding:1.5rem; border:1px solid #d4a740; border-radius:1rem; color:#ffe19a; background:#211207; text-align:center; }
.discovery-wheel-dialog::backdrop { background:rgba(0,0,0,.8); }
.discovery-wheel-dialog h2 { margin-top:0; }
.boss-creation-dialog__monster-preview.is-item { animation:none; }
.discovery-wheel-dialog button { padding:.65rem 1.2rem; color:#ffe19a; background:#533111; border:1px solid #d4a740; border-radius:.35rem; }
.arcade-library{box-sizing:border-box;width:min(420px,94vw);max-height:90dvh;overflow:auto;padding:1.5rem;border:2px solid #b89242;border-radius:.6rem;background:#1b1007;color:#ffe19b;text-align:center}
.client-update-banner{position:fixed;top:0;left:0;right:0;width:100%;z-index:100000;box-sizing:border-box;min-height:44px;padding:calc(.6rem + env(safe-area-inset-top,0px)) .8rem .6rem;border:0;border-bottom:2px solid #ffce80;border-radius:0;background:#ed8a19;color:#241100;font:700 .9rem/1.35 Inter,sans-serif;text-align:center;cursor:pointer;box-shadow:0 2px 8px #0007}
.client-update-banner:hover{background:#ffa932}
.client-update-banner:focus-visible{outline:3px solid white;outline-offset:-4px}
/* Keep the game controls reachable while the player postpones the update. */
body > :is(.sound-toggle,.language-toggle,.mission-toggle,.bug-toggle,.player-status-controls){margin-top:var(--client-update-height,0px)}
.arcade-library::backdrop{background:#000b}
.arcade-library button{display:block;width:100%;min-height:48px;margin:.7rem 0;padding:.7rem;border:1px solid #b89242;border-radius:.35rem;background:#493019;color:#fff0c9;font:inherit}

/* Bureau : le jeu conserve un cadrage vertical au centre. Les deux fiches
   principales utilisent les colonnes latérales sans bloquer la scène. */
@media (min-width: 65.625rem) and (pointer: fine) {
  :root { --desktop-game-width: min(36rem, 33.333vw); }
  body {
    background:
      radial-gradient(circle at 50% 35%, rgba(116,65,27,.16), transparent 28%),
      linear-gradient(90deg, #090503, #1b0d07 33%, #090503 50%, #1b0d07 67%, #090503);
  }
  body > :is(.splash, .game-screen) {
    width: var(--desktop-game-width);
    margin-inline: auto;
    border-inline: 1px solid rgba(193,132,54,.28);
    box-shadow: 0 0 3rem rgba(0,0,0,.82);
  }
  /* Les séquences ponctuelles créées dynamiquement sous <body> partagent le
     même cadre que les rencontres ordinaires. Cette classe évite que chaque
     mission réimplémente sa propre règle desktop. */
  body > .game-column-overlay {
    box-sizing: border-box;
    inset: 0 auto 0 50%;
    width: var(--desktop-game-width);
    height: 100dvh;
    transform: translateX(-50%);
    border-inline: 1px solid rgba(193,132,54,.28);
    box-shadow: 0 0 3rem rgba(0,0,0,.82);
  }
  /* Le media query paysage général place autrement le titre et les actions.
     Dans la colonne de jeu desktop, on conserve plutôt le cadrage vertical. */
  body > .splash {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr auto;
    align-items: start;
    padding: 1.5rem 1.25rem 1rem;
  }
  body > .splash .brand {
    width: min(34rem, 100%);
    margin: clamp(1rem, 8vh, 5rem) auto 0;
  }
  body > .splash .actions {
    align-self: end;
    width: min(29rem, 100%);
    margin: 0 auto clamp(2.2rem, 7vh, 5rem);
  }
  body > .splash .splash__backdrop { background-position: center center; }
  body > .splash .splash__shade {
    background:
      linear-gradient(180deg, rgba(7,4,3,.78) 0%, rgba(8,4,2,.30) 34%, transparent 51%, rgba(5,3,2,.25) 67%, rgba(6,3,2,.88) 100%),
      radial-gradient(circle at 50% 22%, transparent 0 28%, rgba(3,2,1,.34) 76%);
  }
  .player-status-controls { inset-inline: 0; max-width: none; pointer-events: none; }
  .player-status-controls__main { display: contents; }
  .player-level,
  .player-equipment { position: fixed; top: 1rem; z-index: 2; pointer-events: auto; }
  .player-level { left: 1.5rem; }
  .player-equipment { right: 1.5rem; }
  /* Ces commandes appartiennent à l'écran de jeu central. Les règles mobiles
     les ancrent au viewport; on translate ici leur bord droit sur celui de la
     colonne centrale, sans déplacer Niveau et Équipement. */
  .sound-toggle {
    right: calc(50% - var(--desktop-game-width) / 2 + 1rem);
  }
  .sound-toggle.is-visible + .language-toggle,
  .language-toggle {
    right: calc(50% - var(--desktop-game-width) / 2 + 3.85rem);
  }
  .mission-toggle {
    right: calc(50% - var(--desktop-game-width) / 2 + 6.7rem);
  }
  .bug-toggle {
    right: calc(50% - var(--desktop-game-width) / 2 + 9.55rem);
  }
  .prepared-effects {
    position: fixed;
    top: 4.25rem;
    left: calc(50% - var(--desktop-game-width) / 2 + .75rem);
    pointer-events: auto;
  }
  dialog.hero-sheet[open] {
    position: fixed;
    top: 5.25rem;
    bottom: auto;
    display: block;
    box-sizing: border-box;
    width: calc((100vw - var(--desktop-game-width)) / 2 - 3rem);
    height: calc(100dvh - 6.75rem);
    max-height: none;
    margin: 0;
    overflow: hidden;
    z-index: 40;
  }
  dialog#hero-sheet[open] { left: 1.5rem; }
  dialog#equipment-sheet[open] { right: 1.5rem; left: auto; }
  dialog.hero-sheet.equipment-sheet.has-item-details[open] { height:calc(100dvh - 6.75rem); }
  dialog.hero-sheet[open] .hero-sheet__card {
    box-sizing: border-box;
    height: 100%;
    min-height: 0;
    max-height: none;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
  }
  dialog.hero-sheet::backdrop { background: transparent; backdrop-filter: none; }
  .combat-dialog { width: calc(var(--desktop-game-width) - 1rem); }
}

.dungeon-first-person-controls.is-tutorial-locked { pointer-events: none; }
.dungeon-navigation-tutorial[hidden], .dungeon-navigation-tutorial__torch[hidden] { display:none; }
.dungeon-navigation-tutorial { position:fixed;z-index:40;inset:0;overflow:hidden;pointer-events:auto;touch-action:none;user-select:none;background:rgba(0,0,0,.08); }
.dungeon-navigation-tutorial__message { position:absolute;z-index:2;right:1rem;bottom:max(10rem,calc(env(safe-area-inset-bottom) + 9rem));left:1rem;margin:auto;max-width:30rem;padding:1rem 1.15rem;border:1px solid #d5a34f;border-radius:.65rem;color:#ffe7ae;background:rgba(31,13,6,.95);box-shadow:0 .6rem 1.5rem #000,0 0 1rem rgba(244,188,81,.25);font:700 .8rem/1.5 Cinzel,serif;text-align:center; }
.dungeon-navigation-tutorial__pagination { display:grid;grid-template-columns:3rem 1fr 3rem;align-items:center;gap:.65rem;margin-top:.75rem; }
.dungeon-navigation-tutorial__pagination small { color:#d5a34f;font-size:.58rem;letter-spacing:.12em; }
.dungeon-navigation-tutorial__pagination button { display:grid;place-items:center;width:3rem;height:2.6rem;padding:0;border:1px solid #b77a31;border-radius:.35rem;color:#ffe2a0;background:#54250f;box-shadow:inset 0 0 .5rem rgba(255,195,85,.12);font-size:1rem; }
.dungeon-navigation-tutorial__pagination button:disabled { opacity:.28; }
.dungeon-navigation-tutorial__cue { position:fixed;z-index:1;left:50%;top:45%;width:4.5rem;height:4.5rem;border:2px solid rgba(255,224,139,.95);border-radius:50%;background:radial-gradient(circle,rgba(255,241,182,.5) 0,rgba(244,188,81,.2) 42%,rgba(244,188,81,0) 72%);box-shadow:0 0 1.2rem #f4bc51;translate:-50% -50%; }
.dungeon-navigation-tutorial[data-cue="joystick"] .dungeon-navigation-tutorial__cue,
.dungeon-navigation-tutorial[data-cue="view"] .dungeon-navigation-tutorial__cue { left:var(--tutorial-cue-x);top:var(--tutorial-cue-y);width:var(--tutorial-cue-size);height:var(--tutorial-cue-size);animation:dungeon-tutorial-pulse 1.2s ease-in-out infinite; }
.dungeon-navigation-tutorial[data-cue="swipe"] .dungeon-navigation-tutorial__cue { animation:dungeon-tutorial-swipe 2.4s ease-in-out infinite; }
.dungeon-navigation-tutorial[data-cue="tap"] .dungeon-navigation-tutorial__cue { animation:dungeon-tutorial-tap 1.35s ease-in-out infinite; }
.dungeon-navigation-tutorial[data-cue="torch"] .dungeon-navigation-tutorial__cue { display:none; }
.dungeon-navigation-tutorial__torch { position:absolute;z-index:1;top:32%;left:50%;width:min(9rem,35vw);height:min(9rem,35vw);object-fit:contain;translate:-50% -50%;filter:drop-shadow(0 0 .65rem #ffb23f) drop-shadow(0 0 1.3rem rgba(255,130,25,.8));animation:dungeon-tutorial-pulse 1.5s ease-in-out infinite; }
@keyframes dungeon-tutorial-pulse { 50% { scale:1.2;opacity:.68; } }
@keyframes dungeon-tutorial-swipe { 0% { left:82%;opacity:0; } 18% { opacity:1; } 82% { opacity:1; } 100% { left:18%;opacity:0; } }
@keyframes dungeon-tutorial-tap {
  0%,35%,100% { scale:1;opacity:.78;box-shadow:0 0 .7rem rgba(244,188,81,.7); }
  48% { scale:.72;opacity:1;box-shadow:0 0 .25rem #fff4c5; }
  62% { scale:1.28;opacity:.92;box-shadow:0 0 1.8rem #f4bc51,0 0 3rem rgba(255,231,161,.72); }
}
