/* Zeraphia SPECIAL EVENT - 銃撃戦 */
#shooting-event-root{display:none;position:fixed;inset:0;z-index:240000;opacity:0;transition:opacity .18s ease;background:#f2eee4;color:#4b3f2d;font-family:"Noto Serif JP",serif;touch-action:none;-webkit-user-select:none;user-select:none;overflow:hidden}
#shooting-event-root.open{opacity:1}
#shooting-event-root *{box-sizing:border-box}
.shooting-stage{position:absolute;inset:0;overflow:hidden;background:#eee8dc}
.shooting-bg{position:absolute;inset:0;background:url('../images/battle_bg_01.webp') center/cover no-repeat;filter:brightness(1.04) saturate(.88) contrast(.96);opacity:.64;transform:scale(1.02)}
.shooting-wash{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26));pointer-events:none}
.shooting-hud{height:72px;padding:12px 16px;position:absolute;z-index:20;left:0;right:0;top:0;display:flex;align-items:center;border-bottom:1px solid rgba(150,124,75,.28);background:linear-gradient(180deg,rgba(255,253,247,.92),rgba(248,243,231,.72),rgba(248,243,231,0));backdrop-filter:blur(3px)}
.shooting-back{display:inline-flex;align-items:center;justify-content:flex-start;min-width:auto;height:32px;padding:0 4px 0 0;border:0;background:transparent;color:#8a7651;font-size:14px;line-height:1;font-family:"Noto Serif JP",serif;font-weight:500;letter-spacing:.06em;cursor:pointer}.shooting-back:hover{opacity:.82}
.shooting-hud-title{margin-left:8px;display:flex;flex-direction:column;line-height:1.1;letter-spacing:.08em}.shooting-hud-title span{font-size:8px;color:#a1885a;letter-spacing:.22em}.shooting-hud-title strong{font-size:15px;font-weight:500;margin-top:3px;color:#514530}.shooting-score{margin-left:auto;font-family:"Cinzel",serif;font-size:12px;letter-spacing:.16em;color:#826d47}
.shooting-boss-hud{position:absolute;z-index:18;top:82px;left:50%;transform:translateX(-50%);width:min(76vw,440px);text-align:center}.shooting-boss-name{font-size:9px;letter-spacing:.14em;color:#6e5a3b;text-shadow:0 1px 3px rgba(255,255,255,.95)}.shooting-boss-bar{height:8px;margin-top:6px;background:rgba(255,255,255,.58);border:1px solid rgba(92,76,56,.28);overflow:hidden;box-shadow:0 1px 6px rgba(71,53,31,.12)}.shooting-boss-bar i{position:relative;display:block;width:100%;height:100%;overflow:hidden}.shooting-boss-bar i::before{content:'';position:absolute;inset:0;transform-origin:left center;transform:scaleX(calc(var(--gauge-fill, 1)));transition:transform .12s linear,background .28s ease;box-shadow:inset 0 0 6px rgba(255,255,255,.32)}.shooting-boss-bar.phase-1 i::before{background:linear-gradient(90deg,#4e9b62,#72bf79,#a7d99d)}.shooting-boss-bar.phase-2 i::before{background:linear-gradient(90deg,#477ba8,#63a0d1,#9bc8e7)}.shooting-boss-bar.phase-3 i::before{background:linear-gradient(90deg,#a84a4a,#cf5c55,#ec9380)}.shooting-boss-phase{margin-top:4px;font-family:"Cinzel",serif;font-size:8px;letter-spacing:.18em;color:#8d7348}
.shooting-arena{position:absolute;inset:72px 0 72px;overflow:hidden;touch-action:none;cursor:crosshair}
.shooting-start-copy{position:absolute;z-index:40;left:50%;top:54%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 20px;border:1px solid rgba(158,128,76,.28);background:rgba(255,253,247,.74);backdrop-filter:blur(4px);box-shadow:0 10px 30px rgba(88,66,36,.08);transition:opacity .35s ease}.shooting-start-copy.hide{opacity:0;pointer-events:none}.shooting-start-copy b{font-family:"Cinzel",serif;letter-spacing:.25em;font-size:18px;color:#79613e}.shooting-start-copy span{font-size:10px;color:#76674f}.shooting-start-copy small{font-size:9px;color:#9a896c}
.shooting-player,.shooting-boss{position:absolute;left:0;top:0;will-change:transform;pointer-events:none}
.shooting-player{z-index:12;width:74px;height:126px;display:flex;align-items:center;justify-content:center}.shooting-player img{position:relative;z-index:2;display:block;max-width:70px;max-height:122px;object-fit:contain;filter:none;transform:scale(var(--unit-scale,1));transform-origin:center center}.shooting-player-aura{display:none!important}.shooting-player.damaged{animation:shootingDamage .25s steps(2) 4}.shooting-boss{z-index:9;width:128px;height:128px;object-fit:contain;filter:drop-shadow(0 10px 10px rgba(63,48,32,.20));opacity:.96}
.shooting-boss.hit-flash{animation:shootingBossHitFlash .18s steps(2, jump-none)}
.shooting-boss.burst-hit{animation:shootingBossBurstHit .42s steps(3, jump-none)}
@keyframes shootingBossHitFlash{0%,100%{filter:drop-shadow(0 10px 10px rgba(63,48,32,.20)) brightness(1);opacity:.96}40%,70%{filter:sepia(1) saturate(8) hue-rotate(318deg) brightness(1.18) drop-shadow(0 0 16px rgba(210,45,45,.92));opacity:1}}
@keyframes shootingBossBurstHit{0%,100%{filter:drop-shadow(0 10px 10px rgba(63,48,32,.20)) brightness(1);opacity:.96}20%,45%,70%{filter:sepia(1) saturate(10) hue-rotate(315deg) brightness(1.28) drop-shadow(0 0 24px rgba(225,42,42,.98));opacity:1}32%,58%,82%{filter:brightness(.45) sepia(1) saturate(7) hue-rotate(320deg) drop-shadow(0 0 14px rgba(170,25,25,.88));opacity:.72}}
.shooting-player-core{position:absolute;z-index:8;left:50%;top:var(--core-top,38%);width:9px;height:9px;transform:translate(-50%,-50%);border-radius:50%;background:#d51f2f;border:1px solid rgba(255,255,255,.96);box-shadow:0 0 2px rgba(255,255,255,.95),0 0 6px rgba(213,31,47,.88);pointer-events:none}.shooting-player-core::before,.shooting-player-core::after{content:none!important}
@keyframes shootingDamage{50%{opacity:.18}}
.shooting-bullet,.shooting-enemy-bullet{position:absolute;left:0;top:0;z-index:10;display:block;will-change:transform;pointer-events:none}.shooting-bullet{width:4px;height:22px;border-radius:999px;background:linear-gradient(180deg,#fff,#e9d297 45%,#a9884c);box-shadow:0 0 7px rgba(230,196,120,.85)}.shooting-enemy-bullet{width:11px;height:11px;border-radius:50%;background:radial-gradient(circle,#fff 0 12%,#8f759d 35%,#45394d 72%,transparent 74%);box-shadow:0 0 6px rgba(85,60,100,.5)}
.shooting-hit{position:absolute;left:0;top:0;z-index:16;width:26px;height:26px;border:1px solid rgba(194,153,74,.75);border-radius:50%;box-shadow:0 0 14px rgba(232,194,115,.76);animation:shootingHit .28s ease-out forwards;pointer-events:none}.shooting-hit.big{width:110px;height:110px;border-width:2px;box-shadow:0 0 40px rgba(255,229,155,.92),inset 0 0 30px rgba(255,255,255,.82)}
@keyframes shootingHit{from{opacity:1;scale:.35}to{opacity:0;scale:1.65}}
.shooting-footer{height:72px;position:absolute;z-index:22;bottom:0;left:0;right:0;display:flex;align-items:center;padding:9px 16px;background:linear-gradient(0deg,rgba(255,253,248,.97),rgba(249,244,233,.82));border-top:1px solid rgba(155,129,82,.30)}.shooting-player-hud{display:flex;flex-direction:column;gap:6px}.shooting-player-name{font-size:11px;letter-spacing:.16em;color:#65543a}.shooting-hearts{display:flex;align-items:center;gap:9px;height:18px}.shooting-hearts i{position:relative;display:block;width:14px;height:14px;transform:rotate(45deg);border-radius:2px;background:#c65a62;box-shadow:0 0 7px rgba(182,63,73,.32);transition:opacity .2s ease,filter .2s ease,transform .2s ease}.shooting-hearts i::before,.shooting-hearts i::after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;background:inherit}.shooting-hearts i::before{left:-7px;top:0}.shooting-hearts i::after{left:0;top:-7px}.shooting-hearts i.off{opacity:.14;filter:grayscale(1);box-shadow:none;transform:rotate(45deg) scale(.86)}.shooting-hearts i.on{opacity:1}
.shooting-burst{position:relative;margin-left:auto;width:118px;height:42px;overflow:hidden;border:1px solid rgba(153,123,68,.55);background:rgba(255,255,255,.62);color:#6c5735;font-family:"Cinzel",serif;letter-spacing:.16em;cursor:pointer}.shooting-burst span{position:relative;z-index:2}.shooting-burst i{position:absolute;z-index:1;left:0;bottom:0;top:0;width:0;background:linear-gradient(90deg,rgba(214,184,115,.24),rgba(191,151,72,.45));transition:width .12s linear}.shooting-burst:disabled{opacity:.62;cursor:default}.shooting-burst:not(:disabled){box-shadow:0 0 17px rgba(192,152,74,.33);animation:shootingBurstReady 1.1s ease-in-out infinite alternate}@keyframes shootingBurstReady{to{border-color:#c19b53;box-shadow:0 0 24px rgba(211,171,91,.58)}}
.shooting-result{position:absolute;z-index:70;inset:0;display:none;align-items:center;justify-content:center;padding:22px;background:rgba(248,244,235,.82);backdrop-filter:blur(7px)}.shooting-result.show{display:flex}.shooting-result-card{width:min(360px,88vw);padding:28px 24px 22px;text-align:center;border:1px solid rgba(154,125,74,.42);background:linear-gradient(180deg,rgba(255,253,247,.97),rgba(247,240,226,.96));box-shadow:0 22px 70px rgba(78,59,31,.17),inset 0 0 0 1px rgba(255,255,255,.74)}.shooting-result-card>span{font-family:"Cinzel",serif;font-size:9px;letter-spacing:.26em;color:#a18858}.shooting-result-card>strong{display:block;margin-top:6px;font-family:"Cinzel",serif;font-size:24px;font-weight:500;letter-spacing:.24em;color:#665132}.shooting-result-rank-wrap{margin:18px 0 16px}.shooting-result-rank-wrap small{display:block;font-family:"Cinzel",serif;font-size:9px;letter-spacing:.26em;color:#aa9674}.shooting-result-rank{display:block;margin-top:2px;font-family:"Cinzel",serif;font-size:86px;font-weight:500;line-height:.92;color:#b18b45;text-shadow:0 2px 0 rgba(255,255,255,.86),0 8px 24px rgba(112,82,35,.12)}.shooting-result-rank[data-rank="S"]{font-size:94px;color:#c59b3e;text-shadow:0 2px 0 #fff,0 0 18px rgba(205,165,74,.38),0 12px 28px rgba(105,73,24,.13)}.shooting-result-rank[data-rank="A"]{color:#b38d4b}.shooting-result-rank[data-rank="B"]{color:#8e8068}.shooting-result-rank[data-rank="C"],.shooting-result-rank[data-rank="D"],.shooting-result-rank[data-rank="E"]{color:#8b8070}.shooting-result-stats{display:grid;grid-template-columns:1fr 1fr;margin:0 0 20px;border-top:1px solid rgba(154,125,74,.18);border-bottom:1px solid rgba(154,125,74,.18)}.shooting-result-stats>div{padding:11px 8px}.shooting-result-stats>div+div{border-left:1px solid rgba(154,125,74,.18)}.shooting-result-stats span{display:block;font-family:"Cinzel",serif;font-size:8px;letter-spacing:.18em;color:#a18d6a}.shooting-result-stats strong{display:block;margin-top:5px;font-family:"Cinzel",serif;font-size:19px;font-weight:500;letter-spacing:.08em;color:#6f5937;font-variant-numeric:tabular-nums}.shooting-result-actions{margin:0}.shooting-result-card button{display:block;width:100%;height:42px;margin-top:9px;border:1px solid rgba(145,113,60,.52);background:#9f8250;color:#fffdf8;font-family:"Noto Serif JP",serif;letter-spacing:.14em}.shooting-result-card button.sub{background:transparent;color:#756344}

.shooting-result-breakdown{margin:-8px 0 18px;border-top:1px solid rgba(154,125,74,.18)}
.shooting-result-detail-row{min-height:58px;display:grid;grid-template-columns:76px minmax(0,1fr) 38px;align-items:center;column-gap:7px;padding:8px 2px;border-bottom:1px solid rgba(154,125,74,.14);text-align:left}
.shooting-result-detail-label{font-size:11px;letter-spacing:.06em;color:#796747;white-space:nowrap}
.shooting-result-detail-row>strong{width:38px;text-align:right;font-family:"Cinzel",serif;font-size:13px;font-weight:500;color:#685437;font-variant-numeric:tabular-nums;white-space:nowrap}
.shooting-result-member-list{display:grid;grid-template-columns:repeat(3,56px);align-items:center;justify-content:center;column-gap:9px;min-width:0}
.shooting-result-member{position:relative;display:grid;grid-template-columns:28px 24px;align-items:center;column-gap:4px;width:56px;min-width:56px}
.shooting-result-member img{width:28px;height:28px;object-fit:cover;object-position:center;border-radius:50%;border:1px solid rgba(152,123,70,.30);background:rgba(255,255,255,.68)}
.shooting-result-member b{display:block;width:24px;text-align:left;font-size:10.5px;font-weight:500;color:#786444;white-space:nowrap;font-variant-numeric:tabular-nums;overflow:visible}
.shooting-result-member.down img{filter:grayscale(1);opacity:.35}
.shooting-result-member.down b{color:#a0927c}
.shooting-result-time-row{grid-template-columns:1fr auto;min-height:42px}
.shooting-result-time-row>strong{width:auto;margin-right:28px;font-size:17px;text-align:right}
@media (max-height:700px){.shooting-result{padding:10px}.shooting-result-card{max-height:96vh;overflow:auto;padding:17px 18px 14px}.shooting-result-rank-wrap{margin:8px 0}.shooting-result-rank{font-size:62px}.shooting-result-rank[data-rank="S"]{font-size:68px}.shooting-result-detail-row{min-height:50px}.shooting-result-member-list{grid-template-columns:repeat(3,52px);column-gap:7px}.shooting-result-member{grid-template-columns:26px 22px;width:52px;min-width:52px}.shooting-result-member img{width:26px;height:26px}.shooting-result-member b{width:22px;font-size:9.5px}.shooting-result-card button{height:38px}}

#shooting-event-root.burst-flash .shooting-wash{animation:shootingFlash .35s ease-out}@keyframes shootingFlash{0%{background:rgba(255,255,255,.96)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}
/* Special Event card */
#ninmu-panel-special .shooting-entry-card{position:relative;overflow:hidden;border-color:rgba(164,131,74,.42);background:linear-gradient(105deg,rgba(255,253,247,.86),rgba(242,231,207,.72));box-shadow:inset 0 0 0 1px rgba(255,255,255,.44)}
#ninmu-panel-special .shooting-entry-card .ninmu-chapter-label{color:#9b7d48}
#ninmu-panel-special .shooting-entry-card::after{content:'PLAY';position:absolute;right:18px;bottom:13px;font-family:"Cinzel",serif;font-size:8px;letter-spacing:.2em;color:rgba(121,94,51,.65)}
@media (min-width:700px){.shooting-arena{left:50%;width:min(540px,100%);transform:translateX(-50%);border-left:1px solid rgba(153,126,78,.12);border-right:1px solid rgba(153,126,78,.12)}.shooting-boss{width:142px;height:142px}.shooting-player{width:82px;height:140px}.shooting-player img{max-width:76px;max-height:136px}}


/* ===== START COUNTDOWN ===== */
.shooting-countdown{position:absolute;z-index:58;inset:0;display:none;align-items:center;justify-content:center;pointer-events:none;background:radial-gradient(circle at center,rgba(255,253,246,.18),rgba(255,253,246,0) 42%)}
.shooting-countdown.show{display:flex}
.shooting-countdown span{font-family:"Cinzel",serif;font-size:clamp(74px,20vw,122px);font-weight:500;line-height:1;color:#765d36;letter-spacing:.02em;text-shadow:0 2px 0 rgba(255,255,255,.95),0 0 18px rgba(214,180,112,.6),0 12px 36px rgba(80,58,28,.18);opacity:0}
.shooting-countdown span.pop{animation:shootingCountdownPop .80s cubic-bezier(.16,.84,.32,1) both}
@keyframes shootingCountdownPop{0%{opacity:0;transform:scale(1.55);filter:blur(5px)}22%{opacity:1;transform:scale(1);filter:blur(0)}72%{opacity:1;transform:scale(.95)}100%{opacity:0;transform:scale(.78);filter:blur(2px)}}

/* ===== BOSS DEFEAT SEQUENCE ===== */
.shooting-boss.defeated{animation:shootingBossDefeated 1.75s ease-out forwards !important;transform-origin:center center}
@keyframes shootingBossDefeated{
  0%{opacity:1;filter:sepia(1) saturate(10) hue-rotate(315deg) brightness(1.55) drop-shadow(0 0 26px rgba(225,35,35,.98))}
  10%{transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(1.06) rotate(-2deg);filter:brightness(.45) sepia(1) saturate(9) hue-rotate(315deg) drop-shadow(0 0 30px rgba(190,15,15,.96))}
  20%{transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(.99) rotate(2deg);filter:sepia(1) saturate(11) hue-rotate(315deg) brightness(1.8) drop-shadow(0 0 36px rgba(245,45,45,1))}
  36%{opacity:1;filter:brightness(2.2) sepia(1) saturate(8) hue-rotate(315deg) drop-shadow(0 0 46px rgba(255,80,60,1))}
  60%{opacity:.82;filter:brightness(1.7) sepia(1) saturate(7) hue-rotate(315deg) blur(.5px) drop-shadow(0 0 52px rgba(240,55,45,.92))}
  100%{opacity:0;filter:brightness(2.6) sepia(1) saturate(5) hue-rotate(315deg) blur(5px) drop-shadow(0 0 70px rgba(255,110,75,.42));transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(1.35)}
}
#shooting-event-root.boss-defeat-flash .shooting-wash{animation:shootingBossDefeatScreen 1.5s ease-out both}
@keyframes shootingBossDefeatScreen{0%{background:rgba(255,220,210,.58)}10%{background:rgba(255,255,255,.72)}22%{background:rgba(255,195,185,.28)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}

/* ===== 3-GAUGE BOSS PHASES ===== */
.shooting-boss.phase-change{animation:shootingBossPhaseChange .7s ease-out}
@keyframes shootingBossPhaseChange{0%{filter:brightness(1);transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(1)}25%{filter:sepia(1) saturate(8) hue-rotate(315deg) brightness(1.7) drop-shadow(0 0 26px rgba(220,50,45,.85));transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(1.1)}100%{filter:drop-shadow(0 10px 10px rgba(63,48,32,.20));transform:translate3d(var(--boss-x,0),var(--boss-y,0),0) translate(-50%,-50%) scale(1)}}
#shooting-event-root.boss-phase-flash .shooting-wash{animation:shootingPhaseFlash .62s ease-out}
@keyframes shootingPhaseFlash{0%{background:rgba(255,215,205,.45)}30%{background:rgba(255,245,238,.28)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}
#shooting-event-root[data-boss-phase="2"] .shooting-enemy-bullet{box-shadow:0 0 0 1px rgba(198,182,228,.18),0 0 10px rgba(126,88,164,.36)!important}
#shooting-event-root[data-boss-phase="3"] .shooting-enemy-bullet{box-shadow:0 0 0 1px rgba(222,178,212,.18),0 0 10px rgba(174,78,136,.4)!important}

/* CHAPTER03-04「雨冠」限定：弾の見た目を極限まで軽量化する。
   REMNANT_03(天墜)は本格的な弾幕ボスで、通常の敵弾/雑魚弾スタイル
   (グラデーション+4層box-shadow+backdrop-filter+擬似要素2つ)を
   そのまま食らうと弾数がかなり多くなる。レイドと同じ考え方で、
   見た目より処理落ち対策を優先し、単色フラットな円まで削ぎ落とす。
   他ステージの見た目には一切影響しない。 */
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-mini-enemy-bullet{
  background:#8054ae!important;
  border:1px solid rgba(215,191,235,.58)!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:1!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-enemy-bullet::after,
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-mini-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-mini-enemy-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch03_04"][data-boss-phase="2"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage="shooting_ch03_04"][data-boss-phase="3"] .shooting-enemy-bullet{
  box-shadow:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch03_04"] .shooting-bullet{
  box-shadow:none!important;
}

/* CHAPTER03-03「交差」限定：弾の見た目を極限まで軽量化する。
   MINI_03(mini_barrage_v1)はinfiniteEnemiesの通常ステージで、
   常時複数体が濃い弾幕を出し続けるため、他の弾幕ボスと同様に
   グラデーション+box-shadow+backdrop-filter+擬似要素を全部撤去する。
   通常ステージ(ボスフェーズなし)なのでphase別の上書きは不要。 */
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-mini-enemy-bullet{
  background:#8054ae!important;
  border:1px solid rgba(215,191,235,.58)!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:1!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-enemy-bullet::after,
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-mini-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-mini-enemy-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch03_03"] .shooting-bullet{
  box-shadow:none!important;
}


/* SPECIAL STAGE「超弾幕」限定：見た目を徹底的に簡素化する。
   このステージ自体がパフォーマンス検証用のストレステストなので、
   他ステージ以上に容赦なく削る。弾は完全な単色フラット、
   ボス本体のdrop-shadowも撤去、背景演出も最小限にする。 */
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-mini-enemy-bullet{
  background:#4a4a4a!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  filter:none!important;
  opacity:1!important;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-enemy-bullet::after,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-mini-enemy-bullet::before,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-mini-enemy-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"][data-boss-phase="2"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"][data-boss-phase="3"] .shooting-enemy-bullet{
  box-shadow:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-bullet{
  box-shadow:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-boss{
  filter:none!important;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-bg{
  filter:none!important;
}


/* ===== SINGLE GAUGE / STOCK SYSTEM ===== */
#shooting-event-root.boss-phase-pause .shooting-boss{filter:brightness(1.15) drop-shadow(0 0 18px rgba(220,185,115,.48))}
#shooting-event-root.boss-phase-pause .shooting-boss-phase::after{content:"  ·  BREAK";color:#a28b63}

/* Player stock depleted: disappear first, then GAME OVER result. */
.shooting-player.defeated{animation:shootingPlayerDefeated 1.45s ease-out forwards!important;pointer-events:none}
@keyframes shootingPlayerDefeated{
  0%{opacity:1;filter:brightness(1);transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(1)}
  16%{opacity:1;filter:brightness(1.8) sepia(.55) saturate(1.5);transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(1.06)}
  34%{opacity:.72;filter:brightness(2.2) blur(.3px);transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(.96)}
  100%{opacity:0;filter:brightness(2.8) blur(5px);transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(.62)}
}
#shooting-event-root.player-defeat-flash .shooting-wash{animation:shootingPlayerDefeatFlash 1.2s ease-out both}
@keyframes shootingPlayerDefeatFlash{0%{background:rgba(255,235,235,.5)}18%{background:rgba(255,255,255,.72)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}


/* ===== CHARACTER SELECT / SHOOTING CHARACTER TYPES ===== */
.shooting-character-select{
  position:absolute;
  z-index:66;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:108px 16px 84px;
  background:linear-gradient(180deg,rgba(248,245,237,.92),rgba(240,234,221,.94));
  backdrop-filter:blur(6px);
  pointer-events:auto;
}
.shooting-character-select.show{display:flex}
.shooting-character-select-card{
  width:min(560px,100%);
  max-height:100%;
  overflow:auto;
  padding:18px 14px 16px;
  border:1px solid rgba(156,128,78,.34);
  background:rgba(255,253,248,.94);
  box-shadow:0 18px 54px rgba(75,57,32,.14);
}
.shooting-character-select-kicker{
  display:block;
  text-align:center;
  font-family:"Cinzel",serif;
  font-size:8px;
  letter-spacing:.24em;
  color:#a18657;
}
.shooting-character-select-card>strong{
  display:block;
  margin:4px 0 14px;
  text-align:center;
  font-size:15px;
  font-weight:500;
  letter-spacing:.12em;
  color:#665236;
}
.shooting-character-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.shooting-character-option{
  min-width:0;
  padding:8px 7px 10px;
  border:1px solid rgba(151,121,69,.24);
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(245,239,226,.86));
  color:#5e4b31;
  font-family:"Noto Serif JP",serif;
  cursor:pointer;
  transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease;
}
.shooting-character-option:active{transform:scale(.98)}
.shooting-character-option.selected{
  border-color:rgba(170,133,62,.72);
  background:linear-gradient(180deg,#fffdf8,#efe2c4);
  box-shadow:0 0 0 1px rgba(199,160,83,.2),0 8px 20px rgba(112,84,39,.10);
}
.shooting-character-portrait{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  height:128px;
  margin-bottom:7px;
  overflow:hidden;
}
.shooting-character-portrait img{
  display:block;
  max-width:96%;
  max-height:124px;
  object-fit:contain;
  filter:drop-shadow(0 5px 5px rgba(70,55,35,.10));
}
.shooting-character-option b{
  display:block;
  font-size:12px;
  font-weight:600;
  letter-spacing:.1em;
}
.shooting-character-option small{
  display:block;
  min-height:22px;
  margin-top:3px;
  font-family:"Cinzel",serif;
  font-size:7px;
  line-height:1.3;
  letter-spacing:.08em;
  color:#a18049;
}
.shooting-character-option em{
  display:block;
  margin-top:5px;
  font-style:normal;
  font-size:8px;
  line-height:1.55;
  color:#82725a;
}

/* Character body sizes. Eri keeps the current compact size. */
/* ===== SHOOTING CHARACTER SIZE =====
   Strategyと同じ characters.js -> uiScale.battleBack を --unit-scale に流し込む。
   キャラ個別の大きさ調整はCSSではなく characters.js 側で行う。 */
.shooting-player[data-character-id] img{
  transform:scale(var(--unit-scale,1));
  transform-origin:center center;
}

/* Hayate: many, wide, light shots. */
.shooting-bullet-hayate{
  width:3px;
  height:16px;
  background:linear-gradient(180deg,#fffdf2,#f2d768 48%,#bd9a24);
  box-shadow:0 0 7px rgba(255,229,99,.9),0 0 13px rgba(200,161,39,.34);
}

/* Ayane: narrow high-power precision shot. Every fourth shot glows harder. */
.shooting-bullet-ayane{
  width:3px;
  height:28px;
  background:linear-gradient(180deg,#fff,#e6e1e8 38%,#706774);
  box-shadow:0 0 7px rgba(234,226,238,.9),0 0 14px rgba(84,70,93,.36);
}
.shooting-bullet-ayane.charged{
  width:6px;
  height:36px;
  background:linear-gradient(180deg,#fff,#f7efca 32%,#a58b4d 67%,#594d61);
  box-shadow:0 0 10px rgba(255,244,190,.98),0 0 22px rgba(155,126,71,.62);
}

@media (max-width:480px){
  .shooting-character-select{padding:102px 10px 80px}
  .shooting-character-select-card{padding:14px 9px 12px}
  .shooting-character-grid{gap:5px}
  .shooting-character-option{padding:7px 4px 8px}
  .shooting-character-portrait{height:112px}
  .shooting-character-portrait img{max-height:108px}
  .shooting-character-option em{font-size:7px}
}


/* ===== CHARACTER SELECT: panel artwork ===== */
.shooting-character-portrait{
  align-items:center;
  height:132px;
  background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(241,234,218,.72));
  border:1px solid rgba(158,128,77,.13);
}
.shooting-character-portrait img{
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  object-fit:cover;
  object-position:center center;
  filter:none;
}

/* ===== ULT button / cut-in ===== */
.shooting-burst span#shooting-ult-label{font-weight:700;letter-spacing:.24em}
.shooting-burst:not(:disabled)::after{
  content:'READY';
  position:absolute;
  z-index:3;
  right:5px;
  top:3px;
  font-family:"Cinzel",serif;
  font-size:6px;
  letter-spacing:.12em;
  color:#a07832;
}
.shooting-ult-cut{
  position:absolute;
  z-index:120;
  left:0;
  right:0;
  top:43%;
  transform:translateY(-50%) skewY(-2deg) translateX(-110%);
  padding:15px 24px 17px;
  border-top:1px solid rgba(210,177,110,.75);
  border-bottom:1px solid rgba(210,177,110,.75);
  background:linear-gradient(90deg,rgba(255,255,255,.12),rgba(255,253,244,.94) 18%,rgba(248,239,218,.96) 70%,rgba(255,255,255,.1));
  box-shadow:0 12px 38px rgba(65,47,27,.14);
  pointer-events:none;
  transition:transform .24s cubic-bezier(.16,.8,.2,1),opacity .3s ease;
}
.shooting-ult-cut.show{transform:translateY(-50%) skewY(-2deg) translateX(0)}
.shooting-ult-cut.hide{opacity:0;transform:translateY(-50%) skewY(-2deg) translateX(8%)}
.shooting-ult-cut span{display:block;font-family:"Cinzel",serif;font-size:8px;letter-spacing:.34em;color:#a5803b}
.shooting-ult-cut strong{display:block;margin-top:3px;font-size:21px;font-weight:500;letter-spacing:.12em;color:#4f4434;text-shadow:0 1px 0 #fff}
.shooting-ult-cut.hayate{background:linear-gradient(90deg,rgba(255,255,255,.06),rgba(255,250,218,.96) 20%,rgba(246,221,114,.82) 70%,rgba(255,255,255,.08))}
.shooting-ult-cut.ayane{background:linear-gradient(90deg,rgba(255,255,255,.06),rgba(247,243,249,.96) 20%,rgba(214,205,223,.9) 70%,rgba(255,255,255,.08))}

#shooting-event-root.ult-flash-eri .shooting-wash{animation:shootingUltEriFlash .68s ease-out}
#shooting-event-root.ult-flash-hayate .shooting-wash{animation:shootingUltHayateFlash .68s ease-out}
#shooting-event-root.ult-flash-ayane .shooting-wash{animation:shootingUltAyaneFlash .68s ease-out}
@keyframes shootingUltEriFlash{0%{background:rgba(255,255,255,.92)}35%{background:rgba(250,239,201,.38)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}
@keyframes shootingUltHayateFlash{0%{background:rgba(255,247,187,.9)}35%{background:rgba(255,226,100,.26)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}
@keyframes shootingUltAyaneFlash{0%{background:rgba(245,239,255,.9)}35%{background:rgba(187,169,205,.28)}100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}}

.shooting-ult-shot.hayate{
  width:3px;
  height:20px;
  background:linear-gradient(180deg,#fff,#ffe36f 45%,#d2a62c);
  box-shadow:0 0 9px rgba(255,230,94,.96),0 0 17px rgba(220,181,52,.52);
}

/* Ayane ULT: a narrow high-power line. It only damages the boss when aligned. */
.shooting-ayane-ult-beam{
  position:absolute;
  z-index:15;
  width:8px;
  transform:translateX(-50%) scaleX(.15);
  transform-origin:center bottom;
  opacity:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 28%,rgba(213,199,226,.98) 50%,rgba(255,255,255,.95) 72%,transparent);
  box-shadow:0 0 10px rgba(237,229,247,.95),0 0 24px rgba(121,96,143,.6);
  pointer-events:none;
}
.shooting-ayane-ult-beam.show{animation:shootingAyaneBeamCharge .82s ease-out forwards}
.shooting-ayane-ult-beam.hit{width:18px;box-shadow:0 0 12px #fff,0 0 34px rgba(139,103,160,.92),0 0 58px rgba(95,67,112,.56)}
.shooting-ayane-ult-beam.miss{opacity:.42}
.shooting-ayane-ult-beam.fade{opacity:0!important;transition:opacity .32s ease}
@keyframes shootingAyaneBeamCharge{
  0%{opacity:0;transform:translateX(-50%) scaleX(.12)}
  40%{opacity:.68;transform:translateX(-50%) scaleX(.55)}
  55%{opacity:1;transform:translateX(-50%) scaleX(2.1)}
  100%{opacity:.9;transform:translateX(-50%) scaleX(1)}
}
#shooting-event-root.ult-miss::after{
  content:'MISS';
  position:absolute;
  z-index:130;
  left:50%;
  top:33%;
  transform:translate(-50%,-50%);
  font-family:"Cinzel",serif;
  font-size:16px;
  letter-spacing:.3em;
  color:rgba(88,72,98,.8);
  text-shadow:0 1px 0 #fff;
  pointer-events:none;
}

@media (max-width:480px){
  .shooting-character-portrait{height:116px}
  .shooting-character-portrait img{max-height:none}
  .shooting-ult-cut strong{font-size:18px}
}

/* ============================================================
   Ayane ULT "暴走" — 黒手が暴れ出し、敵へ駆け抜ける演出
   ============================================================ */
.shooting-ayane-blackhand-ult{
  position:absolute;
  z-index:10;
  inset:0;
  pointer-events:none;
  opacity:1;
  overflow:visible;
}
.shooting-ayane-blackhand-aura{
  position:absolute;
  left:var(--ayane-start-x);
  top:var(--ayane-start-y);
  width:18px;
  height:18px;
  border-radius:50%;
  transform:translate(-50%,-50%) scale(.2);
  opacity:0;
  background:radial-gradient(circle,rgba(20,10,28,.96) 0 22%,rgba(48,18,60,.72) 34%,rgba(13,8,18,.25) 58%,transparent 74%);
  box-shadow:0 0 10px rgba(20,8,28,.9),0 0 28px rgba(56,20,74,.68),0 0 54px rgba(22,10,30,.44);
}
.shooting-ayane-blackhand-ult.charge .shooting-ayane-blackhand-aura{
  animation:shootingAyaneBlackAura .44s cubic-bezier(.2,.9,.2,1) forwards;
}
@keyframes shootingAyaneBlackAura{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}
  55%{opacity:1;transform:translate(-50%,-50%) scale(4.3)}
  100%{opacity:.82;transform:translate(-50%,-50%) scale(3.1)}
}

.shooting-ayane-blackhand-shot,
.shooting-ayane-blackhand-afterimage{
  position:absolute;
  left:var(--ayane-start-x);
  top:var(--ayane-start-y);
  transform-origin:50% 100%;
}
.shooting-ayane-blackhand-shot{
  z-index:6;
  width:96px;
  height:calc(var(--ayane-distance) + 136px);
  opacity:0;
  transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.34) scaleY(.04);
  filter:drop-shadow(0 0 8px rgba(0,0,0,.95)) drop-shadow(0 0 18px rgba(59,29,70,.72));
}
.shooting-ayane-blackhand-shot img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:fill;
  object-position:center center;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  transition:opacity .16s ease, transform .16s cubic-bezier(.2,.9,.25,1), filter .18s ease;
}
.shooting-ayane-blackhand-shot .hand-open{
  opacity:1;
  transform:scale(1);
}
.shooting-ayane-blackhand-shot .hand-close{
  opacity:0;
  transform:scale(.96);
}
.shooting-ayane-blackhand-ult.strike .shooting-ayane-blackhand-shot{
  animation:shootingAyaneHandRush .30s cubic-bezier(.08,.8,.15,1) forwards;
}
@keyframes shootingAyaneHandRush{
  0%{opacity:0;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.34) scaleY(.04)}
  20%{opacity:1;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.66) scaleY(.28)}
  58%{opacity:1;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(1.08) scaleY(.88)}
  100%{opacity:1;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(1) scaleY(1)}
}

.shooting-ayane-blackhand-afterimage{
  z-index:4;
  width:60px;
  height:calc(var(--ayane-distance) + 108px);
  opacity:0;
  transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.26) scaleY(.04);
  border-radius:48px 48px 18px 18px;
  background:linear-gradient(180deg,transparent 0,rgba(20,10,28,.25) 10%,rgba(18,9,23,.82) 26%,rgba(47,24,58,.62) 72%,rgba(47,24,58,0) 100%);
  filter:blur(3px);
}
.shooting-ayane-blackhand-ult.strike .shooting-ayane-blackhand-afterimage.a1{animation:shootingAyaneAfterRush .34s .02s ease-out forwards}
.shooting-ayane-blackhand-ult.strike .shooting-ayane-blackhand-afterimage.a2{animation:shootingAyaneAfterRush .39s .06s ease-out forwards}
.shooting-ayane-blackhand-ult.strike .shooting-ayane-blackhand-afterimage.a3{animation:shootingAyaneAfterRush .43s .10s ease-out forwards}
@keyframes shootingAyaneAfterRush{
  0%{opacity:0;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.26) scaleY(.04)}
  42%{opacity:.56;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.62) scaleY(.78)}
  100%{opacity:0;transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(.14) scaleY(1.08)}
}

.shooting-ayane-blackhand-impact{
  position:absolute;
  z-index:8;
  left:var(--ayane-end-x);
  top:var(--ayane-end-y);
  width:28px;
  height:28px;
  border-radius:50%;
  transform:translate(-50%,-50%) scale(.1);
  opacity:0;
  background:radial-gradient(circle,#fff 0 4%,rgba(114,67,129,.86) 9%,rgba(18,8,22,.93) 28%,rgba(0,0,0,.78) 45%,transparent 72%);
  box-shadow:0 0 18px rgba(0,0,0,.95),0 0 42px rgba(68,31,80,.75);
}
.shooting-ayane-blackhand-ult.hit .shooting-ayane-blackhand-impact{
  animation:shootingAyaneBlackImpact .50s ease-out forwards;
}
@keyframes shootingAyaneBlackImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.1)}
  25%{opacity:1;transform:translate(-50%,-50%) scale(3.5)}
  52%{opacity:.9;transform:translate(-50%,-50%) scale(2.1)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(5.8)}
}
.shooting-ayane-blackhand-smoke{
  position:absolute;
  z-index:7;
  left:var(--ayane-end-x);
  top:var(--ayane-end-y);
  width:13px;
  height:26px;
  border-radius:60% 40% 60% 35%;
  opacity:0;
  background:radial-gradient(ellipse,rgba(42,22,51,.82),rgba(6,3,9,.62) 55%,transparent 73%);
  filter:blur(1.5px);
}
.shooting-ayane-blackhand-ult.hit .shooting-ayane-blackhand-smoke.s1{animation:shootingAyaneSmoke1 .72s ease-out forwards}
.shooting-ayane-blackhand-ult.hit .shooting-ayane-blackhand-smoke.s2{animation:shootingAyaneSmoke2 .76s .03s ease-out forwards}
.shooting-ayane-blackhand-ult.hit .shooting-ayane-blackhand-smoke.s3{animation:shootingAyaneSmoke3 .70s .05s ease-out forwards}
.shooting-ayane-blackhand-ult.hit .shooting-ayane-blackhand-smoke.s4{animation:shootingAyaneSmoke4 .79s .02s ease-out forwards}
@keyframes shootingAyaneSmoke1{0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-62px,-42px) rotate(-45deg) scale(2.3)}}
@keyframes shootingAyaneSmoke2{0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(52px,-54px) rotate(39deg) scale(2.5)}}
@keyframes shootingAyaneSmoke3{0%{opacity:.8;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-45px,41px) rotate(-72deg) scale(2)}}
@keyframes shootingAyaneSmoke4{0%{opacity:.8;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(55px,36px) rotate(65deg) scale(2.2)}}

.shooting-ayane-blackhand-ult.fade{
  opacity:0;
  transition:opacity .34s ease;
}
#shooting-event-root.ayane-rampage-active .shooting-player,
#shooting-event-root.ayane-rampage-active #shooting-player{
  z-index:58 !important;
}
#shooting-event-root.ayane-rampage-active .shooting-player img,
#shooting-event-root.ayane-rampage-active #shooting-player img{
  position:relative;
  z-index:2;
}
#shooting-event-root.ayane-rampage-active .shooting-arena-bg{
  filter:brightness(.55) saturate(.65) contrast(1.08);
  transition:filter .18s ease;
}
#shooting-event-root.ayane-rampage-active .shooting-wash{
  background:rgba(24,12,28,.18);
}
#shooting-event-root.ayane-rampage-shake .shooting-arena{
  animation:shootingAyaneRampageShake .42s ease-in-out infinite;
  will-change:transform;
}
@keyframes shootingAyaneRampageShake{
  0%,100%{transform:translate(0,0)}
  18%{transform:translate(-1.5px,.8px)}
  36%{transform:translate(1.6px,-1px)}
  54%{transform:translate(-1px,-1.4px)}
  72%{transform:translate(1.3px,1px)}
  88%{transform:translate(-.7px,.8px)}
}

/* ============================================================
   Ayane ULT "暴走" — 7秒拘束 / 継続ダメージ
   レーザーではなく、黒手画像そのものが敵まで伸びて掴む。
   ============================================================ */
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-shot{
  opacity:1;
  animation:none;
  transform:translate(-50%,-100%) rotate(calc(var(--ayane-angle) + 90deg)) scaleX(1.02) scaleY(1);
  animation:shootingAyaneGripHold .48s ease-in-out infinite alternate;
}
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-shot .hand-open{
  opacity:0;
  transform:scale(.98);
}
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-shot .hand-close{
  opacity:1;
  transform:scale(1);
}
@keyframes shootingAyaneGripHold{
  from{filter:drop-shadow(0 0 8px rgba(0,0,0,1)) drop-shadow(0 0 14px rgba(57,26,70,.72));}
  to{filter:drop-shadow(0 0 12px rgba(0,0,0,1)) drop-shadow(0 0 26px rgba(100,47,118,.94));}
}

.shooting-ayane-blackhand-grip-ring{
  position:absolute;
  z-index:6;
  left:var(--ayane-end-x);
  top:var(--ayane-end-y);
  width:62px;
  height:62px;
  border:2px solid rgba(35,15,43,.72);
  border-radius:50%;
  opacity:0;
  transform:translate(-50%,-50%) scale(.5);
  box-shadow:0 0 10px rgba(0,0,0,.75), inset 0 0 15px rgba(78,33,92,.2);
}
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-grip-ring.r1{animation:shootingAyaneGripRing 1.05s linear infinite}
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-grip-ring.r2{animation:shootingAyaneGripRing 1.05s .35s linear infinite}
.shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-grip-ring.r3{animation:shootingAyaneGripRing 1.05s .70s linear infinite}
@keyframes shootingAyaneGripRing{
  0%{opacity:.8;transform:translate(-50%,-50%) scale(.42) rotate(0deg)}
  55%{opacity:.44;transform:translate(-50%,-50%) scale(1.05) rotate(120deg)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55) rotate(220deg)}
}
.shooting-ayane-blackhand-ult.grip-pulse .shooting-ayane-blackhand-impact{
  animation:shootingAyaneGripImpact .28s ease-out 1;
}
@keyframes shootingAyaneGripImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}
  28%{opacity:.9;transform:translate(-50%,-50%) scale(2.2)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(3.7)}
}

#shooting-boss.ayane-grabbed{
  animation:shootingAyaneBossCrush .18s ease-in-out infinite alternate !important;
  filter:brightness(.58) contrast(1.35) saturate(.55) drop-shadow(0 0 9px rgba(20,7,25,.95)) drop-shadow(0 0 19px rgba(83,34,96,.75));
}
@keyframes shootingAyaneBossCrush{
  from{scale:.985; rotate:-.6deg}
  to{scale:1.015; rotate:.6deg}
}
.shooting-ayane-blackhand-ult.release .shooting-ayane-blackhand-shot{
  opacity:0;
  transition:opacity .22s ease, filter .22s ease;
}
.shooting-ayane-blackhand-ult.release .shooting-ayane-blackhand-shot .hand-open,
.shooting-ayane-blackhand-ult.release .shooting-ayane-blackhand-shot .hand-close{
  opacity:0;
}

/* ============================================================
   HAYATE ULT — 月光モード (3.5s)
   ============================================================ */
#shooting-event-root.hayate-moonlight-active #shooting-arena::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 18;
  background:
    radial-gradient(circle at 50% 78%, rgba(255,245,170,.20), transparent 27%),
    linear-gradient(180deg, rgba(255,250,210,.05), rgba(255,228,105,.12));
  animation: shootingMoonlightField .52s ease-in-out infinite alternate;
}

#shooting-event-root .shooting-player.hayate-moonlight,
#shooting-event-root #shooting-player.hayate-moonlight {
  filter: drop-shadow(0 0 7px rgba(255,244,165,.95)) drop-shadow(0 0 17px rgba(255,214,74,.72));
}

#shooting-event-root #shooting-player.hayate-moonlight::before,
#shooting-event-root #shooting-player.hayate-moonlight::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 72%;
  height: 88%;
  border-radius: 50%;
  transform: translate(-50%,-50%);
  border: 1px solid rgba(255,242,160,.58);
  box-shadow: 0 0 18px rgba(255,224,86,.38), inset 0 0 15px rgba(255,247,190,.15);
  pointer-events: none;
  animation: shootingMoonlightAura .58s ease-in-out infinite alternate;
}
#shooting-event-root #shooting-player.hayate-moonlight::after {
  width: 92%;
  height: 110%;
  opacity: .45;
  animation-duration: .92s;
}

#shooting-event-root.hayate-moonlight-active .shooting-bullet-hayate {
  box-shadow: 0 0 7px rgba(255,244,157,.95), 0 0 15px rgba(255,210,58,.74) !important;
  transform: translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(1.12);
}

@keyframes shootingMoonlightField {
  from { opacity: .48; }
  to   { opacity: .82; }
}
@keyframes shootingMoonlightAura {
  from { transform: translate(-50%,-50%) scale(.92); opacity: .50; }
  to   { transform: translate(-50%,-50%) scale(1.08); opacity: .95; }
}


/* Character select: selection is separate from stage start */
.shooting-character-start{
  display:block;
  width:min(240px,72%);
  height:44px;
  margin:16px auto 0;
  border:1px solid rgba(160,126,66,.52);
  background:linear-gradient(180deg,#fffefa,#f1e5ca);
  color:#715a37;
  font-family:"Noto Serif JP",serif;
  font-size:13px;
  letter-spacing:.22em;
  box-shadow:0 7px 18px rgba(102,76,36,.10);
  cursor:pointer;
}
.shooting-character-start:active{transform:translateY(1px)}

/* Safety: no shooting HUD/footer may survive after the event root is closed. */
#shooting-event-root:not(.open) .shooting-footer{display:none!important}


/* ============================================================
   ULT READY notice — center-screen awareness cue
   ============================================================ */
.shooting-ult-ready-notice{
  position:absolute;
  z-index:95;
  left:50%;
  top:48%;
  width:min(330px,78vw);
  padding:14px 18px 13px;
  text-align:center;
  pointer-events:none;
  opacity:0;
  transform:translate(-50%,-50%) scale(.88);
  border-top:1px solid rgba(178,139,65,.72);
  border-bottom:1px solid rgba(178,139,65,.72);
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,251,232,.94) 18%,rgba(255,248,214,.96) 50%,rgba(255,251,232,.94) 82%,rgba(255,255,255,0));
  box-shadow:0 0 30px rgba(219,178,76,.22);
}
.shooting-ult-ready-notice::before{
  content:"";
  position:absolute;
  inset:-14px 8%;
  background:radial-gradient(ellipse at center,rgba(255,223,123,.28),rgba(255,255,255,0) 68%);
  filter:blur(7px);
  z-index:-1;
}
.shooting-ult-ready-notice.show{
  animation:shootingUltReadyNotice 1.55s cubic-bezier(.2,.8,.25,1) forwards;
}
.shooting-ult-ready-notice span{
  display:block;
  font-family:"Cinzel",serif;
  font-size:10px;
  letter-spacing:.32em;
  color:#a47b31;
}
.shooting-ult-ready-notice strong{
  display:block;
  margin-top:3px;
  font-family:"Noto Serif JP",serif;
  font-size:20px;
  font-weight:600;
  letter-spacing:.12em;
  color:#5f4a27;
  text-shadow:0 1px 0 rgba(255,255,255,.95),0 0 12px rgba(255,213,103,.38);
}
.shooting-ult-ready-notice small{
  display:block;
  margin-top:5px;
  font-size:9px;
  letter-spacing:.16em;
  color:#9a835b;
}
.shooting-ult-ready-notice.hayate{
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,251,220,.96) 18%,rgba(255,235,143,.98) 50%,rgba(255,251,220,.96) 82%,rgba(255,255,255,0));
}
.shooting-ult-ready-notice.ayane{
  border-color:rgba(96,72,111,.58);
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(244,238,247,.95) 18%,rgba(225,213,232,.97) 50%,rgba(244,238,247,.95) 82%,rgba(255,255,255,0));
  box-shadow:0 0 30px rgba(112,78,130,.19);
}
@keyframes shootingUltReadyNotice{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.82)}
  14%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}
  24%{transform:translate(-50%,-50%) scale(1)}
  72%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-54%) scale(.98)}
}


/* ===== PARTY SWITCH / INDIVIDUAL HP ===== */
.shooting-player-hud{
  min-width:min(52vw,250px);
}
.shooting-player-hud-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.shooting-player-hp-text{
  font-family:"Cinzel",serif;
  font-size:8px;
  letter-spacing:.08em;
  color:#8c7650;
}
.shooting-player-hp-bar{
  position:relative;
  width:min(48vw,230px);
  height:8px;
  overflow:hidden;
  border:1px solid rgba(112,91,57,.26);
  background:rgba(255,255,255,.62);
  box-shadow:inset 0 1px 2px rgba(70,50,28,.06);
}
.shooting-player-hp-bar i{
  display:block;
  width:100%;
  height:100%;
  background:linear-gradient(90deg,#7ca76d,#9fc18d,#c0d7ad);
  transition:width .16s linear;
}
.shooting-hearts{display:none!important}

.shooting-switch-rail{
  position:absolute;
  z-index:32;
  right:10px;
  top:50%;
  transform:translateY(-50%);
  display:flex;
  flex-direction:column;
  gap:10px;
  pointer-events:auto;
}
.shooting-switch-btn{
  position:relative;
  width:68px;
  min-height:86px;
  padding:4px 4px 17px;
  overflow:hidden;
  border:1px solid rgba(153,123,69,.35);
  background:rgba(255,253,248,.88);
  box-shadow:0 7px 18px rgba(70,50,28,.13);
  color:#5c4a30;
  font-family:"Noto Serif JP",serif;
  cursor:pointer;
  backdrop-filter:blur(3px);
  touch-action:manipulation;
}
.shooting-switch-btn img{
  display:block;
  width:58px;
  height:58px;
  margin:0 auto;
  object-fit:cover;
  object-position:center;
  border:1px solid rgba(151,121,69,.16);
}
.shooting-switch-name{
  display:block;
  margin-top:3px;
  font-size:9px;
  line-height:1;
  letter-spacing:.08em;
}
.shooting-switch-hp{
  display:block;
  position:absolute;
  left:5px;
  right:5px;
  bottom:11px;
  height:4px;
  overflow:hidden;
  background:rgba(109,82,50,.16);
}
.shooting-switch-hp i{
  display:block;
  width:100%;
  height:100%;
  background:linear-gradient(90deg,#739c68,#a9c693);
  transition:width .15s linear;
}
.shooting-switch-status{
  position:absolute;
  left:0;
  right:0;
  bottom:1px;
  text-align:center;
  font-family:"Cinzel",serif;
  font-size:6px;
  letter-spacing:.07em;
  color:#957746;
}
.shooting-switch-btn.cooling{
  filter:saturate(.6);
}
.shooting-switch-btn.cooling::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(242,237,225,.42);
  pointer-events:none;
}
.shooting-switch-btn.dead{
  filter:grayscale(1);
  opacity:.35;
}
.shooting-switch-btn:disabled{cursor:default}

.shooting-player.character-swap{
  animation:shootingCharacterSwap .26s ease-out;
}
@keyframes shootingCharacterSwap{
  0%{opacity:.15;filter:brightness(2);scale:.78}
  55%{opacity:1;filter:brightness(1.45);scale:1.08}
  100%{opacity:1;filter:none;scale:1}
}
.shooting-player.party-ko{
  animation:shootingPartyKo .72s ease-out forwards!important;
}
@keyframes shootingPartyKo{
  0%{opacity:1;filter:brightness(1);scale:1}
  35%{opacity:.75;filter:brightness(2.2);scale:1.08}
  100%{opacity:0;filter:brightness(2.8) blur(4px);scale:.65}
}

.shooting-character-option{
  position:relative;
}
.shooting-character-order{
  position:absolute;
  z-index:4;
  top:5px;
  left:5px;
  display:none;
  width:20px;
  height:20px;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:#a8884e;
  color:#fff;
  font-family:"Cinzel",serif;
  font-size:9px;
  box-shadow:0 2px 7px rgba(70,48,20,.18);
}
.shooting-character-option.selected .shooting-character-order{
  display:flex;
}
.shooting-character-start:disabled{
  opacity:.42;
  filter:grayscale(.6);
  cursor:default;
}

@media (max-width:480px){
  .shooting-switch-rail{right:6px;gap:7px}
  .shooting-switch-btn{width:58px;min-height:76px;padding:3px 3px 16px}
  .shooting-switch-btn img{width:48px;height:48px}
  .shooting-player-hud{min-width:46vw}
  .shooting-player-hp-bar{width:44vw}
}


/* ===== PATCH: strategy-style shooting party select ===== */
.shooting-character-select{
  align-items:stretch;
  padding:12px 10px 12px;
  overflow:auto;
  background:rgba(239,236,229,.96);
}
.shooting-party-select-card{
  width:min(390px,100%);
  max-height:none;
  margin:auto;
  padding:0 0 78px;
  overflow:visible;
  border:1px solid rgba(151,126,83,.20);
  background:#fffdf8;
  box-shadow:none;
}
.shooting-party-select-head{padding:17px 18px 10px;border-bottom:1px solid rgba(151,126,83,.12)}
.shooting-party-select-head>strong{display:block;margin:0;text-align:left;font-size:17px;font-weight:500;letter-spacing:.18em;color:#745d37}
.shooting-party-select-head>small{display:block;margin-top:5px;font-size:8px;letter-spacing:.10em;color:#b4a58b}
.shooting-party-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px 12px 10px;background:linear-gradient(180deg,#f4eddf,#f7f2e9)}
.shooting-party-slot{position:relative;height:86px;min-width:0;border:1px solid rgba(158,130,80,.24);border-radius:10px;background:#fffdfa;overflow:hidden;color:#a88348;font-family:"Noto Serif JP",serif;box-shadow:0 4px 10px rgba(91,68,36,.06)}
.shooting-party-slot.empty span{position:absolute;top:8px;left:0;right:0;font-size:9px;color:#d2c6b3}.shooting-party-slot.empty b{font-size:28px;font-weight:200;line-height:1;color:#b58a4a}
.shooting-party-slot.filled{padding:0}.shooting-party-slot.filled img{width:100%;height:100%;object-fit:cover}.shooting-party-slot.filled small{position:absolute;left:0;right:0;bottom:0;padding:4px 2px;background:linear-gradient(180deg,transparent,rgba(73,55,31,.70));font-size:9px;color:#fff}.shooting-party-slot.filled i{position:absolute;right:4px;top:4px;width:18px;height:18px;border-radius:50%;background:rgba(255,253,248,.88);font-size:12px;font-style:normal;line-height:17px;color:#9b7741}
.shooting-party-blessing{padding:0 12px 10px;background:#fffdf8;border-bottom:1px solid rgba(151,126,83,.12)}
.shooting-party-section-head{display:flex;justify-content:space-between;align-items:center;padding:8px 0 6px;color:#8a6635}.shooting-party-section-head span{font-size:13px;letter-spacing:.16em}.shooting-party-section-head small{font-size:8px;color:#c1ad8b}
.shooting-party-blessing-current{display:flex;width:100%;align-items:center;gap:10px;padding:9px;border:1px solid rgba(151,126,83,.20);border-radius:10px;background:#fffefa;color:#6d5838;text-align:left;font-family:"Noto Serif JP",serif}.shooting-party-blessing-plus{display:flex;width:48px;height:48px;align-items:center;justify-content:center;border:1px dashed rgba(151,126,83,.32);border-radius:7px;font-size:24px;color:#b69767}.shooting-party-blessing-current b{display:block;font-size:11px;font-weight:600}.shooting-party-blessing-current small{display:block;margin-top:4px;font-size:8px;color:#ac9a7b}
.shooting-party-blessing-current.disabled{cursor:not-allowed;background:rgba(240,237,229,.75);border-style:dashed;filter:grayscale(.55);opacity:.72}
.shooting-party-blessing-current.disabled .shooting-party-blessing-plus{color:#a8a196;border-color:rgba(160,150,130,.35)}
.shooting-party-blessing-current.disabled b{color:#8a8172}
.shooting-item-effect-notice.not-implemented{
  border-top-color:rgba(150,150,150,.6);
  border-bottom-color:rgba(150,150,150,.6);
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(240,240,240,.94) 18%,rgba(230,230,230,.96) 50%,rgba(240,240,240,.94) 82%,rgba(255,255,255,0));
  box-shadow:0 0 30px rgba(120,120,120,.18);
}
.shooting-item-effect-notice.not-implemented span{color:#7a7a7a}
.shooting-item-effect-notice.not-implemented strong{color:#4a4a4a;text-shadow:0 1px 0 rgba(255,255,255,.9)}
.shooting-item-effect-notice.not-implemented small{color:#8a8a8a}
.shooting-party-blessing-picker{display:none;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:7px}.shooting-party-blessing-picker.show{display:grid}.shooting-blessing-option{min-width:0;padding:6px 4px;border:1px solid rgba(151,126,83,.18);border-radius:8px;background:#fbf7ef;color:#725b38;font-family:"Noto Serif JP",serif}.shooting-blessing-option img,.shooting-blessing-option>span{display:flex;width:42px;height:42px;margin:0 auto 4px;align-items:center;justify-content:center;object-fit:cover;border-radius:6px;background:#fff;font-size:20px}.shooting-blessing-option b{display:block;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shooting-blessing-option.selected{border-color:#c69b4e;background:#f5ead2}
.shooting-party-roster{grid-template-columns:repeat(3,1fr);gap:7px;padding:10px 12px;background:#f7f3ea}.shooting-party-roster .shooting-character-option{padding:5px;border-radius:9px}.shooting-party-roster .shooting-character-portrait{height:98px;margin:0 0 4px;border-radius:6px}.shooting-party-roster .shooting-character-option b{font-size:10px}.shooting-party-roster .shooting-character-option small{min-height:0;font-size:6px}.shooting-party-roster .shooting-character-option.selected{box-shadow:inset 0 0 0 2px rgba(194,148,65,.54)}

.shooting-character-start{
  position:absolute;left:18px;right:18px;bottom:14px;width:auto;height:48px;
  border:1px solid rgba(166,132,76,.58);border-radius:8px;
  background:linear-gradient(180deg,rgba(255,253,247,.98),rgba(244,236,220,.98));
  color:#765d36;font-family:"Noto Serif JP",serif;font-size:13px;font-weight:500;letter-spacing:.24em;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.75),0 5px 14px rgba(99,74,38,.08);
  cursor:pointer;overflow:hidden;
}
.shooting-character-start::before,.shooting-character-start::after{position:absolute;top:50%;transform:translateY(-50%);color:#b69155;font-size:10px;opacity:.82;content:'◇'}
.shooting-character-start::before{left:16px}.shooting-character-start::after{right:16px}
.shooting-character-start:not(:disabled):active{transform:translateY(1px);background:linear-gradient(180deg,#f7edd7,#efe1c2)}
.shooting-character-start:disabled{border-color:rgba(148,132,108,.24);background:rgba(235,231,223,.88);color:#aaa08f;box-shadow:none}
.shooting-character-start:disabled::before,.shooting-character-start:disabled::after{opacity:.28}

/* ===== PATCH: circular switch buttons at bottom-right ===== */
.shooting-switch-rail{right:12px;top:auto;bottom:18px;transform:none;gap:8px;align-items:flex-end}
.shooting-switch-btn{width:62px;height:62px;min-height:62px;padding:0;border-radius:50%;overflow:visible;border:2px solid rgba(213,181,116,.78);background:rgba(255,253,248,.94);box-shadow:0 5px 16px rgba(58,42,23,.18)}
.shooting-switch-btn img{width:100%;height:100%;margin:0;border:0;border-radius:50%;object-fit:cover}
.shooting-switch-name{display:none}.shooting-switch-hp{left:7px;right:7px;bottom:4px;height:4px;border-radius:99px;background:rgba(65,49,30,.35);overflow:hidden;z-index:3}.shooting-switch-hp i{border-radius:99px}
.shooting-switch-status{left:50%;right:auto;bottom:-14px;transform:translateX(-50%);width:78px;font-size:6px;white-space:nowrap;text-shadow:0 1px 2px #fff}
.shooting-switch-btn.cooling::after{inset:0;border-radius:50%;background:rgba(235,230,219,.56)}
.shooting-switch-btn.dead{opacity:.32}
@media(max-width:480px){.shooting-switch-rail{right:9px;bottom:18px;gap:7px}.shooting-switch-btn{width:58px;height:58px;min-height:58px}.shooting-party-select-card{width:100%}}

/* ===== PATCH: bench ULT ring gauge ===== */
.shooting-switch-btn{isolation:isolate}
.shooting-switch-ult-ring{
  --ult-ring-fill:0;
  position:absolute;
  z-index:0;
  inset:-5px;
  border-radius:50%;
  pointer-events:none;
  background:conic-gradient(
    #d4ab4f calc(var(--ult-ring-fill) * 1turn),
    rgba(132,111,77,.18) 0
  );
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));
  filter:drop-shadow(0 0 2px rgba(202,158,68,.20));
  transition:background .12s linear,filter .18s ease;
}
.shooting-switch-btn img{position:relative;z-index:1}
.shooting-switch-btn.ult-ready .shooting-switch-ult-ring{
  filter:drop-shadow(0 0 5px rgba(232,190,82,.9)) drop-shadow(0 0 9px rgba(232,190,82,.38));
  animation:shootingBenchUltReady .75s ease-in-out infinite alternate;
}
@keyframes shootingBenchUltReady{to{transform:scale(1.045)}}
.shooting-switch-btn.dead .shooting-switch-ult-ring{opacity:.25;animation:none}


/* ============================================================
   Battle HUD visibility safety
   - party select / result / closed state must never show HP/ULT footer
   ============================================================ */
#shooting-event-root:not(.battle-hud-visible) .shooting-footer,
#shooting-event-root:not(.battle-hud-visible) .shooting-switch-rail,
#shooting-event-root:has(.shooting-character-select.show) .shooting-footer,
#shooting-event-root:has(.shooting-character-select.show) .shooting-switch-rail,
#shooting-event-root:has(.shooting-result.show) .shooting-footer,
#shooting-event-root:has(.shooting-result.show) .shooting-switch-rail {
  display:none !important;
}


/* ===== COMBO COUNTER / NEM ===== */
.shooting-combo{
  position:absolute;
  z-index:22;
  top:18px;
  left:16px;
  display:none;
  flex-direction:column;
  align-items:flex-start;
  pointer-events:none;
  text-shadow:0 1px 4px rgba(255,255,255,.96),0 2px 12px rgba(70,53,34,.16);
  transform-origin:left center;
}
.shooting-combo strong{
  font-family:"Cinzel",serif;
  font-size:clamp(28px,8vw,44px);
  font-weight:500;
  line-height:.9;
  letter-spacing:.01em;
  color:#6e5939;
  font-variant-numeric:tabular-nums;
}
.shooting-combo span{
  margin-top:5px;
  padding-left:2px;
  font-family:"Cinzel",serif;
  font-size:8px;
  letter-spacing:.28em;
  color:#a28657;
}
.shooting-combo.pulse{animation:shootingComboPulse .2s ease-out}
.shooting-combo.milestone strong{color:#7e668f;text-shadow:0 0 12px rgba(139,111,161,.48),0 1px 4px rgba(255,255,255,.98)}
@keyframes shootingComboPulse{0%{transform:scale(1)}45%{transform:scale(1.12)}100%{transform:scale(1)}}

.shooting-bullet-nem{
  background:radial-gradient(circle at 50% 30%,#fff 0 18%,#d8c9ef 38%,#8e73ad 72%,rgba(92,70,119,.12) 100%)!important;
  box-shadow:0 0 8px rgba(132,102,164,.68),0 0 15px rgba(174,145,201,.28)!important;
}
.shooting-boss.nem-stunned{
  animation:shootingNemStun .72s ease-in-out infinite alternate!important;
  filter:saturate(.65) brightness(1.08) drop-shadow(0 0 12px rgba(130,103,160,.78)) drop-shadow(0 0 24px rgba(164,139,191,.34))!important;
}
.shooting-boss.nem-stunned::after{content:''}
@keyframes shootingNemStun{
  from{opacity:.88;filter:saturate(.6) brightness(1.04) drop-shadow(0 0 9px rgba(120,93,150,.65))}
  to{opacity:1;filter:saturate(.72) brightness(1.18) drop-shadow(0 0 18px rgba(145,115,178,.92))}
}
#shooting-event-root.nem-stun-active .shooting-boss-hud::after{
  content:'STUN';
  display:block;
  margin-top:4px;
  font-family:"Cinzel",serif;
  font-size:8px;
  letter-spacing:.24em;
  color:#806495;
  text-shadow:0 1px 3px rgba(255,255,255,.95);
}
#shooting-event-root.ult-flash-nem .shooting-wash{animation:shootingNemUltFlash .5s ease-out}
@keyframes shootingNemUltFlash{
  0%{background:rgba(224,210,240,.72)}
  34%{background:rgba(250,246,255,.54)}
  100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}
}

/* ===== PATCH: keep party start button fixed below roster ===== */
.shooting-character-select{
  overflow:hidden;
  padding:12px 10px 76px;
}
.shooting-party-select-card{
  max-height:100%;
  margin:0 auto;
  padding-bottom:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
}
.shooting-character-start{
  position:absolute;
  z-index:82;
  left:18px;
  right:18px;
  bottom:12px;
  width:auto;
  margin:0;
}
@media(max-width:480px){
  .shooting-character-select{padding:8px 8px 72px}
  .shooting-character-start{left:14px;right:14px;bottom:10px}
}

/* ===== SHOOTING ROSTER OWNERSHIP ===== */
.shooting-character-option.locked,
.shooting-character-option:disabled{
  cursor:default;
  opacity:.46;
  filter:grayscale(.72) saturate(.45);
  background:linear-gradient(180deg,rgba(241,239,233,.88),rgba(225,221,211,.84));
  border-color:rgba(118,108,92,.18);
  box-shadow:none;
}
.shooting-character-option.locked .shooting-character-portrait{position:relative}
.shooting-character-option.locked .shooting-character-portrait::after{
  content:'LOCK';
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  padding:4px 8px;
  border:1px solid rgba(95,82,61,.42);
  background:rgba(247,244,236,.82);
  color:#72644e;
  font-family:"Cinzel",serif;
  font-size:7px;
  letter-spacing:.18em;
}
.shooting-character-option.locked img{filter:grayscale(1) brightness(.86);opacity:.54}
.shooting-character-option.locked:active,.shooting-character-option:disabled:active{transform:none}


/* ===== PARTY SELECT: match strategy layout / roster-only scrolling ===== */
.shooting-character-select{
  display:none;
  flex-direction:column;
  align-items:stretch;
  justify-content:flex-start;
  padding:0;
  overflow:hidden;
  background:rgba(246,241,230,.98);
}
.shooting-character-select.show{display:flex}

.shooting-party-select-card{
  position:relative;
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  width:min(390px,100%);
  min-height:0;
  max-height:100%;
  margin:0 auto;
  padding:0;
  overflow:hidden;
  border:0;
  background:#fffdf8;
  box-shadow:none;
}

.shooting-party-select-head,
.shooting-party-slots,
.shooting-party-blessing,
.shooting-party-actions{
  flex:0 0 auto;
}

.shooting-party-select-head{
  padding:15px 14px 8px;
  background:rgba(255,253,248,.96);
  border-bottom:1px solid rgba(176,139,71,.18);
}
.shooting-party-select-head>strong{font-size:16px}

.shooting-party-slots{
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  padding:10px 14px 9px;
  background:rgba(247,239,225,.78);
  border-bottom:1px solid rgba(176,139,71,.18);
}
.shooting-party-slot{height:auto;aspect-ratio:1/1;max-height:104px}

.shooting-party-blessing{
  padding:0 14px 10px;
  background:rgba(255,253,248,.96);
  border-bottom:1px solid rgba(176,139,71,.18);
}
.shooting-party-section-head{padding:8px 0 6px}
.shooting-party-blessing-current{min-height:60px;padding:6px 8px}
.shooting-party-blessing-plus{width:50px;height:50px;flex:0 0 50px}

/* Only this area scrolls. Header / slots / blessing / footer stay fixed. */
.shooting-character-grid.shooting-party-roster{
  display:grid;
  flex:1 1 auto;
  min-height:0;
  grid-template-columns:repeat(4,minmax(0,1fr));
  align-content:start;
  gap:6px;
  padding:8px 10px 10px;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;
  -ms-touch-action:pan-y;
  pointer-events:auto;
  background:rgba(247,243,234,.86);
}
.shooting-party-roster .shooting-character-option{
  min-width:0;
  padding:3px;
  border-radius:8px;
}
.shooting-party-roster .shooting-character-portrait{
  width:100%;
  height:auto;
  aspect-ratio:1/1;
  margin:0 0 3px;
  border-radius:6px;
  object-fit:cover;
}
.shooting-party-roster .shooting-character-option b{display:block;padding:1px 0 2px;font-size:8px;line-height:1.25}

.shooting-party-actions{
  position:relative;
  z-index:84;
  display:flex;
  gap:10px;
  padding:10px 14px max(12px,env(safe-area-inset-bottom,12px));
  background:rgba(255,252,246,.98);
  border-top:1px solid rgba(176,139,71,.24);
  box-shadow:0 -7px 20px rgba(99,73,31,.06);
}
.shooting-party-cancel,
.shooting-character-start{
  position:relative;
  inset:auto;
  bottom:auto;
  left:auto;
  right:auto;
  height:44px;
  margin:0;
  border-radius:11px;
  font-family:"Noto Serif JP",serif;
  font-size:12px;
  cursor:pointer;
}
.shooting-party-cancel{
  flex:1;
  border:1px solid rgba(151,119,66,.30);
  background:#f7efe2;
  color:#806c4f;
  letter-spacing:.10em;
}
.shooting-party-cancel:active{background:#eee0cc}
.shooting-character-start{
  flex:2;
  width:auto;
  border:1px solid rgba(161,121,48,.68);
  background:linear-gradient(180deg,#cfaa61 0%,#b7893e 100%);
  color:#fffdf7;
  font-weight:600;
  letter-spacing:.16em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.42),0 4px 12px rgba(145,102,32,.18);
  text-shadow:0 1px 2px rgba(93,62,16,.45);
}
.shooting-character-start::before,
.shooting-character-start::after{content:none}
.shooting-character-start:disabled{
  opacity:.38;
  border-color:rgba(161,121,48,.30);
  background:linear-gradient(180deg,#d9c9ac 0%,#c8b696 100%);
  color:#fffdf7;
}
.shooting-character-start:not(:disabled):active{
  transform:none;
  background:linear-gradient(180deg,#bf974e 0%,#a77b35 100%);
}

@media(max-width:480px){
  .shooting-character-select{padding:0}
  .shooting-party-select-card{width:100%}
  .shooting-party-select-head{padding:13px 12px 7px}
  .shooting-party-slots{padding:9px 12px 8px;gap:8px}
  .shooting-party-blessing{padding:0 12px 8px}
  .shooting-character-grid.shooting-party-roster{padding:7px 9px 9px;gap:5px}
  .shooting-party-actions{padding:9px 12px max(10px,env(safe-area-inset-bottom,10px))}
  .shooting-party-cancel,.shooting-character-start{height:43px}
}


/* CHAPTER 01 normal shooting stages */
.shooting-mission-hud{position:absolute;z-index:26;top:56px;left:12px;right:12px;display:none;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;min-height:42px;padding:6px 10px;box-sizing:border-box;background:rgba(252,249,241,.90);border:1px solid rgba(164,135,82,.25);box-shadow:0 5px 18px rgba(75,57,34,.08);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);pointer-events:none}
.shooting-mission-hud span{font-family:"Cinzel","Times New Roman",serif;font-size:7px;letter-spacing:.14em;color:#ae8950;white-space:nowrap}
.shooting-mission-hud strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:500;color:#64543d}
.shooting-mission-hud b{font-family:"Cinzel","Times New Roman",serif;font-size:9px;font-weight:500;color:#8c6c3d;white-space:nowrap;font-variant-numeric:tabular-nums}
.shooting-normal-enemy-layer,.shooting-collectible-layer{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden}
.shooting-collectible-layer{z-index:13}
.shooting-mini-enemy{position:absolute;width:66px;height:66px;object-fit:contain;transform:translate(-50%,-50%);transform-origin:center;filter:drop-shadow(0 5px 8px rgba(68,61,52,.18));transition:opacity .18s ease,filter .08s ease;user-select:none;-webkit-user-drag:none}
.shooting-mini-enemy.spawning{opacity:0;transform:translate(-50%,-50%) scale(.55)}
.shooting-mini-enemy.hit-flash{filter:brightness(1.65) sepia(.22) drop-shadow(0 0 9px rgba(255,116,90,.62))}
.shooting-mini-enemy.defeated{opacity:0;transform:translate(-50%,-50%) scale(1.3) rotate(18deg);filter:brightness(1.8) blur(2px)}
.shooting-mini-enemy-bullet{width:8px;height:8px;border-radius:50%;background:rgba(202,103,89,.92);box-shadow:0 0 0 1px rgba(255,244,235,.75),0 0 8px rgba(194,74,61,.52)}
.shooting-mission-item{position:absolute;width:30px;height:30px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 50% 44%,rgba(255,255,255,.96) 0 20%,rgba(222,196,136,.42) 22% 48%,rgba(180,142,73,.08) 50% 100%);border:1px solid rgba(179,139,71,.38);box-shadow:0 0 13px rgba(209,174,104,.38);animation:shooting-mission-item-float 1.45s ease-in-out infinite alternate}
.shooting-mission-item i{position:absolute;left:50%;top:50%;width:10px;height:10px;transform:translate(-50%,-50%) rotate(45deg);border:1px solid rgba(160,121,57,.68);background:rgba(255,251,237,.9)}
@keyframes shooting-mission-item-float{from{margin-top:-3px}to{margin-top:3px}}
@media(max-width:420px){.shooting-mission-hud{left:8px;right:8px;gap:6px;padding:6px 8px}.shooting-mission-hud span{font-size:6px}.shooting-mission-hud strong{font-size:9px}.shooting-mission-hud b{font-size:8px}.shooting-mini-enemy{width:60px;height:60px}}

/* ============================================================
   ミモザ「ミモザの贈り物」ULTアイテム
   拾うまでフィールドに残り続けるため、既存のミッションアイテムより
   一回り大きく・色分けして視認性を上げる。
   ============================================================ */
.shooting-mimosa-item{position:absolute;width:38px;height:38px;transform:translate(-50%,-50%);border-radius:50%;animation:shooting-mission-item-float 1.6s ease-in-out infinite alternate;z-index:14}
.shooting-mimosa-item i{position:absolute;left:50%;top:50%;width:14px;height:14px;transform:translate(-50%,-50%) rotate(45deg)}
.shooting-mimosa-item.mimosa-item-atk{background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.96) 0 18%,rgba(255,150,110,.55) 22% 50%,rgba(210,90,60,.10) 52% 100%);border:1px solid rgba(210,100,70,.55);box-shadow:0 0 14px rgba(230,110,75,.45)}
.shooting-mimosa-item.mimosa-item-atk i{border:1px solid rgba(180,80,55,.7);background:rgba(255,236,228,.92)}
.shooting-mimosa-item.mimosa-item-heal{background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.96) 0 18%,rgba(130,215,150,.55) 22% 50%,rgba(60,150,90,.10) 52% 100%);border:1px solid rgba(80,170,110,.55);box-shadow:0 0 14px rgba(100,200,140,.45)}
.shooting-mimosa-item.mimosa-item-heal i{border:1px solid rgba(60,140,90,.7);background:rgba(228,250,235,.92)}
.shooting-mimosa-item.mimosa-item-invincible{background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.96) 0 18%,rgba(180,160,255,.55) 22% 50%,rgba(110,90,210,.10) 52% 100%);border:1px solid rgba(130,110,220,.55);box-shadow:0 0 14px rgba(150,130,235,.45)}
.shooting-mimosa-item.mimosa-item-invincible i{border:1px solid rgba(100,80,190,.7);background:rgba(236,232,255,.92)}

/* ミモザのアイテム取得テキスト。shooting-ult-ready-noticeと同じ構造・
   アニメーションクラスを流用してデザインを統一する。 */
.shooting-item-effect-notice{
  position:absolute;
  z-index:95;
  left:50%;
  top:48%;
  width:min(330px,78vw);
  padding:14px 18px 13px;
  text-align:center;
  pointer-events:none;
  opacity:0;
  transform:translate(-50%,-50%) scale(.88);
  border-top:1px solid rgba(178,139,65,.72);
  border-bottom:1px solid rgba(178,139,65,.72);
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,251,232,.94) 18%,rgba(255,248,214,.96) 50%,rgba(255,251,232,.94) 82%,rgba(255,255,255,0));
  box-shadow:0 0 30px rgba(219,178,76,.22);
}
.shooting-item-effect-notice.show{
  animation:shootingUltReadyNotice 1.55s cubic-bezier(.2,.8,.25,1) forwards;
}
.shooting-item-effect-notice span{
  display:block;
  font-family:"Cinzel",serif;
  font-size:10px;
  letter-spacing:.32em;
  color:#a47b31;
}
.shooting-item-effect-notice strong{
  display:block;
  margin-top:3px;
  font-family:"Noto Serif JP",serif;
  font-size:20px;
  font-weight:600;
  letter-spacing:.12em;
  color:#5f4a27;
  text-shadow:0 1px 0 rgba(255,255,255,.95),0 0 12px rgba(255,213,103,.38);
}
.shooting-item-effect-notice small{
  display:block;
  margin-top:5px;
  font-size:9px;
  letter-spacing:.16em;
  color:#9a835b;
}

#shooting-event-root.ult-flash-mimosa .shooting-wash{animation:shootingMimosaUltFlash .5s ease-out}
@keyframes shootingMimosaUltFlash{
  0%{background:rgba(255,214,196,.72)}
  34%{background:rgba(255,246,240,.54)}
  100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}
}

/* ============================================================
   ミモザの恩恵アイテム効果の可視化
   「誰が」「どの効果を」「あと何秒」持っているかを一目で分かるようにする。
   ============================================================ */

/* 自機まわりのリング。無敵中は強く目立つ金色の回転シールド、
   ATK UPだけの時はオレンジの控えめなグロー。 */
.shooting-player{position:relative}
.shooting-player-buff-ring{
  display:none;
  position:absolute;
  z-index:6;
  left:50%;
  top:52%;
  width:96px;
  height:96px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  pointer-events:none;
}
.shooting-player.shooting-invincible-active .shooting-player-buff-ring{
  display:block;
  border:3px dashed rgba(255,213,90,.92);
  box-shadow:0 0 18px rgba(255,213,90,.65),0 0 36px rgba(255,213,90,.35),inset 0 0 14px rgba(255,238,170,.5);
  animation:shootingInvincibleRingSpin 1.1s linear infinite,shootingInvincibleRingPulse 0.6s ease-in-out infinite alternate;
}
.shooting-player.shooting-atk-buff-active:not(.shooting-invincible-active) .shooting-player-buff-ring{
  display:block;
  width:88px;
  height:88px;
  border:2px solid rgba(255,140,90,.75);
  box-shadow:0 0 12px rgba(255,140,90,.5),inset 0 0 10px rgba(255,180,140,.35);
  animation:shootingAtkRingPulse 0.7s ease-in-out infinite alternate;
}
@keyframes shootingInvincibleRingSpin{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes shootingInvincibleRingPulse{from{opacity:.75;filter:brightness(1)}to{opacity:1;filter:brightness(1.25)}}
@keyframes shootingAtkRingPulse{from{opacity:.6}to{opacity:1}}

/* 自機と一緒に少し揺れる被弾無敵時の全体演出（画像自体もうっすら光らせる） */
.shooting-player.shooting-invincible-active img{
  filter:drop-shadow(0 0 6px rgba(255,221,130,.85)) brightness(1.08);
}

/* 自機上のカウントダウンバッジ */
.shooting-player-buff-badges{
  position:absolute;
  z-index:16;
  left:50%;
  top:-30px;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  pointer-events:none;
  white-space:nowrap;
}
.shooting-player-buff-badge{
  font-family:"Noto Serif JP",serif;
  font-size:9px;
  font-weight:700;
  letter-spacing:.04em;
  padding:2px 7px;
  border-radius:999px;
  color:#fff;
  text-shadow:0 1px 1px rgba(0,0,0,.35);
}
.shooting-player-buff-badge.invincible{
  background:linear-gradient(90deg,#e8b23a,#ffd766);
  box-shadow:0 0 8px rgba(255,213,90,.7);
}
.shooting-player-buff-badge.atk{
  background:linear-gradient(90deg,#e0713a,#ff9a5c);
  box-shadow:0 0 8px rgba(255,140,90,.55);
}

/* 控えキャラのアイコンにも、効果が残っていることが分かるバッジを付ける。
   「交代しても他人には移らない」ことが視覚的にも伝わるよう、
   効果を持つ本人のサムネイルにだけ表示される。 */
.shooting-switch-buff-badge{
  display:none;
  position:absolute;
  z-index:6;
  right:-2px;
  top:-2px;
  min-width:16px;
  height:16px;
  padding:0 3px;
  border-radius:999px;
  font-size:8px;
  font-weight:700;
  line-height:16px;
  text-align:center;
  color:#fff;
  text-shadow:0 1px 1px rgba(0,0,0,.35);
}
.shooting-switch-btn.has-invincible-buff .shooting-switch-buff-badge{
  display:block;
  background:linear-gradient(90deg,#e8b23a,#ffd766);
  box-shadow:0 0 6px rgba(255,213,90,.75);
  animation:shootingAtkRingPulse 0.7s ease-in-out infinite alternate;
}
.shooting-switch-btn.has-atk-buff .shooting-switch-buff-badge{
  display:block;
  background:linear-gradient(90deg,#e0713a,#ff9a5c);
  box-shadow:0 0 6px rgba(255,140,90,.6);
}
.shooting-switch-btn.has-invincible-buff{box-shadow:0 0 0 2px rgba(255,213,90,.85)}
.shooting-switch-btn.has-atk-buff{box-shadow:0 0 0 2px rgba(255,140,90,.7)}

@media(max-width:420px){
  .shooting-player-buff-ring{width:78px;height:78px}
  .shooting-player-buff-badges{top:-24px}
  .shooting-player-buff-badge{font-size:8px;padding:1px 6px}
}




/* ============================================================
   CH01 UI FIX
   1) Party footer uses the battle-footer reserved space too.
   2) Mission HUD and COMBO never overlap.
   3) Battle-only MISSION COMPLETE never leaks into RESULT.
   ============================================================ */

/* The party selector lives inside .shooting-arena, whose bottom is 72px above
   the viewport for the battle HUD. During party select that battle HUD is hidden,
   so extend the selector into that reserved space. */
#shooting-event-root .shooting-character-select.show{
  bottom:-72px !important;
}
#shooting-event-root .shooting-character-select.show .shooting-party-select-card{
  max-height:calc(100% + 72px) !important;
}
#shooting-event-root .shooting-character-select.show .shooting-party-actions{
  padding-bottom:max(8px,env(safe-area-inset-bottom,8px)) !important;
}

/* Normal-stage mission bar occupies roughly root Y=56..100.
   Arena begins at Y=72, so the old combo top:18px landed directly underneath it. */
#shooting-event-root[data-battle-type="normal"] .shooting-combo{
  top:42px !important;
}

/* RESULT is a separate state: hide every battle-only overlay explicitly. */
#shooting-event-root:has(.shooting-result.show) .shooting-mission-hud,
#shooting-event-root:has(.shooting-result.show) .shooting-combo{
  display:none !important;
}
#shooting-event-root:has(.shooting-result.show) .shooting-arena::after{
  content:none !important;
  display:none !important;
}

@media(max-width:420px){
  #shooting-event-root .shooting-character-select.show{
    bottom:-72px !important;
  }
  #shooting-event-root[data-battle-type="normal"] .shooting-combo{
    top:42px !important;
  }
}

/* ============================================================
   PARTY SELECT FINAL LAYOUT FIX 2026-08-14
   - Completely hide the battle/stage artwork while editing party
   - Keep only roster scrolling
   - Keep battle start footer always visible
   ============================================================ */

/* Party select occupies every pixel below the 72px special-event header. */
#shooting-event-root .shooting-arena:has(.shooting-character-select.show){
  overflow:visible;
}

#shooting-event-root .shooting-character-select.show{
  top:0 !important;
  right:0 !important;
  bottom:-72px !important;
  left:0 !important;
  padding:0 !important;
  align-items:stretch !important;
  justify-content:flex-start !important;
  overflow:hidden !important;
  background:#fffdf8 !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

/* Never let the stage artwork show through the party screen. */
#shooting-event-root:has(.shooting-character-select.show) .shooting-bg,
#shooting-event-root:has(.shooting-character-select.show) .shooting-wash,
#shooting-event-root:has(.shooting-character-select.show) .shooting-boss-hud,
#shooting-event-root:has(.shooting-character-select.show) .shooting-mission-hud,
#shooting-event-root:has(.shooting-character-select.show) .shooting-start-copy,
#shooting-event-root:has(.shooting-character-select.show) .shooting-countdown,
#shooting-event-root:has(.shooting-character-select.show) .shooting-player,
#shooting-event-root:has(.shooting-character-select.show) .shooting-boss,
#shooting-event-root:has(.shooting-character-select.show) .shooting-normal-enemy-layer,
#shooting-event-root:has(.shooting-character-select.show) .shooting-collectible-layer,
#shooting-event-root:has(.shooting-character-select.show) .shooting-combo{
  visibility:hidden !important;
}

/* The previous calc(100% + 72px) made the card taller than its selector and
   could push the action buttons below the viewport. */
#shooting-event-root .shooting-character-select.show .shooting-party-select-card{
  flex:1 1 auto !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  max-height:100% !important;
  margin:0 !important;
  overflow:hidden !important;
  background:#fffdf8 !important;
}

/* Header / selected party / blessing stay fixed. Only this roster scrolls. */
#shooting-event-root .shooting-character-select.show .shooting-character-grid.shooting-party-roster{
  flex:1 1 0 !important;
  min-height:0 !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  padding-bottom:14px !important;
  background:#f7f3ea !important;
}

/* Fixed-looking opaque action footer at the bottom of the party screen. */
#shooting-event-root .shooting-character-select.show .shooting-party-actions{
  position:relative !important;
  z-index:120 !important;
  flex:0 0 auto !important;
  min-height:70px !important;
  padding:10px 14px max(12px,env(safe-area-inset-bottom,12px)) !important;
  background:#fffdf8 !important;
  border-top:1px solid rgba(176,139,71,.28) !important;
  box-shadow:0 -8px 22px rgba(99,73,31,.08) !important;
}

#shooting-event-root .shooting-character-select.show .shooting-character-start{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:0 !important;
  height:46px !important;
  opacity:1;
}

#shooting-event-root .shooting-character-select.show .shooting-character-start:disabled{
  opacity:.42 !important;
}

@media(max-width:420px){
  #shooting-event-root .shooting-character-select.show .shooting-party-actions{
    min-height:66px !important;
    padding:9px 12px max(10px,env(safe-area-inset-bottom,10px)) !important;
  }
  #shooting-event-root .shooting-character-select.show .shooting-character-start,
  #shooting-event-root .shooting-character-select.show .shooting-party-cancel{
    height:44px !important;
  }
}


/* =========================================================
   CHAPTER 02 - 暴力 / MINI_02
   ========================================================= */
.shooting-mini-enemy.violence-warning{
  filter:brightness(1.18) sepia(.12) drop-shadow(0 0 11px rgba(177,56,44,.56));
  animation:shootingViolenceWarning .18s ease-in-out infinite alternate;
}
.shooting-mini-enemy.violence-dash{
  filter:brightness(1.16) contrast(1.06) drop-shadow(0 0 15px rgba(154,49,40,.62));
}
.shooting-violence-heavy{
  width:18px!important;
  height:18px!important;
  background:radial-gradient(circle at 38% 34%,rgba(255,244,234,.82) 0 12%,rgba(224,116,95,.84) 18% 38%,rgba(128,52,45,.76) 46% 68%,rgba(38,20,20,.22) 72% 100%)!important;
  box-shadow:0 0 0 1px rgba(255,235,226,.22),0 0 12px rgba(207,85,67,.34),0 0 24px rgba(122,41,35,.20)!important;
  opacity:.94;
}
.shooting-violence-pressure{
  width:12px!important;
  height:12px!important;
  background:radial-gradient(circle at 38% 34%,rgba(255,240,233,.78) 0 10%,rgba(214,95,79,.82) 18% 36%,rgba(106,43,39,.72) 48% 70%,rgba(34,16,16,.18) 74% 100%)!important;
  box-shadow:0 0 0 1px rgba(255,231,222,.20),0 0 10px rgba(177,63,53,.30),0 0 20px rgba(108,35,32,.16)!important;
  opacity:.92;
}
.shooting-violence-boss-heavy{
  width:22px!important;
  height:22px!important;
  border-radius:50%;
  background:radial-gradient(circle at 38% 34%,rgba(255,246,237,.84) 0 10%,rgba(226,108,90,.88) 18% 36%,rgba(126,48,43,.80) 46% 68%,rgba(38,18,19,.20) 72% 100%)!important;
  box-shadow:0 0 0 1px rgba(255,233,225,.20),0 0 14px rgba(206,78,64,.36),0 0 28px rgba(116,34,34,.22)!important;
  opacity:.95;
}
@keyframes shootingViolenceWarning{
  from{
    transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(var(--enemy-scale,1));
  }
  to{
    transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(calc(var(--enemy-scale,1) * 1.08));
  }
}


/* CHAPTER 02 - 強敵撃破を明確に見せる */
.shooting-mini-enemy.violence-defeated{
  opacity:0;
  transform:translate(-50%,-68%) scale(1.18) rotate(7deg);
  filter:brightness(2.25) saturate(.45) blur(2px) drop-shadow(0 0 20px rgba(173,65,53,.72));
  transition:opacity .56s ease-out, transform .56s cubic-bezier(.18,.72,.24,1), filter .56s ease-out!important;
}


/* =========================================================
   雑魚敵 共通HPバー
   ========================================================= */
.shooting-mini-enemy-hp{
  position:absolute;
  left:0;
  top:0;
  z-index:19;
  width:54px;
  height:5px;
  padding:1px;
  border:1px solid rgba(89,72,49,.38);
  background:rgba(255,253,247,.82);
  box-shadow:0 1px 4px rgba(55,41,26,.18);
  pointer-events:none;
  opacity:.92;
  will-change:transform;
}
.shooting-mini-enemy-hp i{
  display:block;
  width:100%;
  height:100%;
  transform-origin:left center;
  transform:scaleX(1);
  background:linear-gradient(90deg,#79a866,#a8c879);
  transition:transform .12s linear,filter .14s ease,background .18s ease;
}
.shooting-mini-enemy-hp.low i{
  background:linear-gradient(90deg,#b65e52,#df8975);
}
.shooting-mini-enemy-hp.hit{
  animation:shootingMiniHpHit .18s ease-out;
}
.shooting-mini-enemy-hp.defeated{
  opacity:0;
  transition:opacity .18s ease-out;
}
@keyframes shootingMiniHpHit{
  0%{filter:brightness(1)}
  45%{filter:brightness(1.85)}
  100%{filter:brightness(1)}
}

/* CHAPTER 02の強敵は少しだけ太くして視認性を上げる */
.shooting-mini-enemy.violence-warning + .shooting-mini-enemy-hp{
  opacity:1;
}


/* =========================================================
   個別ユニットサイズ調整
   Scale is applied inside positionUnit() after translation.
   This prevents enemy x/y positions from being multiplied by uiScale.
   ========================================================= */
.shooting-mini-enemy,
.shooting-boss{
  transform-origin:center center;
}


/* =========================================================
   ARNO - Orbit shot / 5 sec damage aura
   ========================================================= */
.shooting-bullet-arno{
  width:9px!important;
  height:9px!important;
  border-radius:50%;
  background:radial-gradient(circle at 38% 34%,rgba(255,255,255,.98),rgba(192,174,239,.95) 42%,rgba(100,82,175,.92) 100%)!important;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.78),
    0 0 9px rgba(162,139,225,.92),
    0 0 18px rgba(126,102,200,.42)!important;
}
.shooting-bullet-arno::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:18px;
  height:18px;
  border:1px solid rgba(184,164,232,.42);
  border-radius:50%;
  transform:translate(-50%,-50%);
}

.shooting-arno-aura{
  position:absolute;
  left:0;
  top:0;
  z-index:15;
  width:118px;
  height:118px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  pointer-events:none;
  border:1px solid rgba(190,174,229,.40);
  box-shadow:
    inset 0 0 18px rgba(172,151,220,.14),
    0 0 20px rgba(159,137,215,.22);
  animation:shootingArnoAuraPulse 1.15s ease-in-out infinite alternate;
}
.shooting-arno-aura::before,
.shooting-arno-aura::after,
.shooting-arno-aura i,
.shooting-arno-aura b,
.shooting-arno-aura span{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:9px;
  height:9px;
  margin:-4.5px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.98),rgba(190,166,235,.90) 46%,rgba(113,87,184,.08) 72%);
  box-shadow:0 0 10px rgba(164,136,224,.78);
  transform-origin:4.5px 4.5px;
}
.shooting-arno-aura::before{animation:shootingArnoOrbitA 1.05s linear infinite}
.shooting-arno-aura::after{animation:shootingArnoOrbitB 1.42s linear infinite}
.shooting-arno-aura i{animation:shootingArnoOrbitC .88s linear infinite}
.shooting-arno-aura b{animation:shootingArnoOrbitD 1.72s linear infinite}
.shooting-arno-aura span{animation:shootingArnoOrbitE 1.18s linear infinite}

#shooting-event-root.arno-aura-cast .shooting-arena{
  animation:shootingArnoCastFlash .55s ease-out;
}

@keyframes shootingArnoAuraPulse{
  from{opacity:.62;filter:brightness(.96)}
  to{opacity:1;filter:brightness(1.17)}
}
@keyframes shootingArnoOrbitA{
  from{transform:rotate(0deg) translateX(52px) rotate(0deg)}
  to{transform:rotate(360deg) translateX(52px) rotate(-360deg)}
}
@keyframes shootingArnoOrbitB{
  from{transform:rotate(90deg) translateX(43px) rotate(-90deg)}
  to{transform:rotate(-270deg) translateX(43px) rotate(270deg)}
}
@keyframes shootingArnoOrbitC{
  from{transform:rotate(180deg) translateX(57px) rotate(-180deg)}
  to{transform:rotate(540deg) translateX(57px) rotate(-540deg)}
}
@keyframes shootingArnoOrbitD{
  from{transform:rotate(260deg) translateX(36px) rotate(-260deg)}
  to{transform:rotate(-100deg) translateX(36px) rotate(100deg)}
}
@keyframes shootingArnoOrbitE{
  from{transform:rotate(320deg) translateX(48px) rotate(-320deg)}
  to{transform:rotate(680deg) translateX(48px) rotate(-680deg)}
}
@keyframes shootingArnoCastFlash{
  0%{filter:brightness(1)}
  28%{filter:brightness(1.22) saturate(.92)}
  100%{filter:brightness(1)}
}


/* =========================================================
   Player bullet colors by attribute
   MYSTIS = blue / LOGOS = green / CHAOS = red
   ========================================================= */
.shooting-bullet-mystis{
  background:radial-gradient(circle at 38% 34%,rgba(255,255,255,.98),rgba(140,196,255,.96) 42%,rgba(54,105,210,.96) 100%)!important;
  box-shadow:0 0 0 1px rgba(235,247,255,.80),0 0 10px rgba(87,153,242,.92),0 0 18px rgba(75,126,219,.42)!important;
}
.shooting-bullet-logos{
  background:radial-gradient(circle at 38% 34%,rgba(255,255,255,.98),rgba(155,230,170,.96) 42%,rgba(52,153,83,.96) 100%)!important;
  box-shadow:0 0 0 1px rgba(239,255,242,.80),0 0 10px rgba(89,191,112,.92),0 0 18px rgba(64,154,86,.42)!important;
}
.shooting-bullet-chaos{
  background:radial-gradient(circle at 38% 34%,rgba(255,255,255,.98),rgba(255,156,146,.96) 42%,rgba(196,52,46,.96) 100%)!important;
  box-shadow:0 0 0 1px rgba(255,239,235,.80),0 0 10px rgba(225,88,74,.92),0 0 18px rgba(188,57,49,.42)!important;
}

/* Arno keeps the orbit-ring shape, but its core/glow color follows the attribute class. */
.shooting-bullet-arno.shooting-bullet-mystis::after{border-color:rgba(121,180,245,.46)}
.shooting-bullet-arno.shooting-bullet-logos::after{border-color:rgba(111,205,132,.46)}
.shooting-bullet-arno.shooting-bullet-chaos::after{border-color:rgba(224,107,95,.46)}


/* =========================================================
   Multi-element player bullets
   ========================================================= */
.shooting-bullet-mystis-logos{
  background:linear-gradient(135deg,#4f9fe8 0 46%,#69c77d 54% 100%)!important;
  box-shadow:0 0 0 1px rgba(242,252,255,.82),-3px 0 10px rgba(73,145,228,.72),3px 0 10px rgba(78,181,105,.72)!important;
}
.shooting-bullet-mystis-chaos{
  background:linear-gradient(135deg,#4f9fe8 0 46%,#d55a50 54% 100%)!important;
  box-shadow:0 0 0 1px rgba(250,245,255,.82),-3px 0 10px rgba(73,145,228,.72),3px 0 10px rgba(211,74,65,.72)!important;
}
.shooting-bullet-logos-chaos{
  background:linear-gradient(135deg,#69c77d 0 46%,#d55a50 54% 100%)!important;
  box-shadow:0 0 0 1px rgba(247,255,245,.82),-3px 0 10px rgba(78,181,105,.72),3px 0 10px rgba(211,74,65,.72)!important;
}


/* =========================================================
   build1526 — SUI「時空操環」
   円内全域を淡い水色に変化させ、減速フィールドの内外を見分けやすくする。
   自機中心 / DOM 1個 / 静的グラデーション / フィルター・粒子なし。
   弾幕（z-index:10）と自機（z-index:12）はフィールド（z-index:7）の前面。
   ========================================================= */
.shooting-bullet-sui{
  width:7px!important;
  height:16px!important;
  border-radius:50% 50% 42% 42%;
}
#shooting-event-root .shooting-sui-time-domain{
  position:absolute;
  left:0;
  top:0;
  z-index:7;
  border-radius:50%;
  pointer-events:none;
  box-sizing:border-box;
  border:1.5px solid rgba(104,185,212,.88);
  /* 円周だけでなく中心から全域に色を付ける。端の内側のみごく薄く強調。 */
  background:radial-gradient(circle at center,
    rgba(82,169,205,.14) 0%,
    rgba(82,169,205,.14) 65%,
    rgba(75,165,204,.19) 90%,
    rgba(96,185,216,.14) 100%);
  outline:1px solid rgba(227,254,255,.28);
  outline-offset:-5px;
  will-change:transform;
}
#shooting-event-root .shooting-sui-time-domain::before,
#shooting-event-root .shooting-sui-time-domain::after{
  content:'';
  position:absolute;
  border-radius:50%;
  pointer-events:none;
}
#shooting-event-root .shooting-sui-time-domain::before{
  inset:13%;
  border:1px solid rgba(158,217,232,.38);
}
#shooting-event-root .shooting-sui-time-domain::after{
  inset:31%;
  border:1px dashed rgba(222,249,253,.34);
}


/* =========================================================
   CLARINE - 4 line orbit / decoy barrage
   ========================================================= */
.shooting-bullet-clarine{
  width:8px!important;
  height:8px!important;
  border-radius:50%;
}
.shooting-bullet-clarine::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:14px;
  height:14px;
  border:1px solid rgba(230,178,200,.34);
  border-radius:50%;
  transform:translate(-50%,-50%);
}
.shooting-bullet-clarine-decoy{
  width:8px!important;
  height:8px!important;
  border-radius:2px 50% 50% 50%;
  transform:rotate(45deg);
  background:radial-gradient(
    circle at 38% 34%,
    rgba(255,255,255,.99) 0 24%,
    rgba(234,225,255,.98) 26% 52%,
    rgba(179,157,229,.92) 54% 78%,
    rgba(132,109,199,.28) 80% 100%
  )!important;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.78),
    0 0 8px rgba(207,189,249,.95),
    0 0 16px rgba(169,143,226,.62)!important;
  filter:brightness(1.08);
}
.shooting-bullet-clarine-decoy::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:18px;
  height:3px;
  transform:translate(-74%,-50%) rotate(-45deg);
  transform-origin:right center;
  border-radius:999px;
  background:linear-gradient(
    90deg,
    rgba(202,184,243,0),
    rgba(226,215,255,.68),
    rgba(255,255,255,.92)
  );
  filter:blur(.4px);
  opacity:.82;
}
.shooting-clarine-decoy{
  position:absolute;
  left:0;
  top:0;
  z-index:22;
  width:70px;
  height:122px;
  opacity:0;
  filter:drop-shadow(0 6px 12px rgba(111,86,146,.25));
  pointer-events:none;
}
/* build1668: デコイはクラリネのバトルユニットと同じ大きさ（JSが発動時の実寸を width/height に入れる） */
.shooting-clarine-decoy img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  pointer-events:none;
}
.shooting-clarine-decoy.show{
  opacity:1;
  transition:opacity .28s ease-out, transform .28s ease-out;
}
.shooting-clarine-decoy.hit{
  animation:shootingClarineDecoyHit .12s ease-out;
}
.shooting-clarine-decoy.defeated{
  opacity:0;
  transform:translate(-50%,-50%) scale(1.28);
  filter:brightness(1.55) saturate(1.1) blur(1px) drop-shadow(0 0 18px rgba(226,132,152,.62));
  transition:opacity .52s ease-out, transform .52s ease-out, filter .52s ease-out;
}
.shooting-clarine-decoy.expired{
  opacity:0;
  transform:translate(-50%,-50%) scale(.94);
  transition:opacity .24s ease-out, transform .24s ease-out;
}
.shooting-clarine-decoy-burst{
  position:absolute;
  z-index:24;
  left:0;
  top:0;
  width:42px;
  height:42px;
  border-radius:50%;
  opacity:0;
  pointer-events:none;
  border:2px solid rgba(255,238,244,.88);
  box-shadow:0 0 18px rgba(232,133,153,.58),0 0 48px rgba(193,102,141,.32);
}
.shooting-clarine-decoy-burst::before,
.shooting-clarine-decoy-burst::after,
.shooting-clarine-decoy-burst i,
.shooting-clarine-decoy-burst b,
.shooting-clarine-decoy-burst span{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:2px;
  height:30px;
  margin-top:-15px;
  background:linear-gradient(to bottom,rgba(255,255,255,.95),rgba(227,136,156,.06));
  transform-origin:50% 100%;
}
.shooting-clarine-decoy-burst::before{transform:translateX(-50%) rotate(0deg)}
.shooting-clarine-decoy-burst::after{transform:translateX(-50%) rotate(72deg)}
.shooting-clarine-decoy-burst i{transform:translateX(-50%) rotate(144deg)}
.shooting-clarine-decoy-burst b{transform:translateX(-50%) rotate(216deg)}
.shooting-clarine-decoy-burst span{transform:translateX(-50%) rotate(288deg)}
.shooting-clarine-decoy-burst.show{
  animation:shootingClarineBurst .72s ease-out both;
}
@keyframes shootingClarineDecoyHit{
  from{filter:brightness(1)}
  50%{filter:brightness(1.7)}
  to{filter:brightness(1)}
}
@keyframes shootingClarineBurst{
  0%{
    opacity:0;
    transform:translate(-50%,-50%) scale(.25);
  }
  18%{opacity:1}
  100%{
    opacity:0;
    transform:translate(-50%,-50%) scale(5.8);
  }
}


/* =========================================================
   Projectile readability: allied decoy vs hostile bullets
   ========================================================= */
/* Enemy bullets: less pellet-like, more like translucent dark energy orbs. */
.shooting-enemy-bullet{
  width:12px!important;
  height:12px!important;
  border-radius:50%;
  background:radial-gradient(
    circle at 40% 36%,
    rgba(255,246,255,.82) 0 10%,
    rgba(189,157,192,.72) 14% 24%,
    rgba(101,79,101,.68) 32% 54%,
    rgba(34,26,33,.58) 60% 74%,
    rgba(14,10,14,.18) 76% 100%
  )!important;
  box-shadow:
    0 0 0 1px rgba(214,188,216,.18),
    0 0 8px rgba(166,120,179,.28),
    0 0 16px rgba(97,60,110,.28),
    0 0 26px rgba(50,30,58,.18)!important;
  backdrop-filter:blur(.3px);
  opacity:.9;
}
.shooting-enemy-bullet::before{
  content:'';
  position:absolute;
  inset:-6px;
  border-radius:50%;
  background:radial-gradient(
    circle,
    rgba(158,110,173,.16) 0 28%,
    rgba(112,70,126,.10) 36% 54%,
    rgba(52,29,59,.03) 62% 100%
  );
  filter:blur(3px);
  pointer-events:none;
}
.shooting-enemy-bullet::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:4px;
  height:4px;
  margin:-2px 0 0 -2px;
  border-radius:50%;
  background:rgba(255,248,255,.62);
  box-shadow:0 0 6px rgba(255,241,255,.44);
  pointer-events:none;
}
.shooting-mini-enemy-bullet{
  width:10px!important;
  height:10px!important;
  border-radius:50%;
  background:radial-gradient(
    circle at 38% 34%,
    rgba(255,240,235,.76) 0 10%,
    rgba(214,122,132,.72) 16% 26%,
    rgba(114,54,62,.72) 34% 56%,
    rgba(30,18,22,.56) 62% 76%,
    rgba(12,10,12,.14) 78% 100%
  )!important;
  box-shadow:
    0 0 0 1px rgba(226,171,177,.18),
    0 0 8px rgba(190,81,95,.28),
    0 0 16px rgba(124,48,59,.22),
    0 0 24px rgba(50,16,20,.16)!important;
  opacity:.92;
}
.shooting-mini-enemy-bullet::before{
  content:'';
  position:absolute;
  inset:-5px;
  border-radius:50%;
  background:radial-gradient(
    circle,
    rgba(208,102,118,.15) 0 30%,
    rgba(136,55,71,.08) 40% 58%,
    rgba(54,19,26,.02) 66% 100%
  );
  filter:blur(3px);
  pointer-events:none;
}
.shooting-mini-enemy-bullet::after{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:3px;
  height:3px;
  margin:-1.5px 0 0 -1.5px;
  border-radius:50%;
  background:rgba(255,243,240,.56);
  box-shadow:0 0 5px rgba(255,228,228,.36);
  pointer-events:none;
}


/* =========================================================
   IGNIS - continuous laser / fire wheel / burn
   ========================================================= */
.shooting-ignis-laser{
  position:absolute;
  z-index:8;
  width:var(--ignis-laser-width,12px);
  transform:translateX(-50%) translateY(-100%);
  transform-origin:50% 100%;
  pointer-events:none;
  opacity:0;
  border-radius:999px;
  background:linear-gradient(
    to top,
    rgba(255,248,222,.98) 0%,
    rgba(255,188,72,.98) 22%,
    rgba(239,76,39,.96) 62%,
    rgba(180,35,25,.10) 100%
  );
  box-shadow:
    0 0 5px rgba(255,245,213,.98),
    0 0 13px rgba(255,141,49,.96),
    0 0 27px rgba(220,55,32,.65);
  transition:opacity .06s linear;
}
.shooting-ignis-laser.active{
  opacity:1;
}
.shooting-ignis-laser i,
.shooting-ignis-laser b{
  position:absolute;
  content:'';
  left:50%;
  top:0;
  bottom:0;
  transform:translateX(-50%);
  border-radius:999px;
}
.shooting-ignis-laser i{
  width:32%;
  background:rgba(255,255,245,.94);
  filter:blur(.2px);
}
.shooting-ignis-laser b{
  width:220%;
  background:rgba(255,93,38,.12);
  filter:blur(8px);
}

.shooting-ignis-fire-wheel{
  position:absolute;
  z-index:23;
  border-radius:50%;
  pointer-events:none;
  opacity:0;
  border:10px solid rgba(255,123,37,.84);
  box-shadow:
    inset 0 0 12px rgba(255,245,209,.92),
    0 0 12px rgba(255,210,86,.92),
    0 0 28px rgba(235,79,28,.82),
    0 0 48px rgba(175,41,22,.54);
  animation:shootingIgnisWheelSpin 2.2s linear infinite, shootingIgnisWheelFloat 1.8s ease-in-out infinite alternate;
}
.shooting-ignis-fire-wheel::before,
.shooting-ignis-fire-wheel::after,
.shooting-ignis-fire-wheel i,
.shooting-ignis-fire-wheel b,
.shooting-ignis-fire-wheel span{
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:18px;
  height:38px;
  margin-left:-9px;
  margin-top:-19px;
  border-radius:50% 50% 42% 42%;
  transform-origin:50% 50%;
  background:linear-gradient(to top,rgba(194,39,24,.06),rgba(255,101,29,.88),rgba(255,235,133,.98));
  filter:blur(.6px);
}
.shooting-ignis-fire-wheel::before{transform:rotate(0deg) translateY(-55px)}
.shooting-ignis-fire-wheel::after{transform:rotate(72deg) translateY(-55px)}
.shooting-ignis-fire-wheel i{transform:rotate(144deg) translateY(-55px)}
.shooting-ignis-fire-wheel b{transform:rotate(216deg) translateY(-55px)}
.shooting-ignis-fire-wheel span{transform:rotate(288deg) translateY(-55px)}
.shooting-ignis-fire-wheel.active{opacity:1}
.shooting-ignis-fire-wheel.fade{
  opacity:0;
  filter:blur(2px) brightness(.9);
  transition:opacity .42s ease-out, filter .42s ease-out;
}

.ignis-burning{
  filter:brightness(1.18) saturate(1.18) drop-shadow(0 0 9px rgba(237,79,35,.72))!important;
}
.shooting-ignis-burn{
  position:absolute;
  display:block;
  z-index:80;
  left:0;
  top:0;
  width:92px;
  height:148px;
  pointer-events:none;
  opacity:.88;
  object-fit:contain;
  transform-origin:50% 72%;
  scale:1;
  rotate:0deg;
  filter:
    drop-shadow(0 0 10px rgba(255,118,36,.62))
    drop-shadow(0 0 22px rgba(230,64,27,.34));
  animation:shootingIgnisBurnFlicker .52s ease-in-out infinite alternate;
}
.shooting-ignis-burn.fade{
  opacity:0;
  filter:
    blur(1px)
    drop-shadow(0 0 6px rgba(255,118,36,.35));
  transition:opacity .16s ease-out, filter .16s ease-out;
}

@keyframes shootingIgnisWheelSpin{
  from{rotate:0deg}
  to{rotate:360deg}
}
@keyframes shootingIgnisBurnFlicker{
  from{
    opacity:.74;
    filter:
      brightness(.96)
      drop-shadow(0 0 8px rgba(255,118,36,.54))
      drop-shadow(0 0 18px rgba(230,64,27,.26));
  }
  to{
    opacity:1;
    filter:
      brightness(1.10)
      drop-shadow(0 0 14px rgba(255,140,52,.74))
      drop-shadow(0 0 30px rgba(231,72,29,.40));
  }
}


@keyframes shootingIgnisWheelFloat{
  from{filter:brightness(.96) saturate(1.02)}
  to{filter:brightness(1.10) saturate(1.12)}
}


.shooting-ignis-burn{
  animation:
    shootingIgnisBurnFlicker .52s ease-in-out infinite alternate,
    shootingIgnisBurnSway 1.05s ease-in-out infinite alternate;
}

@keyframes shootingIgnisBurnSway{
  from{
    scale:.96 1.00;
    rotate:-1.5deg;
  }
  to{
    scale:1.04 1.08;
    rotate:1.5deg;
  }
}


/* =========================================================
   ROSE - seed splash / healing flower
   ========================================================= */
.shooting-bullet-rose-seed{
  width:8px!important;
  height:12px!important;
  border-radius:52% 52% 46% 46%;
  background:radial-gradient(circle at 42% 30%,rgba(255,232,238,.98) 0 18%,rgba(255,118,146,.96) 26% 56%,rgba(227,62,83,.92) 62% 82%,rgba(148,22,36,.84) 84% 100%)!important;
  box-shadow:
    0 0 0 1px rgba(255,229,236,.78),
    0 0 8px rgba(243,94,131,.62),
    0 0 16px rgba(169,34,50,.34)!important;
}
.shooting-bullet-rose-heart{
  z-index:32!important;
  width:14px!important;
  height:14px!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0;
  /* この要素(外側)は位置決め専用の土台。JSのtransform(位置移動)以外は何も持たせない。 */
}
/* ハートの見た目(色・グロー・回転・疑似要素オフセット)はすべて内側のspanだけで完結させる。
   外側の position-transform と、この内側要素の rotate が完全に別のtransformコンテキスト
   になるため、「同じ要素に位置移動と回転を同時適用する」ことによる描画ズレが起こり得ない。 */
.shooting-rose-heart-shape{
  position:absolute;
  left:50%;
  top:50%;
  width:14px;
  height:14px;
  margin:-7px 0 0 -7px;
  background:linear-gradient(135deg,rgba(255,196,225,.98),rgba(255,112,162,.96));
  box-shadow:0 0 0 1px rgba(255,240,247,.72),0 0 10px rgba(255,143,188,.78);
  border-radius:3px;
  transform:rotate(45deg);
  transform-origin:center center;
  pointer-events:none;
}
.shooting-rose-heart-shape::before,
.shooting-rose-heart-shape::after{
  content:'';
  position:absolute;
  width:14px;
  height:14px;
  border-radius:50%;
  background:inherit;
}
.shooting-rose-heart-shape::before{left:-7px;top:0}
.shooting-rose-heart-shape::after{left:0;top:-7px}

.shooting-rose-flower{
  position:absolute;
  z-index:26;
  width:168px;
  height:168px;
  pointer-events:none;
  opacity:0;
  scale:.74;
  transform-origin:center center;
}
.shooting-rose-flower.show{
  opacity:1;
  scale:1;
  transition:opacity .26s ease-out, scale .42s cubic-bezier(.15,.72,.18,1.02);
}
.shooting-rose-flower.fade{
  opacity:0;
  scale:.92;
  transition:opacity .22s ease-out, scale .22s ease-out;
}
.shooting-rose-flower > img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  filter:drop-shadow(0 0 14px rgba(255,172,205,.48));
}
.shooting-rose-flower-aura{
  position:absolute;
  inset:26px;
  border-radius:50%;
  box-shadow:0 0 0 2px rgba(255,216,234,.32),0 0 20px rgba(255,162,201,.38),0 0 44px rgba(255,124,186,.20);
  animation:shootingRoseFlowerAura 1.25s ease-out infinite;
}
@keyframes shootingRoseFlowerAura{
  0%{opacity:.18;scale:.82}
  55%{opacity:.55}
  100%{opacity:0;scale:1.22}
}


/* ============================================================
   ULT CUT-IN
   - 1秒間、アリーナ全面にキャラ専用カットイン
   - JS側で戦場更新を完全停止し、終了後にULT効果を実行
   ============================================================ */
.shooting-ult-cutin{
  position:absolute;
  inset:0;
  z-index:180;
  overflow:hidden;
  pointer-events:none;
  opacity:0;
  background:rgba(248,244,238,.56);
}
.shooting-ult-cutin.show{
  opacity:1;
  transition:opacity .08s linear;
}
.shooting-ult-cutin.out{
  opacity:0;
  transition:opacity .12s ease-out;
}
.shooting-ult-cutin-image{
  position:absolute;
  left:50%;
  top:50%;
  width:100%;
  height:auto;
  max-width:100%;
  max-height:none;
  object-fit:contain;
  object-position:center center;
  transform:translate(-50%,-50%) scale(1.02);
  filter:saturate(.96) contrast(1.02) brightness(1.02);
  opacity:.82;
  animation:shootingUltCutinImage 1s cubic-bezier(.18,.72,.24,1) both;
}
.shooting-ult-cutin::before{
  content:'';
  position:absolute;
  z-index:2;
  inset:0;
  background:
    linear-gradient(90deg,rgba(255,255,255,.28),transparent 20%,transparent 80%,rgba(255,255,255,.18)),
    linear-gradient(180deg,rgba(255,255,255,.12),transparent 34%,rgba(35,25,45,.12));
  pointer-events:none;
}
.shooting-ult-cutin-label{
  position:absolute;
  z-index:4;
  left:18px;
  right:18px;
  bottom:16px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:4px;
  color:#fff;
  text-shadow:0 1px 8px rgba(30,20,35,.62);
  animation:shootingUltCutinLabel .9s ease-out both;
}
.shooting-ult-cutin-label span{
  font-family:"Cinzel","Times New Roman",serif;
  font-size:10px;
  letter-spacing:.34em;
  color:rgba(255,255,255,.90);
}
.shooting-ult-cutin-label strong{
  display:block;
  width:max-content;
  max-width:100%;
  font-size:22px;
  line-height:1.15;
  font-weight:600;
  letter-spacing:.08em;
  color:rgba(255,255,255,.97);
  white-space:nowrap;
  overflow:visible;
  word-break:keep-all;
}
.shooting-ult-cutin-flash{
  position:absolute;
  z-index:3;
  inset:-20%;
  opacity:0;
  background:linear-gradient(115deg,transparent 34%,rgba(255,255,255,.78) 48%,rgba(255,255,255,.12) 58%,transparent 70%);
  transform:translateX(-70%);
  animation:shootingUltCutinFlash .62s ease-out .08s both;
}
#shooting-event-root.ult-cutin-active .shooting-footer,
#shooting-event-root.ult-cutin-active .shooting-hud,
#shooting-event-root.ult-cutin-active .shooting-boss-hud,
#shooting-event-root.ult-cutin-active .shooting-mission-hud{
  filter:brightness(.72);
}
@media (min-width:700px){
  .shooting-ult-cutin-label{
    left:26px;
    right:26px;
    bottom:22px;
  }
  .shooting-ult-cutin-label strong{
    font-size:26px;
  }
}
@keyframes shootingUltCutinLabel{
  0%{opacity:0;transform:translateY(10px)}
  18%{opacity:1}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes shootingUltCutinImage{
  0%{transform:translate(-50%,-50%) scale(1.055) translateX(8px);filter:saturate(.82) contrast(.96) brightness(1.18)}
  16%{transform:translate(-50%,-50%) scale(1.03) translateX(0)}
  100%{transform:translate(-50%,-50%) scale(1.01) translateX(-3px);filter:saturate(1) contrast(1.03) brightness(1)}
}
@keyframes shootingUltCutinFlash{
  0%{opacity:0;transform:translateX(-70%)}
  18%{opacity:.95}
  72%{opacity:.35}
  100%{opacity:0;transform:translateX(72%)}
}


/* ============================================================
   SWITCH BUTTON TOUCH RESPONSE
   - visual size is mostly preserved
   - touch target is widened with an invisible hit area
   - pointerdown handles switching immediately on mobile
   ============================================================ */
.shooting-switch-btn{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
.shooting-switch-btn::before{
  content:'';
  position:absolute;
  z-index:6;
  inset:-10px -10px -10px -14px;
  background:transparent;
  pointer-events:auto;
}
.shooting-switch-btn > *{
  pointer-events:none;
}
.shooting-switch-btn:active{
  transform:scale(.96);
  filter:brightness(.96);
}
@media (max-width:480px){
  .shooting-switch-rail{
    gap:12px;
    padding:10px 4px 10px 14px;
    margin-right:-4px;
  }
  .shooting-switch-btn{
    width:62px;
    height:62px;
    min-height:62px;
    overflow:visible;
  }
  .shooting-switch-btn img{
    width:58px;
    height:58px;
  }
}


/* ============================================================
   ELTENA — GRAVITY / BLACK HOLE
   ============================================================ */

/* 通常攻撃：0.7秒ごとの巨大3WAY */
.shooting-bullet-eltena{
  width:22px !important;
  height:34px !important;
  margin-left:-11px;
  margin-top:-17px;
  border-radius:50% 50% 44% 44% !important;
  background:
    radial-gradient(circle at 50% 34%, rgba(255,255,255,.96) 0 8%, rgba(174,118,221,.96) 22%, rgba(74,34,104,.98) 58%, rgba(22,13,31,.98) 78%, transparent 80%) !important;
  box-shadow:
    0 0 9px rgba(211,157,255,.95),
    0 0 20px rgba(111,55,154,.82),
    0 0 34px rgba(44,17,65,.58) !important;
  filter:saturate(1.08);
}

/* ブラックホール本体。外側のDOMが位置を担当し、内側だけ回転させる。 */
.shooting-eltena-black-hole{
  position:absolute;
  left:0;
  top:0;
  z-index:8;
  width:var(--eltena-bh-size,154px);
  height:var(--eltena-bh-size,154px);
  margin-left:calc(var(--eltena-bh-size,154px) / -2);
  margin-top:calc(var(--eltena-bh-size,154px) / -2);
  border-radius:50%;
  pointer-events:none;
  will-change:transform,opacity;
  opacity:1;
}
.shooting-eltena-black-hole > i,
.shooting-eltena-black-hole > b,
.shooting-eltena-black-hole > span{
  position:absolute;
  inset:0;
  display:block;
  border-radius:50%;
  pointer-events:none;
}
.shooting-eltena-black-hole > i{
  inset:18%;
  background:
    radial-gradient(circle, #000 0 46%, #09050d 59%, rgba(17,7,24,.96) 71%, transparent 73%);
  box-shadow:
    0 0 18px rgba(0,0,0,.98),
    0 0 42px rgba(52,18,79,.88),
    0 0 76px rgba(101,45,142,.42);
}
.shooting-eltena-black-hole > b{
  inset:8%;
  border:8px solid rgba(115,64,154,.48);
  border-left-color:rgba(226,190,255,.88);
  border-right-color:rgba(38,17,55,.28);
  box-shadow:
    inset 0 0 24px rgba(0,0,0,.92),
    0 0 22px rgba(131,73,177,.54);
  animation:eltenaBlackHoleSpin 1.15s linear infinite;
}
.shooting-eltena-black-hole > span{
  inset:0;
  background:
    conic-gradient(from 0deg,
      transparent 0 9%,
      rgba(187,134,229,.16) 14%,
      transparent 25%,
      rgba(86,38,119,.24) 39%,
      transparent 53%,
      rgba(223,185,255,.13) 68%,
      transparent 82%);
  filter:blur(5px);
  animation:eltenaBlackHoleSpinReverse 2.1s linear infinite;
}
.shooting-eltena-black-hole.traveling{
  transform:scale(.58);
  filter:blur(.2px);
}
.shooting-eltena-black-hole.active{
  animation:eltenaBlackHolePulse 1.35s ease-in-out infinite;
}
.shooting-eltena-black-hole.ending{
  transition:opacity .3s ease,filter .3s ease;
  opacity:0;
  filter:blur(10px);
}
@keyframes eltenaBlackHoleSpin{
  to{transform:rotate(360deg)}
}
@keyframes eltenaBlackHoleSpinReverse{
  to{transform:rotate(-360deg)}
}
@keyframes eltenaBlackHolePulse{
  0%,100%{filter:brightness(.92) saturate(1); }
  50%{filter:brightness(1.16) saturate(1.22); }
}

#shooting-event-root.eltena-black-hole-active .shooting-arena::after{
  content:'';
  position:absolute;
  inset:0;
  z-index:5;
  pointer-events:none;
  background:radial-gradient(circle at 50% 10%, rgba(53,24,73,.10), transparent 44%);
  animation:eltenaGravityField 1.1s ease-in-out infinite;
}
@keyframes eltenaGravityField{
  0%,100%{opacity:.45}
  50%{opacity:.8}
}


/* ============================================================
   AYANE ULT — MULTI TARGET GRAB
   ============================================================ */
.shooting-normal-enemy.ayane-multi-grabbed{
  filter:
    brightness(.72)
    saturate(.72)
    drop-shadow(0 0 9px rgba(20,10,24,.96))
    drop-shadow(0 0 18px rgba(105,58,132,.72)) !important;
}

.shooting-ayane-multi-grip{
  position:absolute;
  left:0;
  top:0;
  z-index:17;
  width:86px;
  height:86px;
  margin-left:-43px;
  margin-top:-43px;
  border-radius:50%;
  pointer-events:none;
  border:3px solid rgba(37,20,47,.82);
  box-shadow:
    0 0 12px rgba(8,4,11,.96),
    0 0 26px rgba(99,55,125,.82),
    inset 0 0 18px rgba(10,5,14,.86);
  animation:ayaneMultiGripPulse .72s ease-in-out infinite alternate;
}
.shooting-ayane-multi-grip::before,
.shooting-ayane-multi-grip::after{
  content:'';
  position:absolute;
  inset:10px;
  border-radius:50%;
  border:2px solid rgba(145,97,170,.54);
  transform:rotate(24deg);
}
.shooting-ayane-multi-grip::after{
  inset:20px;
  border-color:rgba(15,7,20,.92);
  transform:rotate(-31deg);
}
.shooting-ayane-multi-grip.release{
  animation:none;
  opacity:0;
  transform:scale(1.35);
  transition:opacity .26s ease,transform .26s ease;
}
@keyframes ayaneMultiGripPulse{
  from{transform:scale(.88) rotate(-5deg);opacity:.72}
  to{transform:scale(1.06) rotate(5deg);opacity:1}
}


/* ELTENA BLACK HOLE SYNC FIX
   敵とHPバーはブラックホールより前面へ。
   吸引中だけtransform補間を切り、敵画像とHPバーを同一座標で完全同期させる。 */
.shooting-mini-enemy.eltena-pulled{
  transition:opacity .18s ease,filter .08s ease !important;
  z-index:3;
}
.shooting-mini-enemy-hp.eltena-pulled{
  z-index:4;
  transition:none !important;
}


/* ============================================================
   SPECIAL EVENT「無貌の天使」
   ステージ選択画面（ストーリーと同系デザイン）
   ============================================================ */
.shooting-faceless-stage-select{
  position:fixed;inset:0;z-index:240100;
  background:#f6f3eb;
  color:#5b5448;
  font-family:"Noto Serif JP",serif;
  opacity:0;transition:opacity .18s ease;
}
.shooting-faceless-stage-select.show{opacity:1}
.shooting-faceless-stage-select::before{
  content:"";
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 88%, rgba(216,206,186,.20), transparent 18%),
    radial-gradient(circle at 82% 16%, rgba(225,217,200,.18), transparent 20%),
    linear-gradient(180deg, rgba(255,255,255,.52), rgba(246,243,235,.96));
  pointer-events:none;
}
.shooting-faceless-stage-page{
  position:relative;
  width:min(100%, 430px);
  height:100%;
  margin:0 auto;
  background:
    linear-gradient(180deg, rgba(255,255,255,.78), rgba(247,244,236,.96)),
    #f6f3eb;
  overflow:hidden;
  box-shadow:0 0 0 1px rgba(194,181,158,.28) inset;
}
.shooting-faceless-stage-page::after{
  content:"";
  position:absolute;left:0;right:0;bottom:0;height:34%;
  background:
    radial-gradient(circle at 14% 86%, rgba(216,206,186,.15), transparent 25%),
    radial-gradient(circle at 78% 72%, rgba(228,220,204,.18), transparent 24%);
  pointer-events:none;
}

.shooting-faceless-stage-header{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:68px;
  padding:0 16px;
  border-bottom:1px solid rgba(205,194,173,.42);
  background:rgba(250,248,242,.95);
}
.shooting-faceless-stage-back{
  position:absolute;left:14px;top:50%;
  transform:translateY(-50%);
  appearance:none;border:none;background:none;
  color:#6f6658;
  font-size:14px;letter-spacing:.06em;
  padding:8px 10px;cursor:pointer;
}
.shooting-faceless-stage-title{
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:19px;
  letter-spacing:.22em;
  color:#6f7590;
}

.shooting-faceless-stage-list{
  position:relative;
  padding-top:0;
}
.shooting-faceless-stage-row{
  appearance:none;
  width:100%;
  display:grid;
  grid-template-columns:38px 1fr;
  align-items:center;
  gap:14px;
  min-height:76px;
  margin:0;
  padding:14px 18px;
  border:0;
  border-bottom:1px solid rgba(115,99,70,.16);
  border-radius:0;
  background:rgba(255,255,255,.62);
  box-shadow:none;
  text-align:left;
  color:#27344f;
  cursor:pointer;
  transform:none;
}
.shooting-faceless-stage-row:active{
  background:rgba(224,211,181,.34);
  border-color:rgba(115,99,70,.16);
  transform:none;
}
.shooting-faceless-stage-no{
  width:38px;
  height:auto;
  min-height:0;
  padding:0;
  font-family:"Cinzel",serif;
  font-size:10px;
  letter-spacing:.14em;
  color:rgba(64,76,99,.50);
}
.shooting-faceless-stage-main{
  min-width:0;
}
.shooting-faceless-stage-name-row{
  display:flex;
  align-items:center;
  gap:10px;
}
.shooting-faceless-stage-name-row strong{
  color:#27344f;
  font-size:14px;
  font-weight:500;
  letter-spacing:.08em;
}
.shooting-faceless-stage-condition,
.shooting-faceless-stage-wave{
  margin-top:4px;
  color:rgba(70,82,105,.58);
  font-size:9px;
  letter-spacing:.14em;
  line-height:1.45;
}

.shooting-faceless-intro{
  position:absolute;inset:0;z-index:110;overflow:hidden;
  background:#e9e9e7;opacity:0;transition:opacity .28s ease;
  pointer-events:none;
}
.shooting-faceless-intro.show{opacity:1}
.shooting-faceless-intro.out{opacity:0}
.shooting-faceless-intro img{
  width:100%;height:100%;object-fit:cover;
  filter:saturate(.72) contrast(.92) brightness(1.04);
  transform:scale(1.035);
}
.shooting-faceless-intro::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(10,13,18,.16) 62%,rgba(8,10,14,.62));
}
.shooting-faceless-intro>div{
  position:absolute;z-index:2;left:0;right:0;bottom:10%;text-align:center;color:#fff;
  text-shadow:0 2px 14px rgba(0,0,0,.64);
}
.shooting-faceless-intro small{display:block;font-family:"Cinzel",serif;font-size:9px;letter-spacing:.32em}
.shooting-faceless-intro strong{display:block;margin-top:7px;font-size:27px;font-weight:500;letter-spacing:.18em}
.shooting-faceless-intro span{display:block;margin-top:7px;font-size:12px;letter-spacing:.2em}

.shooting-faceless-battle-cut{
  position:absolute;z-index:105;left:50%;top:44%;
  transform:translate(-50%,-50%) scale(.96);
  min-width:210px;padding:14px 24px;text-align:center;
  border-top:1px solid rgba(255,255,255,.72);
  border-bottom:1px solid rgba(255,255,255,.72);
  background:linear-gradient(90deg,transparent,rgba(35,38,44,.72),transparent);
  color:#fff;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;
  text-shadow:0 2px 10px rgba(0,0,0,.75);
}
.shooting-faceless-battle-cut.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.shooting-faceless-battle-cut.out{opacity:0}
.shooting-faceless-battle-cut small{display:block;font-family:"Cinzel",serif;font-size:8px;letter-spacing:.28em}
.shooting-faceless-battle-cut strong{display:block;margin-top:5px;font-size:19px;font-weight:500;letter-spacing:.14em}

.shooting-faceless-object{
  position:absolute;z-index:10;width:78px;height:78px;object-fit:contain;
  filter:drop-shadow(0 7px 8px rgba(25,28,34,.24));
  pointer-events:none;will-change:transform;
}
.shooting-faceless-object.hit-flash{filter:brightness(1.7) drop-shadow(0 7px 8px rgba(25,28,34,.24))}
.shooting-faceless-object.defeated{opacity:0;transform:scale(.55)!important;transition:opacity .18s ease,transform .18s ease}
.shooting-faceless-object-hp{
  position:absolute;z-index:11;width:66px;height:5px;overflow:hidden;
  border:1px solid rgba(58,60,66,.32);background:rgba(255,255,255,.72);
  pointer-events:none;
}
.shooting-faceless-object-hp i{
  display:block;width:100%;height:100%;background:linear-gradient(90deg,#737984,#b5bbc3);
  transition:width .1s linear;
}
.shooting-faceless-object-bullet{
  width:14px!important;
  height:14px!important;
  border-radius:50%!important;
  background:radial-gradient(circle,#fff 0 10%,#d8c2ec 24%,#9c6bc2 46%,#8054ae 70%,transparent 74%)!important;
  box-shadow:0 0 7px rgba(184,143,217,.72),0 0 15px rgba(128,84,174,.54)!important;
  filter:none!important;
  opacity:1!important;
  z-index:14!important;
}
.shooting-faceless-bullet{filter:saturate(.45)}

#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-boss{
  width:150px;height:190px;
}
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-bg{
  filter:brightness(.92) saturate(.54) contrast(.98);
}

/* SPECIAL EVENT「無貌の天使」(advanced/super共通)限定：
   弾・召喚オブジェクトの見た目を極限まで軽量化する。
   通常の敵弾スタイルに加え、.shooting-faceless-bullet /
   .shooting-faceless-object-bullet が独自の多層box-shadowを
   !important で重ねており、さらに召喚オブジェクト本体
   (.shooting-faceless-object、最大3体同時出現)にもdrop-shadowが
   常時かかっていた。見た目より処理落ち対策を優先し、
   単色フラット・影なしまで削ぎ落とす。他ステージには影響しない。 */
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-mini-enemy-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-object-bullet{
  background:#8054ae!important;
  border:1px solid rgba(215,191,235,.58)!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  filter:none!important;
  opacity:1!important;
}
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-enemy-bullet::before,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-enemy-bullet::after,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-mini-enemy-bullet::before,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-mini-enemy-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"][data-boss-phase="2"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"][data-boss-phase="3"] .shooting-enemy-bullet{
  box-shadow:none!important;
}
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-bullet{
  box-shadow:none!important;
}
/* 召喚オブジェクト(マスク)本体のdrop-shadowも撤去。最大3体同時表示。 */
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-object,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-object.hit-flash{
  filter:none!important;
}


/* ============================================================
   ALL STAGES — クリア条件達成
   通常 / BOSS / SPECIAL EVENT 共通
   ============================================================ */
.shooting-clear-condition-achieved {
  position: absolute;
  z-index: 145;
  left: 0;
  right: 0;
  top: 46%;
  transform: translateY(-50%);
  display: grid;
  grid-template-columns: minmax(18px, 1fr) auto minmax(18px, 1fr);
  align-items: center;
  gap: 14px;
  padding: 20px 16px;
  pointer-events: none;
  opacity: 0;
  background:
    linear-gradient(
      90deg,
      rgba(248, 246, 239, 0),
      rgba(248, 246, 239, .88) 18%,
      rgba(248, 246, 239, .96) 50%,
      rgba(248, 246, 239, .88) 82%,
      rgba(248, 246, 239, 0)
    );
  filter: blur(1px);
  transition:
    opacity .20s ease,
    filter .24s ease,
    transform .24s ease;
}

.shooting-clear-condition-achieved.show {
  opacity: 1;
  filter: blur(0);
  transform: translateY(-50%) scale(1);
}

.shooting-clear-condition-achieved.out {
  opacity: 0;
  filter: blur(2px);
  transform: translateY(-50%) scale(1.015);
}

.shooting-clear-condition-achieved-line {
  height: 1px;
  background:
    linear-gradient(
      90deg,
      rgba(166, 137, 82, 0),
      rgba(166, 137, 82, .48)
    );
}

.shooting-clear-condition-achieved-line:last-child {
  transform: scaleX(-1);
}

.shooting-clear-condition-achieved-copy {
  min-width: 180px;
  text-align: center;
  color: #514731;
  text-shadow: 0 1px 0 rgba(255,255,255,.85);
}

.shooting-clear-condition-achieved-copy small {
  display: block;
  margin-bottom: 5px;
  font-family: "Cinzel", serif;
  font-size: 8px;
  font-weight: 500;
  letter-spacing: .30em;
  color: rgba(151, 119, 60, .72);
}

.shooting-clear-condition-achieved-copy strong {
  display: block;
  font-family: "Noto Serif JP", serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .16em;
  color: #55452b;
}

@media (max-width: 360px) {
  .shooting-clear-condition-achieved {
    gap: 9px;
    padding-left: 10px;
    padding-right: 10px;
  }

  .shooting-clear-condition-achieved-copy {
    min-width: 165px;
  }

  .shooting-clear-condition-achieved-copy strong {
    font-size: 18px;
  }
}


/* ============================================================
   ALL STAGES — RAPID HIT FEEDBACK
   連射中は命中が続く限り敵画像の反応を維持する
   ============================================================ */
.shooting-boss.shooting-hit-sustained,
.shooting-mini-enemy.shooting-hit-sustained,
.shooting-faceless-object.shooting-hit-sustained {
  animation: shootingSustainedEnemyHit .11s steps(2, jump-none) infinite !important;
}

@keyframes shootingSustainedEnemyHit {
  0%,100% {
    filter:
      brightness(1)
      saturate(1)
      drop-shadow(0 8px 10px rgba(60,45,32,.18));
  }
  50% {
    filter:
      sepia(.65)
      saturate(3.6)
      hue-rotate(322deg)
      brightness(1.48)
      contrast(1.08)
      drop-shadow(0 0 10px rgba(218,58,58,.82))
      drop-shadow(0 0 3px rgba(255,255,255,.95));
  }
}

.shooting-player.shooting-hit-sustained {
  animation: shootingSustainedPlayerHit .13s steps(2, jump-none) infinite !important;
}

@keyframes shootingSustainedPlayerHit {
  0%,100% { filter:brightness(1); }
  50% {
    filter:
      brightness(1.55)
      saturate(1.65)
      drop-shadow(0 0 8px rgba(210,45,55,.75));
  }
}


/* ============================================================
   ALL STAGES — FLOATING DAMAGE NUMBERS
   ============================================================ */
.shooting-damage-number {
  position:absolute;
  left:0;
  top:0;
  z-index:48;
  min-width:18px;
  pointer-events:none;
  user-select:none;
  -webkit-user-select:none;

  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:10px;
  font-weight:700;
  line-height:1;
  text-align:center;
  letter-spacing:.02em;
  font-variant-numeric:tabular-nums;

  opacity:0;
  transform:
    translate3d(-50%,-50%,0)
    translateY(2px)
    scale(.86);
  transition:
    opacity .10s ease,
    transform .12s ease;
  text-shadow:
    0 1px 2px rgba(0,0,0,.72),
    0 0 3px rgba(0,0,0,.36);
  will-change:transform,opacity;
}

.shooting-damage-number.to-enemy {
  color:#fff8e8;
  text-shadow:
    0 1px 2px rgba(65,37,25,.92),
    0 0 5px rgba(187,75,57,.55);
}

.shooting-damage-number.to-player {
  color:#ff8c92;
  text-shadow:
    0 1px 2px rgba(54,8,13,.95),
    0 0 5px rgba(194,31,47,.62);
}

.shooting-damage-number.big {
  font-size:14px;
  color:#ffe8aa;
}

.shooting-damage-number.show {
  opacity:.96;
  transform:
    translate3d(-50%,-50%,0)
    translateY(-5px)
    scale(1);
}

.shooting-damage-number.out {
  opacity:0;
  transform:
    translate3d(-50%,-50%,0)
    translateY(-22px)
    scale(.98);
}


/* ============================================================
   ELTENA — ALL ENEMY TYPES PULL SYNC
   ============================================================ */
.shooting-boss.eltena-pulled,
.shooting-faceless-object.eltena-pulled {
  transition:opacity .18s ease,filter .08s ease !important;
  will-change:transform;
}

.shooting-faceless-object-hp.eltena-pulled {
  transition:none !important;
}


/* ============================================================
   ALL BOSS STAGES — RICH BOSS INTRO
   STORY + SPECIAL EVENT 共通
   ============================================================ */
.shooting-boss-intro {
  position:absolute;
  inset:0;
  z-index:132;
  overflow:hidden;
  pointer-events:none;
  background:#e8e7e4;
  opacity:0;
  transform:translateZ(0);
  transition:opacity .24s ease;
}

.shooting-boss-intro.show {
  opacity:1;
}

.shooting-boss-intro-media {
  position:absolute;
  inset:-2%;
  overflow:hidden;
  background:#e9e8e5;
}

.shooting-boss-intro-image {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:
    saturate(.72)
    contrast(.96)
    brightness(1.02);
  transform:scale(1.055);
  animation:shootingBossIntroCamera 2.85s cubic-bezier(.16,.72,.24,1) forwards;
  will-change:transform,filter;
}

@keyframes shootingBossIntroCamera {
  0% {
    transform:scale(1.09) translate3d(0, 1.2%, 0);
    filter:saturate(.48) contrast(1.08) brightness(.88) blur(1.5px);
  }
  22% {
    filter:saturate(.64) contrast(1) brightness(1.03) blur(0);
  }
  100% {
    transform:scale(1.025) translate3d(0, -1%, 0);
    filter:saturate(.78) contrast(.96) brightness(1.06) blur(0);
  }
}

/* 画面端を落として中央のボス絵へ視線を寄せる */
.shooting-boss-intro-vignette {
  position:absolute;
  inset:0;
  z-index:3;
  background:
    radial-gradient(circle at 50% 42%, rgba(255,255,255,0) 30%, rgba(38,40,45,.12) 76%, rgba(13,15,19,.50) 118%),
    linear-gradient(180deg, rgba(255,255,255,.10), transparent 36%, rgba(12,14,18,.48));
}

/* SVG/外部画像なしのフィルムグレイン */
.shooting-boss-intro-noise {
  position:absolute;
  inset:-35%;
  z-index:5;
  opacity:.12;
  mix-blend-mode:multiply;
  background:
    repeating-radial-gradient(circle at 27% 36%, rgba(0,0,0,.30) 0 1px, transparent 1px 4px),
    repeating-radial-gradient(circle at 73% 64%, rgba(255,255,255,.42) 0 1px, transparent 1px 5px);
  background-size:7px 9px, 11px 13px;
  animation:shootingBossNoise .16s steps(2,end) infinite;
}

@keyframes shootingBossNoise {
  0%   { transform:translate3d(-1.5%, -1%, 0); }
  25%  { transform:translate3d(1%, 1.5%, 0); }
  50%  { transform:translate3d(-.5%, 1%, 0); }
  75%  { transform:translate3d(1.5%, -.5%, 0); }
  100% { transform:translate3d(0, 0, 0); }
}

/* 薄い走査線 */
.shooting-boss-intro-scan {
  position:absolute;
  inset:0;
  z-index:6;
  opacity:.18;
  background:
    repeating-linear-gradient(
      180deg,
      rgba(255,255,255,.14) 0px,
      rgba(255,255,255,.14) 1px,
      rgba(40,44,52,.05) 2px,
      transparent 4px
    );
  animation:shootingBossScan 1.25s linear infinite;
}

@keyframes shootingBossScan {
  from { transform:translateY(-8px); }
  to   { transform:translateY(8px); }
}

/* 横ズレグリッチ：同じintro画像を細い帯だけ再描画 */
.shooting-boss-intro-glitch {
  position:absolute;
  left:0;
  right:0;
  z-index:2;
  opacity:0;
  background-size:cover;
  background-position:center;
  filter:contrast(1.08) brightness(1.12);
  pointer-events:none;
}

.shooting-boss-intro-glitch.g1 { top:22%; height:7%; }
.shooting-boss-intro-glitch.g2 { top:48%; height:4%; }
.shooting-boss-intro-glitch.g3 { top:69%; height:6%; }

.shooting-boss-intro.glitch-burst .shooting-boss-intro-glitch.g1 {
  opacity:.58;
  transform:translateX(-9px);
}
.shooting-boss-intro.glitch-burst .shooting-boss-intro-glitch.g2 {
  opacity:.44;
  transform:translateX(12px);
}
.shooting-boss-intro.glitch-burst .shooting-boss-intro-glitch.g3 {
  opacity:.36;
  transform:translateX(-6px);
}

.shooting-boss-intro.glitch-burst .shooting-boss-intro-image {
  filter:saturate(.28) contrast(1.18) brightness(1.14);
}

/* 開始時の白フラッシュ + 終了時の白抜け */
.shooting-boss-intro-flash {
  position:absolute;
  inset:0;
  z-index:10;
  background:#fff;
  opacity:1;
  animation:shootingBossIntroFlash 2.85s ease forwards;
}

@keyframes shootingBossIntroFlash {
  0%   { opacity:1; }
  8%   { opacity:.15; }
  12%  { opacity:.58; }
  18%  { opacity:0; }
  78%  { opacity:0; }
  100% { opacity:.0; }
}

.shooting-boss-intro-copy {
  position:absolute;
  z-index:12;
  left:0;
  right:0;
  bottom:9.5%;
  padding:0 28px;
  text-align:center;
  color:#fff;
  opacity:0;
  transform:translateY(12px);
  animation:shootingBossIntroCopy 2.55s ease forwards;
  text-shadow:
    0 2px 16px rgba(0,0,0,.82),
    0 0 3px rgba(0,0,0,.72);
}

@keyframes shootingBossIntroCopy {
  0%,22% {
    opacity:0;
    transform:translateY(12px);
    letter-spacing:.22em;
  }
  38%,82% {
    opacity:1;
    transform:translateY(0);
  }
  100% {
    opacity:.88;
    transform:translateY(-2px);
  }
}

.shooting-boss-intro-copy small {
  display:block;
  font-family:"Cinzel",serif;
  font-size:9px;
  font-weight:600;
  letter-spacing:.34em;
  color:rgba(255,255,255,.82);
}

.shooting-boss-intro-copy strong {
  display:block;
  margin-top:8px;
  font-family:"Noto Serif JP",serif;
  font-size:27px;
  font-weight:500;
  line-height:1.35;
  letter-spacing:.17em;
}

.shooting-boss-intro-copy span {
  display:block;
  min-height:14px;
  margin-top:7px;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:9px;
  letter-spacing:.25em;
  color:rgba(255,255,255,.75);
}

.shooting-boss-intro-line {
  position:absolute;
  z-index:11;
  left:50%;
  width:0;
  height:1px;
  transform:translateX(-50%);
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.82), transparent);
  animation:shootingBossIntroLine 2.4s ease forwards;
}

.shooting-boss-intro-line.line-a { bottom:7.3%; }
.shooting-boss-intro-line.line-b { bottom:18.8%; opacity:.42; }

@keyframes shootingBossIntroLine {
  0%,25% { width:0; opacity:0; }
  42%,85% { width:72%; opacity:.7; }
  100% { width:48%; opacity:.16; }
}

.shooting-boss-intro.out {
  opacity:0;
  filter:brightness(1.035);
  transition:opacity .88s cubic-bezier(.22,.61,.36,1), filter .88s ease;
}

.shooting-boss-intro.out .shooting-boss-intro-image {
  transform:scale(1.072);
  filter:saturate(.66) contrast(.94) brightness(1.08) blur(.35px);
  transition:transform 1.05s cubic-bezier(.22,.61,.36,1), filter .9s ease;
}

.shooting-boss-intro.out .shooting-boss-intro-copy,
.shooting-boss-intro.out .shooting-boss-intro-line {
  opacity:0;
  transform:translateY(-4px);
  transition:opacity .56s ease, transform .72s ease;
}

.shooting-boss-intro.out .shooting-boss-intro-flash {
  animation:none;
  opacity:.18;
  transition:opacity .76s ease;
}

@media (max-height:700px) {
  .shooting-boss-intro-copy {
    bottom:8%;
  }
  .shooting-boss-intro-copy strong {
    font-size:23px;
  }
  .shooting-boss-intro-line.line-a { bottom:6%; }
  .shooting-boss-intro-line.line-b { bottom:18%; }
}


/* ============================================================
   BOSS INTRO — cinematic impact shake
   短い衝撃だけを2回入れ、常時揺れによる安っぽさを避ける。
   ============================================================ */
.shooting-boss-intro.shake-entry{
  animation:shootingBossIntroShakeEntry .42s cubic-bezier(.12,.74,.2,1) both;
}

@keyframes shootingBossIntroShakeEntry{
  0%   { transform:translate3d(0,0,0) scale(1); }
  12%  { transform:translate3d(-5px,2px,0) scale(1.006); }
  24%  { transform:translate3d(4px,-3px,0) scale(1.004); }
  38%  { transform:translate3d(-3px,2px,0) scale(1.003); }
  54%  { transform:translate3d(2px,-1px,0) scale(1.002); }
  72%  { transform:translate3d(-1px,1px,0) scale(1.001); }
  100% { transform:translate3d(0,0,0) scale(1); }
}

.shooting-boss-intro.shake-title{
  animation:shootingBossIntroShakeTitle .34s cubic-bezier(.22,.72,.24,1) both;
}

@keyframes shootingBossIntroShakeTitle{
  0%   { transform:translate3d(0,0,0); }
  18%  { transform:translate3d(3px,-1px,0); }
  36%  { transform:translate3d(-3px,1px,0); }
  55%  { transform:translate3d(2px,0,0); }
  75%  { transform:translate3d(-1px,0,0); }
  100% { transform:translate3d(0,0,0); }
}

/* シェイク時だけ画像側にもごく僅かなズレを重ね、レイヤー感を出す */
.shooting-boss-intro.shake-entry .shooting-boss-intro-media{
  animation:shootingBossIntroMediaKick .42s cubic-bezier(.12,.74,.2,1) both;
}
@keyframes shootingBossIntroMediaKick{
  0%,100% { transform:translate3d(0,0,0); }
  20% { transform:translate3d(2px,-1px,0); }
  42% { transform:translate3d(-2px,1px,0); }
  66% { transform:translate3d(1px,0,0); }
}

@media (prefers-reduced-motion: reduce){
  .shooting-boss-intro.shake-entry,
  .shooting-boss-intro.shake-title,
  .shooting-boss-intro.shake-entry .shooting-boss-intro-media{
    animation:none !important;
  }
}


/* ============================================================
   SPECIAL EVENT stage selector — shared typography foundation
   今後追加する特別巡行ステージも、この generic class を付けるだけで
   明朝系フォントが自動適用される。
   ============================================================ */
.shooting-special-stage-select,
.shooting-special-stage-select button,
.shooting-special-stage-back,
.shooting-special-stage-row,
.shooting-special-stage-main,
.shooting-special-stage-name-row,
.shooting-special-stage-name-row strong,
.shooting-special-stage-condition,
.shooting-special-stage-wave {
  font-family: "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif !important;
  font-synthesis: none;
}

.shooting-special-stage-title {
  font-family: "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif !important;
  font-weight: 400;
}

.shooting-special-stage-no {
  font-family: "Cinzel", "Times New Roman", serif !important;
}

/*
  Compatibility:
  既存の無貌の天使は旧クラスも維持しているため、
  レイアウトCSSを壊さず generic class を共通基盤として利用できる。
*/


/* ============================================================
   Party actions — quieter / more elegant start button
   ============================================================ */
#shooting-event-root .shooting-character-select.show .shooting-party-actions{
  gap:10px !important;
  background:rgba(255,253,248,.985) !important;
  border-top:1px solid rgba(160,128,72,.18) !important;
  box-shadow:0 -5px 18px rgba(94,70,32,.045) !important;
}

#shooting-event-root .shooting-character-select.show .shooting-party-cancel,
#shooting-event-root .shooting-character-select.show .shooting-character-start{
  border-radius:8px !important;
  font-family:"Noto Serif JP",serif !important;
  font-weight:500 !important;
  text-shadow:none !important;
  box-shadow:none !important;
  letter-spacing:.14em !important;
}

#shooting-event-root .shooting-character-select.show .shooting-party-cancel{
  border:1px solid rgba(144,116,72,.26) !important;
  background:#fbf8f1 !important;
  color:#8a775a !important;
}

#shooting-event-root .shooting-character-select.show .shooting-character-start{
  border:1px solid rgba(174,135,68,.42) !important;
  background:linear-gradient(180deg,#fffdf8 0%,#f7edd8 100%) !important;
  color:#806337 !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.78),0 2px 8px rgba(116,85,37,.055) !important;
}

#shooting-event-root .shooting-character-select.show .shooting-character-start:not(:disabled):active{
  background:#f3e6cd !important;
  transform:translateY(1px) !important;
}

#shooting-event-root .shooting-character-select.show .shooting-character-start:disabled{
  opacity:.42 !important;
  background:#f4f0e8 !important;
  border-color:rgba(147,129,99,.20) !important;
  color:#aaa08f !important;
}

/* ============================================================
   In-battle top-left menu button
   ============================================================ */
#shooting-event-root .shooting-back.is-menu{
  display:flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  padding:0 0 3px;
  border:1px solid rgba(152,125,74,.38);
  border-radius:50%;
  background:rgba(255,255,255,.72);
  color:#806a43;
  font-family:"Cinzel",serif;
  font-size:22px;
  font-weight:400;
  line-height:1;
  letter-spacing:-.08em;
  box-shadow:0 2px 8px rgba(89,66,31,.05);
}

/* ============================================================
   Battle pause menu
   ============================================================ */
.shooting-pause-menu{
  position:absolute;
  inset:0;
  z-index:1000;
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px;
  pointer-events:none;
}

.shooting-pause-menu.show{
  display:flex;
  pointer-events:auto;
}

.shooting-pause-backdrop{
  position:absolute;
  inset:0;
  background:rgba(239,235,225,.70);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}

.shooting-pause-card{
  position:relative;
  z-index:1;
  width:min(320px,88vw);
  padding:27px 24px 23px;
  border:1px solid rgba(157,128,77,.28);
  border-radius:4px;
  background:rgba(255,253,248,.975);
  box-shadow:0 18px 48px rgba(84,61,29,.12),inset 0 0 0 1px rgba(255,255,255,.9);
  text-align:center;
  color:#67543a;
  font-family:"Noto Serif JP",serif;
}

.shooting-pause-kicker{
  font-family:"Cinzel",serif;
  font-size:9px;
  letter-spacing:.30em;
  color:#b09a73;
}

.shooting-pause-card h2{
  margin:6px 0 13px;
  font-size:18px;
  font-weight:500;
  letter-spacing:.16em;
  color:#695437;
}

.shooting-pause-divider{
  width:38px;
  height:1px;
  margin:0 auto 17px;
  background:rgba(181,145,81,.46);
}

.shooting-pause-action{
  display:block;
  width:100%;
  min-height:48px;
  margin:8px 0 0;
  padding:10px 14px;
  border:1px solid rgba(151,124,81,.24);
  border-radius:5px;
  background:#fffdfa;
  color:#6e5a3d;
  font-family:"Noto Serif JP",serif;
  font-size:12px;
  font-weight:500;
  letter-spacing:.09em;
  box-shadow:none;
}

.shooting-pause-action:active{
  background:#f3eadc;
}

.shooting-pause-action.shooting-pause-exit{
  color:#88655d;
  border-color:rgba(157,109,99,.24);
}

.shooting-pause-action.shooting-pause-close{
  margin-top:14px;
  border-color:transparent;
  background:transparent;
  color:#9a896c;
  min-height:38px;
}


/* ============================================================
   Battle HUD v2 — right-bottom MENU + left vertical ULT gauge
   ============================================================ */

/* バトル中の左上ボタンは使わない */
#shooting-event-root .shooting-back.is-battle-hidden{
  display:none !important;
}

/* 旧ULTボタンは完全に非表示（古いDOMが一瞬残る場合の保険） */
#shooting-event-root .shooting-burst{
  display:none !important;
}

/* 右下 MENU */
#shooting-event-root .shooting-battle-menu-btn{
  margin-left:auto;
  width:104px;
  height:42px;
  border:1px solid rgba(154,125,73,.42);
  border-radius:2px;
  background:linear-gradient(180deg,rgba(255,254,250,.96),rgba(247,240,226,.94));
  color:#7a6543;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.82),0 2px 8px rgba(94,68,29,.05);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:13px;
  font-weight:500;
  letter-spacing:.20em;
  text-indent:.20em;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
#shooting-event-root .shooting-battle-menu-btn:active{
  background:#f2e8d6;
  transform:translateY(1px);
}

/* 左側の縦型ULTゲージ */
#shooting-event-root .shooting-ult-side{
  position:absolute;
  z-index:24;
  left:12px;
  top:50%;
  transform:translateY(-50%);
  width:28px;
  height:222px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  pointer-events:none;
  opacity:.96;
}

#shooting-event-root .shooting-ult-side-label{
  order:2;
  font-family:"Cinzel",serif;
  font-size:8px;
  font-weight:500;
  letter-spacing:.18em;
  writing-mode:vertical-rl;
  color:#9c8357;
  text-shadow:0 1px 0 rgba(255,255,255,.88);
}

#shooting-event-root .shooting-ult-side-track{
  order:1;
  position:relative;
  width:10px;
  height:182px;
  overflow:hidden;
  border:1px solid rgba(154,123,68,.54);
  background:rgba(255,253,247,.62);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.56),
    0 2px 8px rgba(91,66,29,.07);
}

#shooting-event-root .shooting-ult-side-track::before,
#shooting-event-root .shooting-ult-side-track::after{
  content:"";
  position:absolute;
  z-index:2;
  left:50%;
  width:4px;
  height:1px;
  transform:translateX(-50%);
  background:rgba(150,119,63,.42);
  pointer-events:none;
}
#shooting-event-root .shooting-ult-side-track::before{top:33.333%}
#shooting-event-root .shooting-ult-side-track::after{top:66.666%}

#shooting-event-root #shooting-burst-gauge{
  position:absolute;
  z-index:1;
  left:0;
  right:0;
  bottom:0;
  width:100% !important;
  height:100%;
  transform-origin:center bottom;
  transform:scaleY(var(--ult-fill,0));
  transition:transform .12s linear;
  background:
    linear-gradient(
      180deg,
      rgba(251,235,179,.98) 0%,
      rgba(218,185,105,.96) 42%,
      rgba(176,132,57,.98) 100%
    );
  box-shadow:
    inset 0 0 5px rgba(255,255,255,.46),
    0 0 8px rgba(199,159,78,.18);
}

/* MAX時：派手すぎない呼吸する光 */
#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-track{
  animation:shootingUltGaugeReady 1.55s ease-in-out infinite;
}
#shooting-event-root .shooting-ult-side.is-ready #shooting-burst-gauge{
  background:
    linear-gradient(
      180deg,
      #fff3c9 0%,
      #e4bd69 38%,
      #b98938 100%
    );
}
#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-label{
  color:#aa8137;
  animation:shootingUltLabelReady 1.55s ease-in-out infinite;
}

@keyframes shootingUltGaugeReady{
  0%,100%{
    border-color:rgba(171,132,61,.62);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.62),
      0 0 5px rgba(202,159,73,.14);
  }
  50%{
    border-color:rgba(199,157,73,.92);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.78),
      0 0 12px rgba(207,164,77,.40),
      0 0 22px rgba(207,164,77,.16);
  }
}

@keyframes shootingUltLabelReady{
  0%,100%{opacity:.72}
  50%{opacity:1}
}

@media (max-height:720px){
  #shooting-event-root .shooting-ult-side{
    height:190px;
  }
  #shooting-event-root .shooting-ult-side-track{
    height:150px;
  }
}


/* ============================================================
   ULT gauge refinement v3
   ============================================================ */

#shooting-event-root .shooting-ult-side{
  left:16px;
  top:52%;
  width:92px;
  height:348px;
  transform:translateY(-50%);
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
}

#shooting-event-root .shooting-ult-side-track{
  order:1;
  width:16px;
  height:318px;
  flex:0 0 16px;
  border-width:1px;
  border-color:rgba(159,124,62,.62);
  background:rgba(255,252,244,.60);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.60),
    0 3px 12px rgba(94,68,27,.10);
}

#shooting-event-root .shooting-ult-side-track::before,
#shooting-event-root .shooting-ult-side-track::after{
  width:8px;
  background:rgba(147,112,51,.42);
}

#shooting-event-root .shooting-ult-side-copy{
  order:2;
  height:318px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:12px;
  color:#9b8155;
  pointer-events:none;
}

#shooting-event-root .shooting-ult-side-copy span{
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-family:"Cinzel",serif;
  font-size:8px;
  font-weight:500;
  letter-spacing:.18em;
  color:#8f754a;
  text-shadow:0 1px 0 rgba(255,255,255,.92);
}

#shooting-event-root .shooting-ult-side-copy b{
  writing-mode:vertical-rl;
  text-orientation:upright;
  font-family:"Cinzel",serif;
  font-size:7px;
  line-height:1;
  letter-spacing:.07em;
  font-weight:400;
  color:#b09156;
  opacity:.82;
}

#shooting-event-root .shooting-ult-side-label{
  display:none !important;
}

#shooting-event-root #shooting-burst-gauge{
  background:
    linear-gradient(
      180deg,
      rgba(255,244,205,.98) 0%,
      rgba(229,195,110,.98) 38%,
      rgba(191,143,55,.99) 72%,
      rgba(151,106,34,.99) 100%
    );
  box-shadow:
    inset 0 0 7px rgba(255,255,255,.54),
    0 0 10px rgba(202,159,72,.22);
}

/* FULL時はより明確に脈動 */
#shooting-event-root .shooting-ult-side.is-ready{
  animation:shootingUltWholePulse 1.12s ease-in-out infinite;
}

#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-track{
  animation:shootingUltGaugeReadyStrong 1.12s ease-in-out infinite;
}

#shooting-event-root .shooting-ult-side.is-ready #shooting-burst-gauge{
  background:
    linear-gradient(
      180deg,
      #fff8d8 0%,
      #f0cd74 34%,
      #d49a38 72%,
      #a96f1f 100%
    );
  box-shadow:
    inset 0 0 9px rgba(255,255,255,.72),
    0 0 12px rgba(225,180,78,.50),
    0 0 26px rgba(225,180,78,.28);
}

#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-copy{
  animation:shootingUltCopyReady 1.12s ease-in-out infinite;
}

@keyframes shootingUltGaugeReadyStrong{
  0%,100%{
    border-color:rgba(174,132,55,.66);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.64),
      0 0 8px rgba(210,162,65,.22);
    filter:brightness(1);
  }
  50%{
    border-color:rgba(229,184,85,.98);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.86),
      0 0 18px rgba(226,180,77,.72),
      0 0 34px rgba(226,180,77,.34);
    filter:brightness(1.12);
  }
}

@keyframes shootingUltWholePulse{
  0%,100%{transform:translateY(-50%) scale(1)}
  50%{transform:translateY(-50%) scale(1.025)}
}

@keyframes shootingUltCopyReady{
  0%,100%{opacity:.74;filter:brightness(1)}
  50%{opacity:1;filter:brightness(1.18)}
}

/* FULL CHARGE notification */
#shooting-event-root .shooting-ult-full-notice{
  position:absolute;
  z-index:60;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) scale(.96);
  width:max-content;
  max-width:84vw;
  padding:10px 22px 11px;
  border-top:1px solid rgba(192,150,70,.44);
  border-bottom:1px solid rgba(192,150,70,.44);
  background:linear-gradient(
    90deg,
    rgba(255,253,247,0) 0%,
    rgba(255,253,247,.90) 18%,
    rgba(255,250,236,.96) 50%,
    rgba(255,253,247,.90) 82%,
    rgba(255,253,247,0) 100%
  );
  color:#9f762e;
  font-family:"Cinzel",serif;
  font-size:16px;
  font-weight:600;
  letter-spacing:.18em;
  text-indent:.18em;
  text-shadow:0 1px 0 #fff,0 0 10px rgba(211,165,75,.22);
  opacity:0;
  pointer-events:none;
}

#shooting-event-root .shooting-ult-full-notice.show{
  animation:shootingUltFullNotice 1.65s ease both;
}

@keyframes shootingUltFullNotice{
  0%{
    opacity:0;
    transform:translate(-50%,-50%) scale(.92);
    filter:blur(4px) brightness(1.3);
  }
  18%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1.03);
    filter:blur(0) brightness(1.08);
  }
  45%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
    filter:brightness(1);
  }
  78%{
    opacity:.96;
  }
  100%{
    opacity:0;
    transform:translate(-50%,-50%) scale(1.01);
    filter:blur(1px);
  }
}

@media (max-height:720px){
  #shooting-event-root .shooting-ult-side{
    height:302px;
  }
  #shooting-event-root .shooting-ult-side-track,
  #shooting-event-root .shooting-ult-side-copy{
    height:272px;
  }
}


/* ============================================================
   ULT gauge v4 — clearer label / stronger FULL pulse
   ============================================================ */
#shooting-event-root .shooting-ult-side{
  width:112px;
}

#shooting-event-root .shooting-ult-side-copy{
  position:relative;
  order:2;
  width:34px;
  height:318px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  opacity:1;
}

#shooting-event-root .shooting-ult-side-copy span{
  display:block;
  width:170px;
  white-space:nowrap;
  writing-mode:horizontal-tb;
  text-orientation:mixed;
  transform:rotate(90deg);
  transform-origin:center center;
  font-family:"Cinzel",serif;
  font-size:9px;
  font-weight:600;
  line-height:1;
  letter-spacing:.20em;
  color:#806437;
  text-shadow:
    0 1px 0 rgba(255,255,255,.98),
    0 0 6px rgba(255,249,231,.90);
}

#shooting-event-root .shooting-ult-side-copy b{
  display:none !important;
}

/* FULL時はゲージ本体・ラベルともに明確な脈動 */
#shooting-event-root .shooting-ult-side.is-ready{
  animation:shootingUltWholePulseV4 .88s ease-in-out infinite;
}

#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-track{
  animation:shootingUltGaugeReadyV4 .88s ease-in-out infinite;
}

#shooting-event-root .shooting-ult-side.is-ready .shooting-ult-side-copy span{
  animation:shootingUltLabelReadyV4 .88s ease-in-out infinite;
}

@keyframes shootingUltWholePulseV4{
  0%,100%{transform:translateY(-50%) scale(1)}
  50%{transform:translateY(-50%) scale(1.045)}
}

@keyframes shootingUltGaugeReadyV4{
  0%,100%{
    border-color:rgba(178,136,55,.72);
    filter:brightness(1);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.72),
      0 0 10px rgba(214,164,62,.30),
      0 0 18px rgba(214,164,62,.12);
  }
  50%{
    border-color:rgba(244,202,101,1);
    filter:brightness(1.24);
    box-shadow:
      inset 0 0 0 1px rgba(255,255,255,.94),
      0 0 20px rgba(238,190,77,.88),
      0 0 42px rgba(238,190,77,.48),
      0 0 62px rgba(238,190,77,.18);
  }
}

@keyframes shootingUltLabelReadyV4{
  0%,100%{
    color:#8d6b32;
    opacity:.78;
    text-shadow:0 1px 0 #fff,0 0 6px rgba(218,173,78,.22);
  }
  50%{
    color:#b07d24;
    opacity:1;
    text-shadow:
      0 1px 0 #fff,
      0 0 9px rgba(230,181,78,.66),
      0 0 18px rgba(230,181,78,.28);
  }
}

/* FULL CHARGE通知を一段わかりやすく */
#shooting-event-root .shooting-ult-full-notice{
  z-index:90;
  padding:13px 28px 14px;
  font-size:17px;
  font-weight:600;
  letter-spacing:.20em;
  color:#9a6a1f;
  border-top-color:rgba(201,157,67,.62);
  border-bottom-color:rgba(201,157,67,.62);
  box-shadow:0 0 28px rgba(218,173,80,.12);
}

#shooting-event-root .shooting-ult-full-notice.show{
  animation:shootingUltFullNoticeV4 1.8s ease both;
}

@keyframes shootingUltFullNoticeV4{
  0%{
    opacity:0;
    transform:translate(-50%,-50%) scale(.88);
    filter:blur(5px) brightness(1.45);
  }
  16%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1.07);
    filter:blur(0) brightness(1.18);
  }
  32%{
    transform:translate(-50%,-50%) scale(.995);
  }
  48%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1.02);
    filter:brightness(1.05);
  }
  78%{opacity:1}
  100%{
    opacity:0;
    transform:translate(-50%,-50%) scale(1.02);
    filter:blur(1px);
  }
}

@media (max-height:720px){
  #shooting-event-root .shooting-ult-side-copy{
    height:272px;
  }
}


/* ============================================================
   ULT gauge v5 - tighter label and richer full notice
   ============================================================ */
#shooting-event-root .shooting-ult-side{
  width:92px;
  gap:0 !important;
}

#shooting-event-root .shooting-ult-side-copy{
  width:20px;
  margin-left:-6px;
  padding:0;
}

#shooting-event-root .shooting-ult-side-copy span{
  font-size:10px;
  letter-spacing:.16em;
  color:#7f6333;
}

#shooting-event-root .shooting-ult-full-notice{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-width:min(88vw, 440px);
  padding:16px 30px 18px;
}

#shooting-event-root .shooting-ult-full-notice span{
  display:block;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:18px;
  font-weight:700;
  line-height:1.1;
  letter-spacing:.16em;
  text-indent:.16em;
  color:#9a6a1f;
  text-shadow:0 1px 0 #fff,0 0 10px rgba(211,165,75,.22);
}

#shooting-event-root .shooting-ult-full-notice small{
  display:block;
  font-family:"Noto Serif JP","Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:11px;
  font-weight:600;
  line-height:1.55;
  letter-spacing:.08em;
  color:#87673a;
  text-align:center;
  text-shadow:0 1px 0 rgba(255,255,255,.94);
}

#shooting-event-root .shooting-ult-full-notice.show{
  animation:shootingUltFullNoticeV5 2.35s ease both;
}

@keyframes shootingUltFullNoticeV5{
  0%{
    opacity:0;
    transform:translate(-50%,-50%) scale(.86);
    filter:blur(6px) brightness(1.55);
  }
  14%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1.08);
    filter:blur(0) brightness(1.22);
  }
  28%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
    filter:brightness(1.06);
  }
  74%{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
    filter:brightness(1);
  }
  100%{
    opacity:0;
    transform:translate(-50%,-50%) scale(1.02);
    filter:blur(1px);
  }
}


/* ULT gauge v6 - label spacing micro adjustment */
#shooting-event-root .shooting-ult-side-copy{
  margin-left:2px !important;
}
#shooting-event-root .shooting-ult-side-copy span{
  letter-spacing:0 !important;
}


/* ============================================================
   Battle UI real-time mirror switch (TYPE 1 / TYPE 2)
   ============================================================ */
#shooting-event-root .shooting-footer{
  justify-content:space-between;
  gap:12px;
}
#shooting-event-root .shooting-battle-controls{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex:0 0 auto;
}
#shooting-event-root .shooting-battle-menu-btn,
#shooting-event-root .shooting-ui-layout-btn{
  margin-left:0 !important;
  min-width:92px;
  height:42px;
  padding:0 14px;
  border:1px solid rgba(154,125,73,.42);
  border-radius:2px;
  background:linear-gradient(180deg,rgba(255,254,250,.96),rgba(247,240,226,.94));
  color:#7a6543;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.82),0 2px 8px rgba(94,68,29,.05);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:12px;
  font-weight:500;
  letter-spacing:.18em;
  text-indent:.18em;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
#shooting-event-root .shooting-ui-layout-btn{
  min-width:96px;
}
#shooting-event-root .shooting-battle-menu-btn:active,
#shooting-event-root .shooting-ui-layout-btn:active{
  background:#f2e8d6;
  transform:translateY(1px);
}
#shooting-event-root .shooting-ui-layout-btn span,
#shooting-event-root .shooting-battle-menu-btn span{
  pointer-events:none;
}
#shooting-event-root.ui-type-1 .shooting-ult-side{
  left:16px;
  right:auto;
  flex-direction:row;
}
#shooting-event-root.ui-type-1 .shooting-switch-rail{
  left:auto;
  right:12px;
  align-items:flex-end;
}
#shooting-event-root.ui-type-1 .shooting-footer{
  flex-direction:row;
}
#shooting-event-root.ui-type-1 .shooting-battle-controls{
  flex-direction:row;
}
#shooting-event-root.ui-type-1 .shooting-player-hud{
  align-items:flex-start;
  text-align:left;
}
#shooting-event-root.ui-type-2 .shooting-ult-side{
  left:auto;
  right:16px;
  flex-direction:row-reverse;
}
#shooting-event-root.ui-type-2 .shooting-switch-rail{
  left:12px;
  right:auto;
  align-items:flex-start;
}
#shooting-event-root.ui-type-2 .shooting-footer{
  flex-direction:row-reverse;
}
#shooting-event-root.ui-type-2 .shooting-battle-controls{
  flex-direction:row-reverse;
}
#shooting-event-root.ui-type-2 .shooting-player-hud{
  align-items:flex-end;
  text-align:right;
}
#shooting-event-root.ui-type-2 .shooting-player-hud-top{
  justify-content:flex-end;
}
#shooting-event-root.ui-type-2 .shooting-player-hp-bar{
  margin-left:auto;
}
@media (max-width:480px){
  #shooting-event-root .shooting-battle-controls{gap:6px}
  #shooting-event-root .shooting-battle-menu-btn,
  #shooting-event-root .shooting-ui-layout-btn{min-width:82px;height:40px;padding:0 10px;font-size:11px}
  #shooting-event-root.ui-type-1 .shooting-switch-rail{right:9px}
  #shooting-event-root.ui-type-2 .shooting-switch-rail{left:9px}
  #shooting-event-root.ui-type-1 .shooting-ult-side{left:12px}
  #shooting-event-root.ui-type-2 .shooting-ult-side{right:12px}
}


/* ============================================================
   Battle footer responsive safety v2
   - no horizontal clipping on narrow devices
   - MENU / UI切替 use the same footprint
   ============================================================ */
#shooting-event-root .shooting-footer{
  height:calc(72px + env(safe-area-inset-bottom, 0px));
  min-width:0;
  width:100%;
  padding:9px max(10px, env(safe-area-inset-right, 0px)) calc(9px + env(safe-area-inset-bottom, 0px)) max(10px, env(safe-area-inset-left, 0px));
  gap:8px;
  overflow:hidden;
}

#shooting-event-root .shooting-player-hud{
  flex:1 1 auto;
  min-width:0 !important;
  width:auto !important;
  max-width:none;
}

#shooting-event-root .shooting-player-hud-top{
  width:100%;
  min-width:0;
  gap:6px;
}

#shooting-event-root .shooting-player-name{
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}

#shooting-event-root .shooting-player-hp-text{
  flex:0 0 auto;
  white-space:nowrap;
}

#shooting-event-root .shooting-player-hp-bar{
  width:100% !important;
  max-width:230px;
}

#shooting-event-root .shooting-battle-controls{
  flex:0 0 auto;
  min-width:0;
  gap:6px;
}

#shooting-event-root .shooting-battle-menu-btn,
#shooting-event-root .shooting-ui-layout-btn{
  box-sizing:border-box;
  flex:0 0 84px;
  width:84px;
  min-width:84px;
  max-width:84px;
  height:42px;
  padding:0 6px;
  font-size:11px;
  letter-spacing:.14em;
  text-indent:.14em;
  white-space:nowrap;
}

#shooting-event-root.ui-type-2 .shooting-player-hud-top{
  justify-content:space-between;
  flex-direction:row-reverse;
}

#shooting-event-root.ui-type-2 .shooting-player-hp-bar{
  margin-left:auto;
  margin-right:0;
}

/* Arena bottom tracks the safe-area-aware footer height. */
#shooting-event-root .shooting-arena{
  bottom:calc(72px + env(safe-area-inset-bottom, 0px));
}

/* Narrow phones: buttons remain equal, HP area yields first. */
@media (max-width:390px){
  #shooting-event-root .shooting-footer{
    padding-left:8px;
    padding-right:8px;
    gap:6px;
  }
  #shooting-event-root .shooting-battle-controls{gap:5px}
  #shooting-event-root .shooting-battle-menu-btn,
  #shooting-event-root .shooting-ui-layout-btn{
    flex-basis:78px;
    width:78px;
    min-width:78px;
    max-width:78px;
    height:40px;
    padding:0 4px;
    font-size:10px;
    letter-spacing:.11em;
    text-indent:.11em;
  }
  #shooting-event-root .shooting-player-name{font-size:10px}
  #shooting-event-root .shooting-player-hp-text{font-size:7px}
}

/* Very narrow legacy devices: preserve both controls without overflow. */
@media (max-width:340px){
  #shooting-event-root .shooting-footer{padding-left:6px;padding-right:6px;gap:4px}
  #shooting-event-root .shooting-battle-controls{gap:4px}
  #shooting-event-root .shooting-battle-menu-btn,
  #shooting-event-root .shooting-ui-layout-btn{
    flex-basis:70px;
    width:70px;
    min-width:70px;
    max-width:70px;
    height:38px;
    font-size:9px;
    letter-spacing:.08em;
    text-indent:.08em;
  }
}

/* ============================================================
   PATCH: translucent battle overlay UI
   - Keep player / enemy bullets visible behind ULT gauge and switch buttons.
   - Preserve borders, HP bars and ULT rings for readability.
   ============================================================ */

/* ULT gauge: make the track and filled portion translucent. */
#shooting-event-root .shooting-ult-side-track{
  background:rgba(255,252,244,.14) !important;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}
#shooting-event-root #shooting-burst-gauge{
  opacity:.42;
}

/* Character switch buttons: let the battle field show through the portrait/background. */
#shooting-event-root .shooting-switch-btn:not(.dead){
  background:rgba(255,253,248,.18) !important;
  box-shadow:0 4px 12px rgba(58,42,23,.11);
}
#shooting-event-root .shooting-switch-btn:not(.dead) img{
  opacity:.42;
}

/* Cooldown veil was fairly opaque; keep the state visible without hiding bullets completely. */
#shooting-event-root .shooting-switch-btn.cooling::after{
  background:rgba(235,230,219,.16) !important;
}

/* ============================================================
   Bench ULT ring readability patch
   - Reduce the gold impression while charging.
   - Make the current charge ring easier to distinguish from FULL.
   ============================================================ */
#shooting-event-root .shooting-switch-ult-ring{
  z-index:2;
  inset:-6px;
  background:conic-gradient(
    #72bfff calc(var(--ult-ring-fill) * 1turn),
    rgba(86,96,112,.24) 0
  ) !important;
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));
  filter:drop-shadow(0 0 2px rgba(70,124,188,.26));
  opacity:.98;
}
#shooting-event-root .shooting-switch-btn img{
  position:relative;
  z-index:1;
}
#shooting-event-root .shooting-switch-btn.ult-ready .shooting-switch-ult-ring{
  background:conic-gradient(#f3cc62 1turn,#f3cc62 1turn) !important;
  filter:drop-shadow(0 0 6px rgba(239,191,70,.96)) drop-shadow(0 0 12px rgba(239,191,70,.46));
  animation:shootingBenchUltReadyStrong .72s ease-in-out infinite alternate;
}
@keyframes shootingBenchUltReadyStrong{
  0%{transform:scale(1);opacity:.95}
  100%{transform:scale(1.06);opacity:1}
}
#shooting-event-root .shooting-switch-btn.dead .shooting-switch-ult-ring{
  opacity:.22;
  animation:none;
  filter:none;
}

/* ============================================================
   Bench ULT ring luxury finish
   - Keep blue charging / gold FULL color language.
   - Add multi-tone metallic/glass gradients and restrained bloom.
   ============================================================ */
#shooting-event-root .shooting-switch-ult-ring{
  background:conic-gradient(
    from -90deg,
    #dff6ff 0turn,
    #9edcff calc(var(--ult-ring-fill) * .18turn),
    #5aa9e7 calc(var(--ult-ring-fill) * .46turn),
    #2f79bd calc(var(--ult-ring-fill) * .72turn),
    #8fd4ff calc(var(--ult-ring-fill) * .92turn),
    #d7f2ff calc(var(--ult-ring-fill) * 1turn),
    rgba(109,120,134,.22) 0
  ) !important;
  filter:
    drop-shadow(0 0 1px rgba(236,249,255,.95))
    drop-shadow(0 0 4px rgba(82,153,216,.28))
    drop-shadow(0 2px 4px rgba(34,53,74,.18));
}

/* A subtle glass sheen travelling over the ring without becoming flashy. */
#shooting-event-root .shooting-switch-ult-ring::after{
  content:'';
  position:absolute;
  inset:0;
  border-radius:50%;
  pointer-events:none;
  background:linear-gradient(
    135deg,
    rgba(255,255,255,.72) 0%,
    rgba(255,255,255,.12) 24%,
    rgba(255,255,255,0) 48%,
    rgba(255,255,255,.18) 76%,
    rgba(255,255,255,.52) 100%
  );
  opacity:.34;
}

#shooting-event-root .shooting-switch-btn.ult-ready .shooting-switch-ult-ring{
  background:conic-gradient(
    from -90deg,
    #fff7d7 0turn,
    #f6df9a .14turn,
    #d9ae48 .38turn,
    #b67a23 .62turn,
    #e4bd5a .82turn,
    #fff0b3 1turn
  ) !important;
  filter:
    drop-shadow(0 0 1px rgba(255,250,226,1))
    drop-shadow(0 0 5px rgba(229,181,72,.56))
    drop-shadow(0 0 12px rgba(206,145,40,.24))
    drop-shadow(0 3px 5px rgba(89,61,19,.20));
  animation:shootingBenchUltReadyLuxury .92s ease-in-out infinite alternate;
}

#shooting-event-root .shooting-switch-btn.ult-ready .shooting-switch-ult-ring::after{
  opacity:.52;
  background:linear-gradient(
    135deg,
    rgba(255,255,255,.92) 0%,
    rgba(255,249,218,.20) 24%,
    rgba(255,255,255,0) 49%,
    rgba(255,239,180,.20) 76%,
    rgba(255,255,255,.72) 100%
  );
}

@keyframes shootingBenchUltReadyLuxury{
  0%{
    transform:scale(1);
    filter:
      drop-shadow(0 0 1px rgba(255,250,226,1))
      drop-shadow(0 0 4px rgba(229,181,72,.46))
      drop-shadow(0 0 9px rgba(206,145,40,.20))
      drop-shadow(0 3px 5px rgba(89,61,19,.18));
  }
  100%{
    transform:scale(1.045);
    filter:
      drop-shadow(0 0 2px rgba(255,252,235,1))
      drop-shadow(0 0 7px rgba(237,194,88,.72))
      drop-shadow(0 0 16px rgba(212,154,47,.30))
      drop-shadow(0 3px 6px rgba(89,61,19,.20));
  }
}


/* ============================================================
   Shooting header — difficulty badge / high score
   ============================================================ */
#shooting-event-root .shooting-hud-title strong{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
}
#shooting-event-root #shooting-hud-difficulty{
  display:none;
  padding:0;
  border:0;
  border-radius:0;
  background:none;
  box-shadow:none;
  color:rgba(143,109,50,.78);
  font-family:"Noto Serif JP",serif;
  font-size:9px;
  font-weight:400;
  line-height:1;
  letter-spacing:.06em;
  white-space:nowrap;
}
#shooting-event-root .shooting-score.is-high-score{
  color:#9a7536;
  font-weight:600;
  text-shadow:0 1px 0 rgba(255,255,255,.90);
}
@media(max-width:380px){
  #shooting-event-root .shooting-hud-title{margin-left:8px}
  #shooting-event-root .shooting-hud-title strong{font-size:13px;gap:5px}
  #shooting-event-root #shooting-hud-difficulty{font-size:8px}
  #shooting-event-root .shooting-score{font-size:8px;letter-spacing:.10em}
}


/* ============================================================
   BATTLE START CEREMONY — ARE YOU READY / 3 / 2 / 1 / START
   ============================================================ */
#shooting-event-root .shooting-countdown{
  z-index:58;
  background:
    radial-gradient(circle at 50% 50%,rgba(255,253,246,.28) 0%,rgba(255,253,246,.10) 28%,rgba(255,253,246,0) 58%);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}

#shooting-event-root .shooting-countdown::before,
#shooting-event-root .shooting-countdown::after{
  content:'';
  position:absolute;
  left:50%;
  width:min(62vw,270px);
  height:1px;
  transform:translateX(-50%) scaleX(0);
  transform-origin:center;
  background:linear-gradient(90deg,transparent,rgba(174,135,65,.64),transparent);
  opacity:0;
  pointer-events:none;
}
#shooting-event-root .shooting-countdown::before{top:43%}
#shooting-event-root .shooting-countdown::after{bottom:43%}

#shooting-event-root .shooting-countdown.ready-phase::before,
#shooting-event-root .shooting-countdown.ready-phase::after,
#shooting-event-root .shooting-countdown.start-phase::before,
#shooting-event-root .shooting-countdown.start-phase::after{
  animation:shootingReadyLine 1.18s cubic-bezier(.22,.61,.36,1) both;
}

#shooting-event-root .shooting-countdown span{
  position:relative;
  z-index:1;
  min-width:280px;
  text-align:center;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-weight:500;
  color:#715936;
  text-shadow:
    0 1px 0 rgba(255,255,255,.98),
    0 0 18px rgba(223,191,122,.42),
    0 12px 34px rgba(72,51,25,.13);
}

#shooting-event-root .shooting-countdown.ready-phase span{
  font-size:clamp(17px,5.5vw,25px);
  letter-spacing:.24em;
  text-indent:.24em;
}

#shooting-event-root .shooting-countdown.number-phase span{
  font-size:clamp(76px,21vw,124px);
  letter-spacing:.01em;
  text-indent:0;
}

#shooting-event-root .shooting-countdown.start-phase span{
  font-size:clamp(28px,8vw,42px);
  font-weight:600;
  letter-spacing:.28em;
  text-indent:.28em;
  color:#9a6c22;
  text-shadow:
    0 1px 0 rgba(255,255,255,1),
    0 0 12px rgba(232,190,89,.60),
    0 0 28px rgba(213,159,56,.30),
    0 14px 34px rgba(72,51,25,.12);
}

#shooting-event-root .shooting-countdown span.ready-pop{
  animation:shootingReadyCopy 1.18s cubic-bezier(.22,.61,.36,1) both;
}
#shooting-event-root .shooting-countdown span.start-pop{
  animation:shootingStartCopy .98s cubic-bezier(.16,.84,.32,1) both;
}

@keyframes shootingReadyCopy{
  0%{opacity:0;transform:translateY(7px) scale(.985);filter:blur(3px)}
  24%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}
  72%{opacity:1;transform:translateY(0) scale(1)}
  100%{opacity:0;transform:translateY(-4px) scale(1.01);filter:blur(1.5px)}
}
@keyframes shootingReadyLine{
  0%{opacity:0;transform:translateX(-50%) scaleX(0)}
  28%{opacity:.78;transform:translateX(-50%) scaleX(1)}
  72%{opacity:.54;transform:translateX(-50%) scaleX(.92)}
  100%{opacity:0;transform:translateX(-50%) scaleX(.45)}
}
@keyframes shootingStartCopy{
  0%{opacity:0;transform:scale(1.42);filter:blur(5px);letter-spacing:.42em}
  24%{opacity:1;transform:scale(1);filter:blur(0)}
  68%{opacity:1;transform:scale(1.015)}
  100%{opacity:0;transform:scale(.94);filter:blur(1px)}
}


/* ============================================================
   ALL STAGES — VICTORY CEREMONY
   クリア条件達成 → STAGE CLEAR → RESULT
   ARE YOU READY と同じ「浮かぶ / ピント / 余韻 / 消える」演出言語。
   ============================================================ */
#shooting-event-root .shooting-clear-condition-achieved{
  position:absolute;
  z-index:148;
  left:0;
  right:0;
  top:50%;
  transform:translateY(-50%);
  display:grid;
  grid-template-columns:minmax(18px,1fr) auto minmax(18px,1fr);
  align-items:center;
  gap:14px;
  padding:28px 16px;
  pointer-events:none;
  opacity:0;
  background:radial-gradient(circle at 50% 50%,rgba(255,253,246,.24) 0%,rgba(255,253,246,.08) 35%,rgba(255,253,246,0) 68%);
  filter:none;
  transition:opacity .22s ease;
}
#shooting-event-root .shooting-clear-condition-achieved.show{opacity:1;filter:none;transform:translateY(-50%)}
#shooting-event-root .shooting-clear-condition-achieved.step-out{opacity:1;filter:none;transform:translateY(-50%)}
#shooting-event-root .shooting-clear-condition-achieved.sequence-out{opacity:0;transition:opacity .58s ease}

#shooting-event-root .shooting-clear-condition-achieved-line{
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(174,135,65,.62));
  opacity:0;
  transform:scaleX(0);
  transform-origin:right center;
}
#shooting-event-root .shooting-clear-condition-achieved-line:last-child{
  transform:scaleX(0) scaleX(-1);
  transform-origin:left center;
}
#shooting-event-root .shooting-clear-condition-achieved.condition-phase .shooting-clear-condition-achieved-line,
#shooting-event-root .shooting-clear-condition-achieved.stage-clear-phase .shooting-clear-condition-achieved-line{
  animation:shootingVictoryLine 1.22s cubic-bezier(.22,.61,.36,1) both;
}

#shooting-event-root .shooting-clear-condition-achieved-copy{
  min-width:190px;
  text-align:center;
  text-shadow:none;
}
#shooting-event-root .shooting-clear-condition-achieved-copy small{display:none!important}
#shooting-event-root .shooting-clear-condition-achieved-copy strong{
  display:block;
  margin:0;
  font-weight:500;
  white-space:nowrap;
  text-shadow:0 1px 0 rgba(255,255,255,.98),0 0 18px rgba(223,191,122,.36),0 12px 34px rgba(72,51,25,.11);
}
#shooting-event-root .shooting-clear-condition-achieved.condition-phase strong{
  font-family:"Noto Serif JP",serif;
  font-size:clamp(18px,5.7vw,25px);
  letter-spacing:.18em;
  text-indent:.18em;
  color:#665238;
}
#shooting-event-root .shooting-clear-condition-achieved.stage-clear-phase strong{
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:clamp(25px,7.6vw,38px);
  font-weight:600;
  letter-spacing:.24em;
  text-indent:.24em;
  color:#946923;
  text-shadow:0 1px 0 rgba(255,255,255,1),0 0 12px rgba(232,190,89,.54),0 0 27px rgba(213,159,56,.24),0 14px 34px rgba(72,51,25,.10);
}
#shooting-event-root .shooting-clear-condition-achieved-copy strong.ceremony-pop{
  animation:shootingVictoryCopy 1.20s cubic-bezier(.22,.61,.36,1) both;
}
#shooting-event-root .shooting-clear-condition-achieved.stage-clear-phase .shooting-clear-condition-achieved-copy strong.ceremony-pop{
  animation:shootingStageClearCopy 1.34s cubic-bezier(.16,.84,.32,1) both;
}

@keyframes shootingVictoryCopy{
  0%{opacity:0;transform:translateY(7px) scale(.985);filter:blur(3px)}
  24%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}
  72%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}
  100%{opacity:0;transform:translateY(-4px) scale(1.01);filter:blur(1.5px)}
}
@keyframes shootingStageClearCopy{
  0%{opacity:0;transform:scale(1.22);filter:blur(4px);letter-spacing:.34em}
  22%{opacity:1;transform:scale(1);filter:blur(0)}
  72%{opacity:1;transform:scale(1.012);filter:blur(0)}
  100%{opacity:0;transform:scale(.97);filter:blur(1.2px)}
}
@keyframes shootingVictoryLine{
  0%{opacity:0;transform:scaleX(0)}
  28%{opacity:.76;transform:scaleX(1)}
  72%{opacity:.50;transform:scaleX(.92)}
  100%{opacity:0;transform:scaleX(.42)}
}
#shooting-event-root .shooting-clear-condition-achieved-line:last-child{
  animation-direction:normal;
}

@media(max-width:360px){
  #shooting-event-root .shooting-clear-condition-achieved{gap:9px;padding-left:10px;padding-right:10px}
  #shooting-event-root .shooting-clear-condition-achieved-copy{min-width:170px}
}


/* ============================================================
   Unified back button / high score readability
   ============================================================ */
#shooting-event-root .shooting-hud{
  gap:8px;
}

#shooting-event-root .shooting-back,
#shooting-event-root .shooting-special-stage-back{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  width:auto;
  min-width:auto;
  height:32px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:#8a7651;
  font-family:"Noto Serif JP",serif;
  font-size:14px;
  font-weight:500;
  letter-spacing:.04em;
  line-height:1;
  text-decoration:none;
}
#shooting-event-root .shooting-back:active,
#shooting-event-root .shooting-special-stage-back:active{
  opacity:.65;
  transform:none;
}
#shooting-event-root .shooting-faceless-stage-header{
  align-items:center;
}
#shooting-event-root .shooting-faceless-stage-title{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  width:max-content;
  max-width:calc(100% - 160px);
  text-align:center;
  pointer-events:none;
}
#shooting-event-root .shooting-score{
  font-size:12px;
  letter-spacing:.16em;
}
#shooting-event-root .shooting-score.is-high-score{
  font-size:13px;
  letter-spacing:.16em;
  color:#9a7536;
  font-weight:600;
  text-shadow:0 1px 0 rgba(255,255,255,.90);
}
@media(max-width:380px){
  #shooting-event-root .shooting-back,
  #shooting-event-root .shooting-special-stage-back{font-size:13px}
  #shooting-event-root .shooting-score{font-size:11px;letter-spacing:.12em}
  #shooting-event-root .shooting-score.is-high-score{font-size:12px}
}


/* ============================================================
   Responsive shooting top header — stable on narrow/wide devices
   ============================================================ */
#shooting-event-root .shooting-hud{
  display:grid !important;
  grid-template-columns:max-content minmax(0,1fr) max-content;
  align-items:center;
  column-gap:clamp(6px,2.4vw,12px);
  height:72px;
  padding:10px clamp(10px,3.8vw,16px) 11px;
}

#shooting-event-root .shooting-back{
  grid-column:1;
  margin:0;
  flex:none;
  white-space:nowrap;
  font-size:clamp(11px,3.35vw,14px);
  letter-spacing:.02em;
}

#shooting-event-root .shooting-hud-title{
  grid-column:2;
  min-width:0;
  margin:0 !important;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  line-height:1.08;
  overflow:hidden;
}
#shooting-event-root .shooting-hud-title > span{
  display:block;
  width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:clamp(6px,1.9vw,8px);
  letter-spacing:clamp(.13em,.6vw,.22em);
}
#shooting-event-root .shooting-hud-title > strong{
  width:100%;
  min-width:0;
  margin-top:4px;
  display:flex;
  align-items:baseline;
  justify-content:center;
  gap:clamp(3px,1vw,6px);
  overflow:hidden;
  white-space:nowrap;
  font-size:clamp(12px,3.65vw,15px);
  letter-spacing:clamp(.03em,.35vw,.08em);
}
#shooting-event-root #shooting-hud-difficulty{
  flex:0 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:clip;
  white-space:nowrap;
  font-size:clamp(6px,2vw,9px);
  letter-spacing:.02em;
}

#shooting-event-root .shooting-score{
  grid-column:3;
  min-width:0;
  margin:0 !important;
  justify-self:end;
  text-align:right;
  white-space:nowrap;
  font-size:clamp(9px,2.65vw,12px);
  letter-spacing:clamp(.08em,.45vw,.14em);
  font-variant-numeric:tabular-nums;
}
#shooting-event-root .shooting-score.is-high-score{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  justify-content:center;
  gap:2px;
  min-width:clamp(76px,23vw,108px);
  font-size:inherit;
  line-height:1;
}
#shooting-event-root .shooting-high-score-label{
  display:block;
  font-family:"Cinzel",serif;
  font-size:clamp(9px,2.75vw,12px);
  font-weight:600;
  line-height:1;
  letter-spacing:clamp(.09em,.5vw,.16em);
  white-space:nowrap;
}
#shooting-event-root .shooting-high-score-value{
  display:block;
  margin-top:2px;
  font-family:"Cinzel",serif;
  font-size:clamp(11px,3.15vw,14px);
  font-weight:500;
  line-height:1;
  letter-spacing:clamp(.15em,.75vw,.24em);
  color:#8f6b31;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}

/* かなり狭い端末では中央を優先しつつ、左右を一段だけ縮小 */
@media(max-width:340px){
  #shooting-event-root .shooting-hud{
    column-gap:5px;
    padding-left:8px;
    padding-right:8px;
  }
  #shooting-event-root .shooting-back{font-size:11px}
  #shooting-event-root .shooting-score.is-high-score{min-width:72px}
  #shooting-event-root .shooting-high-score-label{font-size:8px;letter-spacing:.07em}
  #shooting-event-root .shooting-high-score-value{font-size:11px;letter-spacing:.12em}
  #shooting-event-root .shooting-hud-title > strong{font-size:12px;gap:2px}
  #shooting-event-root #shooting-hud-difficulty{font-size:6px}
}

/* 横幅に余裕がある端末では少しだけ堂々と見せる */
@media(min-width:410px){
  #shooting-event-root .shooting-hud{
    grid-template-columns:minmax(54px,max-content) minmax(0,1fr) minmax(102px,max-content);
  }
  #shooting-event-root .shooting-hud-title > strong{font-size:15px}
  #shooting-event-root .shooting-high-score-label{font-size:12px}
  #shooting-event-root .shooting-high-score-value{font-size:14px}
}


/* ============================================================
   SPECIAL STAGE RECORDS — CLEAR / RANK / HIGH SCORE
   CHAPTER一覧と同じ淡い金・ベージュの情報密度に統一。
   ============================================================ */
.shooting-special-stage-status-set{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:7px;
}
.shooting-special-stage-clear-state{
  font-family:"Cinzel",serif;
  font-size:7px;
  letter-spacing:.18em;
  color:rgba(125,105,70,.52);
}
.shooting-special-stage-clear-state.is-cleared{
  color:#ad8537;
}
.shooting-special-stage-rank-chip{
  display:inline-flex;
  align-items:baseline;
  gap:4px;
  padding-left:7px;
  border-left:1px solid rgba(126,105,70,.12);
  font-family:"Cinzel",serif;
}
.shooting-special-stage-rank-chip small{
  font-size:6px;
  letter-spacing:.12em;
  color:rgba(112,96,70,.48);
}
.shooting-special-stage-rank-chip b{
  min-width:11px;
  text-align:right;
  font-size:12px;
  font-weight:600;
  color:#85735b;
}
.shooting-special-stage-rank-chip.rank-s b{color:#b88b2f}
.shooting-special-stage-rank-chip.rank-a b{color:#a77f3c}
.shooting-special-stage-rank-chip.rank-b b{color:#88735d}
.shooting-special-stage-rank-chip.rank-c b,
.shooting-special-stage-rank-chip.rank-d b,
.shooting-special-stage-rank-chip.rank-e b{color:#7c7469}
.shooting-special-stage-rank-chip.rank-none b{color:rgba(112,101,83,.34)}
.shooting-special-stage-meta-row{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px;
  margin-top:4px;
}
.shooting-special-stage-high-score{
  margin-left:auto;
  display:inline-flex;
  align-items:baseline;
  gap:6px;
  font-family:"Cinzel",serif;
  white-space:nowrap;
}
.shooting-special-stage-high-score span{
  font-size:6px;
  letter-spacing:.13em;
  color:rgba(113,96,70,.48);
}
.shooting-special-stage-high-score b{
  font-size:9px;
  font-weight:500;
  letter-spacing:.08em;
  color:rgba(91,75,51,.78);
  font-variant-numeric:tabular-nums;
}

/* =========================================================
   BOSS DANGER ATTACK - WARNING / one-hit DOWN projectile
   ========================================================= */
.shooting-boss-danger-warning{
  position:absolute;
  z-index:95;
  left:50%;
  top:48%;
  width:min(92vw,560px);
  transform:translate(-50%,-50%) scale(.96);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:18px 28px 16px;
  pointer-events:none;
  opacity:0;
  border-top:2px solid rgba(255,72,60,.92);
  border-bottom:2px solid rgba(255,72,60,.92);
  background:linear-gradient(90deg,rgba(15,0,4,0),rgba(48,4,8,.90) 18%,rgba(20,0,3,.96) 50%,rgba(48,4,8,.90) 82%,rgba(15,0,4,0));
  box-shadow:0 0 38px rgba(210,20,35,.28),inset 0 0 30px rgba(255,35,50,.10);
  transition:opacity .12s ease,transform .12s ease;
}
.shooting-boss-danger-warning.show{opacity:1;transform:translate(-50%,-50%) scale(1);animation:shootingDangerWarningPulse .42s steps(2,end) infinite}
.shooting-boss-danger-warning span{
  font-family:"Cinzel",serif;
  font-size:28px;
  line-height:1;
  font-weight:800;
  letter-spacing:.20em;
  color:#fff4df;
  text-shadow:0 0 5px #fff,0 0 14px #ff6b4b,0 0 26px #ff173d;
}
.shooting-boss-danger-warning strong{font-family:"Cinzel",serif;font-size:12px;letter-spacing:.38em;color:#ff5968;text-shadow:0 0 10px rgba(255,20,50,.78)}
.shooting-boss-danger-warning small{margin-top:3px;font-size:10px;letter-spacing:.12em;color:rgba(255,235,225,.90)}
#shooting-event-root.boss-danger-active .shooting-arena::after{
  content:'';
  position:absolute;
  z-index:70;
  inset:0;
  pointer-events:none;
  border:3px solid rgba(255,32,50,.52);
  box-shadow:inset 0 0 52px rgba(205,0,28,.24),inset 0 0 120px rgba(90,0,15,.12);
  animation:shootingDangerScreenPulse .42s steps(2,end) infinite;
}
.shooting-danger-bullet{
  width:34px!important;
  height:34px!important;
  z-index:18!important;
  opacity:1!important;
  border:2px solid rgba(255,225,185,.95)!important;
  background:radial-gradient(circle at 42% 38%,#fff6cf 0 7%,#ffca58 10% 18%,#ff3b35 22% 38%,#9f001b 44% 60%,#220009 66% 78%,rgba(5,0,3,.06) 82% 100%)!important;
  box-shadow:0 0 0 4px rgba(255,45,45,.16),0 0 16px rgba(255,210,90,.95),0 0 32px rgba(255,35,45,.92),0 0 58px rgba(170,0,30,.78)!important;
  animation:shootingDangerBulletPulse .28s ease-in-out infinite alternate!important;
}
.shooting-danger-bullet::before{
  content:''!important;
  position:absolute!important;
  inset:-17px!important;
  border:2px solid rgba(255,62,55,.78)!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:0 0 18px rgba(255,42,48,.68),inset 0 0 15px rgba(255,118,50,.20)!important;
  filter:none!important;
  animation:shootingDangerRing .52s ease-out infinite!important;
}
.shooting-danger-bullet::after{
  content:'!'!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:auto!important;
  height:auto!important;
  margin:0!important;
  transform:translate(-50%,-53%)!important;
  background:transparent!important;
  color:#fff8dd!important;
  font:900 17px/1 sans-serif!important;
  text-shadow:0 0 4px #fff,0 0 9px #ffbc49!important;
  box-shadow:none!important;
}
@keyframes shootingDangerWarningPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.35)}}
@keyframes shootingDangerScreenPulse{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes shootingDangerBulletPulse{from{filter:brightness(1) saturate(1)}to{filter:brightness(1.45) saturate(1.35)}}
@keyframes shootingDangerRing{0%{opacity:1;transform:scale(.72)}100%{opacity:0;transform:scale(1.45)}}

/* ============================================================
   Battle notices v9 — TEXT ONLY / bullet-visibility first
   ULT activation cut-ins are intentionally NOT changed here.
   ============================================================ */

/* ULT READY: no band, no panel, no border. */
#shooting-event-root .shooting-ult-ready-notice{
  width:auto !important;
  max-width:88vw !important;
  min-width:0 !important;
  padding:0 !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  filter:none;
}
#shooting-event-root .shooting-ult-ready-notice::before,
#shooting-event-root .shooting-ult-ready-notice::after{
  content:none !important;
  display:none !important;
}
#shooting-event-root .shooting-ult-ready-notice.hayate,
#shooting-event-root .shooting-ult-ready-notice.ayane{
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
}
#shooting-event-root .shooting-ult-ready-notice span{
  font-size:10px;
  font-weight:700;
  color:#b0802f;
  text-shadow:0 1px 2px rgba(255,255,255,.98),0 0 7px rgba(255,247,220,.92);
}
#shooting-event-root .shooting-ult-ready-notice strong{
  margin-top:2px;
  font-size:21px;
  font-weight:700;
  color:#57401e;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 7px rgba(255,255,255,.98),0 0 12px rgba(230,188,92,.46);
}
#shooting-event-root .shooting-ult-ready-notice small{
  margin-top:3px;
  color:#715b38;
  font-weight:600;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 6px rgba(255,255,255,.94);
}

/* ULT FULL: text only. Keep the existing quick entrance/exit motion. */
#shooting-event-root .shooting-ult-full-notice{
  width:auto !important;
  min-width:0 !important;
  max-width:90vw !important;
  padding:0 !important;
  gap:3px !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}
#shooting-event-root .shooting-ult-full-notice::before,
#shooting-event-root .shooting-ult-full-notice::after{
  content:none !important;
  display:none !important;
}
#shooting-event-root .shooting-ult-full-notice span{
  font-size:19px;
  font-weight:800;
  color:#a56f18;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 7px rgba(255,255,255,.98),0 0 13px rgba(225,175,70,.50);
}
#shooting-event-root .shooting-ult-full-notice small{
  font-size:10px;
  font-weight:700;
  color:#6e5733;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 6px rgba(255,255,255,.96);
}

/* Item effect notices: text only. */
#shooting-event-root .shooting-item-effect-notice{
  width:auto !important;
  max-width:88vw !important;
  min-width:0 !important;
  padding:0 !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}
#shooting-event-root .shooting-item-effect-notice::before,
#shooting-event-root .shooting-item-effect-notice::after{
  content:none !important;
  display:none !important;
}
#shooting-event-root .shooting-item-effect-notice span{
  font-weight:700;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 7px rgba(255,255,255,.96);
}
#shooting-event-root .shooting-item-effect-notice strong{
  font-weight:700;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 7px rgba(255,255,255,.98),0 0 12px rgba(226,185,92,.42);
}
#shooting-event-root .shooting-item-effect-notice small{
  font-weight:600;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 6px rgba(255,255,255,.94);
}

/* Faceless wave/object announcements: text only. */
#shooting-event-root .shooting-faceless-battle-cut{
  min-width:0 !important;
  width:auto !important;
  max-width:90vw !important;
  padding:0 !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  color:#fff !important;
  text-shadow:0 2px 3px rgba(0,0,0,.96),0 0 8px rgba(0,0,0,.82),0 0 14px rgba(0,0,0,.55) !important;
}
#shooting-event-root .shooting-faceless-battle-cut::before,
#shooting-event-root .shooting-faceless-battle-cut::after{
  content:none !important;
  display:none !important;
}
#shooting-event-root .shooting-faceless-battle-cut strong{
  font-weight:700;
}

/* BOSS WARNING: only typography. No dark/red band and no screen-edge overlay. */
#shooting-event-root .shooting-boss-danger-warning{
  width:auto !important;
  max-width:92vw !important;
  min-width:0 !important;
  padding:0 !important;
  gap:2px !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
}
#shooting-event-root .shooting-boss-danger-warning::before,
#shooting-event-root .shooting-boss-danger-warning::after{
  content:none !important;
  display:none !important;
}
#shooting-event-root .shooting-boss-danger-warning.show{
  animation:shootingDangerTextOnly .72s cubic-bezier(.16,.8,.2,1) both !important;
}
#shooting-event-root .shooting-boss-danger-warning span{
  font-size:30px;
  font-weight:900;
  letter-spacing:.24em;
  color:#ff3348!important;
  text-shadow:0 1px 2px rgba(80,0,8,.98),0 0 10px rgba(255,36,55,.92),0 0 20px rgba(210,0,30,.72)!important;
}
#shooting-event-root .shooting-boss-danger-warning strong{
  font-size:11px;
  font-weight:800;
  color:#ff5262;
  text-shadow:0 1px 2px rgba(50,0,8,.98),0 0 9px rgba(255,23,55,.88);
}
#shooting-event-root .shooting-boss-danger-warning small{
  font-size:9px;
  font-weight:700;
  color:#fff1e8;
  text-shadow:0 1px 3px rgba(40,0,5,1),0 0 7px rgba(120,0,16,.92);
}

/* Remove the full-screen red frame/glow. It can hide dense bullet patterns. */
#shooting-event-root.boss-danger-active .shooting-arena::after{
  content:none !important;
  display:none !important;
  border:0 !important;
  box-shadow:none !important;
  animation:none !important;
}

@keyframes shootingDangerTextOnly{
  0%{opacity:0;transform:translate(-50%,-50%) translateY(8px) scale(.94);filter:blur(4px)}
  20%{opacity:1;transform:translate(-50%,-50%) translateY(0) scale(1.035);filter:blur(0)}
  42%{transform:translate(-50%,-50%) scale(1)}
  72%{opacity:1}
  100%{opacity:.92;transform:translate(-50%,-50%) translateY(-2px) scale(1)}
}


/* ===== 2026-08-16 start sequence / ULT FULL single-line patch ===== */
#shooting-event-root .shooting-ult-full-notice,
#shooting-event-root .shooting-ult-full-notice span{
  white-space:nowrap!important;
  word-break:keep-all!important;
}
#shooting-event-root .shooting-ult-full-notice span{
  display:block!important;
  width:max-content!important;
  max-width:94vw!important;
  font-size:clamp(16px,4.8vw,28px)!important;
}
/* 旧スタート案内カードは使用しない。開始演出は ARE YOU READY → 3 → 2 → 1 → START のみ。 */
#shooting-event-root .shooting-start-copy{display:none!important;}


/* ===== GAME OVER: battle visibility first / text only ===== */
#shooting-event-root .shooting-game-over-notice{
  position:absolute;
  z-index:94;
  left:50%;
  top:47%;
  transform:translate(-50%,-50%) scale(.94);
  opacity:0;
  pointer-events:none;
  white-space:nowrap;
  background:none!important;
  border:0!important;
  padding:0!important;
  font-family:"Cinzel",serif;
  font-size:clamp(34px,8vw,72px);
  font-weight:700;
  line-height:1;
  letter-spacing:.18em;
  color:#f5eee8;
  text-shadow:0 2px 2px rgba(38,10,12,.9),0 0 8px rgba(150,20,30,.92),0 0 22px rgba(110,0,12,.58);
  transition:opacity .14s ease-out,transform .22s cubic-bezier(.2,.8,.2,1);
}
#shooting-event-root .shooting-game-over-notice.show{
  opacity:1;
  transform:translate(-50%,-50%) scale(1);
  animation:shootingGameOverIn 2.35s ease-out both;
}
@keyframes shootingGameOverIn{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.88);letter-spacing:.32em}
  14%{opacity:1;transform:translate(-50%,-50%) scale(1.025)}
  20%,78%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(.985)}
}

/* ===== SUPER FACELESS WARNING RICOCHET ===== */
.shooting-danger-bullet.ricochet{animation:shootingDangerRicochet .18s ease-out}
@keyframes shootingDangerRicochet{
  0%{filter:brightness(2.2) saturate(1.45);transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(1.28)}
  100%{filter:none;transform:translate3d(var(--unit-x,0),var(--unit-y,0),0) translate(-50%,-50%) scale(1)}
}


/* CH03-04 リヴィア：8秒漂流する即死弾 */
#shooting-event-root .shooting-livia-danger-drift{
  animation:shootingLiviaDangerDriftPulse 1.15s ease-in-out infinite;
}
@keyframes shootingLiviaDangerDriftPulse{
  0%,100%{filter:brightness(.92);}
  50%{filter:brightness(1.28);}
}

/* ============================================================
   LIMITED BATTLE TIMER v1
   制限時間のあるステージだけ戦闘中に常時表示。
   ============================================================ */
.shooting-battle-timer{
  position:absolute;z-index:39;top:80px;right:13px;
  min-width:74px;height:38px;padding:4px 9px 3px;
  display:none;flex-direction:column;align-items:flex-end;justify-content:center;
  border-right:2px solid rgba(139,111,61,.46);
  background:linear-gradient(90deg,rgba(251,248,239,0),rgba(251,248,239,.64));
  pointer-events:none;text-shadow:0 1px 0 rgba(255,255,255,.94);
}
.shooting-battle-timer.show{display:flex}
.shooting-battle-timer small{font-family:"Cinzel",serif;font-size:6px;line-height:1;letter-spacing:.25em;color:#9d8962}
.shooting-battle-timer strong{font-family:"Cinzel",serif;font-size:18px;line-height:1.05;letter-spacing:.08em;font-weight:600;color:#665436;font-variant-numeric:tabular-nums}
.shooting-battle-timer.is-warning{border-right-color:rgba(172,112,49,.76)}
.shooting-battle-timer.is-warning strong{color:#9d632f}
.shooting-battle-timer.is-danger{border-right-color:rgba(163,50,43,.88);animation:shootingTimerDangerPulse .62s ease-in-out infinite alternate}
.shooting-battle-timer.is-danger strong{color:#a23f37}
@keyframes shootingTimerDangerPulse{from{opacity:.62;transform:scale(1)}to{opacity:1;transform:scale(1.045)}}
#shooting-event-root:has(.shooting-character-select.show) .shooting-battle-timer,
#shooting-event-root:not(.battle-hud-visible) .shooting-battle-timer{display:none!important}






/* PARTY SELECT: independent info button + in-shooting detail panel v25 */
.shooting-party-roster .shooting-character-option-wrap{
  position:relative;
  min-width:0;
}
.shooting-party-roster .shooting-character-option-wrap .shooting-character-option{
  width:100%;
  height:100%;
}
.shooting-party-roster .shooting-character-info-button{
  position:absolute;
  z-index:20;
  top:8px;
  right:8px;
  width:28px;
  height:28px;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(126,100,57,.56);
  border-radius:50%;
  background:rgba(255,253,247,.97);
  color:#725735;
  font-family:Georgia,"Times New Roman",serif;
  font-size:15px;
  font-weight:700;
  line-height:1;
  box-shadow:0 2px 8px rgba(74,53,24,.22);
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
  cursor:pointer;
}
.shooting-party-roster .shooting-character-info-button:active{
  transform:scale(.9);
  background:#efe0bc;
}

.shooting-character-info-overlay{
  display:none;
  position:absolute;
  inset:0;
  z-index:120;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:rgba(238,233,222,.84);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  opacity:0;
  transition:opacity .16s ease;
}
.shooting-character-info-overlay.show{opacity:1}
.shooting-character-info-panel{
  position:relative;
  width:min(350px,92vw);
  max-height:82vh;
  overflow-y:auto;
  padding:20px 18px 18px;
  border:1px solid rgba(151,121,69,.34);
  border-radius:12px;
  background:linear-gradient(180deg,#fffdf8,#f4ecdd);
  color:#55442e;
  box-shadow:0 20px 60px rgba(72,52,27,.22);
}
.shooting-character-info-close{
  position:absolute;
  z-index:2;
  right:10px;
  top:8px;
  width:34px;
  height:34px;
  border:0;
  background:transparent;
  color:#806947;
  font-size:25px;
  line-height:1;
}
.shooting-character-info-head{
  display:flex;
  align-items:center;
  gap:13px;
  padding-right:28px;
}
.shooting-character-info-head img{
  width:88px;
  height:88px;
  flex:0 0 88px;
  object-fit:cover;
  object-position:center;
  border:1px solid rgba(151,121,69,.22);
  border-radius:8px;
  background:#f7f3ea;
}
.shooting-character-info-head>div{
  display:flex;
  min-width:0;
  flex-direction:column;
}
.shooting-character-info-head small,
.shooting-character-info-section small{
  font-family:"Cinzel",serif;
  font-size:7px;
  letter-spacing:.18em;
  color:#9c8051;
}
.shooting-character-info-head strong{
  margin-top:4px;
  font-size:18px;
  font-weight:600;
  letter-spacing:.08em;
  color:#57452d;
}
.shooting-character-info-stats{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-top:15px;
}
.shooting-character-info-stats>div{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  padding:9px 11px;
  border:1px solid rgba(151,121,69,.16);
  border-radius:8px;
  background:rgba(255,255,255,.55);
}
.shooting-character-info-stats span{
  font-family:"Cinzel",serif;
  font-size:8px;
  letter-spacing:.14em;
  color:#92774b;
}
.shooting-character-info-stats b{
  font-family:"Cinzel",serif;
  font-size:16px;
  color:#55432b;
}
.shooting-character-info-section{
  margin-top:10px;
  padding:11px 12px;
  border:1px solid rgba(151,121,69,.14);
  border-radius:8px;
  background:rgba(255,255,255,.5);
}
.shooting-character-info-section strong{
  display:block;
  margin-top:4px;
  font-size:11px;
  font-weight:600;
  color:#604c31;
}
.shooting-character-info-section p{
  margin-top:6px;
  font-size:10px;
  line-height:1.7;
  color:#79684f;
}


/* CLAUDE PERF BASE + RAID CAP v27: core-side bullet caps are in shooting_core.js */


/* ============================================================
   TEST-CHAN / id:50
   3WAY green laser + ULT BLACK SHIP
   ============================================================ */
.shooting-bullet-testchan{
  width:8px!important;
  height:38px!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,#effff3 0%,#83f5a0 22%,#22ba58 72%,#0b6d32 100%)!important;
  box-shadow:0 0 5px rgba(60,238,111,.72),0 0 12px rgba(33,183,82,.34)!important;
}
.shooting-bullet-testchan::after{
  content:"";
  position:absolute;
  left:50%;
  top:1px;
  width:2px;
  height:34px;
  transform:translateX(-50%);
  border-radius:999px;
  background:rgba(244,255,247,.92);
}
.shooting-testchan-blackship-beam{
  position:absolute;
  left:0;
  top:0;
  z-index:11;
  width:62px;
  height:200px;
  pointer-events:none;
  transform-origin:center bottom;
  /* build566: 敵弾をレーザー越しに視認できるよう透明度を上げる。 */
  opacity:.58;
  background:
    linear-gradient(90deg,
      transparent 0%,
      rgba(27,166,72,.10) 8%,
      rgba(70,242,116,.46) 24%,
      rgba(239,255,242,.68) 44%,
      rgba(255,255,255,.72) 50%,
      rgba(239,255,242,.68) 56%,
      rgba(70,242,116,.46) 76%,
      rgba(27,166,72,.10) 92%,
      transparent 100%);
  box-shadow:0 0 14px rgba(40,222,94,.42),0 0 28px rgba(24,166,69,.24);
  will-change:transform,height;
  animation:testchanBlackShipPulse .15s ease-in-out infinite alternate;
}
.shooting-testchan-blackship-beam i{
  position:absolute;
  inset:0 42%;
  background:rgba(247,255,248,.72);
  box-shadow:0 0 9px rgba(255,255,255,.62);
}
.shooting-testchan-blackship-beam.ending{opacity:0;transition:opacity .18s ease}
@keyframes testchanBlackShipPulse{
  from{filter:brightness(.95)}
  to{filter:brightness(1.15)}
}


/* =========================================================
   DAILY RAID - green linear laser
   ========================================================= */
#shooting-event-root[data-shooting-stage="shooting_raid_test"] .shooting-raid-green-laser{
  width:270px!important;
  height:5px!important;
  border-radius:999px!important;
  background:linear-gradient(90deg,rgba(88,255,145,0),rgba(67,255,126,.88) 10%,#eaffef 50%,rgba(50,244,112,.96) 90%,rgba(62,255,127,0))!important;
  box-shadow:0 0 5px rgba(226,255,234,.98),0 0 13px rgba(54,255,126,.90),0 0 26px rgba(24,205,94,.62)!important;
  opacity:.98!important;
  transform-origin:50% 50%;
}
#shooting-event-root[data-shooting-stage="shooting_raid_test"] .shooting-raid-green-laser::before{
  content:''!important;
  position:absolute!important;
  inset:-3px -8px!important;
  border-radius:999px!important;
  background:linear-gradient(90deg,transparent,rgba(76,255,143,.24),transparent)!important;
  filter:blur(3px)!important;
}
#shooting-event-root[data-shooting-stage="shooting_raid_test"] .shooting-raid-green-laser::after{
  content:''!important;
  position:absolute!important;
  left:12%!important;
  right:12%!important;
  top:50%!important;
  width:auto!important;
  height:1px!important;
  margin:0!important;
  transform:translateY(-50%)!important;
  border-radius:999px!important;
  background:rgba(245,255,248,.96)!important;
  box-shadow:0 0 5px rgba(240,255,245,.95)!important;
}


/* =========================================================
   GLOBAL WARNING BULLET - flat red
   WARNING攻撃は通常の弾色・軽量化指定より優先して赤単色に固定。
   発光/ぼかし/擬似要素は使わず、軽量化を維持する。
   ========================================================= */
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet{
  background:#e33434!important;
  border-color:#ffb0a8!important;
  box-shadow:none!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:1!important;
}
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::before,
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::after,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet::before,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet::after{
  content:none!important;
  display:none!important;
}

/* ============================================================
   Shooting RESULT reward drop v46
   ============================================================ */
.shooting-result-rewards{margin:-7px 0 14px;padding:10px 0 0;border-top:1px solid rgba(154,125,74,.22);text-align:left}
.shooting-result-reward-head{display:flex;align-items:baseline;gap:8px;margin:0 2px 8px}
.shooting-result-reward-head span{font-family:"Cinzel",serif;font-size:8px;letter-spacing:.24em;color:#a18858}
.shooting-result-reward-head strong{font-size:12px;font-weight:500;letter-spacing:.12em;color:#665132}
.shooting-result-reward-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.shooting-result-reward-item{min-width:0;min-height:76px;padding:8px 5px 7px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;border:1px solid rgba(154,125,74,.18);background:linear-gradient(180deg,rgba(255,255,255,.68),rgba(240,231,211,.42));box-shadow:inset 0 1px 0 rgba(255,255,255,.8);text-align:center}
.shooting-result-reward-icon{width:31px;height:31px;display:flex;align-items:center;justify-content:center;margin-bottom:4px}
.shooting-result-reward-icon img{display:block;max-width:31px;max-height:31px;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(76,58,30,.16))}
.shooting-result-reward-copy{display:block;min-width:0;width:100%;line-height:1.1}
.shooting-result-reward-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;font-weight:500;color:#665438}
.shooting-result-reward-copy small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px;color:#9a8663}
.shooting-result-reward-item>strong{display:block;margin-top:4px;font-family:"Cinzel",serif;font-size:12px;font-weight:600;color:#7b6138}
.shooting-result-reward-gem>strong{color:#765ea0}
.shooting-result-reward-note{display:block;margin-top:6px;text-align:right;font-size:7px;letter-spacing:.04em;color:#a09178}
@media (max-height:760px){
  .shooting-result-card{max-height:97vh;overflow-y:auto;padding-top:17px;padding-bottom:14px}
  .shooting-result-rank-wrap{margin:7px 0}
  .shooting-result-rank{font-size:58px}
  .shooting-result-rank[data-rank="S"]{font-size:64px}
  .shooting-result-stats{margin-bottom:12px}
  .shooting-result-breakdown{margin-bottom:12px}
  .shooting-result-detail-row{min-height:45px;padding-top:5px;padding-bottom:5px}
  .shooting-result-reward-item{min-height:66px;padding-top:6px;padding-bottom:5px}
  .shooting-result-reward-icon{width:27px;height:27px}
  .shooting-result-reward-icon img{max-width:27px;max-height:27px}
}

/* ============================================================
   CHAPTER 04 - 美しい弾幕 / ultra-light colorful v2
   単色ベタ塗りにはせず、gradientだけで華やかさを作る。
   filter / backdrop-filter / 多重blurは使わず軽量維持。
   WARNINGはこの配色より常に赤指定が優先される。
   ============================================================ */
.shooting-enemy-bullet.shooting-beautiful-bullet{
  width:9px;
  height:9px;
  border-radius:50%;
  background:linear-gradient(135deg,#fff7ff 0%,#a9ddff 34%,#b69cff 67%,#ffb9dd 100%);
  border:1px solid rgba(255,255,255,.72);
  box-shadow:0 0 4px rgba(164,190,255,.56);
  filter:none;
  opacity:.94;
}
.shooting-enemy-bullet.shooting-beautiful-wave{
  width:9px;
  height:9px;
  background:linear-gradient(135deg,#faffff 0%,#98f0dc 38%,#8fc7ff 70%,#d2a8ff 100%);
  box-shadow:0 0 4px rgba(134,224,218,.52);
}
.shooting-enemy-bullet.shooting-beautiful-spiral{
  box-shadow:0 0 4px rgba(166,184,255,.58);
}
.shooting-enemy-bullet.shooting-beautiful-tone-1{
  background:linear-gradient(135deg,#fff6fc 0%,#ffb4d7 42%,#c8a6ff 100%);
}
.shooting-enemy-bullet.shooting-beautiful-tone-2{
  background:linear-gradient(135deg,#f7ffff 0%,#9cebdd 42%,#89c9ff 100%);
}
.shooting-enemy-bullet.shooting-beautiful-tone-3{
  background:linear-gradient(135deg,#fffdf2 0%,#ffe49a 40%,#ffb9c8 72%,#c7a8ff 100%);
}
.shooting-enemy-bullet.shooting-beautiful-tone-4{
  background:linear-gradient(135deg,#f8f5ff 0%,#aab8ff 38%,#b9e6ff 72%,#b8f1dc 100%);
}

/* CH04でもWARNINGだけは例外。必ず赤で固定。 */
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet{
  background:#e33434!important;
  border-color:#ffb0a8!important;
  box-shadow:none!important;
  filter:none!important;
}


/* ============================================================
   CHAPTER 04 v52 - 超軽量・華やか・WARNING赤固定
   ============================================================ */
/* beautiful弾は擬似要素を完全停止。色は4系統gradientで残す。 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet{
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  filter:none!important;
  will-change:transform;
}
/* ボス弾も通常弾と同じ多色ルール。単色化しない。 */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-sakiel-bullet{
  width:9px;
  height:9px;
  border-radius:50%;
  opacity:.96;
}
/* WARNINGは章・phase・toneに関係なく赤。最終定義で固定する。 */
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet[class*="shooting-beautiful-tone-"],
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet{
  background:#e33434!important;
  background-image:none!important;
  border:1px solid #ffb0a8!important;
  box-shadow:none!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::before,
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::after{
  content:none!important;
  display:none!important;
}
/* WARNING文字も赤系固定。 */
#shooting-event-root .shooting-boss-danger-warning span,
#shooting-event-root .shooting-boss-danger-warning strong{
  color:#e33434!important;
  border-color:#e33434!important;
  text-shadow:none!important;
}

/* CH04は「超軽量」優先。gradientによる多色は維持し、発光shadowは切る。 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-wave,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-spiral{
  box-shadow:none!important;
}
/* CH04のボス本体も常時filterを使わない。 */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss{
  filter:none!important;
}
/* CH04イントロは既存の豪華構造を使いつつ重いglitch/noise/scanを停止。 */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-glitch,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-noise,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-scan{
  display:none!important;
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-image{
  filter:none!important;
  animation:shootingBossIntroCameraLite 2.85s ease-out forwards!important;
}
@keyframes shootingBossIntroCameraLite{
  0%{transform:scale(1.055) translate3d(0,1%,0)}
  100%{transform:scale(1.015) translate3d(0,-.5%,0)}
}


/* ============================================================
   CHAPTER 04 v54 — TRUE ULTRA LIGHT / FLAT COLORFUL
   1発の中を装飾しない。弾ごとに色を変えて華やかさを出す。
   WARNINGだけは常に赤固定。
   ============================================================ */

/* CH04全敵弾：装飾処理を完全停止 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-wave,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-spiral,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet{
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  border:0!important;
  box-shadow:none!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:1!important;
}

/* 1発は単純なベタ色。弾幕全体で4色を循環させる */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-tone-1{
  background:#ff77b7!important; /* pink */
  background-image:none!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-tone-2{
  background:#62d9ff!important; /* cyan */
  background-image:none!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-tone-3{
  background:#ffd85f!important; /* yellow */
  background-image:none!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-tone-4{
  background:#a987ff!important; /* violet */
  background-image:none!important;
}

/* 擬似要素は完全停止 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet::after,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet::after{
  content:none!important;
  display:none!important;
}

/* WARNING：何があっても赤。toneクラスより後ろで固定 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-danger-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-danger-bullet[class*="shooting-beautiful-tone-"]{
  background:#ed2f36!important;
  background-image:none!important;
  border:0!important;
  box-shadow:none!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}

/* WARNING文字も赤固定 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss-danger-warning,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss-danger-warning span,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss-danger-warning strong{
  color:#ed2f36!important;
  border-color:#ed2f36!important;
  text-shadow:none!important;
  filter:none!important;
}

/* サキエル本体：常時drop-shadow等を使わない */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss{
  filter:none!important;
}

/* CH04ボスイントロ：画像＋文字＋単純フェードのみ */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-glitch,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-noise,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-scan,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-vignette,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-flash,
#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-line{
  display:none!important;
}

#shooting-event-root:is([data-shooting-stage="shooting_ch04_04"],[data-shooting-stage="shooting_beginner_ch04_04"]) .shooting-boss-intro-image{
  filter:none!important;
  animation:shootingBossIntroCameraUltraLite 2.7s linear forwards!important;
}
@keyframes shootingBossIntroCameraUltraLite{
  from{transform:scale(1.035)}
  to{transform:scale(1.01)}
}


/* ============================================================
   CHAPTER 04 v59 — black curtain barrage + shrinking side walls
   ============================================================ */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-enemy-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mini-enemy-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-wave,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-spiral,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-danger-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-ch04-curtain-bullet{
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  background:#111214!important;
  background-image:none!important;
  border:0!important;
  box-shadow:none!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  opacity:1!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-enemy-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-enemy-bullet::after,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mini-enemy-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mini-enemy-bullet::after,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet::before,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root .shooting-ch04-shrink-wall{
  position:absolute;
  top:0;
  bottom:0;
  width:0;
  z-index:11;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(8,9,10,.92),rgba(16,17,19,.98));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);
}
#shooting-event-root .shooting-ch04-shrink-wall.left{left:0;border-right:1px solid rgba(255,255,255,.08)}
#shooting-event-root .shooting-ch04-shrink-wall.right{right:0;border-left:1px solid rgba(255,255,255,.08)}


/* ============================================================
   CHAPTER 04 v65 — spike barrage / Eri solo / final item
   ============================================================ */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-enemy-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mini-enemy-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-wave,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-beautiful-spiral,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-ch04-curtain-bullet{
  width:12px!important;
  height:16px!important;
  border-radius:0!important;
  background:#111214!important;
  background-image:none!important;
  border:0!important;
  clip-path:polygon(50% 100%,0 0,100% 0)!important;
  box-shadow:none!important;
  filter:none!important;
  opacity:1!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-danger-bullet,
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-sakiel-warning-bullet{
  width:34px!important;
  height:34px!important;
  border-radius:50%!important;
  background:#d92d2d!important;
  background-image:none!important;
  border:2px solid rgba(255,244,244,.55)!important;
  clip-path:none!important;
  box-shadow:0 0 12px rgba(217,45,45,.36)!important;
  filter:none!important;
}
/* CH04: character availability is controlled by JS; no CSS-only Eri lock. */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss-hud{
  display:none!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss{
  width:150px!important;
  height:150px!important;
  filter:none!important;
}
.shooting-ch04-final-item{
  width:36px!important;
  height:36px!important;
  z-index:32!important;
  animation:shootingCh04FinalItemPulse .55s ease-in-out infinite alternate!important;
}
@keyframes shootingCh04FinalItemPulse{
  from{transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(.92)}
  to{transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(1.14)}
}
.shooting-ch04-item-alert{
  position:absolute;
  z-index:48;
  left:50%;
  top:34%;
  transform:translate(-50%,-50%) scale(.94);
  display:flex;
  flex-direction:column;
  align-items:center;
  pointer-events:none;
  opacity:0;
  transition:opacity .16s ease,transform .16s ease;
  text-align:center;
  text-shadow:0 2px 10px rgba(255,255,255,.9);
}
.shooting-ch04-item-alert.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.shooting-ch04-item-alert strong{
  font-family:"Noto Serif JP",serif;
  font-size:32px;
  font-weight:700;
  letter-spacing:.14em;
  color:#5d4b2f;
  white-space:nowrap;
}
.shooting-ch04-item-alert b{
  margin-top:8px;
  font-family:"Cinzel",serif;
  font-size:58px;
  line-height:1;
  font-weight:600;
  color:#8c6b34;
}


/* CHAPTER04 v70: 全3ステージを同じサキエル静止回避戦として表示 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss-hud{display:none!important}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss{width:150px!important;height:150px!important;filter:none!important}

/* ============================================================
   CHAPTER 04 v73 — party guard / full mission / no combo
   CH04 only. Other chapters/events/raid are untouched.
   ============================================================ */

/* build1291: 旧CH04「エリ単独」ガード（キャラ一覧を覆う::after）を撤去。
   CH04の編成制限は shooting_core.js の固定編成表／選択編成表で管理し、
   CLEAR後の再挑戦は自由編成にする。CSS側では一切制限しない。 */

/* バトル中MISSION：省略せず全文を折り返して表示 */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mission-hud{
  grid-template-columns:auto minmax(0,1fr) auto!important;
  align-items:center!important;
  min-height:52px!important;
  padding-top:7px!important;
  padding-bottom:7px!important;
}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mission-hud strong{
  min-width:0!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:pre-line!important;
  word-break:normal!important;
  overflow-wrap:anywhere!important;
  line-height:1.45!important;
  font-size:9px!important;
}

/* CH04は回避専用なのでCOMBO表示を完全に隠す */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-combo{
  display:none!important;
}



/* CHAPTER04 v82: make the 3 pre-start rule lines slightly smaller, all equal size. */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-countdown.chapter4-rule-phase span{
  font-size:clamp(20px,5.8vw,28px)!important;
  letter-spacing:.08em!important;
  text-indent:0!important;
}

/* CHAPTER04 v82: place boss image in front of mission and other HUD text. */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-boss{
  z-index:60!important;
}


/* ============================================================
   CHAPTER04 v84 — hide mission HUD / enlarge time limit display
   CH04 only. Other chapters/events/raid are untouched.
   ============================================================ */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-mission-hud{
  display:none!important;
}

#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-battle-timer{
  min-width:92px!important;
  height:46px!important;
  padding:4px 10px 4px!important;
  top:78px!important;
}

#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-battle-timer small{
  font-size:7px!important;
}

#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-battle-timer strong{
  font-size:24px!important;
  line-height:1!important;
  letter-spacing:.07em!important;
}


/* ============================================================
   MIA / CHARGE RELEASE v92
   軽量化優先：チャージ中はplayer::after 1枚のみ。
   発射時もDOM弾は1発だけ生成する。
   ============================================================ */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging::after{
  content:"";
  position:absolute;
  z-index:7;
  left:50%;
  top:-10px;
  width:30px;
  height:30px;
  transform:translate(-50%,-50%) scale(.58);
  transform-origin:center;
  border:0!important;
  outline:none!important;
  border-radius:48% 48% 56% 56% / 24% 24% 76% 76%!important;
  background:
    radial-gradient(ellipse at 50% 20%,
      rgba(255,255,255,.96) 0 18%,
      rgba(232,250,255,.86) 24%,
      rgba(167,233,255,.34) 42%,
      rgba(88,191,245,.12) 60%,
      rgba(35,127,217,.02) 76%,
      transparent 100%)!important;
  box-shadow:
    0 -2px 8px rgba(246,253,255,.30),
    0 7px 18px rgba(121,219,255,.18),
    0 18px 28px rgba(63,166,238,.10)!important;
  opacity:.54;
  pointer-events:none;
  animation:miaChargeGrow 1s linear forwards;
}
@keyframes miaChargeGrow{
  0%{transform:translate(-50%,-50%) scale(.58);opacity:.38}
  55%{transform:translate(-50%,-50%) scale(1.08);opacity:.72}
  100%{transform:translate(-50%,-50%) scale(1.55);opacity:.86}
}
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging{
  overflow:visible!important;
}
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging::before{
  content:"";
  position:absolute;
  z-index:6;
  left:50%;
  top:-4px;
  width:18px;
  height:54px;
  transform:translateX(-50%);
  border-radius:44% 44% 68% 68% / 10% 10% 90% 90%;
  background:linear-gradient(to bottom,
    rgba(244,253,255,.78) 0%,
    rgba(197,241,255,.48) 18%,
    rgba(129,220,255,.28) 40%,
    rgba(74,181,242,.12) 65%,
    rgba(36,144,229,.04) 82%,
    transparent 100%);
  filter:blur(5px);
  opacity:.72;
  pointer-events:none;
}

#shooting-event-root .shooting-mia-charge-shot{
  z-index:8!important;
  border:0!important;
  outline:none!important;
  overflow:visible!important;
  background:transparent!important;
  border-radius:48% 48% 56% 56% / 24% 24% 76% 76%!important;
  box-shadow:0 -4px 10px rgba(243,252,255,.34),0 6px 22px rgba(123,216,255,.24),0 18px 34px rgba(58,165,235,.12)!important;
  filter:none!important;
  opacity:.96!important;
}
#shooting-event-root .shooting-mia-charge-shot::before,
#shooting-event-root .shooting-mia-charge-shot::after{
  content:""!important;
  display:block!important;
  position:absolute;
  pointer-events:none;
  border:0!important;
  outline:none!important;
  box-shadow:none!important;
}
#shooting-event-root .shooting-mia-charge-shot::before{
  left:23%!important;
  top:7%!important;
  width:54%!important;
  height:54%!important;
  border-radius:50% 50% 46% 46% / 36% 36% 64% 64%!important;
  background:radial-gradient(ellipse at 50% 24%,rgba(255,255,255,.98) 0 20%,rgba(232,250,255,.92) 25%,rgba(169,232,255,.55) 47%,rgba(86,189,245,.20) 68%,rgba(32,122,214,.04) 80%,transparent 100%)!important;
  filter:blur(.65px)!important;
  opacity:.96!important;
}
#shooting-event-root .shooting-mia-charge-shot::after{
  left:50%!important;
  top:22%!important;
  width:108%!important;
  height:250%!important;
  transform:translateX(-50%)!important;
  transform-origin:50% 0%!important;
  border-radius:44% 44% 68% 68% / 10% 10% 90% 90%!important;
  background:linear-gradient(to bottom,rgba(244,253,255,.92) 0%,rgba(197,241,255,.72) 10%,rgba(129,220,255,.44) 28%,rgba(74,181,242,.24) 52%,rgba(36,144,229,.11) 74%,rgba(17,106,198,.03) 88%,transparent 100%)!important;
  filter:blur(6px)!important;
  opacity:.90!important;
}


/* ============================================================
   MITO - familiar sidecar support
   ============================================================ */
.shooting-mito-companion{
  position:absolute;
  z-index:11;
  left:0;
  top:0;
  width:64px;
  height:86px;
  object-fit:contain;
  object-position:center center;
  opacity:0;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  will-change:transform;
  transition:opacity .12s ease;
  filter:drop-shadow(0 5px 5px rgba(70,55,35,.12));
}
.shooting-mito-companion.show{opacity:1}
.shooting-bullet-mito-companion{z-index:10}


/* ============================================================
   MITO ULT - TIME STOP / FAMILIAR RUSH
   ============================================================ */
#shooting-event-root.mito-time-stop-active .shooting-bg{
  filter:brightness(.92) saturate(.38) contrast(1.05);
}
#shooting-event-root.mito-time-stop-active .shooting-wash{
  background:linear-gradient(180deg,rgba(224,239,245,.23),rgba(235,238,244,.10) 48%,rgba(218,230,237,.20));
}
#shooting-event-root.mito-time-stop-active .shooting-boss,
#shooting-event-root.mito-time-stop-active .shooting-normal-enemy{
  filter:saturate(.42) brightness(.92) drop-shadow(0 7px 8px rgba(57,71,78,.16));
}
#shooting-event-root .shooting-mito-companion.mito-ult-rush{
  z-index:17;
  opacity:1!important;
  transition:none!important;
  filter:
    brightness(1.10)
    drop-shadow(0 0 7px rgba(225,247,255,.96))
    drop-shadow(0 0 16px rgba(114,202,232,.68));
}
#shooting-event-root.ult-flash-mito::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:58;
  pointer-events:none;
  background:rgba(226,246,255,.32);
  animation:mitoUltFlash .7s ease-out forwards;
}
@keyframes mitoUltFlash{
  0%{opacity:0}
  18%{opacity:1}
  100%{opacity:0}
}


/* ============================================================
   Switch rail spacing: widen gaps so cooldown text is not clipped
   ============================================================ */
#shooting-event-root .shooting-switch-rail{
  gap: 16px !important;
}
@media(max-width:480px){
  #shooting-event-root .shooting-switch-rail{
    gap: 14px !important;
  }
}


/* ============================================================
   Switch status text: enlarge CHANGE / ULT READY to match cooldown
   ============================================================ */
#shooting-event-root .shooting-switch-status{
  font-size:10px!important;
  font-weight:600!important;
  letter-spacing:.08em!important;
  line-height:1.15!important;
  bottom:-16px!important;
}


/* =========================================================
   SCORE ATTACK v124 - Infinite Boss HP display
   ボスHPゲージ直下の「HP：∞」専用
   ========================================================= */
.shooting-boss-phase.score-attack-infinite-hp{
  display:block;
  margin-top:9px;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:24px;
  line-height:1;
  font-weight:600;
  letter-spacing:.12em;
  color:#b89a61;
  text-shadow:
    0 1px 0 rgba(255,255,255,.92),
    0 2px 8px rgba(124,91,42,.18),
    0 0 14px rgba(213,179,108,.14);
  white-space:nowrap;
  opacity:1;
}

/* 低い端末でも存在感は落としすぎない */
@media (max-height:700px){
  .shooting-boss-phase.score-attack-infinite-hp{
    margin-top:7px;
    font-size:21px;
  }
}


/* =========================================================
   SCORE ATTACK v126 - performance
   弾数が多いステージ専用。通常ステージの見た目には影響しない。
   ========================================================= */
.shooting-score-attack-bullet{
  /* 多重box-shadowは弾数分GPUコストが積み上がるため撤去 */
  box-shadow:none!important;
  filter:none!important;
  contain:layout paint style;
}


/* =========================================================
   SCORE ATTACK v133 - Boss hit feedback
   HP∞でも命中感が分かる、軽量な光エフェクト。
   DOM追加なし。既存ボス画像のfilterのみ短時間変更。
   ========================================================= */
#shooting-event-root[data-shooting-stage="shooting_score_attack_normal"] #shooting-boss.score-attack-hit-glow,
#shooting-event-root[data-shooting-stage="shooting_score_attack_hard"] #shooting-boss.score-attack-hit-glow{
  animation:score-attack-boss-hit-glow .17s ease-out;
}

#shooting-event-root[data-shooting-stage="shooting_score_attack_normal"] #shooting-boss.score-attack-burst-glow,
#shooting-event-root[data-shooting-stage="shooting_score_attack_hard"] #shooting-boss.score-attack-burst-glow{
  animation:score-attack-boss-burst-glow .42s ease-out;
}

@keyframes score-attack-boss-hit-glow{
  0%{
    filter:
      brightness(1.75)
      saturate(1.18)
      drop-shadow(0 0 7px rgba(255,255,255,.95))
      drop-shadow(0 0 15px rgba(255,187,236,.72));
  }
  45%{
    filter:
      brightness(1.32)
      saturate(1.10)
      drop-shadow(0 0 5px rgba(255,255,255,.72))
      drop-shadow(0 0 10px rgba(204,184,255,.52));
  }
  100%{
    filter:none;
  }
}

@keyframes score-attack-boss-burst-glow{
  0%{
    filter:
      brightness(2.05)
      saturate(1.30)
      drop-shadow(0 0 12px rgba(255,255,255,1))
      drop-shadow(0 0 26px rgba(255,178,232,.90))
      drop-shadow(0 0 40px rgba(177,168,255,.65));
  }
  55%{
    filter:
      brightness(1.45)
      saturate(1.18)
      drop-shadow(0 0 8px rgba(255,255,255,.80))
      drop-shadow(0 0 18px rgba(210,184,255,.58));
  }
  100%{
    filter:none;
  }
}


/* =========================================================
   SCORE ATTACK v139 - BALANCED LITE
   画面構成・背景・HUD・開始演出は他ステージと共通。
   弾だけ単純化して描画コストを抑える。
   ========================================================= */
#shooting-event-root:is(
  [data-shooting-stage="shooting_score_attack_normal"],
  [data-shooting-stage="shooting_score_attack_hard"]
) .shooting-score-attack-bullet{
  width:14px!important;
  height:14px!important;
  border:0!important;
  border-radius:50%!important;
  background:#151515!important;
  box-shadow:none!important;
  filter:none!important;
  opacity:1!important;
  contain:layout paint style;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_score_attack_normal"],
  [data-shooting-stage="shooting_score_attack_hard"]
) .shooting-score-attack-bullet::before,
#shooting-event-root:is(
  [data-shooting-stage="shooting_score_attack_normal"],
  [data-shooting-stage="shooting_score_attack_hard"]
) .shooting-score-attack-bullet::after{
  content:none!important;
  display:none!important;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_score_attack_normal"],
  [data-shooting-stage="shooting_score_attack_hard"]
) .shooting-score-attack-warning-bullet{
  width:30px!important;
  height:30px!important;
  background:#e33434!important;
  border:2px solid rgba(255,210,210,.95)!important;
  box-shadow:none!important;
  filter:none!important;
  opacity:1!important;
  z-index:13!important;
}


/* ============================================================
   CHAPTER04 v154 — FINAL ITEM visibility / stacking fix
   Existing CH04 rules force boss z-index:60 and final item z-index:32.
   Keep Sakiel above normal HUD/bullets, but put mission item/alert above Sakiel.
   ============================================================ */
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"],
[data-shooting-stage="shooting_beginner_ch04_01"],[data-shooting-stage="shooting_beginner_ch04_02"],[data-shooting-stage="shooting_beginner_ch04_03"]) .shooting-ch04-final-item{
  width:36px!important;
  height:36px!important;
  z-index:140!important;
  opacity:1!important;
  display:block!important;
  visibility:visible!important;
  pointer-events:none!important;
  border:4px solid rgba(214,196,255,1)!important;
  background:radial-gradient(circle,rgba(255,255,255,1) 0 13%,rgba(222,205,255,1) 18% 34%,rgba(132,82,235,1) 42% 61%,rgba(65,117,255,.92) 66% 75%,rgba(74,46,205,0) 84%)!important;
  box-shadow:0 0 14px rgba(255,255,255,1),0 0 30px rgba(185,127,255,1),0 0 58px rgba(118,74,240,1),0 0 88px rgba(59,122,255,.92)!important;
  filter:none!important;
  animation:shootingCh04FinalItemPulseV154 .52s ease-in-out infinite alternate!important;
}
@keyframes shootingCh04FinalItemPulseV154{
  from{transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(.90)}
  to{transform:translate3d(var(--unit-x),var(--unit-y),0) translate(-50%,-50%) scale(1.16)}
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"],
[data-shooting-stage="shooting_beginner_ch04_01"],[data-shooting-stage="shooting_beginner_ch04_02"],[data-shooting-stage="shooting_beginner_ch04_03"]) .shooting-ch04-item-alert{
  z-index:150!important;
  top:30%!important;
  opacity:0;
  text-shadow:0 1px 2px rgba(255,255,255,1),0 0 10px rgba(255,255,255,1),0 0 18px rgba(132,82,235,.38)!important;
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"],
[data-shooting-stage="shooting_beginner_ch04_01"],[data-shooting-stage="shooting_beginner_ch04_02"],[data-shooting-stage="shooting_beginner_ch04_03"]) .shooting-ch04-item-alert.show{
  opacity:1!important;
  display:flex!important;
  visibility:visible!important;
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"]) .shooting-ch04-item-alert strong{
  color:#51319d!important;
  -webkit-text-stroke:1px rgba(255,255,255,.88);
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"]) .shooting-ch04-item-alert small{
  color:#4d3f76!important;
  font-size:12px!important;
  font-weight:700!important;
}
#shooting-event-root:is([data-shooting-stage="shooting_ch04_01"],[data-shooting-stage="shooting_ch04_02"],[data-shooting-stage="shooting_ch04_03"]) .shooting-ch04-item-alert b{
  color:#6f45d8!important;
  -webkit-text-stroke:1px rgba(255,255,255,.88);
}


/* CHAPTER05 v172: reverse-control notice only — smaller and easier to read. */
#shooting-event-root[data-shooting-stage^="shooting_ch05_"] .shooting-countdown.chapter4-rule-phase span{
  width:min(86vw,460px)!important;
  font-size:clamp(17px,4.6vw,23px)!important;
  line-height:1.55!important;
  letter-spacing:.055em!important;
  text-indent:0!important;
  text-align:center!important;
  white-space:pre-line!important;
}


/* ============================================================
   WOLF / id:18
   Deep-J converging homing + central ATK UP field
   ============================================================ */
.shooting-bullet-wolf,
.shooting-bullet-wolf-j{
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  min-height:18px!important;
  max-width:18px!important;
  max-height:18px!important;
  margin:-9px 0 0 -9px!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle at 50% 50%,rgba(255,255,255,.99) 0 18%,rgba(229,214,255,.96) 19% 34%,rgba(149,108,207,.94) 48%,rgba(88,56,143,.78) 65%,rgba(36,25,57,.20) 77%,transparent 79%)!important;
  box-shadow:
    0 0 6px rgba(225,210,255,.88),
    0 0 12px rgba(128,87,191,.58),
    0 0 18px rgba(70,42,112,.30)!important;
}
.shooting-bullet-wolf-j::after{
  content:"";
  position:absolute;
  left:-8px!important;
  right:-8px!important;
  top:-8px!important;
  bottom:-8px!important;
  width:auto!important;
  height:auto!important;
  transform:none!important;
  border-radius:50%!important;
  background:radial-gradient(circle,rgba(178,131,227,.28) 0 28%,rgba(132,84,192,.14) 45%,transparent 72%)!important;
  box-shadow:none!important;
}

.shooting-wolf-atk-field{
  position:absolute;
  left:0;
  top:0;
  z-index:6;
  pointer-events:none;
  border-radius:50%;
  opacity:0;
  transform-origin:center center;
  border:1px solid rgba(119,91,170,.50);
  background:
    radial-gradient(circle,
      rgba(255,255,255,.08) 0%,
      rgba(149,118,199,.12) 42%,
      rgba(74,54,108,.16) 67%,
      rgba(26,20,37,.05) 78%,
      transparent 79%);
  box-shadow:
    inset 0 0 22px rgba(188,158,235,.18),
    0 0 18px rgba(92,67,139,.22);
  transition:opacity .22s ease;
}
.shooting-wolf-atk-field.show{opacity:1}
.shooting-wolf-atk-field.ending{opacity:0}
.shooting-wolf-atk-field::before,
.shooting-wolf-atk-field::after{
  content:"";
  position:absolute;
  inset:10%;
  border-radius:50%;
  border:1px solid rgba(189,165,226,.30);
  animation:wolfFieldRotate 5.5s linear infinite;
}
.shooting-wolf-atk-field::after{
  inset:23%;
  border-style:dashed;
  border-color:rgba(112,84,157,.36);
  animation-duration:3.8s;
  animation-direction:reverse;
}
.shooting-wolf-atk-field>i{
  position:absolute;
  inset:40%;
  border-radius:50%;
  background:radial-gradient(circle,rgba(244,236,255,.65),rgba(114,84,164,.25) 55%,transparent 72%);
  box-shadow:0 0 24px rgba(122,91,173,.30);
}
.shooting-wolf-atk-field>span{
  position:absolute;
  left:50%;
  bottom:11%;
  transform:translateX(-50%);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:9px;
  letter-spacing:.18em;
  color:rgba(82,61,119,.72);
  white-space:nowrap;
  text-shadow:0 1px 0 rgba(255,255,255,.75);
}
@keyframes wolfFieldRotate{
  to{transform:rotate(360deg)}
}
#shooting-event-root.ult-flash-wolf .shooting-wash{
  animation:shootingWolfUltFlash .68s ease-out;
}
@keyframes shootingWolfUltFlash{
  0%{background:rgba(141,111,188,.42)}
  100%{background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 45%,rgba(244,239,227,.26))}
}


/* =========================================================
   SHURI id:19 - crimson moon 5WAY override
   DARK属性の通常色より優先して、紅黒の気弾へ寄せる。
   ========================================================= */
.shooting-bullet-gojo,
.shooting-bullet-gojo.shooting-bullet-logos{
  width:16px!important;
  height:16px!important;
  border-radius:50%!important;
  opacity:.74!important;
  background:radial-gradient(circle at 38% 34%,
    rgba(255,245,247,.90) 0 9%,
    rgba(236,162,178,.80) 17%,
    rgba(180,44,74,.72) 42%,
    rgba(92,12,29,.62) 68%,
    rgba(22,0,8,.20) 100%)!important;
  box-shadow:
    0 0 6px rgba(255,243,246,.60),
    0 0 14px rgba(191,64,93,.42),
    0 0 24px rgba(84,9,25,.28)!important;
  border:1px solid rgba(255,236,240,.42)!important;
  filter:saturate(1.08) brightness(1.02)!important;
}


/* ============================================================
   CH04-2/3 v239 — lightweight rich wall presentation
   DOMを増やさず、既存の左右壁2枚 + 擬似要素だけで質感を追加。
   ============================================================ */
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall{
  overflow:hidden!important;
  background:
    repeating-linear-gradient(135deg,
      rgba(255,255,255,.018) 0 7px,
      rgba(133,103,174,.07) 7px 8px,
      transparent 8px 16px),
    linear-gradient(180deg,#0a0910 0%,#17111f 48%,#090a0e 100%)!important;
  box-shadow:inset 0 0 0 1px rgba(220,198,255,.06)!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall::before,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  top:0!important;
  bottom:0!important;
  width:8px!important;
  background:linear-gradient(90deg,rgba(107,75,147,.08),rgba(211,183,255,.72),rgba(255,255,255,.92))!important;
  opacity:.88!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall.left::before,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall.left::before{right:0!important}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall.right::before,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall.right::before{left:0!important}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall::after,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  top:0!important;
  bottom:0!important;
  width:22px!important;
  opacity:.22!important;
  background:repeating-linear-gradient(180deg,
    rgba(230,211,255,.78) 0 1px,
    transparent 1px 18px)!important;
}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall.left::after,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall.left::after{right:0!important}
#shooting-event-root[data-shooting-stage="shooting_ch04_02"] .shooting-ch04-shrink-wall.right::after,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_02"] .shooting-ch04-shrink-wall.right::after{left:0!important}

/* CH04-3は「弾の壁」が主役。DOM弾はCanvas化されるが、フォールバック時も暗い三角形のまま。 */
#shooting-event-root[data-shooting-stage="shooting_ch04_03"] #shooting-enemy-bullet-canvas,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch04_03"] #shooting-enemy-bullet-canvas{
  opacity:1!important;
}


/* ============================================================
   CHAPTER04-3 v76 — normal party / boss HUD override
   CH04-1/2 keep the old Eri-only guard.
   ============================================================ */

/* CH04-3は通常シューティング化したため、キャラ一覧ガードを解除 */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-character-grid.shooting-party-roster{
  overflow:auto!important;
  isolation:auto!important;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-character-grid.shooting-party-roster::after{
  content:none!important;
  display:none!important;
  pointer-events:none!important;
}

/* CH04-3はボスHPを使う通常戦なのでBOSS HUDを復活 */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-boss-hud{
  display:block!important;
}

/* CH04-3は通常SHOT/ULTありなのでCOMBOも復活 */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-combo{
  display:block!important;
}


/* ============================================================
   CHAPTER04-3 v77 — unlock non-Eri party buttons
   Old CH04 CSS forced every non-Eri option to opacity:.22 +
   grayscale + pointer-events:none. CH04-3 is now a normal
   3-member battle, so explicitly restore those properties.
   ============================================================ */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-character-option:not([data-character-id="1"]){
  opacity:1!important;
  filter:none!important;
  pointer-events:auto!important;
}

/* 未所持キャラだけは従来どおり選択不可 */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-character-option.locked{
  opacity:.22!important;
  filter:grayscale(1)!important;
  pointer-events:none!important;
}


/* ============================================================
   v133 FACELESS 仮面 被弾演出
   ============================================================ */
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"]
.shooting-faceless-object.faceless-hit-flash{
  filter:
    brightness(2.15)
    saturate(.55)
    drop-shadow(0 0 10px rgba(255,255,255,.95))
    drop-shadow(0 0 18px rgba(195,185,215,.80))!important;
  transform:
    translate3d(var(--unit-x),var(--unit-y),0)
    translate(-50%,-50%)
    scale(1.08)!important;
}


/* v207 hard override: make both charge preview and released shot clearly aura-like */
#shooting-event-root .shooting-mia-charge-shot{
  background:transparent!important;
  border:0!important;
  outline:none!important;
  border-radius:48% 48% 56% 56% / 24% 24% 76% 76%!important;
  box-shadow:0 -4px 10px rgba(243,252,255,.34),0 6px 22px rgba(123,216,255,.24),0 18px 34px rgba(58,165,235,.12)!important;
}
#shooting-event-root .shooting-mia-charge-shot::before{
  content:""!important;
  display:block!important;
}
#shooting-event-root .shooting-mia-charge-shot::after{
  content:""!important;
  display:block!important;
}


/* ============================================================
   v208 MIA MAX CHARGE READY PULSE
   1秒溜め切ったら .mia-charge-max を付与して
   視覚的に「MAXまで溜まった」と分かる脈動へ切替。
   ============================================================ */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging.mia-charge-max::after{
  opacity:.96!important;
  animation:miaChargeMaxPulse .58s ease-in-out infinite alternate!important;
  box-shadow:
    0 -4px 12px rgba(255,255,255,.42),
    0 0 16px rgba(224,248,255,.30),
    0 10px 24px rgba(132,225,255,.28),
    0 24px 44px rgba(72,179,244,.20)!important;
  background:
    radial-gradient(ellipse at 50% 18%,
      rgba(255,255,255,.98) 0 18%,
      rgba(237,251,255,.92) 24%,
      rgba(196,239,255,.54) 44%,
      rgba(117,210,255,.20) 63%,
      rgba(57,154,235,.06) 78%,
      transparent 100%)!important;
}

#shooting-event-root .shooting-player[data-character-id="13"].mia-charging.mia-charge-max::before{
  opacity:.90!important;
  animation:miaChargeMaxTailPulse .58s ease-in-out infinite alternate!important;
  filter:blur(5px) brightness(1.08)!important;
  background:linear-gradient(to bottom,
    rgba(250,254,255,.92) 0%,
    rgba(217,246,255,.64) 18%,
    rgba(143,225,255,.36) 42%,
    rgba(76,184,243,.18) 68%,
    rgba(36,144,229,.06) 84%,
    transparent 100%)!important;
}

/* プレイヤー本体にも控えめなハイライト */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging.mia-charge-max{
  filter:drop-shadow(0 0 6px rgba(216,247,255,.22)) drop-shadow(0 0 12px rgba(105,201,255,.12))!important;
}

@keyframes miaChargeMaxPulse{
  0%{
    transform:translate(-50%,-50%) scale(1.48);
    opacity:.82;
    filter:saturate(1.00) brightness(.98);
  }
  100%{
    transform:translate(-50%,-50%) scale(1.72);
    opacity:1;
    filter:saturate(1.14) brightness(1.12);
  }
}

@keyframes miaChargeMaxTailPulse{
  0%{
    transform:translateX(-50%) scaleY(.95);
    opacity:.62;
  }
  100%{
    transform:translateX(-50%) scaleY(1.10);
    opacity:.96;
  }
}


/* ============================================================
   v209 MIA RELEASE SHOT — rounded aura orb
   MAX CHARGE pulse(v208) is unchanged.
   Released shot is a little rounder, while keeping soft edges.
   ============================================================ */
#shooting-event-root .shooting-mia-charge-shot{
  border-radius:50%!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:
    0 0 10px rgba(238,251,255,.24),
    0 0 22px rgba(119,216,255,.22),
    0 4px 34px rgba(53,158,233,.12)!important;
}

/* Soft circular water-energy core */
#shooting-event-root .shooting-mia-charge-shot::before{
  content:""!important;
  display:block!important;
  left:14%!important;
  top:14%!important;
  width:72%!important;
  height:72%!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle at 46% 38%,
      rgba(255,255,255,.98) 0 15%,
      rgba(234,250,255,.88) 20%,
      rgba(169,232,255,.52) 42%,
      rgba(89,191,245,.22) 62%,
      rgba(35,128,217,.05) 78%,
      transparent 100%)!important;
  filter:blur(1px)!important;
  opacity:.94!important;
  border:0!important;
  box-shadow:none!important;
}

/* Round outer aura with only a faint downward wake */
#shooting-event-root .shooting-mia-charge-shot::after{
  content:""!important;
  display:block!important;
  left:50%!important;
  top:50%!important;
  width:132%!important;
  height:148%!important;
  transform:translate(-50%,-42%)!important;
  transform-origin:center!important;
  border-radius:50%!important;
  background:
    radial-gradient(ellipse at 50% 42%,
      rgba(229,249,255,.40) 0 24%,
      rgba(143,226,255,.26) 38%,
      rgba(73,182,242,.13) 57%,
      rgba(35,137,221,.05) 72%,
      transparent 88%)!important;
  filter:blur(6px)!important;
  opacity:.88!important;
  border:0!important;
  box-shadow:none!important;
}


/* ============================================================
   v210 MIA CHARGING — round aura growing larger while charging
   Released shot styling remains as-is.
   This only reworks the "during charge" visual.
   ============================================================ */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging{
  overflow:visible!important;
}

/* Core orb: rounded, soft, and clearly grows while charging */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:7!important;
  left:50%!important;
  top:-9px!important;
  width:36px!important;
  height:36px!important;
  transform:translate(-50%,-50%) scale(.46)!important;
  transform-origin:center center!important;
  border:0!important;
  outline:none!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle at 46% 36%,
      rgba(255,255,255,.98) 0 14%,
      rgba(237,251,255,.90) 20%,
      rgba(180,236,255,.54) 40%,
      rgba(101,201,248,.22) 61%,
      rgba(45,143,227,.06) 78%,
      transparent 100%)!important;
  box-shadow:
    0 0 10px rgba(246,253,255,.42),
    0 0 24px rgba(125,220,255,.26),
    0 0 40px rgba(62,164,238,.14)!important;
  opacity:.42!important;
  pointer-events:none!important;
  animation:miaChargeRoundGrow 1s linear forwards!important;
}

/* Outer halo: also grows, but softer and larger */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:6!important;
  left:50%!important;
  top:-9px!important;
  width:64px!important;
  height:64px!important;
  transform:translate(-50%,-50%) scale(.32)!important;
  transform-origin:center center!important;
  border:0!important;
  outline:none!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle,
      rgba(239,251,255,.26) 0 22%,
      rgba(168,233,255,.18) 34%,
      rgba(94,193,246,.10) 52%,
      rgba(45,145,228,.04) 68%,
      transparent 84%)!important;
  filter:blur(7px)!important;
  box-shadow:none!important;
  opacity:.30!important;
  pointer-events:none!important;
  animation:miaChargeRoundHaloGrow 1s linear forwards!important;
}

@keyframes miaChargeRoundGrow{
  0%{
    transform:translate(-50%,-50%) scale(.46);
    opacity:.34;
    filter:saturate(.98) brightness(.98);
  }
  55%{
    transform:translate(-50%,-50%) scale(1.06);
    opacity:.66;
    filter:saturate(1.05) brightness(1.02);
  }
  100%{
    transform:translate(-50%,-50%) scale(1.54);
    opacity:.92;
    filter:saturate(1.12) brightness(1.08);
  }
}

@keyframes miaChargeRoundHaloGrow{
  0%{
    transform:translate(-50%,-50%) scale(.32);
    opacity:.18;
  }
  55%{
    transform:translate(-50%,-50%) scale(.92);
    opacity:.34;
  }
  100%{
    transform:translate(-50%,-50%) scale(1.36);
    opacity:.52;
  }
}

/* MAX到達後の脈動も、尾ではなく"丸いオーラ"が脈動する方向に寄せる */
#shooting-event-root .shooting-player[data-character-id="13"].mia-charging.mia-charge-max::after{
  border-radius:50%!important;
  opacity:.98!important;
  animation:miaChargeRoundMaxPulse .58s ease-in-out infinite alternate!important;
  background:
    radial-gradient(circle at 46% 36%,
      rgba(255,255,255,.99) 0 14%,
      rgba(241,252,255,.94) 20%,
      rgba(196,239,255,.58) 42%,
      rgba(118,211,255,.24) 62%,
      rgba(57,154,235,.08) 79%,
      transparent 100%)!important;
  box-shadow:
    0 0 12px rgba(255,255,255,.48),
    0 0 22px rgba(224,248,255,.34),
    0 0 36px rgba(132,225,255,.26),
    0 0 52px rgba(72,179,244,.18)!important;
}

#shooting-event-root .shooting-player[data-character-id="13"].mia-charging.mia-charge-max::before{
  border-radius:50%!important;
  opacity:.84!important;
  animation:miaChargeRoundMaxHaloPulse .58s ease-in-out infinite alternate!important;
  filter:blur(9px) brightness(1.08)!important;
  background:
    radial-gradient(circle,
      rgba(246,253,255,.26) 0 26%,
      rgba(191,239,255,.20) 40%,
      rgba(127,213,255,.12) 58%,
      rgba(58,162,238,.05) 74%,
      transparent 88%)!important;
}

@keyframes miaChargeRoundMaxPulse{
  0%{
    transform:translate(-50%,-50%) scale(1.50);
    opacity:.84;
    filter:saturate(1.00) brightness(.98);
  }
  100%{
    transform:translate(-50%,-50%) scale(1.76);
    opacity:1;
    filter:saturate(1.14) brightness(1.12);
  }
}

@keyframes miaChargeRoundMaxHaloPulse{
  0%{
    transform:translate(-50%,-50%) scale(1.18);
    opacity:.52;
  }
  100%{
    transform:translate(-50%,-50%) scale(1.46);
    opacity:.88;
  }
}


/* ============================================================
   v212 GENERIC ELEMENTAL ZAKO
   ============================================================ */
#shooting-event-root .shooting-generic-zako-shot{
  width:12px!important;height:12px!important;border-radius:50%!important;border:0!important;outline:0!important;
}
#shooting-event-root .shooting-generic-zako-laser{
  width:10px!important;height:92px!important;border-radius:999px!important;border:0!important;outline:0!important;opacity:.92!important;
}
#shooting-event-root .shooting-enemy-element-aqua.shooting-generic-zako-shot{background:radial-gradient(circle,#fff 0 16%,#9de7ff 30%,#3c9fe0 68%,rgba(38,105,183,.12) 100%)!important;box-shadow:0 0 8px rgba(112,211,255,.72)!important}
#shooting-event-root .shooting-enemy-element-aqua.shooting-generic-zako-laser{background:linear-gradient(180deg,rgba(255,255,255,.98),#9ce8ff 22%,#48afe8 64%,rgba(42,123,210,.20))!important;box-shadow:0 0 7px rgba(109,211,255,.82),0 0 16px rgba(61,157,226,.42)!important}
#shooting-event-root .shooting-enemy-element-fire.shooting-generic-zako-shot{background:radial-gradient(circle,#fff 0 14%,#ffd09b 28%,#ef673f 66%,rgba(187,42,25,.10) 100%)!important;box-shadow:0 0 8px rgba(255,115,72,.72)!important}
#shooting-event-root .shooting-enemy-element-fire.shooting-generic-zako-laser{background:linear-gradient(180deg,rgba(255,249,234,.98),#ffbf76 22%,#ed5e35 64%,rgba(179,39,22,.20))!important;box-shadow:0 0 7px rgba(255,124,75,.82),0 0 16px rgba(229,69,42,.42)!important}
#shooting-event-root .shooting-enemy-element-wood.shooting-generic-zako-shot{background:radial-gradient(circle,#fff 0 14%,#d9efad 28%,#7da557 66%,rgba(65,98,43,.10) 100%)!important;box-shadow:0 0 8px rgba(147,190,91,.70)!important}
#shooting-event-root .shooting-enemy-element-wood.shooting-generic-zako-laser{background:linear-gradient(180deg,rgba(251,255,240,.98),#d7ecaa 22%,#7fa45a 64%,rgba(64,99,43,.20))!important;box-shadow:0 0 7px rgba(154,194,99,.80),0 0 16px rgba(101,139,69,.40)!important}
#shooting-event-root .shooting-enemy-element-dark.shooting-generic-zako-shot{background:radial-gradient(circle,#fff 0 12%,#d9c8e9 27%,#8054ae 64%,rgba(75,42,106,.14) 100%)!important;box-shadow:0 0 8px rgba(128,84,174,.76)!important}
#shooting-event-root .shooting-enemy-element-dark.shooting-generic-zako-laser{background:linear-gradient(180deg,rgba(250,246,253,.98),#d4bee7 22%,#8054ae 64%,rgba(75,42,106,.24))!important;box-shadow:0 0 7px rgba(151,105,194,.82),0 0 16px rgba(97,57,137,.46)!important}
#shooting-event-root .shooting-enemy-element-light.shooting-generic-zako-shot{background:radial-gradient(circle,#fff 0 18%,#fff3af 34%,#eacb62 68%,rgba(191,152,38,.10) 100%)!important;box-shadow:0 0 8px rgba(247,219,109,.76)!important}
#shooting-event-root .shooting-enemy-element-light.shooting-generic-zako-laser{background:linear-gradient(180deg,#fff 0%,#fff5bd 24%,#efd46f 66%,rgba(194,159,45,.18))!important;box-shadow:0 0 7px rgba(255,231,128,.86),0 0 16px rgba(229,193,77,.44)!important}


/* ============================================================
   v214 ENEMY ELEMENT ICON — HP bar left
   ============================================================ */

/* Normal enemy: icon is attached to the HP bar and moves with it. */
#shooting-event-root .shooting-mini-enemy-hp{
  overflow:visible!important;
}
#shooting-event-root .shooting-mini-enemy-element-icon{
  position:absolute;
  left:-22px;
  top:50%;
  width:17px;
  height:17px;
  transform:translateY(-50%);
  object-fit:contain;
  border-radius:50%;
  pointer-events:none;
  filter:drop-shadow(0 1px 2px rgba(55,41,26,.24));
}

/* Boss: icon sits immediately to the left of the boss HP bar. */
#shooting-event-root .shooting-boss-hud{
  overflow:visible;
}
#shooting-event-root .shooting-boss-element-icon{
  position:absolute;
  left:-31px;
  top:13px;
  width:24px;
  height:24px;
  object-fit:contain;
  border-radius:50%;
  pointer-events:none;
  filter:drop-shadow(0 1px 3px rgba(55,41,26,.26));
}

@media (max-width:480px){
  #shooting-event-root .shooting-boss-element-icon{
    left:-27px;
    width:21px;
    height:21px;
    top:15px;
  }
  #shooting-event-root .shooting-mini-enemy-element-icon{
    left:-20px;
    width:16px;
    height:16px;
  }
}


/* ============================================================
   v216 MINI ENEMY ELEMENT ICON FIX
   ============================================================ */
#shooting-event-root .shooting-mini-enemy-element-icon{
  position:absolute!important;
  left:0!important;
  top:0!important;
  z-index:20!important;
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  min-height:18px!important;
  max-width:18px!important;
  max-height:18px!important;
  object-fit:contain!important;
  border-radius:50%!important;
  pointer-events:none!important;
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  filter:drop-shadow(0 1px 2px rgba(55,41,26,.30))!important;
  will-change:transform;
}
#shooting-event-root .shooting-mini-enemy-element-icon.defeated{
  opacity:0!important;
  transition:opacity .18s ease-out!important;
}


/* ============================================================
   v217 ALLY ELEMENT BATTLE UI
   Active player: icon next to name in footer
   Bench members: icon on each CHANGE portrait
   ============================================================ */
#shooting-event-root .shooting-player-name-wrap{
  display:flex;
  align-items:center;
  gap:6px;
  min-width:0;
}

#shooting-event-root .shooting-player-element-icon{
  width:16px;
  height:16px;
  min-width:16px;
  min-height:16px;
  object-fit:contain;
  border-radius:50%;
  display:block;
  filter:drop-shadow(0 1px 2px rgba(55,41,26,.24));
}

#shooting-event-root .shooting-switch-element-icon{
  position:absolute;
  left:-4px;
  top:-4px;
  z-index:4;
  width:18px;
  height:18px;
  object-fit:contain;
  border-radius:50%;
  background:rgba(255,252,246,.96);
  box-shadow:0 1px 4px rgba(55,41,26,.18);
  pointer-events:none;
}

@media (max-width:480px){
  #shooting-event-root .shooting-player-element-icon{
    width:15px;
    height:15px;
    min-width:15px;
    min-height:15px;
  }
  #shooting-event-root .shooting-switch-element-icon{
    left:-3px;
    top:-3px;
    width:16px;
    height:16px;
  }
}


/* ============================================================
   v218 FIRE CHARGE ZAKO
   ============================================================ */
#shooting-event-root .shooting-mini-enemy.generic-charge-warning{
  animation:shootingGenericChargeWarning .18s ease-in-out infinite alternate;
  filter:
    brightness(1.18)
    saturate(1.16)
    drop-shadow(0 0 8px rgba(235,86,42,.70))
    drop-shadow(0 0 18px rgba(231,128,54,.36));
}

#shooting-event-root .shooting-mini-enemy.generic-charge-dash{
  filter:
    brightness(1.12)
    saturate(1.20)
    drop-shadow(0 0 10px rgba(255,96,43,.82))
    drop-shadow(0 0 22px rgba(233,91,37,.46));
}

@keyframes shootingGenericChargeWarning{
  from{
    filter:
      brightness(1.02)
      saturate(1.06)
      drop-shadow(0 0 4px rgba(232,102,51,.30));
  }
  to{
    filter:
      brightness(1.30)
      saturate(1.25)
      drop-shadow(0 0 10px rgba(255,84,36,.88))
      drop-shadow(0 0 22px rgba(236,126,48,.44));
  }
}


/* ============================================================
   v222 DAILY STAGE SELECT
   巡行 > デイリー巡行 > 中級/上級 > パーティ選択
   ============================================================ */
.shooting-daily-stage-header{
  position:relative;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
}

.shooting-daily-stage-header .shooting-faceless-stage-back{
  position:absolute;
  left:0;
  top:50%;
  transform:translateY(-50%);
}

.shooting-daily-stage-subtitle{
  margin-top:1px;
  color:#9a8158;
  font-family:"Noto Serif JP",serif;
  font-size:10px;
  font-weight:500;
  letter-spacing:.08em;
  line-height:1.25;
}

.shooting-daily-stage-row{
  min-height:112px;
}

.shooting-daily-stage-row.is-exhausted{
  opacity:.48;
  filter:saturate(.55);
}

.shooting-daily-stage-row.is-exhausted:active{
  transform:none;
}

.shooting-daily-stage-remaining{
  margin-left:auto;
  color:#8c7350;
  font-size:10px;
  font-weight:500;
  letter-spacing:.03em;
  white-space:nowrap;
}

.shooting-daily-stage-reward{
  margin-top:9px;
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}

.shooting-daily-stage-reward-coin{
  margin-right:2px;
}

.shooting-daily-stage-reward-label{
  color:#9b835e;
  font-size:9px;
  letter-spacing:.12em;
}

.shooting-daily-stage-reward-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-height:auto;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}

.shooting-daily-stage-reward-chip img{
  width:28px;
  height:28px;
  object-fit:contain;
  flex:0 0 auto;
  filter:none;
}

.shooting-daily-stage-reward-chip b{
  min-width:auto;
  padding:0;
  color:#7c6238;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:11px;
  font-weight:700;
  line-height:1;
  text-align:left;
  white-space:nowrap;
}

@media (max-width:480px){
  .shooting-daily-stage-row{
    min-height:106px;
  }
  .shooting-daily-stage-reward{
    margin-top:7px;
  }
}


/* ============================================================
   v224 BATTLE UI
   待機キャラの属性アイコンは表示しない。操作中キャラのみ表示。
   ============================================================ */
#shooting-event-root .shooting-switch-element-icon{
  display:none!important;
}
/* ============================================================
   v213 Battle typography visibility pass
   - Increase only text legibility; preserve existing box geometry.
   - Narrow-device rules are intentionally overridden here so that
     the 360-390px battle layout does not shrink text excessively.
   ============================================================ */
#shooting-event-root .shooting-hud-title > span{
  font-size:9px !important;
  line-height:1.05;
}
#shooting-event-root .shooting-hud-title > strong{
  font-size:17px !important;
  line-height:1.08;
}
#shooting-event-root #shooting-hud-difficulty{
  font-size:9px !important;
}
#shooting-event-root .shooting-score{
  font-size:13px !important;
  line-height:1.05;
}
#shooting-event-root .shooting-high-score-label{
  font-size:11px !important;
}
#shooting-event-root .shooting-high-score-value{
  font-size:13px !important;
}

#shooting-event-root .shooting-boss-name{
  font-size:10px !important;
}
#shooting-event-root .shooting-boss-phase{
  font-size:9px !important;
}

#shooting-event-root .shooting-mission-hud span{
  font-size:8px !important;
  line-height:1.15;
}
#shooting-event-root .shooting-mission-hud strong{
  font-size:12px !important;
  line-height:1.25;
}
#shooting-event-root .shooting-mission-hud b{
  font-size:10px !important;
  line-height:1.15;
}

#shooting-event-root .shooting-combo span{
  font-size:9px !important;
}
#shooting-event-root .shooting-switch-status{
  width:82px !important;
  font-size:8px !important;
  line-height:1.15;
  letter-spacing:.08em;
}

#shooting-event-root .shooting-ult-side-copy span{
  font-size:11px !important;
  font-weight:500;
}
#shooting-event-root .shooting-battle-timer small{
  font-size:7px !important;
}
#shooting-event-root .shooting-battle-timer strong{
  font-size:20px !important;
}

#shooting-event-root .shooting-player-name{
  font-size:12px !important;
  line-height:1.1;
}
#shooting-event-root .shooting-player-hp-text{
  font-size:12px !important;
  line-height:1.1;
  font-weight:600;
  letter-spacing:.03em;
}
#shooting-event-root .shooting-battle-menu-btn,
#shooting-event-root .shooting-ui-layout-btn{
  font-size:12px !important;
}

/* 360-390px class phones: keep the layout sizes, but do not downscale text. */
@media (max-width:390px){
  #shooting-event-root .shooting-hud-title > span{font-size:8px !important}
  #shooting-event-root .shooting-hud-title > strong{font-size:15px !important}
  #shooting-event-root .shooting-score{font-size:11px !important}
  #shooting-event-root .shooting-high-score-label{font-size:10px !important}
  #shooting-event-root .shooting-high-score-value{font-size:12px !important}

  #shooting-event-root .shooting-mission-hud span{font-size:7px !important}
  #shooting-event-root .shooting-mission-hud strong{font-size:11px !important}
  #shooting-event-root .shooting-mission-hud b{font-size:9px !important}

  #shooting-event-root .shooting-player-name{font-size:11px !important}
  #shooting-event-root .shooting-player-hp-text{font-size:11px !important}
  #shooting-event-root .shooting-battle-menu-btn,
  #shooting-event-root .shooting-ui-layout-btn{font-size:11px !important}
  #shooting-event-root .shooting-switch-status{font-size:8px !important}
}


/* =========================================================
   build479: PARTY SELECT
   タップ=選択 / 長押し=詳細 / 現在Lv表示
   ========================================================= */
.shooting-party-roster .shooting-character-info-button{
  display:none !important;
}
.shooting-party-roster .shooting-character-option,
.shooting-party-roster .shooting-character-portrait,
.shooting-party-roster .shooting-character-portrait img{
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  user-select:none;
}
.shooting-party-roster .shooting-character-portrait{
  position:relative;
}
.shooting-party-roster .shooting-character-level{
  position:absolute;
  z-index:5;
  left:5px;
  bottom:5px;
  min-width:31px;
  height:17px;
  padding:0 5px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(159,124,57,.42);
  border-radius:2px;
  background:rgba(255,253,247,.92);
  color:#735a30;
  box-shadow:0 1px 5px rgba(75,55,24,.12);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:8px;
  font-weight:600;
  line-height:1;
  letter-spacing:.02em;
  font-variant-numeric:tabular-nums;
  pointer-events:none;
}
.shooting-party-roster .shooting-character-option.long-press-active{
  border-color:rgba(173,132,54,.76) !important;
  box-shadow:
    inset 0 0 0 1px rgba(207,169,94,.34),
    0 0 12px rgba(173,132,54,.16) !important;
}
.shooting-party-roster .shooting-character-option.long-press-active .shooting-character-portrait{
  filter:brightness(.97);
}


/* =========================================================
   build480: PARTY SELECT
   キャラ名を廃止し、パネル下部の名称位置を現在Lv表示へ変更。
   ========================================================= */
.shooting-party-roster .shooting-character-level{
  display:none !important;
}

.shooting-party-roster .shooting-character-level-label{
  display:block;
  width:100%;
  margin-top:4px;
  text-align:center;
  color:#735a30 !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:9px !important;
  font-weight:600 !important;
  line-height:1.15 !important;
  letter-spacing:.05em !important;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}


/* =========================================================
   build484: PARTY SELECT
   キャラパネル画像左上に属性アイコンを表示。
   ========================================================= */
.shooting-party-roster .shooting-character-portrait{
  position:relative !important;
}
.shooting-party-roster .shooting-character-element-icon{
  position:absolute !important;
  z-index:6 !important;
  top:0 !important;
  left:0 !important;
  width:20px !important;
  height:20px !important;
  object-fit:contain !important;
  border-radius:50% !important;
  background:rgba(255,253,247,.86) !important;
  border:1px solid rgba(176,143,77,.30) !important;
  box-shadow:
    0 1px 5px rgba(63,46,21,.16),
    0 0 0 1px rgba(255,255,255,.55) inset !important;
  pointer-events:none !important;
  filter:none !important;
}


/* ============================================================
   build504: ULT element visual unification
   - ULT内部属性は shooting_core.js の ultElement / character.element を正本とする。
   - 画像カットイン(.shooting-ult-cutin-image)は色加工しない。
   - DOM/CSSだけで描画するULT演出は属性色へ寄せる。
   ============================================================ */
#shooting-event-root.ult-flash-element .shooting-wash{
  animation:shootingUltElementFlash .68s ease-out !important;
}
@keyframes shootingUltElementFlash{
  0%{background:rgba(var(--ult-element-rgb,244,239,227),0)}
  18%{background:rgba(var(--ult-element-rgb,244,239,227),.62)}
  48%{background:rgba(var(--ult-element-rgb,244,239,227),.22)}
  100%{background:rgba(var(--ult-element-rgb,244,239,227),0)}
}

#shooting-event-root .shooting-ult-cut{
  border-color:rgba(var(--ult-element-rgb,244,239,227),.46) !important;
  box-shadow:0 0 20px rgba(var(--ult-element-rgb,244,239,227),.16) !important;
  background:linear-gradient(90deg,
    rgba(255,255,255,.06),
    rgba(var(--ult-element-rgb,244,239,227),.26) 18%,
    rgba(var(--ult-element-rgb,244,239,227),.52) 72%,
    rgba(255,255,255,.08)) !important;
}
#shooting-event-root .shooting-ult-cut span{
  color:var(--ult-element-color,#f4efe3) !important;
}

/* 非画像ULTのエフェクト本体。形状・アニメーションは維持し、色相だけ属性へ統一する。 */
#shooting-event-root .shooting-eri-ult-mark,
#shooting-event-root .shooting-eri-ult-slash,
#shooting-event-root .shooting-ayane-blackhand-ult,
#shooting-event-root .shooting-ayane-blackhand-impact,
#shooting-event-root .shooting-ayane-blackhand-grip-ring,
#shooting-event-root .shooting-ayane-blackhand-smoke,
#shooting-event-root .shooting-ayane-multi-grip,
#shooting-event-root .shooting-gojo-purple-wave,
#shooting-event-root .shooting-arno-aura,
#shooting-event-root .shooting-ignis-burn,
#shooting-event-root .shooting-ignis-fire-wheel,
#shooting-event-root .shooting-clarine-decoy,
#shooting-event-root .shooting-clarine-decoy-burst,
#shooting-event-root .shooting-rose-flower,
#shooting-event-root .shooting-rose-flower-aura,
#shooting-event-root .shooting-rose-heart-shape,
#shooting-event-root .shooting-sui-clock-burst,
#shooting-event-root .shooting-sui-clock-mark,
#shooting-event-root .shooting-jig-scramble-ray,
#shooting-event-root .shooting-noah-lightning,
#shooting-event-root .shooting-shiina-light-ring,
#shooting-event-root .shooting-shion-curse-mark,
#shooting-event-root .shooting-testchan-blackship-beam{
  filter:var(--ult-element-filter,none) drop-shadow(0 0 7px rgba(var(--ult-element-rgb,244,239,227),.68)) !important;
}

/* 画像そのものは加工対象外。 */
#shooting-event-root .shooting-ult-cutin-image,
#shooting-event-root .shooting-shuri-scythe-img{
  filter:none !important;
}


/* build506: Sunday DAILY QUEST shows all six possible random-material rewards. */
.shooting-daily-stage-reward-chip.is-random-list{
  display:inline-flex;
  align-items:center;
  gap:3px;
  flex-wrap:nowrap;
}
.shooting-daily-stage-random-item{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.shooting-daily-stage-random-item img{
  width:24px!important;
  height:24px!important;
  object-fit:contain;
}


/* ============================================================
   MITO build510 - independent HP summon
   ============================================================ */
#shooting-event-root .shooting-mito-companion{
  width:72px!important;
  height:94px!important;
  opacity:0!important;
  transition:opacity .10s ease!important;
  object-fit:contain!important;
  pointer-events:none!important;
}
#shooting-event-root .shooting-mito-companion.show,
#shooting-event-root .shooting-mito-companion.mito-summon-active{
  opacity:1!important;
}
#shooting-event-root .shooting-mito-companion.mito-summon-active{
  z-index:17!important;
  filter:
    drop-shadow(0 5px 7px rgba(70,55,35,.16))
    drop-shadow(0 0 6px rgba(245,239,210,.36))!important;
}
#shooting-event-root .shooting-mito-companion.hit{
  filter:
    brightness(1.55)
    drop-shadow(0 0 9px rgba(255,170,150,.75))!important;
}
#shooting-event-root .shooting-mito-summon-hp{
  position:absolute!important;
  left:0!important;
  top:0!important;
  z-index:18!important;
  width:54px!important;
  height:4px!important;
  border:1px solid rgba(112,91,55,.32)!important;
  border-radius:999px!important;
  overflow:hidden!important;
  background:rgba(255,255,255,.72)!important;
  opacity:0!important;
  pointer-events:none!important;
  box-shadow:0 1px 3px rgba(62,46,24,.10)!important;
}
#shooting-event-root .shooting-mito-summon-hp.show{opacity:1!important}
#shooting-event-root .shooting-mito-summon-hp i{
  display:block!important;
  width:100%!important;
  height:100%!important;
  transform-origin:left center!important;
  background:linear-gradient(90deg,#d8bd70,#eee1ad)!important;
  transition:transform .08s linear!important;
}
#shooting-event-root .shooting-mito-summon-hp.low i{
  background:linear-gradient(90deg,#b56b58,#d6a37d)!important;
}
#shooting-event-root .shooting-mito-summon-hp.hit{
  box-shadow:0 0 7px rgba(189,93,70,.52)!important;
}

/* 旧時間停止見た目は無効 */
#shooting-event-root.mito-time-stop-active .shooting-bg,
#shooting-event-root.mito-time-stop-active .shooting-wash,
#shooting-event-root.mito-time-stop-active .shooting-boss,
#shooting-event-root.mito-time-stop-active .shooting-normal-enemy{
  filter:none!important;
}


/* ============================================================
   GRESHA build512 - 焼野原
   ============================================================ */
#shooting-event-root .shooting-gresha-burn-field{
  position:absolute!important;
  left:0!important;
  top:0!important;
  z-index:7!important;
  overflow:hidden!important;
  pointer-events:none!important;
  border-radius:42% 38% 46% 40%!important;
  border:1px solid rgba(196,75,35,.30)!important;
  background:
    radial-gradient(ellipse at 50% 72%,rgba(255,205,88,.24),rgba(212,74,28,.15) 38%,rgba(116,42,24,.08) 62%,transparent 78%)!important;
  box-shadow:
    inset 0 0 30px rgba(231,84,28,.14),
    0 0 18px rgba(210,75,32,.10)!important;
  opacity:.88!important;
  transform-origin:center center!important;
}
#shooting-event-root .shooting-gresha-burn-field .gresha-burn-glow,
#shooting-event-root .shooting-gresha-burn-field .gresha-burn-ground{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  pointer-events:none!important;
}
#shooting-event-root .shooting-gresha-burn-field .gresha-burn-glow{
  background:
    radial-gradient(circle at 18% 65%,rgba(255,173,64,.28),transparent 18%),
    radial-gradient(circle at 44% 72%,rgba(255,113,44,.34),transparent 22%),
    radial-gradient(circle at 71% 62%,rgba(255,186,69,.24),transparent 20%),
    radial-gradient(circle at 86% 74%,rgba(222,68,29,.28),transparent 17%)!important;
  filter:blur(3px)!important;
  animation:greshaBurnGlow 1.15s ease-in-out infinite alternate!important;
}
#shooting-event-root .shooting-gresha-burn-field .gresha-burn-ground{
  inset:auto 4% 8% 4%!important;
  height:34%!important;
  border-radius:50%!important;
  background:linear-gradient(90deg,transparent,rgba(112,47,30,.24),rgba(190,70,30,.24),rgba(112,47,30,.20),transparent)!important;
  filter:blur(2px)!important;
}
#shooting-event-root .shooting-gresha-burn-field.tick{
  filter:brightness(1.26) saturate(1.18)!important;
}
#shooting-event-root .shooting-gresha-burn-field .gresha-ember{
  position:absolute!important;
  bottom:14%!important;
  width:4px!important;
  height:4px!important;
  border-radius:50%!important;
  background:#ffd48c!important;
  box-shadow:0 0 7px rgba(255,118,49,.82)!important;
  opacity:0!important;
}
#shooting-event-root .shooting-gresha-burn-field .e1{left:12%;animation:greshaEmber 1.45s ease-out .05s infinite!important}
#shooting-event-root .shooting-gresha-burn-field .e2{left:29%;animation:greshaEmber 1.72s ease-out .38s infinite!important}
#shooting-event-root .shooting-gresha-burn-field .e3{left:44%;animation:greshaEmber 1.38s ease-out .72s infinite!important}
#shooting-event-root .shooting-gresha-burn-field .e4{left:59%;animation:greshaEmber 1.64s ease-out .18s infinite!important}
#shooting-event-root .shooting-gresha-burn-field .e5{left:74%;animation:greshaEmber 1.52s ease-out .54s infinite!important}
#shooting-event-root .shooting-gresha-burn-field .e6{left:88%;animation:greshaEmber 1.81s ease-out .93s infinite!important}
@keyframes greshaBurnGlow{
  from{opacity:.72;transform:scale(.98)}
  to{opacity:1;transform:scale(1.02)}
}
@keyframes greshaEmber{
  0%{opacity:0;transform:translate3d(0,0,0) scale(.7)}
  18%{opacity:.95}
  100%{opacity:0;transform:translate3d(5px,-62px,0) scale(.25)}
}


/* ============================================================
   v539 CHARGE PREVIEW — MIA(14) / AINA(17)
   - 実キャラIDへ修正（旧指定13では表示されなかった）
   - 長押し中、射出位置に弾体を表示して徐々に拡大
   - ミア=水 / アイナ=火 の見た目を分離
   ============================================================ */
#shooting-event-root .shooting-player:is([data-character-id="14"],[data-character-id="17"]).mia-charging{
  overflow:visible!important;
}

/* ミア：射出中心 = player center - 44px / 最大76px */
#shooting-event-root .shooting-player[data-character-id="14"].mia-charging::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:18!important;
  left:50%!important;
  top:calc(50% - 44px)!important;
  width:76px!important;
  height:76px!important;
  transform:translate(-50%,-50%) scale(.395)!important;
  transform-origin:center center!important;
  border:0!important;
  outline:0!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle at 44% 36%,
      rgba(255,255,255,.99) 0 12%,
      rgba(232,250,255,.94) 18%,
      rgba(164,232,255,.66) 38%,
      rgba(79,186,244,.34) 58%,
      rgba(24,121,211,.13) 76%,
      transparent 92%)!important;
  box-shadow:
    0 0 10px rgba(246,253,255,.82),
    0 0 24px rgba(117,219,255,.52),
    0 0 42px rgba(52,160,237,.26)!important;
  opacity:.76!important;
  filter:none!important;
  pointer-events:none!important;
  animation:zeraphiaChargeGrowMia 1000ms linear forwards!important;
}
#shooting-event-root .shooting-player[data-character-id="14"].mia-charging::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:17!important;
  left:50%!important;
  top:calc(50% - 44px)!important;
  width:102px!important;
  height:102px!important;
  transform:translate(-50%,-50%) scale(.30)!important;
  transform-origin:center center!important;
  border:0!important;
  border-radius:50%!important;
  background:radial-gradient(circle,rgba(220,247,255,.28) 0 26%,rgba(116,215,255,.18) 44%,rgba(42,146,229,.07) 65%,transparent 84%)!important;
  box-shadow:none!important;
  filter:blur(7px)!important;
  opacity:.46!important;
  pointer-events:none!important;
  animation:zeraphiaChargeHaloGrowMia 1000ms linear forwards!important;
}

/* アイナ：射出中心 = player center - 40px / 最大72px */
#shooting-event-root .shooting-player[data-character-id="17"].mia-charging::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:18!important;
  left:50%!important;
  top:calc(50% - 40px)!important;
  width:72px!important;
  height:72px!important;
  transform:translate(-50%,-50%) scale(.389)!important;
  transform-origin:center center!important;
  border:0!important;
  outline:0!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle at 44% 36%,
      rgba(255,255,255,.99) 0 11%,
      rgba(255,241,221,.95) 18%,
      rgba(255,188,109,.70) 38%,
      rgba(244,102,53,.40) 58%,
      rgba(177,42,20,.16) 76%,
      transparent 92%)!important;
  box-shadow:
    0 0 10px rgba(255,248,231,.84),
    0 0 24px rgba(255,153,75,.58),
    0 0 42px rgba(225,68,35,.28)!important;
  opacity:.78!important;
  filter:none!important;
  pointer-events:none!important;
  animation:zeraphiaChargeGrowAina 1200ms linear forwards!important;
}
#shooting-event-root .shooting-player[data-character-id="17"].mia-charging::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:17!important;
  left:50%!important;
  top:calc(50% - 40px)!important;
  width:98px!important;
  height:98px!important;
  transform:translate(-50%,-50%) scale(.30)!important;
  transform-origin:center center!important;
  border:0!important;
  border-radius:50%!important;
  background:radial-gradient(circle,rgba(255,234,194,.30) 0 25%,rgba(255,143,68,.20) 43%,rgba(210,54,25,.08) 65%,transparent 84%)!important;
  box-shadow:none!important;
  filter:blur(7px)!important;
  opacity:.48!important;
  pointer-events:none!important;
  animation:zeraphiaChargeHaloGrowAina 1200ms linear forwards!important;
}

@keyframes zeraphiaChargeGrowMia{
  0%{transform:translate(-50%,-50%) scale(.395);opacity:.76}
  55%{transform:translate(-50%,-50%) scale(.70);opacity:.88}
  100%{transform:translate(-50%,-50%) scale(1);opacity:1}
}
@keyframes zeraphiaChargeHaloGrowMia{
  0%{transform:translate(-50%,-50%) scale(.30);opacity:.34}
  55%{transform:translate(-50%,-50%) scale(.68);opacity:.48}
  100%{transform:translate(-50%,-50%) scale(1);opacity:.62}
}
@keyframes zeraphiaChargeGrowAina{
  0%{transform:translate(-50%,-50%) scale(.389);opacity:.78}
  55%{transform:translate(-50%,-50%) scale(.70);opacity:.90}
  100%{transform:translate(-50%,-50%) scale(1);opacity:1}
}
@keyframes zeraphiaChargeHaloGrowAina{
  0%{transform:translate(-50%,-50%) scale(.30);opacity:.36}
  55%{transform:translate(-50%,-50%) scale(.68);opacity:.50}
  100%{transform:translate(-50%,-50%) scale(1);opacity:.64}
}

/* MAX到達後は、成長済みサイズを保ったまま軽く脈動 */
#shooting-event-root .shooting-player[data-character-id="14"].mia-charging.mia-charge-max::after,
#shooting-event-root .shooting-player[data-character-id="17"].mia-charging.mia-charge-max::after{
  animation:zeraphiaChargeMaxPulse .50s ease-in-out infinite alternate!important;
}
#shooting-event-root .shooting-player[data-character-id="14"].mia-charging.mia-charge-max::before,
#shooting-event-root .shooting-player[data-character-id="17"].mia-charging.mia-charge-max::before{
  animation:zeraphiaChargeMaxHaloPulse .50s ease-in-out infinite alternate!important;
}
@keyframes zeraphiaChargeMaxPulse{
  from{transform:translate(-50%,-50%) scale(.96);opacity:.90}
  to{transform:translate(-50%,-50%) scale(1.08);opacity:1}
}
@keyframes zeraphiaChargeMaxHaloPulse{
  from{transform:translate(-50%,-50%) scale(.92);opacity:.48}
  to{transform:translate(-50%,-50%) scale(1.08);opacity:.68}
}

/* ============================================================
   v540 AINA CHARGE RELEASE — FIRE RED
   アイナ(ID17)のCHARGE射出弾には shooting-bullet-fire が付くため、
   共通の水色CHARGE弾スタイルを火属性の赤系へ最終上書きする。
   ============================================================ */
#shooting-event-root .shooting-mia-charge-shot.shooting-bullet-fire{
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:
    0 0 10px rgba(255,239,224,.30),
    0 0 24px rgba(255,91,58,.34),
    0 4px 38px rgba(190,34,24,.22)!important;
  filter:none!important;
}

#shooting-event-root .shooting-mia-charge-shot.shooting-bullet-fire::before{
  background:
    radial-gradient(circle at 46% 38%,
      rgba(255,255,255,.99) 0 12%,
      rgba(255,238,219,.96) 18%,
      rgba(255,160,104,.78) 38%,
      rgba(244,67,48,.50) 60%,
      rgba(165,28,20,.18) 78%,
      transparent 100%)!important;
  filter:blur(1px)!important;
  opacity:.98!important;
}

#shooting-event-root .shooting-mia-charge-shot.shooting-bullet-fire::after{
  background:
    radial-gradient(ellipse at 50% 42%,
      rgba(255,224,189,.46) 0 22%,
      rgba(255,111,67,.34) 38%,
      rgba(226,50,34,.20) 58%,
      rgba(150,24,18,.08) 74%,
      transparent 88%)!important;
  filter:blur(6px)!important;
  opacity:.92!important;
}

/* ============================================================
   build546 — ELEMENT DAMAGE FEEDBACK
   属性相性が発生した命中だけ、ダメージ数字の上に Weak / Resist を表示。
   ============================================================ */
.shooting-damage-number{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1px;
  white-space:nowrap;
}
.shooting-damage-number .shooting-damage-value{
  display:block;
  line-height:1;
}
.shooting-damage-number .shooting-element-reaction{
  display:block;
  margin:0 0 1px;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:8px;
  font-weight:800;
  line-height:1;
  letter-spacing:.045em;
  text-transform:none;
  text-shadow:
    0 1px 2px rgba(0,0,0,.82),
    0 0 4px rgba(0,0,0,.35);
}
.shooting-damage-number.element-weak .shooting-element-reaction{
  color:#ffd08a;
}
.shooting-damage-number.element-resist .shooting-element-reaction{
  color:#9bc8ff;
}
.shooting-damage-number.to-player.element-weak .shooting-element-reaction{
  color:#ffb47d;
}
.shooting-damage-number.to-player.element-resist .shooting-element-reaction{
  color:#a9d5ff;
}
.shooting-damage-number.big .shooting-element-reaction{
  font-size:9px;
}


/* ============================================================
   CHAPTER 06 — BARRIER / IMMUNE
   ============================================================ */
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier{
  position:absolute;left:0;top:0;z-index:23;pointer-events:none;box-sizing:border-box;
  border:1px solid rgba(189,171,132,.72);border-radius:999px;
  background:linear-gradient(90deg,rgba(255,255,255,.90),rgba(230,221,200,.84) 22%,rgba(255,255,255,.94) 50%,rgba(230,221,200,.84) 78%,rgba(255,255,255,.90));
  box-shadow:0 0 0 1px rgba(255,255,255,.75) inset,0 0 14px rgba(208,190,150,.30),0 4px 12px rgba(81,65,39,.12);
  opacity:.96;
}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::after{
  content:"";position:absolute;top:50%;width:18px;height:18px;border:1px solid rgba(153,127,79,.58);
  background:rgba(255,253,246,.96);transform:translateY(-50%) rotate(45deg);box-shadow:0 0 8px rgba(202,176,120,.24);
}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::before{left:8px}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::after{right:8px}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier i{position:absolute;left:30px;right:30px;top:50%;height:1px;transform:translateY(-50%);background:repeating-linear-gradient(90deg,rgba(143,115,68,.42) 0 10px,transparent 10px 18px)}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier b{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%) rotate(45deg);border:1px solid rgba(147,118,70,.62);background:rgba(255,252,242,.98)}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier.hit{filter:brightness(1.12);box-shadow:0 0 0 1px rgba(255,255,255,.9) inset,0 0 18px rgba(213,181,111,.62),0 0 30px rgba(255,245,211,.48)}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-strong-enemy{filter:drop-shadow(0 8px 12px rgba(67,48,28,.16))}
.shooting-damage-number.element-immune .shooting-element-reaction{color:#807666!important;text-shadow:none!important;letter-spacing:.12em!important}
.shooting-damage-number.element-immune .shooting-damage-value{color:#aaa295!important;text-shadow:none!important}


/* ============================================================
   build549 DAILY ADVANCED — wall + weakness-only elemental shield
   上級巡行の壁はCH06と同じ当たり判定を使用。
   耐性雑魚は自身の属性色バリアをまとい、Weak属性以外はIMMUNE。
   ============================================================ */
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier{
  position:absolute;left:0;top:0;z-index:23;pointer-events:none;box-sizing:border-box;
  border:1px solid rgba(189,171,132,.72);border-radius:999px;
  background:linear-gradient(90deg,rgba(255,255,255,.90),rgba(230,221,200,.84) 22%,rgba(255,255,255,.94) 50%,rgba(230,221,200,.84) 78%,rgba(255,255,255,.90));
  box-shadow:0 0 0 1px rgba(255,255,255,.75) inset,0 0 14px rgba(208,190,150,.30),0 4px 12px rgba(81,65,39,.12);
  opacity:.96;
}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::after{
  content:"";position:absolute;top:50%;width:18px;height:18px;border:1px solid rgba(153,127,79,.58);
  background:rgba(255,253,246,.96);transform:translateY(-50%) rotate(45deg);box-shadow:0 0 8px rgba(202,176,120,.24);
}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::before{left:8px}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::after{right:8px}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier i{position:absolute;left:30px;right:30px;top:50%;height:1px;transform:translateY(-50%);background:repeating-linear-gradient(90deg,rgba(143,115,68,.42) 0 10px,transparent 10px 18px)}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier b{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%) rotate(45deg);border:1px solid rgba(147,118,70,.62);background:rgba(255,252,242,.98)}
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier.hit{filter:brightness(1.12);box-shadow:0 0 0 1px rgba(255,255,255,.9) inset,0 0 18px rgba(213,181,111,.62),0 0 30px rgba(255,245,211,.48)}

#shooting-event-root .shooting-mini-enemy-weakness-barrier{
  --weak-shield-rgb:130,130,130;
  position:absolute;left:0;top:0;z-index:1;pointer-events:none;box-sizing:border-box;
  border-radius:50%;
  border:1px solid rgba(var(--weak-shield-rgb),.72);
  background:
    radial-gradient(circle,transparent 0 48%,rgba(var(--weak-shield-rgb),.07) 55%,rgba(var(--weak-shield-rgb),.24) 67%,rgba(var(--weak-shield-rgb),.05) 76%,transparent 79%),
    conic-gradient(from 20deg,transparent 0 13%,rgba(var(--weak-shield-rgb),.42) 16%,transparent 20% 46%,rgba(var(--weak-shield-rgb),.30) 50%,transparent 54% 80%,rgba(var(--weak-shield-rgb),.38) 84%,transparent 88%);
  box-shadow:
    0 0 8px rgba(var(--weak-shield-rgb),.32),
    0 0 18px rgba(var(--weak-shield-rgb),.20),
    inset 0 0 10px rgba(var(--weak-shield-rgb),.18);
  opacity:.92;
  animation:shootingWeaknessBarrierSpin 5.6s linear infinite;
}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.element-fire{--weak-shield-rgb:224,74,55}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.element-aqua{--weak-shield-rgb:62,155,220}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.element-wood{--weak-shield-rgb:75,158,83}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.element-light{--weak-shield-rgb:220,186,70}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.element-dark{--weak-shield-rgb:128,84,174}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.hit{
  opacity:1;
  box-shadow:
    0 0 12px rgba(var(--weak-shield-rgb),.65),
    0 0 28px rgba(var(--weak-shield-rgb),.48),
    inset 0 0 18px rgba(var(--weak-shield-rgb),.34);
}
#shooting-event-root .shooting-mini-enemy-weakness-barrier.defeated{opacity:0;transition:opacity .20s ease}
#shooting-event-root .shooting-mini-enemy.has-weakness-barrier{position:absolute;z-index:2}
@keyframes shootingWeaknessBarrierSpin{
  from{rotate:0deg}
  to{rotate:360deg}
}


/* ============================================================
   build557 — COMBO position common adjustment
   Keep COMBO below mission / boss HP HUD on every battle stage.
   ============================================================ */
#shooting-event-root .shooting-combo{
  top:46px !important;
}

/* ============================================================
   build558 — COMBO position: upper-right
   Move the common COMBO counter from the left side to the right,
   while keeping the build557 vertical offset below stage HUDs.
   ============================================================ */
#shooting-event-root .shooting-combo{
  left:auto !important;
  right:16px !important;
  top:46px !important;
  align-items:flex-end !important;
  text-align:right !important;
  transform-origin:right center !important;
}
#shooting-event-root .shooting-combo span{
  padding-left:0 !important;
  padding-right:2px !important;
}
@media(max-width:420px){
  #shooting-event-root .shooting-combo{
    left:auto !important;
    right:14px !important;
    top:46px !important;
  }
}


/* ============================================================
   build571 DARK ATTRIBUTE ICON — supplied artwork
   水彩/月輪の type_dark.webp をそのまま表示する。
   戦闘HUDでも単色化・色変換を行わない。
   ============================================================ */
#shooting-event-root img[src*="type_dark.webp"]{
  filter:none !important;
}

/* ============================================================
   build569 DARK ATTRIBUTE PROJECTILES — final violet override
   FIRE(赤) / AQUA(青) と混同しない、赤青どちらにも寄せすぎない中間紫。
   旧キャラ固有の黒系指定より後段で属性色を優先する。
   ============================================================ */
#shooting-event-root .shooting-bullet.shooting-bullet-dark{
  background:radial-gradient(circle at 38% 34%,#fff 0 9%,#e6d8f1 17%,#b486d2 36%,#8755b2 61%,rgba(94,53,132,.34) 100%)!important;
  border-color:rgba(223,201,240,.90)!important;
  box-shadow:0 0 6px rgba(245,236,252,.80),0 0 13px rgba(139,91,181,.72),0 0 22px rgba(91,53,127,.46)!important;
  filter:none!important;
}
#shooting-event-root .shooting-bullet.shooting-bullet-dark::before{
  border-color:rgba(180,139,212,.86)!important;
  box-shadow:0 0 8px rgba(128,84,174,.58)!important;
}
#shooting-event-root .shooting-bullet.shooting-bullet-dark::after{
  background:radial-gradient(circle,rgba(172,127,207,.30),rgba(105,62,145,.16) 48%,transparent 72%)!important;
}
#shooting-event-root .shooting-enemy-element-dark.shooting-generic-zako-shot{
  background:radial-gradient(circle,#fff 0 13%,#d8c2ec 28%,#9f6fc5 48%,#8054ae 70%,rgba(91,53,127,.14) 100%)!important;
  box-shadow:0 0 8px rgba(153,109,193,.72)!important;
}
#shooting-event-root .shooting-enemy-element-dark.shooting-generic-zako-laser{
  background:linear-gradient(180deg,#fff 0%,#ddcaed 24%,#9d6bc3 48%,#8054ae 70%,rgba(91,53,127,.22))!important;
  box-shadow:0 0 7px rgba(173,131,207,.76),0 0 15px rgba(128,84,174,.42)!important;
}
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-enemy-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-mini-enemy-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-bullet,
#shooting-event-root[data-shooting-stage^="shooting_event_faceless"] .shooting-faceless-object-bullet{
  background:#8054ae!important;
  border:1px solid rgba(215,191,235,.58)!important;
  box-shadow:none!important;
  filter:none!important;
  opacity:1!important;
}

/* ============================================================
   build787 DAILY STAGE SELECT — STANDARD PAGE CANONICAL
   巡行トップと同じZERAPHIA標準レイアウトへ統一。
   - Global HUD / Bottom Nav を残す
   - app_chrome.css のヘッダー寸法・文字色・文字サイズを使用
   - zeraphia_bg_01.webp / junkou_right.webp で巡行トップと同一の紙面
   - 角丸なし / 明朝 / 白・金・ベージュ / 細線
   ============================================================ */
html body:not(.ui-immersive) .shooting-faceless-stage-select.shooting-daily-stage-select{
  position:fixed !important;
  top:0 !important;
  right:0 !important;
  bottom:0 !important;
  left:0 !important;
  width:100% !important;
  height:100dvh !important;
  box-sizing:border-box !important;
  padding:var(--header-h,72px) 0 var(--bottom-nav-h,76px) !important;
  z-index:210 !important;
  overflow:hidden !important;
  background-color:#f6f2e8 !important;
  background-image:url("../images/zeraphia_bg_01.webp") !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  color:#4b4640 !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select.shooting-daily-stage-select::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  background:linear-gradient(180deg,
    rgba(255,255,255,.18) 0%,
    rgba(255,255,255,.04) 42%,
    rgba(247,241,230,.08) 100%) !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-page{
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  max-width:430px !important;
  height:100% !important;
  min-height:0 !important;
  margin:0 auto !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  background:transparent !important;
  box-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-page::after{
  content:none !important;
  display:none !important;
}

/* Standard Page headerと同じ52px / 色 / 明朝 / 余白 */
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header{
  position:relative !important;
  z-index:220 !important;
  flex:0 0 var(--app-page-header-h,52px) !important;
  width:100% !important;
  height:var(--app-page-header-h,52px) !important;
  min-height:var(--app-page-header-h,52px) !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:0 var(--app-page-side,18px) !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:3px !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  isolation:isolate !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header::after{
  content:"" !important;
  position:absolute !important;
  z-index:-1 !important;
  pointer-events:none !important;
  left:-6% !important;
  right:-6% !important;
  top:22% !important;
  height:78px !important;
  background:linear-gradient(to bottom,
    rgba(255,255,255,.82) 0%,
    rgba(255,255,255,.66) 34%,
    rgba(255,255,255,.35) 66%,
    rgba(255,255,255,0) 100%) !important;
  filter:blur(10px) !important;
  -webkit-filter:blur(10px) !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header .shooting-faceless-stage-back{
  position:absolute !important;
  left:var(--app-page-side,18px) !important;
  top:50% !important;
  transform:translateY(-50%) !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  min-width:52px !important;
  height:44px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:var(--app-back-color,#837361) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-back-size,11px) !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.015em !important;
  text-shadow:0 0 8px rgba(255,255,255,.80) !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header .shooting-faceless-stage-back:active{
  opacity:.58 !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-title{
  margin:0 !important;
  padding:0 !important;
  color:var(--app-title-color,#6f5535) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-title-size,15px) !important;
  font-weight:500 !important;
  font-style:normal !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  text-indent:.12em !important;
  text-shadow:0 0 9px rgba(255,255,255,.72) !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-subtitle{
  margin:0 !important;
  color:#aa8a56 !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:7px !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  text-shadow:0 0 8px rgba(255,255,255,.66) !important;
  white-space:nowrap !important;
}

/* 巡行トップ右カードと同じ紙カード言語 */
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-list{
  position:relative !important;
  z-index:1 !important;
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch !important;
  display:flex !important;
  flex-direction:column !important;
  gap:8px !important;
  padding:18px 14px 24px !important;
  box-sizing:border-box !important;
  background:transparent !important;
  scrollbar-width:none !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-list::-webkit-scrollbar{
  display:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{
  appearance:none !important;
  -webkit-appearance:none !important;
  position:relative !important;
  width:100% !important;
  min-height:124px !important;
  margin:0 !important;
  padding:14px 14px 14px 15px !important;
  box-sizing:border-box !important;
  display:grid !important;
  grid-template-columns:28px minmax(0,1fr) !important;
  align-items:center !important;
  gap:10px !important;
  border:0 !important;
  border-radius:0 !important;
  background:url("../images/junkou_right.webp") center/100% 100% no-repeat !important;
  box-shadow:0 3px 8px rgba(77,56,28,.12) !important;
  color:#4b3e2d !important;
  text-align:left !important;
  cursor:pointer !important;
  transform:translateY(0) scaleY(1) !important;
  transform-origin:center center !important;
  transition:transform 90ms ease,filter 90ms ease,box-shadow 90ms ease !important;
  -webkit-tap-highlight-color:transparent !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row:active{
  transform:translateY(2px) scaleY(.985) !important;
  filter:brightness(.97) !important;
  box-shadow:inset 0 2px 5px rgba(73,57,31,.10),0 1px 4px rgba(77,56,28,.10) !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row.is-exhausted{
  opacity:.48 !important;
  filter:saturate(.55) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row.is-exhausted:active{
  transform:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-no{
  width:28px !important;
  min-width:28px !important;
  height:auto !important;
  padding:0 !important;
  align-self:flex-start !important;
  padding-top:5px !important;
  color:#a3834e !important;
  font-family:"Cinzel",serif !important;
  font-size:8px !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.18em !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-main{
  min-width:0 !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row{
  display:flex !important;
  align-items:baseline !important;
  gap:8px !important;
  min-width:0 !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row strong{
  color:#443827 !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:15px !important;
  font-weight:400 !important;
  line-height:1.35 !important;
  letter-spacing:.06em !important;
  text-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-remaining{
  margin-left:auto !important;
  color:#8b6e3c !important;
  font-family:"Noto Serif JP",serif !important;
  font-size:8px !important;
  font-weight:400 !important;
  line-height:1.2 !important;
  letter-spacing:.06em !important;
  white-space:nowrap !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-condition{
  margin-top:5px !important;
  color:#776a58 !important;
  font-family:"Noto Serif JP",serif !important;
  font-size:8px !important;
  font-weight:400 !important;
  line-height:1.55 !important;
  letter-spacing:.08em !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward{
  margin-top:9px !important;
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  flex-wrap:wrap !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-label{
  color:#8b6e3c !important;
  font-family:"Noto Serif JP",serif !important;
  font-size:8px !important;
  font-weight:400 !important;
  line-height:1 !important;
  letter-spacing:.08em !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip{
  display:inline-flex !important;
  align-items:center !important;
  gap:3px !important;
  min-height:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip img{
  width:30px !important;
  height:30px !important;
  object-fit:contain !important;
  filter:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip b{
  min-width:0 !important;
  padding:0 !important;
  color:#7c6238 !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:10px !important;
  font-weight:600 !important;
  line-height:1 !important;
  letter-spacing:.02em !important;
  white-space:nowrap !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-coin{
  margin-right:2px !important;
}

@media (min-width:500px){
  html body:not(.ui-immersive) .shooting-faceless-stage-select.shooting-daily-stage-select{
    left:50% !important;
    right:auto !important;
    width:100% !important;
    max-width:430px !important;
    transform:translateX(-50%) !important;
  }
}

@media (max-width:380px),(max-height:700px){
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header{
    flex-basis:var(--app-page-header-h,50px) !important;
    height:var(--app-page-header-h,50px) !important;
    min-height:var(--app-page-header-h,50px) !important;
    padding-left:var(--app-page-side,14px) !important;
    padding-right:var(--app-page-side,14px) !important;
  }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header .shooting-faceless-stage-back{
    left:var(--app-page-side,14px) !important;
  }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-list{
    padding:14px 10px 20px !important;
    gap:7px !important;
  }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{
    min-height:112px !important;
    padding:12px 11px 12px 13px !important;
  }
}
/* End build787 DAILY STAGE SELECT */


/* ============================================================
   build788 FACELESS STAGE SELECT — STANDARD PAGE CANONICAL
   「無貌の天使」難易度選択も巡行トップ / Daily selector と同じ
   ZERAPHIA Standard Page の紙面・文字・余白へ統一。
   ============================================================ */
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select){
  position:fixed !important;
  top:0 !important;
  right:0 !important;
  bottom:0 !important;
  left:0 !important;
  width:100% !important;
  height:100dvh !important;
  box-sizing:border-box !important;
  padding:var(--header-h,72px) 0 var(--bottom-nav-h,76px) !important;
  z-index:210 !important;
  overflow:hidden !important;
  background-color:#f6f2e8 !important;
  background-image:url("../images/zeraphia_bg_01.webp") !important;
  background-repeat:no-repeat !important;
  background-position:center top !important;
  background-size:cover !important;
  color:#4b4640 !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select)::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  background:linear-gradient(180deg,
    rgba(255,255,255,.18) 0%,
    rgba(255,255,255,.04) 42%,
    rgba(244,238,226,.12) 100%) !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-page{
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  max-width:none !important;
  height:100% !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  box-sizing:border-box !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-page::after{
  content:none !important;
  display:none !important;
}

/* Standard Page header: 52px / center title / 11px back */
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header{
  position:relative !important;
  z-index:5 !important;
  flex:0 0 var(--app-page-header-h,52px) !important;
  width:100% !important;
  height:var(--app-page-header-h,52px) !important;
  min-height:var(--app-page-header-h,52px) !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:0 var(--app-page-side,18px) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  isolation:isolate !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header::after{
  content:"" !important;
  position:absolute !important;
  z-index:-1 !important;
  pointer-events:none !important;
  left:-6% !important;
  right:-6% !important;
  top:22% !important;
  height:78px !important;
  background:linear-gradient(to bottom,
    rgba(255,255,255,.82) 0%,
    rgba(255,255,255,.66) 34%,
    rgba(255,255,255,.35) 66%,
    rgba(255,255,255,0) 100%) !important;
  filter:blur(10px) !important;
  -webkit-filter:blur(10px) !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-back{
  position:absolute !important;
  left:var(--app-page-side,18px) !important;
  top:50% !important;
  transform:translateY(-50%) !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  min-width:52px !important;
  width:auto !important;
  height:44px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:var(--app-back-color,#837361) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-back-size,11px) !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.015em !important;
  text-shadow:0 0 8px rgba(255,255,255,.80) !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-back:active{
  opacity:.58 !important;
  transform:translateY(-50%) !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-title{
  position:static !important;
  left:auto !important;
  top:auto !important;
  transform:none !important;
  width:auto !important;
  max-width:calc(100% - 150px) !important;
  margin:0 !important;
  padding:0 !important;
  color:var(--app-title-color,#6f5535) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-title-size,15px) !important;
  font-weight:500 !important;
  font-style:normal !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  text-indent:.12em !important;
  text-align:center !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  text-shadow:0 0 9px rgba(255,255,255,.72) !important;
  pointer-events:none !important;
}

/* Stage cards: same paper/card vocabulary as 巡行 top */
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-list{
  position:relative !important;
  z-index:1 !important;
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch !important;
  display:flex !important;
  flex-direction:column !important;
  gap:8px !important;
  margin:0 !important;
  padding:18px 14px 24px !important;
  box-sizing:border-box !important;
  background:transparent !important;
  scrollbar-width:none !important;
}
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-list::-webkit-scrollbar{
  display:none !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row{
  appearance:none !important;
  -webkit-appearance:none !important;
  position:relative !important;
  width:100% !important;
  min-height:112px !important;
  margin:0 !important;
  padding:15px 14px 15px 15px !important;
  box-sizing:border-box !important;
  display:grid !important;
  grid-template-columns:28px minmax(0,1fr) !important;
  align-items:center !important;
  gap:10px !important;
  border:0 !important;
  border-radius:0 !important;
  background:url("../images/junkou_right.webp") center/100% 100% no-repeat !important;
  box-shadow:0 3px 8px rgba(77,56,28,.12) !important;
  color:#4b3e2d !important;
  text-align:left !important;
  cursor:pointer !important;
  transform:translateY(0) scaleY(1) !important;
  transform-origin:center center !important;
  transition:transform 90ms ease,filter 90ms ease,box-shadow 90ms ease !important;
  -webkit-tap-highlight-color:transparent !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row:active{
  transform:translateY(2px) scaleY(.985) !important;
  filter:brightness(.97) !important;
  box-shadow:inset 0 2px 5px rgba(73,57,31,.10),0 1px 4px rgba(77,56,28,.10) !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-no{
  width:28px !important;
  min-width:28px !important;
  height:auto !important;
  min-height:0 !important;
  align-self:flex-start !important;
  padding:5px 0 0 !important;
  color:#a3834e !important;
  font-family:"Cinzel","Times New Roman",serif !important;
  font-size:8px !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.18em !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-main{
  min-width:0 !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-name-row{
  display:flex !important;
  align-items:baseline !important;
  gap:8px !important;
  min-width:0 !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-name-row strong{
  color:#443827 !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:15px !important;
  font-weight:400 !important;
  line-height:1.35 !important;
  letter-spacing:.06em !important;
  text-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-condition,
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-wave{
  margin-top:5px !important;
  color:#776a58 !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:8px !important;
  font-weight:400 !important;
  line-height:1.55 !important;
  letter-spacing:.08em !important;
  text-shadow:none !important;
}

html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-wave{
  margin-top:3px !important;
  color:#9a886d !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:7px !important;
  letter-spacing:.12em !important;
}

@media (min-width:500px){
  html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select){
    left:50% !important;
    right:auto !important;
    width:100% !important;
    max-width:430px !important;
    transform:translateX(-50%) !important;
  }
}

@media (max-width:380px),(max-height:700px){
  html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header{
    flex-basis:var(--app-page-header-h,50px) !important;
    height:var(--app-page-header-h,50px) !important;
    min-height:var(--app-page-header-h,50px) !important;
    padding-left:var(--app-page-side,14px) !important;
    padding-right:var(--app-page-side,14px) !important;
  }
  html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-back{
    left:var(--app-page-side,14px) !important;
  }
  html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-list{
    padding:14px 10px 20px !important;
    gap:7px !important;
  }
  html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row{
    min-height:104px !important;
    padding:13px 11px 13px 13px !important;
  }
}
/* End build788 FACELESS STAGE SELECT */

/* ============================================================
   build789 STAGE-IN SELECT — STORY LIST CANONICAL
   デイリー / フェイスレスを、現行STORYステージ選択と同じ
   「全面紙背景 + 標準ヘッダー + 横幅いっぱいの行リスト」へ統一。
   ============================================================ */

/* ---------- Shared shell: same paper/background as STORY ---------- */
html body:not(.ui-immersive) :is(
  .shooting-faceless-stage-select.shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
){
  position:fixed !important;
  top:0 !important;
  right:0 !important;
  bottom:0 !important;
  left:0 !important;
  width:100% !important;
  height:100dvh !important;
  box-sizing:border-box !important;
  padding:var(--header-h,72px) 0 var(--bottom-nav-h,76px) !important;
  z-index:210 !important;
  overflow:hidden !important;
  background-color:#f6f1e6 !important;
  background-image:
    linear-gradient(rgba(255,253,247,.12),rgba(255,253,247,.12)),
    url("../images/zeraphia_bg_01.webp") !important;
  background-size:cover !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
  color:#3f342a !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
}
html body:not(.ui-immersive) :is(
  .shooting-faceless-stage-select.shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
)::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  pointer-events:none !important;
  background:linear-gradient(180deg,
    rgba(255,255,255,.10) 0%,
    rgba(255,252,244,.02) 45%,
    rgba(241,233,214,.10) 100%) !important;
  opacity:1 !important;
}

/* build826: stage-select shell must not block the shared bottom navigation.
   The shell spans 100dvh for the paper background, while its page occupies only the
   content area between global HUD and bottom nav. Let taps pass through the shell
   padding and restore pointer events only on the actual page. */
html body:not(.ui-immersive) :is(
  .shooting-faceless-stage-select.shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
){
  pointer-events:none !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-page,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-page
){
  pointer-events:auto !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-page,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-page
){
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  max-width:430px !important;
  height:100% !important;
  min-height:0 !important;
  margin:0 auto !important;
  padding:0 !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
}

/* ---------- Header: exact Standard Page vocabulary ---------- */
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-header,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header
){
  position:relative !important;
  z-index:220 !important;
  flex:0 0 var(--app-page-header-h,52px) !important;
  width:100% !important;
  height:var(--app-page-header-h,52px) !important;
  min-height:var(--app-page-header-h,52px) !important;
  margin:0 !important;
  padding:0 var(--app-page-side,18px) !important;
  box-sizing:border-box !important;
  display:grid !important;
  grid-template-columns:72px minmax(0,1fr) 72px !important;
  align-items:center !important;
  gap:0 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  isolation:isolate !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-header,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header
)::after{
  content:"" !important;
  position:absolute !important;
  z-index:-1 !important;
  pointer-events:none !important;
  left:-6% !important;
  right:-6% !important;
  top:22% !important;
  height:78px !important;
  background:linear-gradient(to bottom,
    rgba(255,255,255,.82) 0%,
    rgba(255,255,255,.66) 34%,
    rgba(255,255,255,.35) 66%,
    rgba(255,255,255,0) 100%) !important;
  filter:blur(10px) !important;
  -webkit-filter:blur(10px) !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-back,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-back
){
  position:static !important;
  grid-column:1 !important;
  justify-self:start !important;
  transform:none !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  min-width:52px !important;
  width:auto !important;
  height:44px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:var(--app-back-color,#837361) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-back-size,11px) !important;
  font-weight:500 !important;
  font-style:normal !important;
  line-height:1 !important;
  letter-spacing:.015em !important;
  text-align:left !important;
  white-space:nowrap !important;
  text-shadow:0 0 8px rgba(255,255,255,.80) !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-back,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-back
):active{
  opacity:.58 !important;
  transform:none !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-title,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-title
){
  position:static !important;
  grid-column:2 !important;
  justify-self:stretch !important;
  width:auto !important;
  max-width:100% !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
  color:var(--app-title-color,#6f5535) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:var(--app-title-size,15px) !important;
  font-weight:500 !important;
  font-style:normal !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  text-indent:.12em !important;
  text-align:center !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  text-shadow:0 0 9px rgba(255,255,255,.72) !important;
  pointer-events:none !important;
}

/* DAILYだけの曜日情報は、標準ヘッダーを崩さず直下へ小さく置く。 */
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-subtitle{
  position:absolute !important;
  left:50% !important;
  top:calc(100% + 7px) !important;
  transform:translateX(-50%) !important;
  width:max-content !important;
  max-width:calc(100% - 36px) !important;
  margin:0 !important;
  padding:0 !important;
  color:#aa8a56 !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:7px !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  text-shadow:0 0 8px rgba(255,255,255,.66) !important;
  pointer-events:none !important;
}

/* ---------- List: full-width row stack, identical to STORY ---------- */
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-list,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-list
){
  position:relative !important;
  z-index:1 !important;
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch !important;
  display:flex !important;
  flex-direction:column !important;
  gap:0 !important;
  margin:0 !important;
  padding:0 0 calc(40px + env(safe-area-inset-bottom,20px)) !important;
  box-sizing:border-box !important;
  background:rgba(255,255,255,.46) !important;
  scrollbar-width:none !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-list{
  padding-top:25px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-list,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-list
)::-webkit-scrollbar{
  display:none !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-row,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row
){
  appearance:none !important;
  -webkit-appearance:none !important;
  position:relative !important;
  width:100% !important;
  min-height:76px !important;
  margin:0 !important;
  padding:14px 18px !important;
  box-sizing:border-box !important;
  display:flex !important;
  align-items:center !important;
  gap:14px !important;
  border:0 !important;
  border-bottom:1px solid rgba(115,99,70,.16) !important;
  border-radius:0 !important;
  background:rgba(255,255,255,.62) !important;
  background-image:none !important;
  box-shadow:none !important;
  color:#27344f !important;
  text-align:left !important;
  cursor:pointer !important;
  transform:translateY(0) scaleY(1) !important;
  transform-origin:center center !important;
  transition:transform 90ms ease,background-color 90ms ease,box-shadow 90ms ease !important;
  -webkit-tap-highlight-color:transparent !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{
  min-height:98px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-daily-stage-row,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row
):active{
  transform:translateY(2px) scaleY(.985) !important;
  background:rgba(214,201,171,.38) !important;
  box-shadow:inset 0 2px 5px rgba(73,57,31,.16),inset 0 -1px 0 rgba(255,255,255,.32) !important;
  filter:none !important;
}

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row.is-exhausted{
  opacity:.45 !important;
  filter:saturate(.55) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row.is-exhausted:active{
  transform:none !important;
  box-shadow:none !important;
}

/* Stage number / body / typography exactly follow STORY list. */
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-no,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-no
){
  flex:0 0 38px !important;
  width:38px !important;
  min-width:38px !important;
  height:auto !important;
  min-height:0 !important;
  align-self:center !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:rgba(64,76,99,.50) !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:10px !important;
  font-weight:400 !important;
  line-height:1 !important;
  letter-spacing:.14em !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-main,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-main
){
  flex:1 1 auto !important;
  min-width:0 !important;
  display:flex !important;
  flex-direction:column !important;
  gap:4px !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-name-row,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-name-row
){
  display:flex !important;
  align-items:baseline !important;
  gap:10px !important;
  min-width:0 !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-name-row strong,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-name-row strong
){
  color:#27344f !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:14px !important;
  font-weight:500 !important;
  line-height:1.35 !important;
  letter-spacing:.08em !important;
  text-shadow:none !important;
}

html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select .shooting-faceless-stage-condition,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-condition,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-wave
){
  margin:0 !important;
  color:rgba(70,82,105,.58) !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:9px !important;
  font-weight:400 !important;
  line-height:1.55 !important;
  letter-spacing:.14em !important;
  text-shadow:none !important;
}
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-wave{
  margin-top:1px !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:8px !important;
  letter-spacing:.13em !important;
  color:rgba(70,82,105,.46) !important;
}

/* DAILY-specific metadata: still information-rich, but visually subordinate. */
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-remaining{
  margin-left:auto !important;
  flex:0 0 auto !important;
  color:#8a7447 !important;
  font-family:"Noto Serif JP",serif !important;
  font-size:8px !important;
  font-weight:400 !important;
  line-height:1 !important;
  letter-spacing:.06em !important;
  white-space:nowrap !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward{
  display:flex !important;
  align-items:center !important;
  flex-wrap:wrap !important;
  gap:5px !important;
  margin-top:2px !important;
  min-height:24px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-label{
  color:#aa8a56 !important;
  font-family:"Noto Serif JP",serif !important;
  font-size:8px !important;
  letter-spacing:.08em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip{
  display:inline-flex !important;
  align-items:center !important;
  gap:3px !important;
  min-width:0 !important;
  height:24px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#735d3d !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip img{
  width:23px !important;
  height:23px !important;
  object-fit:contain !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip b{
  color:#735d3d !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:9px !important;
  font-weight:600 !important;
  letter-spacing:.03em !important;
}

@media (min-width:500px){
  html body:not(.ui-immersive) :is(
    .shooting-faceless-stage-select.shooting-daily-stage-select,
    .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
  ){
    left:50% !important;
    right:auto !important;
    width:100% !important;
    max-width:430px !important;
    transform:translateX(-50%) !important;
  }
}

@media (max-width:380px),(max-height:700px){
  html body:not(.ui-immersive) :is(
    .shooting-daily-stage-select .shooting-daily-stage-header,
    .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-header
  ){
    grid-template-columns:64px minmax(0,1fr) 64px !important;
    padding-left:14px !important;
    padding-right:14px !important;
  }
  html body:not(.ui-immersive) :is(
    .shooting-daily-stage-select .shooting-daily-stage-row,
    .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row
  ){
    padding-left:14px !important;
    padding-right:12px !important;
  }
}
/* End build789 STAGE-IN SELECT — STORY LIST CANONICAL */

/* ============================================================
   build790 — BATTLE HUD circle exception + timer separation
   - Bench CHANGE portraits are semantic circular battle controls, not cards.
     Restore their circular silhouette after the global sharp-UI reform.
   - Limited-stage timer is placed clearly BELOW the COMBO block so the
     two right-side HUD elements never overlap.
   ============================================================ */
html body #shooting-event-root .shooting-switch-btn{
  border-radius:50% !important;
}
html body #shooting-event-root .shooting-switch-btn img{
  border-radius:50% !important;
}
html body #shooting-event-root .shooting-switch-btn.cooling::after{
  border-radius:50% !important;
}

/* COMBO occupies roughly top:46px through ~100px. Keep a clean gap below it. */
html body #shooting-event-root .shooting-battle-timer{
  top:118px !important;
  right:13px !important;
}

@media (max-width:420px){
  html body #shooting-event-root .shooting-battle-timer{
    top:116px !important;
    right:12px !important;
  }
}

/* ============================================================
   build791 — BATTLE TIMER true visual separation
   build790 used top:118px on the stage root, but COMBO is positioned
   inside .shooting-arena (arena begins at root Y=72px). Therefore
   COMBO top:46px is visually root Y=118px and both elements overlapped.
   Keep the timer on the stage root and move it below the full COMBO block.
   ============================================================ */
html body #shooting-event-root .shooting-battle-timer{
  top:182px !important;
  right:13px !important;
}

@media (max-width:420px){
  html body #shooting-event-root .shooting-battle-timer{
    top:178px !important;
    right:12px !important;
  }
}

/* ============================================================
   build792 — FIXED CLEAR-CONDITION BAND / WHITE HAZE
   - Every battle keeps one fixed clear-condition area under the title.
   - STORY / DAILY / SPECIAL EVENT / RAID share the same geometry.
   - Remove the hard rectangular panel: no border, no boxed shadow.
   - Replace it with a feathered white mist that dissolves into the stage.
   ============================================================ */
html body #shooting-event-root .shooting-mission-hud{
  top:56px !important;
  left:0 !important;
  right:0 !important;
  min-height:34px !important;
  padding:4px 18px !important;
  grid-template-columns:auto minmax(0,1fr) auto !important;
  gap:10px !important;
  align-items:center !important;
  box-sizing:border-box !important;
  background:transparent !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  isolation:isolate !important;
  overflow:visible !important;
}
html body #shooting-event-root .shooting-mission-hud::before{
  content:"" !important;
  position:absolute !important;
  z-index:-1 !important;
  pointer-events:none !important;
  left:-5% !important;
  right:-5% !important;
  top:-7px !important;
  bottom:-7px !important;
  background:linear-gradient(90deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,.48) 7%,
    rgba(255,255,255,.86) 18%,
    rgba(255,255,255,.94) 50%,
    rgba(255,255,255,.86) 82%,
    rgba(255,255,255,.48) 93%,
    rgba(255,255,255,0) 100%) !important;
  filter:blur(7px) !important;
  -webkit-filter:blur(7px) !important;
  opacity:.96 !important;
}
html body #shooting-event-root .shooting-mission-hud::after{
  content:none !important;
  display:none !important;
}
html body #shooting-event-root .shooting-mission-hud span{
  font-size:6.5px !important;
  font-weight:500 !important;
  letter-spacing:.16em !important;
  color:rgba(157,126,74,.74) !important;
  text-shadow:0 0 8px rgba(255,255,255,.96) !important;
}
html body #shooting-event-root .shooting-mission-hud strong{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:10px !important;
  font-weight:400 !important;
  letter-spacing:.035em !important;
  color:rgba(91,76,56,.78) !important;
  text-shadow:0 0 8px rgba(255,255,255,.98) !important;
}
html body #shooting-event-root .shooting-mission-hud b{
  font-size:8px !important;
  font-weight:500 !important;
  letter-spacing:.10em !important;
  color:rgba(139,106,59,.78) !important;
  text-shadow:0 0 8px rgba(255,255,255,.98) !important;
}

/* Boss stages now also have the fixed condition band, so leave a little air below it. */
html body #shooting-event-root:not([data-battle-type="normal"]) .shooting-boss-hud{
  top:92px !important;
  width:min(70vw,410px) !important;
}

/* CH04 used to suppress the mission band. The fixed shell now applies there too. */
html body #shooting-event-root:is(
  [data-shooting-stage^="shooting_ch04_"],
  [data-shooting-stage^="shooting_beginner_ch04_"]
) .shooting-mission-hud{
  display:grid !important;
  min-height:34px !important;
  padding-top:4px !important;
  padding-bottom:4px !important;
}

/* Keep non-battle states clean even though the battle shell is now universal. */
html body #shooting-event-root:has(.shooting-result.show) .shooting-mission-hud{
  display:none !important;
}
html body #shooting-event-root:has(.shooting-character-select.show) .shooting-mission-hud{
  visibility:hidden !important;
}

@media(max-width:420px){
  html body #shooting-event-root .shooting-mission-hud{
    min-height:33px !important;
    padding-left:14px !important;
    padding-right:14px !important;
    gap:7px !important;
  }
  html body #shooting-event-root .shooting-mission-hud span{font-size:6px !important}
  html body #shooting-event-root .shooting-mission-hud strong{font-size:9px !important}
  html body #shooting-event-root .shooting-mission-hud b{font-size:7.5px !important}
  html body #shooting-event-root:not([data-battle-type="normal"]) .shooting-boss-hud{
    top:91px !important;
    width:min(69vw,350px) !important;
  }
}

/* ============================================================
   build793 RESULT action footer refinement
   - Remove the heavy gold slab feeling.
   - Keep both actions inside one warm parchment haze so the space
     between buttons never reads as a white stripe.
   - Use the same sharp, thin-line visual language as the current
     ZERAPHIA standard UI.
   ============================================================ */
html body #shooting-result .shooting-result-actions{
  position:relative !important;
  isolation:isolate !important;
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  gap:8px !important;
  width:100% !important;
  margin-top:auto !important;
  padding:14px 0 2px !important;
  box-sizing:border-box !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* One soft parchment atmosphere behind the entire action zone.
   It has no hard edge, so the two buttons visually belong to the page. */
html body #shooting-result .shooting-result-actions::before{
  content:"" !important;
  position:absolute !important;
  z-index:-1 !important;
  pointer-events:none !important;
  left:-10px !important;
  right:-10px !important;
  top:2px !important;
  bottom:-10px !important;
  background:
    radial-gradient(ellipse at 50% 100%,
      rgba(222,205,171,.40) 0%,
      rgba(232,218,190,.24) 42%,
      rgba(245,239,226,.08) 70%,
      rgba(245,239,226,0) 100%) !important;
  filter:blur(5px) !important;
  -webkit-filter:blur(5px) !important;
}

/* Very thin center-faded separator above the action zone. */
html body #shooting-result .shooting-result-actions::after{
  content:"" !important;
  position:absolute !important;
  left:6% !important;
  right:6% !important;
  top:5px !important;
  height:1px !important;
  pointer-events:none !important;
  background:linear-gradient(90deg,
    rgba(160,126,68,0),
    rgba(160,126,68,.16) 24%,
    rgba(160,126,68,.26) 50%,
    rgba(160,126,68,.16) 76%,
    rgba(160,126,68,0)) !important;
}

html body #shooting-result .shooting-result-actions button,
html body #shooting-result .shooting-result-card .shooting-result-actions button{
  appearance:none !important;
  -webkit-appearance:none !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  min-width:0 !important;
  height:42px !important;
  min-height:42px !important;
  margin:0 !important;
  padding:0 12px !important;
  box-sizing:border-box !important;
  border-radius:0 !important;
  border:1px solid rgba(157,123,65,.34) !important;
  background:rgba(255,252,245,.48) !important;
  color:#7a6547 !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.72),
    0 2px 7px rgba(83,62,29,.045) !important;
  text-shadow:none !important;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif !important;
  font-size:10px !important;
  font-weight:400 !important;
  line-height:1 !important;
  letter-spacing:.12em !important;
  cursor:pointer !important;
  -webkit-tap-highlight-color:transparent !important;
  transition:transform .10s ease, background .12s ease, border-color .12s ease !important;
}

/* RETRY is the primary action, but only by a quiet gold wash—not a solid block. */
html body #shooting-result #shooting-result-retry{
  border-color:rgba(151,113,52,.46) !important;
  background:linear-gradient(180deg,
    rgba(246,237,217,.88) 0%,
    rgba(228,209,170,.66) 100%) !important;
  color:#6d532d !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:9.5px !important;
  font-weight:600 !important;
  letter-spacing:.18em !important;
}

/* Back stays quieter and paper-like. */
html body #shooting-result .shooting-result-actions button.sub{
  background:rgba(255,253,248,.34) !important;
  border-color:rgba(151,123,77,.25) !important;
  color:#88765f !important;
}

html body #shooting-result .shooting-result-actions button:active{
  transform:translateY(1px) !important;
  background:rgba(230,215,184,.42) !important;
  border-color:rgba(147,110,52,.46) !important;
}

/* Daily / Raid hide RETRY. In that case the Back button should become one
   centered full-width action instead of remaining stranded at half width. */
/* build1687: :has(#…[style*="display: none"]) は全DOMのstyle変更のたびに再計算を誘発するため、JSで付けるクラスに置き換え */
html body #shooting-result .shooting-result-actions.no-retry{
  grid-template-columns:minmax(0,1fr) !important;
}

@media(max-width:360px){
  html body #shooting-result .shooting-result-actions{
    gap:7px !important;
    padding-top:12px !important;
  }
  html body #shooting-result .shooting-result-actions button,
  html body #shooting-result .shooting-result-card .shooting-result-actions button{
    height:40px !important;
    min-height:40px !important;
    font-size:9.5px !important;
  }
  html body #shooting-result #shooting-result-retry{
    font-size:9px !important;
  }
}

/* ============================================================
   build794 RESULT compact-screen spacing / survivor labels
   - Give RANK and SCORE a little breathing room on iPhone SE-class screens.
   - Result-only fallen-member label is LOST instead of DOWN.
   - Rebalance the survivor / hit member grid so all three portraits + labels
     fit cleanly without clipping the center column or the right-side total.
   ============================================================ */

/* Flexible member slots: preserve the three-character rhythm while letting
   the center column use the actual available width. */
html body #shooting-result .shooting-result-member-list{
  width:100% !important;
  min-width:0 !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  justify-content:stretch !important;
  column-gap:4px !important;
}

html body #shooting-result .shooting-result-member{
  width:auto !important;
  min-width:0 !important;
  grid-template-columns:24px minmax(0,1fr) !important;
  column-gap:2px !important;
}

html body #shooting-result .shooting-result-member img{
  width:24px !important;
  height:24px !important;
}

html body #shooting-result .shooting-result-member b{
  width:auto !important;
  min-width:0 !important;
  overflow:visible !important;
  white-space:nowrap !important;
  font-size:9px !important;
  letter-spacing:0 !important;
}

/* LOST is intentionally quieter / narrower than the Japanese status label. */
html body #shooting-result .shooting-result-member.down b{
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:8px !important;
  letter-spacing:.045em !important;
  color:#9a8b76 !important;
}

/* iPhone SE / short-height result: separate the large rank from the score band,
   and recover center-column width from the side labels/totals. */
@media (max-width:360px), (max-height:700px){
  html body #shooting-result .shooting-result-rank-wrap{
    margin:7px 0 15px !important;
  }

  html body #shooting-result .shooting-result-stats{
    margin-top:0 !important;
  }

  html body #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row){
    grid-template-columns:70px minmax(0,1fr) 30px !important;
    column-gap:4px !important;
  }

  html body #shooting-result .shooting-result-detail-row > strong{
    width:30px !important;
  }

  html body #shooting-result .shooting-result-member-list{
    column-gap:3px !important;
  }

  html body #shooting-result .shooting-result-member{
    grid-template-columns:23px minmax(0,1fr) !important;
    column-gap:2px !important;
  }

  html body #shooting-result .shooting-result-member img{
    width:23px !important;
    height:23px !important;
  }

  html body #shooting-result .shooting-result-member b{
    font-size:8.5px !important;
  }

  html body #shooting-result .shooting-result-member.down b{
    font-size:7.8px !important;
    letter-spacing:.035em !important;
  }
}


/* build827: 固有デザインを持つ召喚/設置ULTオブジェクトは属性色で上書きしない。
   - マグダレーナの鎌
   - ロゼの花 / ハート
   - クラリネのデコイ
   これらは元アート/元演出色を優先する。 */
#shooting-event-root .shooting-gojo-purple-wave,
#shooting-event-root .shooting-gojo-purple-wave.scythe,
#shooting-event-root .shooting-clarine-decoy,
#shooting-event-root .shooting-clarine-decoy-burst,
#shooting-event-root .shooting-rose-flower,
#shooting-event-root .shooting-rose-flower-aura,
#shooting-event-root .shooting-rose-heart-shape{
  filter:none !important;
}

/* ============================================================
   build834 DAILY / SPECIAL STAGE SELECT — element preview spacing
   共通属性プレビューを追加してもカード内情報が潰れない高さを確保。
   ============================================================ */
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{
  min-height:120px !important;
}
html body:not(.ui-immersive) .shooting-faceless-stage-select:not(.shooting-daily-stage-select) .shooting-faceless-stage-row{
  min-height:116px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
) .shooting-stage-elements{
  margin-top:2px !important;
  gap:2px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
) .shooting-stage-element-line{
  min-height:18px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
) .shooting-stage-element-label{
  color:rgba(70,82,105,.58) !important;
  font-size:8px !important;
  letter-spacing:.08em !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
) .shooting-stage-element-icon{
  width:18px !important;
  height:18px !important;
  flex-basis:18px !important;
}
html body:not(.ui-immersive) :is(
  .shooting-daily-stage-select,
  .shooting-faceless-stage-select:not(.shooting-daily-stage-select)
) .shooting-stage-boss-element-line .shooting-stage-element-icon{
  width:19px !important;
  height:19px !important;
  flex-basis:19px !important;
}


/* ============================================================
   build836 — CH06 wall / elemental shield contact polish
   1) 遮断壁を従来のおよそ半分の厚みに合わせて装飾も縮小。
   2) 属性バリアは敵外周へ密着し、漂う回転演出を廃止。
   ============================================================ */
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier{
  border-radius:999px;
  box-shadow:0 0 0 1px rgba(255,255,255,.72) inset,0 0 10px rgba(208,190,150,.24),0 3px 8px rgba(81,65,39,.10);
}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::after,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::after{
  width:10px!important;
  height:10px!important;
}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::before{left:6px!important}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier::after,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier::after{right:6px!important}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier i,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier i{
  left:21px!important;
  right:21px!important;
}
#shooting-event-root[data-shooting-stage^="shooting_ch06_"] .shooting-ch06-barrier b,
#shooting-event-root[data-shooting-stage^="shooting_daily_"][data-shooting-stage$="_advanced"] .shooting-ch06-barrier b{
  width:12px!important;
  height:12px!important;
}

#shooting-event-root .shooting-mini-enemy-weakness-barrier{
  animation:none!important;
  border-width:1.5px;
  opacity:.96;
  background:
    radial-gradient(circle,transparent 0 58%,rgba(var(--weak-shield-rgb),.13) 61%,rgba(var(--weak-shield-rgb),.34) 68%,rgba(var(--weak-shield-rgb),.08) 74%,transparent 78%),
    conic-gradient(from 12deg,rgba(var(--weak-shield-rgb),.38),rgba(var(--weak-shield-rgb),.10) 18%,rgba(var(--weak-shield-rgb),.40) 38%,rgba(var(--weak-shield-rgb),.10) 58%,rgba(var(--weak-shield-rgb),.38) 78%,rgba(var(--weak-shield-rgb),.10));
  box-shadow:
    0 0 6px rgba(var(--weak-shield-rgb),.40),
    0 0 12px rgba(var(--weak-shield-rgb),.22),
    inset 0 0 8px rgba(var(--weak-shield-rgb),.24);
  will-change:transform;
}


/* ============================================================
   build838: Header haze bridge
   - Let the top battle header dissolve naturally into the white mist
     below instead of ending on a hard edge.
   ============================================================ */
#shooting-event-root .shooting-hud{
  position:absolute;
  overflow:visible;
  isolation:isolate;
  border-bottom:0;
  background:linear-gradient(
    180deg,
    rgba(255,253,247,.96) 0%,
    rgba(252,248,239,.88) 26%,
    rgba(249,244,234,.62) 58%,
    rgba(248,243,231,.18) 82%,
    rgba(248,243,231,0) 100%
  );
  box-shadow:inset 0 -1px 0 rgba(160,136,92,.10);
}
#shooting-event-root .shooting-hud::after{
  content:"";
  position:absolute;
  left:-2%;
  right:-2%;
  bottom:-36px;
  height:58px;
  pointer-events:none;
  z-index:0;
  background:
    linear-gradient(
      180deg,
      rgba(248,243,231,.00) 0%,
      rgba(248,243,231,.14) 14%,
      rgba(249,244,234,.24) 30%,
      rgba(250,246,237,.18) 50%,
      rgba(250,246,237,.08) 72%,
      rgba(248,243,231,0) 100%
    ),
    radial-gradient(120% 86% at 50% 4%, rgba(250,246,238,.36) 0%, rgba(250,246,238,.18) 36%, rgba(248,243,231,.06) 58%, rgba(248,243,231,0) 100%);
  filter:blur(12px);
  opacity:.82;
  transform:translateY(1px);
}
#shooting-event-root .shooting-hud > *{
  position:relative;
  z-index:1;
}
@media(max-width:380px){
  #shooting-event-root .shooting-hud::after{
    bottom:-30px;
    height:50px;
    filter:blur(9px);
    opacity:.8;
  }
}


/* ============================================================
   build933 — DANGER / WARNING BULLET final override
   即死WARNING弾は属性色より常に優先し、赤紫の禍々しい見た目に固定する。
   CH04 / SCORE ATTACK / stage固有軽量化ルールの後段で最終上書き。
   ============================================================ */
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-danger-bullet,
#shooting-event-root .shooting-score-attack-warning-bullet,
#shooting-event-root .shooting-sakiel-warning-bullet{
  width:34px !important;
  height:34px !important;
  display:block !important;
  opacity:1 !important;
  z-index:18 !important;
  border-radius:50% !important;
  border:2px solid rgba(255,233,246,.90) !important;
  clip-path:none !important;
  background:
    radial-gradient(circle at 34% 32%, rgba(255,244,251,.98) 0 7%, rgba(255,166,213,.98) 10% 18%, rgba(255,68,146,.98) 22% 34%, rgba(182,26,115,.98) 39% 52%, rgba(95,16,96,.98) 58% 72%, rgba(28,0,40,.92) 78% 100%) !important;
  background-color:#8a145f !important;
  background-image:
    radial-gradient(circle at 34% 32%, rgba(255,244,251,.98) 0 7%, rgba(255,166,213,.98) 10% 18%, rgba(255,68,146,.98) 22% 34%, rgba(182,26,115,.98) 39% 52%, rgba(95,16,96,.98) 58% 72%, rgba(28,0,40,.92) 78% 100%) !important;
  box-shadow:
    0 0 0 3px rgba(106,12,79,.22),
    0 0 14px rgba(255,61,136,.78),
    0 0 28px rgba(164,22,124,.70),
    0 0 44px rgba(83,0,74,.62) !important;
  filter:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  animation:shootingDangerBulletPulse933 .34s ease-in-out infinite alternate !important;
}
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::before,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet::before,
#shooting-event-root .shooting-danger-bullet::before,
#shooting-event-root .shooting-score-attack-warning-bullet::before,
#shooting-event-root .shooting-sakiel-warning-bullet::before{
  content:'' !important;
  display:block !important;
  position:absolute !important;
  inset:-10px !important;
  border-radius:50% !important;
  border:1.5px solid rgba(255,72,170,.72) !important;
  background:radial-gradient(circle, rgba(255,91,192,.06) 0 42%, rgba(111,15,99,.18) 62%, rgba(50,0,58,0) 74%) !important;
  box-shadow:
    0 0 10px rgba(255,60,162,.48),
    inset 0 0 12px rgba(255,120,194,.14) !important;
  filter:none !important;
  animation:shootingDangerBulletAura933 .54s ease-out infinite !important;
  pointer-events:none !important;
}
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet::after,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet::after,
#shooting-event-root .shooting-danger-bullet::after,
#shooting-event-root .shooting-score-attack-warning-bullet::after,
#shooting-event-root .shooting-sakiel-warning-bullet::after{
  content:'!' !important;
  display:block !important;
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  transform:translate(-50%,-54%) !important;
  color:#fff6fb !important;
  font:900 17px/1 sans-serif !important;
  letter-spacing:0 !important;
  text-shadow:
    0 0 4px rgba(255,255,255,.96),
    0 0 10px rgba(255,100,196,.82),
    0 0 18px rgba(186,22,123,.74) !important;
  background:transparent !important;
  box-shadow:none !important;
  pointer-events:none !important;
}
@keyframes shootingDangerBulletPulse933{
  from{transform:scale(.94)}
  to{transform:scale(1.06)}
}
@keyframes shootingDangerBulletAura933{
  0%{opacity:.22;transform:scale(.82)}
  55%{opacity:.72}
  100%{opacity:0;transform:scale(1.24)}
}


/* ============================================================
   build965 AYANE ULT / KEEP BLACK-HAND ARTWORK BLACK
   - the hand image itself must retain its original black artwork
   - no purple tint / hue / color filter is applied to the image
   - purple can remain in surrounding aura/impact effects only
   ============================================================ */
#shooting-event-root .shooting-ayane-blackhand-shot img.hand-open,
#shooting-event-root .shooting-ayane-blackhand-shot img.hand-close{
  filter:none !important;
  -webkit-filter:none !important;
  mix-blend-mode:normal !important;
}

/* The parent filter also affects rendered children, so keep its glow achromatic. */
#shooting-event-root .shooting-ayane-blackhand-shot{
  filter:
    drop-shadow(0 0 8px rgba(0,0,0,.96))
    drop-shadow(0 0 18px rgba(18,18,18,.72)) !important;
}

/* During the 7-second grab, do not pulse the hand with a purple shadow. */
#shooting-event-root .shooting-ayane-blackhand-ult.grab .shooting-ayane-blackhand-shot{
  animation:shootingAyaneGripHoldBlack965 .48s ease-in-out infinite alternate !important;
}

@keyframes shootingAyaneGripHoldBlack965{
  from{
    filter:
      drop-shadow(0 0 8px rgba(0,0,0,1))
      drop-shadow(0 0 14px rgba(18,18,18,.76));
  }
  to{
    filter:
      drop-shadow(0 0 12px rgba(0,0,0,1))
      drop-shadow(0 0 26px rgba(34,34,34,.92));
  }
}

/* ============================================================
   build981 ROSE ULT - ROSE FORTRESS (fixed-position fade)
   stage-wide thorn wall / ordinary enemy bullet absorber
   ============================================================ */
.shooting-rose-fortress{
  position:absolute;
  left:0;
  top:0;
  z-index:25;
  width:calc(100% + 4px);
  aspect-ratio:2048 / 688;
  pointer-events:none;
  opacity:0;
  overflow:visible;
  transform-origin:center bottom;
  will-change:opacity;
}
.shooting-rose-fortress > img{
  display:block;
  width:100%;
  height:100%;
  object-fit:fill;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  transform-origin:center bottom;
  transform:none;
  opacity:1;
  filter:drop-shadow(0 10px 12px rgba(74,30,34,.24));
}
.shooting-rose-fortress.show{
  opacity:1;
  transition:opacity .28s ease-out;
}
.shooting-rose-fortress.show > img{
  animation:none;
  transform:none;
  opacity:1;
}
.shooting-rose-fortress.fade{
  opacity:0;
  transition:opacity .24s ease-out;
}
.shooting-rose-fortress.fade > img{
  transform:none;
  opacity:1;
}


/* ============================================================
   build985 RESULT visibility fix
   - Enlarge hit/survivor portraits and values on compact screens.
   - Keep clear time fully visible even when it exceeds 100 seconds.
   ============================================================ */
html body #shooting-result .shooting-result-detail-label{
  font-size:11px !important;
}
html body #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row){
  grid-template-columns:68px minmax(0,1fr) 36px !important;
  column-gap:5px !important;
  min-height:48px !important;
}
html body #shooting-result .shooting-result-detail-row > strong{
  width:auto !important;
  min-width:36px !important;
  font-size:13px !important;
}
html body #shooting-result .shooting-result-member-list{
  column-gap:4px !important;
}
html body #shooting-result .shooting-result-member{
  grid-template-columns:31px minmax(0,1fr) !important;
  column-gap:3px !important;
}
html body #shooting-result .shooting-result-member img{
  width:31px !important;
  height:31px !important;
}
html body #shooting-result .shooting-result-member b{
  font-size:10.5px !important;
  line-height:1.1 !important;
}
html body #shooting-result .shooting-result-member.down b{
  font-size:9px !important;
}
html body #shooting-result .shooting-result-time-row{
  grid-template-columns:minmax(0,1fr) minmax(92px,auto) !important;
  column-gap:8px !important;
}
html body #shooting-result .shooting-result-time-row > strong{
  width:auto !important;
  min-width:92px !important;
  max-width:none !important;
  margin-right:0 !important;
  padding-right:0 !important;
  font-size:16px !important;
  letter-spacing:-.02em !important;
  white-space:nowrap !important;
  overflow:visible !important;
  justify-self:end !important;
  text-align:right !important;
}

@media (max-width:360px), (max-height:700px){
  html body #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row){
    grid-template-columns:66px minmax(0,1fr) 34px !important;
    column-gap:3px !important;
    min-height:46px !important;
  }
  html body #shooting-result .shooting-result-detail-label{
    font-size:10.5px !important;
  }
  html body #shooting-result .shooting-result-detail-row > strong{
    width:auto !important;
    min-width:34px !important;
    font-size:12.5px !important;
  }
  html body #shooting-result .shooting-result-member{
    grid-template-columns:30px minmax(0,1fr) !important;
    column-gap:3px !important;
  }
  html body #shooting-result .shooting-result-member img{
    width:30px !important;
    height:30px !important;
  }
  html body #shooting-result .shooting-result-member b{
    font-size:10px !important;
  }
  html body #shooting-result .shooting-result-member.down b{
    font-size:8.8px !important;
  }
  html body #shooting-result .shooting-result-time-row{
    grid-template-columns:minmax(0,1fr) minmax(88px,auto) !important;
  }
  html body #shooting-result .shooting-result-time-row > strong{
    min-width:88px !important;
    font-size:15px !important;
    margin-right:0 !important;
  }
}


/* ============================================================
   build1004 RESULT visibility final override
   - Increase row height, labels, portraits and values.
   - Keep fixed full-screen / no-scroll result layout.
   ============================================================ */
html body #shooting-result .shooting-result-detail-row:not(.shooting-result-raid-row){
  min-height:58px !important;
  padding-top:8px !important;
  padding-bottom:8px !important;
}
html body #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row){
  grid-template-columns:76px minmax(0,1fr) 40px !important;
  column-gap:6px !important;
}
html body #shooting-result .shooting-result-detail-label{
  font-size:12px !important;
  line-height:1.15 !important;
  white-space:nowrap !important;
}
html body #shooting-result .shooting-result-member-list{
  column-gap:5px !important;
}
html body #shooting-result .shooting-result-member{
  grid-template-columns:36px minmax(0,1fr) !important;
  column-gap:4px !important;
}
html body #shooting-result .shooting-result-member img{
  width:36px !important;
  height:36px !important;
}
html body #shooting-result .shooting-result-member b{
  font-size:11.5px !important;
  line-height:1.12 !important;
}
html body #shooting-result .shooting-result-member.down b{
  font-size:10.2px !important;
}
html body #shooting-result .shooting-result-detail-row > strong{
  min-width:40px !important;
  font-size:14px !important;
}
html body #shooting-result .shooting-result-time-row{
  min-height:56px !important;
  grid-template-columns:minmax(80px,1fr) minmax(100px,auto) !important;
  column-gap:10px !important;
}
html body #shooting-result .shooting-result-time-row > strong{
  min-width:100px !important;
  font-size:18px !important;
  white-space:nowrap !important;
  letter-spacing:-.025em !important;
}
@media (max-width:360px), (max-height:700px){
  html body #shooting-result .shooting-result-detail-row:not(.shooting-result-raid-row){
    min-height:54px !important;
    padding-top:7px !important;
    padding-bottom:7px !important;
  }
  html body #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row){
    grid-template-columns:72px minmax(0,1fr) 38px !important;
    column-gap:4px !important;
  }
  html body #shooting-result .shooting-result-detail-label{
    font-size:11.3px !important;
  }
  html body #shooting-result .shooting-result-member{
    grid-template-columns:34px minmax(0,1fr) !important;
    column-gap:3px !important;
  }
  html body #shooting-result .shooting-result-member img{
    width:34px !important;
    height:34px !important;
  }
  html body #shooting-result .shooting-result-member b{
    font-size:10.8px !important;
  }
  html body #shooting-result .shooting-result-member.down b{
    font-size:9.6px !important;
  }
  html body #shooting-result .shooting-result-detail-row > strong{
    min-width:38px !important;
    font-size:13.5px !important;
  }
  html body #shooting-result .shooting-result-time-row{
    min-height:52px !important;
    grid-template-columns:minmax(78px,1fr) minmax(96px,auto) !important;
  }
  html body #shooting-result .shooting-result-time-row > strong{
    min-width:96px !important;
    font-size:16.5px !important;
  }
}

/* ============================================================
   build989 CHARGE preview DOM
   - Disable legacy player pseudo-element charge preview.
   - A real preview element is resized by JS from min -> max.
   - Fired projectile remains a separate moving projectile.
   ============================================================ */
#shooting-event-root .shooting-player:is([data-character-id="14"],[data-character-id="17"]).mia-charging::before,
#shooting-event-root .shooting-player:is([data-character-id="14"],[data-character-id="17"]).mia-charging::after{
  content:none!important;
  display:none!important;
  animation:none!important;
}
#shooting-event-root .shooting-charge-preview{
  position:absolute!important;
  z-index:18!important;
  pointer-events:none!important;
  margin:0!important;
  transition:none!important;
  animation:none!important;
  will-change:width,height,transform,opacity!important;
}
/* The charging preview must not show the long fired-shot trail. */
#shooting-event-root .shooting-charge-preview::after{
  display:none!important;
  content:none!important;
}
#shooting-event-root .shooting-charge-preview::before{
  transform:none!important;
}


/* build1005: ノア キャラ選択画面の下部2ボタンを角丸なしで固定 */
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-character-select.show .shooting-party-cancel,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-character-select.show .shooting-character-start{
  border-radius:0 !important;
}


/* ============================================================
   build1017 — weakness-only BOSS elemental shield
   DAILY上級の属性バリア表現をBOSSにも適用。
   position/scale は shooting_core.js の positionUnit(BOSS) から毎フレーム同期する。
   ============================================================ */
#shooting-event-root .shooting-boss-weakness-barrier{
  --weak-shield-rgb:130,130,130;
  position:absolute;
  left:0;
  top:0;
  z-index:10;
  pointer-events:none;
  box-sizing:border-box;
  border-radius:50%;
  border:1.5px solid rgba(var(--weak-shield-rgb),.82);
  background:
    radial-gradient(circle,transparent 0 59%,rgba(var(--weak-shield-rgb),.10) 62%,rgba(var(--weak-shield-rgb),.32) 69%,rgba(var(--weak-shield-rgb),.08) 75%,transparent 79%),
    conic-gradient(from 12deg,rgba(var(--weak-shield-rgb),.42),rgba(var(--weak-shield-rgb),.08) 18%,rgba(var(--weak-shield-rgb),.44) 38%,rgba(var(--weak-shield-rgb),.08) 58%,rgba(var(--weak-shield-rgb),.42) 78%,rgba(var(--weak-shield-rgb),.08));
  box-shadow:
    0 0 8px rgba(var(--weak-shield-rgb),.46),
    0 0 18px rgba(var(--weak-shield-rgb),.28),
    inset 0 0 10px rgba(var(--weak-shield-rgb),.28);
  opacity:.97;
  transform-origin:center center;
  will-change:transform;
}
#shooting-event-root .shooting-boss-weakness-barrier.element-fire{--weak-shield-rgb:224,74,55}
#shooting-event-root .shooting-boss-weakness-barrier.element-aqua{--weak-shield-rgb:62,155,220}
#shooting-event-root .shooting-boss-weakness-barrier.element-wood{--weak-shield-rgb:75,158,83}
#shooting-event-root .shooting-boss-weakness-barrier.element-light{--weak-shield-rgb:220,186,70}
#shooting-event-root .shooting-boss-weakness-barrier.element-dark{--weak-shield-rgb:128,84,174}
#shooting-event-root:has(#shooting-boss.defeated) .shooting-boss-weakness-barrier{
  opacity:0;
  transition:opacity .20s ease;
}
\n\n/* ============================================================\n   build1018 — ELEMENT BARRIER COMMON RULE\n   属性バリア = 対象自身の属性色の半透明な膜。\n   mini / boss 共通で中心部にも薄い色膜を持たせ、外周発光と一体化する。\n   FIRE=赤 / AQUA=青 / WOOD=緑 / LIGHT=黄 / DARK=紫\n   ============================================================ */\n#shooting-event-root .shooting-mini-enemy-weakness-barrier,\n#shooting-event-root .shooting-boss-weakness-barrier{\n  background:\n    radial-gradient(circle,\n      rgba(var(--weak-shield-rgb),.10) 0 48%,\n      rgba(var(--weak-shield-rgb),.16) 56%,\n      rgba(var(--weak-shield-rgb),.34) 67%,\n      rgba(var(--weak-shield-rgb),.12) 74%,\n      transparent 80%),\n    conic-gradient(from 12deg,\n      rgba(var(--weak-shield-rgb),.34),\n      rgba(var(--weak-shield-rgb),.08) 18%,\n      rgba(var(--weak-shield-rgb),.38) 38%,\n      rgba(var(--weak-shield-rgb),.08) 58%,\n      rgba(var(--weak-shield-rgb),.34) 78%,\n      rgba(var(--weak-shield-rgb),.08));\n  box-shadow:\n    0 0 7px rgba(var(--weak-shield-rgb),.42),\n    0 0 15px rgba(var(--weak-shield-rgb),.24),\n    inset 0 0 13px rgba(var(--weak-shield-rgb),.24);\n}\n

/* ============================================================
   build1026 DAILY — EXP MATERIAL QUEST
   曜日素材と経験値素材を同じDAILY選択画面で区分表示。
   ============================================================ */
#shooting-event-root ~ .shooting-daily-stage-select .shooting-daily-kind-heading,
.shooting-daily-stage-select .shooting-daily-kind-heading{
  display:flex;
  align-items:baseline;
  gap:8px;
  padding:8px 4px 2px;
  color:#79613d;
  font-family:"Noto Serif JP","Yu Mincho",serif;
}
.shooting-daily-stage-select .shooting-daily-kind-heading strong{
  font-size:11px;
  font-weight:600;
  letter-spacing:.12em;
}
.shooting-daily-stage-select .shooting-daily-kind-heading span{
  font-size:8px;
  color:rgba(92,74,50,.56);
  letter-spacing:.06em;
}
.shooting-daily-stage-select .shooting-daily-kind-heading-exp{
  margin-top:6px;
  padding-top:12px;
  border-top:1px solid rgba(151,124,78,.14);
}
.shooting-daily-stage-select .shooting-daily-stage-reward-chip.is-exp-daily{
  gap:2px!important;
}
.shooting-daily-stage-select .shooting-daily-stage-reward-chip.is-exp-daily .shooting-daily-stage-random-item{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.shooting-daily-stage-select .shooting-daily-stage-reward-chip.is-exp-daily img{
  width:26px!important;
  height:26px!important;
}
.shooting-daily-stage-select .shooting-daily-exp-total{
  margin-left:3px;
  color:#745b35!important;
  font-size:9px!important;
  white-space:nowrap;
}


/* ============================================================
   build1031 STAGE GIMMICK PREVIEW
   共通ギミック: 属性バリア / 制限時間 / 移動壁
   ============================================================ */
.shooting-stage-gimmicks{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
  margin-top:2px;
}
.shooting-stage-gimmick-label{
  flex:0 0 auto;
  color:rgba(148,119,72,.72);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:7px;
  letter-spacing:.13em;
}
.shooting-stage-gimmick-list{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
  flex-wrap:wrap;
}
.shooting-stage-gimmick-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  color:#735d3d;
  font-family:"Noto Serif JP",serif;
  font-size:8px;
  line-height:1;
  white-space:nowrap;
}
.shooting-stage-gimmick-chip b{font-weight:500}
.shooting-stage-gimmick-chip small{
  color:#927c59;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:7px;
}
.shooting-stage-gimmick-elements{
  display:inline-flex;
  align-items:center;
  gap:2px;
}
.shooting-stage-gimmick-elements img{
  width:15px;
  height:15px;
  object-fit:contain;
}

/* Battle-start one-shot notice */
#shooting-event-root .shooting-stage-gimmick-notice{
  position:absolute;
  inset:0;
  z-index:88;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  box-sizing:border-box;
  pointer-events:none;
  opacity:0;
  transition:opacity .18s ease;
  background:rgba(250,247,239,.90);
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
#shooting-event-root .shooting-stage-gimmick-notice.show{opacity:1}
#shooting-event-root .shooting-stage-gimmick-notice.out{opacity:0}
#shooting-event-root .shooting-stage-gimmick-notice-card{
  width:min(340px,88vw);
  padding:17px 18px 16px;
  box-sizing:border-box;
  border-top:1px solid rgba(163,133,82,.38);
  border-bottom:1px solid rgba(163,133,82,.38);
  background:rgba(255,253,247,.76);
  text-align:center;
}
#shooting-event-root .shooting-stage-gimmick-notice-kicker{
  margin-bottom:10px;
  color:#a08355;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:8px;
  letter-spacing:.24em;
}
#shooting-event-root .shooting-stage-gimmick-notice-row{
  min-height:25px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  color:#5c4b34;
}
#shooting-event-root .shooting-stage-gimmick-notice-row strong{
  font-family:"Noto Serif JP",serif;
  font-size:13px;
  font-weight:500;
  letter-spacing:.08em;
}
#shooting-event-root .shooting-stage-gimmick-notice-row small{
  color:#8c7859;
  font-size:8px;
  letter-spacing:.03em;
}
#shooting-event-root .shooting-stage-gimmick-notice-elements{
  display:inline-flex;
  align-items:center;
  gap:3px;
}
#shooting-event-root .shooting-stage-gimmick-notice-elements img{
  width:19px;
  height:19px;
  object-fit:contain;
}


/* ============================================================
   build1033 DAILY FIXED ROW LAYOUT
   - GIMMICK欄は全ステージ常設。「なし」も1行として表示。
   - DAILY 4行はギミック数に関係なく同じ固定高さ。
   - 画面高が足りない端末はリスト側をスクロール。
   ============================================================ */
html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-list{
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row{
  height:108px !important;
  min-height:108px !important;
  max-height:108px !important;
  padding:8px 18px !important;
  box-sizing:border-box !important;
  flex:0 0 108px !important;
  align-items:center !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-faceless-stage-main{
  height:92px !important;
  min-height:92px !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  gap:1px !important;
  overflow:hidden !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-faceless-stage-name-row{
  min-height:18px !important;
  line-height:18px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-faceless-stage-condition{
  min-height:12px !important;
  margin:0 !important;
  line-height:1.2 !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-elements{
  min-height:17px !important;
  margin:0 !important;
  gap:0 !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-element-line{
  min-height:17px !important;
  line-height:17px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-element-icon{
  width:16px !important;
  height:16px !important;
  flex-basis:16px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmicks{
  display:flex !important;
  align-items:center !important;
  min-height:16px !important;
  height:16px !important;
  margin:0 !important;
  gap:6px !important;
  overflow:hidden !important;
  flex:0 0 16px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmick-label{
  font-size:6.5px !important;
  line-height:16px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmick-list{
  min-width:0 !important;
  gap:5px !important;
  flex-wrap:nowrap !important;
  overflow:hidden !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmick-chip{
  gap:3px !important;
  font-size:7px !important;
  line-height:16px !important;
  flex:0 0 auto !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmick-elements img{
  width:13px !important;
  height:13px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-stage-gimmicks.is-none
.shooting-stage-gimmick-chip{
  color:rgba(92,80,63,.48) !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-daily-stage-reward{
  min-height:23px !important;
  height:23px !important;
  margin:0 !important;
  gap:5px !important;
  flex-wrap:nowrap !important;
  overflow:hidden !important;
  flex:0 0 23px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-daily-stage-reward-chip img{
  width:22px !important;
  height:22px !important;
}

html body:not(.ui-immersive)
.shooting-daily-stage-select
.shooting-daily-stage-row
.shooting-daily-stage-reward-chip b{
  font-size:8.5px !important;
}

@media (max-width:380px),(max-height:700px){
  html body:not(.ui-immersive)
  .shooting-daily-stage-select
  .shooting-daily-stage-row{
    height:108px !important;
    min-height:108px !important;
    max-height:108px !important;
    flex-basis:108px !important;
    padding:8px 13px !important;
  }

  html body:not(.ui-immersive)
  .shooting-daily-stage-select
  .shooting-daily-stage-list{
    padding-top:20px !important;
    padding-bottom:calc(34px + env(safe-area-inset-bottom,16px)) !important;
  }
}


/* ============================================================
   build1034 NOAH SPECIAL STAGE SELECT
   Puzzle screen -> stage info/gimmick screen -> party select
   ============================================================ */
.noah-stage-select{
  position:fixed;
  inset:0;
  z-index:235000;
  display:none;
  box-sizing:border-box;
  padding:var(--header-h,72px) 0 var(--bottom-nav-h,76px);
  background:
    linear-gradient(rgba(255,253,247,.12),rgba(255,253,247,.12)),
    url("../images/zeraphia_bg_01.webp") center/cover no-repeat;
  color:#3f342a;
  font-family:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif;
}
.noah-stage-select.show{display:block}
.noah-stage-select-page{
  width:100%;
  height:100%;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:rgba(255,255,255,.40);
}
.noah-stage-select-header{
  position:relative;
  flex:0 0 58px;
  min-height:58px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-bottom:1px solid rgba(115,99,70,.13);
  background:rgba(255,255,255,.58);
}
.noah-stage-select-back{
  position:absolute;
  left:16px;
  top:50%;
  transform:translateY(-50%);
  padding:0;
  border:0;
  background:transparent;
  color:#88704c;
  font-family:inherit;
  font-size:9px;
  letter-spacing:.04em;
}
.noah-stage-select-title{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
}
.noah-stage-select-title small{
  color:#aa8a56;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:6px;
  letter-spacing:.22em;
}
.noah-stage-select-title strong{
  color:#6f5535;
  font-size:15px;
  font-weight:500;
  letter-spacing:.12em;
}
.noah-stage-select-list{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:24px 0 calc(40px + env(safe-area-inset-bottom,20px));
}
.noah-stage-select-row{
  width:100%;
  min-height:142px;
  margin:0;
  padding:15px 18px;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  gap:14px;
  border:0;
  border-top:1px solid rgba(115,99,70,.13);
  border-bottom:1px solid rgba(115,99,70,.16);
  border-radius:0;
  background:rgba(255,255,255,.64);
  color:#27344f;
  text-align:left;
  font-family:inherit;
}
.noah-stage-select-row:active{
  background:rgba(214,201,171,.35);
}
.noah-stage-select-no{
  flex:0 0 38px;
  color:rgba(64,76,99,.48);
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:10px;
  letter-spacing:.14em;
}
.noah-stage-select-main{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.noah-stage-select-name-row{
  display:flex;
  align-items:baseline;
  gap:9px;
  min-width:0;
}
.noah-stage-select-name-row strong{
  color:#27344f;
  font-size:14px;
  font-weight:500;
  letter-spacing:.08em;
}
.noah-stage-select-name-row em{
  color:#aa8a56;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:7px;
  font-style:normal;
  letter-spacing:.12em;
}
.noah-stage-select-condition{
  color:rgba(70,82,105,.58);
  font-size:9px;
  line-height:1.45;
  letter-spacing:.10em;
}
.noah-stage-select .shooting-stage-elements{
  margin-top:1px!important;
}
.noah-stage-select .shooting-stage-gimmicks{
  min-height:18px;
  margin-top:1px;
}
.noah-stage-select-cost{
  min-height:22px;
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:1px;
  color:#8b6e3c;
  font-size:8px;
  letter-spacing:.05em;
}
.noah-stage-select-cost b{
  color:#735d3d;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:9px;
  font-weight:600;
}
@media (min-width:500px){
  .noah-stage-select{
    left:50%;
    right:auto;
    width:100%;
    max-width:430px;
    transform:translateX(-50%);
  }
}


/* ============================================================
   build1036 NOAH — two short moving walls
   CH06の壁ロジックをノアでも使用。ノアは短い壁2枚。
   ============================================================ */
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier{
  position:absolute;
  left:0;
  top:0;
  z-index:23;
  pointer-events:none;
  box-sizing:border-box;
  border:1px solid rgba(189,171,132,.72);
  border-radius:999px;
  background:linear-gradient(
    90deg,
    rgba(255,255,255,.90),
    rgba(230,221,200,.84) 22%,
    rgba(255,255,255,.94) 50%,
    rgba(230,221,200,.84) 78%,
    rgba(255,255,255,.90)
  );
  box-shadow:
    0 0 0 1px rgba(255,255,255,.72) inset,
    0 0 10px rgba(208,190,150,.24),
    0 3px 8px rgba(81,65,39,.10);
  opacity:.96;
}

#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier::before,
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier::after{
  content:"";
  position:absolute;
  top:50%;
  width:10px;
  height:10px;
  border:1px solid rgba(153,127,79,.58);
  background:rgba(255,253,246,.96);
  transform:translateY(-50%) rotate(45deg);
  box-shadow:0 0 6px rgba(202,176,120,.22);
}

#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier::before{
  left:6px;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier::after{
  right:6px;
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier i{
  position:absolute;
  left:21px;
  right:21px;
  top:50%;
  height:1px;
  transform:translateY(-50%);
  background:repeating-linear-gradient(
    90deg,
    rgba(143,115,68,.42) 0 8px,
    transparent 8px 14px
  );
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier b{
  position:absolute;
  left:50%;
  top:50%;
  width:12px;
  height:12px;
  transform:translate(-50%,-50%) rotate(45deg);
  border:1px solid rgba(147,118,70,.62);
  background:rgba(255,252,242,.98);
}
#shooting-event-root[data-shooting-stage="shooting_event_bullet_hell_test"] .shooting-ch06-barrier.hit{
  filter:brightness(1.12);
  box-shadow:
    0 0 0 1px rgba(255,255,255,.9) inset,
    0 0 14px rgba(213,181,111,.52),
    0 0 24px rgba(255,245,211,.38);
}


/* ============================================================
   build1040 ABORT MISSION transition
   PAUSE > ステージ終了：バトル画面へ戻し、ABORT MISSION表示後に白フェード。
   ============================================================ */
#shooting-event-root .shooting-abort-mission{
  position:absolute;
  inset:0;
  z-index:260;
  display:block;
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  overflow:hidden;
}
#shooting-event-root .shooting-abort-mission.show{
  opacity:1;
  visibility:visible;
}
#shooting-event-root .shooting-abort-mission-copy{
  position:absolute;
  z-index:2;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  color:#785a32;
  font-family:"Cinzel","Times New Roman",serif;
  font-size:clamp(22px,7vw,34px);
  font-weight:500;
  line-height:1;
  letter-spacing:.22em;
  white-space:nowrap;
  text-indent:.22em;
  text-shadow:0 1px 0 rgba(255,255,255,.88),0 4px 16px rgba(92,67,35,.18);
  opacity:0;
  animation:none;
}
#shooting-event-root .shooting-abort-mission.show .shooting-abort-mission-copy{
  animation:shootingAbortMissionCopy1040 720ms cubic-bezier(.22,.72,.2,1) both;
}
#shooting-event-root .shooting-abort-mission-fade{
  position:absolute;
  z-index:3;
  inset:0;
  background:#fffdf8;
  opacity:0;
}
#shooting-event-root .shooting-abort-mission.fadeout .shooting-abort-mission-copy{
  opacity:0 !important;
  transition:opacity 260ms ease-out;
}
#shooting-event-root .shooting-abort-mission.fadeout .shooting-abort-mission-fade{
  opacity:1;
  transition:opacity 620ms ease-in;
}
@keyframes shootingAbortMissionCopy1040{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.96);letter-spacing:.28em}
  26%{opacity:1;transform:translate(-50%,-50%) scale(1);letter-spacing:.22em}
  78%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:.92;transform:translate(-50%,-50%) scale(1)}
}
@media (prefers-reduced-motion:reduce){
  #shooting-event-root .shooting-abort-mission.show .shooting-abort-mission-copy{
    animation:none!important;
    opacity:1!important;
  }
}


/* ============================================================
   build1041 BOSS FRONT LAYER
   Boss artwork must render in front of the boss HP/name HUD when they overlap.
   ============================================================ */
#shooting-event-root .shooting-boss{
  z-index:20 !important;
}


/* ============================================================
   build1042 CH04-3 — NORMAL BOSS + MEMORY FRAGMENT GATES
   ============================================================ */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-boss-hud{
  display:block!important;
}

#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-combo{
  display:block!important;
}

#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_03"],
  [data-shooting-stage="shooting_beginner_ch04_03"]
) .shooting-character-option:not(.locked){
  opacity:1!important;
  filter:none!important;
  pointer-events:auto!important;
}

#shooting-event-root .shooting-ch43-memory-fragment{
  position:absolute;
  width:38px!important;
  height:38px!important;
  z-index:145!important;
  border:3px solid rgba(219,202,255,.96)!important;
  background:
    radial-gradient(circle,
      rgba(255,255,255,1) 0 14%,
      rgba(224,210,255,.98) 20% 38%,
      rgba(142,95,232,.96) 44% 62%,
      rgba(95,128,245,.70) 66% 74%,
      rgba(92,61,220,0) 82%)!important;
  box-shadow:
    0 0 12px rgba(255,255,255,.95),
    0 0 26px rgba(176,126,255,.82),
    0 0 46px rgba(112,79,238,.62)!important;
  pointer-events:none!important;
}

#shooting-event-root .shooting-ch43-memory-fragment span{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-52%);
  z-index:2;
  color:#fff;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:12px;
  font-weight:700;
  line-height:1;
  text-shadow:0 1px 4px rgba(69,45,130,.65);
  pointer-events:none;
}


/* ============================================================
   build1043 CH04 PICKUP ART — item_memory.webp
   CH04で拾う全アイテムを同一画像へ統一。
   ============================================================ */
#shooting-event-root .shooting-ch04-final-item{
  width:54px!important;
  height:54px!important;
  border:0!important;
  background:none!important;
  background-image:none!important;
  box-shadow:none!important;
  filter:none!important;
  overflow:visible!important;
  opacity:1!important;
}

#shooting-event-root .shooting-ch04-final-item > i,
#shooting-event-root .shooting-ch04-final-item > span{
  display:none!important;
}

#shooting-event-root .shooting-ch04-memory-item-image{
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  transform:translate(-50%,-50%)!important;
  pointer-events:none!important;
  filter:drop-shadow(0 0 7px rgba(255,255,255,.92))
         drop-shadow(0 0 15px rgba(174,145,235,.38))!important;
}

/* 元のinline結晶背景を完全に無効化。 */
#shooting-event-root .shooting-ch04-final-item{
  background:transparent!important;
  box-shadow:none!important;
}

/* 取得しやすさを維持するため当たり判定は画像サイズ相当。 */
#shooting-event-root .shooting-ch43-memory-fragment,
#shooting-event-root .shooting-ch43-restore-item{
  width:54px!important;
  height:54px!important;
}


/* ============================================================
   build1044 CH01/CH03 collect-item stages — life energy item
   ============================================================ */
#shooting-event-root .shooting-mission-item.life-energy{
  width:56px!important;
  height:56px!important;
  border:0!important;
  border-radius:0!important;
  background:none!important;
  background-image:none!important;
  box-shadow:none!important;
  overflow:visible!important;
}
#shooting-event-root .shooting-mission-item.life-energy > i{
  display:none!important;
}
#shooting-event-root .shooting-mission-item-image{
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  transform:translate(-50%,-50%)!important;
  pointer-events:none!important;
  filter:drop-shadow(0 0 8px rgba(255,245,210,.92))
         drop-shadow(0 0 18px rgba(255,173,88,.38))!important;
}


/* ============================================================
   build1047 CHAPTER 07 — FACELESS / REMNANT 07
   ============================================================ */

/* CH07のFACELESSは雑魚サイズだが、元画像の縦長シルエットを崩さない。 */
#shooting-event-root[data-shooting-stage^="shooting_ch07_"] .shooting-mini-enemy[src*="enemy_faceless_battle"],
#shooting-event-root[data-shooting-stage^="shooting_beginner_ch07_"] .shooting-mini-enemy[src*="enemy_faceless_battle"]{
  width:82px!important;
  height:110px!important;
  object-fit:contain!important;
}

/* 開幕完全シールド。属性バリアとは別レイヤー。 */
#shooting-event-root .shooting-ch07-complete-shield{
  position:absolute;
  left:0;
  top:0;
  z-index:23;
  box-sizing:border-box;
  border:2px solid rgba(238,244,255,.88);
  border-radius:50%;
  background:
    radial-gradient(circle,rgba(255,255,255,.05) 0 48%,rgba(189,203,225,.16) 62%,rgba(90,102,124,.28) 72%,transparent 74%);
  box-shadow:
    0 0 16px rgba(238,244,255,.55),
    0 0 34px rgba(126,146,177,.38),
    inset 0 0 22px rgba(255,255,255,.20);
  pointer-events:none;
  animation:ch07CompleteShieldPulse .92s ease-in-out infinite alternate;
}
@keyframes ch07CompleteShieldPulse{
  from{opacity:.72;filter:brightness(.94)}
  to{opacity:1;filter:brightness(1.18)}
}

/* 突進前は本体を短く明滅。 */
#shooting-event-root #shooting-boss.ch07-dash-warning{
  animation:ch07DashWarning .16s steps(2,end) infinite!important;
}
@keyframes ch07DashWarning{
  0%,100%{filter:brightness(1) drop-shadow(0 10px 10px rgba(63,48,32,.20))}
  50%{filter:brightness(1.9) saturate(.55) drop-shadow(0 0 16px rgba(255,255,255,.92))}
}
#shooting-event-root #shooting-boss.ch07-dashing{
  filter:blur(.4px) drop-shadow(0 12px 16px rgba(65,55,80,.26))!important;
}

/* 透明化失敗時。完全に消して位置を読ませない。 */
#shooting-event-root #shooting-boss.ch07-invisible{
  opacity:0!important;
  visibility:hidden!important;
}

/* 鳥居型ユニット：専用画像素材を使用。 */
#shooting-event-root .shooting-ch07-torii{
  width:132px!important;
  height:132px!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  overflow:visible!important;
  filter:drop-shadow(0 0 8px rgba(255,255,255,.34))
         drop-shadow(0 0 16px rgba(172,145,196,.28))!important;
}
#shooting-event-root .shooting-ch07-torii > i{
  display:none!important;
}
#shooting-event-root .shooting-ch07-torii-image{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  transform:translate(-50%,-50%)!important;
  object-fit:contain!important;
  pointer-events:none!important;
}
#shooting-event-root .shooting-ch07-torii-hp{
  width:84px!important;
}

/* REMNANT07 clones */
#shooting-event-root[data-shooting-stage="shooting_ch07_03"] .shooting-mini-enemy[src*="remnant_07_battle"],
#shooting-event-root[data-shooting-stage="shooting_beginner_ch07_03"] .shooting-mini-enemy[src*="remnant_07_battle"]{
  width:92px!important;
  height:112px!important;
  object-fit:contain!important;
}

/* CH07もFACELESS弾を軽量表示。 */
#shooting-event-root[data-shooting-stage^="shooting_ch07_"] .shooting-faceless-object-bullet,
#shooting-event-root[data-shooting-stage^="shooting_ch07_"] .shooting-faceless-bullet,
#shooting-event-root[data-shooting-stage^="shooting_ch07_"] .shooting-ch07-remnant-bullet,
#shooting-event-root[data-shooting-stage^="shooting_ch07_"] .shooting-ch07-clone-bullet{
  box-shadow:none!important;
}


/* ============================================================
   build1052 CH07 PHASE2 — lightweight REMNANT07 clones
   通常敵サブシステムを使わず、既存のOBJECT層で分身体を管理。
   ============================================================ */
#shooting-event-root[data-shooting-stage="shooting_ch07_03"] .shooting-ch07-clone-object,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch07_03"] .shooting-ch07-clone-object{
  width:86px!important;
  height:108px!important;
  object-fit:contain!important;
  filter:drop-shadow(0 5px 7px rgba(58,47,66,.18))!important;
  opacity:.94!important;
  will-change:transform!important;
}

#shooting-event-root[data-shooting-stage="shooting_ch07_03"] .shooting-ch07-clone-hp,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch07_03"] .shooting-ch07-clone-hp{
  width:72px!important;
}


/* ============================================================
   build1053 CH07 — 50% ENHANCE TRANSITION
   戦闘処理を完全停止してから分身体を生成する。
   ============================================================ */
#shooting-event-root.ch07-enhance-transition::after{
  content:"";
  position:absolute;
  z-index:96;
  inset:72px 0 72px;
  pointer-events:none;
  background:rgba(245,241,232,.30);
  animation:ch07EnhanceWash 1.65s ease-in-out both;
}

#shooting-event-root .shooting-boss.ch07-enhance-boss{
  z-index:97!important;
  animation:ch07EnhanceBoss 1.55s ease-in-out both!important;
}

@keyframes ch07EnhanceWash{
  0%{opacity:0}
  18%{opacity:.58}
  72%{opacity:.38}
  100%{opacity:0}
}

@keyframes ch07EnhanceBoss{
  0%{
    opacity:.96;
    transform:translate3d(var(--boss-x,0),var(--boss-y,0),0)
              translate(-50%,-50%) scale(1);
  }
  38%{
    opacity:1;
    filter:brightness(1.45) saturate(.72);
    transform:translate3d(var(--boss-x,0),var(--boss-y,0),0)
              translate(-50%,-50%) scale(1.08);
  }
  72%{
    opacity:1;
    filter:brightness(1.18) saturate(.88);
    transform:translate3d(var(--boss-x,0),var(--boss-y,0),0)
              translate(-50%,-50%) scale(1.04);
  }
  100%{
    opacity:.96;
    filter:none;
    transform:translate3d(var(--boss-x,0),var(--boss-y,0),0)
              translate(-50%,-50%) scale(1);
  }
}


/* build1054: CH07 complete shield aligns 1:1 with elemental shield geometry. */
#shooting-event-root[data-shooting-stage="shooting_ch07_03"] .shooting-ch07-complete-shield,
#shooting-event-root[data-shooting-stage="shooting_beginner_ch07_03"] .shooting-ch07-complete-shield{
  border-color:rgba(242,248,255,.80)!important;
  background:
    radial-gradient(circle,
      rgba(255,255,255,.025) 0 54%,
      rgba(219,231,244,.10) 66%,
      rgba(184,202,222,.20) 72%,
      transparent 75%)!important;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.32) inset,
    0 0 13px rgba(224,237,250,.42),
    0 0 28px rgba(158,181,207,.26)!important;
  pointer-events:none!important;
}


/* ============================================================
   build1055 CH07 OBJECT HIT FEEDBACK
   Mask / torii visual center is exactly the object hitbox center.
   ============================================================ */

/* 仮面・鳥居本体を1発ごとに白く短く発光。 */
#shooting-event-root[data-shooting-stage^="shooting_ch07_"]
.shooting-faceless-object.faceless-hit-flash,
#shooting-event-root[data-shooting-stage^="shooting_beginner_ch07_"]
.shooting-faceless-object.faceless-hit-flash{
  filter:
    brightness(2.15)
    saturate(.58)
    drop-shadow(0 0 9px rgba(255,255,255,.96))
    drop-shadow(0 0 17px rgba(199,177,220,.78))!important;
  transform:
    translate3d(var(--unit-x),var(--unit-y),0)
    translate(-50%,-50%)
    scale(1.065)!important;
}

/* 着弾点に出す軽量な二重リング。 */
#shooting-event-root .shooting-ch07-object-hit{
  position:absolute;
  z-index:31;
  left:0;
  top:0;
  width:18px;
  height:18px;
  border:1px solid rgba(255,255,255,.96);
  border-radius:50%;
  pointer-events:none;
  opacity:0;
  box-shadow:
    0 0 7px rgba(255,255,255,.92),
    0 0 14px rgba(182,145,210,.64);
  will-change:transform,opacity;
}

#shooting-event-root .shooting-ch07-object-hit::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:5px;
  height:5px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:rgba(255,255,255,.96);
  box-shadow:0 0 7px rgba(205,176,228,.90);
}

#shooting-event-root .shooting-ch07-object-hit.show{
  animation:shootingCh07ObjectHit .22s ease-out forwards;
}

@keyframes shootingCh07ObjectHit{
  0%{
    opacity:1;
    transform:
      translate3d(var(--unit-x),var(--unit-y),0)
      translate(-50%,-50%)
      scale(.55);
  }
  100%{
    opacity:0;
    transform:
      translate3d(var(--unit-x),var(--unit-y),0)
      translate(-50%,-50%)
      scale(1.65);
  }
}


/* ============================================================
   build1056 CH07 TORII — remaining HIT / ricochet penalty
   ============================================================ */

#shooting-event-root .shooting-ch07-torii-hp{
  overflow:visible!important;
}

#shooting-event-root .shooting-ch07-torii-hit-count{
  position:absolute;
  left:50%;
  top:9px;
  transform:translateX(-50%);
  display:block;
  min-width:58px;
  text-align:center;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:10px;
  font-weight:700;
  line-height:1;
  letter-spacing:.08em;
  color:#6d526f;
  text-shadow:0 1px 2px rgba(255,255,255,.96);
  white-space:nowrap;
  pointer-events:none;
}

/* 鳥居失敗時の3発は既存WARNINGデザインを維持しつつ、
   バウンド時の位置を読み取りやすくする。 */
#shooting-event-root .shooting-ch07-torii-warning{
  z-index:19!important;
}

#shooting-event-root .shooting-ch07-torii-warning.ricochet{
  animation:shootingCh07ToriiRicochet .16s ease-out!important;
}

@keyframes shootingCh07ToriiRicochet{
  0%{filter:brightness(2.2)!important}
  100%{filter:none!important}
}


/* ============================================================
   build1060 — FACELESS / CH07 object coordinate root fix
   positionUnit() supplies translate3d(x,y) + translate(-50%,-50%).
   Explicit left/top:0 prevents normal-flow static-position offsets
   from shifting the rendered object away from obj.x / obj.y.
   ============================================================ */
#shooting-event-root .shooting-faceless-object,
#shooting-event-root .shooting-faceless-object-hp{
  left:0!important;
  top:0!important;
  margin:0!important;
}

/* Keep positionUnit's translation when the defeated scale is applied. */
#shooting-event-root .shooting-faceless-object.defeated{
  transform:
    translate3d(var(--unit-x),var(--unit-y),0)
    translate(-50%,-50%)
    scale(.55)!important;
}


/* ============================================================
   build1061 CH07 TORII — visible break timer / TIME OVER
   ============================================================ */
#shooting-event-root .shooting-ch07-torii-time{
  position:absolute;
  left:50%;
  top:23px;
  transform:translateX(-50%);
  display:block;
  min-width:76px;
  text-align:center;
  font-family:"DSEG7 Classic Mini","Cinzel","Noto Serif JP",serif;
  font-size:12px;
  font-weight:700;
  line-height:1;
  letter-spacing:.04em;
  color:#5f5966;
  text-shadow:0 1px 2px rgba(255,255,255,.96);
  white-space:nowrap;
  pointer-events:none;
}

#shooting-event-root .shooting-ch07-torii-time.danger{
  animation:shootingCh07ToriiTimerDanger .32s steps(2,end) infinite;
}

@keyframes shootingCh07ToriiTimerDanger{
  0%,100%{opacity:1;transform:translateX(-50%) scale(1)}
  50%{opacity:.45;transform:translateX(-50%) scale(1.06)}
}


/* ============================================================
   build1073 — PLAYER ATTACK / EFFECT FRONT LAYER
   build1041でBOSS本体を前面化した結果、プレイヤー攻撃演出が
   BOSSの背面へ隠れるケースを修正。
   BOSS(z-index:20)より上、PAUSE/RESULT/CUT-IN等のUIより下に配置。
   ============================================================ */

/* 通常SHOT / ULT弾 / 派生弾 */
#shooting-event-root .shooting-bullet,
#shooting-event-root .shooting-ult-shot,
#shooting-event-root .shooting-mia-charge-shot,
#shooting-event-root .shooting-cluster-projectile,
#shooting-event-root .shooting-bomb-fragment,
#shooting-event-root .shooting-conjure-deploy-projectile,
#shooting-event-root .shooting-conjure-ult-homing,
#shooting-event-root .shooting-noah-ult-bullet{
  z-index:40 !important;
}

/* 設置物・砲台・TRAP */
#shooting-event-root .shooting-remna-trap,
#shooting-event-root .shooting-remna-trap-object,
#shooting-event-root .shooting-remna-trap-countdown,
#shooting-event-root .shooting-remna-trap-preview,
#shooting-event-root .shooting-remna-trap-guide-vertical,
#shooting-event-root .shooting-conjure-turret,
#shooting-event-root .shooting-conjure-ult-turret,
#shooting-event-root .shooting-conjure-countdown,
#shooting-event-root .shooting-conjure-preview,
#shooting-event-root .shooting-conjure-guide-vertical,
#shooting-event-root .shooting-charge-preview{
  z-index:41 !important;
}

/* 命中・爆発・連鎖・レーザー等の攻撃エフェクト */
#shooting-event-root .shooting-bomb-explosion,
#shooting-event-root .shooting-bomb-splash-hit,
#shooting-event-root .shooting-bomb-split-burst,
#shooting-event-root .shooting-bomb-throw-pop,
#shooting-event-root .shooting-lightning-chain-effect,
#shooting-event-root .shooting-eri-ult-ray,
#shooting-event-root .shooting-eri-ult-mark,
#shooting-event-root .shooting-eri-ult-slash,
#shooting-event-root .shooting-ayane-ult-beam,
#shooting-event-root .shooting-ayane-blackhand-ult,
#shooting-event-root .shooting-ayane-multi-grip,
#shooting-event-root .shooting-ayane-blackhand-shot,
#shooting-event-root .shooting-nina-ult-lightning,
#shooting-event-root .shooting-nina-ult-bolt-core,
#shooting-event-root .shooting-nina-ult-bolt-glow,
#shooting-event-root .shooting-nina-ult-bolt-branch,
#shooting-event-root .shooting-nina-ult-dust,
#shooting-event-root .shooting-liz-ult-bomb,
#shooting-event-root .shooting-painter-ult-bomb,
#shooting-event-root .shooting-rose-flower,
#shooting-event-root .shooting-rose-flower-aura,
#shooting-event-root .shooting-rose-fortress,
#shooting-event-root .shooting-arno-aura{
  z-index:42 !important;
}

/* build1329 — 通常LASERは敵本体・敵弾より背面に描画する。
   z=8 < 通常敵のレイヤー(9) / DOM敵弾(10) / Canvas敵弾(17) / BOSS(20)。
   ノアのLASERも .shooting-ignis-laser を共有するため同じ優先度。
   攻撃判定・貫通・威力・発射間隔には影響しない。 */
#shooting-event-root .shooting-ignis-laser{
  z-index:8 !important;
}

/* BOSSはHUDより前、プレイヤー攻撃より後ろ */
#shooting-event-root .shooting-boss{
  z-index:20 !important;
}


/* ============================================================
   build1111 — PROJECTILE READABILITY / HOSTILE BULLETS ALWAYS ABOVE ALLIED SHOTS
   Allied shot projectiles stay below hostile bullets so dodging remains readable.
   Layer order inside arena: allied projectile(9) < enemy bullet(11) < player(12) < boss(20).
   ============================================================ */
#shooting-event-root .shooting-bullet,
#shooting-event-root [class*="shooting-bullet-"]:not(.shooting-ignis-laser),
#shooting-event-root .shooting-ult-shot,
#shooting-event-root .shooting-mia-charge-shot,
#shooting-event-root .shooting-cluster-projectile,
#shooting-event-root .shooting-bomb-fragment,
#shooting-event-root .shooting-conjure-deploy-projectile,
#shooting-event-root .shooting-conjure-ult-homing,
#shooting-event-root .shooting-noah-ult-bullet{
  z-index:9 !important;
}

/* build1330: 元素属性の shooting-bullet-* を併用するLASERを、
   自機ショット共通のz-index:9に誤分類しない。通常敵layer:9の後ろへ固定。
   レーザー要素は敵より後にappendされるため、同じ9ではレーザーが前面になる。 */
#shooting-event-root #shooting-arena .shooting-ignis-laser{
  z-index:8 !important;
}

#shooting-event-root .shooting-enemy-bullet,
#shooting-event-root .shooting-mini-enemy-bullet,
#shooting-event-root #shooting-enemy-bullet-canvas{
  z-index:11 !important;
}

/* ============================================================
   build1111 — AYANE ULT / NO ELEMENT-PURPLE TINT
   Ayane's black-hand ULT uses its original artwork and achromatic black/gray effects.
   Do not add DARK-element purple tint, glow or parent filter to the ULT artwork.
   ============================================================ */
#shooting-event-root .shooting-ayane-blackhand-ult,
#shooting-event-root .shooting-ayane-blackhand-aura,
#shooting-event-root .shooting-ayane-blackhand-impact,
#shooting-event-root .shooting-ayane-blackhand-grip-ring,
#shooting-event-root .shooting-ayane-blackhand-smoke,
#shooting-event-root .shooting-ayane-multi-grip{
  filter:none !important;
  -webkit-filter:none !important;
}

#shooting-event-root .shooting-ayane-blackhand-shot,
#shooting-event-root .shooting-ayane-blackhand-shot img.hand-open,
#shooting-event-root .shooting-ayane-blackhand-shot img.hand-close{
  filter:none !important;
  -webkit-filter:none !important;
  mix-blend-mode:normal !important;
}

#shooting-event-root .shooting-ayane-blackhand-shot{
  filter:
    drop-shadow(0 0 8px rgba(0,0,0,.96))
    drop-shadow(0 0 18px rgba(18,18,18,.72)) !important;
}

#shooting-event-root .shooting-ayane-blackhand-aura{
  background:radial-gradient(circle,
    rgba(8,8,8,.96) 0 22%,
    rgba(28,28,28,.72) 34%,
    rgba(12,12,12,.25) 58%,
    transparent 74%) !important;
  box-shadow:
    0 0 10px rgba(0,0,0,.92),
    0 0 28px rgba(24,24,24,.70),
    0 0 54px rgba(10,10,10,.46) !important;
}

#shooting-event-root .shooting-ayane-blackhand-afterimage{
  background:linear-gradient(180deg,
    transparent 0,
    rgba(12,12,12,.25) 10%,
    rgba(8,8,8,.84) 26%,
    rgba(34,34,34,.62) 72%,
    rgba(34,34,34,0) 100%) !important;
}

#shooting-event-root .shooting-ayane-blackhand-impact{
  background:radial-gradient(circle,
    #fff 0 4%,
    rgba(110,110,110,.78) 9%,
    rgba(18,18,18,.94) 28%,
    rgba(0,0,0,.80) 45%,
    transparent 72%) !important;
  box-shadow:0 0 18px rgba(0,0,0,.96),0 0 42px rgba(28,28,28,.76) !important;
}

#shooting-event-root .shooting-ayane-blackhand-smoke{
  background:radial-gradient(ellipse,
    rgba(34,34,34,.82),
    rgba(5,5,5,.64) 55%,
    transparent 73%) !important;
}

#shooting-event-root .shooting-ayane-blackhand-grip-ring{
  border-color:rgba(28,28,28,.78) !important;
  box-shadow:0 0 10px rgba(0,0,0,.78), inset 0 0 15px rgba(70,70,70,.20) !important;
}

#shooting-boss.ayane-grabbed{
  filter:brightness(.58) contrast(1.35) saturate(0) drop-shadow(0 0 9px rgba(0,0,0,.95)) drop-shadow(0 0 19px rgba(35,35,35,.75)) !important;
}

#shooting-event-root.ayane-rampage-active .shooting-wash{
  background:rgba(14,14,14,.18) !important;
}

/* ============================================================
   build1254 — CH04-1 STORY selectable party
   エリ / ジグ / アウラ / アルノ / ミモザ / レオナクロスから3人選択。
   旧CH04「エリ単独」CSSをCH04-1だけ明示的に解除する。
   ============================================================ */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_01"],
  [data-shooting-stage="shooting_beginner_ch04_01"]
) .shooting-character-grid.shooting-party-roster{
  overflow:auto!important;
  isolation:auto!important;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_01"],
  [data-shooting-stage="shooting_beginner_ch04_01"]
) .shooting-character-grid.shooting-party-roster::after{
  content:none!important;
  display:none!important;
  pointer-events:none!important;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch04_01"],
  [data-shooting-stage="shooting_beginner_ch04_01"]
) .shooting-character-option:not(.locked){
  opacity:1!important;
  filter:none!important;
  pointer-events:auto!important;
}


/* ============================================================
   build1255 — CH04 normal battle restoration
   旧「回避専用 / SHOT不可」表示を解除し、通常戦闘のCOMBO/MISSION表示へ戻す。
   ステージ固有ギミックはJS側で個別管理する。
   ============================================================ */
#shooting-event-root:is(
  [data-shooting-stage^="shooting_ch04_"],
  [data-shooting-stage^="shooting_beginner_ch04_"]
) .shooting-combo{
  display:block!important;
}
#shooting-event-root:is(
  [data-shooting-stage^="shooting_ch04_"],
  [data-shooting-stage^="shooting_beginner_ch04_"]
) .shooting-mission-hud{
  display:grid!important;
}

/* build1293: CH04 party UI is driven by JS ownership/story rules, not legacy stage CSS. */
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-party-roster::after{content:none!important;display:none!important;pointer-events:none!important}
#shooting-event-root:is([data-shooting-stage^="shooting_ch04_"],[data-shooting-stage^="shooting_beginner_ch04_"]) .shooting-character-option:not(.locked):not(:disabled){opacity:1!important;filter:none!important;pointer-events:auto!important}


/* ============================================================
   build1348 DAILY STAGE SELECT REWORK
   - build1347の注入型UIを廃止
   - 巡行画面に近い紙面/カードUIへ再調整
   ============================================================ */
html body:not(.ui-immersive) .shooting-faceless-stage-select.shooting-daily-stage-select{
  background:
    linear-gradient(180deg, rgba(255,255,255,.18), rgba(246,240,230,.18)),
    url("../images/zeraphia_bg_01.webp") center top/cover no-repeat !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-page{
  position:relative !important;
  z-index:1 !important;
  width:100% !important;
  max-width:430px !important;
  height:100% !important;
  margin:0 auto !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  background:transparent !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header-area{
  flex:0 0 auto !important;
  padding:10px 14px 0 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header{
  position:relative !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:4px !important;
  min-height:124px !important;
  padding:16px 8px 10px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header .shooting-faceless-stage-back{
  position:absolute !important;
  left:0 !important;
  top:4px !important;
  transform:none !important;
  min-width:92px !important;
  min-height:42px !important;
  padding:0 14px !important;
  border-radius:12px !important;
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(246,238,225,.98)) !important;
  border:1px solid rgba(198,164,108,.48) !important;
  box-shadow:0 4px 12px rgba(97,70,31,.10) !important;
  color:#7b5a31 !important;
  font-size:13px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-kicker{
  color:#ccb791 !important;
  font:600 12px/1 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.18em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-title{
  color:#693b14 !important;
  font-family:"Noto Serif JP","Yu Mincho",serif !important;
  font-size:28px !important;
  font-weight:600 !important;
  letter-spacing:.08em !important;
  line-height:1.2 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament{
  position:relative !important;
  width:240px !important;
  height:18px !important;
  margin-top:4px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament::before,
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament::after{
  content:"" !important;
  position:absolute !important;
  top:50% !important;
  width:calc(50% - 18px) !important;
  height:1px !important;
  background:linear-gradient(90deg, rgba(201,171,118,0), rgba(201,171,118,.95)) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament::before{left:0 !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament::after{right:0 !important; transform:scaleX(-1) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-title-ornament span{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:12px !important;
  height:12px !important;
  transform:translate(-50%,-50%) rotate(45deg) !important;
  border:1px solid rgba(198,157,93,.9) !important;
  background:rgba(255,250,240,.92) !important;
  box-shadow:0 0 0 2px rgba(255,248,236,.7) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-list{
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch !important;
  padding:0 14px calc(22px + env(safe-area-inset-bottom,16px)) !important;
  gap:14px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-heading{
  display:grid !important;
  grid-template-columns:42px minmax(0,auto) minmax(80px,1fr) !important;
  align-items:center !important;
  gap:10px !important;
  min-height:68px !important;
  padding:0 10px 0 6px !important;
  border:1px solid rgba(211,186,141,.62) !important;
  border-radius:16px !important;
  background:linear-gradient(180deg, rgba(253,250,244,.95), rgba(245,237,224,.88)) !important;
  box-shadow:0 4px 14px rgba(104,79,42,.08) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-icon{
  width:36px !important;
  height:36px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius:50% !important;
  border:1px solid rgba(200,170,116,.62) !important;
  color:#9e7538 !important;
  font-size:17px !important;
  background:radial-gradient(circle at 35% 30%, rgba(255,255,255,.96), rgba(241,229,203,.82)) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-copy{display:flex !important; align-items:baseline !important; gap:8px !important; min-width:0 !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-copy strong{
  color:#4f3213 !important;
  font-size:18px !important;
  font-weight:600 !important;
  letter-spacing:.06em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-copy span{
  color:#8f7450 !important;
  font-size:11px !important;
  letter-spacing:.04em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-banner{
  height:42px !important;
  border-radius:12px !important;
  border:1px solid rgba(214,194,158,.58) !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,0) 45%),
    linear-gradient(135deg, rgba(231,237,247,.86), rgba(250,241,223,.88) 58%, rgba(206,219,239,.92)) !important;
  position:relative !important;
  overflow:hidden !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-banner::after{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:
    linear-gradient(90deg, rgba(146,161,188,.26) 0 34%, transparent 34% 100%),
    linear-gradient(0deg, rgba(114,87,55,.12), rgba(114,87,55,0));
  clip-path:polygon(0 100%, 0 58%, 16% 28%, 34% 46%, 50% 12%, 67% 42%, 81% 26%, 100% 8%, 100% 100%);
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-banner.is-exp{
  background:
    linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,0) 45%),
    linear-gradient(135deg, rgba(244,234,217,.92), rgba(255,245,223,.92) 58%, rgba(231,221,199,.92)) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-heading-exp{ margin-top:6px !important; }

html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{
  appearance:none !important;
  -webkit-appearance:none !important;
  position:relative !important;
  width:100% !important;
  min-height:138px !important;
  padding:8px 12px 8px 8px !important;
  display:grid !important;
  grid-template-columns:112px minmax(0,1fr) 18px !important;
  align-items:center !important;
  gap:12px !important;
  border:1px solid rgba(210,186,144,.76) !important;
  border-radius:18px !important;
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(247,240,228,.98)) !important;
  box-shadow:0 6px 18px rgba(91,67,31,.10) !important;
  overflow:hidden !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row:active{
  transform:translateY(1px) !important;
  filter:brightness(.985) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row.is-exhausted{
  opacity:.56 !important;
  filter:saturate(.45) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb{
  position:relative !important;
  min-height:122px !important;
  border-radius:14px !important;
  border:1px solid rgba(182,155,108,.34) !important;
  overflow:hidden !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.28) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb::before{
  content:"" !important;
  position:absolute !important;
  inset:0 !important;
  background:
    radial-gradient(circle at 68% 18%, rgba(255,245,214,.96) 0 8%, rgba(255,245,214,.32) 14%, transparent 28%),
    linear-gradient(180deg, rgba(255,255,255,.22), rgba(255,255,255,0) 36%),
    linear-gradient(145deg, #bfcbe0, #f2e7d2 52%, #c3b19d) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb::after{
  content:"" !important;
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  bottom:0 !important;
  height:68% !important;
  background:
    linear-gradient(90deg, rgba(72,84,118,.78) 0 32%, transparent 32% 100%),
    linear-gradient(0deg, rgba(64,76,104,.24), rgba(64,76,104,0));
  clip-path:polygon(0 100%,0 48%,16% 24%,31% 44%,46% 12%,61% 30%,79% 16%,100% 0,100% 100%) !important;
  opacity:.86 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb.is-02::before{background:radial-gradient(circle at 26% 18%, rgba(255,236,212,.95) 0 8%, rgba(255,236,212,.26) 14%, transparent 28%), linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,0) 36%), linear-gradient(145deg, #9faad0, #e9ddd2 54%, #be9994) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb.is-02::after{background:linear-gradient(90deg, rgba(70,78,118,.84) 0 40%, transparent 40% 100%), linear-gradient(0deg, rgba(98,66,67,.30), rgba(98,66,67,0)); clip-path:polygon(0 100%,0 62%,24% 34%,42% 54%,58% 18%,72% 38%,100% 8%,100% 100%) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb.is-03::before{background:radial-gradient(circle at 22% 22%, rgba(255,246,213,.95) 0 8%, rgba(255,246,213,.24) 14%, transparent 28%), linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0) 36%), linear-gradient(145deg, #d8c18c, #f8edd5 50%, #ead4a6) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb.is-03::after{background:linear-gradient(90deg, rgba(177,141,84,.68) 0 36%, transparent 36% 100%), linear-gradient(0deg, rgba(127,93,45,.20), rgba(127,93,45,0)); clip-path:polygon(0 100%,0 60%,22% 38%,39% 60%,56% 24%,73% 34%,100% 10%,100% 100%) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb.is-04::before{background:radial-gradient(circle at 70% 18%, rgba(255,245,214,.95) 0 8%, rgba(255,245,214,.26) 14%, transparent 28%), linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0) 36%), linear-gradient(145deg, #b2bed6, #f4e7d2 50%, #d6c3a2) !important}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-no-badge{
  position:absolute !important;
  left:0 !important;
  top:0 !important;
  width:52px !important;
  height:100% !important;
  display:flex !important;
  align-items:flex-start !important;
  justify-content:center !important;
  padding-top:10px !important;
  color:#fff !important;
  font-family:"Cinzel",serif !important;
  font-size:28px !important;
  line-height:1 !important;
  background:linear-gradient(180deg, rgba(50,56,94,.92), rgba(92,104,148,.82)) !important;
  text-shadow:0 1px 4px rgba(0,0,0,.18) !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-main{
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  gap:8px !important;
  min-width:0 !important;
  padding-right:2px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row{
  display:flex !important;
  align-items:center !important;
  gap:10px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row strong{
  color:#223f72 !important;
  font-size:22px !important;
  font-weight:700 !important;
  letter-spacing:.04em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-exp-row .shooting-faceless-stage-name-row strong{ color:#223f72 !important; }
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-remaining{
  margin-left:auto !important;
  min-width:92px !important;
  min-height:34px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(216,191,145,.9) !important;
  background:linear-gradient(180deg, rgba(251,244,230,.98), rgba(242,228,201,.94)) !important;
  color:#8f6b38 !important;
  font-size:12px !important;
  font-weight:600 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-condition{
  color:#5c4932 !important;
  font-size:13px !important;
  line-height:1.4 !important;
  letter-spacing:.02em !important;
  margin:0 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmicks,
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  margin:0 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-label,
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-label{
  color:#91703f !important;
  font-family:"Cinzel","Noto Serif JP",serif !important;
  font-size:10px !important;
  letter-spacing:.10em !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-list{
  gap:6px !important;
  flex-wrap:wrap !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-chip{
  font-size:12px !important;
  color:#6d5635 !important;
  gap:4px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-elements img{
  width:19px !important;
  height:19px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip{
  display:inline-flex !important;
  align-items:center !important;
  gap:4px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip img{
  width:32px !important;
  height:32px !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip b{
  color:#7c5e32 !important;
  font-size:13px !important;
  font-weight:700 !important;
}
html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-chevron{
  color:#9b7a49 !important;
  font-size:26px !important;
  line-height:1 !important;
  align-self:center !important;
}
@media (max-width:380px){
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-header{ min-height:112px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-title{ font-size:24px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-copy{ flex-direction:column !important; align-items:flex-start !important; gap:2px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-heading{ grid-template-columns:40px minmax(0,1fr) !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-kind-banner{ grid-column:1 / -1 !important; margin:0 4px 8px 4px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-row{ grid-template-columns:96px minmax(0,1fr) 16px !important; min-height:132px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-thumb{ min-height:116px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-no-badge{ width:46px !important; font-size:24px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row{ flex-direction:column !important; align-items:flex-start !important; gap:6px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-name-row strong{ font-size:20px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-remaining{ margin-left:0 !important; min-width:84px !important; min-height:30px !important; font-size:11px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-faceless-stage-condition{ font-size:12px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-chip{ font-size:11px !important; }
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-stage-gimmick-elements img,
  html body:not(.ui-immersive) .shooting-daily-stage-select .shooting-daily-stage-reward-chip img{ width:28px !important; height:28px !important; }
}

/* ============================================================
   build1381: ハオ(ID54)専用 WOOD CHARGE
   水属性CHARGEの汎用スタイルを共有しても、木の緑色で表示する。
   射撃判定・当たり判定・ダメージはJS側の既存仕様を継承。
   ============================================================ */
#shooting-event-root #shooting-arena .shooting-bullet.shooting-mia-charge-shot.shooting-hao-charge-shot.shooting-bullet-wood{
  background:
    radial-gradient(ellipse at 50% 27%,
      rgba(255,255,245,.96) 0 9%,
      rgba(224,255,203,.94) 15%,
      rgba(157,239,114,.79) 37%,
      rgba(75,185,79,.43) 58%,
      rgba(28,124,48,.16) 76%,
      transparent 88%) !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:
    0 0 11px rgba(235,255,221,.66),
    0 0 24px rgba(114,214,100,.50),
    0 0 38px rgba(45,154,62,.28) !important;
  filter:none !important;
}
#shooting-event-root #shooting-arena .shooting-bullet.shooting-mia-charge-shot.shooting-hao-charge-shot.shooting-bullet-wood::before{
  content:'' !important;
  position:absolute !important;
  left:22% !important;top:7% !important;
  right:auto !important;bottom:auto !important;
  width:56% !important;height:55% !important;
  border:0 !important;border-radius:50% 50% 46% 46% / 34% 34% 66% 66% !important;
  background:
    radial-gradient(ellipse at 50% 28%,
      rgba(255,255,245,.99) 0 17%,
      rgba(220,254,199,.92) 28%,
      rgba(142,233,118,.60) 52%,
      rgba(47,156,66,.17) 75%,
      transparent 100%) !important;
  filter:blur(.6px) !important;
  box-shadow:none !important;
  opacity:.98 !important;
}
#shooting-event-root #shooting-arena .shooting-bullet.shooting-mia-charge-shot.shooting-hao-charge-shot.shooting-bullet-wood::after{
  content:'' !important;
  position:absolute !important;
  top:29% !important;left:50% !important;
  right:auto !important;bottom:auto !important;
  width:98% !important;height:218% !important;
  border:0 !important;
  transform:translateX(-50%) !important;
  border-radius:44% 44% 68% 68% / 10% 10% 90% 90% !important;
  background:linear-gradient(to bottom,
    rgba(227,255,197,.82) 0%,
    rgba(163,239,137,.58) 16%,
    rgba(84,201,97,.38) 39%,
    rgba(35,146,69,.19) 67%,
    transparent 100%) !important;
  filter:blur(5px) !important;
  box-shadow:none !important;
  opacity:.92 !important;
}

/* =========================================================
   CH07-3 灰の夜：群がる強化個体（クモ型）
   ========================================================= */
#shooting-event-root:is([data-shooting-stage="shooting_ch07_03"],[data-shooting-stage="shooting_beginner_ch07_03"]) .shooting-bg{
  background-image:url('../images/battle_bg_ch07_03.webp');
  filter:brightness(.82) saturate(.9);
  opacity:1;
}
/* 夜の聖堂で白い体が浮かぶよう、淡い光をまとわせる */
.shooting-mini-enemy.shooting-swarm-spider{
  filter:drop-shadow(0 0 6px rgba(255,236,190,.55)) drop-shadow(0 4px 6px rgba(20,10,40,.45));
}
.shooting-mini-enemy.shooting-swarm-spider.swarm-brooding{
  animation:swarmBrood .55s ease-out;
}
@keyframes swarmBrood{
  0%{filter:drop-shadow(0 0 6px rgba(255,236,190,.55)) brightness(1)}
  35%{filter:drop-shadow(0 0 18px rgba(255,220,140,.95)) brightness(1.35)}
  100%{filter:drop-shadow(0 0 6px rgba(255,236,190,.55)) brightness(1)}
}

/* build1433: ECHO TOWER 04/06 — chapter6 collision wall visual was missing for tower stage IDs.
   Keep the original CH06 and DAILY styles unchanged. */
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier{
  position:absolute;left:0;top:0;z-index:23;pointer-events:none;box-sizing:border-box;
  border:1.5px solid rgba(170,128,53,.96);border-radius:3px;
  background:linear-gradient(180deg,rgba(255,251,231,.97),rgba(212,193,143,.96) 50%,rgba(253,247,217,.97));
  box-shadow:0 0 0 1px rgba(255,255,255,.75) inset,0 2px 7px rgba(33,25,10,.36);
  opacity:1;visibility:visible;
}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier::before,
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier::after{
  content:"";position:absolute;top:50%;width:11px;height:11px;
  border:1px solid #a78349;background:#fffaf0;transform:translateY(-50%) rotate(45deg);
}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier::before{left:6px}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier::after{right:6px}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier i{
  position:absolute;left:23px;right:23px;top:50%;height:2px;transform:translateY(-50%);
  background:repeating-linear-gradient(90deg,#b98e48 0 10px,transparent 10px 17px);
}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier b{
  position:absolute;left:50%;top:50%;width:13px;height:13px;
  transform:translate(-50%,-50%) rotate(45deg);border:1px solid #ad8647;background:#fff8df;
}
#shooting-event-root:is([data-shooting-stage="shooting_tower_04"],[data-shooting-stage="shooting_tower_06"]) .shooting-ch06-barrier.hit{
  background:#fff6c7;box-shadow:0 0 10px rgba(250,213,120,.8);
}

/* build1435: Tower10's 5-second horizontal-control inversion notice. */
#shooting-event-root[data-shooting-stage="shooting_tower_10"] #shooting-tower10-reverse-banner{
  position:absolute;left:50%;top:clamp(108px,22%,185px);transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-width:210px;max-width:calc(100% - 24px);box-sizing:border-box;
  padding:10px 24px 8px;z-index:55;pointer-events:none;
  background:linear-gradient(90deg,rgba(21,13,40,.18),rgba(28,16,51,.87) 16%,rgba(28,16,51,.87) 84%,rgba(21,13,40,.18));
  border-top:1px solid rgba(255,221,174,.8);border-bottom:1px solid rgba(255,221,174,.8);
  animation:tower10ReverseNotice .4s ease-out both;
}
#shooting-event-root #shooting-tower10-reverse-banner strong{
  font-family:'Noto Serif JP',serif;font-size:clamp(29px,8vw,43px);line-height:1.17;
  letter-spacing:.17em;color:#fff5e1;font-weight:700;white-space:nowrap;
  text-shadow:0 2px 3px rgba(0,0,0,.9),0 0 12px rgba(241,171,99,.8);
}
#shooting-event-root #shooting-tower10-reverse-banner small{
  margin-top:3px;font:600 12px/1.3 'Noto Serif JP',serif;letter-spacing:.16em;color:#ffe9b4;
}
@keyframes tower10ReverseNotice{
  from{opacity:0;transform:translateX(-50%) scale(1.2)}
  to{opacity:1;transform:translateX(-50%) scale(1)}
}


/* ============================================================
   build1436: Battle HUD re-layout
   - 交代ボタンを盤面から外し、下部バーへMENUとまとめる
     （自機がボタン裏に入り操作不能になる不具合の対策）
   - 操作キャラHPはULTゲージの対向側に縦表示（表示専用）
   - UI切替は一時停止メニューの「UI反転」へ移設
     TYPE 1 = 標準（ULT左 / HP右 / 交代左 / MENU右）
     TYPE 2 = 反転（ULT右 / HP左 / 交代右 / MENU左）
   ============================================================ */

/* ---------- 下部バー ---------- */
#shooting-event-root .shooting-footer.shooting-footer-v1436{
  flex-direction:row !important;
  justify-content:space-between !important;
  align-items:center !important;
  gap:10px !important;
  overflow:visible !important;
}
#shooting-event-root.ui-type-2 .shooting-footer.shooting-footer-v1436{
  flex-direction:row-reverse !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-player-hud{
  display:none !important;
}

/* ---------- 交代ボタン（待機2体） ---------- */
#shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  position:relative !important;
  inset:auto !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  bottom:auto !important;
  transform:none !important;
  z-index:1 !important;
  flex:0 1 auto;
  min-width:0;
  height:100%;
  display:flex;
  flex-direction:row !important;
  align-items:center !important;
  justify-content:flex-start;
  gap:20px !important;
  padding:0 8px;
}
#shooting-event-root.ui-type-2 .shooting-footer-v1436 .shooting-switch-rail{
  flex-direction:row-reverse !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn{
  flex:0 0 50px;
  width:50px !important;
  height:50px !important;
  min-height:50px !important;
  touch-action:none;
  transition:transform .08s ease-out;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn:not(.dead){
  background:rgba(255,253,248,.96) !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn:not(.dead) img{
  opacity:1;
}
/* 旧 @media(max-width:480px) の画像58px固定が50pxの丸からはみ出すため、丸の内側に収める */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  max-width:none !important;
  margin:0 !important;
  border-radius:50% !important;
  object-fit:cover !important;
  object-position:center;
}
/* ULTリング・札・バッジは丸の外側に出すため、ボタン自体はoverflow:visibleのまま */
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn.cooling::after{
  background:rgba(235,230,219,.52) !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn.is-pressing:not(:disabled){
  transform:scale(.93);
}
/* CHANGE / 残り秒数 / DOWN はボタン下端に重ねた小さな札で表示（バー内に収める） */
#shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  z-index:5;
  left:50% !important;
  right:auto !important;
  bottom:-8px !important;
  transform:translateX(-50%) !important;
  width:auto !important;
  min-width:42px;
  padding:0 5px;
  border:1px solid rgba(176,145,86,.45);
  border-radius:99px;
  background:rgba(255,253,247,.96);
  font-size:8px !important;
  line-height:12px !important;
  text-align:center;
  text-shadow:none;
  pointer-events:none;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-hp{
  bottom:7px;
}

/* ---------- 縦HPゲージ（ULTの対向側） ---------- */
#shooting-event-root .shooting-hp-side{
  position:absolute;
  z-index:24;
  top:52%;
  right:14px;
  left:auto;
  transform:translateY(-50%);
  width:34px;
  height:318px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  pointer-events:none;
  opacity:.96;
}
#shooting-event-root.ui-type-2 .shooting-hp-side{
  right:auto;
  left:14px;
}
#shooting-event-root .shooting-hp-side-copy{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
}
#shooting-event-root .shooting-hp-side-copy img{
  width:16px;
  height:16px;
  object-fit:contain;
  filter:drop-shadow(0 1px 1px rgba(255,255,255,.9));
}
#shooting-event-root .shooting-hp-side-copy span{
  font-family:"Cinzel",serif;
  font-size:9px;
  font-weight:600;
  line-height:1;
  letter-spacing:.06em;
  color:#806437;
  white-space:nowrap;
  text-shadow:0 1px 0 rgba(255,255,255,.98),0 0 6px rgba(255,249,231,.9);
}
#shooting-event-root .shooting-hp-side-track{
  position:relative;
  width:12px;
  height:254px;
  flex:0 0 auto;
  overflow:hidden;
  border:1px solid rgba(140,106,48,.85);
  background:rgba(255,252,244,.45);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),0 2px 8px rgba(70,50,20,.22);
}
#shooting-event-root .shooting-hp-side-track::before,
#shooting-event-root .shooting-hp-side-track::after{
  content:"";
  position:absolute;
  z-index:2;
  left:50%;
  width:6px;
  height:1px;
  transform:translateX(-50%);
  background:rgba(147,112,51,.42);
}
#shooting-event-root .shooting-hp-side-track::before{top:50%}
#shooting-event-root .shooting-hp-side-track::after{top:70%}
#shooting-event-root #shooting-hp-side-gauge{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:100%;
  transform-origin:center bottom;
  transform:scaleY(var(--hp-fill,1));
  transition:transform .15s linear,background .2s ease;
  background:linear-gradient(180deg,#bfe0a8 0%,#7fb36c 45%,#4f8546 100%);
  opacity:.95;
}
#shooting-event-root .shooting-hp-side-value{
  font-family:"Cinzel",serif;
  font-size:11px;
  font-weight:700;
  line-height:1;
  letter-spacing:.02em;
  color:#4a3920;
  white-space:nowrap;
  text-shadow:0 1px 0 rgba(255,255,255,.98),0 0 6px rgba(255,249,231,.95);
}
/* 30%以下：琥珀 / 15%以下：赤＋点滅 */
#shooting-event-root .shooting-hp-side.is-low #shooting-hp-side-gauge{
  background:linear-gradient(180deg,#f6dc93 0%,#e2ad4f 50%,#b9792b 100%);
  opacity:.95;
}
#shooting-event-root .shooting-hp-side.is-critical #shooting-hp-side-gauge{
  background:linear-gradient(180deg,#f6a593 0%,#d9604c 50%,#a8392c 100%);
  opacity:1;
}
#shooting-event-root .shooting-hp-side.is-critical .shooting-hp-side-track{
  animation:shootingHpCriticalPulse .7s ease-in-out infinite alternate;
}
#shooting-event-root .shooting-hp-side.is-critical .shooting-hp-side-value{
  color:#b33a2b;
}
@keyframes shootingHpCriticalPulse{
  from{border-color:rgba(190,80,60,.55);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 0 4px rgba(214,86,62,.2)}
  to{border-color:rgba(222,84,60,.98);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7),0 0 12px rgba(214,86,62,.6)}
}
@media (max-height:720px){
  #shooting-event-root .shooting-hp-side{height:272px}
  #shooting-event-root .shooting-hp-side-track{height:210px}
}

/* パーティ選択 / RESULT / 非戦闘時は縦HPも隠す */
#shooting-event-root:not(.battle-hud-visible) .shooting-hp-side,
#shooting-event-root:has(.shooting-character-select.show) .shooting-hp-side,
#shooting-event-root:has(.shooting-result.show) .shooting-hp-side{
  display:none !important;
}

/* ---------- 一時停止メニュー：UI反転 ---------- */
#shooting-event-root .shooting-pause-action.shooting-pause-ui-flip.is-on strong{
  color:#a5803b;
}

/* ---------- build1436b: 待機キャラボタンを大きく（操作性優先） ----------
   ボタン 50px → 62px（旧・盤面上の丸と同じ大きさ）。
   下部バーを 72px → 86px に広げ、盤面の下端もそれに合わせる（盤面は14px短くなる）。 */
#shooting-event-root .shooting-footer.shooting-footer-v1436{
  height:calc(86px + env(safe-area-inset-bottom, 0px)) !important;
}
#shooting-event-root:has(.shooting-footer-v1436) .shooting-arena{
  bottom:calc(86px + env(safe-area-inset-bottom, 0px)) !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  gap:24px !important;
  padding:0 10px !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-btn{
  flex:0 0 62px !important;
  width:62px !important;
  height:62px !important;
  min-height:62px !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  bottom:-9px !important;
  min-width:48px;
  font-size:9px !important;
  line-height:13px !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-hp{
  left:10px;
  right:10px;
  bottom:9px;
  height:5px;
}


/* ============================================================
   build1436c: 下部バー並び替え / HP拡大 / 文字と自機の視認性
   ============================================================ */

/* ---------- 下部バー：[MENU][UI切替] キャラ1 キャラ2（反転時は鏡写し） ---------- */
#shooting-event-root .shooting-footer-v1436 .shooting-battle-controls{
  order:0 !important;
  flex:0 0 auto !important;
  flex-direction:row !important;
  gap:6px !important;
}
#shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  order:1 !important;
}
#shooting-event-root.ui-type-2 .shooting-footer-v1436 .shooting-battle-controls{
  flex-direction:row-reverse !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn,
html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  flex:0 0 70px !important;
  width:70px !important;
  min-width:70px !important;
  max-width:70px !important;
  height:44px !important;
  padding:0 4px !important;
  font-size:12px !important;
  font-weight:600 !important;
  letter-spacing:.06em !important;
  text-indent:0 !important;
  color:#5a4526 !important;
  border-color:rgba(140,108,55,.62) !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn .sasaphia-menu-glyph{
  font-size:18px;
  line-height:1;
}
@media (max-width:360px){
  html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn,
  html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn{
    flex-basis:60px !important;
    width:60px !important;
    min-width:60px !important;
    max-width:60px !important;
    font-size:11px !important;
  }
  #shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
    gap:20px !important;
    padding:0 6px 0 10px !important;
  }
}

/* ---------- 縦HPゲージ：大きく・やや透過 ---------- */
#shooting-event-root .shooting-hp-side{
  width:40px;
  height:340px;
  gap:7px;
}
#shooting-event-root .shooting-hp-side-track{
  width:18px;
  height:270px;
  background:rgba(255,252,244,.30);
}
#shooting-event-root #shooting-hp-side-gauge{
  opacity:.80;
}
#shooting-event-root .shooting-hp-side.is-low #shooting-hp-side-gauge{opacity:.85}
#shooting-event-root .shooting-hp-side.is-critical #shooting-hp-side-gauge{opacity:.92}
#shooting-event-root .shooting-hp-side-copy img{width:20px;height:20px}
#shooting-event-root .shooting-hp-side-copy span{
  font-size:11px;
  font-weight:700;
  color:#5f4520;
}
#shooting-event-root .shooting-hp-side-value{
  font-size:13px;
}
@media (max-height:720px){
  #shooting-event-root .shooting-hp-side{height:290px}
  #shooting-event-root .shooting-hp-side-track{height:220px}
}

/* ---------- 文字の視認性 ---------- */
/* 共通：明るい背景に負けないよう、白いふち取りで文字を浮かせる */
html body #shooting-event-root .shooting-hud,
html body #shooting-event-root .shooting-mission-hud,
html body #shooting-event-root .shooting-boss-hud,
html body #shooting-event-root .shooting-combo,
html body #shooting-event-root .shooting-battle-timer{
  --hud-halo:0 0 2px #fff,0 0 4px rgba(255,255,255,.95),0 1px 0 #fff;
}

/* ステージ名・スコア */
html body #shooting-event-root .shooting-hud-title > span{
  font-size:10px !important;
  color:#7b6236 !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-hud-title > strong{
  color:#3d3021 !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-hud-title small,
html body #shooting-event-root .zpf-stage-subtitle{
  color:#5a4628 !important;
  opacity:1 !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-score{
  font-size:13px !important;
  font-weight:600 !important;
  color:#4f3d22 !important;
  text-shadow:var(--hud-halo) !important;
}

/* ミッション（撃破ノルマなど） */
html body #shooting-event-root .shooting-mission-hud span{
  font-size:9px !important;
  font-weight:600 !important;
  letter-spacing:.08em !important;
  color:#7a5c2c !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-mission-hud strong{
  font-size:13px !important;
  font-weight:700 !important;
  color:#33281a !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-mission-hud b{
  display:inline-block !important;
  padding:3px 9px !important;
  border-radius:99px !important;
  font-size:12px !important;
  font-weight:700 !important;
  letter-spacing:.06em !important;
  line-height:1.2 !important;
  color:#fffaf0 !important;
  background:rgba(120,84,34,.90) !important;
  box-shadow:0 1px 4px rgba(60,40,15,.25) !important;
  text-shadow:none !important;
  white-space:nowrap !important;
}
html body #shooting-event-root .shooting-mission-hud b:empty{
  display:none !important;
}
@media(max-width:420px){
  html body #shooting-event-root .shooting-mission-hud span{font-size:8px !important}
  html body #shooting-event-root .shooting-mission-hud strong{font-size:12px !important}
  html body #shooting-event-root .shooting-mission-hud b{font-size:11px !important;padding:3px 8px !important}
}

/* ボス名・フェーズ */
html body #shooting-event-root .shooting-boss-name{
  font-size:12px !important;
  font-weight:700 !important;
  color:#3d2f1d !important;
  opacity:1 !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-boss-phase{
  font-size:11px !important;
  font-weight:700 !important;
  color:#5a4424 !important;
  opacity:1 !important;
  text-shadow:var(--hud-halo) !important;
}

/* COMBO・タイマー */
html body #shooting-event-root .shooting-combo strong{
  color:#4d3a1f !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-combo span{
  font-size:11px !important;
  font-weight:700 !important;
  color:#6e5228 !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-battle-timer small,
html body #shooting-event-root .shooting-battle-timer strong{
  color:#4d3a1f !important;
  text-shadow:var(--hud-halo) !important;
}
html body #shooting-event-root .shooting-battle-timer small{font-size:9px !important;font-weight:700 !important}

/* ULTゲージの文字 */
html body #shooting-event-root .shooting-ult-side-copy span{
  font-size:11px !important;
  font-weight:700 !important;
  color:#5f4520 !important;
  text-shadow:0 0 2px #fff,0 0 4px rgba(255,255,255,.95) !important;
}

/* 交代ボタンの札 */
#shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  font-size:10px !important;
  font-weight:700 !important;
  color:#5a4526 !important;
}

/* ---------- 自機の視認性 ----------
   明るい背景でも埋もれないよう、濃い縁取りと足元の影を付ける。
   被弾無敵中の金色の光（.shooting-invincible-active）は従来どおり優先。 */
#shooting-event-root .shooting-player:not(.shooting-invincible-active) img{
  filter:
    drop-shadow(0 0 1px rgba(38,26,10,.95))
    drop-shadow(0 0 3px rgba(38,26,10,.55));
}
#shooting-event-root .shooting-player::after{
  content:"";
  position:absolute;
  z-index:1;
  left:50%;
  bottom:4px;
  width:56px;
  height:14px;
  transform:translateX(-50%);
  border-radius:50%;
  background:radial-gradient(closest-side,rgba(40,28,12,.38),rgba(40,28,12,0));
  pointer-events:none;
}
/* 被弾判定コアも少し大きく・白ふちで見やすく */
#shooting-event-root .shooting-player-core{
  box-shadow:0 0 0 2px #fff,0 0 6px rgba(200,20,40,.85) !important;
}

/* ミッション帯の白いぼかしがステージ副題・ボス名に被って薄く見えていたため、
   ぼかしの上下はみ出しを抑え、ボス名の帯をミッション帯より前面に出す */
html body #shooting-event-root .shooting-mission-hud::before{
  top:4px !important;
  bottom:4px !important;
}
html body #shooting-event-root .shooting-boss-hud{
  z-index:27 !important;
}

/* ============================================================
   build1436d: 敵弾を自機より前面に
   DOM描画の敵弾（z:11）が自機（z:12）の下に潜り、避けにくかった。
   新しい並び: 味方弾(9) < 自機(12) < 回収アイテム(13) < 敵弾(14) < Canvas敵弾(17) < 危険弾(18) < BOSS(20)
   ============================================================ */
#shooting-event-root .shooting-enemy-bullet,
#shooting-event-root .shooting-mini-enemy-bullet{
  z-index:14 !important;
}
#shooting-event-root .shooting-enemy-bullet.shooting-danger-bullet,
#shooting-event-root .shooting-mini-enemy-bullet.shooting-danger-bullet{
  z-index:18 !important;
}


/* ============================================================
   build1438: Battle HUD skin — モック（金縁クリーム調）へ寄せる第1弾
   対象: 上部（ステージ名プレート / SCORE札 / ミッション帯）
         下部バー（金縁ポートレート / 属性アイコン / CHANGE札 / UI切替・MENU）
   画像を使わずCSSで近似。後で枠画像に差し替えやすいよう、
   色と線は --zb-* 変数に集約している。
   ============================================================ */
#shooting-event-root{
  --zb-gold:#c4a062;
  --zb-gold-deep:#9a7436;
  --zb-gold-light:#ead7a8;
  --zb-cream:#fffcf4;
  --zb-cream-2:#f5ecd9;
  --zb-ink:#2e2316;
  --zb-ink-2:#5b4527;
  --zb-plate-bg:linear-gradient(180deg,rgba(255,254,250,.97) 0%,rgba(250,244,232,.95) 60%,rgba(243,233,214,.95) 100%);
  --zb-plate-frame:
    inset 0 0 0 1px rgba(255,255,255,.9),
    inset 0 0 0 3px rgba(255,252,244,.9),
    inset 0 0 0 4px rgba(196,160,98,.72),
    0 0 0 1px rgba(154,116,54,.78),
    0 3px 10px rgba(78,56,22,.20);
  --zb-compass:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cg fill='none' stroke='%23b8955a' stroke-width='1.3'%3E%3Ccircle cx='50' cy='50' r='33'/%3E%3Ccircle cx='50' cy='50' r='25' stroke-width='.7'/%3E%3C/g%3E%3Cg fill='%23c4a062'%3E%3Cpath d='M50 3 L55 45 L97 50 L55 55 L50 97 L45 55 L3 50 L45 45Z'/%3E%3Cpath d='M50 20 L53 47 L80 50 L53 53 L50 80 L47 53 L20 50 L47 47Z' transform='rotate(45 50 50)' opacity='.65'/%3E%3C/g%3E%3C/svg%3E");
  --zb-star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cg fill='%23c4a062'%3E%3Cpath d='M50 4 L57 43 L96 50 L57 57 L50 96 L43 57 L4 50 L43 43Z'/%3E%3Cpath d='M50 26 L53 47 L74 50 L53 53 L50 74 L47 53 L26 50 L47 47Z' transform='rotate(45 50 50)' opacity='.7'/%3E%3C/g%3E%3C/svg%3E");
}

/* ---------- 上部：ヘッダー全体 ---------- */
html body #shooting-event-root .shooting-hud{
  display:flex !important;
  align-items:stretch !important;
  gap:8px !important;
  height:74px !important;
  padding:6px 8px 4px !important;
  background:linear-gradient(180deg,rgba(255,253,247,.55),rgba(255,253,247,0)) !important;
  border-bottom:0 !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
html body #shooting-event-root .shooting-hud::after{
  content:none !important;
  display:none !important;
}

/* ステージ名プレート（左） */
html body #shooting-event-root .shooting-hud-title{
  position:relative !important;
  flex:1 1 auto !important;
  min-width:0 !important;
  margin:0 !important;
  padding:5px 14px 5px 62px !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:center !important;
  text-align:left !important;
  /* 右端を尖らせた枠：外側=金の地、::before=内側のクリーム面（同じ形で1px内側） */
  isolation:isolate !important;
  background:linear-gradient(180deg,#e2c88e,#a98142 60%,#8e6a31) !important;
  box-shadow:none !important;
  border-radius:0 !important;
  clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%);
}
html body #shooting-event-root .shooting-hud-title::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:1px;
  background:var(--zb-compass) 7px 50%/48px 48px no-repeat,var(--zb-plate-bg);
  box-shadow:inset 0 0 0 2px rgba(255,252,244,.95),inset 0 0 0 3px rgba(196,160,98,.65);
  clip-path:polygon(0 0,calc(100% - 15px) 0,100% 50%,calc(100% - 15px) 100%,0 100%);
}
html body #shooting-event-root .shooting-hud-title > span,
html body #shooting-event-root #shooting-hud-kicker{
  display:block !important;
  width:auto !important;
  margin:0 !important;
  font:600 10px/1.15 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.24em !important;
  color:#7a5f33 !important;
  text-align:left !important;
  text-shadow:none !important;
}
html body #shooting-event-root .shooting-hud-title > strong,
html body #shooting-event-root #shooting-hud-stage-title{
  display:flex !important;
  justify-content:flex-start !important;
  width:auto !important;
  margin:1px 0 0 !important;
  font:600 21px/1.12 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.08em !important;
  color:var(--zb-ink) !important;
  text-align:left !important;
  text-shadow:0 1px 0 rgba(255,255,255,.9) !important;
  white-space:nowrap !important;
}
html body #shooting-event-root .shooting-hud-title small,
html body #shooting-event-root #zpf-stage-subtitle{
  display:block !important;
  width:auto !important;
  margin:1px 0 0 !important;
  font:500 12px/1.2 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.14em !important;
  color:var(--zb-ink-2) !important;
  text-align:left !important;
  text-shadow:none !important;
  opacity:1 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  max-width:100% !important;
}
html body #shooting-event-root .shooting-hud-title small:empty,
html body #shooting-event-root #zpf-stage-subtitle:empty{
  display:none !important;
}

/* SCORE札（右） */
html body #shooting-event-root .shooting-score{
  position:relative !important;
  flex:0 0 40% !important;
  max-width:168px !important;
  margin:0 !important;
  padding:4px 12px 4px 40px !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-end !important;
  justify-content:center !important;
  background:var(--zb-star) 9px 50%/24px 24px no-repeat,var(--zb-plate-bg) !important;
  box-shadow:var(--zb-plate-frame) !important;
  border-radius:3px !important;
  color:var(--zb-ink) !important;
  text-align:right !important;
  font-size:0 !important;
  letter-spacing:0 !important;
  text-shadow:none !important;
  white-space:nowrap !important;
}
html body #shooting-event-root .shooting-score .shooting-score-label{
  display:block;
  font:600 10px/1.1 "Cinzel",serif;
  letter-spacing:.22em;
  color:#7a5f33;
}
html body #shooting-event-root .shooting-score .shooting-score-value{
  display:block;
  margin-top:1px;
  font:600 25px/1 "Cinzel","Noto Serif JP",serif;
  letter-spacing:.06em;
  color:var(--zb-ink);
  font-variant-numeric:tabular-nums;
}
/* RAIDのBOSS HP表示は桁が多いので小さめ */
html body #shooting-event-root[data-battle-type] .shooting-score .shooting-score-value:not(:only-child){
  white-space:nowrap;
}
@media (max-width:374px){
  html body #shooting-event-root .shooting-hud-title{padding-left:54px !important;background-size:40px 40px,auto !important}
  html body #shooting-event-root .shooting-hud-title > strong,
  html body #shooting-event-root #shooting-hud-stage-title{font-size:18px !important}
  html body #shooting-event-root .shooting-score{padding-left:32px !important;background-size:20px 20px,auto !important}
  html body #shooting-event-root .shooting-score .shooting-score-value{font-size:21px}
}

/* ---------- ミッション帯 ---------- */
html body #shooting-event-root .shooting-mission-hud{
  top:80px !important;
  left:8px !important;
  right:8px !important;
  min-height:32px !important;
  padding:3px 6px 3px 18px !important;
  grid-template-columns:auto minmax(0,1fr) auto !important;
  gap:10px !important;
  isolation:isolate !important;
  background:linear-gradient(180deg,#dcc184,#a98142 60%,#8e6a31) !important;
  box-shadow:none !important;
  border-radius:0 !important;
  clip-path:polygon(12px 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,12px 100%,0 50%);
}
html body #shooting-event-root .shooting-mission-hud::before{
  content:"" !important;
  display:block !important;
  position:absolute !important;
  z-index:-1 !important;
  inset:1px !important;
  left:1px !important;
  right:1px !important;
  top:1px !important;
  bottom:1px !important;
  filter:none !important;
  -webkit-filter:none !important;
  opacity:1 !important;
  background:linear-gradient(180deg,rgba(255,254,250,.97),rgba(247,240,226,.96)) !important;
  box-shadow:inset 0 0 0 2px rgba(255,252,244,.95),inset 0 0 0 3px rgba(196,160,98,.5) !important;
  clip-path:polygon(11px 0,calc(100% - 11px) 0,100% 50%,calc(100% - 11px) 100%,11px 100%,0 50%) !important;
}
html body #shooting-event-root .shooting-mission-hud span{
  position:relative !important;
  padding-right:10px !important;
  font:600 10px/1.1 "Cinzel",serif !important;
  letter-spacing:.16em !important;
  color:#7a5f33 !important;
  text-shadow:none !important;
  white-space:nowrap !important;
}
html body #shooting-event-root .shooting-mission-hud span::after{
  content:"";
  position:absolute;
  right:0;
  top:-4px;
  bottom:-4px;
  width:1px;
  background:linear-gradient(180deg,transparent,rgba(154,116,54,.65),transparent);
}
html body #shooting-event-root .shooting-mission-hud strong{
  font:700 13px/1.25 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.04em !important;
  color:var(--zb-ink) !important;
  text-shadow:none !important;
}
/* ITEM 0/10 などの進捗札：金縁の濃茶プレート（両端を尖らせる） */
html body #shooting-event-root .shooting-mission-hud b{
  position:relative !important;
  isolation:isolate !important;
  display:inline-block !important;
  padding:4px 16px !important;
  border-radius:0 !important;
  font:600 13px/1.2 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.08em !important;
  color:#fff6e0 !important;
  background:linear-gradient(180deg,#f0d9a2,#b08742 55%,#8a6328) !important;
  box-shadow:none !important;
  text-shadow:0 1px 1px rgba(0,0,0,.35) !important;
  clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 50%,calc(100% - 9px) 100%,9px 100%,0 50%);
}
html body #shooting-event-root .shooting-mission-hud b::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:1.5px;
  background:linear-gradient(180deg,#6a4a25,#4a3216 60%,#3a2610);
  clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,8px 100%,0 50%);
}
html body #shooting-event-root .shooting-mission-hud b:empty{display:none !important}
@media(max-width:420px){
  html body #shooting-event-root .shooting-mission-hud span{font-size:9px !important;letter-spacing:.12em !important}
  html body #shooting-event-root .shooting-mission-hud strong{font-size:12px !important}
  html body #shooting-event-root .shooting-mission-hud b{font-size:12px !important;padding:4px 14px !important}
}
/* ミッション帯を下げた分、ボス名帯もその下へ */
html body #shooting-event-root:not([data-battle-type="normal"]) .shooting-boss-hud{
  top:120px !important;
}

/* ---------- 下部バー ---------- */
html body #shooting-event-root .shooting-footer.shooting-footer-v1436{
  height:calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  padding-top:10px !important;
  background:
    linear-gradient(180deg,rgba(255,253,247,.96) 0%,rgba(250,243,229,.97) 55%,rgba(242,231,208,.98) 100%) !important;
  border-top:0 !important;
  box-shadow:
    inset 0 2px 0 rgba(255,255,255,.9),
    0 -1px 0 rgba(154,116,54,.75),
    0 -3px 0 rgba(255,250,238,.95),
    0 -4px 0 rgba(196,160,98,.65),
    0 -8px 18px rgba(78,56,22,.10) !important;
}
html body #shooting-event-root .shooting-footer.shooting-footer-v1436::before{
  content:"✦";
  position:absolute;
  left:50%;
  top:-11px;
  transform:translateX(-50%);
  z-index:2;
  padding:0 10px;
  font-size:13px;
  line-height:14px;
  color:var(--zb-gold-deep);
  background:linear-gradient(180deg,transparent 0 45%,rgba(255,253,247,.96) 45%);
  pointer-events:none;
}
html body #shooting-event-root:has(.shooting-footer-v1436) .shooting-arena{
  bottom:calc(96px + env(safe-area-inset-bottom, 0px)) !important;
}

/* UI切替・MENU：二重金縁のクリームボタン */
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn,
html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn{
  flex:0 0 76px !important;
  width:76px !important;
  min-width:76px !important;
  max-width:76px !important;
  height:48px !important;
  border:0 !important;
  border-radius:3px !important;
  background:linear-gradient(180deg,#fffef9 0%,#f7efdd 60%,#efe2c6 100%) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.95),
    inset 0 0 0 3px rgba(255,251,240,.95),
    inset 0 0 0 4px rgba(196,160,98,.8),
    0 0 0 1px rgba(154,116,54,.85),
    0 3px 6px rgba(78,56,22,.22) !important;
  color:var(--zb-ink) !important;
  font:600 15px/1 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.04em !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn .sasaphia-menu-glyph{
  font-size:22px !important;
  color:var(--zb-ink-2);
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn:active,
html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn:active{
  transform:translateY(1px);
  filter:brightness(.97);
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-controls{
  gap:8px !important;
}

/* 交代ボタン：太い金縁の丸ポートレート */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  gap:26px !important;
  padding:0 12px !important;
  margin-top:-16px;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn{
  flex:0 0 62px !important;
  width:62px !important;
  height:62px !important;
  min-height:62px !important;
  border:0 !important;
  background:#f6eedd !important;
  box-shadow:
    0 0 0 2px #fff7e4,
    0 0 0 4px var(--zb-gold),
    0 0 0 5px var(--zb-gold-deep),
    0 4px 10px rgba(60,40,15,.28) !important;
}
/* ULTリングは金縁のさらに外側に細く出す */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-ult-ring{
  inset:-10px !important;
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px)) !important;
  mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px)) !important;
}
/* 属性アイコン（左下） */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn img.shooting-switch-element{
  position:absolute !important;
  z-index:6 !important;
  left:-6px !important;
  bottom:-2px !important;
  width:22px !important;
  height:22px !important;
  margin:0 !important;
  border-radius:50% !important;
  object-fit:cover !important;
  opacity:1 !important;
  inset:auto auto 6px -9px !important;
  right:auto !important;
  top:auto !important;
  box-shadow:0 0 0 2px #fff7e4,0 0 0 3px var(--zb-gold-deep),0 1px 3px rgba(0,0,0,.3);
  background:#fff;
  pointer-events:none;
}
/* 丸の中のHPバー */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-hp{
  left:16px !important;
  right:10px !important;
  bottom:11px !important;
  height:5px !important;
  border-radius:99px !important;
  background:rgba(40,30,15,.45) !important;
  box-shadow:0 0 0 1px rgba(255,248,230,.85);
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-hp i{
  background:linear-gradient(90deg,#5f9a52,#9fd07f) !important;
}
/* CHANGE札：両端を尖らせたクリームの金縁プレート */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  bottom:-12px !important;
  min-width:74px !important;
  padding:2px 12px !important;
  border:0 !important;
  border-radius:0 !important;
  background:linear-gradient(180deg,#e6cf96,#a77f3e) !important;
  color:var(--zb-ink) !important;
  font:700 11px/14px "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.12em !important;
  isolation:isolate;
  clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,8px 100%,0 50%);
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-status::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:1.5px;
  background:linear-gradient(180deg,#fffdf6,#f2e7cf);
  clip-path:polygon(7px 0,calc(100% - 7px) 0,100% 50%,calc(100% - 7px) 100%,7px 100%,0 50%);
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn.dead .shooting-switch-status{
  color:#8a3a2c !important;
}

/* ============================================================
   build1439: HUDをコンパクト化して戦闘フィールドを広げる
   - ヘッダー 74px → 56px（盤面の上端も 72px → 56px へ上げる）
   - ミッション帯 32px → 26px、ボス名帯もその分上へ
   - 下部バー 96px → 84px（ポートレート 62px → 56px）
   → 盤面の高さは +28px、上に重なる帯の占有も約20px減る
   ============================================================ */
html body #shooting-event-root .shooting-hud{
  height:56px !important;
  padding:4px 6px 2px !important;
  gap:6px !important;
}
html body #shooting-event-root .shooting-arena{
  top:56px !important;
}
html body #shooting-event-root .shooting-hud-title{
  padding:2px 18px 2px 46px !important;
}
html body #shooting-event-root .shooting-hud-title::before{
  background:var(--zb-compass) 6px 50%/36px 36px no-repeat,var(--zb-plate-bg) !important;
}
html body #shooting-event-root .shooting-hud-title > span,
html body #shooting-event-root #shooting-hud-kicker{
  font-size:9px !important;
  letter-spacing:.2em !important;
  line-height:1.05 !important;
}
html body #shooting-event-root .shooting-hud-title > strong,
html body #shooting-event-root #shooting-hud-stage-title{
  margin-top:0 !important;
  font-size:17px !important;
  line-height:1.1 !important;
}
html body #shooting-event-root .shooting-hud-title small,
html body #shooting-event-root #zpf-stage-subtitle{
  margin-top:0 !important;
  font-size:10px !important;
  line-height:1.1 !important;
}
html body #shooting-event-root .shooting-score{
  flex-basis:36% !important;
  max-width:150px !important;
  padding:2px 10px 2px 30px !important;
  background:var(--zb-star) 7px 50%/18px 18px no-repeat,var(--zb-plate-bg) !important;
}
html body #shooting-event-root .shooting-score .shooting-score-label{font-size:9px;letter-spacing:.2em}
html body #shooting-event-root .shooting-score .shooting-score-value{font-size:20px;margin-top:0}

html body #shooting-event-root .shooting-mission-hud{
  top:59px !important;
  left:6px !important;
  right:6px !important;
  min-height:26px !important;
  padding:2px 5px 2px 16px !important;
  gap:8px !important;
}
html body #shooting-event-root .shooting-mission-hud span{font-size:9px !important;letter-spacing:.12em !important;padding-right:8px !important}
html body #shooting-event-root .shooting-mission-hud strong{font-size:12px !important}
html body #shooting-event-root .shooting-mission-hud b{font-size:11px !important;padding:3px 13px !important}
html body #shooting-event-root:not([data-battle-type="normal"]) .shooting-boss-hud{
  top:90px !important;
}
/* 盤面内のCOMBOは帯の直下へ（盤面の上端が上がった分を相殺） */
html body #shooting-event-root .shooting-combo{
  top:36px !important;
}

/* 下部バー */
html body #shooting-event-root .shooting-footer.shooting-footer-v1436{
  height:calc(84px + env(safe-area-inset-bottom, 0px)) !important;
  padding-top:8px !important;
}
html body #shooting-event-root:has(.shooting-footer-v1436) .shooting-arena{
  bottom:calc(84px + env(safe-area-inset-bottom, 0px)) !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  gap:24px !important;
  margin-top:-12px;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn{
  flex:0 0 56px !important;
  width:56px !important;
  height:56px !important;
  min-height:56px !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-hp{
  left:14px !important;
  right:9px !important;
  bottom:10px !important;
  height:4px !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn img.shooting-switch-element{
  width:20px !important;
  height:20px !important;
  inset:auto auto 5px -8px !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  bottom:-11px !important;
  min-width:68px !important;
  font-size:10px !important;
  line-height:13px !important;
}
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn,
html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn{
  flex-basis:70px !important;
  width:70px !important;
  min-width:70px !important;
  max-width:70px !important;
  height:44px !important;
  font-size:14px !important;
}


/* ============================================================
   build1440: RESULT画面 — モック（金縁クリーム・月桂冠RANK）へ寄せる
   DOM構造は従来のまま（shooting_ui.js）。CSSのみで装飾。
   色は戦闘HUDと共通の --zb-* を使用。
   ============================================================ */
#shooting-event-root{
  --zr-laurel:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='100' cy='100' r='62' fill='none' stroke='%23c9a660' stroke-width='.8' opacity='.7'/%3E%3Ccircle cx='100' cy='100' r='58' fill='none' stroke='%23c9a660' stroke-width='.4' opacity='.6'/%3E%3Cpath d='M73.3 173.3 A78 78 0 0 1 49.9 40.2' fill='none' stroke='%23b48a45' stroke-width='1.4'/%3E%3Cpath d='M126.7 173.3 A78 78 0 0 0 150.1 40.2' fill='none' stroke='%23b48a45' stroke-width='1.4'/%3E%3Cg fill='%23c49a52' opacity='.95'%3E%3Cellipse cx='71.9' cy='177.2' rx='7.0' ry='2.8' transform='rotate%28-125.0 71.9 177.2%29'/%3E%3Cellipse cx='74.8' cy='169.3' rx='7.0' ry='2.8' transform='rotate%28-195.0 74.8 169.3%29'/%3E%3Cellipse cx='56.4' cy='169.7' rx='6.8' ry='2.7' transform='rotate%28-113.0 56.4 169.7%29'/%3E%3Cellipse cx='60.9' cy='162.6' rx='6.8' ry='2.7' transform='rotate%28-183.0 60.9 162.6%29'/%3E%3Cellipse cx='42.9' cy='159.1' rx='6.7' ry='2.6' transform='rotate%28-101.0 42.9 159.1%29'/%3E%3Cellipse cx='48.7' cy='153.1' rx='6.7' ry='2.6' transform='rotate%28-171.0 48.7 153.1%29'/%3E%3Cellipse cx='31.9' cy='146.0' rx='6.5' ry='2.6' transform='rotate%28-89.0 31.9 146.0%29'/%3E%3Cellipse cx='38.8' cy='141.3' rx='6.5' ry='2.6' transform='rotate%28-159.0 38.8 141.3%29'/%3E%3Cellipse cx='23.8' cy='130.8' rx='6.3' ry='2.5' transform='rotate%28-77.0 23.8 130.8%29'/%3E%3Cellipse cx='31.6' cy='127.6' rx='6.3' ry='2.5' transform='rotate%28-147.0 31.6 127.6%29'/%3E%3Cellipse cx='19.0' cy='114.3' rx='6.1' ry='2.5' transform='rotate%28-65.0 19.0 114.3%29'/%3E%3Cellipse cx='27.3' cy='112.8' rx='6.1' ry='2.5' transform='rotate%28-135.0 27.3 112.8%29'/%3E%3Cellipse cx='17.9' cy='97.1' rx='6.0' ry='2.4' transform='rotate%28-53.0 17.9 97.1%29'/%3E%3Cellipse cx='26.2' cy='97.4' rx='6.0' ry='2.4' transform='rotate%28-123.0 26.2 97.4%29'/%3E%3Cellipse cx='20.2' cy='80.1' rx='5.8' ry='2.3' transform='rotate%28-41.0 20.2 80.1%29'/%3E%3Cellipse cx='28.4' cy='82.1' rx='5.8' ry='2.3' transform='rotate%28-111.0 28.4 82.1%29'/%3E%3Cellipse cx='26.1' cy='64.0' rx='5.6' ry='2.3' transform='rotate%28-29.0 26.1 64.0%29'/%3E%3Cellipse cx='33.7' cy='67.6' rx='5.6' ry='2.3' transform='rotate%28-99.0 33.7 67.6%29'/%3E%3Cellipse cx='35.2' cy='49.4' rx='5.4' ry='2.2' transform='rotate%28-17.0 35.2 49.4%29'/%3E%3Cellipse cx='41.8' cy='54.6' rx='5.4' ry='2.2' transform='rotate%28-87.0 41.8 54.6%29'/%3E%3Cellipse cx='47.2' cy='37.0' rx='5.2' ry='2.1' transform='rotate%28-5.0 47.2 37.0%29'/%3E%3Cellipse cx='52.6' cy='43.5' rx='5.2' ry='2.1' transform='rotate%28-75.0 52.6 43.5%29'/%3E%3Cellipse cx='128.1' cy='177.2' rx='7.0' ry='2.8' transform='rotate%28125.0 128.1 177.2%29'/%3E%3Cellipse cx='125.2' cy='169.3' rx='7.0' ry='2.8' transform='rotate%28195.0 125.2 169.3%29'/%3E%3Cellipse cx='143.6' cy='169.7' rx='6.8' ry='2.7' transform='rotate%28113.0 143.6 169.7%29'/%3E%3Cellipse cx='139.1' cy='162.6' rx='6.8' ry='2.7' transform='rotate%28183.0 139.1 162.6%29'/%3E%3Cellipse cx='157.1' cy='159.1' rx='6.7' ry='2.6' transform='rotate%28101.0 157.1 159.1%29'/%3E%3Cellipse cx='151.3' cy='153.1' rx='6.7' ry='2.6' transform='rotate%28171.0 151.3 153.1%29'/%3E%3Cellipse cx='168.1' cy='146.0' rx='6.5' ry='2.6' transform='rotate%2889.0 168.1 146.0%29'/%3E%3Cellipse cx='161.2' cy='141.3' rx='6.5' ry='2.6' transform='rotate%28159.0 161.2 141.3%29'/%3E%3Cellipse cx='176.2' cy='130.8' rx='6.3' ry='2.5' transform='rotate%2877.0 176.2 130.8%29'/%3E%3Cellipse cx='168.4' cy='127.6' rx='6.3' ry='2.5' transform='rotate%28147.0 168.4 127.6%29'/%3E%3Cellipse cx='181.0' cy='114.3' rx='6.1' ry='2.5' transform='rotate%2865.0 181.0 114.3%29'/%3E%3Cellipse cx='172.7' cy='112.8' rx='6.1' ry='2.5' transform='rotate%28135.0 172.7 112.8%29'/%3E%3Cellipse cx='182.1' cy='97.1' rx='6.0' ry='2.4' transform='rotate%2853.0 182.1 97.1%29'/%3E%3Cellipse cx='173.8' cy='97.4' rx='6.0' ry='2.4' transform='rotate%28123.0 173.8 97.4%29'/%3E%3Cellipse cx='179.8' cy='80.1' rx='5.8' ry='2.3' transform='rotate%2841.0 179.8 80.1%29'/%3E%3Cellipse cx='171.6' cy='82.1' rx='5.8' ry='2.3' transform='rotate%28111.0 171.6 82.1%29'/%3E%3Cellipse cx='173.9' cy='64.0' rx='5.6' ry='2.3' transform='rotate%2829.0 173.9 64.0%29'/%3E%3Cellipse cx='166.3' cy='67.6' rx='5.6' ry='2.3' transform='rotate%2899.0 166.3 67.6%29'/%3E%3Cellipse cx='164.8' cy='49.4' rx='5.4' ry='2.2' transform='rotate%2817.0 164.8 49.4%29'/%3E%3Cellipse cx='158.2' cy='54.6' rx='5.4' ry='2.2' transform='rotate%2887.0 158.2 54.6%29'/%3E%3Cellipse cx='152.8' cy='37.0' rx='5.2' ry='2.1' transform='rotate%285.0 152.8 37.0%29'/%3E%3Cellipse cx='147.4' cy='43.5' rx='5.2' ry='2.1' transform='rotate%2875.0 147.4 43.5%29'/%3E%3C/g%3E%3Cpath d='M100 2 L103 12 L113 15 L103 18 L100 28 L97 18 L87 15 L97 12Z' fill='%23b48a45'/%3E%3Cpath d='M100 178 L102.5 185 L110 188 L102.5 191 L100 198 L97.5 191 L90 188 L97.5 185Z' fill='%23b48a45'/%3E%3C/svg%3E");
  --zr-panel-bg:linear-gradient(180deg,rgba(255,254,250,.96) 0%,rgba(251,246,236,.95) 100%);
  --zr-panel-frame:
    inset 0 0 0 1px rgba(255,255,255,.95),
    inset 0 0 0 4px rgba(255,252,244,.9),
    inset 0 0 0 5px rgba(196,160,98,.6),
    0 0 0 1px rgba(170,132,70,.75),
    0 4px 14px rgba(90,64,26,.12);
  --zr-rule:linear-gradient(90deg,transparent,rgba(170,132,70,.7) 18%,rgba(170,132,70,.7) 82%,transparent);
}

/* 画面全体：羊皮紙調の地＋上から差す光 */
html body #shooting-event-root #shooting-result.shooting-result{
  background:
    radial-gradient(ellipse 70% 38% at 50% 12%,rgba(255,250,232,.95),rgba(255,250,232,0) 70%),
    linear-gradient(180deg,#fbf6ea 0%,#f6eedc 55%,#efe4cc 100%) !important;
}
html body #shooting-event-root #shooting-result .shooting-result-card{
  box-sizing:border-box !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:stretch !important;
  gap:10px !important;
  width:100% !important;
  max-width:440px !important;
  height:100% !important;
  margin:0 auto !important;
  padding:max(14px,env(safe-area-inset-top,0px)) 14px max(12px,env(safe-area-inset-bottom,0px)) !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

/* ---------- RESULT 見出し ---------- */
html body #shooting-event-root #shooting-result #shooting-result-kicker{
  margin:0 !important;
  font:700 11px/1.2 "Cinzel",serif !important;
  letter-spacing:.24em !important;
  color:#9a3b2c !important;
  text-align:center !important;
}
html body #shooting-event-root #shooting-result #shooting-result-kicker:empty{display:none !important}
html body #shooting-event-root #shooting-result #shooting-result-title{
  position:relative !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:14px !important;
  margin:2px 0 0 !important;
  font:600 34px/1.05 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.28em !important;
  text-indent:.28em !important;
  color:#6e4e22 !important;
  background:linear-gradient(180deg,#8a6430 0%,#5e3f17 60%,#7b5626 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  text-shadow:none !important;
}
html body #shooting-event-root #shooting-result #shooting-result-title::before,
html body #shooting-event-root #shooting-result #shooting-result-title::after{
  content:"✦";
  flex:1 1 0;
  max-width:70px;
  font-size:10px;
  letter-spacing:0;
  text-indent:0;
  -webkit-text-fill-color:#b48a45;
  color:#b48a45;
  background:linear-gradient(90deg,transparent,rgba(180,138,69,.75)) left center/calc(100% - 14px) 1px no-repeat;
  text-align:right;
}
html body #shooting-event-root #shooting-result #shooting-result-title::after{
  background:linear-gradient(270deg,transparent,rgba(180,138,69,.75)) right center/calc(100% - 14px) 1px no-repeat;
  text-align:left;
}

/* ---------- RANK：月桂冠の紋章 ---------- */
html body #shooting-event-root #shooting-result .shooting-result-rank-wrap{
  position:relative !important;
  flex:0 0 auto !important;
  width:132px !important;
  height:132px !important;
  margin:0 auto !important;
  padding:0 !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  background:
    var(--zr-laurel) center/100% 100% no-repeat,
    radial-gradient(circle,rgba(255,252,240,.95) 0 46%,rgba(255,252,240,0) 62%) !important;
  border:0 !important;
  box-shadow:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-rank-wrap small{
  display:block !important;
  margin:0 0 -2px !important;
  font:600 10px/1 "Cinzel",serif !important;
  letter-spacing:.24em !important;
  text-indent:.24em !important;
  color:#7a5f33 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-rank{
  display:block !important;
  margin:0 !important;
  font:600 70px/1 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:0 !important;
  background:linear-gradient(180deg,#f4dc9a 0%,#d6aa4f 38%,#a8772a 70%,#d9b265 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:#c49a52 !important;
  filter:drop-shadow(0 2px 2px rgba(110,74,20,.28));
  text-shadow:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-rank[data-rank="A"]{
  background:linear-gradient(180deg,#e9e4f4 0%,#a99ac9 45%,#6f5f99 75%,#b3a6d4 100%);
  -webkit-background-clip:text;background-clip:text;
}
html body #shooting-event-root #shooting-result .shooting-result-rank[data-rank="B"]{
  background:linear-gradient(180deg,#e1eef6 0%,#8fb3cc 45%,#4f7896 75%,#9cc0d8 100%);
  -webkit-background-clip:text;background-clip:text;
}
html body #shooting-event-root #shooting-result .shooting-result-rank:is([data-rank="C"],[data-rank="D"],[data-rank="E"]){
  background:linear-gradient(180deg,#eee6da 0%,#b7a68c 45%,#7c6a52 75%,#bfae95 100%);
  -webkit-background-clip:text;background-clip:text;
}

/* ---------- パネル共通（SCORE/COMBO・内訳・報酬リスト） ---------- */
html body #shooting-event-root #shooting-result .shooting-result-stats,
html body #shooting-event-root #shooting-result .shooting-result-breakdown{
  position:relative !important;
  margin:0 !important;
  background:var(--zr-panel-bg) !important;
  border:0 !important;
  border-radius:3px !important;
  box-shadow:var(--zr-panel-frame) !important;
}
/* パネル四隅の小さな菱形 */
html body #shooting-event-root #shooting-result .shooting-result-stats::before,
html body #shooting-event-root #shooting-result .shooting-result-breakdown::before{
  content:"";
  position:absolute;
  inset:-3px;
  pointer-events:none;
  background:
    linear-gradient(45deg,transparent 42%,#b48a45 42% 58%,transparent 58%) 0 0/7px 7px no-repeat,
    linear-gradient(45deg,transparent 42%,#b48a45 42% 58%,transparent 58%) 100% 0/7px 7px no-repeat,
    linear-gradient(45deg,transparent 42%,#b48a45 42% 58%,transparent 58%) 0 100%/7px 7px no-repeat,
    linear-gradient(45deg,transparent 42%,#b48a45 42% 58%,transparent 58%) 100% 100%/7px 7px no-repeat;
}

/* SCORE | MAX COMBO */
html body #shooting-event-root #shooting-result .shooting-result-stats{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  padding:12px 6px 10px !important;
  flex:0 0 auto !important;
}
html body #shooting-event-root #shooting-result .shooting-result-stats > div{
  position:relative !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  gap:2px !important;
  padding:0 !important;
  border:0 !important;
  background:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-stats > div + div::before{
  content:"";
  position:absolute;
  left:0;
  top:2px;
  bottom:2px;
  width:1px;
  background:linear-gradient(180deg,transparent,rgba(170,132,70,.7),transparent);
}
html body #shooting-event-root #shooting-result .shooting-result-stats span{
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  font:600 10px/1.2 "Cinzel",serif !important;
  letter-spacing:.2em !important;
  color:#6e5530 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-stats span::before,
html body #shooting-event-root #shooting-result .shooting-result-stats span::after{
  content:"✧";
  font-size:8px;
  color:#b48a45;
  letter-spacing:0;
}
html body #shooting-event-root #shooting-result .shooting-result-stats strong{
  font:600 30px/1.05 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.02em !important;
  color:#2e2316 !important;
  font-variant-numeric:tabular-nums;
  text-shadow:0 1px 0 #fff !important;
}

/* 内訳（総被弾回数 / 生存キャラ / クリアタイム） */
html body #shooting-event-root #shooting-result .shooting-result-breakdown{
  padding:4px 12px !important;
  flex:0 0 auto !important;
}
html body #shooting-event-root #shooting-result .shooting-result-detail-row{
  position:relative !important;
  display:grid !important;
  grid-template-columns:76px minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:6px !important;
  min-height:50px !important;
  padding:6px 0 !important;
  border:0 !important;
  background:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-detail-row + .shooting-result-detail-row{
  border-top:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-detail-row + .shooting-result-detail-row::before{
  content:"✦";
  position:absolute;
  left:-6px;
  right:-6px;
  top:-6px;
  height:12px;
  font-size:8px;
  line-height:12px;
  color:#b48a45;
  text-align:left;
  background:var(--zr-rule) center/100% 1px no-repeat;
}
html body #shooting-event-root #shooting-result .shooting-result-detail-label{
  font:600 13px/1.25 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.06em !important;
  color:#2e2316 !important;
  white-space:nowrap !important;
}
html body #shooting-event-root #shooting-result .shooting-result-member-list{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:6px !important;
  min-width:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-member{
  display:flex !important;
  align-items:center !important;
  gap:4px !important;
  min-width:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-member img{
  width:34px !important;
  height:34px !important;
  flex:0 0 34px !important;
  border-radius:50% !important;
  object-fit:cover !important;
  border:0 !important;
  box-shadow:0 0 0 1.5px #fff8e8,0 0 0 2.5px #c4a062,0 1px 3px rgba(60,40,15,.25) !important;
}
html body #shooting-event-root #shooting-result .shooting-result-member b{
  font:600 13px/1 "Noto Serif JP","Yu Mincho",serif !important;
  color:#3d2f1d !important;
  white-space:nowrap !important;
}
html body #shooting-event-root #shooting-result .shooting-result-member.down img{filter:grayscale(1) brightness(.85)}
html body #shooting-event-root #shooting-result .shooting-result-member.down b{color:#9a3b2c !important}
html body #shooting-event-root #shooting-result .shooting-result-detail-row > strong{
  position:relative !important;
  padding-left:10px !important;
  font:600 22px/1 "Cinzel","Noto Serif JP",serif !important;
  color:#7a5420 !important;
  text-align:right !important;
  white-space:nowrap !important;
}
html body #shooting-event-root #shooting-result .shooting-result-detail-row:not(.shooting-result-time-row):not(.shooting-result-raid-row) > strong::before{
  content:"";
  position:absolute;
  left:0;
  top:-6px;
  bottom:-6px;
  width:1px;
  background:linear-gradient(180deg,transparent,rgba(170,132,70,.6),transparent);
}
html body #shooting-event-root #shooting-result .shooting-result-time-row,
html body #shooting-event-root #shooting-result .shooting-result-raid-row{
  grid-template-columns:1fr auto !important;
  min-height:42px !important;
}

/* ---------- REWARD 報酬 ---------- */
html body #shooting-event-root #shooting-result .shooting-result-rewards{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
  flex:1 1 auto !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  background:none !important;
  border:0 !important;
  box-shadow:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-head{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:10px !important;
  margin:2px 0 0 !important;
  padding:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-head::before,
html body #shooting-event-root #shooting-result .shooting-result-reward-head::after{
  content:"✦";
  flex:1 1 0;
  max-width:90px;
  font-size:9px;
  color:#b48a45;
  text-align:right;
  background:linear-gradient(90deg,transparent,rgba(180,138,69,.7)) left center/calc(100% - 13px) 1px no-repeat;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-head::after{
  text-align:left;
  background:linear-gradient(270deg,transparent,rgba(180,138,69,.7)) right center/calc(100% - 13px) 1px no-repeat;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-head span{
  font:600 13px/1 "Cinzel",serif !important;
  letter-spacing:.24em !important;
  color:#5e4626 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-head strong{
  font:600 15px/1 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.2em !important;
  color:#5e4626 !important;
}
/* 報酬リスト：枠の中で縦スクロール（3行ぶん見せる） */
html body #shooting-event-root #shooting-result .shooting-result-reward-list{
  display:flex !important;
  flex-direction:column !important;
  gap:5px !important;
  flex:1 1 auto !important;
  min-height:96px !important;
  max-height:none !important;
  padding:6px 8px 6px 6px !important;
  overflow-y:auto !important;
  background:var(--zr-panel-bg) !important;
  border:0 !important;
  border-radius:3px !important;
  box-shadow:var(--zr-panel-frame) !important;
  scrollbar-width:thin;
  scrollbar-color:#c4a062 transparent;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-list::-webkit-scrollbar{width:4px}
html body #shooting-event-root #shooting-result .shooting-result-reward-list::-webkit-scrollbar-thumb{background:#c4a062;border-radius:4px}
html body #shooting-event-root #shooting-result .shooting-result-reward-item{
  display:grid !important;
  grid-template-columns:44px minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:8px !important;
  flex:0 0 auto !important;
  min-height:46px !important;
  height:auto !important;
  padding:4px 14px 4px 8px !important;
  background:linear-gradient(180deg,#fffefb,#f8f1e3) !important;
  border:0 !important;
  border-radius:2px !important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 0 0 1px rgba(196,160,98,.45),0 1px 3px rgba(90,64,26,.08) !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-icon{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:40px !important;
  height:40px !important;
  background:none !important;
  border:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-icon img{
  width:36px !important;
  height:36px !important;
  object-fit:contain !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-copy b{
  font:600 14px/1.2 "Noto Serif JP","Yu Mincho",serif !important;
  color:#2e2316 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-copy small{
  display:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-item > strong{
  font:600 17px/1 "Cinzel","Noto Serif JP",serif !important;
  color:#2e2316 !important;
  white-space:nowrap !important;
}
html body #shooting-event-root #shooting-result .shooting-result-first-clear-bar{
  flex:0 0 auto !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-note:empty{display:none !important}

/* ---------- RETRY（金の大ボタン）／ 戻る ---------- */
html body #shooting-event-root #shooting-result .shooting-result-actions{
  display:flex !important;
  flex-direction:column !important;
  gap:8px !important;
  flex:0 0 auto !important;
  margin:2px 0 0 !important;
  padding:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-actions::before,
html body #shooting-event-root #shooting-result .shooting-result-actions::after{
  content:none !important;
  display:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-actions button{
  position:relative !important;
  isolation:isolate !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:16px !important;
  width:100% !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
  cursor:pointer;
  clip-path:polygon(14px 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,14px 100%,0 50%);
}
html body #shooting-event-root #shooting-result .shooting-result-actions button::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:2px;
  clip-path:polygon(13px 0,calc(100% - 13px) 0,100% 50%,calc(100% - 13px) 100%,13px 100%,0 50%);
}
html body #shooting-event-root #shooting-result #shooting-result-retry{
  height:58px !important;
  background:linear-gradient(180deg,#f2dfa8,#b9893f 55%,#93682a) !important;
  font:600 26px/1 "Cinzel","Noto Serif JP",serif !important;
  letter-spacing:.3em !important;
  text-indent:.3em !important;
  color:#3a2810 !important;
  text-shadow:0 1px 0 rgba(255,240,200,.7) !important;
}
html body #shooting-event-root #shooting-result #shooting-result-retry::before{
  background:
    radial-gradient(ellipse 60% 80% at 50% 0%,rgba(255,250,225,.75),rgba(255,250,225,0) 70%),
    linear-gradient(180deg,#f1dca0 0%,#dcb66a 45%,#c99c4c 100%);
  box-shadow:inset 0 0 0 1px rgba(255,246,214,.7);
}
html body #shooting-event-root #shooting-result #shooting-result-retry::after,
html body #shooting-event-root #shooting-result .shooting-result-actions .sub::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle,#8a6428 0 1.5px,transparent 2px) calc(50% - 92px) 50%/8px 8px no-repeat,
    radial-gradient(circle,#8a6428 0 1.5px,transparent 2px) calc(50% + 92px) 50%/8px 8px no-repeat;
}
html body #shooting-event-root #shooting-result .shooting-result-actions .sub{
  height:46px !important;
  background:linear-gradient(180deg,#e2cc97,#ad8444) !important;
  font:600 16px/1 "Noto Serif JP","Yu Mincho",serif !important;
  letter-spacing:.2em !important;
  text-indent:.2em !important;
  color:#3d2f1d !important;
}
html body #shooting-event-root #shooting-result .shooting-result-actions .sub::before{
  background:linear-gradient(180deg,#fffef9,#f5ecd9);
}
html body #shooting-event-root #shooting-result .shooting-result-actions .sub::after{
  background:
    radial-gradient(circle,#b48a45 0 1.2px,transparent 1.7px) calc(50% - 60px) 50%/7px 7px no-repeat,
    radial-gradient(circle,#b48a45 0 1.2px,transparent 1.7px) calc(50% + 60px) 50%/7px 7px no-repeat;
}
html body #shooting-event-root #shooting-result .shooting-result-actions button:active{
  filter:brightness(.96);
  transform:translateY(1px);
}

/* 低い画面：紋章と文字を一段小さく */
@media (max-height:720px){
  html body #shooting-event-root #shooting-result .shooting-result-card{gap:7px !important}
  html body #shooting-event-root #shooting-result #shooting-result-title{font-size:27px !important}
  html body #shooting-event-root #shooting-result .shooting-result-rank-wrap{width:104px !important;height:104px !important}
  html body #shooting-event-root #shooting-result .shooting-result-rank{font-size:54px !important}
  html body #shooting-event-root #shooting-result .shooting-result-stats{padding:8px 6px 7px !important}
  html body #shooting-event-root #shooting-result .shooting-result-stats strong{font-size:24px !important}
  html body #shooting-event-root #shooting-result .shooting-result-detail-row{min-height:42px !important;padding:4px 0 !important}
  html body #shooting-event-root #shooting-result .shooting-result-member img{width:28px !important;height:28px !important;flex-basis:28px !important}
  html body #shooting-event-root #shooting-result .shooting-result-detail-row > strong{font-size:18px !important}
  html body #shooting-event-root #shooting-result .shooting-result-reward-item{min-height:40px !important}
  html body #shooting-event-root #shooting-result .shooting-result-reward-icon img{width:30px !important;height:30px !important}
  html body #shooting-event-root #shooting-result #shooting-result-retry{height:48px !important;font-size:22px !important}
  html body #shooting-event-root #shooting-result .shooting-result-actions .sub{height:40px !important}
}

/* 非表示指定の行（RAID以外のRAID DAMAGE行など）は表示しない */
html body #shooting-event-root #shooting-result .shooting-result-detail-row[style*="none"]{display:none !important}
/* 報酬行は内容の高さに固定（旧CSSの均等割り・min-heightを打ち消す） */
html body #shooting-event-root #shooting-result .shooting-result-reward-list{
  justify-content:flex-start !important;
  align-items:stretch !important;
  grid-template-columns:none !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-item{
  max-height:56px !important;
  margin:0 !important;
}
html body #shooting-event-root #shooting-result .shooting-result-reward-item > strong{margin:0 !important}
html body #shooting-event-root #shooting-result .shooting-result-rank-wrap small{margin-top:12px !important}
/* 敗北時など、JSが非表示にした報酬欄は出さない */
html body #shooting-event-root #shooting-result .shooting-result-rewards[style*="none"]{display:none !important}
/* 報酬リストは中身の高さまで（最大3行ぶん。それ以上は枠内スクロール）。
   余った高さはボタンの上に回し、ボタンを常に画面下に揃える */
html body #shooting-event-root #shooting-result .shooting-result-rewards{flex:0 1 auto !important}
html body #shooting-event-root #shooting-result .shooting-result-reward-list{
  flex:0 1 auto !important;
  min-height:0 !important;
  max-height:178px !important;
}
html body #shooting-event-root #shooting-result .shooting-result-actions{margin-top:auto !important}
/* 文字の太さをモック寄りに（見出し以外はやや細く） */
html body #shooting-event-root #shooting-result .shooting-result-detail-label,
html body #shooting-event-root #shooting-result .shooting-result-reward-copy b,
html body #shooting-event-root #shooting-result .shooting-result-member b{font-weight:500 !important}
@media (max-height:720px){
  html body #shooting-event-root #shooting-result .shooting-result-reward-list{max-height:142px !important}
}

/* ============================================================
   build1441: RESULT「生存キャラ」行はアイコンだけで表す
   - 生存：通常のアイコン（文字なし）
   - 戦闘不能：グレーアウト＋上から大きな×
   「生存 / LOST」の文字は画面には出さず、読み上げ用に残す。
   ============================================================ */
html body #shooting-event-root #shooting-result #shooting-result-survivor-details{
  gap:16px !important;
}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member{
  position:relative !important;
  gap:0 !important;
}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member b{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  overflow:hidden !important;
  clip:rect(0 0 0 0) !important;
  clip-path:inset(50%) !important;
  white-space:nowrap !important;
}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down img{
  filter:grayscale(1) brightness(1.05) !important;
  opacity:.55 !important;
  box-shadow:0 0 0 1.5px #fff8e8,0 0 0 2.5px #b8afa1 !important;
}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::before,
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:42px;
  height:4px;
  margin:-2px 0 0 -21px;
  border-radius:2px;
  background:#9a3b2c;
  box-shadow:0 0 0 1.5px rgba(255,248,232,.95);
  pointer-events:none;
}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::before{transform:rotate(45deg)}
html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::after{transform:rotate(-45deg)}
@media (max-height:720px){
  html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::before,
  html body #shooting-event-root #shooting-result #shooting-result-survivor-details .shooting-result-member.down::after{width:36px;margin-left:-18px}
}
/* 被弾回数の行とアイコンの縦位置をそろえる（どちらも3等分の列に置く） */
html body #shooting-event-root #shooting-result .shooting-result-member-list,
html body #shooting-event-root #shooting-result #shooting-result-survivor-details{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:4px !important;
  justify-items:start !important;
}

/* ============================================================
   build1455 — 遮断壁を「神聖な光の妨害壁」に（画像素材なし・CSSのみ）
   対象：CH06 / DAILY上級 / ノア / 残響の塔04・06 / 試遊オリビア（同じ .shooting-ch06-barrier）
   当たり判定・位置・幅・高さは一切変更しない（見た目だけ）。
   構成：
     本体        … 光の帯（金の霞＋外側のグロー）
     i           … 帯の中身：刻印の目盛り＋中心の白い光芯(::before)＋流れる光(::after)
     b           … 中央の聖印：ひし形の結晶＋回る光輪(::before)＋十字の閃光(::after)
     ::before/::after … 両端の光柱（縦に伸びる光＋結晶）
   アニメーションは transform / opacity のみ（再描画が軽い）。
   ============================================================ */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier{
  --hb-gold:255,214,128;
  --hb-core:255,252,238;
  position:absolute!important;left:0!important;top:0!important;z-index:23!important;
  pointer-events:none!important;box-sizing:border-box!important;
  border:0!important;border-radius:999px!important;
  background:
    linear-gradient(180deg,
      rgba(var(--hb-gold),0) 0%,
      rgba(var(--hb-gold),.42) 20%,
      rgba(var(--hb-core),.86) 50%,
      rgba(var(--hb-gold),.42) 80%,
      rgba(var(--hb-gold),0) 100%)!important;
  box-shadow:
    inset 0 0 0 1px rgba(214,168,76,.55),
    0 0 10px 1px rgba(var(--hb-gold),.55),
    0 0 26px 6px rgba(255,236,190,.34),
    0 6px 18px rgba(120,86,20,.18)!important;
  opacity:1!important;visibility:visible!important;filter:none!important;
  overflow:visible!important;
  animation:hbBreath 2.6s ease-in-out infinite!important;
}

/* ---- band content ---- */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > i{
  position:absolute!important;left:10px!important;right:10px!important;top:0!important;bottom:0!important;
  height:auto!important;transform:none!important;
  overflow:hidden!important;border-radius:999px!important;
  /* 刻印：細い縦目盛り（神殿の帯のような模様） */
  background:
    repeating-linear-gradient(90deg,
      rgba(176,132,48,0) 0 7px,
      rgba(176,132,48,.38) 7px 8px,
      rgba(176,132,48,0) 8px 14px,
      rgba(176,132,48,.22) 14px 15px,
      rgba(176,132,48,0) 15px 22px)!important;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%),
                     linear-gradient(180deg,transparent 18%,#000 34%,#000 66%,transparent 82%)!important;
  -webkit-mask-composite:source-in!important;
  mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%),
             linear-gradient(180deg,transparent 18%,#000 34%,#000 66%,transparent 82%)!important;
  mask-composite:intersect!important;
}
/* 白い光芯（当たり判定の中心線を示す） */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > i::before{
  content:""!important;position:absolute!important;left:0!important;right:0!important;top:50%!important;
  height:3px!important;margin-top:-1.5px!important;border-radius:2px!important;
  background:linear-gradient(90deg,rgba(var(--hb-core),.0),rgba(var(--hb-core),1) 12%,#fff 50%,rgba(var(--hb-core),1) 88%,rgba(var(--hb-core),0))!important;
  box-shadow:0 0 4px #fff,0 0 9px rgba(var(--hb-gold),.95),0 0 16px rgba(var(--hb-gold),.6)!important;
}
/* 帯の上を流れる光 */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > i::after{
  content:""!important;position:absolute!important;top:0!important;bottom:0!important;left:-100%!important;width:200%!important;
  background:repeating-linear-gradient(90deg,
    rgba(255,255,255,0) 0 46px,
    rgba(255,255,255,.75) 58px,
    rgba(255,255,255,0) 70px,
    rgba(255,255,255,0) 120px)!important;
  will-change:transform!important;
  animation:hbFlow 1.9s linear infinite!important;
}

/* ---- center sigil ---- */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > b{
  position:absolute!important;left:50%!important;top:50%!important;
  width:12px!important;height:12px!important;margin:0!important;
  transform:translate(-50%,-50%) rotate(45deg)!important;
  border:1px solid rgba(196,150,62,.95)!important;border-radius:1px!important;
  background:radial-gradient(circle at 50% 50%,#fff 0 30%,rgba(255,240,196,1) 55%,rgba(232,190,100,1) 100%)!important;
  box-shadow:0 0 6px #fff,0 0 12px rgba(var(--hb-gold),.95),0 0 22px rgba(var(--hb-gold),.55)!important;
}
/* 光輪：点線の円がゆっくり回る（b自体が45°回っているので内側で回転） */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > b::before{
  content:""!important;position:absolute!important;left:50%!important;top:50%!important;
  width:30px!important;height:30px!important;margin:-15px 0 0 -15px!important;border-radius:50%!important;
  border:1px dashed rgba(206,160,70,.75)!important;
  box-shadow:0 0 0 3px rgba(255,236,190,.18),0 0 10px rgba(var(--hb-gold),.35)!important;
  animation:hbSpin 9s linear infinite!important;
}
/* 十字の閃光（縦横の細い光） */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > b::after{
  content:""!important;position:absolute!important;left:50%!important;top:50%!important;
  width:46px!important;height:46px!important;margin:-23px 0 0 -23px!important;
  transform:rotate(-45deg)!important;
  background:
    linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.95) 50%,rgba(255,255,255,0)) center/100% 1.5px no-repeat,
    linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.95) 50%,rgba(255,255,255,0)) center/1.5px 100% no-repeat!important;
  filter:drop-shadow(0 0 3px rgba(var(--hb-gold),.9))!important;
  animation:hbTwinkle 2.6s ease-in-out infinite!important;
}

/* ---- end pillars ---- */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::before,
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::after{
  content:""!important;position:absolute!important;top:50%!important;
  width:14px!important;height:56px!important;margin-top:-28px!important;
  border:0!important;border-radius:0!important;
  transform:none!important;
  background:
    radial-gradient(circle at 50% 50%,#fff 0 2.5px,rgba(255,240,196,.95) 3.5px,rgba(var(--hb-gold),0) 7px),
    linear-gradient(180deg,rgba(var(--hb-gold),0) 0%,rgba(255,250,232,.95) 50%,rgba(var(--hb-gold),0) 100%) center/2px 100% no-repeat,
    radial-gradient(ellipse 50% 50% at 50% 50%,rgba(var(--hb-gold),.45),rgba(var(--hb-gold),0) 100%)!important;
  box-shadow:none!important;
  filter:drop-shadow(0 0 4px rgba(var(--hb-gold),.9))!important;
  animation:hbPillar 2.6s ease-in-out infinite!important;
}
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::before{left:-7px!important;right:auto!important;}
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::after{right:-7px!important;left:auto!important;animation-delay:-1.3s!important;}

/* ---- hit: 白く強く光る ---- */
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier.hit{
  box-shadow:
    inset 0 0 0 1px rgba(255,236,190,.9),
    0 0 14px 3px rgba(255,255,255,.85),
    0 0 30px 10px rgba(var(--hb-gold),.55),
    0 6px 18px rgba(120,86,20,.18)!important;
}
#shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier.hit > i::before{
  height:5px!important;margin-top:-2.5px!important;
  box-shadow:0 0 6px #fff,0 0 14px #fff,0 0 22px rgba(var(--hb-gold),1)!important;
}

@keyframes hbFlow{from{transform:translateX(0)}to{transform:translateX(120px)}}
@keyframes hbSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes hbBreath{0%,100%{opacity:.92}50%{opacity:1}}
@keyframes hbTwinkle{0%,100%{opacity:.55;transform:rotate(-45deg) scale(.82)}50%{opacity:1;transform:rotate(-45deg) scale(1.08)}}
@keyframes hbPillar{0%,100%{opacity:.75;transform:scaleY(.86)}50%{opacity:1;transform:scaleY(1.08)}}

/* 端末の「視差効果を減らす」設定ではアニメを止める */
@media (prefers-reduced-motion:reduce){
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier *,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::before,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier::after,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > i::after,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > b::before,
  #shooting-event-root .shooting-ch06-barrier.shooting-ch06-barrier > b::after{animation:none!important;}
}

/* build1455: 遮断壁被弾時の光の粒（JSが描くCanvas）。壁の1つ上の層。 */
#shooting-event-root #shooting-arena > canvas.shooting-barrier-sparks{
  position:absolute!important;left:0!important;top:0!important;
  width:100%!important;height:100%!important;
  z-index:24!important;pointer-events:none!important;
  background:none!important;transform:none!important;
}

/* ============================================================
   build1457: 下部バーを低く（84px → 52px）。
   待機キャラの丸は上半分がバーの上（盤面側）へはみ出す形にし、
   CHANGE札だけバーの中に収める。盤面は下に +32px 広がる。
   ============================================================ */
html body #shooting-event-root .shooting-footer.shooting-footer-v1436{
  --zf-h:52px;
  height:calc(var(--zf-h) + env(safe-area-inset-bottom, 0px)) !important;
  padding-top:0 !important;
  padding-bottom:env(safe-area-inset-bottom, 0px) !important;
  align-items:center !important;
  overflow:visible !important;
  z-index:26 !important;
}
html body #shooting-event-root:has(.shooting-footer-v1436) .shooting-arena{
  bottom:calc(52px + env(safe-area-inset-bottom, 0px)) !important;
}
/* 丸：中心をバー上端の少し下に置く（上半分＋αが盤面側に出る） */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-rail{
  align-self:flex-start !important;
  height:auto !important;
  margin-top:-24px !important;
}
/* はみ出した上半分にも縁の影を付けて、盤面から浮いて見せる */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-btn{
  box-shadow:
    0 0 0 2px #fff7e4,
    0 0 0 4px var(--zb-gold),
    0 0 0 5px var(--zb-gold-deep),
    0 -2px 10px rgba(60,40,15,.22),
    0 4px 10px rgba(60,40,15,.28) !important;
}
/* CHANGE札：丸の下端に重ねて、バーの中に収める */
html body #shooting-event-root .shooting-footer-v1436 .shooting-switch-status{
  bottom:-13px !important;
}
/* MENU / UI切替：バーの高さに合わせて少し低く */
html body #shooting-event-root .shooting-footer-v1436 .shooting-battle-menu-btn,
html body #shooting-event-root .shooting-footer-v1436 .shooting-ui-layout-btn{
  height:40px !important;
}
/* 狭い端末では中央の✦が丸と重なるので消す */
@media (max-width:360px){
  html body #shooting-event-root .shooting-footer.shooting-footer-v1436::before{display:none !important;}
}

/* build1458: 敵画像の準備ができるまで、属性バリア・HPバー・属性アイコンを出さない（本体と同時に表示） */
#shooting-event-root .shooting-normal-enemy-layer .awaiting-enemy-image{
  opacity:0 !important;
  visibility:hidden !important;
}
#shooting-event-root .shooting-boss-weakness-barrier.awaiting-enemy-image{
  opacity:0 !important;
  visibility:hidden !important;
}
/* 本体のフェードイン（.18s）に合わせて、バリア・HPバー・属性アイコンもふわっと出す */
#shooting-event-root .shooting-normal-enemy-layer .shooting-mini-enemy-weakness-barrier:not(.defeated),
#shooting-event-root .shooting-normal-enemy-layer .shooting-mini-enemy-hp,
#shooting-event-root .shooting-normal-enemy-layer .shooting-mini-enemy-element-icon,
#shooting-event-root .shooting-boss-weakness-barrier{
  transition:opacity .18s ease,visibility 0s linear 0s;
}

/* build1512 — CH07-04: ash spider horde. No projectile patterns. */
#shooting-event-root:is([data-shooting-stage="shooting_ch07_04"],[data-shooting-stage="shooting_beginner_ch07_04"]) .shooting-bg {
  background-image:url('../images/battle_bg_ch07_03.webp');
  filter:brightness(.91) saturate(.80);
}
/* build1513: no per-sprite GPU blur/filter for moving CH07-04 spider images. */
#shooting-event-root .shooting-mini-enemy.ch704-horde-spider {
  filter:none!important;
  box-shadow:none!important;
}
#shooting-event-root .shooting-mini-enemy-hp.ch704-horde-spider-hp {
  display:none!important;
}


/* build1521: CH07-02 単体強敵を既存BOSS HP HUDへ統一。通常/初級共通。 */
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch07_02"],
  [data-shooting-stage="shooting_beginner_ch07_02"]
) .shooting-boss-hud{
  top:90px !important;
  width:min(70vw,410px) !important;
  z-index:27 !important;
  pointer-events:none !important;
}
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch07_02"],
  [data-shooting-stage="shooting_beginner_ch07_02"]
) .shooting-normal-enemy-layer .shooting-mini-enemy-hp,
#shooting-event-root:is(
  [data-shooting-stage="shooting_ch07_02"],
  [data-shooting-stage="shooting_beginner_ch07_02"]
) .shooting-normal-enemy-layer .shooting-mini-enemy-element-icon{
  display:none !important;
}
@media(max-width:420px){
  #shooting-event-root:is(
    [data-shooting-stage="shooting_ch07_02"],
    [data-shooting-stage="shooting_beginner_ch07_02"]
  ) .shooting-boss-hud{width:min(69vw,350px) !important;}
}


/* ============================================================
   build1528 — All fixed BOSS HP HUDs show current / maximum HP.
   Place readout directly beneath the HP bar without replacing phase text.
   ============================================================ */
html body #shooting-event-root .shooting-boss-hud #shooting-boss-hp-value{
  display:block;
  margin:4px auto 0;
  min-height:15px;
  max-width:100%;
  font-family:"Cinzel","Noto Serif JP",serif;
  font-size:clamp(11px,3vw,13px);
  font-weight:700;
  line-height:1.15;
  letter-spacing:.055em;
  text-align:center;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  color:#503a22;
  text-shadow:0 0 2px #fff,0 0 5px rgba(255,255,255,.98),0 1px 0 #fff;
  pointer-events:none;
}
html body #shooting-event-root .shooting-boss-hud #shooting-boss-hp-value.is-infinite{
  font-size:15px;
  color:#97733e;
}
html body #shooting-event-root .shooting-boss-hud .shooting-boss-phase{
  margin-top:2px;
}
@media (max-width:360px){
  html body #shooting-event-root .shooting-boss-hud #shooting-boss-hp-value{
    font-size:10.5px;
    letter-spacing:0;
  }
}

/* build1539: 常闇は背景だけ暗転。弾・敵・味方・HUDは明度を変えない。 */
/* 単一classのON/OFFだけで描画。新しいオーバーレイやアニメーションループなし。 */
html body #shooting-event-root .shooting-stage{
  transition:background-color .58s ease-out;
}
html body #shooting-event-root .shooting-bg,
html body #shooting-event-root .shooting-wash{
  transition:opacity .58s ease-out;
}
html body #shooting-event-root.towa-dark-background .shooting-stage{
  background-color:#000!important;
  transition:none!important;
}
html body #shooting-event-root.towa-dark-background .shooting-bg,
html body #shooting-event-root.towa-dark-background .shooting-wash{
  opacity:0!important;
  transition:none!important;
}
/* 過去のbuildの全面暗転DOMを万一保持していても描画させない。 */
#shooting-arena #shooting-towa-darkness{display:none!important}
@media(prefers-reduced-motion:reduce){
  html body #shooting-event-root .shooting-stage,
  html body #shooting-event-root .shooting-bg,
  html body #shooting-event-root .shooting-wash{transition:none!important}
}
/* =========================================================
   build1591 DAILY RAID：ボスごとのバトル背景
   03 シエン / 04 カミラ / 05 SIGMA-IX
   画像が無い場合は下に重ねた共通背景(battle_bg_01)が見える。
   ========================================================= */
#shooting-event-root[data-raid-boss="shooting_raid_shien"] .shooting-bg{
  background-image:url('../images/battle_bg_03.webp'),url('../images/battle_bg_01.webp');
  background-size:cover;background-position:center;
  filter:saturate(.95);opacity:.86;
}
#shooting-event-root[data-raid-boss="shooting_raid_camilla"] .shooting-bg{
  background-image:url('../images/battle_bg_04.webp'),url('../images/battle_bg_01.webp');
  background-size:cover;background-position:center;
  filter:brightness(.92) saturate(.95);opacity:.9;
}
#shooting-event-root[data-raid-boss="shooting_raid_test"] .shooting-bg{
  background-image:url('../images/battle_bg_05.webp'),url('../images/battle_bg_01.webp');
  background-size:cover;background-position:center;
  filter:none;opacity:.86;
}
/* カミラの背景は暗いので、上部HUD（ボス名・HP・PHASE）の帯だけ明るく敷いて文字を読みやすくする */
#shooting-event-root[data-raid-boss="shooting_raid_camilla"] .shooting-wash{
  background:linear-gradient(180deg,rgba(252,246,242,.78) 0%,rgba(252,246,242,.55) 15%,rgba(252,246,242,0) 27%,rgba(0,0,0,0) 100%);
}
html body #shooting-event-root[data-raid-boss="shooting_raid_camilla"] :is(.shooting-hp-side-label,.shooting-hp-side-value,.shooting-ult-side-label,.shooting-hp-side-copy,.shooting-ult-side-copy,.shooting-ult-side-copy span,.shooting-hp-side-copy span){
  color:#fff3ea!important;
  text-shadow:0 0 3px rgba(40,0,10,.95),0 0 7px rgba(60,0,15,.85)!important;
}

/* =========================================================
   build1595 召喚アイテム（ミモザ / アイレナ / アンジェ）共通デザイン
   光輪＋回転する光のリング＋カット宝石＋アイコン＋きらめき＋ラベル
   ========================================================= */
#shooting-event-root .summon-item-v2{
  width:46px!important;height:46px!important;border:0!important;background:none!important;box-shadow:none!important;
  border-radius:0!important;filter:none!important;overflow:visible!important;
}
#shooting-event-root .summon-item-v2::before,#shooting-event-root .summon-item-v2::after{content:none!important;display:none!important}
.summon-item-v2.si-kind-atk{--c1:#ff7a4d;--c2:#ffe1cf;--c3:#b13d1b;--ca:rgba(255,122,77,.55);--cb:rgba(255,122,77,.22);--cs:rgba(177,61,27,.8)}
.summon-item-v2.si-kind-heal,.summon-item-burst.si-kind-heal{--c1:#3fc27a;--c2:#dcffe9;--c3:#1b7342;--ca:rgba(63,194,122,.55);--cb:rgba(63,194,122,.22);--cs:rgba(27,115,66,.8)}
.summon-item-v2.si-kind-invincible,.summon-item-burst.si-kind-invincible{--c1:#8d79ff;--c2:#ebe6ff;--c3:#4632b4;--ca:rgba(141,121,255,.55);--cb:rgba(141,121,255,.22);--cs:rgba(70,50,180,.8)}
.summon-item-v2.si-kind-heart,.summon-item-burst.si-kind-heart{--c1:#ff6f9f;--c2:#ffe3ee;--c3:#b4265a;--ca:rgba(255,111,159,.55);--cb:rgba(255,111,159,.22);--cs:rgba(180,38,90,.8)}
.summon-item-burst.si-kind-atk{--c1:#ff7a4d;--c2:#ffe1cf;--c3:#b13d1b}
.summon-item-v2 > span,.summon-item-v2 > b{position:absolute;pointer-events:none}
.summon-item-v2 .si-aura{inset:-12px;border-radius:50%;
  background:radial-gradient(circle,var(--ca) 0%,var(--cb) 42%,transparent 70%);
  animation:siAura 1.3s ease-in-out infinite alternate}
.summon-item-v2 .si-ring{inset:1px;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0 14deg,var(--c1) 14deg 70deg,transparent 70deg 120deg,var(--c3) 120deg 170deg,transparent 170deg 236deg,var(--c1) 236deg 292deg,transparent 292deg);
  -webkit-mask:radial-gradient(circle closest-side,transparent 74%,#000 78%,#000 94%,transparent 100%);
          mask:radial-gradient(circle closest-side,transparent 74%,#000 78%,#000 94%,transparent 100%);
  animation:siSpin 2.6s linear infinite}
.summon-item-v2 .si-gem{inset:7px;display:flex;align-items:center;justify-content:center;
  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);
  background:
    linear-gradient(135deg,rgba(255,255,255,.95) 0 18%,transparent 18% 100%),
    linear-gradient(135deg,var(--c2) 0%,var(--c1) 46%,var(--c3) 100%)}
.summon-item-v2 .si-gem::after{content:'';position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.75) 46%,transparent 58%);
  background-size:220% 100%;animation:siShine 1.9s ease-in-out infinite}
.summon-item-v2 .si-gem svg{position:relative;z-index:1;width:17px;height:17px;fill:#fff;
  filter:drop-shadow(0 1px 1px var(--cs))}
.summon-item-v2 .si-spark{width:5px;height:5px;left:50%;top:50%;margin:-2.5px;border-radius:50%;
  background:#fff;box-shadow:0 0 6px var(--c1),0 0 2px #fff;animation:siOrbit 2.2s linear infinite}
.summon-item-v2 .si-spark.s2{animation-delay:-.73s;width:4px;height:4px}
.summon-item-v2 .si-spark.s3{animation-delay:-1.46s;width:3px;height:3px}
.summon-item-v2 .si-tag{left:50%;top:100%;transform:translate(-50%,1px);white-space:nowrap;
  font:700 8px/1 'Cinzel','Noto Serif JP',serif;letter-spacing:.12em;color:#fff;
  padding:2px 5px 2px 6px;border-radius:6px;background:var(--c3);
  box-shadow:0 0 0 1px var(--c2),0 2px 6px rgba(0,0,0,.25)}
@keyframes siAura{from{opacity:.65;transform:scale(.92)}to{opacity:1;transform:scale(1.08)}}
@keyframes siSpin{to{transform:rotate(360deg)}}
@keyframes siShine{0%,40%{background-position:120% 0}100%{background-position:-120% 0}}
@keyframes siOrbit{
  0%{transform:rotate(0deg) translateX(23px) scale(.6);opacity:0}
  20%{opacity:1}
  80%{opacity:1}
  100%{transform:rotate(360deg) translateX(23px) scale(1);opacity:0}}
/* アンジェのハートは点滅（寿命間近）を維持 */
#shooting-event-root .shooting-ange-heart.summon-item-v2.is-expiring{animation:angeHeartBlink .34s steps(1,end) infinite}
/* 取得時の光の弾け */
.summon-item-burst{position:absolute;left:0;top:0;width:0;height:0;z-index:35;pointer-events:none}
.summon-item-burst i{position:absolute;left:-30px;top:-30px;width:60px;height:60px;border-radius:50%;
  border:3px solid var(--c1);box-shadow:0 0 14px var(--c1),inset 0 0 10px var(--c2);
  animation:siBurst .45s ease-out forwards}
.summon-item-burst i:nth-child(2){border-width:2px;border-color:var(--c2);animation-delay:.06s}
@keyframes siBurst{from{transform:scale(.3);opacity:1}to{transform:scale(1.5);opacity:0}}

/* =========================================================
   build1595 回復量の表示（HPゲージ周辺にランダム配置）
   ========================================================= */
.shooting-heal-number{position:absolute;z-index:60;pointer-events:none;white-space:nowrap;transform:translate(-50%,-50%);
  font:700 12px/1 'Cinzel','Noto Serif JP',serif;letter-spacing:.02em;color:#1f9a55;
  text-shadow:0 0 3px #fff,0 0 6px rgba(255,255,255,.95),0 1px 0 #fff;
  animation:healNumberRise .85s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes healNumberRise{
  0%{opacity:0;translate:0 4px;scale:.7}
  18%{opacity:1;scale:1.1}
  35%{scale:1}
  100%{opacity:0;translate:var(--hn-dx,0px) -22px}}
@media (prefers-reduced-motion:reduce){
  .summon-item-v2 .si-ring,.summon-item-v2 .si-spark,.summon-item-v2 .si-gem::after{animation:none}
}

/* build1613 — スマイル ULT「びっくり箱」: 本体座標はpositionUnitだけが管理する。 */
#shooting-event-root .shooting-smile-box{
  position:absolute;left:0;top:0;width:108px;height:108px;z-index:18;
  pointer-events:none;overflow:visible;transform-origin:center center;
}
#shooting-event-root .shooting-smile-box img{
  position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain;
  filter:drop-shadow(0 0 10px rgba(255,211,83,.75)) drop-shadow(0 7px 6px rgba(61,48,23,.4));
  animation:smileBoxAppear .32s ease-out both;
}
#shooting-event-root .smile-box-halo{position:absolute;inset:4px;border-radius:50%;
  border:2px solid rgba(255,225,108,.6);box-shadow:0 0 17px rgba(255,216,98,.65);
  animation:smileBoxHalo 1.2s ease-in-out infinite alternate}
#shooting-event-root .smile-box-timer{position:absolute;bottom:0;left:16%;width:68%;height:4px;
  background:linear-gradient(90deg,#fff4a0,#ffc64c);border-radius:5px;
  box-shadow:0 0 7px rgba(255,221,100,.85);transform-origin:left center;
  animation:smileBoxTimer 3s linear forwards}
#shooting-event-root .shooting-smile-box.smile-box-hit .smile-box-halo{animation:smileBoxHit .2s ease-out}
#shooting-event-root .shooting-smile-box-explosion{
  position:absolute;left:0;top:0;z-index:48;width:var(--smile-blast-size,284px);
  height:var(--smile-blast-size,284px);border-radius:50%;pointer-events:none;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-core,
#shooting-event-root .shooting-smile-box-explosion .smile-blast-ring{position:absolute;inset:0;border-radius:50%}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-core{
  background:radial-gradient(circle,#fffef6 0%,rgba(255,245,155,.96) 17%,rgba(255,201,56,.65) 35%,rgba(255,215,72,0) 70%);
  animation:smileBlast .63s ease-out forwards}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-ring{
  border:4px solid rgba(255,237,152,.95);box-shadow:0 0 24px rgba(255,208,56,.85);
  animation:smileBlastRing .62s ease-out forwards}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-star{
  position:absolute;left:50%;top:50%;font-size:64px;line-height:1;color:#fff2b2;
  text-shadow:0 0 25px #ffc93b;animation:smileBlastStar .6s ease-out forwards}
/* ULTゲージ用だけ色を追加。サイズ/配置/回転/拾い演出は既存のミモザ共通CSS。 */
#shooting-event-root .summon-item-v2.si-kind-ult,
#shooting-event-root .summon-item-burst.si-kind-ult{
  --c1:#f3c43a;--c2:#fff6c6;--c3:#af7b10;
  --ca:rgba(245,203,72,.55);--cb:rgba(245,203,72,.22);--cs:rgba(175,123,16,.8)}
@keyframes smileBoxAppear{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}
@keyframes smileBoxHalo{from{opacity:.35;transform:scale(.91)}to{opacity:.85;transform:scale(1.03)}}
@keyframes smileBoxHit{from{opacity:1;box-shadow:0 0 28px rgba(255,255,180,1)}to{opacity:.6;box-shadow:0 0 12px rgba(255,216,98,.55)}}
@keyframes smileBoxTimer{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@keyframes smileBlast{from{opacity:1;transform:scale(.25)}to{opacity:0;transform:scale(1)}}
@keyframes smileBlastRing{from{opacity:1;transform:scale(.15)}to{opacity:0;transform:scale(1)}}
@keyframes smileBlastStar{from{opacity:1;transform:translate(-50%,-50%) scale(.4) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) scale(1.5) rotate(100deg)}}
@media(prefers-reduced-motion:reduce){#shooting-event-root .shooting-smile-box img,
  #shooting-event-root .smile-box-halo{animation:none}}

/* PAUSEではバトル時刻と同様、箱の残り時間演出も静止する。 */
#shooting-event-root.is-shooting-paused .shooting-smile-box *,
#shooting-event-root.is-shooting-paused .shooting-smile-box{animation-play-state:paused!important}

/* =========================================================
   build1615 — スマイル ULT：開いた箱＋広範囲の爆風
   ========================================================= */
#shooting-event-root .shooting-smile-box.smile-box-open{z-index:49}
#shooting-event-root .shooting-smile-box.smile-box-open img{
  animation:smileBoxOpenPop .82s cubic-bezier(.2,1.6,.4,1) forwards!important;
  filter:drop-shadow(0 0 18px rgba(255,226,120,.95)) drop-shadow(0 0 40px rgba(255,200,60,.6))!important;
}
@keyframes smileBoxOpenPop{
  0%{transform:scale(.9) rotate(0)}
  18%{transform:scale(1.55) rotate(-6deg)}
  35%{transform:scale(1.32) rotate(4deg)}
  70%{opacity:1;transform:scale(1.38) rotate(0)}
  100%{opacity:0;transform:scale(1.5) translateY(-10px)}
}
#shooting-event-root .shooting-smile-box-explosion{overflow:visible}
#shooting-event-root .shooting-smile-box-explosion > span{pointer-events:none}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-flash{
  position:absolute;left:50%;top:50%;width:260%;height:260%;border-radius:50%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(255,252,230,.85) 0%,rgba(255,236,160,.35) 30%,rgba(255,230,140,0) 60%);
  animation:smileBlastFlash .45s ease-out forwards;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-ring2{
  border-width:2px!important;border-color:rgba(255,255,255,.9)!important;animation:smileBlastRing .8s .08s ease-out both!important;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-wave{
  position:absolute;inset:-12%;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,0) 52%,rgba(255,244,190,.55) 62%,rgba(255,214,90,.25) 70%,rgba(255,214,90,0) 76%);
  animation:smileBlastWave .7s ease-out forwards;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-smoke{
  position:absolute;left:50%;top:50%;width:var(--sz);height:var(--sz);margin:calc(var(--sz) / -2) 0 0 calc(var(--sz) / -2);border-radius:50%;
  background:radial-gradient(circle at 40% 38%,#fffdf6 0%,rgba(250,242,226,.92) 45%,rgba(240,226,200,.0) 72%);
  opacity:0;animation:smileBlastSmoke .9s var(--dl) ease-out forwards;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-bit{
  position:absolute;left:50%;top:50%;opacity:0;animation:smileBlastBit .9s var(--dl) cubic-bezier(.15,.7,.35,1) forwards;
  will-change:transform,opacity;
}
#shooting-event-root .smile-blast-bit.is-star{font-size:22px;line-height:1;margin:-11px 0 0 -11px;color:#ffd75a;text-shadow:0 0 8px rgba(255,210,70,.9)}
#shooting-event-root .smile-blast-bit.is-diamond{font-size:18px;line-height:1;margin:-9px 0 0 -9px;color:#fff3c0;text-shadow:0 0 8px rgba(255,230,140,.9)}
#shooting-event-root .smile-blast-bit.is-card{
  width:14px;height:20px;margin:-10px 0 0 -7px;border-radius:2px;
  background:conic-gradient(from 45deg,#2d2730 0 25%,#f6efe0 0 50%,#2d2730 0 75%,#f6efe0 0) center/10px 10px;
  border:1.5px solid #d9b45a;box-shadow:0 0 6px rgba(255,220,120,.6);
}
#shooting-event-root .smile-blast-bit.is-bell{
  width:13px;height:13px;margin:-6.5px 0 0 -6.5px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff6c8,#e0b54a 55%,#8d6a1d);box-shadow:0 0 6px rgba(255,210,90,.7);
}
@keyframes smileBlastFlash{from{opacity:1;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}
@keyframes smileBlastWave{0%{opacity:.95;transform:scale(.2)}70%{opacity:.7}100%{opacity:0;transform:scale(1.08)}}
@keyframes smileBlastSmoke{
  0%{opacity:0;transform:translate(0,0) scale(.3)}
  20%{opacity:.95}
  100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.25)}
}
@keyframes smileBlastBit{
  0%{opacity:0;transform:translate(0,0) rotate(0) scale(.4)}
  12%{opacity:1}
  80%{opacity:1}
  100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 26px)) rotate(var(--rot)) scale(1)}
}
#shooting-event-root.smile-blast-shake #shooting-arena{animation:smileBlastShake .42s ease-out}
/* PCの中央寄せ（transform:translateX(-50%)）を壊さないよう、個別プロパティ translate で揺らす */
@keyframes smileBlastShake{
  0%{translate:0 0}15%{translate:-6px 4px}30%{translate:5px -5px}
  45%{translate:-4px 3px}60%{translate:3px -2px}80%{translate:-1px 1px}100%{translate:0 0}
}
@media(prefers-reduced-motion:reduce){
  #shooting-event-root.smile-blast-shake #shooting-arena{animation:none}
  #shooting-event-root .shooting-smile-box-explosion .smile-blast-bit,
  #shooting-event-root .shooting-smile-box-explosion .smile-blast-smoke{animation-duration:.5s}
}
/* build1615b: 明るい背景でも煙・閃光が見えるよう、縁に陰影と金のにじみを足す */
#shooting-event-root .shooting-smile-box-explosion .smile-blast-smoke{
  background:radial-gradient(circle at 38% 34%,#ffffff 0%,#fbf4e4 38%,rgba(226,206,168,.92) 62%,rgba(205,178,128,0) 74%)!important;
  filter:drop-shadow(0 2px 4px rgba(150,115,55,.35)) drop-shadow(0 0 10px rgba(255,214,110,.45));
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-flash{
  background:radial-gradient(circle,rgba(255,250,215,.95) 0%,rgba(255,224,120,.55) 28%,rgba(255,214,90,.18) 48%,rgba(255,214,90,0) 62%)!important;
}
#shooting-event-root .shooting-smile-box-explosion .smile-blast-ring{border-color:rgba(255,206,80,.95)!important;box-shadow:0 0 24px rgba(255,190,40,.9),inset 0 0 18px rgba(255,220,120,.6)!important}

/* =========================================================
   build1623 残響の塔：バトル背景
   1〜14F：bg_battle_tower_01 / 15F：bg_battle_tower_02
   画像が無い場合は下に重ねた共通背景(battle_bg_01)が見える。
   ========================================================= */
#shooting-event-root[data-shooting-stage^="shooting_tower_"] .shooting-bg{
  background-image:url('../images/bg_battle_tower_01.webp'),url('../images/battle_bg_01.webp');
  background-size:cover;background-position:center;
  filter:none;opacity:.9;
}
#shooting-event-root[data-shooting-stage="shooting_tower_15"] .shooting-bg{
  background-image:url('../images/bg_battle_tower_02.webp'),url('../images/battle_bg_01.webp');
}
/* 背景が暗いので、上部HUDの帯だけ明るく敷き、左右ゲージの文字にも縁取りを付けて読みやすくする */
#shooting-event-root[data-shooting-stage^="shooting_tower_"] .shooting-wash{
  background:linear-gradient(180deg,rgba(248,245,252,.78) 0%,rgba(248,245,252,.55) 15%,rgba(248,245,252,0) 27%,rgba(0,0,0,0) 100%);
}
html body #shooting-event-root[data-shooting-stage^="shooting_tower_"] :is(.shooting-hp-side-label,.shooting-hp-side-value,.shooting-ult-side-label,.shooting-hp-side-copy,.shooting-ult-side-copy,.shooting-ult-side-copy span,.shooting-hp-side-copy span){
  color:#f6f0ff!important;
  text-shadow:0 0 3px rgba(20,10,40,.95),0 0 7px rgba(30,15,60,.85)!important;
}

/* =========================================================
   build1626 レイド カミラ・シエン：最初から味方と同じ大きさで表示
   （従来は戦闘開始後にJSで小さくしていたため、登場時に一瞬大きく見えていた）
   ========================================================= */
#shooting-event-root[data-raid-boss="shooting_raid_camilla"] #shooting-boss,
#shooting-event-root[data-raid-boss="shooting_raid_shien"] #shooting-boss{
  width:74px!important;height:126px!important;object-fit:contain!important;
}
@media(min-width:700px){
  #shooting-event-root[data-raid-boss="shooting_raid_camilla"] #shooting-boss,
  #shooting-event-root[data-raid-boss="shooting_raid_shien"] #shooting-boss{width:82px!important;height:140px!important}
}

/* build1630: リズム弾幕の判定表示（PERFECT / GOOD） */
#shooting-event-root .shooting-rhythm-judge{
  position:absolute;z-index:40;pointer-events:none;
  transform:translateX(-50%);
  font-family:'Cinzel','Times New Roman',serif;font-weight:700;letter-spacing:.12em;
  font-size:15px;white-space:nowrap;
  animation:shootingRhythmJudge .6s ease-out forwards;
}
#shooting-event-root .shooting-rhythm-judge.is-perfect{
  color:#fff;font-size:17px;
  text-shadow:0 0 6px #b48cff,0 0 14px #8054ae,0 1px 0 #3a2160;
}
#shooting-event-root .shooting-rhythm-judge.is-good{
  color:#f3ecff;
  text-shadow:0 0 5px rgba(128,84,174,.8),0 1px 0 #3a2160;
}
@keyframes shootingRhythmJudge{
  0%{opacity:0;transform:translate(-50%,6px) scale(.86);}
  18%{opacity:1;transform:translate(-50%,0) scale(1.08);}
  40%{transform:translate(-50%,-4px) scale(1);}
  100%{opacity:0;transform:translate(-50%,-22px) scale(1);}
}

/* build1636: 律動（仮面舞踏会）— BOSS（リズム）は自キャラと同じ枠(74×126)で、最初から確定サイズで表示（カミラ/シエンと同じく最初から確定サイズ） */
#shooting-event-root:is([data-shooting-stage="shooting_event_rhythm_test"],[data-shooting-stage="shooting_event_rhythm_advanced"],[data-shooting-stage="shooting_event_rhythm_ultra"]) #shooting-boss{width:74px!important;height:126px!important;object-fit:contain!important;}
@media (min-width:700px){#shooting-event-root:is([data-shooting-stage="shooting_event_rhythm_test"],[data-shooting-stage="shooting_event_rhythm_advanced"],[data-shooting-stage="shooting_event_rhythm_ultra"]) #shooting-boss{width:82px!important;height:140px!important;}}
/* build1643: PHASE差し替え立ち絵「自キャラと同じ大きさ」（レイド「テスト」PHASE3など）。
   立ち絵は横に広がる正方形のため、高さを自キャラ枠（126px / 140px）に合わせ、幅は同じ値の正方形にする。 */
#shooting-event-root[data-boss-visual="player"] #shooting-boss{width:126px!important;height:126px!important;object-fit:contain!important;}
@media (min-width:700px){#shooting-event-root[data-boss-visual="player"] #shooting-boss{width:140px!important;height:140px!important;}}
/* ステージ選択のサムネ：縦長イラストの顔が切れないよう上寄せで切り抜く */
#screen-ninmu.junkou-rebuilt .rhythm-stage-card .junkou-special-art img{object-position:50% 22% !important;}

/* build1637: 難易度選択（無貌の天使・律動）のクリア済みバッジ。STORYの ✓ CLEAR と同じ見た目 */
#shooting-faceless-stage-select.zfs-screen .zss-clear-badge{
  flex:0 0 auto;
  padding:3px 5px 4px;
  color:#805628;
  background:linear-gradient(180deg,#fff9ec,#f4e6c9);
  border:1px solid rgba(177,131,62,.68);
  font:600 10px/1 "Cinzel",serif;
  letter-spacing:.03em;
  white-space:nowrap;
}

/* build1638: 難易度選択の見出し。戻るボタン（左上固定・幅約82px）と左右対称に余白を取り、
   長い見出しは JS で文字サイズを縮める。「律動 -仮面舞踏会-」は 主題＋副題 の2段にする */
html body :is(#shooting-faceless-stage-select,#noah-stage-select).zfs-screen .zfs-heading{
  box-sizing:border-box !important;
  width:100% !important;
  max-width:100% !important;
  padding:0 92px !important;
  white-space:nowrap !important;
  overflow:hidden !important;
}
html body #shooting-faceless-stage-select.zfs-screen .zfs-heading.zfs-heading-split{
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  gap:1px !important;
  margin-top:4px !important;
  line-height:1.05 !important;
}
html body #shooting-faceless-stage-select.zfs-screen .zfs-heading-split .zfs-heading-main{
  font:600 clamp(22px,6.2vw,28px)/1.1 'Noto Serif JP',serif;
  letter-spacing:.18em;
  padding-left:.18em;
}
html body #shooting-faceless-stage-select.zfs-screen .zfs-heading-split .zfs-heading-sub{
  display:flex;align-items:center;gap:7px;
  font:500 11px/1.2 'Noto Serif JP',serif;
  letter-spacing:.32em;
  padding-left:.32em;
  color:#8a5f35;
}
html body #shooting-faceless-stage-select.zfs-screen .zfs-heading-split .zfs-heading-sub::before,
html body #shooting-faceless-stage-select.zfs-screen .zfs-heading-split .zfs-heading-sub::after{
  content:'';width:14px;height:1px;background:rgba(154,106,53,.55);
}
/* 右欄（RANK / HIGH SCORE）へ移したWAVE/PHASE数はクリア条件の後ろに小さく */
#shooting-faceless-stage-select.zfs-screen .zfs-phase-note{
  margin-left:3px;font-size:.9em;color:#7a6a55;white-space:nowrap;
}

/* build1643 律動：音符（♪）を取った時の光のはじけ */
#shooting-event-root .shooting-rhythm-note-burst{
  position:absolute;left:0;top:0;z-index:31;width:0;height:0;pointer-events:none;
}
#shooting-event-root .shooting-rhythm-note-burst i,
#shooting-event-root .shooting-rhythm-note-burst b{
  position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%) scale(.3);
}
#shooting-event-root .shooting-rhythm-note-burst i:nth-child(1){
  width:64px;height:64px;border:2px solid rgba(255,226,150,.95);
  box-shadow:0 0 14px rgba(255,210,120,.85),inset 0 0 10px rgba(255,240,200,.6);
  animation:rhythmNoteRing .62s cubic-bezier(.2,.7,.3,1) forwards;
}
#shooting-event-root .shooting-rhythm-note-burst i:nth-child(2){
  width:40px;height:40px;border:1px solid rgba(255,255,255,.9);
  animation:rhythmNoteRing .5s .06s cubic-bezier(.2,.7,.3,1) forwards;
}
#shooting-event-root .shooting-rhythm-note-burst b{
  width:30px;height:30px;
  background:radial-gradient(circle,rgba(255,255,255,1) 0%,rgba(255,226,150,.85) 35%,rgba(255,200,100,0) 70%);
  animation:rhythmNoteFlash .45s ease-out forwards;
}
@keyframes rhythmNoteRing{0%{opacity:1;transform:translate(-50%,-50%) scale(.3);}100%{opacity:0;transform:translate(-50%,-50%) scale(1.25);}}
@keyframes rhythmNoteFlash{0%{opacity:1;transform:translate(-50%,-50%) scale(.6);}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8);}}

/* ============================================================
   build1643 レムナント：イノリ
   全属性バリア／鳥居／鳥居レーザー／鈍化の呪い
   ============================================================ */
/* 全属性バリア：五属性の光が巡る結界（本体位置はJSで毎フレーム同期） */
#shooting-event-root .inori-barrier{
  position:absolute;left:0;top:0;z-index:10;pointer-events:none;border-radius:50%;
  will-change:transform;
}
#shooting-event-root .inori-barrier > i{
  position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,rgba(232,88,70,.55),rgba(67,174,232,.55),rgba(98,184,94,.55),rgba(231,198,78,.6),rgba(128,84,174,.55),rgba(232,88,70,.55));
  -webkit-mask:radial-gradient(circle,transparent 60%,#000 62%,#000 69%,transparent 71%);
          mask:radial-gradient(circle,transparent 60%,#000 62%,#000 69%,transparent 71%);
  filter:blur(.4px) drop-shadow(0 0 6px rgba(255,248,220,.75));
  animation:inori-barrier-spin 6s linear infinite;
}
#shooting-event-root .inori-barrier::before{
  content:"";position:absolute;inset:6%;border-radius:50%;
  background:radial-gradient(circle,rgba(255,252,240,0) 55%,rgba(255,250,232,.20) 72%,rgba(255,246,222,.05) 100%);
  box-shadow:inset 0 0 18px rgba(255,244,214,.45);
  animation:inori-barrier-breathe 2.4s ease-in-out infinite;
}
#shooting-event-root .inori-barrier > b{
  position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);white-space:nowrap;
  font:700 7.5px/1 'Cinzel',serif;letter-spacing:.22em;color:#fff7e3;
  text-shadow:0 0 4px rgba(120,80,30,.9),0 1px 2px rgba(0,0,0,.6);opacity:.9;
}
@keyframes inori-barrier-spin{to{transform:rotate(360deg);}}
@keyframes inori-barrier-breathe{0%,100%{opacity:.7;}50%{opacity:1;}}

/* 鳥居：通常敵の枠を使う（66px基準×uiScale）。神聖な白い光 */
#shooting-event-root .shooting-mini-enemy.inori-torii{
  filter:drop-shadow(0 0 8px rgba(255,246,220,.75)) drop-shadow(0 6px 8px rgba(70,60,40,.25));
}

/* 鳥居レーザー：予兆（細い紅白の線）→ 照射（極太の光柱） */
#shooting-event-root .inori-torii-laser{
  position:absolute;bottom:0;z-index:11;pointer-events:none;transform:translateX(-50%);
}
#shooting-event-root .inori-torii-laser > i{position:absolute;inset:0;display:block;}
#shooting-event-root .inori-torii-laser.is-warn > i{
  left:50%;width:4px;transform:translateX(-50%);
  background:repeating-linear-gradient(180deg,rgba(214,40,52,.95) 0 10px,rgba(255,250,240,.95) 10px 20px);
  box-shadow:0 0 10px rgba(214,40,52,.7);
  animation:inori-laser-warn .18s steps(2) infinite;
}
#shooting-event-root .inori-torii-laser.is-warn::before{ /* 照射範囲の薄い帯 */
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(214,40,52,0),rgba(214,40,52,.14) 20%,rgba(214,40,52,.14) 80%,rgba(214,40,52,0));
  border-left:1px dashed rgba(214,40,52,.55);border-right:1px dashed rgba(214,40,52,.55);
}
#shooting-event-root .inori-torii-laser.is-fire > i{
  background:linear-gradient(90deg,rgba(214,40,52,0) 0%,rgba(230,70,70,.85) 8%,rgba(255,236,200,.95) 26%,#fffef8 50%,rgba(255,236,200,.95) 74%,rgba(230,70,70,.85) 92%,rgba(214,40,52,0) 100%);
  box-shadow:0 0 22px rgba(255,220,170,.9),0 0 42px rgba(214,40,52,.55);
  animation:inori-laser-fire .52s ease-out both;
}
@keyframes inori-laser-warn{50%{opacity:.35;}}
@keyframes inori-laser-fire{0%{transform:scaleX(.25);opacity:.4;}18%{transform:scaleX(1.08);opacity:1;}80%{transform:scaleX(1);opacity:1;}100%{transform:scaleX(.6);opacity:0;}}

/* build1726: 鳥居復活までの残り時間 — イノリ本体を囲む細いリング（減っていく）＋足元の小さな秒数。
   盤面中央の大きな帯はやめ、弾や敵の見える範囲を隠さない。 */
#shooting-event-root .inori-break-badge{
  position:absolute;left:0;top:0;z-index:10;pointer-events:none;will-change:transform;
}
#shooting-event-root .inori-break-badge svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:rotate(-90deg);}
#shooting-event-root .inori-break-badge circle{fill:none;stroke-width:2.2;vector-effect:non-scaling-stroke;}
#shooting-event-root .inori-break-badge .track{stroke:rgba(150,40,52,.16);stroke-dasharray:2 3;}
#shooting-event-root .inori-break-badge .remain{
  stroke:rgba(196,48,60,.78);stroke-linecap:round;stroke-dasharray:100 100;
  filter:drop-shadow(0 0 3px rgba(255,255,255,.95));
  transition:stroke-dashoffset .1s linear;
}
#shooting-event-root .inori-break-badge em{
  position:absolute;left:50%;top:100%;transform:translate(-50%,-2px);
  display:flex;align-items:baseline;gap:4px;white-space:nowrap;font-style:normal;
  padding:2px 7px 2px;border-radius:9px;
  background:rgba(255,252,246,.78);box-shadow:0 0 0 1px rgba(196,48,60,.35);
}
#shooting-event-root .inori-break-badge em small{font:700 8.5px/1 'Noto Serif JP',serif;letter-spacing:.06em;color:#8a3a34;}
#shooting-event-root .inori-break-badge em b{
  font:700 11.5px/1 'Cinzel','Noto Serif JP',serif;letter-spacing:.02em;color:#a3283a;
  font-variant-numeric:tabular-nums;min-width:2.6em;text-align:right;
}
/* 残り2秒：復活が近いことをリングとラベルの点滅で知らせる */
#shooting-event-root .inori-break-badge.is-soon .remain{stroke:rgba(214,40,52,.95);animation:inori-revive-soon .32s ease-in-out infinite alternate;}
#shooting-event-root .inori-break-badge.is-soon em{box-shadow:0 0 0 1px rgba(214,40,52,.75),0 0 8px rgba(214,40,52,.35);}
@keyframes inori-revive-soon{from{opacity:.55}to{opacity:1}}

/* build1727: 鳥居のHPバーは通常の敵と同じ見た目（目盛りなし）。位置だけ鳥居の足元、重なり順だけイノリ本体より前 */
#shooting-event-root .shooting-mini-enemy-hp.inori-torii-hp{z-index:21;opacity:1;}
#shooting-event-root .shooting-mini-enemy-element-icon.inori-torii-icon{z-index:21;}

/* 鈍化：出場中キャラに紫の鎖のような揺らぎ＋画面下に解除方法を表示 */
#shooting-event-root #shooting-player.inori-slowed img{
  filter:drop-shadow(0 0 6px rgba(128,84,174,.95)) saturate(.75) brightness(.92) !important;
}
#shooting-event-root #shooting-player.inori-slowed::after{
  content:"";position:absolute;left:50%;bottom:4px;width:62px;height:16px;transform:translateX(-50%);
  border-radius:50%;border:2px solid rgba(150,100,200,.85);box-shadow:0 0 10px rgba(128,84,174,.8);
  animation:inori-slow-ring 1.1s ease-in-out infinite;pointer-events:none;z-index:3;
}
@keyframes inori-slow-ring{0%,100%{transform:translateX(-50%) scale(.9);opacity:.7;}50%{transform:translateX(-50%) scale(1.08);opacity:1;}}
#shooting-event-root .inori-slow-tag{
  position:absolute;left:50%;bottom:10px;transform:translateX(-50%);z-index:40;pointer-events:none;
  display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:999px;white-space:nowrap;
  background:rgba(48,26,72,.86);border:1px solid rgba(185,139,223,.85);box-shadow:0 0 12px rgba(128,84,174,.5);
  color:#f3e8ff;
}
#shooting-event-root .inori-slow-tag strong{font:700 12px/1 'Noto Serif JP',serif;letter-spacing:.12em;color:#e2c8ff;}
#shooting-event-root .inori-slow-tag span{font:500 10px/1.2 'Noto Serif JP',serif;letter-spacing:.02em;}
@media (prefers-reduced-motion: reduce){
  #shooting-event-root .inori-barrier > i,#shooting-event-root .inori-barrier::before,#shooting-event-root #shooting-player.inori-slowed::after{animation:none;}
}

/* ============================================================
   build1643: BOSSの表示枠を全ステージで統一（基準：CH03-04 リヴィア）
   枠 128×128px（PC幅 142×142px）＋ JS側の --enemy-scale（1.18 × 端末倍率）。
   ステージ別に枠を変えていた指定（律動・カミラ/シエン・無貌の天使・CH04・レイド「テスト」・
   自キャラ基準の差し替え立ち絵など）より優先させるため、IDを重ねて詳細度を上げている。
   ============================================================ */
html body #shooting-event-root #shooting-boss#shooting-boss{
  width:128px!important;height:128px!important;object-fit:contain!important;
}
@media (min-width:700px){
  html body #shooting-event-root #shooting-boss#shooting-boss{width:142px!important;height:142px!important;}
}

/* ============================================================
   build1643: 全ステージ共通 ─ プレイ中に指の追従・タップ判定が途切れる対策
   アリーナ内に後から追加される演出・敵・ギミックDOMがタッチの受け手になると、
   その要素が消えた瞬間（撃破・演出終了など）から指の動きがゲームに届かなくなる。
   戦闘中はアリーナ配下をタッチ対象外にし、常にアリーナ自身が指を受け取るようにする。
   操作が必要なもの（ボタン・パーティ選択・RESULT・交代レール・ポーズ・キャラ詳細・アルノの連打）は除外。
   ============================================================ */
#shooting-event-root.battle-hud-visible #shooting-arena *:not(:is(
  button,
  .shooting-character-select, .shooting-character-select *,
  .shooting-result, .shooting-result *,
  .shooting-switch-rail, .shooting-switch-rail *,
  .shooting-pause-menu, .shooting-pause-menu *,
  .shooting-character-info-modal, .shooting-character-info-modal *,
  .shooting-arno-slash-overlay, .shooting-arno-slash-overlay *
)){
  pointer-events:none!important;
}

/* ============================================================
   build1659 SPECIAL STAGE「樹獣の森」
   ============================================================ */
#shooting-event-root[data-shooting-stage^="shooting_event_verdant_"] .shooting-bg{
  background-image:url('../images/battle_bg_02.webp'),url('../images/battle_bg_01.webp');
  background-size:cover;background-position:center;
}
/* 成長ゲージ（HPバーのすぐ下）。止まっている間は灰色で「成長停止」を示す */
.shooting-mini-enemy-hp.has-verdant-growth{overflow:visible}
.shooting-mini-enemy-hp .verdant-growth-bar{
  position:absolute;left:0;right:0;top:calc(100% + 2px);height:3px;border-radius:2px;
  background:rgba(40,60,30,.35);overflow:hidden;pointer-events:none;
}
.shooting-mini-enemy-hp .verdant-growth-bar b{
  display:block;width:100%;height:100%;transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,#7bd36a,#c9f27a);
}
.shooting-mini-enemy-hp.is-verdant-halted .verdant-growth-bar b{background:linear-gradient(90deg,#9aa39a,#c8cdc8)}
.shooting-mini-enemy-hp.is-verdant-grown .verdant-growth-bar{display:none}
/* 成長した敵：緑の光をまとう */
#shooting-event-root .shooting-mini-enemy.verdant-grown{
  filter:drop-shadow(0 0 6px rgba(120,220,90,.95)) drop-shadow(0 4px 6px rgba(40,70,30,.3));
}
.verdant-grow-pop{
  position:absolute;left:0;top:0;z-index:30;pointer-events:none;white-space:nowrap;
  font:700 13px/1 'Noto Serif JP',serif;letter-spacing:.08em;color:#f2ffe0;
  text-shadow:0 0 4px rgba(40,90,20,.95),0 1px 3px rgba(0,0,0,.6);
  animation:verdantGrowPop 1.1s ease-out forwards;
}
@keyframes verdantGrowPop{0%{opacity:0;translate:0 8px}15%{opacity:1;translate:0 0}80%{opacity:1}100%{opacity:0;translate:0 -14px}} /* build1665: scaleを外す（配置transformまで拡縮して位置がずれていた） */
.zfs-verdant .zfs-verdant-lead{margin:2px 14px 10px;font:500 12px/1.6 'Noto Serif JP',serif;color:#5a6a46;text-align:center;letter-spacing:.03em}
.zss-gimmick-chip.gimmick-verdantCharge b,.zss-gimmick-chip.gimmick-verdantGrowth b{color:#3f6a2c}

/* build1659: 樹獣の女王 — 開花までゲージ（ボスの足元に追従。止まっている間は灰色＝成長停止） */
#shooting-event-root .verdant-boss-growth{
  position:absolute;left:0;top:0;z-index:22;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;gap:2px;width:118px;
}
#shooting-event-root .verdant-boss-growth span{
  font:700 10px/1 'Noto Serif JP',serif;letter-spacing:.14em;color:#f0ffd8;
  text-shadow:0 0 3px rgba(30,70,10,.95),0 1px 2px rgba(0,0,0,.6);
}
#shooting-event-root .verdant-boss-growth i{
  display:block;width:100%;height:5px;border-radius:3px;overflow:hidden;
  background:rgba(30,50,20,.45);box-shadow:0 0 0 1px rgba(200,255,160,.35);
}
#shooting-event-root .verdant-boss-growth b{
  display:block;width:100%;height:100%;transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,#6fcf5e,#d8f77a,#ffd2ea);
}
#shooting-event-root .verdant-boss-growth.is-halted b{background:linear-gradient(90deg,#9aa39a,#cfd4cf)}
#shooting-event-root .verdant-boss-growth.is-halted span::after{content:' 停止中';color:#e9e9e9}
/* 開花後：緑と桃色の光 */
#shooting-event-root #shooting-boss.verdant-bloomed{
  filter:drop-shadow(0 0 10px rgba(140,230,100,.85)) drop-shadow(0 0 18px rgba(255,170,210,.45));
}

/* ============================================================
   build1660: 戦闘中の表示専用HUD（BOSS名・HPバー・PHASE・タイマー・ミッション）はタッチを素通しする。
   これらはアリーナの上に重なっているが、アリーナの外の要素なので、ここに指を置くと
   移動・射撃の入力が始まらなかった（BOSS戦＝塔・レイド・位相回遊で画面上部が反応しない）。
   ============================================================ */
#shooting-event-root.battle-hud-visible :is(.shooting-boss-hud, .shooting-battle-timer, .shooting-mission-hud),
#shooting-event-root.battle-hud-visible :is(.shooting-boss-hud, .shooting-battle-timer, .shooting-mission-hud) *{
  pointer-events:none!important;
}

/* ============================================================
   build1663: 樹獣の森 — 成長の実
   熟すほど大きく・明るくなり、熟す直前は脈打つ。熟すと女王へ蔓が伸びて吸い上げられる。
   ============================================================ */
#shooting-event-root .shooting-mini-enemy.verdant-seed{
  filter:drop-shadow(0 0 calc(3px + var(--seed-ripe,0) * 9px) rgba(150,235,90,.95)) saturate(calc(1 + var(--seed-ripe,0) * .6));
}
#shooting-event-root .shooting-mini-enemy.verdant-seed.is-ripening{animation:verdantSeedPulse .42s ease-in-out infinite alternate}
@keyframes verdantSeedPulse{from{filter:drop-shadow(0 0 8px rgba(170,245,100,.95)) brightness(1)}to{filter:drop-shadow(0 0 16px rgba(255,240,140,1)) brightness(1.35)}}
#shooting-event-root .verdant-seed-vine{
  position:absolute;left:0;top:0;z-index:13;height:4px;margin-top:-2px;transform-origin:0 50%;pointer-events:none;border-radius:2px;
  background:linear-gradient(90deg,rgba(200,255,140,.95),rgba(70,150,50,.9));
  box-shadow:0 0 8px rgba(150,235,90,.9);
  animation:verdantVine .5s ease-out forwards;
}
@keyframes verdantVine{0%{clip-path:inset(0 100% 0 0);opacity:1}45%{clip-path:inset(0 0 0 0);opacity:1}100%{clip-path:inset(0 0 0 0);opacity:0}}
.zss-gimmick-chip.gimmick-verdantSeed b{color:#3f6a2c}

/* build1664: ポーズメニューのボタンは hidden 属性で確実に消す（.shooting-pause-action の display:block が hidden を上書きしていた） */
#shooting-event-root .shooting-pause-action[hidden]{display:none!important}

/* build1665: 成長の実のゲージ（通常の雑魚より太く目立つHPバー＋その下に「熟すまで」バー） */
#shooting-event-root .shooting-mini-enemy-hp.verdant-seed-hp{
  width:64px;height:8px;border:1px solid rgba(70,110,40,.75);background:rgba(250,255,240,.92);
  box-shadow:0 0 6px rgba(150,235,90,.75);opacity:1;overflow:visible;
}
#shooting-event-root .shooting-mini-enemy-hp.verdant-seed-hp > i{background:linear-gradient(90deg,#5fae3d,#b9e35a)}
#shooting-event-root .verdant-seed-hp .verdant-seed-ripe{
  position:absolute;left:-1px;right:-1px;top:calc(100% + 3px);height:4px;border-radius:2px;overflow:hidden;
  background:rgba(60,50,30,.28);
}
#shooting-event-root .verdant-seed-hp .verdant-seed-ripe b{
  display:block;width:100%;height:100%;transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,#f0c24a,#e46a2e);
}
#shooting-event-root .verdant-seed-hp.is-ripening .verdant-seed-ripe b{animation:verdantSeedRipeBlink .3s steps(2) infinite}
@keyframes verdantSeedRipeBlink{50%{filter:brightness(1.6)}}
#shooting-event-root .verdant-seed-hp .verdant-seed-label{
  position:absolute;left:50%;bottom:calc(100% + 2px);transform:translateX(-50%);white-space:nowrap;
  font:700 9px/1 'Noto Serif JP',serif;font-style:normal;letter-spacing:.08em;color:#f4ffe4;
  text-shadow:0 0 3px rgba(30,70,10,.95),0 1px 2px rgba(0,0,0,.6);
}

/* ============================================================
   build1666: 軽量化（樹獣の森・最上級で重くなる対策）
   ============================================================ */
/* 開花した女王：光の重ねがけ（2重の影フィルター）をやめて1つに */
#shooting-event-root #shooting-boss.verdant-bloomed{
  filter:drop-shadow(0 0 9px rgba(140,230,100,.75));
}
/* 成長した配下：影フィルターを小さく */
#shooting-event-root .shooting-mini-enemy.verdant-grown{
  filter:drop-shadow(0 0 4px rgba(120,220,90,.9));
}
/* グレシャ「焼野原」（全ステージ共通）：
   ぼかしをかけた層を拡縮アニメしていたため、毎フレームぼかしを描き直していた。
   拡縮をやめて不透明度だけのアニメに。1秒ごとの「全体を明るくする」フィルターも、光の層の不透明度で代用 */
html body #shooting-event-root .shooting-gresha-burn-field .gresha-burn-glow{
  animation:greshaBurnGlowLite 1.15s ease-in-out infinite alternate!important;
  will-change:opacity;
}
@keyframes greshaBurnGlowLite{from{opacity:.62}to{opacity:1}}
html body #shooting-event-root .shooting-gresha-burn-field.tick{
  filter:none!important;
}
html body #shooting-event-root .shooting-gresha-burn-field.tick .gresha-burn-glow{
  animation:none!important;opacity:1!important;
}
html body #shooting-event-root .shooting-gresha-burn-field .gresha-ember{
  box-shadow:none!important;
  background:radial-gradient(circle,#fff0c4 0 35%,rgba(255,140,60,.85) 60%,transparent 72%)!important;
  width:7px!important;height:7px!important;
}


/* ============================================================
   build1675 — ULTカットイン刷新（全キャラ共通）
   ・属性色の暗幕＋集中線＋斜めの帯2本の上に、カットイン画像が右から滑り込む
   ・ULT名は画面の中央付近（帯の下端に重ねる）に大きく。字間が詰まりながら現れる
   ・小見出し「ULTIMATE」・キャラ名・属性色のライン
   ・時間（約1秒）と停止の仕組みは従来どおり。アニメーションは transform / opacity / letter-spacing のみ
   ============================================================ */
#shooting-event-root .shooting-ult-cutin.uc-v2{
  background:none;
  --uc-rgb:var(--ult-element-rgb,244,239,227);
}
#shooting-event-root .shooting-ult-cutin.uc-v2::before{content:none}
#shooting-event-root .uc-v2 .uc-bg{
  position:absolute;inset:0;z-index:0;
  background:
    radial-gradient(ellipse 80% 46% at 50% 44%,rgba(var(--uc-rgb),.42),rgba(var(--uc-rgb),.10) 55%,transparent 75%),
    linear-gradient(180deg,rgba(10,9,16,.74),rgba(14,12,22,.58) 45%,rgba(8,7,14,.80));
  animation:ucBgIn .14s ease-out both;
}
#shooting-event-root .uc-v2 .uc-lines{
  position:absolute;left:-50%;top:-50%;width:200%;height:200%;z-index:1;
  background:repeating-conic-gradient(from 0deg at 50% 50%,
    rgba(255,255,255,0) 0deg 5deg,rgba(255,255,255,.20) 5deg 5.5deg,rgba(255,255,255,0) 5.5deg 9deg,
    rgba(var(--uc-rgb),.26) 9deg 9.4deg);
  -webkit-mask-image:radial-gradient(circle at 50% 50%,transparent 0 17%,#000 34%);
  mask-image:radial-gradient(circle at 50% 50%,transparent 0 17%,#000 34%);
  opacity:.75;
  transform-origin:50% 50%;
  animation:ucLines 1.1s linear both;
}
#shooting-event-root .uc-v2 .uc-band,
#shooting-event-root .uc-v2 .uc-band2{
  position:absolute;left:-12%;width:124%;pointer-events:none;
  transform-origin:0 50%;
}
#shooting-event-root .uc-v2 .uc-band{
  z-index:2;top:21%;height:44%;
  background:linear-gradient(90deg,rgba(var(--uc-rgb),.10),rgba(255,255,255,.16) 30%,rgba(var(--uc-rgb),.26) 62%,rgba(var(--uc-rgb),.06));
  border-top:2px solid rgba(var(--uc-rgb),.95);
  border-bottom:2px solid rgba(var(--uc-rgb),.95);
  box-shadow:0 0 18px rgba(var(--uc-rgb),.55),inset 0 0 40px rgba(var(--uc-rgb),.22);
  transform:skewY(-5deg) scaleX(0);
  animation:ucBandIn .2s cubic-bezier(.2,.9,.25,1) .02s forwards;
}
#shooting-event-root .uc-v2 .uc-band2{
  z-index:1;top:17.5%;height:51%;
  border-top:1px solid rgba(255,255,255,.55);
  border-bottom:1px solid rgba(255,255,255,.55);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.05) 40%,transparent);
  transform:skewY(-5deg) scaleX(0);transform-origin:100% 50%;
  animation:ucBandIn .24s cubic-bezier(.2,.9,.25,1) .07s forwards;
}
/* カットイン画像は16:9の一枚絵。帯と同じ傾きの平行四辺形に切り抜き、高さ40%いっぱいに大きく表示（左右を少しだけ切る） */
#shooting-event-root .uc-v2 .shooting-ult-cutin-image{
  z-index:3;left:0;top:23%;
  width:100%;height:40%;max-width:none;max-height:none;
  object-fit:cover;object-position:42% 40%;
  -webkit-clip-path:polygon(0 12%,100% 0,100% 88%,0 100%);
  clip-path:polygon(0 12%,100% 0,100% 88%,0 100%);
  opacity:0;
  animation:ucImageIn 1s cubic-bezier(.16,.84,.24,1) .04s both;
}
#shooting-event-root .uc-v2 .shooting-ult-cutin-flash{
  z-index:4;
  background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.75) 48%,rgba(var(--uc-rgb),.25) 56%,transparent 66%);
  animation:shootingUltCutinFlash .55s ease-out .12s both;
}
#shooting-event-root .uc-v2 .shooting-ult-cutin-label{
  z-index:5;left:14px;right:14px;top:66%;bottom:auto;
  align-items:center;gap:0;text-align:center;
  text-shadow:none;animation:none;
}
#shooting-event-root .uc-v2 .uc-kicker{
  display:flex;align-items:center;gap:10px;
  font-family:"Cinzel","Times New Roman",serif;font-size:11px;font-weight:700;
  letter-spacing:.42em;padding-left:.42em;color:rgba(255,255,255,.92);
  text-shadow:0 0 8px rgba(var(--uc-rgb),.9);
  opacity:0;animation:ucFade .22s ease-out .14s forwards;
}
#shooting-event-root .uc-v2 .uc-kicker::before,
#shooting-event-root .uc-v2 .uc-kicker::after{
  content:"";width:34px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(var(--uc-rgb),1));
}
#shooting-event-root .uc-v2 .uc-kicker::after{background:linear-gradient(90deg,rgba(var(--uc-rgb),1),transparent)}
#shooting-event-root .uc-v2 .shooting-ult-cutin-label strong{
  margin-top:6px;
  font-family:"Noto Serif JP",serif;font-weight:700;line-height:1.15;
  color:#fff;letter-spacing:.12em;
  text-shadow:
    0 0 2px rgba(255,255,255,.9),
    0 0 14px rgba(var(--uc-rgb),.95),
    0 0 30px rgba(var(--uc-rgb),.6),
    0 3px 8px rgba(0,0,0,.65);
  opacity:0;
  animation:ucNameIn .34s cubic-bezier(.2,.9,.3,1) .16s forwards;
}
#shooting-event-root .uc-v2 .uc-who{
  margin-top:7px;font-style:normal;
  font-family:"Noto Serif JP",serif;font-size:12px;letter-spacing:.3em;padding-left:.3em;
  color:rgba(255,255,255,.85);text-shadow:0 1px 6px rgba(0,0,0,.6);
  opacity:0;animation:ucFade .25s ease-out .3s forwards;
}
#shooting-event-root .uc-v2 .uc-who::before{content:"— "}
#shooting-event-root .uc-v2 .uc-who::after{content:" —"}
#shooting-event-root .uc-v2 .uc-rule{
  display:block;margin-top:8px;width:min(260px,72%);height:2px;
  background:linear-gradient(90deg,transparent,rgba(var(--uc-rgb),1) 30%,#fff 50%,rgba(var(--uc-rgb),1) 70%,transparent);
  box-shadow:0 0 10px rgba(var(--uc-rgb),.85);
  transform:scaleX(0);animation:ucRule .3s cubic-bezier(.2,.9,.3,1) .22s forwards;
}
/* 退場：帯と画像が左へ抜ける */
#shooting-event-root .shooting-ult-cutin.uc-v2.out{transition:opacity .12s ease-in}
#shooting-event-root .uc-v2.out .uc-band,
#shooting-event-root .uc-v2.out .uc-band2,
#shooting-event-root .uc-v2.out .shooting-ult-cutin-image,
#shooting-event-root .uc-v2.out .shooting-ult-cutin-label{
  translate:-36px 0;transition:translate .12s ease-in;
}
@keyframes ucBgIn{from{opacity:0}to{opacity:1}}
@keyframes ucLines{from{transform:rotate(0deg) scale(1.08);opacity:0}15%{opacity:.75}to{transform:rotate(7deg) scale(1);opacity:.6}}
@keyframes ucBandIn{to{transform:skewY(-5deg) scaleX(1)}}
@keyframes ucImageIn{
  0%{opacity:0;transform:translateX(70px) scale(1.06)}
  22%{opacity:1;transform:translateX(0) scale(1.03)}
  100%{opacity:1;transform:translateX(-10px) scale(1)}
}
@keyframes ucNameIn{
  0%{opacity:0;letter-spacing:.7em;transform:scale(1.12)}
  60%{opacity:1}
  100%{opacity:1;letter-spacing:.12em;transform:scale(1)}
}
@keyframes ucRule{to{transform:scaleX(1)}}
@keyframes ucFade{to{opacity:1}}
@media (min-width:700px){
  #shooting-event-root .uc-v2 .uc-kicker{font-size:13px}
  #shooting-event-root .uc-v2 .uc-who{font-size:14px}
}


/* ============================================================
   build1716 — BATTLE END TEXT READABILITY
   クリア条件達成 / STAGE CLEAR / ABORT MISSION の細い茶文字が
   背景に溶けていたため、暗い帯＋白〜金の太字＋縁取りで常に読めるようにする。
   ============================================================ */
#shooting-event-root .shooting-clear-condition-achieved{
  padding:22px 0 !important;
  background:linear-gradient(90deg,rgba(14,10,6,0) 0%,rgba(14,10,6,.62) 16%,rgba(14,10,6,.74) 50%,rgba(14,10,6,.62) 84%,rgba(14,10,6,0) 100%) !important;
}
#shooting-event-root .shooting-clear-condition-achieved-line{
  height:2px !important;
  background:linear-gradient(90deg,transparent,rgba(255,224,150,.95)) !important;
  box-shadow:0 0 8px rgba(255,206,110,.55);
}
#shooting-event-root .shooting-clear-condition-achieved-copy strong,
#shooting-event-root .shooting-clear-condition-achieved.condition-phase strong{
  color:#fff8ea !important;
  font-weight:700 !important;
  -webkit-text-stroke:.6px rgba(40,26,10,.85);
  text-shadow:0 2px 0 rgba(30,18,6,.95),0 0 3px rgba(0,0,0,.9),0 0 14px rgba(255,214,130,.55) !important;
}
#shooting-event-root .shooting-clear-condition-achieved.stage-clear-phase strong{
  color:#ffe7a6 !important;
  font-weight:700 !important;
  -webkit-text-stroke:.8px rgba(50,30,6,.9);
  text-shadow:0 2px 0 rgba(40,22,4,.95),0 0 4px rgba(0,0,0,.9),0 0 16px rgba(255,196,80,.75),0 0 30px rgba(255,170,40,.4) !important;
}

#shooting-event-root .shooting-abort-mission-copy{
  color:#fff4e2 !important;
  font-weight:700 !important;
  padding:16px 56px;
  background:linear-gradient(90deg,rgba(14,10,6,0) 0%,rgba(14,10,6,.72) 22%,rgba(14,10,6,.78) 50%,rgba(14,10,6,.72) 78%,rgba(14,10,6,0) 100%);
  -webkit-text-stroke:.6px rgba(40,26,10,.85);
  text-shadow:0 2px 0 rgba(30,18,6,.95),0 0 3px rgba(0,0,0,.9),0 0 14px rgba(255,190,120,.5) !important;
}

/* build1716 — ハオULTの魔法陣（トリガー）は敵(9)・敵弾(11)より下に敷く */
#shooting-event-root #shooting-arena .shooting-hao-trigger,
#shooting-event-root #shooting-arena .shooting-hao-trigger-burst{
  z-index:8 !important;
}

/* ============================================================
   build1723 — COMBO下のダメージ上昇表示を控えめに
   箱をやめて小さな文字だけ。段階が上がった瞬間だけ金色にふくらむ。
   0%のときは場所だけ確保して見せない。
   ============================================================ */
html body #shooting-event-root .shooting-combo .shooting-combo-bonus{
  display:block;min-height:11px;margin-top:3px;padding:0 2px 0 0;
  font:600 10px/1.1 'Cinzel','Noto Serif JP',serif;font-style:normal;letter-spacing:.1em;
  color:#8a6a3a;text-align:right;
  background:none;border:0;
  text-shadow:var(--hud-halo,0 0 2px #fff,0 0 4px rgba(255,255,255,.95));
  transform-origin:right center;pointer-events:none;
}
html body #shooting-event-root .shooting-combo .shooting-combo-bonus.is-zero{visibility:hidden;}
html body #shooting-event-root .shooting-combo .shooting-combo-bonus.is-up{animation:comboBonusUp .9s ease-out;}
@keyframes comboBonusUp{
  0%{transform:scale(1.35);color:#b8860b;text-shadow:0 0 2px #fff,0 0 6px rgba(255,255,255,.95),0 0 12px rgba(255,200,80,.95)}
  60%{color:#a07a1f}
  100%{transform:scale(1);color:#8a6a3a}
}

/* build1724 — 自機画像の差し替え中は前の画像（初期のエリ等）を見せない */
#shooting-event-root #shooting-player-image.is-image-pending{visibility:hidden !important;}

/* ============================================================
   build1731 — ナイトシェード
   CLUSTER(O)：着弾した敵を囲む円が中心へ縮む（追撃弾の軌道を見せる）
   ULT：直線の狙撃弾（曳光線）＋命中した敵にレティクル
   親要素の transform は positionUnit が使うため、アニメは子要素だけで行う。
   ============================================================ */
#shooting-event-root .shooting-cluster-ring-fx{
  position:absolute;left:0;top:0;width:var(--ring-size,128px);height:var(--ring-size,128px);
  pointer-events:none;z-index:16;
}
#shooting-event-root .shooting-cluster-ring-fx i{
  position:absolute;inset:0;border-radius:50%;
  border:1.5px solid rgba(var(--bomb-rgb,168,96,220),.85);
  box-shadow:0 0 8px rgba(var(--bomb-rgb,168,96,220),.55),inset 0 0 8px rgba(var(--bomb-rgb,168,96,220),.35);
  animation:ns-ring-close var(--ring-ms,280ms) cubic-bezier(.5,0,.9,.6) forwards;
}
@keyframes ns-ring-close{
  0%{transform:scale(1.08);opacity:0}
  18%{transform:scale(1);opacity:1}
  100%{transform:scale(.12);opacity:.15}
}
#shooting-event-root .shooting-cluster-ring-fragment{
  filter:drop-shadow(0 0 3px rgba(var(--bomb-rgb,168,96,220),.9));
}

#shooting-event-root .shooting-nightshade-tracer{
  position:absolute;width:0;height:0;pointer-events:none;z-index:18;
  transform:rotate(var(--ns-angle,-90deg));transform-origin:0 0;
}
#shooting-event-root .shooting-nightshade-tracer .ns-trail{
  position:absolute;left:0;top:-3px;height:6px;width:var(--ns-len,900px);
  background:linear-gradient(90deg,rgba(255,170,240,.0),rgba(214,120,255,.75) 8%,rgba(255,230,255,.95) 40%,rgba(196,96,255,.0));
  border-radius:3px;filter:blur(.4px) drop-shadow(0 0 6px rgba(200,90,255,.9));
  transform-origin:0 50%;animation:ns-trail .62s ease-out forwards;
}
#shooting-event-root .shooting-nightshade-tracer .ns-core{
  position:absolute;left:0;top:-1px;height:2px;width:var(--ns-len,900px);background:#fff;
  transform-origin:0 50%;animation:ns-core .34s ease-out forwards;
}
#shooting-event-root .shooting-nightshade-tracer .ns-muzzle{
  position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,rgba(255,200,255,.9) 30%,rgba(196,96,255,0) 70%);
  animation:ns-muzzle .3s ease-out forwards;
}
@keyframes ns-trail{0%{transform:scaleX(0);opacity:1}18%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1) scaleY(.2);opacity:0}}
@keyframes ns-core{0%{transform:scaleX(0);opacity:1}25%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
@keyframes ns-muzzle{0%{transform:scale(.4);opacity:1}100%{transform:scale(1.6);opacity:0}}

#shooting-event-root .shooting-nightshade-impact{
  position:absolute;left:0;top:0;width:76px;height:76px;pointer-events:none;z-index:19;
}
#shooting-event-root .shooting-nightshade-impact .ns-reticle{
  position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,214,255,.95);
  box-shadow:0 0 10px rgba(196,96,255,.85);
  background:
    linear-gradient(rgba(255,230,255,.95),rgba(255,230,255,.95)) 50% 0/2px 22% no-repeat,
    linear-gradient(rgba(255,230,255,.95),rgba(255,230,255,.95)) 50% 100%/2px 22% no-repeat,
    linear-gradient(rgba(255,230,255,.95),rgba(255,230,255,.95)) 0 50%/22% 2px no-repeat,
    linear-gradient(rgba(255,230,255,.95),rgba(255,230,255,.95)) 100% 50%/22% 2px no-repeat;
  animation:ns-reticle .74s ease-out forwards;
}
#shooting-event-root .shooting-nightshade-impact .ns-burst{
  position:absolute;inset:22%;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,rgba(230,150,255,.9) 35%,rgba(150,60,220,0) 72%);
  animation:ns-burst .5s ease-out forwards;
}
@keyframes ns-reticle{0%{transform:scale(1.6) rotate(45deg);opacity:0}25%{transform:scale(1) rotate(0);opacity:1}100%{transform:scale(.9);opacity:0}}
@keyframes ns-burst{0%{transform:scale(.3);opacity:1}100%{transform:scale(2.1);opacity:0}}

/* ============================================================
   build1733 — ナイトシェードULT「乱射」
   時間停止オーバーレイ（z88）より前に、細く速い弾道＋小さな着弾。銃口の閃光。
   ============================================================ */
#shooting-event-root .shooting-nightshade-tracer.is-pellet{z-index:89;}
#shooting-event-root .shooting-nightshade-tracer.is-pellet .ns-trail{
  top:-1.5px;height:3px;
  background:linear-gradient(90deg,rgba(255,200,250,.0),rgba(220,140,255,.7) 25%,rgba(255,240,255,.95) 85%,#fff);
  filter:drop-shadow(0 0 4px rgba(200,90,255,.85));
  animation:ns-pellet-trail .34s ease-out forwards;
}
#shooting-event-root .shooting-nightshade-tracer.is-pellet .ns-core{
  top:-.5px;height:1px;animation:ns-pellet-core .22s ease-out forwards;
}
@keyframes ns-pellet-trail{0%{transform:scaleX(0);opacity:1}35%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0;clip-path:inset(0 0 0 70%)}}
@keyframes ns-pellet-core{0%{transform:scaleX(0);opacity:1}45%{transform:scaleX(1);opacity:.9}100%{transform:scaleX(1);opacity:0}}
#shooting-event-root .shooting-nightshade-impact.is-pellet{width:34px;height:34px;z-index:89;}
#shooting-event-root .shooting-nightshade-impact.is-pellet .ns-burst{inset:0;animation:ns-burst .38s ease-out .06s both;}
#shooting-event-root .shooting-nightshade-muzzle{
  position:absolute;left:0;top:0;width:46px;height:46px;pointer-events:none;z-index:89;
}
#shooting-event-root .shooting-nightshade-muzzle i{
  position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,rgba(255,215,255,.95) 25%,rgba(200,100,255,.55) 50%,rgba(150,60,220,0) 72%);
  animation:ns-muzzle .24s ease-out forwards;
}

/* ============================================================
   build1734 — ナイトシェード CLUSTER(O)：命中した敵の周りを1周するエナジーサークル
   親要素の transform は positionUnit（敵に追従）が使うため、回転は子要素で行う。
   ============================================================ */
#shooting-event-root .shooting-ns-spin-ring{
  position:absolute;left:0;top:0;width:var(--ring-size,280px);height:var(--ring-size,280px);
  pointer-events:none;z-index:16;
}
#shooting-event-root .shooting-ns-spin-ring .ns-ring-base{
  position:absolute;inset:0;border-radius:50%;
  border:1.5px solid rgba(var(--bomb-rgb,128,84,174),.45);
  box-shadow:0 0 10px rgba(var(--bomb-rgb,128,84,174),.35),inset 0 0 18px rgba(var(--bomb-rgb,128,84,174),.22);
  animation:ns-ring-in .16s ease-out both;
}
/* 回る光の弧（彗星の尾）＋先頭の光球 */
#shooting-event-root .shooting-ns-spin-ring .ns-ring-spin{
  position:absolute;inset:-3px;border-radius:50%;
  background:conic-gradient(from 0deg,rgba(var(--bomb-rgb,128,84,174),0) 0deg,rgba(var(--bomb-rgb,128,84,174),0) 150deg,
    rgba(180,110,255,.55) 260deg,rgba(225,170,255,.9) 330deg,#fff 357deg,rgba(var(--bomb-rgb,128,84,174),0) 360deg);
  -webkit-mask:radial-gradient(circle,transparent calc(50% - 11px),#000 calc(50% - 10px),#000 calc(50% - 1px),transparent 50%);
          mask:radial-gradient(circle,transparent calc(50% - 11px),#000 calc(50% - 10px),#000 calc(50% - 1px),transparent 50%);
  filter:drop-shadow(0 0 8px rgba(200,110,255,.95)) drop-shadow(0 0 2px rgba(255,255,255,.9));
  animation:ns-ring-spin var(--spin-ms,560ms) cubic-bezier(.35,.05,.45,1) forwards;
}
#shooting-event-root .shooting-ns-spin-ring .ns-ring-spin b{
  position:absolute;left:50%;top:0;width:14px;height:14px;margin:-4px 0 0 -7px;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,#ffe6ff 35%,rgba(200,110,255,.0) 72%);
  transform-origin:7px calc(var(--ring-size,280px) / 2 + 7px);
}
#shooting-event-root .shooting-ns-spin-ring .ns-ring-spin b:nth-child(2){transform:rotate(120deg);opacity:.75;width:10px;height:10px;margin-left:-5px;transform-origin:5px calc(var(--ring-size,280px) / 2 + 5px);}
#shooting-event-root .shooting-ns-spin-ring .ns-ring-spin b:nth-child(3){transform:rotate(240deg);opacity:.75;width:10px;height:10px;margin-left:-5px;transform-origin:5px calc(var(--ring-size,280px) / 2 + 5px);}
@keyframes ns-ring-in{0%{transform:scale(.55);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes ns-ring-spin{
  0%{transform:rotate(0deg) scale(.7);opacity:0}
  12%{opacity:1;transform:rotate(calc(40deg * var(--spin-dir,1))) scale(1)}
  100%{transform:rotate(calc(360deg * var(--spin-dir,1))) scale(1);opacity:1}
}
#shooting-event-root .shooting-ns-spin-ring.is-ending{transition:opacity .18s ease-out;opacity:0;}
#shooting-event-root .shooting-ns-spin-ring.is-ending .ns-ring-base{animation:none;transform:scale(1.08);transition:transform .18s ease-out;}
