/* SPECTRA game shell: selected layout 1 + selected shot controls 3. */
:root {
  --game-topbar-height: 78px;
  --game-dock-height: 154px;
  --game-glass: rgb(255 255 255 / 82%);
  --game-border: rgb(54 75 104 / 14%);
  --game-ink: #162033;
  --game-muted: #708096;
  --game-cyan: #16c5dc;
  --game-violet: #7562f5;
}

html,
body {
  color: var(--game-ink);
  background: #eef3f9;
  font-family: var(--font-body);
}

body > div,
#viewP1 div {
  color: inherit;
}

.view3d {
  background:
    radial-gradient(
      circle at 15% 22%,
      rgb(70 223 230 / 15%),
      transparent 26rem
    ),
    radial-gradient(
      circle at 82% 20%,
      rgb(154 108 255 / 10%),
      transparent 30rem
    ),
    #eef3f9;
}

.view3d::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 5;
  border: 1px solid rgb(255 255 255 / 70%);
  box-shadow: inset 0 0 90px rgb(78 112 150 / 10%);
  pointer-events: none;
}

.view3d > canvas {
  border-radius: 0;
}

.camera-control-hint {
  right: 1.25rem;
  bottom: 1rem;
  color: var(--game-muted);
  background: rgb(255 255 255 / 68%);
  border: 1px solid var(--game-border);
  box-shadow: 0 8px 30px rgb(67 84 117 / 12%);
  backdrop-filter: blur(20px) saturate(130%);
}

.tray-score-container {
  top: 0;
  min-width: min(620px, 48vw);
  min-height: var(--game-topbar-height);
  padding: 0 3rem;
  display: grid;
  grid-template-columns: minmax(110px, 1fr) 32px minmax(110px, 1fr);
  gap: 1rem;
  color: var(--game-ink);
  text-shadow: none;
  background:
    radial-gradient(circle at 14% 0%, rgb(33 207 224 / 14%), transparent 42%),
    radial-gradient(circle at 86% 0%, rgb(133 98 246 / 13%), transparent 42%),
    var(--game-glass);
  border: 1px solid rgb(255 255 255 / 88%);
  border-top: 0;
  border-radius: 0 0 26px 26px;
  box-shadow: 0 14px 42px rgb(53 71 103 / 15%);
  backdrop-filter: blur(26px) saturate(135%);
}

.tray-score-container::before {
  content: "BREAK BUILDER";
  position: absolute;
  top: 8px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--game-muted);
  font: 700 8px/1 var(--font-display);
  letter-spacing: 0.18em;
}

.p1Score,
.p2Score,
.hudMiddle {
  min-width: 0;
  justify-content: center;
}

.p1Score {
  align-items: flex-end;
  text-align: right;
}

.p2Score {
  align-items: flex-start;
  text-align: left;
}

.hudMiddle {
  align-items: center;
}

.hud-name {
  max-width: 18ch;
  color: var(--game-ink);
  font-size: 12px;
  letter-spacing: 0.01em;
}

.hud-value {
  color: var(--game-cyan);
  font: 700 26px/1 var(--font-display);
}

.p2Score .hud-value {
  color: var(--game-violet);
}

.hudMiddle .hud-name {
  font-size: 18px;
}

.p1Score.is-active::after,
.p2Score.is-active::after {
  content: "我的回合";
  margin-top: 4px;
  color: #2283d8;
  font-size: 10px;
  font-weight: 700;
}

.tray-container {
  top: calc(var(--game-topbar-height) + 8px);
  width: min(300px, 30vw);
  height: 30px;
  background: rgb(255 255 255 / 72%);
  border: 1px solid var(--game-border);
  border-radius: 999px;
  box-shadow: 0 8px 28px rgb(59 77 111 / 12%);
  backdrop-filter: blur(18px);
}

.break-group {
  background: rgb(102 124 156 / 9%);
}

.nav-btn {
  color: var(--game-muted);
  background: transparent;
}

#lobbyContainer {
  top: 16px;
  right: 20px;
}

