:root{--gold: #d4af37;--gold-light: #f0d98c;--gold-deep: #9a7b1e;--bg-0: #0b0d17;--bg-1: #141828;--bg-2: #1d2338;--panel: rgba(28, 33, 56, .92);--panel-border: rgba(212, 175, 55, .35);--text: #ece7d8;--text-dim: #a89f8a;--parchment: #f3e5c0;--red: #d9263f;--green: #1f9d55;--font-serif: "Georgia", "Times New Roman", "Songti SC", "SimSun", serif;--font-body: "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;--shadow-gold: 0 0 18px rgba(212, 175, 55, .45);--gem: 46px;--gem-sm: 24px;--gap-cards: 10px;--dev-w: 92px;--dev-h: 118px;--dev-pts: 21px;--dev-bonus: 34px;--dev-gem: 15px;--dev-n: 10px;--dev-sm-w: 56px;--dev-sm-h: 74px;--dev-sm-pts: 14px;--dev-sm-bonus: 20px;--dev-sm-gem: 11px;--dev-sm-n: 8px;--noble-w: 96px;--noble-h: 122px;--noble-req-gem: 13px;--noble-badge: 12px;--noble-sm-w: 60px;--noble-sm-h: 78px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--text);background:radial-gradient(1200px 700px at 75% -10%,rgba(212,175,55,.13),transparent 60%),radial-gradient(900px 600px at 10% 110%,rgba(60,90,160,.16),transparent 60%),linear-gradient(160deg,var(--bg-0),var(--bg-1) 55%,#10131f);background-attachment:fixed;overflow-x:hidden}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit}.btn{border:1px solid var(--panel-border);background:linear-gradient(180deg,#2a3050,#1b2036);color:var(--text);padding:10px 22px;border-radius:8px;font-size:15px;letter-spacing:1px;transition:all .18s ease}.btn:hover:not(:disabled){border-color:var(--gold);box-shadow:var(--shadow-gold);transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-gold{background:linear-gradient(180deg,#f0d98c,#d4af37 45%,#a8842a);color:#241c05;font-weight:700;border-color:#ffe9a8;text-shadow:0 1px 0 rgba(255,255,255,.35)}.btn-gold:hover:not(:disabled){box-shadow:0 0 24px #f0d98c8c}.btn-danger{border-color:#d9263f80;color:#ff9aa8}.btn-sm{padding:6px 14px;font-size:13px}.btn-block{width:100%}.input{width:100%;padding:11px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.14);background:#0a0c16a6;color:var(--text);font-size:15px;outline:none;transition:border-color .18s,box-shadow .18s}.input::placeholder{color:#ece7d859}.input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #d4af372e}.page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px 16px}.page-title{font-family:var(--font-serif);font-size:30px;color:var(--gold-light);text-shadow:0 2px 18px rgba(212,175,55,.35);letter-spacing:6px;margin-bottom:6px}.page-subtitle{color:var(--text-dim);font-size:14px;letter-spacing:2px;margin-bottom:26px}.ornament{display:flex;align-items:center;gap:12px;color:var(--gold);opacity:.7;margin:14px 0 20px;width:100%;max-width:420px}.ornament:before,.ornament:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.ornament span{font-size:14px;letter-spacing:4px}.lang-switch{position:fixed;top:14px;right:14px;z-index:300;display:flex;gap:6px}.lang-switch button,.lang-switch a{background:#1c2138d9;border:1px solid var(--panel-border);color:var(--text-dim);padding:5px 12px;border-radius:20px;font-size:13px;transition:all .18s;text-decoration:none;display:inline-block}.lang-switch button.active,.lang-switch a.active{color:#241c05;background:linear-gradient(180deg,#f0d98c,#d4af37);border-color:#ffe9a8;font-weight:700}.login-page{justify-content:center;background:radial-gradient(900px 500px at 50% -10%,rgba(212,175,55,.16),transparent 60%),radial-gradient(700px 500px at 90% 110%,rgba(60,90,160,.18),transparent 60%),linear-gradient(160deg,var(--bg-0),var(--bg-1) 55%,#10131f)}.login-page.has-bg{background:linear-gradient(#0b0d17c7,#0b0d17db),url(/assets/bg-lobby.webp) center / cover no-repeat fixed}.login-title{font-family:var(--font-serif);font-size:52px;letter-spacing:10px;background:linear-gradient(180deg,#fff3d0,var(--gold) 60%,#8a6d1f);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 0 40px rgba(212,175,55,.25)}.login-gem{font-size:40px;margin-bottom:10px;animation:gemFloat 3.2s ease-in-out infinite}@keyframes gemFloat{0%,to{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-10px) rotate(6deg)}}.login-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:30px 30px 26px;box-shadow:0 24px 60px #00000080,inset 0 1px #ffffff0f;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login-field{margin-bottom:14px}.login-field label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px;letter-spacing:1px}.login-error{min-height:20px;color:#ff9aa8;font-size:13px;margin:6px 0 10px;text-align:center}.login-switch{margin-top:16px;text-align:center;font-size:13px;color:var(--text-dim)}.login-switch a{color:var(--gold-light);cursor:pointer;text-decoration:underline}.profile-pop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#05060cb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.profile-pop-card{width:92%;max-width:460px;max-height:86vh;overflow-y:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:26px;box-shadow:0 30px 80px #0009}.avatar-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin:14px 0 6px}.avatar-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:26px;border-radius:10px;border:2px solid transparent;background:#ffffff0d;cursor:pointer;transition:all .15s}.avatar-cell:hover{border-color:var(--gold);transform:scale(1.08)}.avatar-cell.selected{border-color:var(--gold);box-shadow:0 0 14px #d4af3780;background:#d4af3724}.avatar-cell img{width:100%;height:100%;object-fit:cover;border-radius:8px}.avatar-lg{font-size:52px;line-height:1;filter:drop-shadow(0 4px 12px rgba(0,0,0,.45))}.avatar-md{font-size:30px;line-height:1}.avatar-sm{font-size:20px;line-height:1}.avatar-img-lg{width:64px;height:64px;object-fit:cover;border-radius:50%;border:2px solid var(--gold)}.lobby-page{justify-content:flex-start;background:linear-gradient(#0b0d17d1,#0b0d17e6),url(/assets/bg-lobby.webp) center / cover no-repeat fixed}.lobby-top{width:100%;max-width:900px;display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.lobby-user{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--panel-border);border-radius:40px;padding:6px 16px 6px 8px}.lobby-user .uname{font-size:14px;color:var(--text);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lobby-user .edit{color:var(--text-dim);font-size:12px;cursor:pointer;border-left:1px solid rgba(255,255,255,.15);padding-left:10px}.lobby-user .edit:hover{color:var(--gold-light)}.lobby-grid{display:grid;grid-template-columns:340px 1fr;gap:20px;width:100%;max-width:900px}.card-panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:22px;box-shadow:0 18px 44px #0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.card-panel h3{font-family:var(--font-serif);color:var(--gold-light);letter-spacing:3px;font-size:17px;margin-bottom:14px;display:flex;align-items:center;gap:8px}.room-code-big{font-family:var(--font-serif);font-size:44px;letter-spacing:12px;text-align:center;color:var(--gold-light);text-shadow:0 0 24px rgba(212,175,55,.5);background:#d4af3714;border:1px dashed var(--gold);border-radius:12px;padding:14px 0;margin:6px 0 12px;-webkit-user-select:all;user-select:all}.room-players{display:flex;flex-direction:column;gap:8px;margin:12px 0 16px}.room-player{display:flex;align-items:center;gap:10px;background:#ffffff0b;border:1px solid rgba(255,255,255,.07);border-radius:10px;padding:8px 12px}.room-player .pname{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge-host{font-size:11px;color:#241c05;background:linear-gradient(180deg,#f0d98c,#d4af37);border-radius:10px;padding:2px 8px;font-weight:700}.badge-offline{font-size:11px;color:var(--text-dim);border:1px solid rgba(255,255,255,.2);border-radius:10px;padding:2px 8px}.empty-hint{color:var(--text-dim);font-size:13px;text-align:center;padding:16px 0}.chat-box{margin-top:20px;display:flex;flex-direction:column;gap:8px;max-height:220px}.chat-msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;min-height:90px;max-height:170px;padding-right:4px}.chat-msg{font-size:13px;line-height:1.5;word-break:break-word}.chat-msg .who{color:var(--gold-light);font-weight:600;margin-right:6px}.chat-msg.mine .who{color:#7fd4a0}.chat-input-row{display:flex;gap:8px}.game-page{padding:0 14px 14px;min-height:100vh;justify-content:flex-start}.game-topbar{width:100%;max-width:1240px;display:flex;align-items:center;justify-content:space-between;padding:10px 2px;gap:10px}.game-topbar .tleft,.game-topbar .tright{display:flex;align-items:center;gap:10px}.turn-banner{font-family:var(--font-serif);font-size:15px;letter-spacing:2px;padding:6px 16px;border-radius:20px;border:1px solid var(--panel-border);background:var(--panel);color:var(--text-dim)}.turn-banner.mine{color:#241c05;background:linear-gradient(180deg,#f7e7b3,var(--gold));border-color:#ffe9a8;box-shadow:0 0 20px #f0d98c99;animation:pulseGold 1.6s ease-in-out infinite}@keyframes pulseGold{0%,to{box-shadow:0 0 10px #f0d98c59}50%{box-shadow:0 0 26px #f0d98ccc}}.game-main{width:100%;max-width:1240px;display:grid;grid-template-columns:1fr 340px;gap:14px}.game-board{background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:14px;box-shadow:0 18px 44px #0006;display:flex;flex-direction:column;gap:12px}.nobles-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;padding:6px 0 10px;border-bottom:1px solid rgba(212,175,55,.18)}.table-row{display:flex;flex-direction:column;gap:8px}.table-row-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim);letter-spacing:2px}.table-cards{display:flex;gap:var(--gap-cards);justify-content:center;min-height:var(--dev-h);flex-wrap:wrap}.pool-area{display:flex;flex-direction:column;gap:8px;border-top:1px solid rgba(212,175,55,.18);padding-top:12px}.pool-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;align-items:flex-end}.game-side{display:flex;flex-direction:column;gap:12px}.action-panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:14px}.action-panel h3{font-family:var(--font-serif);color:var(--gold-light);letter-spacing:2px;font-size:15px;margin-bottom:10px}.action-buttons{display:flex;flex-direction:column;gap:8px}.action-msg{font-size:13px;color:var(--text-dim);line-height:1.6;margin-bottom:8px}.game-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:350;background:linear-gradient(180deg,#2a3050,#1b2036);border:1px solid var(--gold);color:var(--gold-light);padding:10px 22px;border-radius:24px;font-size:14px;box-shadow:0 8px 30px #00000080;max-width:86vw;text-align:center}.players-col{display:flex;flex-direction:column;gap:10px}.playerpanel{background:var(--panel);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:10px 12px;transition:all .25s ease}.playerpanel.me{border-color:var(--gold);background:linear-gradient(180deg,rgba(212,175,55,.1),var(--panel))}.playerpanel.active{border-color:var(--gold-light);box-shadow:0 0 16px #f0d98c59}.playerpanel.active .pp-name{color:var(--gold-light)}.pp-head{display:flex;align-items:center;gap:10px}.pp-name{font-size:14px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-points{font-family:var(--font-serif);font-size:20px;color:var(--gold-light);background:#d4af371f;border:1px solid rgba(212,175,55,.4);border-radius:50%;min-width:40px;height:40px;display:flex;align-items:center;justify-content:center}.pp-stats{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--text-dim)}.pp-gems{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.pp-cards-row,.pp-reserved-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;min-height:24px}.pp-label{font-size:11px;color:var(--text-dim);letter-spacing:1px;margin-top:6px}.gem{width:var(--gem);height:var(--gem);position:relative;display:inline-flex;align-items:center;justify-content:center;cursor:default;filter:drop-shadow(0 3px 6px rgba(0,0,0,.45));transition:transform .15s ease}.gem svg{width:100%;height:100%}.gem-sm{width:var(--gem-sm);height:var(--gem-sm);filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.gem-stack{position:relative}.gem-stack .count{position:absolute;bottom:-5px;right:-7px;background:linear-gradient(180deg,#f7e7b3,var(--gold));color:#241c05;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 2px 6px #00000080}.gem-selectable{cursor:pointer}.gem-selectable:hover{transform:translateY(-6px) scale(1.12);filter:drop-shadow(0 6px 12px rgba(240,217,140,.55))}.gem-selected{transform:translateY(-8px) scale(1.14)}.gem-selected:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;border:2px solid var(--gold-light);box-shadow:0 0 14px #f0d98ccc;animation:pulseRing 1.2s ease-in-out infinite}@keyframes pulseRing{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.12);opacity:.5}}.gem-disabled{opacity:.28;cursor:not-allowed}.gem-shimmer{animation:gemShimmer 3.6s ease-in-out infinite;transform-box:fill-box}@keyframes gemShimmer{0%{transform:translate(0);opacity:0}10%{opacity:.9}28%{opacity:0;transform:translate(200px)}to{transform:translate(200px);opacity:0}}@media (prefers-reduced-motion: reduce){.gem-shimmer{animation:none}}.ad-slot{width:100%;max-width:900px;min-height:90px;margin:20px auto 4px;display:flex;justify-content:center;align-items:center;overflow:hidden}.ad-slot-narrow{max-width:420px}.devcard{width:var(--dev-w);height:var(--dev-h);border-radius:8px;position:relative;background:linear-gradient(160deg,#262c42,#171b2b);border:2px solid;box-shadow:0 6px 16px #00000080,inset 0 1px #ffffff1f;display:flex;flex-direction:column;align-items:center;padding:6px 4px;transition:transform .16s ease,box-shadow .16s ease;flex-shrink:0;overflow:hidden}.devcard:before{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:5px;border:1px solid rgba(255,255,255,.1);pointer-events:none}.devcard-art{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;opacity:.88;pointer-events:none}.devcard-art:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(10,12,22,.52),transparent 30%,transparent 52%,rgba(10,12,22,.82))}.devcard-level-1{border-color:#9aa7b8}.devcard-level-2{border-color:var(--gold)}.devcard-level-3{border-color:#a86fd4}.devcard-level-1:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(90px 60px at 50% 0%,rgba(255,255,255,.12),transparent)}.devcard-level-2:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(90px 60px at 50% 0%,rgba(240,217,140,.16),transparent)}.devcard-level-3:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(90px 60px at 50% 0%,rgba(190,140,240,.16),transparent)}.devcard-points{font-family:var(--font-serif);font-size:var(--dev-pts);font-weight:700;color:var(--parchment);text-shadow:0 2px 6px rgba(0,0,0,.6);position:relative;z-index:1;min-height:24px;line-height:1;padding-top:2px}.devcard-points.zero{color:transparent}.devcard-bonus{position:relative;z-index:1;width:var(--dev-bonus);height:var(--dev-bonus);margin:2px 0}.devcard-cost{position:relative;z-index:1;display:flex;flex-direction:column;gap:3px;margin-top:auto}.cost-item{display:flex;align-items:center;gap:3px;justify-content:flex-end}.cost-item .gem{width:var(--dev-gem);height:var(--dev-gem);filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.cost-item .n{font-size:var(--dev-n);color:var(--text);min-width:8px;text-shadow:0 1px 2px rgba(0,0,0,.8)}.cost-item .n.afford{color:#8ff0b0}.devcard.interactive{cursor:pointer}.devcard.interactive:hover{transform:translateY(-6px) scale(1.05);z-index:5}.devcard.buyable{border-color:#8ff0b0;box-shadow:0 0 18px #8ff0b073,0 6px 16px #00000080;animation:buyGlow 1.6s ease-in-out infinite}@keyframes buyGlow{0%,to{box-shadow:0 0 10px #8ff0b04d,0 6px 16px #00000080}50%{box-shadow:0 0 26px #8ff0b0b3,0 6px 16px #00000080}}.devcard.reserving{border-color:#8ec9ff;box-shadow:0 0 18px #8ec9ff80}.devcard.small{width:var(--dev-sm-w);height:var(--dev-sm-h);border-width:1.5px;padding:3px 2px}.devcard.small .devcard-points{font-size:var(--dev-sm-pts)}.devcard.small .devcard-bonus{width:var(--dev-sm-bonus);height:var(--dev-sm-bonus);margin:1px 0}.devcard.small .cost-item .gem{width:var(--dev-sm-gem);height:var(--dev-sm-gem)}.devcard.small .cost-item .n{font-size:var(--dev-sm-n)}.devcard.small .cost-item{gap:2px}.deck-back{width:var(--dev-w);height:var(--dev-h);border-radius:8px;background:repeating-linear-gradient(45deg,rgba(212,175,55,.12) 0 6px,transparent 6px 12px),linear-gradient(160deg,#2c3249,#191d2e);border:2px solid var(--gold);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--gold-light);font-family:var(--font-serif);letter-spacing:2px;box-shadow:0 6px 16px #00000080;cursor:pointer;transition:transform .15s;flex-shrink:0}.deck-back:hover{transform:translateY(-4px);box-shadow:0 0 18px #f0d98c80}.deck-back .diamond{font-size:26px}.deck-back .empty{opacity:.4}.devcard.hidden-card{border-color:#5a6478;background:repeating-linear-gradient(45deg,rgba(255,255,255,.05) 0 5px,transparent 5px 10px),linear-gradient(160deg,#22263a,#14161f)}.devcard.hidden-card .devcard-points{color:var(--text-dim)}.devcard.hidden-card .devcard-bonus{opacity:.25}.noblecard{width:var(--noble-w);height:var(--noble-h);border-radius:8px;position:relative;background:linear-gradient(165deg,#3a2f1e,#221a0e);border:2px solid var(--gold);box-shadow:0 8px 20px #0000008c,inset 0 0 18px #d4af3729;display:flex;flex-direction:column;align-items:center;padding:4px;overflow:hidden;flex-shrink:0}.noblecard-img{width:100%;flex:1;min-height:0;object-fit:cover;border-radius:4px;border:1px solid rgba(212,175,55,.4)}.noblecard-req{display:flex;gap:2px;align-items:center;justify-content:center;margin-top:3px}.noblecard-req .gem{width:var(--noble-req-gem);height:var(--noble-req-gem);filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.noblecard-req .n{font-size:9px;color:var(--text);margin-right:3px;text-shadow:0 1px 2px rgba(0,0,0,.8)}.noblecard .pts-badge{position:absolute;top:4px;right:4px;background:linear-gradient(180deg,#f7e7b3,var(--gold));color:#241c05;font-family:var(--font-serif);font-weight:700;font-size:var(--noble-badge);border-radius:10px;padding:1px 7px;box-shadow:0 2px 6px #00000080}.noblecard.achieved{filter:grayscale(.9) brightness(.75);border-color:#6b5c2e}.noblecard.small{width:var(--noble-sm-w);height:var(--noble-sm-h);padding:2px}.noblecard.small .noblecard-req .gem{width:10px;height:10px}.noblecard.small .pts-badge{font-size:9px;padding:0 5px}.nobleanim-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 40%,#3c2c10e0,#06070ef0);animation:overlayIn .45s ease-out;overflow:hidden;pointer-events:none}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.nobleanim-frame{position:relative;display:flex;flex-direction:column;align-items:center}.nobleanim-portrait{width:min(340px,60vw);max-height:58vh;object-fit:contain;border-radius:18px;border:3px solid var(--gold);box-shadow:0 0 60px #f0d98c8c,0 30px 80px #000000b3;animation:portraitIn .7s cubic-bezier(.2,1.4,.4,1)}@keyframes portraitIn{0%{transform:scale(.3) translateY(60px);opacity:0}60%{transform:scale(1.08) translateY(-6px);opacity:1}to{transform:scale(1) translateY(0)}}.nobleanim-name{font-family:var(--font-serif);font-size:30px;letter-spacing:6px;color:var(--gold-light);margin-top:18px;text-shadow:0 0 24px rgba(212,175,55,.8);animation:textIn .6s .3s both}.nobleanim-sub{font-size:16px;color:var(--text-dim);letter-spacing:2px;margin-top:6px;animation:textIn .6s .5s both}@keyframes textIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.nobleanim-points{font-family:var(--font-serif);font-size:44px;font-weight:700;color:#fff3d0;text-shadow:0 0 30px rgba(255,243,208,.9);animation:pointsFloat 1.4s .7s both}@keyframes pointsFloat{0%{opacity:0;transform:translateY(24px) scale(.6)}25%{opacity:1;transform:translateY(0) scale(1.25)}to{opacity:1;transform:translateY(0) scale(1)}}.nobleanim-particle{position:absolute;border-radius:50%;pointer-events:none;animation:particleUp linear both}@keyframes particleUp{0%{transform:translateY(0) scale(1);opacity:.95}to{transform:translateY(-46vh) scale(.25);opacity:0}}.nobleanim-glow{position:absolute;top:-8%;right:-8%;bottom:-8%;left:-8%;background:radial-gradient(circle,rgba(240,217,140,.28),transparent 65%);animation:glowPulse 1.8s ease-in-out infinite;pointer-events:none}@keyframes glowPulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;display:flex;align-items:center;justify-content:center;background:#05060cbf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:16px}.modal-card{width:100%;max-width:560px;max-height:86vh;overflow-y:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:26px 28px;box-shadow:0 30px 80px #000000a6;position:relative}.modal-card h2{font-family:var(--font-serif);color:var(--gold-light);letter-spacing:4px;margin-bottom:14px;font-size:22px;text-align:center}.modal-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--text-dim);font-size:22px;cursor:pointer;line-height:1}.modal-close:hover{color:var(--gold-light)}.rules-block{margin-bottom:14px}.rules-block h4{color:var(--gold);font-size:14px;letter-spacing:2px;margin-bottom:5px}.rules-block p,.rules-block li{font-size:13px;line-height:1.8;color:var(--text)}.rules-block ul{padding-left:18px}.rules-page{justify-content:flex-start;padding-top:70px}.rules-title{font-family:var(--font-serif);font-size:30px;letter-spacing:4px;color:var(--gold-light);text-align:center;text-shadow:0 2px 18px rgba(212,175,55,.35);margin-bottom:8px}.rules-content{width:100%;max-width:760px}.rules-link{color:var(--gold);font-size:13px;letter-spacing:1px;text-decoration:none;opacity:.85;transition:opacity .18s;margin-top:16px}.rules-link:hover{opacity:1;text-decoration:underline}.rank-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}.rank-item{display:flex;align-items:center;gap:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px 14px}.rank-item .rank-no{font-family:var(--font-serif);font-size:20px;color:var(--gold-light);width:34px;text-align:center}.rank-item.winner{border-color:var(--gold);background:#d4af371f;box-shadow:0 0 16px #d4af374d}.rank-item .rname{flex:1;font-size:15px}.rank-item .rpts{font-family:var(--font-serif);font-size:18px;color:var(--gold-light)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d4af374d;border-radius:4px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 900px){:root{--gem: 32px;--gem-sm: 18px;--gap-cards: 5px;--dev-w: 54px;--dev-h: 70px;--dev-pts: 12px;--dev-bonus: 24px;--dev-gem: 12px;--dev-n: 8px;--dev-sm-w: 42px;--dev-sm-h: 56px;--dev-sm-pts: 10px;--dev-sm-bonus: 15px;--dev-sm-gem: 8px;--dev-sm-n: 7px;--noble-w: 58px;--noble-h: 74px;--noble-req-gem: 9px;--noble-badge: 9px;--noble-sm-w: 44px;--noble-sm-h: 58px}.lobby-grid{grid-template-columns:1fr}.login-title{font-size:36px;letter-spacing:6px}.avatar-grid{grid-template-columns:repeat(6,1fr)}.game-page{padding:0 8px 10px}.game-topbar{padding:6px 2px;gap:6px}.game-topbar .btn-sm{padding:4px 10px;font-size:12px}.turn-banner{font-size:12px;padding:4px 10px;letter-spacing:1px}.lang-switch{top:8px;right:8px}.lang-switch button{padding:3px 9px;font-size:12px}.game-main{grid-template-columns:1fr;gap:10px}.game-board{padding:10px;gap:8px;border-radius:12px}.nobles-row{gap:5px;padding:2px 0 6px}.table-row{gap:4px}.table-row-label{display:none}.deck-back{gap:3px}.deck-back .diamond{font-size:16px}.deck-back span{font-size:10px}.pool-area{gap:6px;padding-top:8px}.pool-row{gap:7px}.game-side{padding-bottom:96px}.action-panel{position:fixed;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));z-index:120;padding:8px 10px;border-radius:12px;box-shadow:0 -6px 30px #0000008c}.action-panel.dock-hidden,.action-panel h3{display:none}.action-buttons{gap:6px}.action-panel .action-msg{font-size:12px;margin-bottom:6px}.action-panel .btn{padding:9px 8px;font-size:13px}.action-panel .pp-gems{justify-content:center}.pool-hint{display:none}.game-toast{bottom:max(96px,calc(env(safe-area-inset-bottom) + 88px))}.players-col{flex-direction:row;flex-wrap:wrap;gap:8px}.playerpanel{flex:1 1 45%;min-width:0;padding:8px 10px;border-radius:10px}.playerpanel .pp-head{gap:7px}.playerpanel .pp-name{font-size:13px}.playerpanel .pp-points{min-width:30px;height:30px;font-size:15px}.playerpanel .pp-stats{display:none}.playerpanel .pp-gems{gap:1px;margin-top:6px}.playerpanel .pp-label{font-size:10px;margin-top:4px}.playerpanel .pp-cards-row,.playerpanel .pp-reserved-row{flex-wrap:nowrap;overflow-x:auto;margin-top:4px;padding-bottom:2px}}
