/* Obsidienne — shared player UI skin, approved after the inventory V2.
   Opt-in at the document boundary: no editor / marketing-site changes.
   Geometry, sprites, class/rarity colours and combat semantics belong to consumers.
   !important is limited to replacing inline/baked chrome, never visibility/position.
   :where keeps the inventory's already-approved scoped skin more specific. */
:root[data-ui-theme="obsidian"] {
  color-scheme: dark;
  --ui-panel: #171915; --ui-panel-raise: #20221c;
  --ui-ink: #e8e2d4; --ui-ink-dim: #bdb7a9; --ui-edge: #68583b;
  --ui-gold: #dfae5e; --ui-gold-ink: #dfae5e; --ui-ink-on-gold: #221306;
  --gold: var(--ui-gold); --ink: var(--ui-ink);
  --obsidian-button: #3a2e1a; --obsidian-hover: #42331e;
  --obsidian-shadow: 0 12px 36px #0008, inset 0 0 0 2px #0005;
}

/* Common frames: one narrow edge, four restrained corners on major panels only.
   A pointer-transparent overlay survives consumers' replaceChildren and scrolling. */
[data-ui-theme="obsidian"] .ui-frame {
  border-image: none !important; border: 1px solid var(--ui-edge) !important;
  border-radius: 8px;
  box-shadow: var(--obsidian-shadow) !important;
}
:where([data-ui-theme="obsidian"]) .ui-frame:not(.is-painted) { background: var(--ui-panel) !important; }
:where([data-ui-theme="obsidian"]) .ui-frame__mat { display: none; }
:where([data-ui-theme="obsidian"]) :is(
  .ui-frame--panel:not(.hud-slot):not(.ui-obsidian):not(.is-painted),
  .if-friends__panel, .if-guild__panel, .if-wmap__panel, .ifBigMap__panel,
  .if-altar__panel, .if-runegate__panel, .ui-dlg, .pvp-agg-card, #fightsWin
)::after {
  content: ''; position: absolute; inset: 0; box-sizing: border-box;
  border: 22px solid transparent;
  border-image: var(--obsidian-corners, none) 44 / 22px / 0 stretch;
  opacity: .65; z-index: 4; pointer-events: none;
}
:where([data-ui-theme="obsidian"]) .ui-frame:is(.ui-frame--subPanel, .ui-frame--slot) {
  background: var(--ui-panel-raise) !important; box-shadow: inset 0 1px 5px #0005 !important;
  border-radius: 5px;
}
:where([data-ui-theme="obsidian"]) .ui-frame.ui-frame--titlebar {
  border-width: 0 0 1px !important; border-radius: 0;
  background: transparent !important; box-shadow: none !important;
}
:where([data-ui-theme="obsidian"]) .ui-frame.is-active { border-color: var(--ui-gold) !important; }
:where([data-ui-theme="obsidian"]) .gw-title {
  padding: 9px 14px !important; min-height: 42px;
}
[data-ui-theme="obsidian"] .gw-title b {
  color: var(--ui-gold-ink); font: 800 17px/1.3 var(--ui-font-display, Georgia, serif);
}
:where([data-ui-theme="obsidian"]) .gw-body { padding: 14px; }
[data-ui-theme="obsidian"] :is(.if-fg__panel, .if-art__panel, .ui-spec, .ui-pano, .gd-box) { padding: 18px !important; }
:where([data-ui-theme="obsidian"]) :is(.gw-title, .gw-inv-foot, .gd-row) { flex-shrink: 0; }

/* Buttons: the same compact gold-on-dark treatment as the item action.
   Keep destructive / class / combat-specific variants out of generic overrides. */