a#lobbyOverlay {
  min-height: 46px;
  padding: 0 1rem;
  color: var(--game-ink);
  background: var(--game-glass);
  border: 1px solid rgb(255 255 255 / 92%);
  border-radius: 999px;
  box-shadow: 0 10px 32px rgb(61 77 111 / 13%);
  backdrop-filter: blur(22px);
}

a#lobbyOverlay > i {
  margin-right: 0.45rem;
  color: var(--game-violet);
  font-size: 20px;
}

.lobby-count {
  color: var(--game-ink);
  font-size: 12px;
  font-weight: 650;
}

.challenge-pill {
  min-height: 46px;
  padding: 0.4rem 0.5rem 0.4rem 0.8rem;
  color: var(--game-ink);
  background: rgb(255 255 255 / 92%);
  border: 1px solid var(--game-border);
  border-radius: 999px;
  box-shadow: 0 14px 42px rgb(65 82 120 / 15%);
}

.challenge-pill button {
  min-height: 32px;
  padding-inline: 0.75rem;
  color: var(--game-ink);
  border: 0;
  border-radius: 999px;
}

#challengeAccept {
  color: white;
  background: linear-gradient(105deg, var(--game-cyan), var(--game-violet));
}

#challengeDecline {
  background: #edf1f7;
}

.game-social-toggle {
  width: 30px;
  height: 46px;
  margin-left: 6px;
  display: grid;
  place-items: center;
  color: var(--game-violet);
  background: var(--game-glass);
  border: 1px solid white;
  border-radius: 14px 0 0 14px;
  box-shadow: 0 10px 30px rgb(61 77 111 / 13%);
  cursor: pointer;
  backdrop-filter: blur(22px);
}

.game-social-drawer {
  position: absolute;
  z-index: 2150;
  top: 76px;
  right: 16px;
  width: min(310px, calc(100vw - 32px));
  max-height: calc(100% - 108px);
  padding: 1rem;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 0.85rem;
  color: var(--game-ink);
  background:
    radial-gradient(
      circle at 100% 0%,
      rgb(119 93 247 / 12%),
      transparent 15rem
    ),
    rgb(250 251 254 / 91%);
  border: 1px solid white;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgb(56 74 108 / 20%);
  pointer-events: auto;
  backdrop-filter: blur(28px) saturate(135%);
}

.game-social-drawer[hidden] {
  display: none;
}

.game-social-drawer > header,
.game-social-section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.game-social-drawer > header span {
  color: var(--game-violet);
  font: 700 8px/1 var(--font-display);
  letter-spacing: 0.15em;
}

.game-social-drawer h2 {
  margin: 0.25rem 0 0;
  color: var(--game-ink);
  font: 700 1.2rem/1.2 var(--font-display);
}

.game-social-drawer > header button {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  color: var(--game-muted);
  background: #edf1f7;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
}

.game-social-self {
  padding: 0.55rem;
  background: rgb(255 255 255 / 66%);
  border: 1px solid var(--game-border);
  border-radius: 16px;
}

.game-social-section-title {
  margin-bottom: 0.45rem;
  color: var(--game-muted);
  font-size: 11px;
}

.game-social-section-title span {
  min-width: 25px;
  min-height: 25px;
  display: grid;
  place-items: center;
  color: var(--game-violet);
  background: rgb(117 98 245 / 9%);
  border-radius: 999px;
  font-family: var(--font-mono);
}

.game-social-users {
  max-height: 270px;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.25rem;
  overflow: auto;
  list-style: none;
}

.game-social-user {
  min-height: 48px;
  display: grid;
  grid-template-columns: 36px 1fr 9px;
  align-items: center;
  gap: 0.65rem;
}

.game-social-avatar {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  color: white;
  background: linear-gradient(135deg, var(--game-cyan), var(--game-violet));
  border: 2px solid white;
  border-radius: 50%;
  box-shadow: 0 7px 16px rgb(77 86 183 / 20%);
  font-size: 12px;
  font-weight: 700;
}

.game-social-user > span:nth-child(2) {
  min-width: 0;
}

