.magic-orb-screen{max-width:760px;margin-inline:auto}.magic-orb-screen header p,.magic-orb-screen>p{line-height:1.7}.orb-counts{font-variant-numeric:tabular-nums;color:#e3d5a4}.orb-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.orb-slot{display:flex;min-height:116px;min-width:0;align-items:center;flex-direction:column;justify-content:space-between;gap:6px;padding:9px 4px;border:1px solid #647386;border-radius:10px;background:#182332;color:#edf1f6}.orb-slot strong{font-size:12px;overflow-wrap:anywhere}.orb-slot small{font-size:11px}.orb-slot.dormant{background:#24272d;color:#b1b6bd;border-style:dashed}.orb-slot.dormant .magic-orb{filter:grayscale(1);opacity:.55}.magic-orb{--orb:#8d98ac;display:inline-grid;width:32px;height:32px;flex-shrink:0;place-items:center;border-radius:50%;border:1px solid #fff8;box-shadow:inset -5px -6px 9px #0008,0 0 8px color-mix(in srgb,var(--orb),transparent 55%);background:radial-gradient(circle at 32% 25%,#ffffffe6 0%,var(--orb) 38%,#172336 100%);color:#fff;font-size:12px;font-weight:800;text-shadow:0 1px 3px #000}.magic-orb.attack{--orb:#d85458}.magic-orb.heal{--orb:#48b77c}.magic-orb.support{--orb:#4e9bd5}.magic-orb.passive{--orb:#cfaa3f}.magic-orb.curse{--orb:#a36ed5}.magic-orb.empty{box-shadow:inset 0 0 9px #0008;--orb:#546070}.orb-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.orb-actions button,.orb-owned button{min-height:44px;padding:8px 12px}.magic-orb-screen fieldset{display:grid;gap:10px;margin-top:16px;padding:12px;border:1px solid #586675;border-radius:8px}.magic-orb-screen label,.orb-dialog label{display:flex;align-items:center;gap:8px}.magic-orb-screen select,.orb-owned select,.orb-dialog input,.orb-dialog select{min-height:44px;max-width:100%;padding:8px;background:#142032;color:#eef4fa;border:1px solid #687c91;border-radius:6px}.orb-backdrop{position:fixed;inset:0;z-index:1200;background:#000b;display:grid;place-items:center;padding:16px}.orb-dialog{background:#182331;color:#eef4fa;width:min(100%,560px);max-height:85dvh;overflow:auto;padding:20px;border:1px solid #7e94a8;border-radius:14px;line-height:1.7}.orb-dialog h2{margin-top:0}.orb-inventory{display:grid;gap:8px;margin:12px 0}.orb-inventory>button,.orb-inventory>div{display:flex;text-align:left;align-items:center;gap:10px;padding:10px;border:1px solid #58697c;border-radius:8px;background:#152131;color:#edf4fb}.orb-inventory small{display:block;line-height:1.6;font-size:12px}.orb-owned{margin-top:20px}.orb-owned>label{display:block}.orb-inventory>div>button{margin-left:auto}.magic-orb-screen button:focus-visible,.orb-dialog button:focus-visible{outline:3px solid #bcdafa;outline-offset:2px}.orb-shop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(min-width:680px){.orb-slot{min-height:128px}.orb-slot strong{font-size:14px}}@media(prefers-reduced-motion:reduce){.magic-orb{transition:none}}
.orb-shop-card{display:grid;gap:10px;min-width:0;padding:14px;border:1px solid #65748a;border-radius:12px;background:#182332;color:#edf1f6}.orb-shop-card .grimoire-book-detail{display:grid;justify-items:center;gap:10px;min-width:0;padding:12px 4px;background:transparent;color:inherit;border:0}.orb-shop-card .magic-orb{width:48px;height:48px;font-size:16px}.orb-shop-card strong{overflow-wrap:anywhere}.orb-migration-pending{padding:12px;border:1px solid #a5905c;border-radius:8px;background:#302a1a;line-height:1.6}

/* Magic orbs: original shop cards, illustrated pearls, and five primary tabs. */
.navigation { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.magic-orb:not(.empty) { position:relative; isolation:isolate; width:40px; height:40px; border:0; background:none; box-shadow:none; overflow:visible; }
.magic-orb:not(.empty)>img { display:block; width:100%; height:100%; max-width:none; object-fit:contain; filter:drop-shadow(0 2px 4px #0009); }
/* Rare-art loot rings share the pearl's 40px frame, rather than the old 34px book frame. */
.expedition-result-books .expedition-result-book-icon:has(> .magic-orb) { width:40px; height:40px; flex:0 0 40px; }
.magic-orb .orb-skill-imprint { position:absolute; z-index:1; inset:17%; overflow:hidden; border-radius:50%; pointer-events:none; }
.magic-orb .orb-skill-imprint>img { position:absolute; display:block; max-width:none; margin:0; object-fit:contain; filter:grayscale(.25) brightness(1.15) drop-shadow(0 1px 1px #0008); }
.magic-orb .orb-skill-core { width:78%; height:78%; left:11%; top:11%; opacity:.7; }
.magic-orb .orb-skill-echo { width:27%; height:27%; opacity:.24; }
.magic-orb .orb-skill-echo-one { left:1%; top:5%; transform:rotate(-25deg); }
.magic-orb .orb-skill-echo-two { right:0; bottom:4%; transform:rotate(22deg); opacity:.18; }
.orb-slot .magic-orb:not(.empty) { width:52px; height:52px; }
.orb-slot.dormant .magic-orb { opacity:.5; }
.orb-shop-link { margin:12px 0 20px; }
.orb-shop-link button { min-height:44px; }
.orb-shop-legend { display:flex; flex-wrap:wrap; gap:6px 12px; margin:14px 0 22px; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:#0d151780; }
.orb-shop-legend>span { display:flex; align-items:center; gap:5px; font-size:12px; color:var(--muted); }
.orb-shop-legend img { display:block; object-fit:contain; }
.magic-orb-shop-card .grimoire-book-art { display:grid; place-items:center; width:100%; max-width:112px; }
.magic-orb-shop-card .grimoire-book-art .magic-orb { width:100%; height:auto; aspect-ratio:1; }
.magic-orb-shop-card .grimoire-book-art .magic-orb>img { position:static; width:100%; height:100%; object-fit:contain; }
.magic-orb-shop-card .grimoire-book-skill { display:none; }
/* Pearl shop shares the editor's surfaces and keeps purchase controls next to the price. */
#app > .orb-store-screen .grimoire-shop {
  display: grid;
  gap: var(--ga-space-2);
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.orb-store-balance { justify-content: flex-start; }
.orb-store-balance .grimoire-price { font-size: var(--ga-font-note); white-space: normal; overflow-wrap: anywhere; }
.orb-store-balance .grimoire-price img { width: 16px; height: 16px; }
.orb-store-screen .arcane-section-heading {
  flex-wrap: wrap;
  gap: 4px 12px;
  margin: 0;
}
.orb-store-screen .arcane-section-heading h2 { color: var(--text); font-size: var(--ga-font-section); }
.orb-store-screen .arcane-section-heading small { color: var(--muted); font-size: var(--ga-font-note); }
#app > .orb-store-screen .grimoire-shelf-tabs {
  max-width: none;
  margin: 0;
  padding: 0 2px 2px;
  border: 0;
  border-block-end: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
}
#app > .orb-store-screen .grimoire-shelf-tabs button {
  min-height: var(--ga-touch);
  border: 0;
  border-block-end: 2px solid transparent;
  border-radius: var(--ga-radius-control) var(--ga-radius-control) 0 0;
  background: transparent;
  box-shadow: none;
  color: var(--muted);
  font-size: var(--ga-font-control);
}
#app > .orb-store-screen .grimoire-shelf-tabs button[aria-selected="true"] {
  border-block-end-color: var(--selected-border);
  background: color-mix(in srgb, var(--selected-start) 35%, transparent);
  color: var(--selected-text);
  box-shadow: none;
}
.orb-store-screen .grimoire-shop-guide { margin: 0; font-size: var(--ga-font-note); }
.orb-store-screen .grimoire-shop-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--ga-space-1);
  max-width: none;
  margin: 0;
}
.orb-store-screen .grimoire-shop-grid > .library-empty { grid-column: 1 / -1; }
.orb-store-screen .magic-orb-shop-card {
  display: grid;
  grid-template: "detail price" auto "detail buy" auto / minmax(0, 1fr) minmax(0, 7rem);
  align-items: center;
  gap: 4px 8px;
  padding: var(--ga-space-2);
  border: 0;
  border-block-end: 1px solid var(--line);
  border-radius: var(--ga-radius-panel);
  background: var(--surface);
}
.orb-store-screen .grimoire-book-detail {
  display: grid;
  grid-area: detail;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: var(--ga-space-2);
  align-self: stretch;
  min-height: var(--ga-touch);
  text-align: start;
}
.orb-store-screen .grimoire-book-art { width: 40px; max-width: 100%; }
.orb-store-screen .orb-shop-copy { display: grid; justify-items: start; gap: 3px; min-width: 0; }
.orb-store-screen .orb-shop-copy strong { min-height: 0; font-size: var(--ga-font-item-name); }
.orb-store-screen .orb-shop-stock { display: flex; flex-wrap: wrap; gap: 2px 8px; }
.orb-store-screen .orb-shop-stock small { font-size: var(--ga-font-note); line-height: 1.45; }
.orb-store-screen .magic-orb-shop-card > .grimoire-price {
  grid-area: price;
  font-size: var(--ga-font-body);
  white-space: normal;
  overflow-wrap: anywhere;
}
.orb-store-screen .magic-orb-shop-card > .grimoire-price img { width: 18px; height: 18px; }
.orb-store-screen .magic-orb-shop-card > .grimoire-purchase-hold { grid-area: buy; min-width: 0; min-height: var(--ga-action-height); padding: 6px 4px; }
.orb-store-screen .magic-orb-shop-card .grimoire-buy-copy small { font-size: var(--ga-font-note); }
.orb-store-screen .grimoire-shop-refresh {
  align-items: start;
  gap: var(--ga-space-2);
  padding: var(--ga-space-3) 0;
  border-block-start: 1px solid var(--line);
}
.orb-store-screen .grimoire-shop-refresh p { text-align: start; font-size: var(--ga-font-note); }
.orb-store-screen .grimoire-refresh-button { min-width: 0; }
.orb-store-screen .orb-store-legend > summary { min-height: var(--ga-touch); align-content: center; color: var(--muted); font-size: var(--ga-font-note); cursor: pointer; }
.orb-store-screen .orb-store-legend .orb-shop-legend { margin: 0; padding: 8px 0; border: 0; }
.orb-store-screen .grimoire-facility-link { margin: 0; }
.orb-store-screen #grimoire-shop-panel>.orb-owned { margin:0; padding:0; border:0; }
.orb-store-screen #grimoire-shop-panel>.orb-owned>h2 { display:none; }
.orb-store-screen .orb-inventory { gap: var(--ga-space-1); }
.orb-store-screen .orb-inventory > div {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) minmax(0, 7rem);
  gap: var(--ga-space-2);
  border: 0;
  border-block-end: 1px solid var(--line);
  border-radius: var(--ga-radius-panel);
  background: var(--surface);
  color: var(--text);
  overflow-wrap: anywhere;
}
.orb-store-screen .orb-inventory > div > .magic-orb { width: 36px; height: 36px; }
.orb-store-screen .orb-inventory > div > button {
  width: 100%;
  margin: 0;
  padding-inline: 4px;
  border: 1px solid var(--ga-control-border);
  border-radius: var(--ga-radius-control);
  background: var(--ga-control-bg);
  color: var(--text);
  font-size: var(--ga-font-control);
}
@media (min-width: 800px) {
  .orb-store-screen :is(.grimoire-shop-grid, .orb-inventory) { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--ga-space-3); }
}
.orb-dialog label { display:grid; grid-template-columns:68px minmax(0,1fr); margin:8px 0; }
.orb-dialog input,.orb-dialog select { min-width:0; width:100%; box-sizing:border-box; }


.magic-orb-screen { gap:18px; }
.magic-orb-screen .ability-member-tabs { margin:0; }
.magic-orb-screen .orb-member-tabs { gap:6px; padding:2px 1px 6px; scroll-padding:4px; }
.magic-orb-screen .orb-member-tabs button {
  display: grid;
  grid-template-rows: 46px auto;
  align-content: start;
  justify-items: center;
  gap: 5px;
  flex: 0 0 96px;
  min-width: 0;
  min-height: 96px;
  padding: 7px 6px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: linear-gradient(145deg, var(--surface), var(--surface-deep));
  color: var(--muted);
}
.magic-orb-screen .orb-member-tabs button[aria-pressed="true"] {
  border-color: var(--selected-border);
  background: linear-gradient(145deg, color-mix(in srgb, var(--selected-start) 32%, var(--surface)), var(--surface));
  color: var(--selected-text);
  box-shadow: inset 0 -2px var(--selected-border);
}
.magic-orb-screen .orb-member-tabs button strong { width:100%; min-width:0; min-height:2.8em; white-space:normal; overflow-wrap:anywhere; font-size:13px; line-height:1.4; font-weight:500; }
.orb-person-card { display:grid; grid-template-columns:64px minmax(0,1fr); gap:12px; padding:20px; border:1px solid var(--line); border-radius:8px; background:radial-gradient(ellipse at 0 0,#b89e4a16,transparent 70%),var(--surface); }
.orb-person-emblem { display:grid; place-items:center; }
.orb-person-emblem .magic-orb { width:64px; height:64px; }
.orb-person-emblem .actor-image { display:block; width:100%; height:76px; object-fit:contain; }
.orb-person-copy h2 { margin:3px 0 6px; font-size:19px; letter-spacing:.05em; }
.orb-person-copy p { margin:0; color:var(--muted); font-size:12px; line-height:1.7; }
.orb-person-copy .eyebrow,.orb-section-heading .eyebrow { font-size:10px; letter-spacing:.16em; color:var(--accent); margin:0 0 4px; }
.orb-counts { display:grid; grid-column:1/-1; grid-template-columns:repeat(3,minmax(0,1fr)); padding-top:14px; border-top:1px solid var(--line); }
.orb-counts>span { text-align:center; border-right:1px solid var(--line); }
.orb-counts>span:last-child { border:0; }
.orb-counts small { display:block; color:var(--muted); font-size:11px; }
.orb-counts b { font-size:25px; line-height:1.5; font-weight:600; color:var(--text); }
.orb-counts em { font-size:12px; font-style:normal; font-weight:400; color:var(--muted); margin-left:4px; }
.orb-setting-card { min-width:0; }
.orb-setting-card .orb-section-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:0; }
.orb-section-heading h2 { font-size:17px; margin:0; }
.orb-section-heading button { min-height:44px; padding:8px 12px; white-space:nowrap; font-size:12px; }
.orb-setting-card .orb-shop-legend { padding:8px 0; margin:12px 0; background:none; border:0; gap:8px 12px; }
.orb-drag-help { padding:10px 12px; border-left:2px solid var(--accent); background:#bda34b0a; font-size:12px; line-height:1.8; color:var(--muted); }
.orb-slot-grid { gap:10px; margin-top:16px; }
.orb-slot { position:relative; min-height:134px; gap:7px; padding:9px 7px; border:1px solid #9d895b66; border-radius:8px; background:radial-gradient(ellipse at 50% 40%,#baa05812,transparent 72%),linear-gradient(145deg,#1c2425,#11191d); color:var(--text); box-shadow:inset 0 1px #ddc89612; -webkit-touch-callout:none; user-select:none; -webkit-user-select:none; touch-action:pan-y; }
.orb-slot.has-orb { cursor:grab; }
.orb-slot small { display:flex; justify-content:space-between; align-items:center; width:100%; color:#a99368; font-size:10px; letter-spacing:.04em; }
.orb-slot small b { font-size:12px; font-weight:500; }
.orb-slot strong { font-size:12px; line-height:1.5; font-weight:500; text-align:center; }
.orb-slot .magic-orb:not(.empty) { width:58px; height:58px; }
.orb-slot img { pointer-events:none; -webkit-user-drag:none; }
.orb-slot.is-empty { border-color:var(--line); background:#10161988; box-shadow:none; }
.orb-slot.is-empty strong { color:var(--muted); }
.orb-slot .magic-orb.empty { width:46px; height:46px; background:none; border:1px dashed #7b887c66; box-shadow:inset 0 0 16px #0004; font-size:11px; color:var(--muted); }
.orb-slot.dormant { background:#14191a; border-color:#75807855; border-style:dashed; color:var(--muted); }
.orb-slot.dormant small { color:var(--muted); }
.orb-dormancy-divider { grid-column:1/-1; display:flex; flex-wrap:wrap; align-items:center; gap:5px 10px; margin:9px 0 0; padding:10px 0 2px; border-top:1px dashed #75807866; font-size:10px; line-height:1.7; color:var(--muted); }
.orb-dormancy-divider span { font-size:12px; }
.orb-slot.is-lifted,.orb-slot.is-carried { border-color:var(--accent); background:#bda34b20; box-shadow:0 0 0 2px #bda34b44; }
.orb-slot.is-lifted .magic-orb { opacity:.2; }
.orb-slot.is-drop-target { outline:2px solid #c9b576; outline-offset:2px; background:#bda34b2a; }
.orb-drag-ghost { position:fixed; top:0; left:0; z-index:1300; pointer-events:none; width:72px; height:72px; display:grid; place-items:center; will-change:transform; filter:drop-shadow(0 10px 10px #000b) drop-shadow(0 0 9px #c5a75788); }
.orb-drag-ghost .magic-orb:not(.empty) { width:72px; height:72px; }
body.orb-dragging { cursor:grabbing; user-select:none; -webkit-user-select:none; overscroll-behavior:contain; }
.orb-combat-buttons.workshop-books { padding:18px; margin:0; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.orb-combat-buttons legend { padding:0 7px; font-size:16px; color:var(--text); }
.orb-combat-buttons>div { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.orb-combat-buttons label { display:grid; gap:6px; min-width:0; font-size:12px; color:var(--muted); }
.orb-combat-buttons select { min-width:0; width:100%; background:#10191b; border-color:var(--line); font-size:13px; }
.orb-combat-buttons .orb-command-grid { gap:10px; }
.orb-command-trigger { display:grid; grid-template-columns:32px minmax(0,1fr) 12px; align-items:center; gap:7px; width:100%; min-width:0; min-height:100px; padding:10px; border:1px solid #a08a5866; border-radius:7px; background:radial-gradient(ellipse at 0 0,#b69a4418,transparent 80%),linear-gradient(145deg,#202b2a,#101a1e); color:var(--text); text-align:left; box-shadow:inset 0 1px #ead9a115; font:inherit; }
.orb-command-number { grid-column:1/-1; color:#bcaa7b; font-size:11px; letter-spacing:.08em; }
.orb-command-trigger .magic-orb:not(.empty),.orb-command-trigger .magic-orb.empty { width:32px; height:32px; }
.orb-command-copy { display:grid; gap:4px; min-width:0; }
.orb-command-copy strong { color:#e8dfc5; font-size:13px; line-height:1.5; font-weight:500; overflow-wrap:anywhere; }
.orb-command-copy small { color:#9fb1a7; font-size:10px; line-height:1.5; }
.orb-command-arrow { color:#c2ab72; }
.orb-command-trigger.is-dormant { border-style:dashed; opacity:.7; }
.orb-command-trigger:disabled { opacity:.5; }
html:has(.orb-command-dialog),html:has(.orb-command-dialog) body { overflow:hidden; overscroll-behavior:none; }
.orb-command-backdrop { padding:12px; background:#04090cdb; backdrop-filter:blur(5px); }
.orb-command-dialog { display:flex; flex-direction:column; min-width:0; width:min(100%,500px); max-height:calc(100dvh - 24px); padding:0; overflow:hidden; border:1px solid #b39a636b; border-radius:12px; background:linear-gradient(135deg,#182323,#10171c 68%); box-shadow:0 24px 80px #000b,inset 0 1px #e6d3a126; }
.orb-command-dialog .orb-picker-heading { padding:10px 14px; }
.orb-command-dialog .orb-picker-heading p { margin:3px 0 0; font-size:11px; color:#a6b4a9; }
.orb-command-options { display:grid; grid-auto-rows:max-content; align-content:start; gap:8px; min-height:0; overflow:auto; overscroll-behavior:contain; padding:12px; }
.orb-command-option { display:flex; align-items:center; gap:12px; width:100%; min-height:76px; min-width:0; padding:10px 12px; border:1px solid #788d7845; border-radius:7px; background:#101b21; color:var(--text); text-align:left; font:inherit; }
.orb-command-option .magic-orb { flex-shrink:0; }
.orb-command-option .orb-command-copy { flex:1; }
.orb-command-option .orb-command-copy strong { font-size:14px; }
/* Keep command descriptions at the requested 9pt, above the shared note-text rule. */
.orb-command-dialog .orb-command-option .orb-command-copy>span { color:#acbbb2; font-size:9pt; line-height:1.7; white-space:normal; overflow-wrap:anywhere; }
.orb-command-option.is-selected { border-color:#ccb479; background:linear-gradient(135deg,#aa8c342b,#19282b); box-shadow:inset 3px 0 #c6aa67; }
.orb-command-option.is-dormant .magic-orb { opacity:.5; }
.orb-command-check { flex:0 0 16px; color:#cbb47d; font-size:19px; text-align:center; }
.orb-command-footer { flex-shrink:0; padding:10px 12px; border-top:1px solid #b39a6340; background:#111b1e; }
.orb-command-footer p { margin:0 0 8px; font-size:10px; line-height:1.6; color:#b5b49a; }
.orb-command-footer button { width:100%; min-height:44px; border:1px solid #a894615e; border-radius:6px; background:linear-gradient(135deg,#826b354f,#3d382a5c); color:#e6d9b7; font:inherit; font-size:12px; }
@media(max-width:480px) { .orb-command-trigger { grid-template-columns:36px minmax(0,1fr) 12px; min-height:74px; gap:8px; padding:10px 12px; }.orb-command-number { grid-column:auto; grid-row:1/3; text-align:center; }.orb-command-trigger>.magic-orb { display:none; }.orb-command-trigger>.orb-command-copy { grid-column:2; grid-row:1/3; }.orb-command-trigger>.orb-command-arrow { grid-column:3; grid-row:1/3; }.orb-command-copy strong { font-size:14px; }.orb-command-copy small { font-size:11px; } }
@media(hover:hover) { .orb-command-trigger:hover,.orb-command-option:hover { border-color:#c4b076; background-color:#27302c; } }
.orb-cost-note { margin:0; padding-inline:4px; font-size:12px; color:var(--muted); line-height:1.8; }
.orb-save-bar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; padding:14px 16px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.orb-save-bar>span { font-size:12px; color:var(--muted); }
.orb-save-bar button { min-height:46px; padding:10px 16px; }
.orb-readonly { padding:12px; border:1px solid var(--line); color:var(--muted); font-size:12px; }
@media(max-width:480px) {
  .orb-person-card { padding:16px; grid-template-columns:52px minmax(0,1fr); }
  .orb-person-emblem .magic-orb { width:52px; height:52px; }
  .orb-person-emblem .actor-image { height:64px; }
  .orb-person-copy h2 { font-size:17px; }
  .orb-setting-card.workshop-books { padding:14px; }
  .orb-slot-grid { gap:8px; }
  .orb-slot { min-height:124px; padding:8px 4px; }
  .orb-slot .magic-orb:not(.empty) { width:50px; height:50px; }
  .orb-slot strong { font-size:11px; }
  .orb-combat-buttons>div { grid-template-columns:1fr; gap:10px; }
  .orb-combat-buttons label { grid-template-columns:36px minmax(0,1fr); align-items:center; }
  .orb-save-bar { display:grid; justify-content:stretch; text-align:center; }
}
@media(prefers-reduced-motion:reduce) { .orb-drag-ghost { will-change:auto; } }

/* Slot picker: an inset jewel cabinet with the same brass and midnight palette as the workshop. */
html:has(.orb-picker-dialog),html:has(.orb-picker-dialog) body { overflow:hidden; overscroll-behavior:none; }
.orb-picker-backdrop { padding:12px; background:rgb(4 9 12 / 82%); backdrop-filter:blur(5px); }
.orb-picker-dialog { display:flex; flex-direction:column; width:min(100%,660px); height:min(94dvh,820px); max-height:calc(100dvh - 24px); min-width:0; padding:0; overflow:hidden; border:1px solid #b39a636b; border-radius:12px; background:linear-gradient(135deg,#182323,#10171c 68%); box-shadow:0 24px 80px #000b,inset 0 1px #e6d3a126; color:var(--text,#edf1e7); }
.orb-picker-heading { display:flex; align-items:center; gap:8px; flex-shrink:0; padding:6px 12px; border-bottom:1px solid #b39a633b; background:radial-gradient(ellipse at 0 0,#b39a631c,transparent 72%); }
.orb-picker-heading>div { flex:1; min-width:0; }
.orb-picker-heading .eyebrow { margin:0 0 2px; color:#bba574; font-size:9px; letter-spacing:.17em; }
.orb-picker-heading h2 { margin:0; color:#eee3c8; font-size:16px; line-height:1.4; letter-spacing:.06em; }
.orb-picker-heading>div>p:last-child { display:flex; align-items:center; gap:6px; margin:2px 0 0; color:var(--muted,#a8b4b1); font-size:10px; line-height:1.5; }
.orb-picker-heading .orb-picker-member { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.orb-picker-heading>div>p>span:not(.orb-picker-member),.orb-picker-state { flex-shrink:0; }
.orb-picker-heading>div>p>span { color:#d0c199; }
.orb-picker-emblem { display:grid; place-items:center; width:46px; height:46px; flex:0 0 46px; border:1px solid #b39a635e; border-radius:50%; background:radial-gradient(circle,#cab47222,#131d20 70%); box-shadow:inset 0 0 12px #0007,0 0 18px #b39a6310; }
.orb-picker-emblem .magic-orb:not(.empty) { width:36px; height:36px; }
.orb-picker-emblem .magic-orb.empty { width:30px; height:30px; border-style:dashed; opacity:.65; }
.orb-picker-state { padding:1px 6px; border:1px solid #6faf8f5c; border-radius:4px; color:#9ed6ba; font-size:9px; font-weight:400; }
.orb-picker-state.is-dormant { color:#aab3bc; border-color:#82909d66; }
.orb-picker-heading .orb-picker-close { display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px; padding:0; border:1px solid #8b80614d; border-radius:7px; background:#141c1d; color:#d7caa4; font-size:24px; line-height:1; }
.orb-picker-body { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#817452 #10181a; }
.orb-picker-current { margin:6px 12px 0; border:1px solid #71827a33; border-radius:6px; background:#0b13176e; }
.orb-picker-current summary { display:grid; grid-template-columns:auto 26px minmax(0,1fr) auto; align-items:center; gap:7px; min-height:44px; padding:4px 8px; cursor:pointer; list-style:none; }
.orb-picker-current summary::-webkit-details-marker { display:none; }
.orb-picker-current summary:focus-visible { outline:2px solid #e4d09b; outline-offset:-2px; }
.orb-picker-current-label { color:#a8b2a5; font-size:10px; }
.orb-picker-current .magic-orb:not(.empty),.orb-picker-current .magic-orb.empty { width:26px; height:26px; }
.orb-picker-current strong { min-width:0; color:#e1d5b5; font-size:12px; line-height:1.4; font-weight:500; overflow-wrap:anywhere; }
.orb-picker-current-toggle { color:#acb99d; font-size:10px; white-space:nowrap; }
.orb-picker-current p { margin:0; padding:0 8px 8px; color:#9faaa8; font-size:11px; line-height:1.65; overflow-wrap:anywhere; }
.orb-picker-tools { position:sticky; z-index:2; top:0; padding:6px 12px; border-bottom:1px solid #b39a6326; background:linear-gradient(#172124 80%,#172124f5); box-shadow:0 5px 10px #0002; }
.orb-category-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:4px; }
.orb-category-button { display:flex; align-items:center; justify-content:center; min-width:0; min-height:44px; padding:4px 2px; border:1px solid #69796f4d; border-radius:6px; background:linear-gradient(135deg,#28302b80,#121a1c); color:#a9b5ad; text-align:center; box-shadow:inset 0 1px #e8e4b508; }
.orb-category-button>img,.orb-category-button>.orb-category-all { display:none; }
.orb-category-button>span:last-child { display:grid; gap:0; min-width:0; }
.orb-category-button strong { font-size:11px; line-height:1.4; font-weight:500; white-space:nowrap; }
.orb-category-button small { color:#8f9e98; font-size:9px; line-height:1.4; font-variant-numeric:tabular-nums; }
.orb-category-button.is-selected { border-color:#bba36a; background:linear-gradient(135deg,#86703c63,#3b34253d); color:#f0e2bd; box-shadow:inset 0 0 13px #bba36a14,0 0 0 1px #bba36a20; }
.orb-category-button.is-selected small { color:#d4c398; }
.orb-purpose-strip { display:flex; gap:5px; margin-top:6px; overflow-x:auto; overscroll-behavior-x:contain; scrollbar-width:thin; scrollbar-color:#817452 #10181a; }
.orb-purpose-button { display:flex; flex:0 0 auto; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:5px 10px; border:1px solid #69796f4d; border-radius:6px; background:linear-gradient(135deg,#28302b80,#121a1c); color:#b8c1b5; font:inherit; font-size:11px; white-space:nowrap; }
.orb-purpose-button small { color:#8f9e98; font-size:10px; font-variant-numeric:tabular-nums; }
.orb-purpose-button.is-selected { border-color:#bba36a; background:linear-gradient(135deg,#86703c63,#3b34253d); color:#f0e2bd; }
.orb-purpose-button.is-selected small { color:#d4c398; }
.orb-category-all { display:grid; place-items:center; width:28px; height:28px; flex:0 0 28px; border:1px solid #d0ba7b70; border-radius:50%; background:radial-gradient(ellipse at 35% 25%,#f3dfab69,#75633238 48%,#10191f); color:#dac58d; font-size:16px; text-shadow:0 0 8px #f2d3887a; }
.orb-picker-dialog .orb-picker-search { display:grid; grid-template-columns:24px minmax(0,1fr); gap:5px; align-items:center; margin:6px 0 0; padding:0 9px; border:1px solid #7c8c7d57; border-radius:6px; background:#0e171b; color:#a8b5ab; }
.orb-picker-search>span[aria-hidden] { text-align:center; font-size:24px; line-height:1; }
.orb-picker-search input { min-height:44px; padding:8px 0; border:0; border-radius:0; background:none; color:var(--text,#edf1e7); font:inherit; font-size:16px; box-shadow:none; }
.orb-picker-search:focus-within { border-color:#c1ad79; box-shadow:0 0 0 2px #c1ad7917; }
.orb-picker-search input:focus { outline:none; }
.orb-picker-search input::placeholder { color:#7c8e88; font-size:12px; }
.orb-picker-dialog .orb-picker-sort { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:var(--ga-space-2,8px); margin-top:var(--ga-space-2,8px); }
.orb-picker-sort>span { flex-shrink:0; color:var(--muted); font-size:var(--ga-font-note,.75rem); }
.orb-picker-sort select { width:100%; }
.orb-picker-item-title .orb-active-badge { margin-inline-start:var(--ga-space-1,4px); vertical-align:middle; }
.orb-picker-sort-note { flex-basis:100%; margin:0; color:var(--muted); font-size:var(--ga-font-note,.75rem); overflow-wrap:anywhere; }
.orb-picker-list-heading { display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px; margin:7px 12px 5px; }
.orb-picker-list-heading h3 { margin:0; color:#cbb787; font-size:12px; font-weight:500; }
.orb-picker-list-heading>span { color:#a2afa6; font-size:10px; }
.orb-picker-list-heading>small { margin-left:auto; color:#82948d; font-size:10px; }
.orb-picker-list { display:grid; gap:8px; margin:0; padding:0 12px 12px; list-style:none; }
.orb-picker-list>li { min-width:0; }
.orb-picker-item { --picker-orb:#a9b582; display:flex; align-items:center; gap:12px; width:100%; height:100%; min-height:86px; padding:12px 10px; border:1px solid #788d7845; border-left:3px solid var(--picker-orb); border-radius:7px; background:linear-gradient(120deg,color-mix(in srgb,var(--picker-orb),transparent 94%),transparent 70%),#101b21; color:var(--text,#e4e8dc); text-align:left; box-shadow:inset 0 1px #e8e4b508; }
.orb-picker-attack { --picker-orb:#d57372; }.orb-picker-heal { --picker-orb:#75c998; }.orb-picker-defense { --picker-orb:#79afd5; }.orb-picker-support { --picker-orb:#d1b165; }.orb-picker-special { --picker-orb:#b28dd2; }
.orb-picker-item .magic-orb:not(.empty) { width:44px; height:44px; }
.orb-picker-item-copy { display:grid; gap:5px; flex:1; min-width:0; }
.orb-picker-item-title { display:flex; align-items:center; gap:8px; min-width:0; }
.orb-picker-item-title strong { flex:1; color:#e9e2cb; font-size:14px; font-weight:500; line-height:1.4; overflow-wrap:anywhere; }
.orb-picker-item-title small { padding:1px 7px; border:1px solid #7e8b7040; border-radius:4px; background:#b6bd8110; color:#d6cfae; font-size:11px; line-height:1.5; font-variant-numeric:tabular-nums; white-space:nowrap; }
.orb-picker-item-meta { display:flex; align-items:center; flex-wrap:wrap; gap:3px 8px; font-size:10px; line-height:1.4; color:#98aba6; }
.orb-picker-item-meta b { color:var(--picker-orb); font-size:10px; font-weight:400; }
.orb-picker-item-meta em { color:#d8cb9f; font-style:normal; }
.orb-picker-item.is-limit-reached { opacity:1; cursor:not-allowed; border-color:#7b6e564d; border-left-color:#8f8062; background:#171e21; color:#a2aaa5; }
.orb-picker-item.is-limit-reached .magic-orb { opacity:.55; }
.orb-picker-limit { display:block; color:#d2b17b; font-size:11px; line-height:1.5; }
.orb-picker-item-description { color:#adbcb5; font-size:12px; line-height:1.7; overflow-wrap:anywhere; }
.orb-picker-item-arrow { flex:0 0 auto; color:#bba576; font-size:24px; font-weight:400; }
.orb-picker-list .orb-picker-empty { display:grid; grid-column:1/-1; justify-items:center; gap:10px; padding:24px 8px; text-align:center; border:1px dashed #788b7350; border-radius:8px; background:#0c161a66; }
.orb-picker-empty>img { width:40px; height:40px; object-fit:contain; opacity:.65; }
.orb-picker-empty strong { font-size:13px; font-weight:500; color:#c7ba97; }
.orb-picker-empty p { margin:0; color:#97a79e; font-size:11px; line-height:1.7; }
.orb-picker-empty button { min-height:44px; padding:8px 16px; }
.orb-picker-footer { flex-shrink:0; padding:8px 12px; border-top:1px solid #b39a6340; background:#111b1e; box-shadow:0 -4px 12px #0002; }
.orb-picker-footer>p { margin:0 0 4px; color:#a59e83; font-size:10px; line-height:1.5; }
.orb-picker-footer>div { display:flex; gap:8px; }
.orb-picker-footer button { flex:1; min-width:0; min-height:44px; padding:8px 7px; border:1px solid #7e805752; border-radius:6px; background:linear-gradient(#3433224a,#1e2927); color:#cfc7a8; font:inherit; font-size:12px; }
.orb-picker-footer .orb-picker-back { border-color:#a894615e; background:linear-gradient(135deg,#826b354f,#3d382a5c); color:#e6d9b7; }
.orb-picker-footer .orb-picker-discard { border-color:#a76f6957; background:#49302b38; color:#d7a6a1; }
.orb-picker-dialog button:focus-visible { outline:2px solid #e4d09b; outline-offset:2px; }
@media(hover:hover) { .orb-category-button:hover,.orb-picker-item:hover { border-color:#c4b076; background-color:#27302c; }.orb-picker-footer button:hover,.orb-picker-close:hover { filter:brightness(1.17); } }
@media(min-width:620px) { .orb-picker-list { grid-template-columns:repeat(2,minmax(0,1fr)); }.orb-picker-item { gap:9px; }.orb-picker-item .magic-orb:not(.empty) { width:38px; height:38px; } }
@media(max-width:360px) { .orb-picker-backdrop { padding:8px; }.orb-picker-dialog { max-height:calc(100dvh - 16px); }.orb-picker-heading { padding-inline:10px; }.orb-picker-current { margin-inline:10px; }.orb-picker-current summary { gap:5px; padding-inline:6px; }.orb-picker-tools { padding-inline:10px; }.orb-category-grid { gap:3px; }.orb-picker-list-heading { margin-inline:10px; }.orb-picker-list { padding-inline:10px; }.orb-picker-item { gap:9px; padding:10px 8px; }.orb-picker-item .magic-orb:not(.empty) { width:36px; height:36px; }.orb-picker-item-title strong { font-size:13px; }.orb-picker-footer { padding-inline:10px; } }

/* Review the server preview in the same jewel cabinet as the selection screen. */
html:has(.orb-review-dialog),html:has(.orb-review-dialog) body { overflow:hidden; overscroll-behavior:none; }
.orb-review-backdrop { padding:12px; background:#04090cdb; backdrop-filter:blur(5px); }
.orb-review-dialog { display:flex; flex-direction:column; width:min(100%,600px); max-height:calc(100dvh - 24px); min-width:0; padding:0; overflow:hidden; border:1px solid #b39a636b; border-radius:12px; background:linear-gradient(135deg,#182323,#10171c 68%); box-shadow:0 24px 80px #000b,inset 0 1px #e6d3a126; }
.orb-review-dialog .orb-picker-heading { gap:6px; padding:6px 10px; }
.orb-review-emblem { display:grid; place-items:center; flex:0 0 36px; width:36px; height:36px; border:1px solid #b39a6340; border-radius:50%; background:#c5ab6310; }
.orb-review-dialog .orb-picker-heading h2 { font-size:16px; }
.orb-review-dialog .orb-picker-heading p { font-size:10px; }
.orb-review-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; padding:5px 8px; flex-shrink:0; border-bottom:1px solid #b39a6326; background:#0a13164d; }
.orb-review-summary>span { color:#a3b2a7; font-size:10px; text-align:center; border-right:1px solid #b39a632b; }
.orb-review-summary>span:last-child { border:0; }
.orb-review-summary b { margin:0 3px; color:#e0d2a9; font-size:16px; font-weight:500; font-variant-numeric:tabular-nums; }
.orb-review-summary .has-loss,.orb-review-summary .has-loss b { color:#e3b0a4; }
.orb-review-body { min-height:0; padding:8px; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#817452 #10181a; }
.orb-review-body>*+* { margin-top:8px; }
.orb-review-body:focus-visible { outline:1px solid #c4aa73; outline-offset:-2px; }
.orb-review-person { min-width:0; overflow:hidden; border:1px solid #8d8d694d; border-radius:8px; background:#0b151b99; }
.orb-review-person>header { display:flex; align-items:center; gap:8px; padding:6px 8px; border-bottom:1px solid #8d8d6933; background:linear-gradient(100deg,#ad92581c,transparent); }
.orb-review-person>header>div { min-width:0; }
.orb-review-person h3 { margin:0; font-size:14px; line-height:1.5; color:#e4d7b4; font-weight:500; overflow-wrap:anywhere; }
.orb-review-person>header p { margin:2px 0 0; font-size:10px; color:#9cab9f; }
.orb-review-portrait { display:grid; place-items:center; flex:0 0 30px; width:30px; height:32px; }
.orb-review-portrait .actor-image { width:100%; height:100%; object-fit:contain; }
.orb-review-section { padding:6px 8px; }
.orb-review-section+.orb-review-section { border-top:1px solid #8d8d6926; }
.orb-review-dialog h4 { display:flex; align-items:center; flex-wrap:wrap; gap:5px 12px; margin:0 0 6px; font-size:11px; font-weight:500; color:#c5b384; }
.orb-review-dialog h4 small { margin-left:auto; font-size:9px; font-weight:400; color:#8faaa3; }
.orb-review-slot+.orb-review-slot { margin-top:7px; padding-top:7px; border-top:1px solid #8d8d6926; }
.orb-review-slot-label { display:flex; align-items:center; gap:8px; margin-bottom:3px; }
.orb-review-slot-label>b { color:#9eaf9f; font-size:10px; font-weight:400; }
.orb-review-transition { display:grid; grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr); align-items:center; gap:7px; }
.orb-review-transition>i,.orb-review-command>i { color:#bca16b; font-style:normal; font-size:15px; text-align:center; }
.orb-review-value { display:flex; align-items:center; min-width:0; gap:5px; min-height:38px; padding:4px 5px; border:1px solid #788d7836; border-radius:6px; background:#0b141b; }
.orb-review-value:last-child { border-color:#b9a46b66; background:#8d773a12; }
.orb-review-value .magic-orb:not(.empty),.orb-review-value .magic-orb.empty { width:30px; height:30px; flex:0 0 30px; }
.orb-review-value strong { min-width:0; color:#b4c0b9; font-size:12px; line-height:1.5; font-weight:400; overflow-wrap:anywhere; }
.orb-review-value:last-child strong { color:#ece0bc; }
.orb-review-command { display:grid; grid-template-columns:30px minmax(0,1fr) 16px minmax(0,1fr); align-items:center; gap:5px; min-height:38px; padding-block:5px; }
.orb-review-command+.orb-review-command { border-top:1px solid #8d8d6926; }
.orb-review-command>b { color:#9eaf9f; font-size:10px; font-weight:400; }
.orb-review-command>span,.orb-review-command>strong { min-width:0; color:#9faea5; font-size:11px; line-height:1.5; font-weight:400; overflow-wrap:anywhere; }
.orb-review-command>strong { color:#e2d4aa; }
.orb-review-loss { padding:6px 8px; border-top:1px solid #b2766140; background:#703a2814; }
.orb-review-loss h4 { color:#d8aa9b; }
.orb-review-loss>span { display:flex; align-items:center; gap:7px; padding:3px 0; }
.orb-review-loss .magic-orb:not(.empty) { width:26px; height:26px; }
.orb-review-loss strong { flex:1; min-width:0; color:#d6b7a7; font-size:11px; font-weight:400; overflow-wrap:anywhere; }
.orb-review-loss b { color:#dcafa3; font-size:11px; font-weight:400; }
.orb-review-cost { padding:6px 8px; border:1px solid #8d8d694d; border-radius:8px; background:#b7a04c09; }
.orb-review-cost h3 { margin:0 0 4px; color:#c5b384; font-size:12px; font-weight:500; }
.orb-review-cost>div { display:flex; align-items:center; gap:8px; padding:2px 0; }
.orb-review-cost .magic-orb:not(.empty) { width:32px; height:32px; flex:0 0 32px; }
.orb-review-cost>div>span:last-child { display:grid; flex:1; min-width:0; gap:2px; }
.orb-review-cost strong { color:#e0d5b4; font-size:12px; font-weight:400; overflow-wrap:anywhere; }
.orb-review-cost strong b { float:right; margin-left:8px; font-weight:400; }
.orb-review-cost small { color:#98aa9d; font-size:10px; }
.orb-review-cost .orb-review-free { margin:0; color:#a7cfb7; font-size:12px; }
.orb-review-footer { flex-shrink:0; padding:6px 8px 8px; border-top:1px solid #b39a6340; background:#111b1e; box-shadow:0 -4px 14px #0003; }
.orb-review-footer>p { margin:0 0 5px; color:#a6b6a8; font-size:10px; line-height:1.6; }
.orb-review-footer>p.has-loss { color:#ddb0a0; }
.orb-review-footer>div { display:grid; grid-template-columns:1fr 1.4fr; gap:6px; }
.orb-review-footer>div:has(>.orb-review-discard) { grid-template-columns:minmax(0,1fr) minmax(0,1.45fr) minmax(0,1.05fr); }
.orb-review-dialog .orb-review-footer button { min-width:0; min-height:44px; padding:5px 4px; border:1px solid #7e805752; border-radius:6px; background:#1c2826; color:#c4c7ae; font:inherit; font-size:var(--ga-font-control); line-height:1.35; }
.orb-review-dialog .orb-review-footer .primary-button { min-height:48px; border-color:#c4a46a80; background:linear-gradient(135deg,#806633,#4c422b); box-shadow:inset 0 1px #f0d49e26; color:#f2e6c6; }
.orb-review-footer .orb-review-discard { box-shadow:inset 3px 0 var(--red); }
.orb-review-dialog button:disabled { opacity:.5; cursor:wait; }
@media(max-width:360px) { .orb-review-backdrop { padding:8px; }.orb-review-dialog { max-height:calc(100dvh - 16px); }.orb-review-dialog .orb-picker-heading { gap:6px; padding-inline:10px; }.orb-review-dialog .orb-picker-heading h2 { font-size:15px; }.orb-review-emblem { display:none; }.orb-review-body { padding:8px; }.orb-review-section,.orb-review-loss { padding-inline:9px; }.orb-review-transition { gap:4px; }.orb-review-value { gap:4px; padding:5px; }.orb-review-value .magic-orb:not(.empty),.orb-review-value .magic-orb.empty { width:26px; height:26px; flex-basis:26px; }.orb-review-value strong { font-size:11px; } }

.combat-loot-chest > .magic-orb:not(.empty) { position:relative; z-index:1; width:38px; height:38px; }

/* Activation is independent of the jewel role/color, including dormant slots. */
.orb-active-badge { display:inline-flex; align-items:center; justify-content:center; width:fit-content; max-width:100%; padding:1px 5px; border:1px solid #b9a46b80; border-radius:3px; background:#b9a46b1c; color:#f1e1b9; font-size:var(--ga-font-caption,.6875rem); font-weight:500; line-height:1.5; white-space:nowrap; }
.orb-slot-name,.orb-picker-current-name { display:grid; gap:4px; min-width:0; max-width:100%; justify-items:start; }
.orb-slot-name { justify-items:center; }

/* Compact only the character orb picker; keep descriptions complete and controls touchable. */
.orb-picker-dialog .orb-picker-list { gap:var(--ga-space-1,4px); align-items:start; }
.orb-picker-dialog .orb-picker-item { display:grid; grid-template-columns:32px minmax(0,1fr) auto; align-items:center; gap:var(--ga-space-1,4px) var(--ga-space-2,8px); min-height:var(--ga-touch,44px); height:auto; padding:var(--ga-space-2,8px); }
.orb-picker-dialog .orb-picker-item-copy { display:contents; }
.orb-picker-dialog .orb-picker-item>.magic-orb { grid-column:1; grid-row:1; }
.orb-picker-dialog .orb-picker-item .magic-orb:not(.empty) { width:32px; height:32px; }
.orb-picker-dialog .orb-picker-item-title { grid-column:2; grid-row:1; }
.orb-picker-dialog :is(.orb-picker-item-meta,.orb-picker-limit,.orb-picker-item-description) { grid-column:1/-1; }
.orb-picker-dialog .orb-picker-item .orb-picker-item-description { font-size:var(--ga-font-caption,.6875rem); line-height:1.45; }
.orb-picker-dialog .orb-picker-item-arrow { grid-column:3; grid-row:1; }

.orb-activation-filters { display:grid; grid-template-columns:minmax(0,.6fr) repeat(2,minmax(0,1fr)); gap:var(--ga-space-1,4px); }
.orb-picker-dialog .orb-activation-option { position:relative; display:flex; align-items:center; justify-content:center; min-width:0; min-height:var(--ga-touch,44px); margin:0; padding-inline:var(--ga-space-1,4px); cursor:pointer; }
.orb-picker-dialog .orb-activation-option:has(input:checked) { border-color:var(--selected-border); color:var(--selected-text); background:linear-gradient(145deg,color-mix(in srgb,var(--selected-start),var(--surface) 45%),var(--surface)); }
.orb-picker-dialog .orb-activation-option:has(input:checked)::after { content:"✓"; position:absolute; top:0; left:var(--ga-space-1,4px); font-size:var(--ga-font-caption,.6875rem); line-height:1; }
.orb-picker-dialog .orb-activation-option:focus-within { outline:2px solid var(--gold-strong); outline-offset:2px; }

/* Keep only search and the current-condition summary sticky; expanded settings scroll away. */
.orb-picker-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:var(--ga-space-2,8px); }
.orb-picker-dialog .orb-picker-toolbar .orb-picker-search { min-width:0; margin:0; }
.orb-picker-dialog .orb-picker-filter-toggle { min-width:92px; white-space:nowrap; }
.orb-picker-filter-summary { margin:var(--ga-space-1,4px) 0 0; color:var(--muted); font-size:var(--ga-font-note,.75rem); line-height:1.45; overflow-wrap:anywhere; }
.orb-picker-filters { display:grid; gap:var(--ga-space-2,8px); margin:0 12px; padding:var(--ga-space-2,8px); border:1px solid var(--ga-control-border); border-radius:var(--ga-radius-panel,4px); background:var(--surface); scroll-margin-top:calc(var(--ga-touch,44px) + 3rem); }
.orb-picker-filters[hidden] { display:none; }
.orb-picker-dialog .orb-picker-filters :is(.orb-picker-sort,.orb-purpose-strip) { margin-top:0; }
.orb-picker-toolbar .orb-picker-search>span[aria-hidden] { display:none; }
.orb-picker-dialog .orb-picker-toolbar .orb-picker-search { grid-template-columns:minmax(0,1fr); }

/* Match the battle deck: attack + skills 1–3, then defend + skills 4–6. */
.magic-orb-screen .orb-combat-buttons { padding:12px 8px; min-width:0; }
.magic-orb-screen .orb-combat-buttons .orb-battle-layout { grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; }
.orb-command-help { font-size:var(--ga-font-note,.75rem); line-height:1.65; color:var(--muted); }
.orb-battle-command { position:relative; display:grid; grid-template:auto auto / 18px minmax(0,1fr); align-content:center; justify-items:center; gap:1px 2px; width:100%; min-width:0; min-height:64px; height:100%; padding:4px; border:1px solid var(--ga-control-border,var(--line)); border-radius:var(--ga-radius-choice,2px); background:var(--surface-2); color:var(--text); font:inherit; text-align:center; box-sizing:border-box; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; touch-action:pan-y; }
.orb-battle-command .command-icon { grid-area:1/1; width:18px; height:18px; object-fit:contain; pointer-events:none; }
.orb-battle-command .command-label { grid-area:2/1/3/3; max-width:100%; font-size:.75rem; line-height:1.15; white-space:normal; overflow-wrap:anywhere; overflow:visible; font-family:inherit; }
.orb-battle-command .command-meta { grid-area:1/2; max-width:100%; font-size:.625rem; line-height:1.15; white-space:normal; overflow-wrap:anywhere; color:var(--muted); }
.orb-battle-command:not(.is-fixed):not(:disabled) { cursor:grab; }
.orb-battle-command.is-fixed { border-style:dashed; }
.orb-battle-command.is-dormant { border-style:dashed; }
.orb-battle-command:disabled { opacity:.55; cursor:not-allowed; }
.orb-battle-command.is-lifted { opacity:.3; }
.orb-battle-command.is-drop-target { outline:2px solid var(--gold-strong,#d8bb73); outline-offset:-2px; background:var(--selected-start,var(--surface-2)); }
.orb-command-ghost { display:block; filter:drop-shadow(0 8px 8px #000b); }
.orb-command-ghost .orb-battle-command { height:100%; outline:2px solid var(--gold-strong,#d8bb73); box-shadow:0 0 12px #d8bb7355; }

/* Keep the tab's save action visible above mobile navigation and chat.
   Sticky retains its own space at the end; embedded character dialogs stay inline. */
@media (max-width:700px) {
  #app > .magic-orb-screen { --orb-save-bottom:calc(var(--mobile-navigation-height) + 8px); }
  body.chat-ready #app > .magic-orb-screen { --orb-save-bottom:calc(var(--mobile-navigation-height) + var(--mobile-chat-peek-height) + 8px); }
  body.background-battle-monitor-visible #app > .magic-orb-screen { --orb-save-bottom:calc(var(--mobile-navigation-height) + var(--mobile-chat-peek-height) + 105px); }
  #app > .magic-orb-screen > .orb-save-bar {
    position:sticky; bottom:var(--orb-save-bottom); z-index:45;
    display:grid; grid-template-columns:minmax(0,1fr); gap:6px; padding:8px;
    border-radius:var(--ga-radius-panel,4px); background:var(--surface);
    box-shadow:0 -4px 16px rgb(0 0 0 / 35%); text-align:center;
  }
  #app > .magic-orb-screen > .orb-save-bar > span { font-size:var(--ga-font-note,.75rem); line-height:1.5; overflow-wrap:anywhere; }
  #app > .magic-orb-screen > .orb-save-bar > button { width:100%; min-height:48px; }
  #app > .magic-orb-screen > .orb-save-bar:has(> button:not(:disabled)) { border-color:var(--gold-strong); }
  #app > .magic-orb-screen:has(.orb-backdrop) > .orb-save-bar { visibility:hidden; }
}
.magic-orb.alchemy-orb { position:relative; color:var(--text); }
/* The composite SVG contains the approved soft color blend; lists draw a single image per pearl. */
.magic-orb.alchemy-orb.is-corrupted { color:#d895c8; }
.magic-orb.alchemy-orb.is-quality { color:var(--gold); --orb-quality-glow:var(--gold); --orb-quality-glint:color-mix(in srgb,var(--gold) 20%,white); }
.magic-orb.alchemy-orb.is-corrupted { --orb-quality-glow:rgb(var(--abyss-violet-rgb,176 105 220)); --orb-quality-glint:color-mix(in srgb,var(--red) 35%,white); }
/* One original pearl image, with two inexpensive opacity/transform layers. */
.magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::before,
.magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::after { content:""; position:absolute; border-radius:50%; pointer-events:none; }
.magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::before { z-index:-1; inset:8%; background:radial-gradient(circle,transparent 45%,color-mix(in srgb,var(--orb-quality-glow) 40%,transparent) 75%,transparent); box-shadow:0 0 8px color-mix(in srgb,var(--orb-quality-glow) 55%,transparent); opacity:.6; animation:orb-quality-breathe 4.4s ease-in-out infinite; }
.magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::after { z-index:1; inset:15%; background:radial-gradient(ellipse at 30% 22%,var(--orb-quality-glint) 0%,transparent 19%),linear-gradient(125deg,transparent 36%,color-mix(in srgb,var(--orb-quality-glint) 50%,transparent) 46%,transparent 57%); opacity:.45; animation:orb-quality-glint 5.2s ease-in-out infinite; }
.magic-orb.alchemy-orb.is-corrupted::before { animation-duration:3.6s; }
.magic-orb.alchemy-orb.is-corrupted::after { animation-duration:4.6s; }
.alchemy-orb-mark { position:absolute; z-index:2; bottom:0; right:0; font-size:var(--ga-font-caption, .6875rem); line-height:1.25; padding:2px; background:var(--surface); border:1px solid currentColor; border-radius:3px; }
@keyframes orb-quality-breathe { 0%,100% { opacity:.3; transform:scale(.96); } 50% { opacity:.8; transform:scale(1.04); } }
@keyframes orb-quality-glint { 0%,20%,100% { opacity:.12; } 50%,65% { opacity:.65; } }
.orb-slot.dormant .alchemy-orb:is(.is-quality,.is-corrupted)::before,
.orb-slot.dormant .alchemy-orb:is(.is-quality,.is-corrupted)::after,
.orb-command-option.is-dormant .alchemy-orb:is(.is-quality,.is-corrupted)::before,
.orb-command-option.is-dormant .alchemy-orb:is(.is-quality,.is-corrupted)::after { animation:none; opacity:.12; transform:none; }
@media(prefers-reduced-motion:reduce) {
  .magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::before,
  .magic-orb.alchemy-orb:is(.is-quality,.is-corrupted)::after { animation:none; transform:none; }
}
.magic-orb-screen .orb-alchemy-entry { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:12px 0; }
.magic-orb-screen .orb-alchemy-entry small { color:var(--muted); font-size:var(--ga-font-note); }
.orb-dialog.orb-alchemy-dialog { display:flex; flex-direction:column; width:min(640px, 100%); min-width:0; box-sizing:border-box; max-height:calc(100dvh - 32px); overflow:hidden; overflow-wrap:anywhere; }
.orb-alchemy-dialog>h2,.orb-alchemy-footer { flex:none; }
.orb-alchemy-body { min-height:0; overflow:auto; padding:0 4px; }
.orb-alchemy-body>label { display:block; }
.orb-alchemy-footer { display:grid; gap:8px; margin-top:12px; }
.orb-alchemy-dialog p { font-size:var(--ga-font-body); line-height:1.65; }
.orb-alchemy-dialog>button { margin-top:8px; width:100%; }
.orb-alchemy-source { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.orb-alchemy-source select { width:100%; min-width:0; min-height:48px; font:inherit; font-size:1rem; color:var(--text); background:var(--surface); border:1px solid var(--line); }
.orb-alchemy-source button { width:100%; }
.orb-alchemy-pot { padding:12px; border:1px solid var(--line); border-radius:4px; }
.orb-alchemy-pot>div { display:grid; grid-template-columns:40px minmax(0,1fr) auto; align-items:center; gap:8px; padding:8px 0; }
.orb-alchemy-pot .magic-orb { width:40px; height:40px; }
.orb-alchemy-result { text-align:center; }
.orb-alchemy-result>.magic-orb { width:96px; height:96px; margin:12px auto; }
.magic-orb-screen .orb-effect-warnings,.orb-review-person .orb-effect-warnings { padding:12px; margin:12px 0; border:1px solid var(--line); border-radius:var(--ga-radius-panel); background:var(--surface); overflow-wrap:anywhere; }
.orb-effect-warnings h3 { font-size:var(--ga-font-section); margin:0 0 8px; }
.orb-effect-warnings :is(p,li,strong),.magic-orb-screen .orb-effect-draft-note { font-size:var(--ga-font-body); line-height:1.65; }
.orb-effect-warnings article+article { margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }
.orb-effect-warnings ul { padding-left:20px; margin:4px 0; }
.orb-review-person .orb-effect-warnings { padding:7px 8px; margin:0 8px 6px; }
.orb-review-person .orb-effect-warnings h3 { margin:0 0 4px; font-size:var(--ga-font-note); }
.orb-review-person .orb-effect-warnings :is(p,li,strong) { font-size:var(--ga-font-caption); line-height:1.45; }
.orb-review-person .orb-effect-warnings p { margin:3px 0; }
.orb-review-person .orb-effect-warnings article+article { margin-top:5px; padding-top:5px; }
.orb-review-person .orb-effect-warnings ul { padding-left:16px; margin:2px 0; }
.orb-effect-warnings .is-blocked,.orb-effect-warnings .orb-penalty-only { color:var(--danger, #e9aba3); font-weight:600; }
.orb-dialog .orb-rare-sale-warning { border:1px solid var(--danger, #e9aba3); padding:12px; font-size:var(--ga-font-body); line-height:1.65; }
.orb-sale-dialog .orb-sale-actions { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:8px; }
.orb-sale-dialog .orb-sale-actions>button { min-width:0; min-height:48px; }
.ga-ui .orb-composite-description { display:block; }
.ga-ui .orb-composite-effects,.ga-ui .orb-composite-notice { display:block; font-size:var(--ga-font-note); line-height:1.5; overflow-wrap:anywhere; }
.ga-ui .orb-composite-notice { margin-top:4px; color:var(--muted); }
.ga-ui .orb-composite-notice.is-corrupted { font-size:var(--ga-font-body); color:var(--red); }

/* The standalone editor shares equipment's portrait rail and compact rows. */
:is(.orb-loadout-page, .orb-store-screen, .orb-alchemy-page) .orb-facility-nav {
  gap: var(--ga-space-1);
  margin: 0;
  border-block-end: 1px solid var(--line);
}
.ga-ui:is(.orb-loadout-page, .orb-store-screen, .orb-alchemy-page) .orb-facility-nav > button {
  padding-inline: var(--ga-space-1);
  border: 0;
  border-block-end: 2px solid transparent;
  background: transparent;
  box-shadow: none;
}
#app > :is(.orb-loadout-page, .orb-store-screen, .orb-alchemy-page) .orb-facility-nav > button[aria-current="page"] {
  border-block-end-color: var(--selected-border);
  box-shadow: none;
}
.orb-loadout-page .orb-member-tabs {
  padding: 2px;
  scrollbar-width: thin;
}
.orb-loadout-page .orb-member-tabs button {
  grid-template-rows: 44px auto;
  flex-basis: 84px;
  min-height: 72px;
  padding: 4px;
  border: 0;
  border-block-end: 2px solid transparent;
  border-radius: var(--ga-radius-control) var(--ga-radius-control) 0 0;
  background: transparent;
}
.orb-loadout-page .orb-member-tabs button[aria-pressed="true"] {
  border-block-end-color: rgb(var(--party-color-rgb, var(--accent-rgb)) / 80%);
  background: rgb(var(--party-color-rgb, var(--accent-rgb)) / 10%);
  box-shadow: none;
}
.ga-ui.orb-loadout-page .orb-member-tabs button strong {
  min-height: 0;
  font-size: var(--ga-font-note);
}
.orb-loadout-page .orb-member-tabs :is(.arcane-member-portrait, .actor-image) { height: 44px; }
.orb-loadout-page .orb-person-card {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--ga-space-2);
  padding: var(--ga-space-3);
  border: 0;
  border-radius: var(--ga-radius-panel);
}
.orb-loadout-page .orb-person-copy h2 { margin: 0 0 2px; overflow-wrap: anywhere; }
.orb-loadout-page .orb-person-copy p { font-size: var(--ga-font-note); }
.orb-loadout-page .orb-counts { padding: 0; border: 0; gap: var(--ga-space-2); }
.orb-loadout-page .orb-counts > span { min-width: 0; border: 0; text-align: start; }
.orb-loadout-page .orb-counts small { font-size: var(--ga-font-note); overflow-wrap: anywhere; }
.orb-loadout-page .orb-counts b { font-size: var(--ga-font-page); }
.orb-loadout-page .orb-counts em { font-size: var(--ga-font-note); }
.orb-loadout-page :is(.orb-setting-card, .orb-combat-buttons).workshop-books {
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.orb-loadout-page .orb-section-heading {
  border-block-end: 1px solid var(--line);
}
.orb-loadout-page .orb-section-heading h2 { overflow-wrap: anywhere; }
.orb-loadout-page .orb-section-heading button { padding-inline: 2px; white-space: normal; }
.orb-loadout-page .orb-drag-help {
  margin: 8px 0;
  padding: 4px 0;
  border: 0;
  background: transparent;
}
.orb-loadout-page .orb-slot-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--ga-space-1) var(--ga-space-2);
  margin-block: var(--ga-space-2);
}
.ga-ui.orb-loadout-page .orb-slot-grid .orb-slot {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-content: center;
  align-items: center;
  justify-content: stretch;
  gap: 2px 6px;
  min-height: 64px;
  padding: 6px;
  border: 0;
  border-block-end: 1px solid var(--line);
  border-radius: var(--ga-radius-panel);
  text-align: start;
}
.orb-loadout-page .orb-slot > small {
  grid-column: 2;
  grid-row: 1;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 2px 6px;
  min-width: 0;
  color: var(--muted);
  font-size: var(--ga-font-caption);
  line-height: 1.3;
  letter-spacing: normal;
}
.orb-loadout-page .orb-slot > small b { font: inherit; font-variant-numeric: tabular-nums; }
.orb-loadout-page .orb-slot > .magic-orb { grid-column: 1; grid-row: 1 / 3; width: 30px; height: 30px; }
.orb-loadout-page .orb-slot-name { grid-column: 2; grid-row: 2; gap: 2px; justify-items: start; }
.ga-ui.orb-loadout-page .orb-slot-name strong { grid-row: 1; font-size: var(--ga-font-item-name); line-height: 1.4; text-align: start; }
.orb-loadout-page .orb-slot-name .orb-active-badge {
  padding: 0 4px;
  border: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}
.ga-ui.orb-loadout-page .orb-slot-grid .orb-slot.has-effect-limit {
  border-block-end-color: var(--red);
  background: color-mix(in srgb, var(--red) 12%, var(--surface));
}
.orb-loadout-page .orb-slot.has-effect-limit > small > span {
  color: color-mix(in srgb, var(--red) 68%, var(--text));
  font-weight: 700;
}
.orb-loadout-page .orb-slot:disabled { opacity: .65; cursor: not-allowed; }
.orb-loadout-page .orb-slot:focus-visible { outline-offset: -2px; }
.orb-loadout-page .orb-dormancy-divider { margin-top: var(--ga-space-1); }
.orb-loadout-page .orb-setting-card .orb-actions { margin: var(--ga-space-2) 0; }
.orb-loadout-page .orb-legend-guide > summary {
  align-content: center;
  min-height: var(--ga-touch);
  color: var(--muted);
  font-size: var(--ga-font-note);
  cursor: pointer;
}
.orb-loadout-page .orb-legend-guide .orb-shop-legend { margin: 0; }
.orb-loadout-page .orb-combat-buttons {
  scroll-margin-block-start: calc(var(--app-header-height, 0px) + 12px);
}
.orb-loadout-page .orb-combat-buttons legend { padding: 0; font-weight: 700; }
.orb-loadout-page .orb-battle-command { border-width: 0 0 1px; }
.orb-loadout-page .orb-battle-command.is-fixed { background: var(--inset); }
.orb-loadout-page .orb-battle-command .command-meta { font-size: var(--ga-font-caption); }
.orb-loadout-page .orb-save-bar { border-radius: var(--ga-radius-panel); }
#app > .orb-loadout-page.ga-ui > .orb-save-bar:not(.has-orb-changes) { position: static; box-shadow: none; }
@media (min-width: 700px) {
  #app > .orb-loadout-page.ga-ui > .orb-person-card {
    grid-template-columns: minmax(0, 1fr) minmax(0, .95fr);
    align-items: center;
  }
  #app > .orb-loadout-page.ga-ui .orb-counts { grid-column: auto; border-inline-start: 0; }
  #app > .orb-loadout-page.ga-ui .orb-slot-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