[data-ui-theme="obsidian"] :is(.ui-btn, .ui-action, .gw-equip-btn, .gw-craft-btn) {
  border-image: none !important; border: 1px solid var(--ui-edge) !important;
  background: var(--ui-panel-raise) !important; color: var(--ui-ink);
  border-radius: 5px; box-shadow: none !important; min-height: 32px;
  padding: 6px 13px; font: 800 13px/1.25 var(--ui-font-display, Georgia, serif);
}
[data-ui-theme="obsidian"] :is(.ui-btn--primary, .ui-action, .gw-equip-btn, .gw-craft-btn) {
  color: var(--ui-gold-ink); background: var(--obsidian-button) !important;
  border-color: var(--ui-gold) !important;
}
[data-ui-theme="obsidian"] :is(.ui-btn--primary, .ui-action, .gw-equip-btn, .gw-craft-btn):hover:not(:disabled) {
  background: var(--obsidian-hover) !important;
}
[data-ui-theme="obsidian"] .ui-btn--primary .ui-btn__key {
  color: var(--ui-gold-ink); border-color: var(--ui-edge);
}
[data-ui-theme="obsidian"] :is(.ui-btn, .ui-action, .gw-equip-btn, .gw-craft-btn):disabled {
  opacity: .55; cursor: not-allowed;
}
[data-ui-theme="obsidian"] :is(.gw-close, .gw-close.has-atom) {
  background: var(--ui-panel-raise); border: 1px solid var(--ui-edge);
  color: var(--ui-ink-dim); border-radius: 5px; font: 500 19px/1 system-ui;
}
/* A geometric X avoids font baseline / native button-padding offsets. Keep the
   original text/accessible name and listeners; only its visual glyph is replaced. */
[data-ui-theme="obsidian"] :is(.gw-close, .if-friends__close, .if-guild__close,
  .if-wmap__close, .ifBigMap__close, .if-altar__close, .if-runegate__close,
  .if-fg__close, .if-art__close, .ui-dlg__close) {
  display: inline-flex; align-items: center; justify-content: center;
  box-sizing: border-box; flex-shrink: 0; padding: 0;
  min-width: 28px; min-height: 28px; font-size: 0 !important; line-height: 0;
}
[data-ui-theme="obsidian"] :is(.gw-close, .if-friends__close, .if-guild__close,
  .if-wmap__close, .ifBigMap__close, .if-altar__close, .if-runegate__close,
  .if-fg__close, .if-art__close, .ui-dlg__close)::before {
  content: ''; display: block; flex: none; width: 12px; height: 12px;
  background: linear-gradient(45deg, transparent calc(50% - .75px), currentColor calc(50% - .75px), currentColor calc(50% + .75px), transparent calc(50% + .75px)),
    linear-gradient(-45deg, transparent calc(50% - .75px), currentColor calc(50% - .75px), currentColor calc(50% + .75px), transparent calc(50% + .75px));
  pointer-events: none;
}

/* Text fields and tabs must lose their baked ivory grounds along with frames. */
[data-ui-theme="obsidian"] :is(.gw-search, .gd-input, .gw-select, .cc-name) {
  border-image: none !important; border: 1px solid var(--ui-edge) !important;
  background: var(--ui-panel) !important; color: var(--ui-ink);
  border-radius: 5px; padding: 7px 10px; font-family: var(--ui-font-system, system-ui);
}
[data-ui-theme="obsidian"] :is(.gw-tab, .gw-filter) {
  border-image: none !important; border: 1px solid var(--ui-edge) !important;
  background: var(--ui-panel-raise) !important; color: var(--ui-ink-dim);
  border-radius: 5px; padding: 6px 10px; min-height: 30px;
}
[data-ui-theme="obsidian"] :is(.gw-tab, .gw-filter).is-on {
  color: var(--ui-gold-ink); border-color: var(--ui-gold) !important;
  background: var(--obsidian-button) !important;
}
[data-ui-theme="obsidian"] .gw-tab.has-atom.is-on { color: var(--ui-gold-ink); }
[data-ui-theme="obsidian"] :is(button, [tabindex], input, select, textarea):focus-visible {
  outline: 2px solid var(--ui-gold); outline-offset: 2px;
}
[data-ui-theme="obsidian"] :is(input, select, textarea) { accent-color: var(--ui-gold); }
[data-ui-theme="obsidian"] :is(input, textarea)::placeholder { color: var(--ui-ink-dim); opacity: .85; }
:where([data-ui-theme="obsidian"]) * { scrollbar-width: thin; scrollbar-color: var(--ui-edge) var(--ui-panel); }

/* Detached surfaces that do not use frame(): social, maps, NPC dialogue, altar,
   runegates, context menus, invitations, notification cards and confirmations. */