.game-social-user strong,
.game-social-user small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.game-social-user strong {
  color: var(--game-ink);
  font-size: 12px;
}

.game-social-user small {
  margin-top: 2px;
  color: var(--game-muted);
  font-size: 9px;
}

.game-social-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #17a769;
  box-shadow: 0 0 0 3px rgb(23 167 105 / 12%);
}

.game-social-dot[data-state="away"] {
  background: #e9a536;
}

.game-social-dot[data-state="dnd"] {
  background: #d94d67;
}

.game-social-dot[data-state="invisible"] {
  background: #8995a8;
}

.game-social-empty {
  padding: 1.5rem 0.5rem;
  color: var(--game-muted);
  font-size: 11px;
  text-align: center;
}

.game-social-open {
  min-height: 46px;
  padding: 0 0.85rem;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.55rem;
  color: white;
  background: linear-gradient(105deg, var(--game-cyan), var(--game-violet));
  border-radius: 999px;
  text-decoration: none;
  font-size: 11px;
  font-weight: 650;
}

.shot-dock {
  --power: 65%;

  flex: 0 0 var(--game-dock-height);
  height: var(--game-dock-height);
  min-height: var(--game-dock-height);
  padding: 16px 94px 14px max(18px, env(safe-area-inset-left));
  display: grid;
  grid-template-columns: minmax(150px, 190px) minmax(260px, 1fr) 112px;
  align-items: center;
  gap: clamp(12px, 2vw, 30px);
  color: var(--game-ink);
  background:
    radial-gradient(circle at 14% 115%, rgb(37 207 222 / 17%), transparent 28%),
    radial-gradient(circle at 78% 125%, rgb(128 92 246 / 13%), transparent 34%),
    rgb(247 249 253 / 94%);
  border: 0;
  border-top: 1px solid rgb(255 255 255 / 96%);
  box-shadow: 0 -18px 55px rgb(51 70 104 / 18%);
  backdrop-filter: blur(28px) saturate(135%);
  transition:
    min-height 420ms var(--ease-out),
    height 420ms var(--ease-out),
    flex-basis 420ms var(--ease-out),
    padding 420ms var(--ease-out);
}

.shot-dock::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    110deg,
    transparent 30%,
    rgb(255 255 255 / 56%),
    transparent 63%
  );
  opacity: 0.6;
}

.shot-dock__toggle {
  position: absolute;
  top: -37px;
  left: 50%;
  z-index: 5;
  min-height: 36px;
  padding: 0 0.8rem;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--game-muted);
  background: rgb(248 250 253 / 92%);
  border: 1px solid rgb(255 255 255 / 94%);
  border-bottom: 0;
  border-radius: 14px 14px 0 0;
  box-shadow: 0 -8px 22px rgb(57 76 108 / 10%);
  transform: translateX(-50%);
  cursor: pointer;
  font-size: 11px;
}

.aimControlColumn {
  width: 100%;
  height: 122px;
  align-self: center;
  display: grid;
  grid-template-columns: 62px minmax(84px, 1fr);
  grid-template-rows: 38px 84px;
  align-items: center;
  overflow: visible;
}

.shot-control-heading {
  grid-column: 1 / -1;
  align-self: start;
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
}

