* {
  box-sizing: border-box;
}
body #spirit-hint {
  display: block;
  font-size: 8px;
  margin-top: 3px;
}
.action.ability-ready {
  border-color: #dda0ff;
  box-shadow: 0 0 10px #d986ff44;
}
.action.ability-ready > small {
  color: #ffdcff;
  font-weight: 800;
}
#style-menu .box-controls {
  display: flex;
  align-items: center;
  gap: 14px;
}
#style-menu #style-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 16px 0;
}
#style-menu .style-card {
  border-left: 3px solid;
  background: #19364b;
  padding: 12px;
}
#style-menu .style-card p {
  font-size: 11px;
  line-height: 1.4;
}
#style-menu button:disabled {
  opacity: 0.5;
  cursor: default;
}
#style-result {
  min-height: 36px;
  font-weight: 900;
}
.box-reveal {
  animation: boxReveal 0.45s ease-out;
}
@keyframes boxReveal {
  from {
    transform: translateY(10px) scale(0.94);
    opacity: 0.2;
  }
  to {
    transform: none;
    opacity: 1;
  }
}
@media (max-width: 540px) {
  #style-menu #style-list {
    grid-template-columns: 1fr;
  }
}
@media (prefers-reduced-motion: reduce) {
  .box-reveal {
    animation: none;
  }
}
/* Compact top HUD, including the narrower-screen variants below. */
body .scoreboard {
  top: 8px;
  min-width: 0;
}
body .team {
  gap: 10px;
  padding: 6px 12px;
}
body .team span {
  font-size: 12px;
  letter-spacing: 0.5px;
}
body .team strong {
  font-size: 28px;
  min-width: 36px;
}
body .score-center {
  min-width: 132px;
  padding: 5px 9px;
}
body .score-center b {
  font-size: 14px;
  line-height: 1.2;
}
body .score-center small {
  font-size: 7px;
  letter-spacing: 0.5px;
}
body #match-point {
  top: 65px;
  font-size: 10px;
}
body .brand b {
  font-size: 15px;
}
body .brand small {
  font-size: 8px;
}
body nav button {
  font-size: 10px;
  padding: 6px 9px;
}
body {
  margin: 0;
  overflow: hidden;
  background: #173248;
  color: #f5f7ef;
  font:
    14px system-ui,
    sans-serif;
}
canvas {
  display: block;
  width: 100vw;
  height: 100vh;
  touch-action: none;
}
button,
a {
  font: inherit;
}
button {
  background: #142d42e8;
  border: 1px solid #87a2b46b;
  color: #eef6f8;
  border-radius: 5px;
  padding: 9px 13px;
  cursor: pointer;
}
button:hover {
  background: #254961;
  border-color: #dcebd3;
}
button:focus-visible,
a:focus-visible {
  outline: 3px solid #f4c96e;
  outline-offset: 3px;
}
.brand {
  position: absolute;
  left: 28px;
  top: 27px;
  text-shadow: 0 2px 8px #102235;
}
.brand b {
  font-size: 19px;
  letter-spacing: 1px;
  font-style: italic;
}
.brand span {
  color: #f7ce81;
}
.brand small {
  display: block;
  margin-top: 5px;
  letter-spacing: 2px;
  font-size: 10px;
  color: #c5dde3;
}
nav {
  position: absolute;
  right: 24px;
  top: 24px;
  display: flex;
  gap: 7px;
}
nav button {
  font-size: 12px;
}
.scoreboard {
  position: absolute;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: stretch;
  filter: drop-shadow(0 4px 10px #11223255);
  min-width: 460px;
}
.team {
  display: flex;
  gap: 20px;
  align-items: center;
  padding: 10px 22px;
  font-style: italic;
}
.sky {
  background: linear-gradient(120deg, #156888, #29a6c1);
  border-left: 4px solid #9beaf4;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 8% 100%);
}
.ember {
  background: linear-gradient(120deg, #bf4b3a, #e98650);
  border-right: 4px solid #ffd6a2;
  clip-path: polygon(0 0, 100% 0, 92% 100%, 0 100%);
}
.team span {
  font-weight: 800;
  font-size: 16px;
  letter-spacing: 1px;
}
.team strong {
  font: 900 38px system-ui;
  min-width: 48px;
}
.score-center {
  text-align: center;
  background: #10273bef;
  padding: 8px 14px;
  min-width: 180px;
}
.score-center small {
  display: block;
  font-size: 9px;
  letter-spacing: 1px;
  color: #c9dfdf;
}
.score-center b {
  display: block;
  font-size: 19px;
  line-height: 1.45;
}
.score-center b span {
  font-size: 10px;
  color: #f3c87b;
  margin: 0 6px;
}
#phase {
  color: #ffdf9f;
  margin-top: 2px;
}
#match-point {
  position: absolute;
  top: 108px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 12px;
  letter-spacing: 3px;
  color: #ffdb82;
}
#feedback {
  position: absolute;
  top: 23%;
  left: 50%;
  transform: translateX(-50%) skew(-6deg);
  font-weight: 900;
  font-size: 27px;
  text-align: center;
  pointer-events: none;
  text-shadow:
    0 3px 1px #15324d,
    0 0 20px #152c47;
  transition: opacity 0.15s;
  white-space: nowrap;
}
.perfect {
  color: #ffe4a5;
}
.good {
  color: #f5ffff;
}
#serve-panel {
  position: absolute;
  left: 28px;
  top: 130px;
  width: 288px;
  padding: 16px 18px;
  background: #102c42df;
  border-left: 3px solid #efca80;
  backdrop-filter: blur(8px);
}
#serve-panel > div:first-child {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: space-between;
}
#serve-title {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 1px;
}
#serve-time {
  color: #ffda91;
  font-size: 24px;
}
#serve-copy {
  font-size: 12px;
  line-height: 1.6;
  color: #cee3e5;
  margin: 7px 0 14px;
}
.serve-meter {
  height: 9px;
  position: relative;
  background: #548d9c;
}
.serve-meter i {
  position: absolute;
  left: 40%;
  width: 20%;
  height: 100%;
  background: #ffd17b;
}
.serve-meter b {
  position: absolute;
  top: -4px;
  width: 3px;
  height: 17px;
  background: white;
  transform: translateX(-50%);
}
#play {
  position: absolute;
  left: 28px;
  bottom: 32px;
  font-size: 12px;
}
#play span {
  display: block;
  color: #b6d1de;
  font-size: 10px;
  margin-top: 4px;
}
.lower-hud {
  position: absolute;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  text-align: center;
}
#objective {
  font-size: 13px;
  color: white;
  text-shadow: 0 2px 4px #123;
  margin: 0 0 12px;
  background: #143048d9;
  padding: 8px 16px;
  border-radius: 20px;
  white-space: nowrap;
}
.actionbar {
  display: flex;
  gap: 8px;
}
.action {
  width: 104px;
  height: 88px;
  background: linear-gradient(155deg, #193850ef, #102134f2);
  border: 1px solid #648496;
  position: relative;
  border-radius: 7px;
  text-align: center;
  box-shadow: 0 4px 10px #09223a55;
  transition:
    filter 0.12s,
    transform 0.12s;
}
.action.gold {
  border-color: #efd69b;
  background: linear-gradient(155deg, #624d30eb, #183049f2);
}
.action kbd {
  position: absolute;
  top: -6px;
  left: 6px;
  background: #f4f0df;
  color: #183047;
  border-radius: 3px;
  font: bold 10px system-ui;
  padding: 3px 5px;
  min-width: 22px;
}
.action > b {
  display: block;
  font-size: 36px;
  height: 49px;
  padding-top: 10px;
  color: #caeff4;
}
.action > span {
  display: block;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 1px;
}
.action > small {
  display: block;
  font-size: 9px;
  color: #a7c8d5;
  margin-top: 4px;
}
.action.cooling {
  filter: brightness(0.62);
}
.action.active {
  transform: translateY(-5px);
  border-color: #fff1b9;
}
.foot-controls {
  font-size: 9px;
  letter-spacing: 1px;
  margin-top: 10px;
  color: #e8f4ec;
  text-shadow: 0 1px 4px #124;
}
.foot-controls i {
  margin: 0 8px;
  color: #fcd995;
  font-style: normal;
}
.spirit {
  width: min(330px, 85vw);
  margin: 0 auto 10px;
  padding: 7px 12px;
  background: linear-gradient(110deg, #231438ed, #141c36ed);
  border-left: 3px solid #ff477d;
  text-align: left;
  transform: skew(-5deg);
}
.spirit > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 10px;
  letter-spacing: 1px;
}
.spirit strong {
  color: #ffa4c8;
  font-style: italic;
}
.spirit-track {
  height: 5px;
  margin: 6px 0 3px;
  background: #543556;
  overflow: hidden;
}
.spirit-track i {
  display: block;
  height: 100%;
  width: 100%;
  background: linear-gradient(90deg, #bd55ff, #ff3d78, #ffe2a0);
  transition: width 0.2s;
}
.spirit small {
  color: #dfc9ed;
  font-size: 8px;
  letter-spacing: 0.6px;
}
.spirit.charged {
  box-shadow: 0 0 18px #ff337744;
  border-color: #ffe8a1;
}
.spirit.charged strong {
  color: #ffe8a1;
}
.scoreboard {
  border-bottom: 3px solid #f7ecdc;
  border-radius: 0;
  transform: translateX(-50%) skew(-5deg);
  box-shadow: 5px 6px 0 #140f2c77;
}
.team.sky {
  background: linear-gradient(120deg, #264b87, #723ba7);
}
.team.ember {
  background: linear-gradient(120deg, #7c234a, #eb543f);
}
.team strong {
  font-style: italic;
  text-shadow: 3px 3px #13182d;
}
.action {
  border-radius: 2px;
  transform: skew(-5deg);
  background: linear-gradient(145deg, #382553ef, #111e35f2);
  border-bottom: 3px solid #b887f1;
}
.action.gold {
  background: linear-gradient(145deg, #763448ef, #201c38f2);
  border-color: #ff94b5;
}
.action.active {
  transform: skew(-5deg) translateY(-5px);
  box-shadow: 0 0 18px #ff57995a;
}
#objective {
  background: none;
  padding: 0;
  border-radius: 0;
  font-style: italic;
  font-weight: 800;
  margin-bottom: 10px;
}
#feedback {
  font-style: italic;
  letter-spacing: 1px;
  text-shadow:
    3px 3px 0 #21122d,
    -1px -1px 0 #21122d,
    0 0 20px #ff467777;
}
#feedback.perfect {
  color: #fff0b5;
}
@media (prefers-reduced-motion: reduce) {
  .spirit-track i,
  .action {
    transition: none;
  }
}
.hidden {
  display: none !important;
}
.modal {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: #071c30a6;
  backdrop-filter: blur(5px);
  z-index: 5;
}
.modal > div {
  background: #122d43;
  border: 1px solid #7293a1;
  padding: 30px;
  max-width: 600px;
  width: 90%;
  max-height: 85vh;
  overflow: auto;
  border-radius: 12px;
}
.modal h1 {
  font-style: italic;
  font-size: 28px;
  color: #ffe0a1;
}
.modal p {
  line-height: 1.7;
  color: #d0e0e4;
  font-size: 14px;
}
.close {
  float: right;
}
.result {
  text-align: center;
}
.result strong {
  font-size: 64px;
  font-style: italic;
}
.result small {
  letter-spacing: 4px;
  color: #95d9e8;
}
.result button {
  background: #dfac60;
  color: #122438;
  font-weight: bold;
}
#developer {
  position: absolute;
  right: 20px;
  top: 90px;
  bottom: 20px;
  width: 300px;
  background: #102b40f5;
  padding: 22px;
  overflow: auto;
  z-index: 4;
  border: 1px solid #537482;
  border-radius: 8px;
}
#developer h2 {
  margin: 0;
  font-size: 18px;
}
#developer pre {
  font-size: 11px;
  line-height: 1.7;
  color: #b2d3df;
}
#developer label {
  display: block;
  font-size: 12px;
  margin: 14px 0;
}
#developer output {
  float: right;
  color: #ffe1a1;
}
#developer input[type="range"] {
  display: block;
  width: 100%;
  accent-color: #61c4d8;
}
#developer a {
  display: block;
  color: #8fe2ef;
  margin-top: 14px;
  font-size: 12px;
}
.admin-tools{margin:16px 0;padding:12px;border:1px solid #527087;border-radius:7px;background:#081522}.admin-tools h3{margin:0 0 8px;color:#ffe69a}.admin-tools label{margin:7px 0!important}.admin-tools select,.admin-tools input{display:block;width:100%;margin-top:4px;padding:7px;background:#10263a;color:#fff;border:1px solid #527087;border-radius:4px}.admin-tools button{width:100%;margin:3px 0;padding:7px}.admin-tools small{display:block;min-height:18px;margin-top:7px;color:#7ff0bd}
#bindings label {
  display: flex;
  justify-content: space-between;
  margin: 10px 0;
}
#ball-arrow {
  position: absolute;
  right: 25px;
  top: 47%;
  font-weight: 800;
  padding: 10px;
  background: #143249d9;
  border-radius: 5px;
  color: #ffe2a4;
}
#loading {
  position: absolute;
  inset: 40% 10% auto;
  text-align: center;
  font-size: 24px;
  background: #15344bef;
  padding: 25px;
}
@media (max-width: 1100px) {
  .brand {
    top: 95px;
    font-size: 12px;
  }
  .brand b {
    font-size: 14px;
  }
  .scoreboard {
    top: 12px;
  }
  nav {
    top: 105px;
  }
  .lower-hud {
    bottom: 12px;
  }
  #play {
    bottom: 180px;
  }
  .action {
    width: 76px;
    height: 96px;
  }
  .actionbar {
    gap: 5px;
  }
}
@media (max-width: 650px) {
  .scoreboard {
    min-width: 360px;
  }
  .team {
    padding: 10px;
    gap: 9px;
  }
  .team span {
    font-size: 12px;
  }
  .team strong {
    font-size: 30px;
    min-width: 38px;
  }
  .score-center {
    min-width: 145px;
  }
  .brand {
    left: 12px;
    top: 95px;
  }
  .brand small {
    font-size: 8px;
  }
  nav {
    right: 12px;
  }
  .action {
    width: 54px;
    height: 88px;
  }
  .action > b {
    font-size: 29px;
    height: 53px;
  }
  .action > span {
    font-size: 8px;
  }
  .action > small {
    font-size: 7px;
  }
  .action kbd {
    font-size: 8px;
  }
  #objective {
    white-space: normal;
    max-width: 355px;
    font-size: 11px;
  }
  .foot-controls {
    font-size: 7px;
  }
  #serve-panel {
    left: 12px;
    top: 150px;
    width: 245px;
  }
  #feedback {
    font-size: 20px;
    top: 40%;
  }
}

