/* Bright Guild Festival V1 candidate integration.
   Opt-in only: html[data-ui-skin="bright-guild-festival-v1"]. */
:root[data-ui-skin="bright-guild-festival-v1"] {
  --festival-cream: #fffdf5;
  --festival-lemon: #ffd84d;
  --festival-coral: #ff6e61;
  --festival-turquoise: #31c9c2;
  --festival-blue: #5595f5;
  --festival-ink: #3b2948;
  --festival-gold: #c99a42;
}

html[data-ui-skin="bright-guild-festival-v1"] body {
  color: var(--festival-ink);
}

/* Generated environment art. These replacements are isolated to the opt-in skin. */
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .lobby-art {
  background: url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/home_lobby.png") center / cover no-repeat !important;
}
/* [2026-08-12, 사용자 지시] 전투 스테이지(#stage/#stage-wrap) 배경 교체는 이번 승격에서 제외 —
   기존 맵 이미지를 그대로 유지한다. battle_festival_plaza.png 자산 자체는 남겨두되 미연결. */
html[data-ui-skin="bright-guild-festival-v1"] #chapter-select-screen::before {
  background: linear-gradient(90deg, rgba(61,41,72,.22), rgba(255,253,245,.04) 48%, rgba(61,41,72,.20)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/chapter_expedition_hall.png") center / cover no-repeat !important;
  opacity: 1 !important;
}
html[data-ui-skin="bright-guild-festival-v1"] :is(#codex-screen,#recipe-screen,#achievements-screen,#featured-picker-screen)::before {
  background: linear-gradient(90deg, rgba(61,41,72,.28), rgba(255,253,245,.03), rgba(61,41,72,.24)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/archive_records_hall.png") center / cover no-repeat !important;
  opacity: 1 !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen::before {
  background: linear-gradient(90deg, rgba(61,41,72,.26), rgba(255,253,245,.02), rgba(61,41,72,.22)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/gacha_summoning_pavilion.png") center / cover no-repeat !important;
  opacity: 1 !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-actiongacha-screen::before {
  background: linear-gradient(90deg, rgba(61,41,72,.25), rgba(255,253,245,.02), rgba(61,41,72,.22)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/godshop_divine_stall.png") center / cover no-repeat !important;
  opacity: 1 !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #loading-screen::before,
html[data-ui-skin="bright-guild-festival-v1"] #studio-splash::before {
  background: linear-gradient(rgba(255,253,245,.10), rgba(61,41,72,.18)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/loading_operations_terrace.png") center / cover no-repeat !important;
  opacity: 1 !important;
  filter: none !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #overlay.is-victory {
  background: linear-gradient(rgba(61,41,72,.12), rgba(61,41,72,.38)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/result_victory_plaza.png") center / cover no-repeat !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #overlay.is-defeat {
  background: linear-gradient(rgba(61,41,72,.18), rgba(61,41,72,.48)), url("../assets/ui/skins/bright-guild-festival-v1/backgrounds/result_defeat_plaza.png") center / cover no-repeat !important;
}

/* Home: decorative overlay remains pointer-free and keeps the character area clear. */
html[data-ui-skin="bright-guild-festival-v1"] #home-screen::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 50;
  pointer-events: none;
  background: url("../assets/ui/skins/bright-guild-festival-v1/home/fullscreen_overlay.png") center / 100% 100% no-repeat;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .player-hud::before {
  background: url("../assets/ui/skins/bright-guild-festival-v1/home/profile.png") center / 100% 100% no-repeat !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .resource-chip::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/resource.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .utility-actions button::before,
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .quick-actions button::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/utility.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .event-banner::after {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/event.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .primary-cta::after {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/adventure.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-rail::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/mode_rail.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-button {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/home/mode_button_normal.png") center / 100% 100% no-repeat !important;
  border: 0 !important;
  box-shadow: none !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-button:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/mode_button_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-button.is-active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/mode_button_active.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-button:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/mode_button_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-screen .mode-button:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/home/mode_button_disabled.png") !important;  background-color: transparent !important;}

/* Battle HUD and left actions. Existing DOM text/icons stay above the frame art. */
html[data-ui-skin="bright-guild-festival-v1"] #hud {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle/top_hud.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #storage-panel {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/battle/storage.png") center / 100% 100% no-repeat !important;
  border: 0 !important;
  box-shadow: none !important;
}
/* [2026-08-12, 검증 후 제거] #unit-card는 전투 화면 미니 정보바가 아니라 openUnitCard()가
   여는 단일 상세 카드 모달 하나뿐이다(js/flow.js:4502) — battle/unit_panel.png를 향하던
   이 규칙은 아래 detail/detail_card.png 규칙과 같은 대상을 겨냥한 죽은 중복이었다(파일
   뒤쪽 규칙이 항상 이겨 실제로는 한 번도 안 쓰임). unit_panel.png 자산은 남겨두되 미연결. */

html[data-ui-skin="bright-guild-festival-v1"] #recipe-book-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/recipe_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #recipe-book-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/recipe_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #recipe-book-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/recipe_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #recipe-book-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/recipe_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #sell-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/sell_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #sell-btn:not(:disabled):hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/sell_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #sell-btn:not(:disabled):active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/sell_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #sell-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/sell_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #shop-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/upgrade_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #shop-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/upgrade_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #shop-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/upgrade_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #shop-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/upgrade_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #trait-points-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/trait_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #trait-points-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/trait_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #trait-points-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/trait_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #trait-points-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/trait_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #gamble-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/treasure_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gamble-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/treasure_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gamble-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/treasure_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gamble-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/treasure_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #exchange-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/exchange_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #exchange-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/exchange_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #exchange-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/exchange_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #exchange-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/exchange_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] #gacha-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/gacha_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gacha-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/gacha_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gacha-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/gacha_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gacha-btn.is-locked,
html[data-ui-skin="bright-guild-festival-v1"] #gacha-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/actions/gacha_disabled.png") !important;  background-color: transparent !important;}

/* Battle controls. */
html[data-ui-skin="bright-guild-festival-v1"] #summon-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/summon_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #summon-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/summon_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #summon-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/summon_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #summon-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/summon_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #next-wave-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/next_wave_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #next-wave-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/next_wave_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #next-wave-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/next_wave_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #next-wave-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/next_wave_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn:not(.is-fast) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_1x_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn:not(.is-fast):hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_1x_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn:not(.is-fast):active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_1x_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn:not(.is-fast):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_1x_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn.is-fast { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_fast_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn.is-fast:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_fast_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn.is-fast:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_fast_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #speed-toggle-btn.is-fast:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/speed_fast_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn:not(.is-paused) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn:not(.is-paused):hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn:not(.is-paused):active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn:not(.is-paused):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn.is-paused { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_active_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn.is-paused:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_active_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn.is-paused:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_active_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #pause-toggle-btn.is-paused:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/battle-controls/pause_active_disabled.png") !important;  background-color: transparent !important;}

/* Full-page surfaces. */
html[data-ui-skin="bright-guild-festival-v1"] .screen-back-btn {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/common/back_normal.png") center / 100% 100% no-repeat !important;
  border: 0 !important;
  box-shadow: none !important;
}
html[data-ui-skin="bright-guild-festival-v1"] .screen-back-btn:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/back_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .screen-back-btn:active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/back_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .screen-back-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/back_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .chapter-tile { background-image: url("../assets/ui/skins/bright-guild-festival-v1/chapter/card_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .chapter-tile:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/chapter/card_hover.png") !important;  background-color: transparent !important;}
/* [2026-08-12, 검증 후 수정] .is-selected는 실제로 부여되지 않는 죽은 클래스였다(flow.js는
   .is-locked/.is-cleared/.is-endless만 사용) — 클리어한 챕터를 구분해서 보여주려던 의도로
   보여 실제 상태 클래스(.is-cleared)로 다시 연결한다. */
html[data-ui-skin="bright-guild-festival-v1"] .chapter-tile.is-cleared { background-image: url("../assets/ui/skins/bright-guild-festival-v1/chapter/card_selected.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .chapter-tile.is-locked { background-image: url("../assets/ui/skins/bright-guild-festival-v1/chapter/card_locked.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #codex-list { background-image: url("../assets/ui/skins/bright-guild-festival-v1/codex/body.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #recipe-tree { background-image: url("../assets/ui/skins/bright-guild-festival-v1/codex/recipe_master.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #achievements-list { background-image: url("../assets/ui/skins/bright-guild-festival-v1/achievements/list.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #featured-picker-preview { background-image: url("../assets/ui/skins/bright-guild-festival-v1/featured/preview.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .featured-cell { background-image: url("../assets/ui/skins/bright-guild-festival-v1/featured/card_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .featured-cell:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/featured/card_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .featured-cell.is-selected { background-image: url("../assets/ui/skins/bright-guild-festival-v1/featured/card_selected.png") !important;  background-color: transparent !important;}

/* Character gacha and Divine Shop.
   [2026-08-12, 검증 후 수정] 기존 gacha-v1 스킨이 #home-gacha-screen #gacha-layout 처럼
   id 2개를 체이닝한 !important 규칙을 쓰고 있어서, id 1개짜리였던 아래 세 규칙이 계속
   졌다(특이도 비교는 id 개수부터 먼저 비교 — 1개 vs 2개는 나머지와 무관하게 짐).
   #home-gacha-screen을 앞에 붙여 id 2개로 맞춰 이기게 한다. */
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen #gacha-layout {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/gacha/layout.png") center / 100% 100% no-repeat !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen #gacha-stage-visual {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/gacha/showcase.png") !important;
  background-size: 100% 100% !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen #home-gacha-tier-list {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/gacha/tier.png") !important;
  background-size: 100% 100% !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen .gacha-banner-card::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/gacha/banner_normal.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen .gacha-banner-card:hover::before,
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen .gacha-banner-card:focus-visible::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/gacha/banner_hover.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #home-gacha-screen .gacha-banner-card.is-selected::before {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/gacha/banner_selected.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #actiongacha-shelf {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/godshop/layout.png") center / 100% 100% no-repeat !important;
}
html[data-ui-skin="bright-guild-festival-v1"] #actiongacha-item-grid {
  background: transparent url("../assets/ui/skins/bright-guild-festival-v1/godshop/showcase.png") center / 100% 100% no-repeat !important;
}
/* [2026-08-12, 검증 후 제거] #home-actiongacha-tier-list / .gacha-banner-card는 2026-08-03
   "노점상" 레이아웃 개편으로 사라진 옛 구조를 타겟팅하던 죽은 셀렉터라 실제로 적용되지 않았다.
   지금은 #actiongacha-shelf / #actiongacha-item-grid(위)만 존재한다. godshop/tier.png,
   godshop/banner_*.png 자산은 남겨두되 미연결. */

/* Rows, tabs and common panels. */
/* [2026-08-12, 검증 후 수정] .recipe-row는 js/flow.js 어디에도 없는 클래스였다(실제 조합
   카드 요소는 .recipe-card) — recipe/row_*.png가 전혀 연결 안 되고 있어서 정정. */
html[data-ui-skin="bright-guild-festival-v1"] .recipe-card { background-image: url("../assets/ui/skins/bright-guild-festival-v1/recipe/row_normal.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .recipe-card:hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/recipe/row_hover.png") !important;  background-color: transparent !important;}
/* [2026-08-12, 검증 후 수정] .settings-toggle은 index.html의 unified-ui-core-v1-utility가
   #bgm-toggle-btn 등 id 셀렉터 + border-image 9-slice로 스킨하고 있어서(class 1개짜리였던
   이 규칙은 id 앞에서 항상 짐) 실제로 한 번도 안 보였다. 대상 5개 버튼의 실제 id를 직접
   지정하고, background뿐 아니라 옛 border-image 4개 속성도 명시적으로 취소해야 옛 프레임이
   같이 안 남는다. */
html[data-ui-skin="bright-guild-festival-v1"] :is(#bgm-toggle-btn,#sfx-toggle-btn,#settings-home-btn,#fullscreen-btn,#exit-game-btn) {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/settings/row_normal.png") !important;
  background-size: 100% 100% !important;
  border: 0 !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#bgm-toggle-btn,#sfx-toggle-btn,#settings-home-btn,#fullscreen-btn,#exit-game-btn):not(:disabled):hover {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/settings/row_hover.png") !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#bgm-toggle-btn,#sfx-toggle-btn,#settings-home-btn,#fullscreen-btn,#exit-game-btn):not(:disabled):active {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/settings/row_pressed.png") !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#bgm-toggle-btn,#sfx-toggle-btn,#settings-home-btn,#fullscreen-btn,#exit-game-btn):disabled {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/settings/row_disabled.png") !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #codex-topbar { background-image: url("../assets/ui/skins/bright-guild-festival-v1/codex/topbar.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.codex-tab-btn,.gacha-category-tab,.recipe-jump-btn) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/tab_inactive.png") !important; background-size: 100% 100% !important; border: 0 !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.codex-tab-btn,.gacha-category-tab,.recipe-jump-btn):hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/tab_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.codex-tab-btn,.gacha-category-tab,.recipe-jump-btn).is-active { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/tab_active.png") !important;  background-color: transparent !important;}

/* [2026-08-12, 검증 후 수정] #gacha-panel/#trait-panel 등은 실존하지 않는 id였다 — 실제로는
   패널 요소가 전부 id="shop-panel" 하나를 재사용하고 오버레이 wrapper id로만 구분된다
   (#shop-overlay > #shop-panel, #trait-overlay > #shop-panel ...). 게다가 기존 스킨이
   id 2개 체이닝 + border-image 9-slice(supplement-v3/common/system_modal_frame.png)로
   이기고 있어서 background-image 시도 자체가 안 먹혔다. 보물상자(#gamble-overlay)와
   캐릭터뽑기(#gacha-overlay)는 각각 전용 테마 프레임(호두나무 궤/마법금속 크리스탈)이 이미
   있어 의도적으로 제외 — 범용 system_modal.png로 덮으면 오히려 후퇴다. */
html[data-ui-skin="bright-guild-festival-v1"] :is(#shop-overlay,#trait-overlay,#exchange-overlay,#shortcuts-overlay,#cloud-sync-overlay,#account-delete-overlay) > #shop-panel {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/system_modal.png") !important;
  background-size: 100% 100% !important;
  border: 0 !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.shop-row,.gacha-tier,.shortcut-row,.unit-card-line,.enemy-card-line,.monster-card-line) {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/list_row_normal.png") !important;
  background-size: 100% 100% !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.shop-row,.gacha-tier,.shortcut-row):hover { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/list_row_selected.png") !important;  background-color: transparent !important;}
/* [2026-08-12, 검증 후 수정] 업적 행은 실제로 class="shop-row achievement-row"로 두 클래스를
   같이 받는데(js/flow.js), .achievement-row가 위 .shop-row 규칙보다 파일 순서상 앞에 있어서
   동일 우선순위(단일 클래스+!important) 캐스케이드에서 .shop-row 쪽(list_row_normal.png)이
   항상 이겨 achievements/row_normal.png가 한 번도 안 보이고 있었다 — 뒤로 옮겨서 이기게 한다. */
html[data-ui-skin="bright-guild-festival-v1"] .achievement-row { background-image: url("../assets/ui/skins/bright-guild-festival-v1/achievements/row_normal.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .achievement-row.is-unlocked { background-image: url("../assets/ui/skins/bright-guild-festival-v1/achievements/row_selected.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] .achievement-row.is-claimable { background-image: url("../assets/ui/skins/bright-guild-festival-v1/achievements/row_claimable.png") !important;  background-color: transparent !important;}
/* [2026-08-12, 검증 후 수정] .contract-row.selected → 실제 클래스 .is-signed로 정정.
   .perk-card.selected는 대응하는 실제 상태가 없어 제거(퍽 카드엔 "선택됨" 개념 자체가 없음). */
html[data-ui-skin="bright-guild-festival-v1"] :is(.contract-row.is-signed,.gacha-10x-result-card.is-legend) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/list_row_claimable.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(.toast-message,#gacha-lock-toast,#achievement-toast-stack > *) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/toast.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-confirm-btn,#roulette-next-btn,#gacha-10x-result-confirm-btn,#actiongacha-result-modal-confirm-btn,#cloud-sync-use-cloud-btn,#contract-start-btn) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/primary_normal.png") !important; background-size: 100% 100% !important; border: 0 !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-confirm-btn,#roulette-next-btn,#gacha-10x-result-confirm-btn,#actiongacha-result-modal-confirm-btn,#cloud-sync-use-cloud-btn,#contract-start-btn):hover:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/primary_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-confirm-btn,#roulette-next-btn,#gacha-10x-result-confirm-btn,#actiongacha-result-modal-confirm-btn,#cloud-sync-use-cloud-btn,#contract-start-btn):active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/primary_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-confirm-btn,#roulette-next-btn,#gacha-10x-result-confirm-btn,#actiongacha-result-modal-confirm-btn,#cloud-sync-use-cloud-btn,#contract-start-btn):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/primary_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-decline-btn,#perk-confirm-cancel-btn,#cloud-sync-use-local-btn,#contract-cancel-btn,#account-delete-cancel-btn) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/secondary_normal.png") !important; background-size: 100% 100% !important; border: 0 !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-decline-btn,#perk-confirm-cancel-btn,#cloud-sync-use-local-btn,#contract-cancel-btn,#account-delete-cancel-btn):hover:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/secondary_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-decline-btn,#perk-confirm-cancel-btn,#cloud-sync-use-local-btn,#contract-cancel-btn,#account-delete-cancel-btn):active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/secondary_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#perk-decline-btn,#perk-confirm-cancel-btn,#cloud-sync-use-local-btn,#contract-cancel-btn,#account-delete-cancel-btn):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/secondary_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #account-delete-confirm-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/danger_normal.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #account-delete-confirm-btn:hover:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/danger_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #account-delete-confirm-btn:active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/danger_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #account-delete-confirm-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/danger_disabled.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #double-reward-ad-btn { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/reward_normal.png") !important; background-size: 100% 100% !important; border: 0 !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #double-reward-ad-btn:hover:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/reward_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #double-reward-ad-btn:active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/reward_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #double-reward-ad-btn:disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/reward_disabled.png") !important;  background-color: transparent !important;}

html[data-ui-skin="bright-guild-festival-v1"] :is(#chapter-carousel-prev,#chapter-carousel-next,.codex-filter-btn:first-child:not(.is-active)) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/icon_normal.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#chapter-carousel-prev,#chapter-carousel-next,.codex-filter-btn:first-child:not(.is-active)):hover:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/icon_hover.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#chapter-carousel-prev,#chapter-carousel-next,.codex-filter-btn:first-child:not(.is-active)):active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/icon_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#chapter-carousel-prev,#chapter-carousel-next,.codex-filter-btn:first-child:not(.is-active)):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/icon_disabled.png") !important;  background-color: transparent !important;}

/* Modal/panel families. */
html[data-ui-skin="bright-guild-festival-v1"] #contract-overlay > #contract-panel { background-image: url("../assets/ui/skins/bright-guild-festival-v1/events/contract_panel.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #perk-overlay > #perk-panel { background-image: url("../assets/ui/skins/bright-guild-festival-v1/events/perk_panel.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #perk-overlay.is-bargain > #perk-panel { background-image: url("../assets/ui/skins/bright-guild-festival-v1/events/devil_trade_panel.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #roulette-overlay > #roulette-panel { background-image: url("../assets/ui/skins/bright-guild-festival-v1/casino/roulette_panel.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #settings-menu { background-image: url("../assets/ui/skins/bright-guild-festival-v1/settings/drawer.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #unit-card { background-image: url("../assets/ui/skins/bright-guild-festival-v1/detail/detail_card.png") !important;  background-color: transparent !important;}
/* [2026-08-12, 검증 후 수정] 아래 네 개 모두 index.html의 supplement-v3/simple-ui-v2 스킨이
   #xxx-overlay > #xxx-card 처럼 id 2개 체이닝 + !important로 이미 선점하고 있어서 id 1개
   짜리 규칙은 계속 졌다. 오버레이 wrapper id를 앞에 붙여 id 2개로 맞춘다. #enemy-card는
   기존 스킨이 border-image를 쓰므로 같이 취소하고, #monster-card/결과 모달 2개는 순수
   background라 취소 없이 그대로 이긴다. */
html[data-ui-skin="bright-guild-festival-v1"] #enemy-card-overlay > #enemy-card {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/detail/enemy_card.png") !important;
  background-size: 100% 100% !important;
  border: 0 !important;
  border-image-source: none !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #monster-card-overlay > #monster-card {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/detail/enemy_card.png") !important;
  background-size: 100% 100% !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #overlay.is-victory::before { background-image: url("../assets/ui/skins/bright-guild-festival-v1/results/victory.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #overlay.is-defeat::before { background-image: url("../assets/ui/skins/bright-guild-festival-v1/results/defeat.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #gacha-10x-result-overlay > #gacha-10x-result-panel { background-image: url("../assets/ui/skins/bright-guild-festival-v1/results/gacha10_modal.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] #actiongacha-result-overlay > #actiongacha-result-modal { background-image: url("../assets/ui/skins/bright-guild-festival-v1/results/single_reward.png") !important; background-size: 100% 100% !important;  background-color: transparent !important;}

/* Common close buttons preserve DOM glyphs and hit targets. */
html[data-ui-skin="bright-guild-festival-v1"] :is(#unit-card-close,#enemy-card-close,#monster-card-close,#shop-close-btn,#gacha-close-btn,#trait-close-btn,#gamble-close-btn,#exchange-close-btn,#shortcuts-close-btn) {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/close_normal.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#unit-card-close,#enemy-card-close,#monster-card-close,#shop-close-btn,#gacha-close-btn,#trait-close-btn,#gamble-close-btn,#exchange-close-btn,#shortcuts-close-btn):hover {
  background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/close_hover.png") !important;
 background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#unit-card-close,#enemy-card-close,#monster-card-close,#shop-close-btn,#gacha-close-btn,#trait-close-btn,#gamble-close-btn,#exchange-close-btn,#shortcuts-close-btn):active:not(:disabled) { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/close_pressed.png") !important;  background-color: transparent !important;}
html[data-ui-skin="bright-guild-festival-v1"] :is(#unit-card-close,#enemy-card-close,#monster-card-close,#shop-close-btn,#gacha-close-btn,#trait-close-btn,#gamble-close-btn,#exchange-close-btn,#shortcuts-close-btn):disabled { background-image: url("../assets/ui/skins/bright-guild-festival-v1/common/close_disabled.png") !important;  background-color: transparent !important;}

@media (max-width: 960px), (max-height: 540px) {
  html[data-ui-skin="bright-guild-festival-v1"] #home-screen::after { background-size: 100% 100%; }
  html[data-ui-skin="bright-guild-festival-v1"] #contract-panel,
  html[data-ui-skin="bright-guild-festival-v1"] #perk-panel,
  html[data-ui-skin="bright-guild-festival-v1"] #roulette-panel { max-height: 94svh !important; }
}