.shot-control-heading span {
  color: var(--game-violet);
  font: 700 9px/1 var(--font-display);
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.shot-control-heading strong {
  color: var(--game-ink);
  font-size: 12px;
}

.ballContainerWrapper,
.ballContainerWrapper.is-disabled {
  grid-column: 2;
  grid-row: 2;
  width: 84px;
  height: 84px;
  flex: none;
  justify-self: center;
}

.ballContainer,
.ballContainer.is-disabled {
  width: 84px;
  height: 84px;
  border: 1px solid rgb(74 96 128 / 14%);
  border-radius: 50%;
  background: rgb(255 255 255 / 52%) !important;
  background-image: none !important;
  box-shadow:
    0 11px 30px rgb(66 85 121 / 15%),
    inset 0 1px 2px white;
  overflow: visible;
}

.cueBall {
  width: 76%;
  height: 76%;
  top: 12%;
  left: 12%;
  background: radial-gradient(
    circle at 34% 28%,
    white 0 25%,
    #f0f3f7 58%,
    #c9d1dd 100%
  );
  border: 1px solid rgb(55 75 105 / 12%);
  box-shadow:
    0 12px 22px rgb(45 64 98 / 18%),
    inset -8px -10px 18px rgb(80 99 126 / 18%),
    inset 7px 8px 14px rgb(255 255 255 / 80%);
}

.cueBall.is-disabled {
  filter: grayscale(0.7);
  opacity: 0.56;
}

.cueTip,
.ballContainer.is-disabled .cueTip {
  width: 14px;
  height: 14px;
  background: #c72f4a;
  border: 2px solid white;
  box-shadow: 0 3px 10px rgb(190 35 66 / 30%);
}

.objectBall {
  width: 76%;
  height: 76%;
  top: 12%;
  left: 12%;
  opacity: 0.32;
  border-color: #52738a;
}

.openElevation {
  top: 50%;
  right: auto;
  left: -52px;
  width: 40px;
  height: 40px;
  color: var(--game-ink);
  background: rgb(255 255 255 / 76%);
  border: 1px solid var(--game-border);
  border-radius: 12px;
  transform: translateY(-50%);
  box-shadow: 0 8px 22px rgb(65 82 120 / 10%);
}

.tiltSliderContainer {
  position: absolute;
  left: 0;
  bottom: calc(100% + 18px);
  width: 164px;
  height: 164px;
  padding: 10px;
  background: rgb(255 255 255 / 92%);
  background-image: none;
  border: 1px solid rgb(255 255 255 / 92%);
  border-radius: 24px;
  box-shadow: 0 20px 60px rgb(58 76 109 / 20%);
  backdrop-filter: blur(24px);
}

angle-input .tip {
  background: var(--game-cyan);
}

.powerSliderContainer {
  --arc-thickness: 11px;

  width: 100%;
  max-width: 820px;
  height: 118px;
  min-width: 0;
  margin: 0;
  padding: 0 28px;
  align-self: center;
  display: grid;
  grid-template-rows: 62px auto;
  align-items: end;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
  touch-action: none;
  cursor: ew-resize;
}

.power-arc {
  position: absolute;
  inset: 0 18px 42px;
  overflow: hidden;
  pointer-events: none;
}

.power-track,
.power-progress {
  position: absolute;
  inset: 12px 0 0;
  clip-path: none;
  border-radius: 0 0 50% 50%;
  background: none;
  border-bottom: var(--arc-thickness) solid #26354b;
  opacity: 1;
  transform: perspective(500px) rotateX(27deg);
}

.power-track {
  filter: drop-shadow(0 7px 8px rgb(47 65 96 / 22%));
}

.power-progress {
  right: calc(100% - var(--power));
  border-bottom-color: var(--game-cyan);
  filter: drop-shadow(0 0 8px rgb(22 197 220 / 72%));
  transition: right 80ms linear;
}

.power-knob {
  position: absolute;
  left: var(--power);
  bottom: 2px;
  width: 26px;
  height: 26px;
  border: 5px solid white;
  border-radius: 8px;
  background: linear-gradient(145deg, var(--game-cyan), var(--game-violet));
  box-shadow: 0 6px 18px rgb(72 81 180 / 28%);
  transform: translateX(-50%) rotate(4deg);
  transition: left 80ms linear;
}

input[type="range"].powerSlider {
  position: absolute;
  inset: 0 18px 42px;
  width: calc(100% - 36px);
  height: 70px;
  opacity: 0;
  pointer-events: none;
}

.power-readout {
  position: absolute;
  left: var(--power);
  bottom: 55px;
  min-width: 52px;
  min-height: 30px;
  padding: 0 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  background: linear-gradient(105deg, var(--game-cyan), var(--game-violet));
  border: 2px solid white;
  border-radius: 10px;
  box-shadow: 0 7px 18px rgb(72 83 180 / 25%);
  transform: translateX(-50%);
  transition: left 80ms linear;
  font: 700 13px/1 var(--font-mono);
}

.power-readout span {
  font-size: 9px;
}

.power-instruction {
  grid-row: 2;
  align-self: end;
  display: grid;
  justify-items: center;
  color: var(--game-ink);
  pointer-events: none;
}

.power-instruction strong {
  font-size: 13px;
}

.power-instruction span {
  margin-top: 3px;
  color: var(--game-muted);
  font-size: 10px;
}

.powerSliderContainer[data-gesture="charging"] .power-knob {
  transform: translateX(-50%) scale(1.15);
}

.powerSliderContainer[data-gesture="cancel"] .power-instruction strong {
  color: #cf4563;
}

.powerSliderContainer[data-gesture="cancel"] .power-instruction strong::after {
  content: " · 已取消";
}

.powerSliderContainer.is-disabled {
  cursor: default;
  opacity: 0.54;
}

.shot-action {
  display: grid;
  place-items: center;
}

.hitButton {
  width: 102px;
  height: 102px;
  padding: 0;
  display: grid;
  place-content: center;
  gap: 5px;
  color: var(--game-ink);
  background:
    radial-gradient(circle at 32% 25%, rgb(255 255 255 / 95%), transparent 35%),
    linear-gradient(145deg, #e8fbff, #d6eff7);
  border: 7px solid rgb(255 255 255 / 86%);
  border-radius: 50%;
  box-shadow:
    0 0 0 2px rgb(23 197 219 / 42%),
    0 0 0 7px rgb(115 94 246 / 13%),
    0 16px 38px rgb(56 85 125 / 21%),
    inset 0 -8px 18px rgb(38 179 205 / 10%);
  font-weight: 700;
}

.hitButton:hover:not(:disabled) {
  box-shadow:
    0 0 0 2px rgb(23 197 219 / 64%),
    0 0 0 10px rgb(115 94 246 / 17%),
    0 19px 44px rgb(56 85 125 / 24%);
}

.hitButton small {
  color: var(--game-muted);
  font-size: 9px;
  font-weight: 500;
}

.timeout-btn {
  --timer-color: var(--game-cyan);
}

.hitButton:disabled {
  visibility: visible;
  opacity: 0.38;
}

.outerMenu {
  position: absolute;
  right: 14px;
  bottom: 13px;
  width: 64px;
  max-height: 130px;
  padding: 6px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
  overflow: auto;
  color: var(--game-ink);
  background: rgb(255 255 255 / 72%);
  border: 1px solid rgb(255 255 255 / 92%);
  border-radius: 26px;
  box-shadow: 0 13px 36px rgb(57 75 110 / 16%);
  backdrop-filter: blur(22px) saturate(140%);
}

.menuButton,
.menuButton.half-height {
  width: 23px;
  height: 23px;
  min-height: 23px;
  color: var(--game-muted);
  background: transparent;
  border: 0;
  border-radius: 8px;
  font-size: 15px;
}

.menuButton:hover {
  color: var(--game-violet);
  background: rgb(112 96 244 / 9%);
}

.comment-menu {
  right: 70px;
  bottom: 0;
  padding: 0.45rem;
  background: rgb(255 255 255 / 92%);
  border: 1px solid white;
  border-radius: 18px;
  box-shadow: 0 18px 52px rgb(56 73 106 / 19%);
  backdrop-filter: blur(24px);
}

.comment-emoji {
  color: var(--game-ink);
  background: #f1f4f9;
  border: 1px solid var(--game-border);
  border-radius: 10px;
  text-shadow: none;
}

.shot-dock[data-dock-state="collapsed"] {
  flex-basis: 32px;
  height: 32px;
  min-height: 32px;
  padding-block: 0;
}

.shot-dock[data-dock-state="collapsed"] > :not(.shot-dock__toggle) {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.shot-dock[data-dock-state="collapsed"] .shot-dock__toggle {
  top: -36px;
}

.reposition-cue-ball {
  bottom: 1rem;
  color: var(--game-ink);
  background: rgb(255 255 255 / 86%);
  border: 1px solid white;
  box-shadow: 0 14px 36px rgb(58 75 109 / 18%);
}

.cue-selector,
.table-selector,
.game-settings,
.control-tutorial__card,
#helpOverlay {
  color: var(--game-ink);
  background:
    radial-gradient(circle at 90% 0%, rgb(40 211 225 / 12%), transparent 28rem),
    rgb(250 251 254 / 95%);
  background-image: none;
  border: 1px solid white;
  box-shadow: 0 24px 74px rgb(58 75 109 / 20%);
  backdrop-filter: blur(26px) saturate(130%);
}

.cue-selector__eyebrow,
.table-selector__eyebrow,
.game-settings__header span,
.control-tutorial__card > span {
  color: var(--game-violet);
}

.cue-selector__intro,
.table-selector__intro,
.cue-style-copy small,
.table-style-copy small,
.game-settings__field,
.control-tutorial__card ul,
.cue-customizer__heading span,
.cue-customizer__patterns label,
.cue-customizer__colours label {
  color: var(--game-muted);
}

.cue-selector__close,
.table-selector__close,
.game-settings__header button,
.game-settings__body button,
.cue-style-option,
.table-style-option,
.cue-customizer,
.cue-customizer__actions button {
  color: var(--game-ink);
  background: rgb(238 242 248 / 78%);
  border-color: var(--game-border);
}

.cue-style-option.is-selected,
.table-style-option.is-selected,
.cue-customizer.is-selected {
  background: rgb(28 198 218 / 9%);
  border-color: rgb(27 187 210 / 42%);
}

.cue-style-check,
.table-style-check,
.table-style-heading em,
.cue-customizer__badge {
  color: var(--game-violet) !important;
}

.cue-customizer__patterns select,
.game-settings__field select {
  color: var(--game-ink);
  background: white;
  border-color: var(--game-border);
}

.cue-customizer__heading strong {
  color: var(--game-ink);
}

.cue-customizer__actions button:last-child,
.control-tutorial__card button {
  color: white;
  background: linear-gradient(105deg, var(--game-cyan), var(--game-violet));
  border-color: transparent;
}

.game-settings__home {
  color: var(--game-violet);
  border-color: rgb(117 98 245 / 30%);
}

.control-tutorial {
  background: rgb(225 232 242 / 66%);
}

#helpOverlay iframe {
  background: white;
}

.chatarea {
  top: 84px;
  right: 20px;
  max-width: min(320px, 42vw);
}

.chatoutput {
  color: var(--game-ink);
  text-shadow: none;
}

.chatoutput > * {
  display: inline-flex;
  margin: 3px 0;
  padding: 0.5rem 0.7rem;
  color: var(--game-ink);
  background: rgb(255 255 255 / 82%);
  border: 1px solid white;
  border-radius: 14px;
  box-shadow: 0 8px 22px rgb(60 78 110 / 12%);
}

#inputTextDiv[open] {
  width: min(520px, calc(100vw - 2rem));
  padding: 0.55rem;
  gap: 0.4rem;
  background: rgb(255 255 255 / 92%);
  border: 1px solid white;
  border-radius: 999px;
  box-shadow: 0 18px 55px rgb(60 78 111 / 22%);
}