/* Keep the playing area clear: compact action dock and corner ability meter. */
.lower-hud {
  bottom: 8px;
  pointer-events: none;
}
.actionbar {
  justify-content: center;
  gap: 7px;
}
.action {
  width: 88px;
  height: 61px;
}
.action > b {
  font-size: 25px;
  height: 32px;
  padding-top: 5px;
}
.action > span {
  font-size: 9px;
}
.action > small {
  font-size: 8px;
  margin-top: 1px;
}
.action kbd {
  font-size: 8px;
  padding: 2px 4px;
}
#objective {
  font-size: 11px;
  margin: 0 0 8px;
}
.foot-controls {
  font-size: 8px;
  margin-top: 5px;
}
#spirit {
  position: absolute;
  right: 20px;
  bottom: 18px;
  width: 240px;
  margin: 0;
  padding: 8px 11px;
  pointer-events: none;
}
#spirit-hint {
  display: none;
}
#play {
  bottom: 18px;
  padding: 8px 12px;
  font-size: 10px;
}
#feedback {
  top: 18%;
  font-size: 23px;
}
@media (max-width: 900px) {
  #spirit {
    right: 12px;
    bottom: 119px;
    width: 190px;
  }
  #spirit > div:first-child {
    font-size: 8px;
  }
  #play {
    left: 12px;
    bottom: 119px;
  }
}
@media (max-height: 600px) {
  #objective {
    display: none;
  }
  #feedback {
    top: 25%;
    font-size: 18px;
  }
}

