/* Fortress visibility v17. Load after v16 paint and layout sheets.
   Paint only: no dimensions, DOM, event, timers, API calls or hit layers.
   Existing UI16 WebP/SVG masters are reused without raster modification. */
:root {
  --ui17-ink:#fff7e5;
  --ui17-muted:#d6ddd5;
  --ui17-edge:#d4e5dc;
  --ui17-gold:#ffe1a0;
  --ui17-ready:#c7ffe4;
  --ui17-tone-a:rgba(53,93,115,.78);
  --ui17-tone-b:rgba(21,41,58,.74);
  --ui17-light:rgba(244,255,237,.16);
  --ui17-shadow:inset 0 0 0 1px #d4e5dcb3,inset 0 2px 0 #f7f1d54d,inset 0 -3px 0 #02091266,0 3px 0 #050d16,0 6px 10px #02070b8c;
}
body .game-viewport[data-layout][data-title-lobby-v15] button:not(.hero-detail):not(.advice-copy):not(.lobby-nav button),
body #detail-dialog button,
body .game-viewport[data-layout][data-title-lobby-v15] a.mode-card,
body.game-interface[data-button-quality='v15'] :is(button,.lobby-link,.login-notice a):not(.thumb-skill):not(.thumb-auto):not(.virtual-joystick),
body :is(.locale-picker-option,.locale-load-retry button) {
  --ui17-face:linear-gradient(180deg,var(--ui17-light),transparent 38%,rgba(0,7,15,.12)),linear-gradient(135deg,var(--ui17-tone-a),var(--ui17-tone-b)),var(--ui16-button-material);
  background-image:var(--ui17-face)!important;
  background-color:#223e51!important;
  color:var(--ui17-ink)!important;
  opacity:1!important;
  filter:none!important;
  text-shadow:0 1px 1px #040b13,0 2px 3px #040b1399;
  box-shadow:var(--ui17-shadow)!important;
  transition:box-shadow 120ms ease,color 120ms ease;
}
body .game-viewport[data-layout][data-title-lobby-v15] :is(.start-cta,.solo-button),
body #detail-dialog .dialog-button:not(.secondary):not(.danger):not(.ui15-action-row),
body.game-interface[data-button-quality='v15'] :is(#battle-start,#battle-retry,#test-start,#test-quick-start,#result-restart) {
  --ui17-tone-a:rgba(159,52,43,.86);
  --ui17-tone-b:rgba(83,18,31,.88);
  --ui17-light:rgba(255,226,168,.12);
  --ui17-shadow:inset 0 0 0 1px #ffe1a0e6,inset 0 2px 0 #fff0c46b,inset 0 -4px 0 #2a081394,0 3px 0 #280a14,0 0 16px #ec986229,0 7px 12px #02070b8c;
  box-shadow:var(--ui17-shadow)!important;
}
body .game-viewport[data-layout][data-title-lobby-v15] :is(.coop-button,.title-sign-in),
body #detail-dialog .dialog-button.secondary,
body.game-interface[data-button-quality='v15'] :is(#battle-sync,#battle-return,.lobby-link,.login-notice a) {
  --ui17-tone-a:rgba(28,112,111,.8);
  --ui17-tone-b:rgba(11,59,69,.82);
  --ui17-shadow:inset 0 0 0 1px #c7ffe4b3,inset 0 2px 0 #e4ffec4d,inset 0 -3px 0 #061c286b,0 3px 0 #051722,0 6px 10px #02070b8c;
  box-shadow:var(--ui17-shadow)!important;
}
body .game-viewport[data-layout][data-title-lobby-v15] .mode-card small {
  color:#eee2c9!important;
  text-shadow:0 1px 2px #040b13;
}
body #detail-dialog :is(.dialog-button.danger,.destructive,[data-action='logout'],[data-action='room-leave']),
body.game-interface[data-button-quality='v15'] #battle-confirm-accept-v15 {
  --ui17-tone-a:rgba(116,44,53,.88);
  --ui17-tone-b:rgba(59,24,43,.88);
  color:#ffe6de!important;
}
/* Selection is also drawn as two solid bars, not merely a hue shift. */
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button:is([aria-pressed='true'],[aria-expanded='true'],.selected),
body.game-interface[data-button-quality='v15'] button:is([aria-pressed='true'],[aria-expanded='true'],.selected):not(.thumb-auto):not(.thumb-skill) {
  --ui17-tone-a:rgba(66,106,84,.88)!important;
  --ui17-tone-b:rgba(23,55,57,.85)!important;
  color:#fffbe8!important;
  --ui17-shadow:inset 3px 0 0 #ffe1a0,inset 0 -4px 0 #ffe1a0,inset 0 1px 0 #fff3cd85,0 3px 0 #050e18,0 0 12px #eedbb52b!important;
  box-shadow:var(--ui17-shadow)!important;
}
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button:disabled,
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button[aria-disabled='true'],
body .game-viewport[data-layout][data-title-lobby-v15] .mode-card[aria-disabled='true'],
body.game-interface[data-button-quality='v15'] button:is(:disabled,[aria-disabled='true']):not(.thumb-auto):not(.thumb-skill) {
  --ui17-tone-a:rgba(46,58,67,.87)!important;
  --ui17-tone-b:rgba(22,34,45,.86)!important;
  --ui17-light:rgba(224,236,224,.1)!important;
  color:var(--ui17-muted)!important;
  opacity:1!important;
  filter:none!important;
  --ui17-shadow:inset 0 0 0 1px #a5b2ae85,inset 0 -2px 0 #09121a,0 2px 0 #050c14!important;
  box-shadow:var(--ui17-shadow)!important;
}
body #detail-dialog[data-ui15-navigation] button.ui15-action-row:disabled {
  color:var(--ui17-muted)!important;
}
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button[aria-busy='true'],
body.game-interface[data-button-quality='v15'] button[aria-busy='true']:not(.thumb-auto):not(.thumb-skill) {
  --ui17-shadow:inset 0 0 0 2px #c7ffe4,inset 0 -4px 0 #c7ffe4,0 3px 0 #07121a,0 0 12px #b9eedb40!important;
  box-shadow:var(--ui17-shadow)!important;
}
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button:focus-visible,
body.game-interface[data-button-quality='v15'] :is(button,.lobby-link,.virtual-joystick):focus-visible {
  outline:3px solid #fff1bd!important;
  outline-offset:3px;
}
/* Press feedback uses a recessed face and lit lower edge. No transform or
   filtered whole-button text can reduce readability or move the target. */
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button:active:not(:disabled):not([aria-disabled='true']),
body.game-interface[data-button-quality='v15'] :is(button,.lobby-link):active:not(:disabled):not(.thumb-auto):not(.thumb-skill) {
  --ui17-light:rgba(244,255,237,.05)!important;
  --ui17-shadow:inset 0 4px 9px #020811b3,inset 0 -2px 0 #ffe1a0cc,inset 1px 0 0 #d4e5dc,0 1px 0 #050d16!important;
  box-shadow:var(--ui17-shadow)!important;
  color:#fffbea!important;
  filter:none!important;
}
body .game-viewport[data-layout][data-title-lobby-v15] .lobby-nav {
  background:linear-gradient(180deg,#385360,#18303e 62%,#102333)!important;
  border-top-color:#ffe1a0;
  box-shadow:inset 0 1px #fff0bda6,0 -3px 16px #02070b8c;
}
body .game-viewport[data-layout][data-title-lobby-v15] .lobby-nav button {
  opacity:1!important;
  filter:none!important;
  color:#fff5df!important;
  background:linear-gradient(180deg,#94bcc528,#07132010)!important;
  box-shadow:inset -1px 0 #e0ebcf29;
  text-shadow:0 1px 2px #040b13;
}
body .game-viewport[data-layout][data-title-lobby-v15] .lobby-nav button[aria-current],
body .game-viewport[data-layout][data-title-lobby-v15] .lobby-nav button[aria-selected='true'] {
  background:linear-gradient(180deg,#496858,#233f48)!important;
  color:#fffbe8!important;
  box-shadow:inset 0 3px #ffe1a0,inset 0 -4px #ffe1a0,inset 1px 0 #e7e7bd42;
}
body .game-viewport[data-layout][data-title-lobby-v15] .lobby-nav button > svg.icon {
  filter:brightness(1.22) drop-shadow(0 1px 0 #fff0a866) drop-shadow(0 2px 2px #030911b3);
}
body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) :is(button>.icon,button .ui15-row-icon) {
  filter:brightness(1.16) drop-shadow(0 1px 0 #fff0bd66) drop-shadow(0 2px 2px #02090fb8);
}
/* Circular controls have their own paint; rectangular common rules never
   cover them or the joystick's transparent corners. Labels stay unfiltered. */
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto) {
  color:#fff9e9!important;
  opacity:1!important;
  filter:none!important;
  box-shadow:inset 0 0 0 2px #e6d5a2,inset 0 -3px 5px #02091366,0 4px 0 #02070b99,0 5px 10px #0008!important;
}
/* The compact leaf labels can cross the illustrated inner bevel. Keep a
   local ink backing beneath labels while leaving the circular rim exposed. */
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto) > :is(strong,small) {
  background-color:#0c2332e6;
  border-radius:3px;
  box-shadow:0 0 0 2px #0c2332e6;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto)::before {
  background-image:radial-gradient(circle,rgba(22,67,89,.52) 0,rgba(14,40,56,.22) 58%,transparent 59%),var(--ui16-control-material),var(--ui16-control-ring);
  filter:brightness(1.18);
  opacity:1;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions .thumb-skill[data-skill-state='ready'],
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions .thumb-auto[aria-pressed='true'] {
  color:#fffbea!important;
  box-shadow:inset 0 0 0 3px #c7ffe4,inset 0 -3px 0 #ecf7bc,0 0 17px #b3efcb66,0 5px 9px #0008!important;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions .thumb-skill[data-skill-state='ready']::before,
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions .thumb-auto[aria-pressed='true']::before {
  background-image:radial-gradient(circle,rgba(29,94,71,.56) 0,rgba(11,43,46,.28) 58%,transparent 59%),var(--ui16-control-material),var(--ui16-control-ring);
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions .thumb-skill[data-skill-state='cooldown']::after {
  background:conic-gradient(from -90deg,#d8ffe6 var(--skill-ready-angle,0deg),#536c78 0);
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto):disabled {
  color:#e0e4dc!important;
  box-shadow:inset 0 0 0 2px #aebec5,inset 0 -3px 5px #02091366,0 3px 5px #0007!important;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto):disabled::before {
  filter:brightness(1.08) saturate(.3);
  opacity:1;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto)[aria-busy='true'] {
  box-shadow:inset 0 0 0 3px #fff0bd,0 0 14px #b9eedb66,0 3px 8px #0008!important;
}
body.game-interface[data-button-quality='v15'] .thumb-controls .thumb-actions :is(.thumb-skill,.thumb-auto):active:not(:disabled) {
  box-shadow:inset 0 4px 9px #02090fbd,inset 0 -2px 0 #fff0bd,0 1px 1px #f1d8a499!important;
}
body.game-interface[data-button-quality='v15'] .virtual-joystick::before {
  filter:brightness(1.18);
}
body.game-interface[data-button-quality='v15'] .virtual-joystick [data-joystick-knob] {
  filter:brightness(1.14);
  box-shadow:0 0 0 1px #dbecd37a,0 3px 5px #0008;
}
body.game-interface[data-button-quality='v15'] .virtual-joystick[data-joystick-active='true'] {
  box-shadow:inset 0 0 0 3px #c7ffe4,0 0 17px #b3efcb55,0 4px 8px #0004;
}
body.game-interface[data-button-quality='v15'] .virtual-joystick[aria-disabled='true']::before,
body.game-interface[data-button-quality='v15'] .virtual-joystick[aria-disabled='true'] [data-joystick-knob] {
  filter:brightness(1.08) saturate(.3);
  opacity:1;
}
@media(hover:hover) and (pointer:fine) {
  body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button:hover:not(:disabled):not([aria-disabled='true']),
  body.game-interface[data-button-quality='v15'] :is(button,.lobby-link):hover:not(:disabled):not(.thumb-auto):not(.thumb-skill) {
    box-shadow:inset 0 0 0 2px #fff0bd,inset 0 -3px 0 #ffe1a0b3,0 3px 0 #050d16,0 0 14px #eedbb533,0 6px 12px #0008!important;
    filter:none!important;
  }
}
@media(prefers-reduced-motion:reduce) {
  body :is(.game-viewport[data-layout][data-title-lobby-v15],#detail-dialog) button,
  body.game-interface[data-button-quality='v15'] :is(button,.lobby-link,.virtual-joystick) {
    transition:none!important;
    animation:none!important;
  }
}