#inputText {
  flex: 1;
  min-height: 42px;
  padding-inline: 1rem;
  border: 1px solid var(--game-border);
  border-radius: 999px;
}

#inputTextDiv button {
  min-height: 42px;
  padding-inline: 1rem;
  color: var(--game-ink);
  background: #edf1f7;
  border: 0;
  border-radius: 999px;
}

#inputSend {
  color: white !important;
  background: linear-gradient(
    105deg,
    var(--game-cyan),
    var(--game-violet)
  ) !important;
}

#notificationOverlay {
  top: 88px;
}

.notification-banner {
  color: var(--game-ink);
  background: rgb(255 255 255 / 91%);
  border: 1px solid white;
  border-radius: 18px;
  box-shadow: 0 18px 52px rgb(57 75 108 / 18%);
  backdrop-filter: blur(24px);
}

.notification-title,
.notification-subtext,
.notification-match-score,
.notification-badge {
  color: var(--game-ink);
}

.notification-footer,
.notification-match-score {
  background: rgb(235 240 247 / 72%);
  border-color: var(--game-border);
}

.notification-btn {
  color: white;
  background: linear-gradient(105deg, var(--game-cyan), var(--game-violet));
  border: 0;
  border-radius: 999px;
}

@media (width <= 900px) {
  :root {
    --game-topbar-height: 64px;
    --game-dock-height: 132px;
  }

  .tray-score-container {
    min-width: min(520px, 74vw);
    padding-inline: 1.2rem;
  }

  .shot-dock {
    grid-template-columns: 122px minmax(190px, 1fr) 84px;
    gap: 10px;
    padding-left: 8px;
    padding-right: 76px;
  }

  .aimControlColumn {
    height: 110px;
    grid-template-columns: 40px 82px;
    grid-template-rows: 30px 80px;
  }

  .shot-control-heading span {
    display: none;
  }

  .ballContainerWrapper,
  .ballContainerWrapper.is-disabled,
  .ballContainer,
  .ballContainer.is-disabled {
    width: 76px;
    height: 76px;
  }

  .hitButton {
    width: 78px;
    height: 78px;
    border-width: 5px;
  }

  .outerMenu {
    right: 7px;
    width: 60px;
  }
}

