/* 画廊主题：沿用 modern-art.html 的视觉，另加大厅/房间/联机状态样式 */
:root{--g:#d8b25a}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;color:#eef0e6;font:14px/1.45 "PingFang SC","Microsoft YaHei",system-ui,sans-serif;min-height:100vh;
  background:radial-gradient(ellipse at 50% -20%,#3e7a66 0,#1a3a31 45%,#0d1b17 100%) fixed}
body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.5;background:repeating-linear-gradient(45deg,#ffffff07 0 2px,transparent 2px 5px)}
#app{max-width:1060px;margin:auto;padding:10px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;position:relative}
#app>*{min-width:0}
header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px}
h1{font:700 22px Georgia,"Songti SC",serif;letter-spacing:3px;color:var(--g);margin:0}
h1 small{font:400 13px "PingFang SC",sans-serif;letter-spacing:2px;color:#cfe0d6}
h2{font-family:Georgia,"Songti SC",serif;margin:0 0 8px;color:var(--g)}
section,.box{background:linear-gradient(#ffffff12,#0003);border:1px solid #ffffff22;border-radius:14px;padding:10px;box-shadow:0 8px 24px #0006}
small{color:#a9bbb0}
.pill{background:#0005;border:1px solid #ffffff2a;padding:5px 14px;border-radius:99px;margin-left:6px}
.hdr{display:flex;align-items:center;flex-wrap:wrap;gap:4px}

/* 画廊墙 */
#board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.ar{text-align:center;background:#0003;border-radius:10px;padding:8px 4px;border-top:4px solid var(--c);transition:box-shadow .3s}
.ar.top{box-shadow:0 0 18px color-mix(in srgb,var(--c) 55%,transparent)}
.wall{width:74px;margin:0 auto;padding:4px;background:linear-gradient(135deg,var(--c),#fffa 45%,var(--c));border-radius:3px;box-shadow:0 4px 9px #000a}
.wall img{width:100%;height:50px;display:block;object-fit:cover}
.an{font:700 13px Georgia,"Songti SC",serif;margin-top:6px}
.pips{display:flex;gap:3px;justify-content:center;margin:4px 0}
.pips i{width:12px;height:12px;border:1px solid var(--c);border-radius:2px}.pips i.f{background:var(--c)}
.pips i.n{animation:pop .45s}
.toks{min-height:24px}
.tok{display:inline-flex;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff2b8,#d8b25a 55%,#8d6a1c);color:#3a2a05;font:700 11px Georgia,serif;align-items:center;justify-content:center;margin:1px;box-shadow:0 2px 3px #0008}

/* 玩家栏 */
#players{display:flex;gap:8px;flex-wrap:wrap}
.pl{flex:1;min-width:150px;padding:6px 8px;border-radius:8px;background:#0004;border:1px solid transparent;display:flex;align-items:center}
.pl.cur{border-color:var(--g);animation:glow 1.8s infinite}
.pl.wait{border-color:#8ff0a8aa}
.pl.off{opacity:.55}
.av{display:inline-flex;width:32px;height:32px;border-radius:50%;align-items:center;justify-content:center;font-weight:700;margin-right:8px;flex:none;border:2px solid #fff7;color:#fff}
.dot{display:inline-block;min-width:20px;padding:0 5px;border-radius:9px;color:#111;font-size:12px;text-align:center;margin:1px;font-weight:700}
.badge{font-size:11px;padding:0 6px;border-radius:8px;background:#ffffff1f;margin-left:4px;color:#dfe9e2}

/* 舞台 */
#sc{display:flex;gap:14px;align-items:center;justify-content:center;min-height:176px;flex-wrap:wrap;background:radial-gradient(ellipse at 50% 0,#ffe9a838,transparent 65%);border-radius:10px}
#scc{display:flex;gap:14px}
#sct{max-width:340px;line-height:1.7}
#act{text-align:center;min-height:8px}
#act p{margin:6px 0}
.wait-msg{color:#cfe0d6}
.tip{margin-top:8px;padding:6px 10px;border-left:3px solid #d8b25a;background:#d8b25a22;border-radius:4px;font-size:13px;text-align:left}
.stamp{display:inline-block;margin-top:6px;padding:2px 14px;border:3px solid #e4574b;color:#ff7468;font:700 20px Georgia,serif;border-radius:6px;letter-spacing:2px;transform:rotate(-8deg);animation:stamp .35s cubic-bezier(.2,.9,.3,1) both}

/* 卡牌 */
.card{position:relative;width:88px;height:128px;padding:4px;border-radius:7px;background:linear-gradient(135deg,var(--c),#fffa 38%,var(--c) 62%,#0005);color:#222;display:flex;flex-direction:column;overflow:hidden;flex:none;transition:transform .15s;box-shadow:0 5px 12px #0008}
.card .pic{position:relative;background:#222;border-radius:2px;overflow:hidden;line-height:0}
.card .pic img{width:100%;height:78px;display:block;object-fit:cover}
.cap{position:absolute;left:0;right:0;bottom:0;padding:8px 3px 1px;background:linear-gradient(#0000,#000c);color:#fff;font-size:10px;line-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lab{background:#f6f1e4;margin-top:3px;border-radius:2px;padding:1px 3px;display:flex;flex-direction:column}
.lab b{font-size:11px;white-space:nowrap}
.lab i{font-size:11px;font-style:normal;color:#555}
.ty{position:absolute;left:7px;top:7px;font-style:normal;font-size:13px;background:#000a;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center}
.card.big{width:112px;height:164px}.card.big .pic img{height:104px}
.card.big .cap{font-size:11px;line-height:15px}
.card.big .lab b{font-size:13px}.card.big .lab i{font-size:12px}
.card.deal{animation:deal .55s cubic-bezier(.2,.8,.3,1) backwards}
.card.fly{animation:pop .5s cubic-bezier(.2,.9,.3,1.2)}
#hand{display:flex;justify-content:center;flex-wrap:nowrap;min-height:134px;padding:16px 0 4px;gap:0}
#hand .card:hover{z-index:5}
#hand .card.no{opacity:.4;filter:grayscale(.7)}
#hand .card.ok{cursor:pointer;transform:translateY(-8px);box-shadow:0 8px 16px #000a}
#hand .card.ok:hover{transform:translateY(-20px) scale(1.07)}
#log{max-height:110px;overflow:auto;font-size:12px;color:#b9c9bd}

/* 按钮与输入 */
button{background:var(--g);border:0;color:#251d08;padding:7px 15px;border-radius:7px;font-weight:700;cursor:pointer;margin:2px;font-size:14px;transition:.15s;box-shadow:0 3px 0 #8a6d2a;font-family:inherit}
button:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}
button:active:not(:disabled){transform:translateY(2px);box-shadow:none}
button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
button.hb,button.sec{box-shadow:none;background:#0005;color:#d8b25a;border:1px solid #d8b25a88;padding:5px 12px}
button.danger{background:#0005;color:#ff9b90;border:1px solid #ff9b9088;box-shadow:none}
input,select{padding:6px 8px;border-radius:6px;border:1px solid #888;width:84px;background:#fbf9ef;font-size:14px;color:#222;font-family:inherit}
input.wide{width:100%}
input.code{letter-spacing:6px;text-transform:uppercase;text-align:center;font:700 20px Georgia,serif}

/* 弹层 */
#modal,#help{position:fixed;inset:0;background:#000b;backdrop-filter:blur(10px);display:none;align-items:center;justify-content:center;z-index:30;animation:fade .25s}
#modal.on,#help.on{display:flex}
#help{z-index:40}
#modal .box,#help .box{background:#1b2f29;max-width:520px;width:92%;max-height:92vh;overflow:auto;animation:pop .35s}
#help p{margin:6px 0}#help li{margin:5px 0}#help ul{padding-left:18px;margin:6px 0}
.hn{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.hc{display:flex;gap:10px;align-items:center;justify-content:center;margin:8px 0}
.sumrow{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #ffffff14}

/* 大厅 / 房间 */
.wrap{max-width:560px;margin:0 auto;padding:22px 12px 40px;display:grid;gap:14px;position:relative}
.hero{text-align:center;padding:18px 0 4px}
.hero h1{font-size:34px;letter-spacing:6px}
.hero p{color:#cfe0d6;margin:8px 0 0}
.hero .wall-row{display:flex;gap:8px;justify-content:center;margin-top:14px}
.hero .wall-row .wall{width:54px;margin:0}
.hero .wall-row .wall img{height:40px}
.tabs{display:flex;gap:6px;margin-bottom:10px}
.tabs button{flex:1;box-shadow:none;background:#0004;color:#cfe0d6;border:1px solid #ffffff2a}
.tabs button.on{background:var(--g);color:#251d08;border-color:var(--g)}
label.f{display:block;margin:10px 0 4px;color:#cfe0d6}
.counts{display:flex;gap:8px}
.counts button{flex:1;box-shadow:none;background:#0004;color:#cfe0d6;border:1px solid #ffffff2a;padding:10px 0}
.counts button.on{background:var(--g);color:#251d08}
.full{width:100%;margin:12px 0 0;padding:11px}
.roomcode{display:flex;align-items:center;justify-content:center;gap:10px;margin:2px 0 10px}
.roomcode strong{font:700 34px Georgia,serif;letter-spacing:8px;color:var(--g)}
.seat{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:#0004;border:1px solid #ffffff1a;margin:6px 0}
.seat.me{border-color:var(--g)}
.seat.empty{border-style:dashed;color:#a9bbb0}
.seat .nm{flex:1}
.seat .st{font-size:12px;color:#8ff0a8}
.seat .st.off{color:#ff9b90}
.note{color:#cfe0d6;margin:10px 0 0;font-size:13px}
.row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:8px}
#conn{position:fixed;top:0;left:0;right:0;z-index:60;background:#b3402f;color:#fff;text-align:center;padding:6px;font-weight:700}
#toasts .msg{position:fixed;top:56px;left:50%;transform:translateX(-50%);background:#2a1c14;border:1px solid #e4574b;color:#ffb3a8;padding:8px 16px;border-radius:10px;z-index:70;animation:rise2 3.2s ease-out forwards;max-width:90vw;text-align:center}
#toasts .msg.ok{border-color:#8ff0a8;color:#c8ffd6;background:#10281d}
.toast{position:fixed;top:72px;left:50%;margin-left:-40px;font:700 28px Georgia,serif;pointer-events:none;z-index:20;animation:rise 1.7s ease-out forwards;text-shadow:0 2px 8px #000}
.toast.up{color:#8ff0a8}.toast.dn{color:#ff8d82}

/* 房间聊天 */
#chatBtn{position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:35;width:52px;height:52px;margin:0;padding:0;border-radius:50%;font-size:24px;box-shadow:0 6px 16px #000a}
#chatBtn.new{animation:ring .5s 3}
#chatBadge{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#e4574b;color:#fff;font:700 13px/22px system-ui,sans-serif;box-shadow:0 2px 4px #0008}
#chat{position:fixed;right:14px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:35;width:min(340px,calc(100vw - 28px));height:min(440px,calc(100dvh - 120px));display:flex;flex-direction:column;background:#1b2f29;border:1px solid #d8b25a66;border-radius:14px;box-shadow:0 12px 36px #000c;animation:pop .25s}
.chat-h{display:flex;justify-content:space-between;align-items:center;padding:8px 8px 8px 12px;border-bottom:1px solid #ffffff1f;color:var(--g)}
#chatList{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px;display:flex;flex-direction:column;gap:8px}
#chatList .empty{margin:auto;color:#a9bbb0;text-align:center}
.cm{max-width:86%;align-self:flex-start}
.cm small{display:block;margin:0 4px 2px}
.cm p{margin:0;padding:6px 10px;border-radius:4px 12px 12px 12px;background:#0005;border:1px solid #ffffff1f;overflow-wrap:anywhere;user-select:text}
.cm.mine{align-self:flex-end}.cm.mine small{text-align:right}
.cm.mine p{border-radius:12px 4px 12px 12px;background:#d8b25a2e;border-color:#d8b25a66}
#chatForm{display:flex;gap:6px;padding:8px;border-top:1px solid #ffffff1f}
#chatForm input{flex:1;min-width:0;width:auto;padding:8px 10px}
#chatForm button{margin:0;flex:none}
#toasts .msg.chat{top:100px;cursor:pointer;background:#1b2f29;border-color:var(--g);color:#eef0e6;animation-duration:4.5s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 8px 24px #000a}
#toasts .msg.chat b{color:var(--g)}
#app,.wrap{padding-bottom:76px}
@keyframes ring{25%{transform:rotate(-14deg) scale(1.12)}75%{transform:rotate(14deg) scale(1.12)}}

@keyframes deal{from{opacity:0;transform:translateY(-70px) rotate(-14deg) scale(.6)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:scale(.4) rotate(-8deg)}60%{transform:scale(1.08)}to{opacity:1;transform:none}}
@keyframes stamp{from{opacity:0;transform:scale(2.6) rotate(-16deg)}to{opacity:1;transform:rotate(-8deg)}}
@keyframes glow{50%{box-shadow:0 0 22px #d8b25a}}
@keyframes rise{to{opacity:0;transform:translateY(-70px)}}
@keyframes rise2{0%,80%{opacity:1}to{opacity:0}}
@keyframes fade{from{opacity:0}}
@media(max-width:600px){
  #board{gap:3px}.ar{padding:6px 2px}.ar small{font-size:10px}.an{font-size:11px;overflow-wrap:anywhere}
  .pl{flex:1 1 calc(50% - 8px);min-width:0}.pl>div{min-width:0}
  .hdr{gap:2px}.pill{margin-left:0;padding:4px 10px}
  #sc{gap:8px}#scc{gap:8px}#sct{max-width:100%;text-align:center}
  .roomcode strong{font-size:26px;letter-spacing:5px}
  .card{width:72px;height:108px}.card .pic img{height:58px}.card.big .pic img{height:90px}.lab{padding:0 2px}
  .wall{width:50px}.ar .wall img{height:34px}
  #chat{left:0;right:0;bottom:0;width:100%;height:min(70dvh,480px);border-radius:16px 16px 0 0;border-width:1px 0 0;padding-bottom:env(safe-area-inset-bottom);z-index:36}
  #chatForm input{font-size:16px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
