/* 四季只改变外观；舞台网格、圆桌尺寸、座位坐标和操作区域沿用游戏布局。 */
.topbar { background: var(--season-top); gap: 16px; }
.brand { flex-shrink: 0; }
.brand-mark { background: linear-gradient(145deg, var(--season-accent), var(--season-accent-deep)); color: var(--season-accent-ink); font-family: "STKaiti", "KaiTi", serif; }
.topbar-right { gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.btn-ghost { background: var(--season-button); border-radius: 9px; white-space: nowrap; }
.theme-quick { display: inline-flex; align-items: center; gap: 7px; color: var(--text-dim); font-size: 12px; flex-shrink: 0; }
.theme-quick select { font: inherit; font-size: 12px; color: var(--gold); background: var(--bg-card); border: 1px solid var(--line); border-radius: 9px; padding: 7px 8px; cursor: pointer; max-width: 150px; }
.theme-quick select:hover { border-color: var(--gold); }
button:focus-visible, a:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.floor { background: var(--season-floor); isolation: isolate; box-shadow: 0 12px 35px var(--season-shadow), inset 0 1px 0 var(--season-sheen); }
.season-scene { position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: inherit; overflow: hidden; }
.season-scene > svg { display: block; width: 100%; height: 100%; }
.season-note { position: absolute; top: 23px; left: 26px; display: flex; align-items: center; gap: 12px; color: var(--gold); pointer-events: none; }
.season-word { font: 36px/1.1 "STSong", "SimSun", serif; }
.season-detail { border-left: 1px solid var(--line); padding-left: 12px; }
.season-detail b { display: block; font-size: 9px; font-weight: 500; letter-spacing: 3px; }
.season-detail span { display: block; font: 12px "STSong", "SimSun", serif; letter-spacing: 2px; margin-top: 5px; color: var(--text-dim); }
.season-caption { position: absolute; bottom: 15px; left: 26px; font: 9px Georgia, serif; letter-spacing: 2px; color: var(--text-faint); opacity: .7; pointer-events: none; }
.season-corner { position: absolute; width: 26px; height: 26px; border-color: var(--gold); opacity: .25; pointer-events: none; }
.season-corner.a { left: 12px; top: 12px; border-left: 1px solid; border-top: 1px solid; border-radius: 6px 0 0; }
.season-corner.b { right: 12px; bottom: 12px; border-right: 1px solid; border-bottom: 1px solid; border-radius: 0 0 6px; }
.felt { background: var(--season-felt); }
.felt::before { content: ''; position: absolute; inset: 12px; border-radius: 50%; border: 1px solid var(--felt-border); opacity: .5; }
.season-table-art { position: absolute; inset: 12%; border-radius: 50%; overflow: hidden; pointer-events: none; color: var(--gold); opacity: .38; }
.season-table-art > svg { width: 100%; height: 100%; display: block; }
.board-title { font-family: "STSong", "SimSun", serif; font-size: 25px; font-weight: 500; letter-spacing: 4px; }
.board-phase { letter-spacing: 3px; }
.seat-disc { background: var(--season-seat); color: var(--text); border-color: var(--season-seat-line); box-shadow: 0 4px 14px var(--season-shadow), inset 0 1px 0 var(--season-sheen); }
.seat.you .seat-disc { background: var(--season-you); }
.seat.you .seat-disc, .seat.you .seat-model { color: #fff9f5; }
.seat.reading.you .seat-disc { animation: readpulse 1.15s ease-out infinite; }
.seat.claim .seat-disc { border-color: var(--seer); }
.seat.watch .seat-disc, .seat.reading .seat-disc { border-color: var(--gold); }
.seat.pickable .seat-disc { border-color: var(--ring); }
.seat.picked .seat-disc { border-color: var(--gold); }
.panel { position: relative; background: var(--bg-soft); box-shadow: 0 8px 26px var(--season-shadow), inset 0 1px 0 var(--season-sheen); }
.panel-head, .log { position: relative; z-index: 1; }
.season-ornament { position: absolute; right: -8px; bottom: 20px; width: 210px; height: 210px; pointer-events: none; color: var(--gold); opacity: .05; }
.season-ornament > svg { width: 100%; height: 100%; }
.entry-narration { background: var(--season-entry); border-radius: 10px; border: 1px solid var(--line); border-left: 2px solid var(--line); padding: 11px 14px; }
.entry-narration.warn { background: var(--wolf-wash); border-color: var(--wolf-line); }
.sp-text { background: var(--season-entry); border: 1px solid var(--line); border-radius: 10px; padding: 10px 13px; }
.btn-start, .btn-primary, .btn-target.selected { background: var(--season-you); color: #fff9f5; }
.btn-target.selected small em, .btn-target.selected small i { color: inherit; }
.seat-votes, .sp-avatar.you { background: var(--season-you); }
.season-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.season-choice { border: 1px solid var(--line); border-radius: 10px; background: var(--bg-card); color: var(--text-dim); font: inherit; font-size: 12px; padding: 10px; cursor: pointer; }
.season-choice:hover, .season-choice.on { color: var(--gold); border-color: var(--gold); background: var(--gold-soft); }
.season-motion-control { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 12px; color: var(--text-dim); margin-top: 14px; }
.season-motion-control input { accent-color: var(--gold); }
.season-scene .fall { animation: season-fall var(--dur) linear infinite; animation-delay: var(--delay); }
.season-scene .sway { transform-box: fill-box; transform-origin: top right; animation: season-sway 12s ease-in-out infinite alternate; }
.season-scene .fly { animation: season-firefly var(--dur) ease-in-out infinite alternate; animation-delay: var(--delay); }
.season-scene .waterline { animation: season-water 8s ease-in-out infinite alternate; }
.season-scene .mist { animation: season-mist 22s ease-in-out infinite alternate; }
.season-scene .moon { animation: season-moon 9s ease-in-out infinite alternate; }
.season-table-art .ripple { transform-origin: 300px 300px; animation: season-ripple 9s ease-in-out infinite; }
.season-table-art .ripple.two { animation-delay: -4.5s; }
[data-season-motion='off'] .season-scene *, [data-season-motion='off'] .season-table-art * { animation-play-state: paused !important; }
@keyframes season-fall { 0% { transform: translate(0,-100px) rotate(0deg); opacity: 0; } 10% { opacity: .8; } 85% { opacity: .55; } 100% { transform: translate(155px,1350px) rotate(260deg); opacity: 0; } }
@keyframes season-sway { from { transform: rotate(-.8deg); } to { transform: rotate(1.5deg); } }
@keyframes season-firefly { 0%,100% { opacity: .15; transform: translate(0,0); } 40% { opacity: .9; } 70% { transform: translate(12px,-24px); opacity: .4; } }
@keyframes season-water { from { transform: translateX(-12px); opacity: .4; } to { transform: translateX(12px); opacity: .8; } }
@keyframes season-mist { from { transform: translateX(-18px); } to { transform: translateX(25px); } }
@keyframes season-moon { from { opacity: .7; } to { opacity: 1; } }
@keyframes season-ripple { 0%,100% { transform: scale(.88); opacity: .1; } 50% { transform: scale(1.04); opacity: .45; } }
@media (prefers-reduced-motion: reduce) { .season-scene *, .season-table-art * { animation: none !important; } }
@media (max-width: 1300px) and (min-width: 961px) {
  .topbar { padding: 10px 16px; }
  .topbar-right { gap: 7px; }
  .topbar-right .btn-ghost { padding: 6px 10px; font-size: 12px; }
  .brand-sub { font-size: 11px; }
  .theme-quick > span { display: none; }
}
@media (max-width: 960px) {
  .topbar-right { justify-content: flex-start; }
  .theme-quick { margin-left: auto; }
  .season-note { top: 14px; left: 18px; }
  .season-word { font-size: 26px; }
  .season-detail { display: none; }
  .season-caption { display: none; }
  .floor { padding-top: 40px; }
}
@media (max-height: 740px) and (min-width: 961px) {
  .season-note { top: 13px; left: 20px; }
  .season-word { font-size: 27px; }
  .season-detail span { font-size: 10px; }
  .season-caption { display: none; }
}