@media (width <= 640px) {
  :root {
    --game-dock-height: 118px;
  }

  .tray-score-container {
    min-width: calc(100vw - 112px);
    min-height: 58px;
    padding-inline: 0.7rem;
    gap: 0.3rem;
    border-radius: 0 0 18px 18px;
  }

  .hud-name {
    max-width: 10ch;
    font-size: 9px;
  }

  .hud-value {
    font-size: 18px;
  }

  .p1Score.is-active::after,
  .p2Score.is-active::after,
  .tray-score-container::before {
    display: none;
  }

  #lobbyContainer {
    top: 8px;
    right: 7px;
  }

  a#lobbyOverlay {
    width: 46px;
    padding: 0;
    justify-content: center;
  }

  .game-social-toggle {
    display: none;
  }

  .game-social-drawer {
    top: 62px;
    right: 7px;
    max-height: calc(100% - 84px);
  }

  a#lobbyOverlay::before {
    margin: 0;
  }

  .lobby-count {
    display: none;
  }

  .tray-container {
    top: 64px;
    width: 180px;
  }

  .shot-dock {
    grid-template-columns: 88px minmax(120px, 1fr) 68px;
    gap: 4px;
    padding: 7px 60px 7px 4px;
  }

  .shot-dock__toggle span,
  .shot-control-heading,
  .power-instruction span,
  .hitButton small {
    display: none;
  }

  .aimControlColumn {
    height: 94px;
    grid-template-columns: 28px 60px;
    grid-template-rows: 0 94px;
  }

  .ballContainerWrapper,
  .ballContainerWrapper.is-disabled,
  .ballContainer,
  .ballContainer.is-disabled {
    width: 60px;
    height: 60px;
  }

  .openElevation {
    left: -31px;
    width: 28px;
    height: 34px;
  }

  .powerSliderContainer {
    height: 92px;
    padding-inline: 8px;
  }

  .power-arc {
    inset-inline: 4px;
  }

  .power-readout {
    min-width: 42px;
  }

  .power-instruction strong {
    font-size: 10px;
    white-space: nowrap;
  }

  .hitButton {
    width: 62px;
    height: 62px;
    font-size: 12px;
  }

  .outerMenu {
    right: 3px;
    bottom: 5px;
    width: 54px;
    max-height: 108px;
    border-radius: 20px;
  }

  .menuButton,
  .menuButton.half-height {
    width: 20px;
    height: 20px;
    min-height: 20px;
    font-size: 13px;
  }

  .camera-control-hint {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .shot-dock,
  .power-progress,
  .power-knob,
  .power-readout {
    transition: none;
  }
}
