/* A framed trading-card layout shared by game details and the admin preview. */
.ability-detail-dialog.skill-book-card,.enemy-detail-dialog.enemy-detail-card,.party-detail-dialog.party-detail-card{
  display:grid;grid-template-columns:minmax(0,1fr);
  grid-template-areas:"heading" "art" "flavor" "collection" "effect" "source" "actions" "stamp";
  gap:8px;width:min(100%,420px);padding:16px;border:3px double #ccb475;border-radius:14px;
  background:repeating-linear-gradient(125deg,#ffffff03 0 1px,transparent 1px 7px),linear-gradient(145deg,#33363d,#141d29 48%,#242329);
  box-shadow:0 24px 70px #000a,inset 0 0 0 4px #111a27,inset 0 0 0 5px #a78c57;
  overflow-y:auto;scrollbar-width:thin;scrollbar-color:#9e8754 #101824;
}
/* Keep normal card borders and their inset frame rounded above the shared dialog rule. */
.ability-detail-dialog.skill-book-card:not(.is-alternate-art){border-radius:14px}
.skill-book-card>*{min-width:0}
.skill-book-card>.skill-book-card-header{
  grid-area:heading;padding:9px 10px;border:1px solid #b69b63;border-radius:7px 7px 2px 2px;
  background:linear-gradient(120deg,#403b34,#1c2837 65%,#26262a);box-shadow:inset 0 1px #fff3c426,0 2px 5px #0006;
}
.skill-book-card-header::before{display:none}
.skill-book-card-header>div{min-width:0}
.skill-book-card .skill-book-card-category{gap:3px 8px;margin-bottom:5px;font-size:.6rem;letter-spacing:.12em;color:#e6cd91}
.skill-book-card .skill-book-card-category>span{color:#b9c3cd;font-size:.6rem}
.skill-book-card .skill-book-card-title h2{font-size:clamp(1.15rem,4.8vw,1.55rem);line-height:1.25;letter-spacing:.04em;text-shadow:0 2px 2px #0008}
.skill-book-card-title rt{font-size:clamp(.55rem,2.5vw,var(--ga-font-caption,.6875rem));font-weight:500;letter-spacing:0;line-height:1.3}
.skill-book-card .inventory-filter-close{align-self:start;border:1px solid #c3a86b70;border-radius:50%;background:#10172299;color:#eee2c8}
.enemy-detail-card .skill-book-card-title{flex-wrap:nowrap;gap:6px}
.enemy-detail-card .skill-book-card-title h2{flex:1;min-width:0}
.enemy-detail-card .enemy-form-status{display:inline-flex;flex:none;align-items:center;gap:4px;max-width:100%;padding:2px 5px;border:1px solid #aab7c566;border-radius:3px;background:#10172299;color:#b8c1ca;font-size:.75rem;line-height:1.45;white-space:nowrap}
.enemy-detail-card .enemy-form-status svg{flex:none;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.enemy-detail-card .enemy-form-status.is-owned{border-color:var(--gold,#d9b45e);color:var(--gold-strong,#f2cf76)}
.enemy-detail-card .enemy-form-status.is-owned circle{fill:currentColor}
.enemy-detail-card .enemy-form-status-sign{stroke-width:2}
.skill-book-card .skill-book-card-meta{margin-top:7px;gap:4px 5px;font-size:.63rem}
.skill-book-card .skill-book-card-level,.skill-book-card .skill-book-card-tier{padding:2px 6px;border-radius:2px;font-size:.61rem;background:#0f1928}
.skill-book-card .skill-book-card-part{height:22px;min-width:22px;padding:0 3px;font-size:.64rem;border-color:#c7ae78}
.skill-book-card .skill-book-card-owned{font-size:.61rem;color:#d0c8b8;white-space:nowrap}
.skill-book-card>.skill-book-card-sigil{
  grid-area:art;position:relative;isolation:isolate;height:clamp(180px,31dvh,270px);min-height:180px;
  margin:0;border:1px solid #c0a56b;border-radius:2px;background:radial-gradient(ellipse,#244b63,#122133 75%);
  box-shadow:0 0 0 2px #111a27,0 0 0 3px #ad945a80,inset 0 0 14px #0006;
}
.skill-book-card>.skill-book-card-sigil::after{content:"";position:absolute;inset:4px;border:1px solid #fff0b62b;pointer-events:none}
.skill-book-card .skill-book-card-illustration{width:100%;height:100%;max-height:270px;aspect-ratio:auto;object-fit:contain}
.skill-book-card .skill-book-card-sigil.has-scene .skill-book-card-illustration{width:100%;height:100%;max-height:270px;aspect-ratio:auto;object-fit:cover;border-radius:2px}
.ability-detail-dialog.skill-book-card.is-alternate-art{display:grid;border-radius:23px}
.skill-book-card.is-alternate-art{background:repeating-linear-gradient(125deg,#ffffff03 0 1px,transparent 1px 7px),linear-gradient(145deg,#39372e,#172131 48%,#302a31);border-color:#ead398}
.skill-book-card.is-alternate-art::after{background:none}
.skill-book-card.is-alternate-art>.skill-book-card-full-art{
  grid-area:art;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 42%;border-radius:2px;z-index:0;
}
.skill-book-card.is-alternate-art>.skill-book-card-foil{grid-area:art;position:absolute;inset:0;border-radius:2px;z-index:1}
.skill-book-card.is-alternate-art>.skill-book-card-sigil.has-full-art{background:transparent;min-height:180px;height:clamp(180px,31dvh,270px);flex:none}
.skill-book-card>.skill-book-card-flavor{grid-area:flavor;margin:1px 0;padding:0 6px;color:#cbb98c;font-size:.65rem;font-style:italic;line-height:1.5}
.skill-book-card>.skill-book-card-collection-status{grid-area:collection;padding:2px 2px;font-size:.61rem;color:#d4bd83;text-shadow:none}
.skill-book-card>.skill-book-card-collection-status>small{color:#a9b7c6;font-size:.59rem}
.skill-book-card>.skill-book-card-effect{
  grid-area:effect;padding:11px 12px;border:1px solid #b99c62;border-radius:2px;
  background:repeating-linear-gradient(0deg,#74582905 0 1px,transparent 1px 4px),linear-gradient(125deg,#e5d6b8,#cbb995);
  color:#302b24;box-shadow:inset 0 0 0 2px #fff5d53d,0 3px 6px #0005;
}
.skill-book-card .skill-book-card-effect :is(p,small,summary,span){text-shadow:none}
.skill-book-card .skill-book-card-effect-heading{padding-bottom:6px;border-bottom:1px solid #8b734955}
.skill-book-card .skill-book-card-effect-heading>small{padding:0;border:0;border-radius:0;color:#514329;font-size:.67rem;font-weight:700;letter-spacing:.12em}
.skill-book-card .skill-book-card-cost{gap:5px;color:#332b1e;font-size:.67rem;font-weight:700}
.skill-book-card .skill-book-card-cost>span{padding:2px 6px;border:1px solid #927e58;border-radius:2px;background:#fff7da5e;line-height:1.35}
.skill-book-card .skill-book-card-description{margin:7px 0 0;color:#282822;font-size:.85rem;font-weight:500;line-height:1.55}
.skill-book-card .skill-book-card-conditions{gap:4px;margin-top:8px}
.skill-book-card .skill-book-card-conditions>span{padding:2px 6px;border-color:#99846270;border-radius:2px;background:#fdf2d535;color:#53472f;font-size:.61rem}
.skill-book-card .skill-book-card-stack-rule{padding-top:7px;margin-top:8px;border-color:#8f794b60;color:#68512a;font-size:.68rem;line-height:1.5}
.skill-book-card .skill-book-card-stack-rule small{color:#4b5157}
.skill-book-card .skill-book-card-stack-details[open]{background:#fff4d740;border-radius:2px}
.skill-book-card .skill-book-card-stack-details>small,.skill-book-card .skill-book-card-stacks small{color:#665944}
.skill-book-card .skill-book-card-stacks{border-color:#9c845860}
.skill-book-card .skill-book-card-stacks>div>span{color:#634c26}
.skill-book-card .skill-book-card-stacks p{color:#302b24;font-size:.75rem}
.skill-book-card>.skill-book-card-source{grid-area:source;padding:7px 2px 3px;border-top:1px solid #b39b6266;border-bottom:0;color:#c7c2b3;font-size:.66rem;text-shadow:none}
.skill-book-card .skill-book-card-source>small{color:#b39b66;font-size:.61rem}
.skill-book-card .skill-book-card-source summary{color:#b5c5d3}
.skill-book-card>.ability-detail-actions{grid-area:actions;margin-top:1px}
.skill-book-card>.skill-book-card-acquired-stamp{grid-area:stamp}
/* The shop dialog scrolls as a unit. Its card ends at the source line. */
.grimoire-detail-dialog{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;width:min(100%,420px);overscroll-behavior:contain;scrollbar-width:thin}
.ability-detail-dialog.skill-book-card.grimoire-detail-card{grid-template-areas:"heading" "art" "flavor" "effect";max-height:none;overflow:visible}
.grimoire-detail-footer{display:grid;gap:12px;padding:0 12px 8px}
.grimoire-detail-card>.skill-book-card-header{grid-template-columns:minmax(0,1fr)}
.grimoire-detail-footer>.grimoire-detail-purchase{
  grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;width:100%;margin:0 auto;
}
.grimoire-detail-purchase>:not(button){grid-column:1 / -1}
.grimoire-detail-purchase>:is(.grimoire-price,.grimoire-point-balance){grid-row:1}
@media(max-width:360px){
  .ability-detail-dialog.skill-book-card,.enemy-detail-dialog.enemy-detail-card,.party-detail-dialog.party-detail-card{padding:12px;gap:7px}
  .skill-book-card>.skill-book-card-header{padding:8px}
  .skill-book-card .skill-book-card-description{font-size:.8rem}
  .skill-book-card>.skill-book-card-effect{padding:9px 10px}
}
@media(max-height:600px){
  .skill-book-card>.skill-book-card-sigil,.skill-book-card.is-alternate-art>.skill-book-card-sigil.has-full-art{height:180px;min-height:180px}
}
.ability-detail-dialog.skill-book-card>.skill-book-card-header{padding-block:6px}
.ability-detail-dialog.skill-book-card .skill-book-card-header>div{
  display:flex;flex-wrap:wrap;align-items:center;align-self:center;gap:4px 8px;
}
.ability-detail-dialog.skill-book-card .skill-book-card-header .skill-book-card-category{flex-basis:100%;margin:0}
.ability-detail-dialog.skill-book-card .skill-book-card-header .skill-book-card-meta{
  min-width:0;margin:0 0 0 auto;overflow-wrap:anywhere;
}
.ability-detail-dialog.skill-book-card .skill-book-card-header .skill-book-card-meta:empty{display:none}
/* Combat details use the same frame, artwork window and paper as normal books. */
.enemy-detail-dialog.enemy-detail-card{grid-template-areas:"heading" "art" "effect"}
.enemy-detail-card>.enemy-detail-art{box-sizing:border-box;grid-template:minmax(0,1fr) / minmax(0,1fr);height:clamp(180px,31dvh,270px);padding:8px;overflow:hidden;background-image:linear-gradient(90deg,#6de4f326 1px,transparent 1px),linear-gradient(0deg,#6de4f326 1px,transparent 1px),radial-gradient(ellipse at 50% 70%,#27536b,#0c1829 78%);background-size:24px 24px,24px 24px,100% 100%;background-position:center}
.enemy-detail-card>.enemy-detail-art::before{content:"";position:absolute;inset:48% -15% -35%;background-image:linear-gradient(90deg,#78eafa55 1px,transparent 1px),linear-gradient(0deg,#78eafa55 1px,transparent 1px);background-size:22px 22px;transform:perspective(220px) rotateX(55deg);transform-origin:center top;mask-image:linear-gradient(transparent,#000 35%);pointer-events:none}
.enemy-detail-card .enemy-detail-art .actor-image{position:relative;z-index:1;width:100%;height:100%;min-height:0;max-width:100%;max-height:100%;object-fit:contain;object-position:center}
.enemy-detail-card .enemy-detail-vitals{justify-content:space-between;gap:5px 12px;padding:0;border:0;color:#514329;font-size:.72rem}
.enemy-detail-card .enemy-detail-vitals strong{color:#282822;overflow-wrap:anywhere}
.enemy-detail-hp-track{display:block;width:100%;height:5px;margin-top:7px;overflow:hidden;border-radius:2px;background:#8b734933;box-shadow:inset 0 1px 2px #302b2433}
.enemy-detail-hp-track>rect{fill:#667746}
.enemy-detail-card .enemy-detail-section{gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid #8b734955;font-size:.73rem;line-height:1.6;overflow-wrap:anywhere}
.enemy-detail-card .enemy-detail-section>strong{color:#514329;font-size:.7rem}
.enemy-detail-card .enemy-detail-section p{margin:0;color:#302b24}
.enemy-detail-card .enemy-detail-section :is(.muted,.battle-state-empty){color:#665944}
.enemy-detail-card .enemy-detail-section p>small{display:block;margin-top:3px;font-size:.62rem}
.enemy-detail-card .battle-state-badge{border-color:#99846270;background:#fff4d740;color:#53472f}
.enemy-detail-card .battle-state-badge.positive{border-color:#668056;color:#39552d}
.enemy-detail-card .battle-state-badge.negative{border-color:#a45d47;color:#813d2d}
.enemy-detail-card .battle-state-badge.neutral{border-color:#5b7989;color:#36576a}
.enemy-detail-card .battle-state-badge small{color:inherit}
.enemy-detail-card .enemy-detail-technique{padding:7px 8px;border-color:#99846270;border-radius:2px;background:#fff4d740}
.enemy-detail-card .enemy-detail-technique p{margin-top:3px;color:#514329}
.enemy-detail-card .enemy-big-preview{padding-left:8px;border-left:2px solid #9b5f20}
.enemy-detail-card .enemy-big-preview>strong{color:#7d411b}
.enemy-detail-card .enemy-big-preview.is-weakened{border-left-color:#57734a}
.enemy-detail-card .enemy-big-preview.is-weakened>strong{color:#39552d}
/* Rare cards print their text over the illustration, including while scrolling. */
.ability-detail-dialog.skill-book-card.is-alternate-art:not(.pair-technique-card){display:block;padding:7px;container-type:inline-size}
.skill-book-card-print{
  position:relative;isolation:isolate;display:flex;flex-direction:column;gap:8px;
  min-width:0;min-height:150cqw;padding:12px;overflow:hidden;border-radius:7px;
}
.skill-book-card-print::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,#050c18cf 0%,#050c1840 20%,transparent 35%,#050c1833 48%,#050c18c9 73%,#050c18e6 100%);
}
.skill-book-card-print>*{position:relative;z-index:2;min-width:0;flex-shrink:0}
.skill-book-card-print>.skill-book-card-full-art{
  position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center;border-radius:7px;pointer-events:none;
}
.skill-book-card-print>.skill-book-card-foil{
  position:absolute;inset:0;z-index:1;border-radius:7px;overflow:hidden;pointer-events:none;
  mix-blend-mode:screen;opacity:.55;contain:paint;
  background-image:url('/images/skill-books/rare-hologram-film-v1.webp');background-size:145% 145%;background-position:var(--foil-offset-x) var(--foil-offset-y);
  mask-image:linear-gradient(90deg,#000b,transparent 45%,transparent 55%,#000b);
}
.is-foil-active>.skill-book-card-print>.skill-book-card-foil{opacity:.85}
.skill-book-card-print>.skill-book-card-header{padding:2px 0 0;border:0;background:none;box-shadow:none}
.skill-book-card-print>.skill-book-card-sigil.has-full-art{
  flex:1 0 clamp(120px,22dvh,200px);height:auto;min-height:120px;margin:0;border:0;background:none;box-shadow:none;
}
.skill-book-card-print>.skill-book-card-sigil::after{display:none}
.skill-book-card-print>.skill-book-card-effect{padding:6px 0;border:0;background:none;box-shadow:none}
.skill-book-card-print .skill-book-card-effect-heading{border-color:#e7cf9b55}
.skill-book-card-print .skill-book-card-effect-heading>small{color:#ffe6aa}
.skill-book-card-print .skill-book-card-cost{color:#fff0ce}
.skill-book-card-print .skill-book-card-cost>span{border-color:#cfdfef55;background:#07111b80}
.skill-book-card-print .skill-book-card-description,.skill-book-card-print .skill-book-card-stacks p{color:#fff}
.skill-book-card-print .skill-book-card-conditions>span{border-color:#cfdfef55;background:#07111b80;color:#e1eef8}
.skill-book-card-print .skill-book-card-stack-rule,.skill-book-card-print .skill-book-card-stack-details>small,.skill-book-card-print .skill-book-card-stacks small,.skill-book-card-print .skill-book-card-stacks>div>span{color:#ffe3a1}
.skill-book-card-print .skill-book-card-stack-rule small{color:#e0eaf1}
.skill-book-card-print .skill-book-card-stack-details[open]{background:#06101b80}
.skill-book-card-print :is(.skill-book-card-header,.skill-book-card-effect,.skill-book-card-source,.skill-book-card-collection-status,.skill-book-card-flavor,.skill-book-card-acquired-stamp),
.skill-book-card-print .skill-book-card-effect :is(p,small,summary,span){text-shadow:-1px -1px 0 #050a13,1px 1px 0 #050a13,0 2px 4px #000,0 0 8px #000}
.skill-book-card-print>.skill-book-card-flavor{margin:0;color:#e1d6c1}
.skill-book-card-print>.skill-book-card-source{padding:6px 0 0;margin:0;border-top:1px solid #e7cf9b55;border-bottom:0;color:#ebeff2}
.skill-book-card-print .skill-book-card-source :is(small,summary){color:#cfdae1}
.skill-book-card-print>.ability-detail-actions{margin-top:0}
.skill-book-card-print>.skill-book-card-acquired-stamp{margin:0;padding:2px 0 0}
/* Party cards keep all combat data compact enough for a phone's battle viewport. */
.party-detail-dialog.party-detail-card{grid-template-areas:"heading" "art" "effect";gap:7px;padding:10px;align-content:start}
.party-detail-card>.party-detail-heading{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 9px}
.party-detail-card .skill-book-card-category{display:flex;align-items:center;margin:0 0 3px;letter-spacing:.04em}
.party-detail-card .party-detail-member-index{display:inline;width:auto;height:auto;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#e6cd91;font-size:.65rem}
.party-detail-card .skill-book-card-title h2{margin:0;font-size:1.2rem;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.party-detail-card .inventory-filter-close{flex:none;width:44px;height:44px;min-height:44px;align-self:center}
.party-detail-card>.party-detail-summary{grid-area:art;grid-template-columns:minmax(96px,48%) minmax(0,1fr);grid-template-areas:"vitals vitals" "portrait stats" "row row";margin:0;border:1px solid #b69b63;border-radius:2px;background:#111e2d;box-shadow:inset 0 0 0 2px #111a27}
.party-detail-card .party-detail-art{grid-area:portrait;height:auto;min-height:124px;align-self:stretch;grid-template:minmax(0,1fr)/minmax(0,1fr);padding:4px;place-items:center;border-right-color:#b69b6355;background-image:linear-gradient(90deg,#6de4f326 1px,transparent 1px),linear-gradient(0deg,#6de4f326 1px,transparent 1px),radial-gradient(ellipse at 50% 70%,#27536b,#0c1829 78%);background-size:20px 20px,20px 20px,100% 100%}
.party-detail-card .party-detail-art .actor-image{width:100%;height:100%;min-height:0;max-width:100%;max-height:100%;object-fit:contain;object-position:center}
.party-detail-card .party-detail-vitals{grid-area:vitals;position:relative;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,.65fr);align-items:center;gap:8px;padding:7px 8px;border-bottom:1px solid #b69b6355}
.party-detail-card .party-detail-vital{grid-template-columns:auto minmax(0,1fr);gap:3px 5px}
.party-detail-card .party-detail-vital>span{font-size:.66rem;line-height:1.3;color:#d4dfdf}
.party-detail-card .party-detail-vital>strong{justify-self:end;font-size:.75rem;line-height:1.3;color:#f0e8eb;overflow-wrap:anywhere}
.party-detail-card .party-detail-vital>strong small{font-size:.65rem;color:#b8c0c7}
.party-detail-card .party-detail-vital progress{height:5px}
.party-detail-card .party-detail-barrier{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px;padding:0 0 0 7px;border-top:0;border-left:1px solid #b8c0c733;align-self:stretch;align-content:start;align-items:baseline}
.party-detail-card .party-detail-barrier strong{justify-self:end;line-height:1.3;overflow-wrap:anywhere}
.party-detail-card .party-detail-barrier span{border:0;font-size:.66rem;line-height:1.3;color:#b8c0c7;letter-spacing:0}
.party-detail-card .party-detail-row{grid-area:row;display:block;margin:0;padding:4px 8px;border:0;border-top:1px solid #b69b6355;border-radius:0;background:none;color:#b8c0c7;font-size:.6rem;line-height:1.4;letter-spacing:0;overflow-wrap:anywhere}
.party-detail-card .party-detail-row .party-row-badge{display:inline-flex;justify-content:center;border:1px solid #b8c0c755;font-size:inherit;line-height:inherit;letter-spacing:0;padding:0 3px}
.party-detail-card .party-detail-defeated{position:static;grid-column:1/-1;justify-self:start;padding:1px 5px;font-size:.66rem}
.party-detail-card>.party-detail-card-body{padding:6px 10px}
.party-detail-card .party-detail-section{gap:4px;margin:0;padding:4px 0;border-color:#8b734955}
.party-detail-card .party-detail-section:first-child{padding-top:0;border-top:0}
.party-detail-card .party-detail-section:last-child{padding-bottom:0}
.party-detail-card .party-detail-section-heading{display:flex;justify-content:space-between;gap:6px}
.party-detail-card .party-detail-section-heading>strong{color:#514329;font-family:inherit;font-size:.72rem}
.party-detail-card .party-detail-section-heading>em{color:#665944;font-size:.63rem;letter-spacing:0}
.party-detail-card .party-detail-skills,.party-detail-card .party-detail-extra-skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;border:0;border-radius:0;background:none}
.party-detail-card .party-detail-extra-skills{margin-top:6px}
.party-detail-card .party-detail-extra-skills[hidden]{display:none}
.party-detail-card .party-detail-skill{grid-template-columns:26px minmax(0,1fr);align-content:start;gap:4px 5px;min-height:0;padding:6px;border:1px solid #99846270;border-radius:3px;background:#fff4d740}
.party-detail-card .party-detail-skill+.party-detail-skill{border-top:1px solid #99846270}
.party-detail-card .party-detail-skill::before{display:none}
.party-detail-card .party-detail-skill.is-unset{opacity:1}
.party-detail-card .party-detail-skill-icon{width:26px;height:26px;border-color:#99846270;border-radius:4px;background:#111e2d}
.party-detail-card .party-detail-skill .command-icon{width:24px;height:24px}
.party-detail-card .party-detail-skill>div{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;align-items:baseline}
.party-detail-card .party-detail-skill>div>small{grid-column:1;grid-row:auto;color:#6b572f;font-size:.59rem;letter-spacing:0;line-height:1.3}
.party-detail-card .party-detail-skill>div>strong{grid-column:1;grid-row:auto;color:#302b24;font-size:.76rem;line-height:1.3;overflow-wrap:anywhere}
.party-detail-card .party-detail-skill>div>strong em{margin-left:2px;color:#665944;font-size:.63rem;white-space:nowrap}
.party-detail-card .party-detail-skill p{grid-column:1/-1;margin:0;color:#514329;font-size:.65rem;line-height:1.4;overflow-wrap:anywhere}
.party-detail-card .party-detail-skill.is-empty{display:flex;flex-direction:column;justify-content:center;gap:3px;min-height:68px;color:#665944}
.party-detail-card .party-detail-skill.is-empty>small{font-size:.59rem}
.party-detail-card .party-detail-skill.is-empty>strong{font-size:.76rem}
.party-detail-card .party-detail-more{display:grid;align-content:center;justify-items:center;gap:5px;min-width:0;min-height:68px;padding:8px;border:1px solid #9c8457;border-radius:3px;background:#fff4d766;color:#514329;cursor:pointer}
.party-detail-card .party-detail-more>strong{font-size:.78rem}
.party-detail-card .party-detail-more>small{font-size:.63rem;color:#665944}
.party-detail-card .party-detail-more:focus-visible{outline:2px solid #514329;outline-offset:2px}
.party-detail-card .party-detail-stat-grid{grid-area:stats;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:6px;border:0;background:none;align-content:center}
.party-detail-card .party-detail-stat-grid>div{display:grid;grid-template-columns:minmax(0,1fr);gap:1px;min-height:0;padding:3px;border:1px solid #99846255;border-radius:2px;background:#fff4d740;text-align:center}
.party-detail-card .party-detail-stat-grid span{color:#665944;font-size:.6rem;line-height:1.3}
.party-detail-card .party-detail-stat-grid strong{color:#302b24;font-family:inherit;font-size:.76rem;line-height:1.3;overflow-wrap:anywhere}
.party-detail-card .party-detail-summary .party-detail-stat-grid>div{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3px;padding:3px;border-color:#b8c0c733;background:#ffffff08;text-align:left}
.party-detail-card .party-detail-summary .party-detail-stat-grid span{display:block;border:0;color:#b8c0c7;font-size:.59rem;letter-spacing:0}
.party-detail-card .party-detail-summary .party-detail-stat-grid strong{color:#f0e8eb;font-size:.72rem;text-align:right}
.party-detail-card .party-detail-effects .battle-state-badges{gap:4px}
.party-detail-card .battle-state-badge{min-width:0;padding:3px 5px;border-color:#99846270;border-radius:2px;background:#fff4d740;color:#53472f;font-size:.66rem}
.party-detail-card .battle-state-badge.positive{border-color:#668056;color:#39552d}
.party-detail-card .battle-state-badge.negative{border-color:#a45d47;color:#813d2d}
.party-detail-card .battle-state-badge.neutral{border-color:#5b7989;color:#36576a}
.party-detail-card .battle-state-badge small{color:inherit;font-size:.61rem;overflow-wrap:anywhere}
.party-detail-card .party-detail-section .battle-state-empty{padding:2px 0;color:#665944;text-align:left;font-size:.66rem;line-height:1.5}
@media(max-width:360px){
  .party-detail-dialog.party-detail-card{padding:10px;gap:6px}
  .party-detail-card>.party-detail-card-body{padding:7px 8px}
  .party-detail-card .party-detail-vitals{padding:7px;gap:4px}
  .party-detail-card .party-detail-vital>strong{font-size:.7rem}
}
/* Victories progressively add metal, gems, foil and a crown; effects remain static. */
.party-detail-card[data-victory-grade]{--card-metal:#ccb475;--card-glow:#a78c57;--card-ink:#e6cd91;border-color:var(--card-metal)}
.party-detail-card .party-detail-heading>div{flex:1}
.party-detail-card .skill-book-card-title{display:flex;align-items:baseline;gap:8px}
.party-detail-card .skill-book-card-title h2{flex:1;min-width:0}
.party-detail-card .party-detail-grade{flex:none;padding:2px 5px;border:1px solid var(--card-metal);border-radius:3px;background:#111e2d;color:var(--card-ink);font-size:.6rem;line-height:1.3;white-space:nowrap}
.party-detail-card .skill-book-card-category .party-detail-victory-count{margin-left:auto;color:var(--card-ink);white-space:nowrap}
.party-detail-card[data-victory-grade="silver"]{--card-metal:#d5e4f2;--card-glow:#88a5c2;--card-ink:#e7f4ff;box-shadow:0 24px 70px #000a,inset 0 0 0 4px #111a27,inset 0 0 0 5px #d5e4f2}
.party-detail-card[data-victory-grade="gold"]{--card-metal:#ffe0a0;--card-glow:#dfad4b;--card-ink:#ffe6ae;box-shadow:0 24px 70px #000a,0 0 14px #dfad4b33,inset 0 0 0 4px #111a27,inset 0 0 0 5px #ffe0a0}
.party-detail-card[data-victory-grade="platinum"]{--card-metal:#e4f9ff;--card-glow:#94d7ec;--card-ink:#e4f9ff;box-shadow:0 24px 70px #000a,0 0 18px #94d7ec44,inset 0 0 0 4px #111a27,inset 0 0 0 5px #e4f9ff,inset 0 0 22px #94d7ec22}
.party-detail-card[data-victory-grade="sapphire"]{--card-metal:#74caff;--card-glow:#2785e6;--card-ink:#a7dcff}
.party-detail-card[data-victory-grade="amethyst"]{--card-metal:#dbacff;--card-glow:#af5bf4;--card-ink:#efd8ff}
.party-detail-card[data-victory-grade="rainbow"]{--card-metal:#f5dfff;--card-glow:#e5b8f0;--card-ink:#fff0d4}
.party-detail-card[data-victory-grade="crown"]{--card-metal:#ffeeb7;--card-glow:#f1d888;--card-ink:#fff1b7}
.party-detail-card:is([data-victory-grade="sapphire"],[data-victory-grade="amethyst"],[data-victory-grade="rainbow"],[data-victory-grade="crown"]){box-shadow:0 24px 70px #000a,0 0 24px color-mix(in srgb,var(--card-glow) 35%,transparent),inset 0 0 0 4px #111a27,inset 0 0 0 5px var(--card-metal),inset 0 0 26px color-mix(in srgb,var(--card-glow) 15%,transparent)}
.party-detail-card:not([data-victory-grade="normal"])>.party-detail-heading{border-color:var(--card-metal);background:linear-gradient(120deg,color-mix(in srgb,var(--card-glow) 30%,#172031),#1c2837 65%,#26262a)}
.party-detail-card:not([data-victory-grade="normal"]) .party-detail-summary{border-color:var(--card-metal)}
.party-detail-card:is([data-victory-grade="platinum"],[data-victory-grade="sapphire"],[data-victory-grade="amethyst"],[data-victory-grade="rainbow"],[data-victory-grade="crown"]) .party-detail-art::after{inset:5px;width:auto;height:auto;border:1px solid color-mix(in srgb,var(--card-metal) 55%,transparent);background:linear-gradient(135deg,#ffffff22,transparent 30% 70%,#ffffff12);box-shadow:none;pointer-events:none}
.party-detail-card:is([data-victory-grade="sapphire"],[data-victory-grade="amethyst"],[data-victory-grade="rainbow"],[data-victory-grade="crown"]) .party-detail-art::before{content:"◆";position:absolute;z-index:2;top:3px;right:7px;color:var(--card-metal);font-size:.85rem;text-shadow:0 0 6px var(--card-glow);pointer-events:none}
.party-detail-card[data-victory-grade="amethyst"] .party-detail-art::after{border-style:double;border-width:3px;background:linear-gradient(135deg,#edbbff33,transparent 30% 60%,#ac70ff22)}
.party-detail-card:is([data-victory-grade="rainbow"],[data-victory-grade="crown"]){background:linear-gradient(145deg,#c4f8ff,#efd3ff 23%,#ffeec1 48%,#bdf5f0 75%,#eec9ff) border-box;border-style:double}
.party-detail-card:is([data-victory-grade="rainbow"],[data-victory-grade="crown"]) .party-detail-art::after{border-color:#fff0cfa6;background:linear-gradient(115deg,#83faff33,transparent 25%,#f9b7ff22 48%,transparent 70%,#fce9a233)}
.party-detail-card[data-victory-grade="rainbow"]::before{right:12px;left:12px;height:3px;background:linear-gradient(90deg,#8dedff,#db9fff,#ffe794,#a0f8d8);box-shadow:0 0 12px #dfc9ff66}
.party-detail-card[data-victory-grade="crown"]{box-shadow:0 24px 70px #000a,0 0 30px #f1d88866,inset 0 0 0 4px #151b2c,inset 0 0 0 5px #fff3ba,inset 0 0 0 7px #ae8748,inset 0 0 32px #f1d88833}
.party-detail-card[data-victory-grade="crown"] .party-detail-grade::before{content:"♛ ";color:#ffeaa2}
.party-detail-card[data-victory-grade="crown"] .party-detail-art::before{content:"✦ ✧ ✦";right:8px;left:8px;text-align:center;color:#fff1b7;letter-spacing:.4em}
.party-detail-card[data-victory-grade="crown"] .party-detail-art::after{border:3px double #fff3ba;background:radial-gradient(circle at 12% 13%,#fff9ca88 0 1px,transparent 2px),radial-gradient(circle at 82% 73%,#c3faff88 0 1px,transparent 2px),linear-gradient(115deg,#fff0b133,transparent 30%,#91faff22 55%,transparent 70%,#f5baff33)}
/* The highest grades become full-art prints with readable information over the art. */
.party-detail-card:has(>.party-detail-print){display:block}
.party-detail-print{position:relative;isolation:isolate;display:grid;grid-template-areas:"heading" "art" "effect";gap:7px;min-width:0;min-height:0;border:1px solid var(--card-metal);background:#0b1425}
.party-detail-full-art{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 35% 35%,#405273,#10192b 80%)}
.party-detail-full-art .actor-image{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;object-position:100% 35%}
.party-detail-card[data-victory-pose="original"] .party-detail-full-art{grid-area:art}
.party-detail-card[data-victory-pose="original"] .party-detail-full-art .actor-image{inset:22% auto 0 0;width:48%;height:78%;object-fit:contain;object-position:center}
.party-detail-card:not([data-victory-pose="original"]) .party-detail-full-art .actor-image{max-height:540px;object-fit:contain;object-position:50% 25%;transform:translateX(-9%)}
.party-detail-card:not([data-victory-pose="original"]) .party-detail-full-art .actor-image:not([src*="/elsia-"]){transform:translateX(-16%)}
.party-detail-card:not([data-victory-pose="original"]) .party-detail-full-art .actor-image:is([src$="/galva-finisher-v2.webp"],[src$="/galva-secret-v1.webp"],[src$="/mistra-finisher-v2.webp"]){transform:translateX(-32%)}
.party-detail-card:not([data-victory-pose="original"]) .party-detail-full-art .actor-image[src$="/mistra-finisher-v2.webp"]{transform:translate(-46%,-9%)}
.party-detail-card:not([data-victory-pose="original"]) .party-detail-full-art .actor-image[src*="/hero-"]{transform:translateX(-30%)}
.party-detail-card[data-victory-pose="secret"] .party-detail-full-art .actor-image[src^="/images/chara/victory-cards/rizel-secret-v1.webp"]{transform:translateX(-16%) scaleX(-1)}
.party-detail-full-art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#06111bbf,transparent 25%,#06111b33 40%,#06111bc9 70%,#06111bf0),linear-gradient(90deg,transparent 35%,#07121a66);pointer-events:none}
.party-detail-card[data-victory-pose="original"] .party-detail-full-art::after{background:linear-gradient(90deg,transparent 35%,#07121a66)}
.party-detail-print>:is(.party-detail-summary,.party-detail-card-body){position:relative;z-index:1}
.party-detail-print>.party-detail-heading{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 9px;border:0;border-bottom:1px solid var(--card-metal);background:#081322c9;box-shadow:none}
.party-detail-print>.party-detail-summary{grid-area:art;grid-template-columns:minmax(96px,48%) minmax(0,1fr);grid-template-areas:"vitals vitals" "portrait stats" "row row";margin:0;border:0;border-radius:0;background:none;box-shadow:none}
.party-detail-print .party-detail-art{border:0;background:none}
.party-detail-print .party-detail-art::before,.party-detail-print .party-detail-art::after{display:none}
.party-detail-print .party-detail-vitals{background:#07132180}
.party-detail-print .party-detail-summary .party-detail-stat-grid>div{border-color:#dce6f04d;background:#071321a6}
.party-detail-print .party-detail-summary .party-detail-stat-grid span,.party-detail-print .party-detail-row{color:#e0e9f2}
.party-detail-print .party-detail-row{background:#07132180}
.party-detail-print>.party-detail-card-body{padding:6px 10px;border:0;border-radius:0;background:#07132166;box-shadow:none;color:#f5f2e7}
.party-detail-print .party-detail-section{border-color:#e6d7b955}
.party-detail-print .party-detail-section-heading>strong,.party-detail-print .party-detail-skill>div>strong{color:#fff4d9}
.party-detail-print .party-detail-section-heading>em,.party-detail-print .party-detail-skill>div>small,.party-detail-print .party-detail-skill>div>strong em,.party-detail-print .party-detail-more>small{color:#e4d9c4}
.party-detail-print .party-detail-skill,.party-detail-print .party-detail-more,.party-detail-print .battle-state-badge{border-color:#e5d3ad66;background:#07132180;color:#fff4d9}
.party-detail-print .party-detail-skill p,.party-detail-print .party-detail-section .battle-state-empty{color:#e5edf3}
.party-detail-print .battle-state-badge.positive{border-color:#b4e9a5;color:#c8f2bb}
.party-detail-print .battle-state-badge.negative{border-color:#efaa95;color:#ffc5b2}
.party-detail-print .battle-state-badge.neutral{border-color:#9bd7f2;color:#c8ecff}
.party-detail-print .party-detail-more:focus-visible{outline-color:#fff0d4}
.party-detail-print :is(h2,strong,span,small,p,em){text-shadow:0 1px 3px #000c}
.party-detail-card[data-victory-grade="rainbow"] .party-detail-print{box-shadow:inset 0 0 0 1px #e9d1ff66,0 0 12px #dcbbff55}
.party-detail-card[data-victory-grade="rainbow"] .party-detail-full-art{background:linear-gradient(135deg,#284354,#48315e 45%,#3a4e47)}
.party-detail-card[data-victory-grade="crown"] .party-detail-print{border:3px double #fff3ba;box-shadow:inset 0 0 24px #f1d88855}
.party-detail-card[data-victory-grade="crown"] .party-detail-full-art::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(circle at 8% 22%,#fff5bc 0 1px,transparent 2px),radial-gradient(circle at 85% 40%,#c3faff 0 1px,transparent 2px),radial-gradient(circle at 15% 65%,#ffd68a 0 1px,transparent 2px),linear-gradient(115deg,#fff0b133,transparent 30%,#91faff22 55%,transparent 70%,#f5baff33)}
.party-detail-card:is([data-victory-grade="rainbow"],[data-victory-grade="crown"]){--foil-x:50%;--foil-y:45%;--foil-angle:112deg;--foil-offset-x:50%;--foil-offset-y:50%}
.party-detail-print>.party-detail-foil{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;mix-blend-mode:screen;opacity:.48;contain:paint;mask-image:linear-gradient(90deg,#000b,transparent 30%,transparent 48%,#0009),linear-gradient(180deg,transparent 22%,#0004 56%,#0007)}
.party-detail-foil::before,.party-detail-foil::after{content:"";position:absolute;inset:0;pointer-events:none}
.party-detail-card.is-foil-active>.party-detail-print>.party-detail-foil{opacity:.8}
.party-detail-filters{position:absolute;inset:0;pointer-events:none}
.party-detail-relief-art{position:absolute;inset:0;pointer-events:none}
.party-detail-relief-art .actor-image{filter:url(#party-detail-relief-filter);mix-blend-mode:soft-light;opacity:.56}
.party-detail-card[data-victory-finish="relief"]{--card-metal:#e3cf9c;--card-glow:#c29c65;--card-ink:#fff0c9;background:linear-gradient(135deg,#e4d8b9,#8f8b81 30%,#e9ddba 55%,#767d88 80%,#d4bf88)}
.party-detail-card[data-victory-finish="relief"]::before{background:linear-gradient(90deg,#ecdeb2,#8d949d,#faf0d1,#aaa28f);box-shadow:0 0 10px #e3cf9c55}
.party-detail-card[data-victory-finish="relief"] .party-detail-print{border:3px double #d9c89f;box-shadow:inset 1px 1px 0 #fff2c9,inset -1px -1px 0 #080b19,0 0 12px #d6bb7a44}
.party-detail-card[data-victory-finish="relief"] .party-detail-full-art{background:radial-gradient(ellipse at 35% 35%,#38414e,#181d28 80%)}
.party-detail-card[data-victory-finish="relief"] .party-detail-full-art>.actor-image{filter:drop-shadow(1px 1px 0 #e3cc94a6) drop-shadow(-1px -1px 0 #060b19) contrast(1.06)}
.party-detail-card[data-victory-finish="relief"] .party-detail-foil::before{background-image:repeating-radial-gradient(ellipse at -15% 10%,transparent 0 13px,#ffe6b84d 13.5px 14.2px,#050a1966 14.8px 16px,transparent 16.5px 24px);mix-blend-mode:soft-light}
.party-detail-card[data-victory-finish="relief"] .party-detail-foil::after{background-image:linear-gradient(var(--foil-angle),transparent 20%,#d1b47a26 35%,#fff1c380 45%,#b9c8db40 52%,transparent 65%);background-size:180% 180%;background-position:var(--foil-offset-x) var(--foil-offset-y)}
.party-detail-card[data-victory-finish="relief"] .party-detail-grade{text-shadow:0 1px 0 #fff0bb66,0 -1px 0 #000;box-shadow:inset 1px 1px 0 #fbe8b566,inset -1px -1px 0 #0009}
.party-detail-card[data-victory-finish="secret"] .party-detail-foil::before{background-image:repeating-linear-gradient(135deg,transparent 0 4px,#d5edffb3 4.4px 5px,transparent 5.4px 9px),linear-gradient(var(--foil-angle),#92f5ff22,#b7a4ff80 30%,#fff0b3a6 48%,#ffb7df80 68%,#b8fff222);background-blend-mode:overlay;background-size:100% 100%,180% 180%;background-position:center,var(--foil-offset-x) var(--foil-offset-y)}
.party-detail-card[data-victory-finish="secret"] .party-detail-foil::after{background-image:radial-gradient(ellipse at var(--foil-x) var(--foil-y),#fff4d766,transparent 58%),radial-gradient(circle,#fff5d8cc .7px,transparent 1.2px),radial-gradient(circle,#b2edffcc .6px,transparent 1.1px);background-size:100% 100%,13px 19px,19px 13px;background-position:center,var(--foil-offset-x) var(--foil-offset-y),var(--foil-offset-y) var(--foil-offset-x);mask-image:radial-gradient(ellipse at var(--foil-x) var(--foil-y),#000,transparent 74%)}
.party-detail-card[data-victory-finish="secret"] .party-detail-grade{border-color:#e9e7ff;background:linear-gradient(115deg,#bcecff,#e5cfff 35%,#fff0c1 60%,#c6fff0);color:#1c233b;text-shadow:none;box-shadow:0 0 8px #d5c6ff55}
.party-detail-card[data-victory-finish="secret"] .party-detail-grade::before{color:#3c3b5b;text-shadow:none}
.party-detail-card:is([data-victory-grade="rainbow"],[data-victory-grade="crown"]) .party-detail-art{touch-action:none}
@media(max-width:360px){.party-detail-print>.party-detail-card-body{padding:7px 8px}}

/* Battle party detail tabs and read-only loadouts. */
.party-detail-card .party-detail-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  background-color: var(--surface-deep);
}
.party-detail-card .party-detail-tabs {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
}
.party-detail-tabs button {
  min-width: 0;
  min-height: 44px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: var(--ga-font-control, .875rem);
  cursor: pointer;
}
.party-detail-tabs button[aria-selected="true"] {
  border-color: var(--selected-border, var(--accent));
  background: var(--selected-bg, var(--surface-2));
  box-shadow: inset 0 -2px var(--selected-border, var(--accent));
  font-weight: 700;
}
.party-detail-tabs button:focus-visible,
.party-detail-card [role="tabpanel"]:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}
.party-detail-card .party-detail-loadout-panel {
  font-size: var(--ga-font-body, .875rem);
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.party-detail-loadout {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.party-detail-loadout > li {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--surface-deep);
  color: var(--text);
}
.party-detail-loadout-heading {
  display: flex;
  align-items: center;
  gap: 8px;
}
.party-detail-loadout-heading > :first-child { flex: none; }
.party-detail-loadout-heading > div { min-width: 0; }
.party-detail-loadout-heading small,
.party-detail-loadout-heading strong { display: block; }
.party-detail-loadout-heading strong { font-size: var(--ga-font-item-name, .8125rem); }
.party-detail-loadout li small { color: var(--muted); }
.party-detail-loadout-effect {
  padding-top: 4px;
  border-top: 1px solid var(--line);
}
.party-detail-loadout-panel p { margin: 0; }

/* Skill details share a frame-external close control, including collection techniques. */
.skill-card-modal {
  display: flex; flex-direction: column; gap: 12px;
  width: min(100%, 420px); max-height: calc(100dvh - 32px); min-width: 0;
}
.skill-card-modal > .skill-card-modal-card {
  width: 100%; min-height: 0; max-height: calc(100dvh - 88px); flex: 0 1 auto;
}
.skill-card-modal-card .skill-book-card-title,
.skill-card-modal-card .skill-book-card-title h2 { min-width: 0; max-width: 100%; }
.skill-card-modal-footer { flex: none; }
.skill-card-modal-footer .secondary-button { width: 100%; min-height: 44px; }
.ability-detail-dialog.skill-card-modal-card .skill-book-card-header { grid-template-columns: minmax(0, 1fr); }
.skill-card-modal.orb-card-dialog {
  width: min(100%, 420px); max-height: calc(100dvh - 32px);
  padding: 0; border: 0; border-radius: 0; overflow: visible;
  background: transparent; color: var(--text);
}
.orb-card-dialog > .skill-card-modal-card { flex: 1 1 auto; max-height: none; }
.orb-card-footer { padding: 12px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); }
.orb-card-footer p { margin: 0 0 8px; font-size: var(--ga-font-body); line-height: 1.5; overflow-wrap: anywhere; }
.orb-card-footer > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.orb-card-footer button { min-width: 0; }
.orb-picker-current > .orb-picker-current-open {
  display: grid; grid-template-columns: auto 26px minmax(0, 1fr) auto; align-items: center; gap: 7px;
  width: 100%; min-height: 44px; padding: 4px 8px; border: 0;
  background: transparent; color: inherit; text-align: left;
}
.orb-picker-dialog .orb-picker-item.is-limit-reached { cursor: pointer; }
.grimoire-detail-footer > .grimoire-detail-purchase { grid-template-columns: minmax(0, 1fr); }
.grimoire-detail-footer > .secondary-button { width: 100%; min-height: 44px; }

/* Keep battle cards and their live-update IDs inside an external close dialog. */
.battle-detail-modal > .enemy-detail-card,
.battle-detail-modal > .party-detail-card {
  width: 100%; min-height: 0; max-height: calc(100dvh - 100px); flex: 0 1 auto;
}
.battle-detail-modal .party-detail-card .party-detail-heading,
.battle-detail-modal .enemy-detail-card > .skill-book-card-header { grid-template-columns: minmax(0, 1fr); }