[data-ui-theme="obsidian"] :is(.if-friends__panel, .if-guild__panel, .if-wmap__panel,
  .ifBigMap__panel, .if-altar__panel, .if-runegate__panel, .ui-dlg, .ui-bubble,
  .pvp-agg-card, .gw-ctx, .if-invite, .ui-toast, .ui-tooltip) {
  background: var(--ui-panel); color: var(--ui-ink); border: 1px solid var(--ui-edge);
  border-radius: 9px; box-shadow: var(--obsidian-shadow);
}
[data-ui-theme="obsidian"] :is(.if-friends__title, .if-guild__title, .if-wmap__title,
  .if-altar__title, .if-runegate__title, .ui-dlg__name, .gd-title, .ui-pano__title,
  .if-art__title, .if-fg__title, .fw-title) {
  color: var(--ui-gold-ink); font-family: var(--ui-font-display, Georgia, serif);
  font-weight: 800; letter-spacing: .02em;
}
[data-ui-theme="obsidian"] :is(.if-friends__close, .if-guild__close, .if-wmap__close,
  .if-altar__close, .if-runegate__close, .ui-dlg__close) { color: var(--ui-ink-dim); }
[data-ui-theme="obsidian"] :is(.if-friends__empty, .if-friends__sub, .if-guild__empty,
  .if-guild__hint, .if-guild__sub, .if-wmap__meta, .if-wmap__hint, .if-altar__hint,
  .if-altar__note, .if-altar__sub, .if-altar__pct, .if-runegate__hint, .if-runegate__sub,
  .if-runegate__rtier, .ui-dlg__page, .ui-dlg__hint, .ui-bubble__more,
  .cx-kind, .cx-crumb, .cx-sep, .enc-muted, .gw-note, .ui-toast__sub) {
  color: var(--ui-ink-dim);
}
/* Preserve danger/status colours on the same labels. */
[data-ui-theme="obsidian"] .if-altar__note.is-live { color: #8fe3b0; }
[data-ui-theme="obsidian"] .if-altar__note.is-warn { color: #ffb4a2; }
[data-ui-theme="obsidian"] :is(.ui-dlg__next, .if-altar__go, .if-runegate__go,
  .if-fg__btn:not(.is-danger)) {
  background: var(--obsidian-button); color: var(--ui-gold-ink);
  border: 1px solid var(--ui-gold); border-radius: 5px;
  font-family: var(--ui-font-display, Georgia, serif);
}
[data-ui-theme="obsidian"] :is(.ui-dlg__answer, .ui-bubble__answer, .if-altar__chip) {
  background: var(--ui-panel-raise); border-color: var(--ui-edge); color: var(--ui-ink);
}
[data-ui-theme="obsidian"] :is(.ui-dlg__answer, .ui-bubble__answer, .if-altar__chip):hover:not(:disabled) {
  background: var(--obsidian-hover); border-color: var(--ui-gold);
}

/* HUD: compact dark surfaces, preserving face/item/spell art and semantic bars. */
[data-ui-theme="obsidian"] .if-hero { padding: 12px 14px !important; }
[data-ui-theme="obsidian"] :is(.hud-bar, .hud-overflow, .hud-placement, .ab-bar) {
  background-image: none !important; padding: 9px !important;
}
[data-ui-theme="obsidian"] .hud-slot { border-width: 1px !important; }
[data-ui-theme="obsidian"] .hud-btns { flex-shrink: 0; }
[data-ui-theme="obsidian"] .hud-btns .ui-btn { white-space: nowrap; }
[data-ui-theme="obsidian"] .hud-slot__pa { color: var(--ui-ink-on-gold); }
[data-ui-theme="obsidian"] #ifTracker {
  background: #171915ed; color: var(--ui-ink); border-color: var(--ui-edge);
}
[data-ui-theme="obsidian"] #ifTracker :is(.qt-sub, .qt-where, .qt-empty) { color: var(--ui-ink-dim); }
[data-ui-theme="obsidian"] #ifTracker .qt-where { opacity: 1; }
[data-ui-theme="obsidian"] #ifTracker .qt-head { background: var(--ui-panel-raise); }
[data-ui-theme="obsidian"] #ifMiniMap .mm-ring { border-color: var(--ui-gold); }
[data-ui-theme="obsidian"] :is(.if-chat-body, .if-chat-tab, .if-chat-collapse) {
  background: #171915ed; border-color: var(--ui-edge); color: var(--ui-ink-dim);
}
[data-ui-theme="obsidian"] .if-chat-tab.on {
  color: var(--ui-gold-ink); background: var(--ui-panel-raise); border-color: var(--ui-gold);
}
[data-ui-theme="obsidian"] .if-chat-input { background: var(--ui-panel); color: var(--ui-ink); }
[data-ui-theme="obsidian"] .if-chat-log { font-size: 13px; line-height: 1.5; }
[data-ui-theme="obsidian"] .gw-launch { background-image: none !important; }
/* V3 medallions already own their rim: don't put a square socket/collar behind
   them. Preserve the 56px hit target and all existing open/locked/badge behavior. */
[data-ui-theme="obsidian"] #gwLauncher .gw-launch:has(.is-medallion) {
  background: transparent !important; border-color: transparent !important;
  border-radius: 50%; box-shadow: none !important;
}
[data-ui-theme="obsidian"] #gwLauncher .gw-launch:has(.is-medallion) .gw-launch__ground { display: none; }
[data-ui-theme="obsidian"] #gwLauncher .gw-launch__img.is-medallion {
  width: 48px; height: 48px; border-radius: 0;
}
[data-ui-theme="obsidian"] #gwLauncher .gw-launch:has(.is-medallion):hover,
[data-ui-theme="obsidian"] #gwLauncher .gw-launch:has(.is-medallion).is-open {
  box-shadow: 0 0 0 2px var(--ui-gold), 0 0 10px #dfae5e55 !important;
}

