/* 联网双人对战：大厅 / 房间 / 换牌 / 战报侧栏 */
.net-lobby, .net-room {
  max-width: 720px;
  margin: 0 auto;
  padding: 1.5rem 1.25rem 3rem;
  display: grid;
  gap: 1rem;
}
.net-lobby__title { margin: 0; font-size: 1.5rem; letter-spacing: .04em; }
.net-lobby__note { color: #8e8770; font-size: .9rem; line-height: 1.7; }
.net-lobby__note code { background: rgba(201,168,94,.12); padding: .1em .4em; border-radius: 4px; color: #e8d49a; }
.net-lobby__row { display: flex; gap: .6rem; align-items: center; }
.net-input {
  flex: 1;
  padding: .6rem .8rem;
  border-radius: 8px;
  border: 1px solid rgba(143,116,52,.4);
  background: rgba(12,15,15,.7);
  color: #efe6d5;
  font: inherit;
}
.net-input--code { max-width: 12ch; text-transform: uppercase; letter-spacing: .2em; text-align: center; }
.net-select {
  padding: .6rem .8rem;
  border-radius: 8px;
  border: 1px solid rgba(143,116,52,.4);
  background: rgba(12,15,15,.7);
  color: #efe6d5;
  font: inherit;
  width: 100%;
}
.net-status { min-height: 1.4em; font-size: .85rem; color: #8e8770; }
.net-status[data-tone="err"] { color: #e08a7a; }

.net-room__code { color: #c6bda4; font-size: .95rem; }
.net-room__code strong { color: #e8d49a; letter-spacing: .2em; font-size: 1.2rem; }
.net-players { display: grid; gap: .5rem; }
.net-player {
  display: flex; align-items: center; gap: .7rem;
  padding: .6rem .8rem; border-radius: 8px;
  border: 1px solid rgba(143,116,52,.25);
  background: rgba(12,15,15,.5);
}
.net-player[data-me="1"] { border-color: rgba(201,168,94,.6); }
.net-player__dot { width: 10px; height: 10px; border-radius: 50%; background: #6b6250; }
.net-player__dot[data-on="1"] { background: #7fc97f; box-shadow: 0 0 8px rgba(127,201,127,.5); }
.net-player__name { color: #efe6d5; }
.net-player__deck { margin-left: auto; color: #8e8770; font-size: .85rem; }

/* 换牌 */
.net-mulligan {
  position: fixed; inset: 0; z-index: 40;
  display: grid; align-content: center;
  background: rgba(6,8,10,.82); backdrop-filter: blur(4px);
}
.net-mulligan__card {
  max-width: 640px; margin: 0 auto; padding: 1.5rem;
  border-radius: 12px; border: 1px solid rgba(201,168,94,.3);
  background: linear-gradient(180deg, #14120f, #0d0b08);
  display: grid; gap: 1rem;
}
.net-mulligan__title { margin: 0; font-size: 1.3rem; }
.net-mulligan__note { color: #8e8770; font-size: .9rem; }
.net-mulligan__hand { display: flex; flex-wrap: wrap; gap: .5rem; }
.net-mh-card {
  width: 84px; min-height: 60px; padding: .4rem;
  border-radius: 8px; border: 1px solid rgba(143,116,52,.4);
  background: rgba(20,18,15,.9); color: #efe6d5;
  font-size: .78rem; white-space: pre-line; cursor: pointer;
  transition: border-color .15s, transform .15s;
}
.net-mh-card:hover { border-color: rgba(201,168,94,.7); }
.net-mh-card.is-sel { border-color: #e8d49a; transform: translateY(-4px); box-shadow: 0 4px 12px rgba(201,168,94,.3); }
.net-mulligan__actions { display: flex; gap: .6rem; justify-content: flex-end; }

/* 战报侧栏 */
.net-log {
  max-width: 720px; margin: .75rem auto 0; padding: .5rem .75rem;
  border-radius: 8px; border: 1px solid rgba(143,116,52,.2);
  background: rgba(12,15,15,.5);
  max-height: 140px; overflow-y: auto;
}
.net-log ol { margin: 0; padding-left: 1.1rem; display: grid; gap: .15rem; }
.net-log li { font-size: .8rem; color: #c6bda4; line-height: 1.5; }

.net-toast {
  position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%);
  padding: .5rem 1rem; border-radius: 8px;
  background: rgba(28,22,11,.95); color: #e8d49a;
  border: 1px solid rgba(201,168,94,.5);
  font-size: .85rem; z-index: 50;
}

#net-hud-side[data-turn="1"] { color: #7fc97f; }
#net-hud-side[data-turn="0"] { color: #c6bda4; }