.serve-meter{height:13px;background:linear-gradient(90deg,#723847,#b86853 60%,#dbba68 85%,#258569)}.serve-meter i{left:86.5%;width:9%;background:#92ffb2;box-shadow:0 0 10px #92ffb266}.serve-meter b{height:23px}
#serve-panel{left:20px;top:auto;bottom:140px;transform:none;width:270px}#serve-copy{font-size:14px}.lower-hud{bottom:12px}.action{height:64px;width:92px}.action b{font-size:24px;line-height:29px;margin-top:8px}.action small{font-size:12px}.action kbd{font-size:12px}.foot-controls{font-size:12px}.scoreboard{scale:.83;transform-origin:top center}.brand b{font-size:22px}
.score-title-card{position:fixed;left:50%;bottom:110px;transform:translate(-50%,160px) skew(-6deg);opacity:0;pointer-events:none;background:linear-gradient(110deg,#15233f,#352b63);border-left:4px solid #ffca73;padding:12px 34px;min-width:230px;text-align:center;z-index:8;box-shadow:0 8px 28px #0005}.score-title-card small{color:#ffe19a;font-size:14px;letter-spacing:.12em}.score-title-card strong{display:block;font-size:46px;font-style:italic;line-height:1.2}.score-title-card strong span{color:#a6bed8}.score-title-card b{font-size:14px;color:#bed4e9}.score-title-card.show{animation:score-slam 2s cubic-bezier(.2,.8,.2,1) both}@keyframes score-slam{0%{transform:translate(-50%,160px) skew(-6deg);opacity:0}15%,75%{transform:translate(-50%,0) skew(-6deg);opacity:1}100%{transform:translate(-50%,30px) skew(-6deg);opacity:0}}
@media(max-width:780px){.brand{display:none}.ability-slots button{width:105px}.ability-slots{right:8px;bottom:100px}.scoreboard{scale:.65}#serve-panel{width:220px;bottom:145px}.foot-controls{max-width:270px;white-space:normal}.score-title-card{bottom:190px}}
@media(prefers-reduced-motion:reduce){.score-title-card.show{animation:none;transform:translate(-50%,0);opacity:1}}

.score-title-card{bottom:105px;padding:8px 22px;min-width:190px}.score-title-card strong{font-size:32px}.score-title-card small,.score-title-card b{font-size:12px}.score-title-card.show{animation-duration:.85s}.serve-meter b{transition:none;will-change:left}.serve-meter{overflow:visible}

/* Compact broadcast score ribbon */
.scoreboard{top:18px;width:370px;max-width:70vw;height:58px;display:flex;justify-content:center;gap:0;border:0;background:#102841;clip-path:polygon(0 0,100% 0,96% 80%,67% 80%,63% 100%,37% 100%,33% 80%,4% 80%)}
.scoreboard .team{display:flex;gap:15px;align-items:center;padding:8px 16px;flex:1;justify-content:center}.scoreboard .team span{font-size:19px;font-style:italic;font-weight:900}.scoreboard .sky{background:linear-gradient(130deg,#ee6955,#bd3e35)}.scoreboard .ember{background:linear-gradient(230deg,#eff3f5,#8f9caa);color:#192432}.scoreboard strong{font-size:30px}.scoreboard .score-center{width:28px;padding:8px 0;display:flex;align-items:center;justify-content:center}.score-center small,#format,#phase{display:none}.score-center b{font-size:26px}#rally-clock{position:fixed;top:77px;left:50%;transform:translateX(-50%);font-weight:900;font-size:21px;text-shadow:2px 2px #102841,-1px -1px #102841}#feedback{display:none!important}#spike-charge{position:fixed;width:10px;height:61px;background:#16293b;border:2px solid #071321;border-radius:3px;transform:translate(-50%,-50%);pointer-events:none}#spike-charge i{position:absolute;bottom:0;width:100%;background:linear-gradient(to top,#70e966,#ffe64d,#ff684a)}

body .scoreboard{top:18px;min-width:0;width:370px;height:52px}body .scoreboard .score-center{min-width:26px;width:26px;padding:4px 0;flex-shrink:0}body .scoreboard .team{min-width:0;padding:6px 12px;gap:12px;clip-path:none;border:0}body .scoreboard .team span{font-size:19px;letter-spacing:0}body .scoreboard .team strong{min-width:22px;font-size:30px}body .score-center b{font-size:25px}body #match-point{top:102px}

.broadcast-score{position:fixed;z-index:6;top:16px;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:105px 130px 105px;width:340px;height:48px;filter:drop-shadow(0 3px 4px #07182c);font-style:italic;font-weight:900;pointer-events:none}.broadcast-score>span{display:grid;place-items:center;font-size:20px;color:white}.home-label{background:linear-gradient(120deg,#ef775f,#b93933);clip-path:polygon(0 0,100% 0,100% 100%,15% 100%)}.broadcast-score .away-label{background:linear-gradient(120deg,#afc8d9,#eff7fa);color:#15283a;clip-path:polygon(0 0,100% 0,85% 100%,0 100%)}.score-numbers{display:flex;align-items:center;justify-content:center;gap:17px;background:#10253d;color:white}.score-numbers strong{font:900 29px system-ui;min-width:22px;text-align:center;text-shadow:none}.score-numbers b{font:900 20px system-ui}#rally-clock{z-index:6;top:70px;background:#10253ddd;border-radius:4px;padding:2px 10px;font-size:19px}body #match-point{top:105px}@media(max-width:600px){.broadcast-score{top:12px;grid-template-columns:80px 110px 80px;width:270px;height:42px}.broadcast-score>span{font-size:16px}#rally-clock{top:59px}.brand{display:none}body nav{top:101px;right:10px}body .wallet-chip{top:140px}}

.serve-meter{height:20px;border:2px solid #fff8;background:linear-gradient(90deg,#f1324c 0%,#ff713f 35%,#ffd553 65%,#7cea51 82%,#19f28a 91%,#ff6a54 100%)}
.serve-meter i{background:#30ff94;box-shadow:0 0 14px #30ff9488;border:2px solid #fff;border-radius:3px;top:-2px;height:20px}
.serve-meter b{height:30px;top:-7px;background:#fff;box-shadow:0 0 0 2px #0c2534,0 0 10px #fff8}

#online-panel{position:fixed;z-index:50;top:50%;left:50%;transform:translate(-50%,-50%);width:min(430px,90vw);padding:28px;background:#102c40f5;border:2px solid #76f5ff;border-radius:14px;box-shadow:0 20px 90px #000a;color:white}#online-panel h2{margin:0 0 8px}#online-panel label{display:block;margin:14px 0 8px}#online-panel input{display:block;width:100%;padding:10px;margin-top:5px;background:#051824;border:1px solid #77a5bc;color:white;font:inherit;border-radius:5px;box-sizing:border-box}#online-panel button{padding:10px 14px;margin:4px;background:#265771;color:white;border:1px solid #6cb7d8;border-radius:5px;cursor:pointer}#online-panel button:disabled{opacity:.4;cursor:default}#online-close{position:absolute;right:10px;top:8px}#room-invite{display:block;margin:14px 0;color:#76f5ff;font-size:20px}#online-status{min-height:40px}#online-panel.hidden{display:none}

/* Competitive team lobby. */
#online-panel{width:min(960px,94vw);max-height:92vh;overflow:auto;padding:24px 28px;background:radial-gradient(circle at 50% 0,#243c68,#08172a 58%,#050d18);border:1px solid #9cdfff;border-radius:12px;box-shadow:0 28px 100px #000e,inset 0 0 60px #3ea8ff15}
.friend-head{text-align:center}.friend-head small{color:#ffe778;font-size:10px;font-weight:900;letter-spacing:.35em}.friend-head h2{font-size:32px!important;letter-spacing:.08em;font-style:italic}.friend-head p{margin:0;color:#aabed2}
.friend-setup{display:grid;grid-template-columns:1.5fr 1fr auto;gap:10px;align-items:end;margin:18px 0 10px}.friend-setup label,#online-panel .friend-code label{margin:0}.friend-setup select{display:block;width:100%;margin-top:5px;padding:10px;background:#071829;border:1px solid #6e9db8;color:#fff;font:inherit;border-radius:5px}
.friend-code{display:grid;grid-template-columns:1fr auto auto minmax(170px,auto);gap:8px;align-items:end;margin-bottom:16px}.friend-code #room-invite{margin:0;padding:10px 12px;border:1px solid #63d9ff;background:#07192d;color:#78e5ff;font-size:15px;letter-spacing:.12em;text-align:center}
.room-lobby{display:grid;grid-template-columns:1fr 64px 1fr;gap:12px;align-items:stretch;margin:14px 0}.room-versus{align-self:center;text-align:center;color:#fff;font-size:28px;font-weight:1000;font-style:italic;text-shadow:0 0 18px #fff}
.team-side{min-height:210px;padding:12px;border:1px solid var(--team-color);background:linear-gradient(145deg,color-mix(in srgb,var(--team-color) 25%,#081629),#07111e 62%);box-shadow:inset 0 0 35px color-mix(in srgb,var(--team-color) 12%,transparent)}.team-side.sky{--team-color:#4ad9ff}.team-side.ember{--team-color:#ff654d}.team-side>header{display:flex;justify-content:space-between;align-items:end;padding:2px 5px 10px;border-bottom:1px solid color-mix(in srgb,var(--team-color) 50%,transparent)}.team-side>header small{font-size:9px;letter-spacing:.2em;color:#adc5d6}.team-side>header b{font-size:21px;font-style:italic;color:var(--team-color);letter-spacing:.1em}
.team-slots{display:grid;gap:7px;margin-top:9px}.player-slot{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:center;min-height:60px;padding:7px;background:#081421;border:1px solid color-mix(in srgb,var(--player-color,var(--team-color)) 60%,#36556b);position:relative;overflow:hidden}.player-slot:after{content:"";position:absolute;right:-20px;top:-38px;width:100px;height:100px;border-radius:50%;background:var(--player-color,var(--team-color));opacity:.08}.player-slot>i{width:46px;height:46px;display:grid;place-items:center;border-radius:9px;background:linear-gradient(145deg,var(--player-color,var(--team-color)),#10182b);border:2px solid #dff7ff;color:#fff;font-style:normal;font-weight:1000;text-shadow:0 2px 3px #000;box-shadow:0 0 15px color-mix(in srgb,var(--player-color,var(--team-color)) 45%,transparent)}.player-slot span,.player-slot b,.player-slot small{display:block}.player-slot b{font-size:14px}.player-slot small{margin-top:3px;color:#91a9bd;font-size:9px;letter-spacing:.1em}.player-slot.ready{border-color:#75ff9a}.player-slot.ready small{color:#75ff9a}.player-slot.open{opacity:.62;border-style:dashed}.player-slot.open>i{filter:grayscale(.8)}
#online-status{min-height:24px;margin:8px 0;text-align:center;color:#b9d5e8}.friend-actions{display:flex;justify-content:center;gap:8px}.friend-actions #room-start{background:linear-gradient(#ffb649,#e46822);border-color:#ffe18c;color:#10172a;font-weight:1000}.friend-actions #room-ready{background:linear-gradient(#4bcf8e,#168a66);font-weight:900}
@media(max-width:720px){#online-panel{padding:18px 14px}.friend-setup{grid-template-columns:1fr 1fr}.friend-setup #room-create{grid-column:1/-1}.friend-code{grid-template-columns:1fr auto}.friend-code #room-invite{grid-column:1/-1}.room-lobby{grid-template-columns:1fr}.room-versus{font-size:18px}.team-side{min-height:0}.friend-actions{flex-wrap:wrap}}

#main-menu{position:fixed;inset:0;z-index:35;background:linear-gradient(110deg,rgba(7,18,34,.98),rgba(9,30,49,.94));display:grid;grid-template-columns:1fr 1fr;gap:2rem;padding:clamp(24px,5vw,80px);overflow:auto;color:#eefaff}
#main-menu.hidden{display:none}.menu-brand small{letter-spacing:.22em;color:#73dbea}.menu-brand h1{font-size:clamp(40px,6vw,84px);line-height:.96;margin:24px 0;font-style:italic}.menu-brand h1 span{color:#ff6d54}.menu-profile{align-self:center;border-left:4px solid #ffbd61;padding-left:24px}.menu-profile>span{display:block;font-size:28px;color:#ffbd61}.menu-profile strong{font-size:44px}.menu-profile p{font-size:16px}.menu-profile small{color:#a8c9d8;font-size:14px}.menu-play{display:grid;grid-template-columns:1fr 1fr;gap:12px}.menu-play label{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;font-size:16px}.menu-play button{min-height:80px;text-align:left;font-size:22px;padding:18px;background:#123b51;border:1px solid #396d81}.menu-play button span{display:block;font-size:14px;color:#b4d8e6;margin-top:8px}#menu-ranked{background:#684329;border-color:#bc8551}#menu-resume{font-size:18px}.menu-options{display:flex;gap:10px;align-content:start;align-items:start;flex-wrap:wrap}.menu-options details{width:100%;background:#0e293d;padding:14px;font-size:16px}.menu-options details button{margin:10px 0}.menu-options input{width:100%;box-sizing:border-box;padding:12px;background:#071724;color:#fff;border:1px solid #416174;font-size:14px}.menu-options input[hidden]{display:none}#menu-tools{display:flex;gap:10px;flex-wrap:wrap;padding-top:14px}select{background:#102f43;color:#fff;border:1px solid #548196;border-radius:6px;padding:10px;font-size:16px}.in-menu .brand,.in-menu .broadcast-score,.in-menu #rally-clock,.in-menu .lower-hud,.in-menu .wallet-chip,.in-menu .ability-slots,.in-menu #serve-panel,.in-menu #play,.in-menu #match-over,.in-menu #feedback,.in-menu #match-point{visibility:hidden}.in-menu #menu-toggle{visibility:hidden}#help,#ability-menu{z-index:45}#online-panel{z-index:46}#online-panel label select{display:block;width:100%}@media(max-width:700px){#main-menu{grid-template-columns:1fr;gap:24px;padding:24px}.menu-brand h1{font-size:44px;margin:12px 0}.menu-profile strong{font-size:30px}.menu-play button{font-size:18px}.menu-profile{padding-left:16px}}

.in-menu .score-title-card,.in-menu #ball-arrow,.in-menu #spike-charge{visibility:hidden}
