/* The difficulty strip scrolls independently; the contract entrance stays visible. */
.exploration-mode-nav{display:flex;align-items:stretch;gap:.5rem;min-width:0;--expedition-accent:var(--gold,#cfb77a)}
.exploration-mode-nav>.expedition-difficulty-tabs{flex:1;min-width:0;margin:0;padding:0;align-items:stretch}
.exploration-mode-nav .expedition-difficulty-tab{min-height:44px;font-family:inherit;font-size:var(--ga-font-control,.875rem);border-radius:3px;white-space:nowrap}
.exploration-mode-nav>.summon-contract-tab{flex:0 0 auto;padding:.5rem .75rem;border:1px solid var(--selected-border,#cfb77a);background:linear-gradient(145deg,#38372e,#1b2428);color:#eee2bf;box-shadow:inset 0 1px #ffffff12}
.exploration-mode-nav>.summon-contract-tab[aria-selected="true"]{background:linear-gradient(145deg,#62543b,#303530);box-shadow:inset 0 -2px var(--gold,#cfb77a);color:#fff3d2}
.exploration-mode-nav>.summon-contract-tab{display:flex;align-items:center;justify-content:center;gap:.375rem}
.summon-contract-badge{display:inline-grid;place-items:center;flex:0 0 auto;min-width:1.25rem;height:1.25rem;padding:0 .25rem;border:1px solid #f3c1a2;border-radius:1rem;background:#8b3027;color:#fff5e9;font-weight:700;font-size:var(--ga-font-caption,.6875rem);line-height:1;font-variant-numeric:tabular-nums}
#navigation>button[data-tab="explore"]{position:relative}
#navigation .explore-summon-badge{position:absolute;top:.2rem;right:.375rem;pointer-events:none}
#navigation .explore-summon-badge[hidden]{display:none}
.summon-unlock-notice{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;padding:.75rem;border:1px solid var(--selected-border,#cfb77a);border-radius:4px;background:linear-gradient(120deg,#343329,#151e26);color:var(--text)}
.summon-unlock-notice>div{min-width:0;flex:1 1 15rem}.summon-unlock-notice strong{font-size:var(--ga-font-body,.875rem)}
.summon-unlock-notice p{margin:.375rem 0 0;font-size:var(--ga-font-note,.75rem);line-height:1.6;overflow-wrap:anywhere}
.summon-unlock-notice>button{min-height:44px;padding:.5rem .75rem;font-size:var(--ga-font-control,.875rem);white-space:normal}
.summon-unlock-notification strong{font-size:var(--ga-font-body,.875rem);overflow-wrap:anywhere}
.summon-unlock-notification small{font-size:var(--ga-font-note,.75rem);overflow-wrap:anywhere}
.exploration-mode-nav button:focus-visible,.summons-page button:focus-visible,.summons-page summary:focus-visible{outline:2px solid var(--gold,#cfb77a);outline-offset:2px}
.summons-page{min-width:0;color:var(--text);--summon-accent:224 180 108}
.summons-page p,.summons-page summary{font-size:var(--ga-font-body,.875rem);line-height:1.65;overflow-wrap:anywhere}
.summons-page>.page-heading{margin-bottom:.75rem}
.summon-selector{display:flex;gap:.5rem;overflow-x:auto;max-width:100%;padding:2px 2px .75rem;scrollbar-width:thin}
.summon-selector button{display:flex;align-items:center;gap:.5rem;flex:0 0 auto;min-height:44px;padding:.5rem .75rem;white-space:nowrap;font-size:var(--ga-font-control,.875rem)}
.summon-selector button span{font-size:var(--ga-font-caption,.6875rem);color:var(--gold,#cfb77a)}
.summon-stage{position:relative;isolation:isolate;display:flex;flex-direction:column;min-height:max(42rem,calc(100svh - 13rem));overflow:hidden;border:1px solid rgb(var(--summon-accent)/.38);border-radius:4px;background:#0b1119;box-shadow:inset 0 0 5rem #0008}
.summon-stage[data-summon="ifrit"]{--summon-accent:255 146 77}.summon-stage[data-summon="shiva"]{--summon-accent:140 218 255}.summon-stage[data-summon="ramuh"]{--summon-accent:200 174 255}.summon-stage[data-summon="titan"]{--summon-accent:206 179 113}.summon-stage[data-summon="leviathan"]{--summon-accent:99 212 230}.summon-stage[data-summon="odin"]{--summon-accent:162 175 225}.summon-stage[data-summon="phoenix"]{--summon-accent:255 195 117}.summon-stage[data-summon="bahamut"]{--summon-accent:198 163 255}
.summon-scene{position:absolute;inset:0;z-index:-3;width:100%;height:100%;object-fit:cover;opacity:.42;filter:saturate(.65)}
.summon-stage::after{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#071019a3,transparent 30%,#080f19a6 55%,#080f19fa 78%);content:"";pointer-events:none}
.summon-stage-light{position:absolute;inset:8% -20% 10%;z-index:-2;background:radial-gradient(ellipse at 50% 28%,rgb(var(--summon-accent)/.3),transparent 55%);pointer-events:none}
.summon-hero-art{position:absolute;z-index:-2;top:4.5rem;left:50%;width:min(115%,34rem);height:28rem;transform:translateX(-50%);object-fit:contain;filter:drop-shadow(0 0 1.5rem rgb(var(--summon-accent)/.24));pointer-events:none}
.summon-stage-title{padding:1.25rem 1.25rem 0;text-shadow:0 2px 8px #000}
.summon-stage-title .summon-trial-name{margin:0 0 .25rem;color:rgb(var(--summon-accent));font-size:var(--ga-font-note,.75rem);letter-spacing:.14em}
.summon-stage-title h2{margin:0;font-family:"Yu Mincho",serif;font-size:clamp(1.75rem,6vw,2.75rem);line-height:1.35;overflow-wrap:anywhere;color:#fff4df}
.summon-status{display:inline-block;margin-top:.5rem;padding:.25rem .5rem;border:1px solid rgb(var(--summon-accent)/.5);border-radius:2px;background:#08101cd9;font-size:var(--ga-font-note,.75rem);color:#efe5cf}
.summon-stage-copy{margin-top:auto;padding:15rem 1rem 1rem;min-width:0}
.summon-technique{padding:.75rem 0;border-top:1px solid rgb(var(--summon-accent)/.4)}
.summon-technique>div{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
.summon-technique h3{margin:0;font-size:var(--ga-font-section,.9375rem);color:#fff0d0}
.summon-technique span{font-size:var(--ga-font-note,.75rem);color:#e2dacc}
.summon-technique p{margin:.5rem 0 0;color:#e1e6ed}
.summon-card-actions{display:grid;gap:.5rem;margin-top:.5rem}
.summon-card-actions button{width:100%;min-height:48px;white-space:normal;overflow-wrap:anywhere;font-size:var(--ga-font-control,.875rem)}
.summon-stage-copy .summon-trial-note{margin:.625rem 0 0;font-size:var(--ga-font-note,.75rem);color:#c9c3b7;text-align:center}
.summon-stage-copy .summon-return-hint{padding:.5rem;border:1px solid rgb(var(--summon-accent)/.45);background:#0b1421;color:#f0dfba}
.summon-tactics{margin-top:.5rem;border-top:1px solid #ffffff1f}
.summon-tactics summary,.summon-rules summary{min-height:44px;padding:.75rem 0;cursor:pointer}
.summon-tactics p{margin:.5rem 0;color:#d6dce5}
.summon-page-footer{display:flex;align-items:start;justify-content:space-between;gap:1rem;margin-top:.5rem;flex-wrap:wrap}
.summon-rules{flex:1 1 18rem;min-width:0}.summon-rules p{color:var(--muted)}
.summon-page-footer>button{min-height:44px;font-size:var(--ga-font-body,.875rem)}
.summon-empty-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;min-height:calc(100svh - 16rem);padding:2rem 1rem;border:1px solid #c9b78440;border-radius:4px;text-align:center;background:radial-gradient(ellipse at 50% 40%,#353a46,#0c1520 70%);color:#e5e1d6}
.summon-empty-seal{display:grid;place-items:center;width:8rem;height:8rem;margin-bottom:1rem;border:1px solid #d8c58b66;border-radius:50%;box-shadow:0 0 3rem #bfa9761a,inset 0 0 3rem #bfa97616;font-size:4rem;color:#d8c58b}
.summon-empty-stage h2{margin:0;font-size:var(--ga-font-page,1.125rem)}.summon-empty-stage p{margin:0}.summon-empty-stage .summon-first-hint{color:#cabb94;font-size:var(--ga-font-note,.75rem)}
.summon-empty-stage button{min-height:48px;margin-top:.5rem;padding-inline:2rem}
@media(min-width:760px){
 .summon-stage{min-height:max(38rem,calc(100svh - 13rem))}
 .summon-hero-art{top:1rem;left:67%;width:65%;height:calc(100% - 2rem);max-height:48rem}
 .summon-stage::after{background:linear-gradient(90deg,#080f19f5, #080f19ba 35%,#080f1910 75%),linear-gradient(0deg,#080f19aa,transparent 50%)}
 .summon-stage-title{padding:2rem 2rem 0;max-width:65%}
 .summon-stage-copy{width:50%;padding:8rem 2rem 1.5rem}
}

.summon-entry{margin:.5rem}.summon-entry button{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;flex-wrap:wrap;white-space:normal}
.summon-entry span{font-size:var(--ga-font-note,.75rem)}
.summon-command { display:flex; align-items:center; gap:8px; flex:1 1 0; min-width:0; max-width:20rem; padding:0; border:0; background:transparent; color:var(--text); font-size:.6875rem; text-shadow:0 1px 2px #000; }
.summon-command .summon-gauge-track { position:relative; display:block; flex:1 1 0; min-width:0; width:0; height:6px; }
.summon-command progress { display:block; width:100%; height:6px; margin:0; accent-color:var(--gold,#cfb77a); }
.summon-command progress::-webkit-progress-bar { background:var(--surface-2,#263442); border-radius:2px; }
.summon-command progress::-webkit-progress-value { background:var(--gold,#cfb77a); border-radius:2px; }
/* SVG geometry keeps the luminous fill visible under the production CSP. */
.summon-gauge-energy { position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.summon-gauge-fill { fill:#eac26c; filter:drop-shadow(0 0 2px #ffcf76) drop-shadow(0 0 5px rgb(255 184 58 / 65%)); animation:summon-gauge-radiance 2.4s ease-in-out infinite; }
.summon-gauge-spark { stroke:#fffce5; stroke-width:1.6; stroke-dasharray:5 20; filter:drop-shadow(0 0 1.5px #fff0b1); animation:summon-gauge-flow 2s linear infinite; }
.summon-command[data-charge-state="empty"] .summon-gauge-energy { visibility:hidden; }
.summon-command[data-charge-state="ready"] .summon-gauge-fill { fill:#ffe9ac; filter:drop-shadow(0 0 3px #ffe4a1) drop-shadow(0 0 7px rgb(255 197 77 / 85%)); animation-duration:1.6s; }
.summon-command[data-charge-state="ready"] .summon-gauge-spark { animation-duration:1.3s; }
.summon-command>.summon-gauge-amount { display:block; flex:none; white-space:nowrap; font-size:.6875rem; line-height:1.1; text-align:right; font-variant-numeric:tabular-nums; }
.summon-command[data-charge-state="ready"]>.summon-gauge-amount { color:#fff0bd; text-shadow:0 0 6px rgb(255 201 96 / 45%),0 1px 2px #000; }
@keyframes summon-gauge-flow { from { stroke-dashoffset:25; } to { stroke-dashoffset:0; } }
@keyframes summon-gauge-radiance { 0%,100% { opacity:.8; } 50% { opacity:1; } }
[data-combat-motion="short"] .summon-gauge-fill,[data-combat-motion="short"] .summon-gauge-spark { animation:none; }
[data-combat-motion="short"] .summon-gauge-spark { display:none; }
@media(prefers-reduced-motion:reduce) {
 .summon-gauge-fill,.summon-gauge-spark { animation:none; }
 .summon-gauge-spark { display:none; }
}
.summon-attack-command { border-color:var(--gold); }
.summon-revive-targets { display:flex; gap:8px; flex-wrap:wrap; }
.summon-revive-targets button { min-height:44px; padding:8px; font:inherit; white-space:normal; }
/* Share the existing log row without adding a panel or reducing the battlefield. */
body.battle-active:has(.battle-shell.immersive-battle) .battle-shell.immersive-battle .battlefield-log-panel.is-collapsed.has-summon-gauge { display:flex; flex-direction:row; align-items:center; gap:8px; right:8px; left:8px; width:auto; border:0; background:transparent; box-shadow:none; }
body.battle-active .battle-shell.immersive-battle .has-summon-gauge>.battlefield-log-toggle { flex:0 0 76px; width:76px; height:100%; border:1px solid rgb(102 192 219 / 20%); border-radius:6px; background:rgb(3 12 20 / 72%); }
@media (orientation:landscape) and (max-height:500px) and (max-width:1100px) {
 body.battle-active .battle-shell.immersive-battle .has-summon-gauge>.battlefield-log-toggle { flex-basis:66px; width:66px; }
}
@media (orientation:portrait) and (max-width:360px) and (max-height:740px) {
 body.battle-active:has(.battle-shell.immersive-battle) .battle-shell.immersive-battle .arena > .battlefield-log-panel.is-collapsed.has-summon-gauge { width:auto; inset:auto 9px 4px; }
}
.summon-contract-result img{width:clamp(6rem,25vw,11.25rem);height:auto;object-fit:contain}
/* A trial has one summon: use the enemy column and normalize its transparent margins. */
body.battle-active:has(.immersive-battle) .battle-shell.immersive-battle .enemy-line.enemy-count-1 .enemy:has(.actor-image[src^="/images/summons/v3/"]) {
  --enemy-body-size: 2.5;
  --enemy-state-space: 0px;
  width: 100%;
  height: auto;
  grid-template: max-content max-content max-content / minmax(0, 1fr);
}
body.battle-active:has(.immersive-battle) .battle-shell.immersive-battle .enemy-line.enemy-count-1 .enemy:has(.actor-image[src^="/images/summons/v3/"]) .actor-mark {
  grid-area: 2 / 1;
  width: 100%;
  max-width: calc(var(--battle-portrait-size) * 2.5);
  height: min(calc(var(--battle-portrait-size) * 2.5), max(36px, calc(100cqh - 64px)));
  margin-inline: auto;
}
body.battle-active:has(.immersive-battle) .battle-shell.immersive-battle .enemy-line.enemy-count-1 .enemy:has(.actor-image[src^="/images/summons/v3/"]) .combatant-heading { grid-area: 1 / 1; }
body.battle-active:has(.immersive-battle) .battle-shell.immersive-battle .enemy-line.enemy-count-1 .enemy:has(.actor-image[src^="/images/summons/v3/"]) .enemy-resource-meter { grid-area: 3 / 1; }

/* The selected summon stands behind the three members; artwork never intercepts input. */
.formation-screen .party-summon-stage { position:relative; isolation:isolate; grid-column:1/-1; min-width:0; }
.formation-screen .party-summon-stage:has(.party-summon-backdrop) { padding-top:72px; }
.formation-screen .party-summon-backdrop { position:absolute; z-index:-1; inset:0 auto auto 50%; transform:translateX(-50%); width:min(100%,26rem); height:100%; object-fit:contain; object-position:center top; opacity:.44; pointer-events:none; user-select:none; }
.formation-screen .party-summon-members { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:end; gap:6px; min-width:0; }
.formation-screen .party-summon-stage .party-team-slot { background:linear-gradient(180deg,transparent 20%,rgb(8 17 23 / 72%)); }
.formation-screen .party-summon-stage:has(.party-summon-backdrop) .formation-slot-card { background:linear-gradient(180deg,transparent,rgb(8 17 23 / 72%)); }
.formation-screen .party-summon-stage .party-team-portrait { height:104px; }
.formation-screen .party-summon-stage .party-team-portrait .actor-image { max-width:110px; }
/* Keep party preparation secondary to the roster; retain a 48px selection target. */
.formation-screen .party-summon-settings { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:4px 12px; min-width:0; padding-block:8px; border-block:1px solid var(--line); }
.formation-screen .party-summon-current { display:grid; gap:4px; min-width:0; overflow-wrap:anywhere; }
.formation-screen .party-summon-current>span { color:var(--muted); font-size:var(--ga-font-note,.75rem); }
.formation-screen .party-summon-current>strong { color:var(--text); font-size:var(--ga-font-body,.875rem); }
.formation-screen .party-summon-picker-trigger { display:flex; align-items:center; justify-content:center; gap:8px; min-height:48px; width:auto; padding-inline:12px; font-size:var(--ga-font-control,.875rem); }
.formation-screen :is(.party-summon-empty,.party-summon-lock) { grid-column:1/-1; margin:0; color:var(--muted); font-size:var(--ga-font-note,.75rem); }
.formation-screen .party-summon-contract { grid-column:2; grid-row:1; justify-self:end; }
/* Leave room for the fixed chat handle on narrow party screens. */
@media(max-width:980px) { .formation-screen .party-summon-settings { padding-inline-end:32px; } }


/* Native modal behavior keeps keyboard focus inside the shared tile-picker design. */
body.party-summon-modal-open { overflow:hidden; }
.party-summon-dialog { margin:auto; padding:0; }
.party-summon-dialog:not([open]) { display:none; }
.party-summon-dialog::backdrop { background:rgb(3 7 11 / 82%); backdrop-filter:blur(4px); }
.party-summon-dialog > footer { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.party-summon-dialog > footer p { grid-column:1/-1; }
.party-summon-dialog > footer button { white-space:normal; overflow-wrap:anywhere; }
.party-summon-dialog .party-team-picker-heading { grid-template-columns:minmax(0,1fr) 44px; }
.party-summon-dialog .party-summon-tile-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); grid-auto-rows:max-content; gap:8px; align-content:start; padding:12px; }
.party-summon-dialog .party-summon-tile { display:flex; flex-direction:column; align-items:center; gap:4px; min-width:0; min-height:164px; height:auto; padding:8px; white-space:normal; overflow-wrap:anywhere; }
.party-summon-dialog .party-summon-tile>* { flex-shrink:0; }
.party-summon-dialog .party-summon-tile>img { width:100%; height:96px; object-fit:contain; }
.party-summon-dialog .party-summon-tile>strong { font-size:var(--ga-font-body,.875rem); white-space:normal; overflow-wrap:anywhere; }
.party-summon-dialog .party-summon-tile>small { font-size:var(--ga-font-note,.75rem); white-space:normal; overflow-wrap:anywhere; }
.party-summon-dialog .party-summon-tile[aria-pressed="true"] { opacity:1; border-color:var(--gold); background:var(--selected-bg, #34372b); }
.party-summon-dialog .party-summon-unset { justify-content:center; }
.party-summon-dialog .party-team-picker-card-status { font-size:var(--ga-font-caption,.6875rem); }
@media(max-width:480px) { .party-summon-dialog .party-summon-tile-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
