:root{--bg-0:#d7bf8b;--bg-1:#9f7b42;--ink:#2a1d10;--ink-soft:#6e4f2a;--panel:#fcf1d9f0;--line:#583a1c4d;--accent:#b55a13;--accent-strong:#8f4208;--danger:#8f1010;--gem:#1f7b5f;--artifact:#91661f;--disaster:#7b2a26}*{box-sizing:border-box}body{min-height:100vh;color:var(--ink);background:linear-gradient(135deg, #4e31141f 12%, transparent 12%, transparent 50%, #4e31141f 50%, #4e31141f 62%, transparent 62%), radial-gradient(circle at 18% 8%, #fff4d66b, transparent 35%), radial-gradient(circle at 84% 12%, #f5d59a7a, transparent 36%), linear-gradient(145deg, var(--bg-0), var(--bg-1));background-size:36px 36px,auto,auto,auto;margin:0;font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,sans-serif}#app{min-height:100vh}button{cursor:pointer;border:none;border-radius:11px;padding:10px 14px;font-weight:700;transition:transform .2s,opacity .2s}button:hover:not(:disabled){transform:translateY(-1px)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);color:#fff9ef}.ghost{color:var(--ink);background:#f2dbc0}.danger{background:var(--danger);color:#fff4f4}.back-home{color:#fff7ea;background:var(--accent);border-radius:999px;padding:8px 14px;font-weight:700;text-decoration:none}.room-meta{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:13px}.field-row{flex-direction:column;gap:6px;display:flex}.field-row label{color:var(--ink-soft);font-size:13px}.field-row input{border:1px solid var(--line);color:var(--ink);background:#fffaf1;border-radius:10px;padding:10px 12px;font-size:15px}.actions{gap:10px;display:flex}.lobby-page,.game-page{width:min(1280px,100% - 32px);margin:0 auto;padding:20px 0 24px}.lobby-top{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.lobby-box,.game-empty,.player-card,.card,.round-bar,.log-panel,.table-column{border:1px solid var(--line);background:var(--panel);border-radius:16px;box-shadow:0 12px 24px #422b0f1a}.lobby-box{gap:12px;max-width:520px;margin:0 auto;padding:20px;display:grid}.game-empty{gap:10px;max-width:520px;margin:20vh auto 0;padding:20px;display:grid}.game-layout-v2{gap:12px;display:grid}.round-bar{grid-template-columns:1fr auto 1fr;align-items:center;padding:10px 14px;display:grid}.round-center{text-align:center;font-weight:700}.round-right{text-align:right}.board-v2{grid-template-columns:310px 1fr;gap:14px;display:grid}.players-column{flex-direction:column;gap:10px;display:flex}.player-card{padding:9px 10px;position:relative}.player-card h3{margin:0 0 5px;font-size:15px}.player-card p{margin:1px 0;font-size:12px}.player-card.self{outline:2px solid var(--accent)}.player-card.ready{background:#e2f2ee}.player-card small{color:var(--ink-soft);margin-left:6px;font-size:11px}.ready-badge{color:#6a4d2e;background:#f5e7ca;border:1px solid #4a341a38;border-radius:999px;padding:1px 8px;font-size:11px;position:absolute;top:8px;right:10px}.player-card.ready .ready-badge{color:#1e5f50;background:#64ad9a40;border-color:#1e5f5059}.table-column{padding:14px;position:relative;overflow:hidden}.table-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.deck-wrap{flex-direction:column;gap:8px;display:flex}.deck-stack{aspect-ratio:5/7;color:#fff;background:linear-gradient(155deg,#4d3720,#2c1f13);border:1px solid #fff3;border-radius:14px;place-items:center;width:72px;font-weight:700;display:grid;position:relative}.deck-stack:before,.deck-stack:after{content:"";border:1px solid #ffffff26;border-radius:14px;position:absolute;inset:0}.deck-stack:before{z-index:-1;background:#2c1f13bf;transform:translate(5px,-5px)}.deck-stack:after{z-index:-2;background:#2c1f138c;transform:translate(10px,-10px)}.deck-tip{color:var(--ink-soft);margin:0;font-size:12px}.table-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.state-tips{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.state-tips span{border:1px solid var(--line);color:var(--ink-soft);background:#f9efde;border-radius:999px;padding:3px 10px;font-size:12px}.cards-grid{gap:10px;margin-top:14px;display:grid}.cards-grid-v2{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));min-height:160px}.card{border:1px solid var(--line);aspect-ratio:5/7;min-height:unset;border-radius:12px;padding:8px;animation:.28s rise-in;position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;opacity:.38;background:radial-gradient(circle at 20% 15%,#ffffffa6,#0000 40%),linear-gradient(135deg,#ffffff1a,#291b0d33);position:absolute;inset:0}.card h3{z-index:1;margin:0 0 6px;font-size:13px;position:relative}.card p{z-index:1;margin:2px 0;font-size:11px;position:relative}.gem{background:linear-gradient(160deg,#d2f5ea,#82c9b7),repeating-linear-gradient(45deg,#0e664f38 0 6px,#0000 6px 12px)}.artifact{background:linear-gradient(160deg,#f3deab,#d2a855),radial-gradient(circle at 75% 18%,#ffffffa6,#0000 30%)}.disaster{background:linear-gradient(155deg,#f0cbc3,#d69186)}.disaster-fire{background:linear-gradient(165deg,#f7c2a0,#d85b2a),radial-gradient(circle at 25% 30%,#fff7dc99,#0000 35%)}.disaster-rockfall{background:linear-gradient(160deg,#d7d2c6,#9d9388),repeating-linear-gradient(45deg,#54483e2e 0 7px,#0000 7px 14px)}.disaster-gas{background:linear-gradient(160deg,#d8efbf,#94b56c),radial-gradient(circle at 70% 30%,#ffffff59,#0000 42%)}.disaster-spider{background:linear-gradient(160deg,#e1d8e8,#b39abf),repeating-linear-gradient(0deg,#44345233 0 5px,#0000 5px 10px)}.disaster-beast{background:linear-gradient(160deg,#f0d6bb,#c78a4b),repeating-linear-gradient(135deg,#7e481d2e 0 6px,#0000 6px 12px)}.table-bottom-actions{margin-top:10px}.log-panel{padding:10px 12px}.notice-banner{background:linear-gradient(160deg,#f9e3bd,#e7c78e);border:1px solid #8f5e1c73;border-radius:14px;padding:10px 14px}.notice-banner h3{margin:0;font-size:18px}.notice-banner p{margin:4px 0 0;font-size:14px}.notice-final{background:linear-gradient(160deg,#f8dfad,#d8aa62);border-color:#a5681999}.notice-final ol{margin:8px 0 0;padding-left:20px}.log-toggle{width:100%;color:var(--ink);background:#efddc1}.log-panel ul{max-height:180px;margin:10px 0 0;padding-left:16px;overflow:auto}.log-panel li{margin:4px 0;font-size:14px}.reveal-card{pointer-events:none;z-index:20;background:#120c068c;place-items:center;display:grid;position:fixed;inset:0}.reveal-card article{aspect-ratio:5/7;width:170px;animation:1s forwards reveal-hold;box-shadow:0 22px 46px #00000038}.reveal-fade-enter-active,.reveal-fade-leave-active{transition:opacity .2s}.reveal-fade-enter-from,.reveal-fade-leave-to{opacity:0}.particle-layer{pointer-events:none;z-index:30;position:fixed;inset:0}.particle{font-size:16px;animation:.9s ease-in forwards parabola;position:fixed;transform:translate(-50%,-50%)}.particle.to-pocket{color:#197865}.particle.to-camp{color:#8a661f}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-hold{0%{opacity:1;transform:translateY(-6px)}to{opacity:1;transform:translateY(-6px)}}@keyframes parabola{0%{opacity:1;transform:translate(-50%,-50%)translate(0)scale(1)}55%{transform:translate(-50%, -50%) translate(calc(var(--tx) * .55), calc(var(--ty) * .55 - 70px)) scale(1.05);opacity:1}to{transform:translate(-50%, -50%) translate(var(--tx), var(--ty)) scale(.82);opacity:0}}@media (width<=980px){.lobby-top{flex-direction:column;align-items:flex-start;gap:8px}.actions{flex-direction:column}.round-bar{grid-template-columns:1fr;gap:4px}.round-center,.round-right{text-align:left}.board-v2{grid-template-columns:1fr}}