/* Readable captions in dense windows, without enlarging combat counters/slots. */
[data-ui-theme="obsidian"] :is(.gd-body, .gw-note, .enc, .cx-kind, .gw-pset__meta,
  .gw-pset__diff, .gw-barname, .if-guild__hint, .if-guild__sub, .if-friends__empty) {
  font-size: 12px; line-height: 1.5;
}
[data-ui-theme="obsidian"] .ui-tooltip { font-size: 13px; line-height: 1.5; }
[data-ui-theme="obsidian"] .ui-tooltip__title { font-size: 14px; }
[data-ui-theme="obsidian"] .pvp-pc-plate { background: var(--ui-panel); }
[data-ui-theme="obsidian"] .gw-align-grade { color: color-mix(in srgb, var(--alignment-accent) 55%, var(--ui-ink)) !important; }
[data-ui-theme="obsidian"] :is(.ifBigMap__title, .if-friends__tab.is-on) { color: var(--ui-gold-ink); }
[data-ui-theme="obsidian"] .ifBigMap__close { color: var(--ui-ink-dim); }
[data-ui-theme="obsidian"] #ifMapBtn { background: var(--ui-panel); border-color: var(--ui-edge); color: var(--ui-gold-ink); }
[data-ui-theme="obsidian"] #fightsWin { background: var(--ui-panel); border-color: var(--ui-edge); box-shadow: var(--obsidian-shadow); }
[data-ui-theme="obsidian"] #fightsWin :is(.fw-empty, .fw-grey) { color: var(--ui-ink-dim); }

/* Character selection/creation share chrome, not the illustrated world backdrop. */
[data-ui-theme="obsidian"] :is(.cc-col, .cc-foot) { padding: 12px !important; }
[data-ui-theme="obsidian"] :is(.cc-h, .cc-card__title) { color: var(--ui-gold-ink); opacity: 1; }
[data-ui-theme="obsidian"] .sel-enter {
  background: var(--obsidian-button); color: var(--ui-gold-ink); border-color: var(--ui-gold);
  border-radius: 6px; font-family: var(--ui-font-display, Georgia, serif);
}
[data-ui-theme="obsidian"] :is(.sel-brand, .sel-heroname) { font-family: var(--ui-font-display, Georgia, serif); }
[data-ui-theme="obsidian"] .sel-brand { color: var(--ui-gold-ink); }
[data-ui-theme="obsidian"] .sel-railbtn--danger { color: #ffb4a2; border-color: #bb6c58; }
[data-ui-theme="obsidian"] :is(.sel-railbtn, .sel-acct-btn) { border-radius: 5px; }

@media (pointer: coarse) {
  [data-ui-theme="obsidian"] :is(.ui-btn, .ui-action, .gw-tab) { min-height: 40px; }
  [data-ui-theme="obsidian"] :is(.gw-search, .gd-input, .cc-name) { font-size: 16px; }
}
