:root{--bg-deep: #0a0a0f;--bg-surface: #14141f;--bg-card: #1a1a2e;--border-subtle: #2a2a3a;--gold: #c9a84c;--gold-bright: #e8c840;--gold-dim: #8a7030;--text: #e0d8c8;--text-dim: #8888a0;--accent: #4a90d9;--success: #4ecb71;--danger: #e84040;--font-display: "Cinzel", serif;--font-body: "Lora", serif;--radius: 8px;--transition: .2s ease;--card-width: 88px;--card-height: 122px;--card-compact-width: 64px;--card-compact-height: 88px;--gem-sm: 28px;--gem-md: 44px;--gem-lg: 60px;--noble-width: 96px;--noble-height: 126px;--badge-width: 88px;--badge-height: 122px;--grid-gap: 8px;--board-padding: 6px}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg-deep);color:var(--text);font-family:var(--font-body);line-height:1.5;min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E")}#root{min-height:100vh}h1,h2,h3{font-family:var(--font-display)}h1{font-size:28px;font-weight:900;color:var(--gold-bright);letter-spacing:.04em}h2{font-size:18px;font-weight:700;color:var(--gold)}h3{font-size:14px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.lobby{display:flex;align-items:center;justify-content:center;min-height:100vh;position:relative;background:radial-gradient(ellipse at center,#1a1a30 0%,var(--bg-deep) 70%)}.lobby-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:16px;padding:48px;width:420px;max-width:90vw;text-align:center;animation:cardEnter .6s ease}@keyframes cardEnter{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.lobby:before,.lobby:after{content:"";position:absolute;border-radius:50%;pointer-events:none;animation:sparkleFloat 6s infinite ease-in-out}.lobby:before{width:4px;height:4px;background:var(--gold-bright);top:20%;left:15%;box-shadow:0 0 8px var(--gold-bright),0 0 20px #e8c8404d;animation-delay:0s}.lobby:after{width:3px;height:3px;background:#6eb5ff;top:65%;left:80%;box-shadow:0 0 6px #6eb5ff,0 0 14px #6eb5ff4d;animation-delay:2s}@keyframes sparkleFloat{0%,to{opacity:.3;transform:translate(0)}25%{opacity:1;transform:translate(12px,-20px)}50%{opacity:.5;transform:translate(-8px,-40px)}75%{opacity:.8;transform:translate(4px,-16px)}}.app-version{margin-top:24px;font-size:12px;color:var(--text-dim);opacity:.5}.lobby-header{margin-bottom:32px}.lobby-logo{display:block;margin:0 auto;max-width:100%;height:auto;filter:drop-shadow(0 2px 8px rgba(201,168,76,.25));transition:filter var(--transition)}.lobby-logo:hover{filter:drop-shadow(0 2px 16px rgba(201,168,76,.4))}.lobby-title{font-family:var(--font-display);font-size:42px;font-weight:900;background:linear-gradient(135deg,var(--gold-bright),var(--gold-dim));-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:.05em}.lobby-top-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;animation:fadeSlideIn .4s ease both}.connection-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-dim)}.status-dot{width:8px;height:8px;border-radius:50%}.status-dot.on{background:var(--success);box-shadow:0 0 8px var(--success)}.status-dot.off{background:var(--danger);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.lobby-tabs{display:flex;gap:4px;margin-bottom:24px;background:var(--bg-deep);border-radius:var(--radius);padding:4px;animation:fadeSlideIn .4s .05s ease both}.tab{flex:1;padding:10px;background:none;border:none;color:var(--text-dim);cursor:pointer;border-radius:6px;font-size:13px;font-weight:500;transition:var(--transition);font-family:var(--font-body)}.tab:hover:not(.active){color:var(--text)}.tab.active{background:var(--bg-card);color:var(--gold-bright)}.lobby-form{display:flex;flex-direction:column;gap:12px}.lobby-form>*:nth-child(1){animation:fadeSlideIn .4s ease both}.lobby-form>*:nth-child(2){animation:fadeSlideIn .4s .1s ease both}.lobby-form>*:nth-child(3){animation:fadeSlideIn .4s .2s ease both}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.input{width:100%;padding:12px 16px;background:var(--bg-deep);border:1px solid var(--border-subtle);border-radius:var(--radius);color:var(--text);font-size:15px;font-family:var(--font-body);outline:none;transition:var(--transition)}.input:focus{border-color:var(--gold)}.input::placeholder{color:var(--text-dim)}.player-name-tag{display:flex;align-items:center;justify-content:space-between;background:var(--bg-deep);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:12px 16px;animation:fadeSlideIn .4s ease both}.player-name-tag-text{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--gold-bright)}.player-name-tag-edit{background:none;border:none;color:var(--text-dim);font-size:14px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:var(--transition)}.player-name-tag-edit:hover{color:var(--gold);background:var(--bg-card)}.btn{padding:12px 24px;border:none;border-radius:var(--radius);font-size:14px;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:var(--transition);letter-spacing:.02em}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{padding:10px 16px;font-size:13px;min-height:44px}.btn-ghost{background:transparent;border:1px solid var(--border-subtle);color:var(--text-dim)}.btn-ghost:hover:not(:disabled){border-color:var(--gold-dim);color:var(--gold-bright)}.btn-primary{background:linear-gradient(135deg,var(--gold),var(--gold-dim));color:#0a0a0f;position:relative;overflow:hidden}.btn-primary:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transition:left .5s ease}.btn-primary:hover:not(:disabled):after{left:100%}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--gold-bright),var(--gold));transform:translateY(-1px);box-shadow:0 4px 16px #c9a84c59}.btn-secondary{background:var(--bg-card);color:var(--text);border:1px solid var(--border-subtle)}.btn-secondary:hover:not(:disabled){border-color:var(--gold)}.btn-ghost{background:none;color:var(--text-dim);padding:8px 16px}.btn-ghost:hover:not(:disabled){color:var(--text)}.btn-sm{padding:6px 12px;font-size:12px}.error-msg{color:var(--danger);font-size:13px;margin-top:12px}.waiting-room{padding:24px 0}.room-code-display{margin-bottom:24px}.room-label{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim);margin-bottom:8px}.room-code-big{font-family:var(--font-display);font-size:48px;font-weight:900;color:var(--gold-bright);letter-spacing:.15em}.room-hint{font-size:12px;color:var(--text-dim);margin-top:4px}.waiting-dots{display:flex;gap:8px;justify-content:center;margin-bottom:12px}.waiting-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--gold);animation:dotPulse 1.4s infinite ease-in-out both}.waiting-dots .dot:nth-child(1){animation-delay:0s}.waiting-dots .dot:nth-child(2){animation-delay:.2s}.waiting-dots .dot:nth-child(3){animation-delay:.4s}.waiting-dots .dot:nth-child(4){animation-delay:.6s}@keyframes dotPulse{0%,80%,to{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.waiting-text{color:var(--text-dim);font-size:14px}.diff-modal-overlay{animation:fadeIn .15s ease}.diff-modal{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:20px;padding:36px 32px 28px;max-width:380px;width:90vw;position:relative;animation:diffModalIn .35s cubic-bezier(.22,.61,.36,1);box-shadow:0 24px 80px #00000080,0 0 0 1px #c9a84c14 inset}@keyframes diffModalIn{0%{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.diff-modal-close{position:absolute;top:12px;right:16px;background:none;border:none;color:var(--text-dim);font-size:22px;cursor:pointer;line-height:1;transition:color .2s}.diff-modal-close:hover{color:var(--text)}.diff-modal-header{text-align:center;margin-bottom:24px}.diff-modal-eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:var(--text-dim);margin-bottom:6px}.diff-modal-title{font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--gold-bright);letter-spacing:.04em}.diff-options{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.diff-option{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;cursor:pointer;transition:all .25s ease;text-align:left;animation:diffOptionIn .4s cubic-bezier(.22,.61,.36,1) both;font-family:var(--font-body);color:var(--text)}.diff-option:hover{border-color:var(--gold-dim);background:#1e1e36}.diff-option.selected{border-color:var(--gold);background:linear-gradient(135deg,#c9a84c14,#c9a84c08);box-shadow:0 0 20px #c9a84c14,0 0 0 1px #c9a84c26 inset}@keyframes diffOptionIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.diff-option-icon{display:flex;flex-direction:column;align-items:center;gap:4px;width:36px;flex-shrink:0}.diff-gem-count{display:flex;gap:3px}.diff-gem-dot{width:4px;height:4px;border-radius:50%;background:var(--border-subtle);transition:all .3s}.diff-option.selected .diff-gem-dot{background:var(--gold-bright);box-shadow:0 0 4px var(--gold-bright)}.diff-option:nth-child(3) .diff-gem-icon{color:#c084fc}.diff-option.selected:nth-child(3) .diff-gem-icon{color:#d8a8ff;animation:crazyPulse 2s ease-in-out infinite}@keyframes crazyPulse{0%,to{filter:drop-shadow(0 0 2px rgba(192,132,252,.3))}50%{filter:drop-shadow(0 0 8px rgba(192,132,252,.6))}}.diff-option-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.diff-option-name{font-weight:600;font-size:14px;letter-spacing:.02em}.diff-option-desc{font-size:11px;color:var(--text-dim);line-height:1.35}.diff-radio{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .25s}.diff-radio.on{border-color:var(--gold)}.diff-radio-dot{width:10px;height:10px;border-radius:50%;background:var(--gold);animation:radioPop .25s cubic-bezier(.22,.61,.36,1)}@keyframes radioPop{0%{transform:scale(0)}to{transform:scale(1)}}.diff-confirm{width:100%;padding:14px 24px;font-size:14px}.game-over-modal{text-align:center}.game-over-banner{padding:24px;border-radius:12px;margin-bottom:24px}.game-over-banner.win{background:linear-gradient(135deg,#2a3020,#3a4020);border:1px solid var(--gold-dim)}.game-over-banner.lose{background:linear-gradient(135deg,#302020,#201a1a);border:1px solid #553}.game-over-banner h2{font-family:var(--font-display);font-size:32px;margin-bottom:4px}.game-over-banner.win h2{color:var(--gold-bright)}.game-over-banner.lose h2{color:var(--text-dim)}.winner-name{color:var(--text-dim);font-size:14px}.final-scores{margin-bottom:24px;display:flex;flex-direction:column;gap:8px}.final-score-row{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--bg-card);border-radius:var(--radius)}.final-score-row.you{border:1px solid var(--gold-dim)}.final-score-name{display:flex;align-items:center;gap:6px;font-weight:500}.final-score-pts{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--gold-bright)}.preview-card,.preview-noble{margin-bottom:16px;text-align:center}.preview-card h3,.preview-noble h3{font-family:var(--font-display);font-size:16px;margin-bottom:12px;color:var(--text-dim)}.preview-card-large{display:flex;justify-content:center}.cost-color{text-transform:capitalize}.preview-gap-breakdown{margin-top:12px;text-align:left}.preview-gap-breakdown h4{font-size:12px;color:var(--text-dim);text-transform:uppercase;margin-bottom:6px}.gap-line{display:flex;align-items:center;gap:6px;padding:2px 0}.gap-icons{display:flex;gap:2px}.gap-none{font-size:14px;color:var(--success)}.gap-gold-line{display:flex;align-items:center;gap:4px;margin-top:6px;font-size:12px;color:var(--text-dim)}.req-line{display:flex;gap:8px;align-items:center;font-size:13px;padding:2px 0}.req-line.met{color:var(--success)}.req-line.not-met{color:var(--text-dim)}.preview-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}.direct-join{text-align:center}.direct-join-label{font-size:13px;color:var(--text-dim);margin-bottom:8px}.direct-join .room-code-big{margin-bottom:24px}.direct-join .lobby-form{margin-top:0}.room-list{margin-top:20px;text-align:left}.room-list-title{font-family:var(--font-display);font-size:14px;color:var(--text-dim);margin-bottom:12px;letter-spacing:.05em}.room-list-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-deep);border:1px solid var(--border-subtle);border-radius:var(--radius);margin-bottom:8px;transition:border-color var(--transition)}.room-list-item:hover{border-color:var(--gold-dim)}.room-list-info{display:flex;flex-direction:column;gap:2px}.room-list-code{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--gold-bright);letter-spacing:.1em}.room-list-host{font-size:12px;color:var(--text-dim)}.room-list-empty{font-size:13px;color:var(--text-dim);text-align:center;margin-top:16px}.share-link-section{margin:20px 0}.share-label{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim);margin-bottom:8px}.share-link-row{display:flex;gap:8px}.share-link-input{flex:1;font-size:12px;font-family:monospace;padding:8px 12px;cursor:text}.copy-btn{white-space:nowrap;flex-shrink:0}.disconnect-banner{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 24px;background:linear-gradient(90deg,#e8a84014,#e8a8401f,#e8a84014);border-bottom:1px solid rgba(232,168,64,.25);color:#e8a840;font-size:14px;font-weight:500;animation:disconnectSlideIn .4s ease}.disconnect-banner-icon{width:8px;height:8px;border-radius:50%;background:#e8a840;box-shadow:0 0 8px #e8a84099;animation:dotPulse 1.4s infinite ease-in-out;flex-shrink:0}@keyframes disconnectSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.freeze-banner{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 24px;background:linear-gradient(90deg,#40a8e814,#40a8e81f,#40a8e814);border-bottom:1px solid rgba(64,168,232,.25);color:#68b8e8;font-size:14px;font-weight:500;animation:freezeSlideIn .4s ease}.freeze-banner-icon{width:8px;height:8px;border-radius:50%;background:#68b8e8;box-shadow:0 0 8px #40a8e899;animation:dotPulse 1.4s infinite ease-in-out;flex-shrink:0}@keyframes freezeSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.error-boundary-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-deep);z-index:1000}.error-boundary-card{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px 48px;background:var(--bg-surface);border-radius:16px;border:1px solid var(--border-subtle);animation:cardEnter .4s ease;max-width:400px;text-align:center}.error-boundary-card h2{font-size:18px;color:var(--text);margin:0}.error-boundary-detail{font-size:13px;color:var(--text-dim);margin:0;word-break:break-word;max-width:320px;max-height:120px;overflow-y:auto}.error-boundary-reload{padding:10px 24px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:14px;font-weight:600;cursor:pointer;transition:background var(--transition)}.error-boundary-reload:hover{background:#5a9fe8}.game{min-height:100vh;background:var(--bg-deep);display:flex;flex-direction:column}.game-topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:var(--bg-surface);border-bottom:1px solid var(--border-subtle)}.room-info{display:flex;align-items:center;gap:12px}.room-code{font-family:var(--font-display);color:var(--gold);font-size:14px;letter-spacing:.1em}.turn-indicator{padding:6px 16px;border-radius:20px;font-size:13px;background:var(--bg-card);color:var(--text-dim);transition:var(--transition)}.turn-indicator.my-turn{background:var(--gold);color:#0a0a0f;font-weight:600;animation:glowPulse 2s infinite}.turn-indicator .countdown{margin-left:8px;font-variant-numeric:tabular-nums;opacity:.7}.turn-indicator .countdown-warn{color:#e84040;opacity:1;font-weight:700;animation:countdownPulse 1s infinite}@keyframes countdownPulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes glowPulse{0%,to{box-shadow:0 0 8px #c9a84c4d}50%{box-shadow:0 0 20px #c9a84c99}}.game-layout{display:flex;flex:1;gap:0;overflow:hidden}.player-sidebar{width:250px;flex-shrink:0;overflow-y:auto;padding:12px;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent}.player-sidebar::-webkit-scrollbar{width:5px}.player-sidebar::-webkit-scrollbar-track{background:transparent}.player-sidebar::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:3px}.player-sidebar::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}.game-center{flex:1;display:flex;flex-direction:column;overflow-y:auto;min-width:0}.board-scroll{padding:8px 10px 0}.board-scroll{scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent}.board-scroll::-webkit-scrollbar{width:5px}.board-scroll::-webkit-scrollbar-track{background:transparent}.board-scroll::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:3px}.board-scroll::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}.version-update-banner{display:flex;align-items:center;justify-content:center;gap:16px;padding:8px 16px;margin:0 10px;background:var(--bg-surface);border:1px solid rgba(201,168,76,.35);border-radius:var(--radius);flex-shrink:0}.version-update-text{color:var(--gold-bright);font-size:13px;font-weight:500}.version-update-btn{padding:4px 14px;font-size:12px}.game-dock{flex-shrink:0;padding:8px 10px 2px;background:linear-gradient(to bottom,var(--bg-deep),var(--bg-surface) 30%);border-top:1px solid rgba(201,168,76,.15);display:flex;flex-direction:column;align-items:center;gap:10px}.chat-panel{width:280px;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-surface);border-left:1px solid var(--border-subtle)}.chat-messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.chat-empty{color:var(--text-dim);font-size:13px;text-align:center;margin-top:32px}.chat-msg{display:flex;flex-direction:column;gap:2px;max-width:90%;align-self:flex-start}.chat-msg-own{align-self:flex-end}.chat-msg-meta{display:flex;gap:6px;align-items:center}.chat-msg-name{font-size:11px;font-weight:600;color:var(--text-dim)}.chat-msg-own .chat-msg-name{color:var(--gold)}.chat-msg-text{background:var(--bg-card);padding:6px 10px;border-radius:8px;font-size:13px;line-height:1.4;word-break:break-word}.chat-msg-own .chat-msg-text{background:#c9a84c1f;border:1px solid rgba(201,168,76,.2)}.chat-input-row{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border-subtle)}.chat-input{flex:1;font-size:13px;padding:8px 12px}@media (max-width: 1024px){.chat-panel{width:100%;max-height:240px;border-left:none;border-top:1px solid var(--border-subtle)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:16px;padding:32px;max-width:420px;width:90vw;max-height:90vh;overflow-y:auto;position:relative;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.leave-confirm-modal{max-width:360px;text-align:center}.leave-confirm-text{font-size:15px;color:var(--text);margin-bottom:24px}.modal-close{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--text-dim);font-size:20px;cursor:pointer}.board{display:flex;flex-direction:column;gap:20px}.board-grid{display:grid;grid-template-columns:auto repeat(var(--board-cols, 3),max-content);gap:var(--grid-gap) var(--grid-gap);align-items:start;justify-content:center;padding:var(--board-padding) var(--board-padding) 0;background:var(--bg-surface);border-radius:var(--radius);border:1px solid var(--border-subtle);transition:border-color .3s ease,box-shadow .3s ease}.board-grid.noble-selection-active{border-color:var(--gold-dim);box-shadow:0 0 20px #c9a84c1f,inset 0 0 30px #c9a84c0a;animation:noblePulse 2s infinite ease-in-out}@keyframes noblePulse{0%,to{border-color:var(--gold-dim);box-shadow:0 0 20px #c9a84c1f}50%{border-color:var(--gold);box-shadow:0 0 30px #c9a84c40}}.noble-select-hint{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--gold-bright);letter-spacing:.06em;text-align:center}.board-cell{display:flex;align-items:center;justify-content:center}.board-cell--noble{padding-bottom:12px;border-bottom:1px solid var(--border-subtle);margin-bottom:4px}.board-row-label{display:flex;align-items:flex-start;justify-content:center;padding-top:4px}.board-row-label--empty{min-width:40px}.board-row-label.tier-1-row,.board-row-label.tier-2-row,.board-row-label.tier-3-row{padding-left:8px}.tier-badge{width:var(--badge-width);height:var(--badge-height);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;font-family:var(--font-display);font-weight:700;font-size:14px;color:#fff;flex-shrink:0;position:relative;overflow:hidden;padding:20px 8px 16px}.tier-badge:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border:1px solid rgba(255,255,255,.12);border-radius:4px;pointer-events:none}.tier-badge-dots{display:flex;gap:6px;justify-content:center}.tier-badge-dot{width:16px;height:16px;border-radius:50%;background:#ffffffe6;box-shadow:0 2px 6px #0000004d,inset 0 1px 2px #fff6}.tier-badge-name{font-size:15px;letter-spacing:.05em;font-family:var(--font-body);font-weight:500;opacity:.85;text-align:center}.tier-3{background:radial-gradient(ellipse at 50% 30%,#3a5a8a,#0a1a30)}.tier-2{background:radial-gradient(ellipse at 50% 30%,#d4a830,#4a3008);color:#0a0a0f}.tier-2 .tier-badge-dot{background:#0009;box-shadow:none}.tier-1{background:radial-gradient(ellipse at 50% 30%,#3a6a3a,#0f2010)}.deck-count{font-size:11px;color:var(--text-dim);white-space:nowrap}.board-empty-msg{grid-column:1 / -1;color:var(--text-dim);font-size:13px;padding:8px;text-align:center}.gem-bank{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:var(--bg-surface);border-radius:var(--radius);border:1px solid var(--border-subtle)}.gem-bank-label{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim)}.gem-bank-tokens{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.gem-action-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:100%}.game-dock .countdown-panel{grid-column:1}.game-dock .gem-bank{grid-column:2;justify-self:center}.game-dock .action-bar{grid-column:3}.countdown-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:8px 12px;min-width:70px;height:100%;box-sizing:border-box}.countdown-panel-label{font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim)}.countdown-panel-num{font-family:var(--font-display);font-size:18px;font-weight:900;color:var(--gold-bright);line-height:1;text-align:center;font-variant-numeric:tabular-nums}.countdown-panel-num.warn{color:#e8a840}.countdown-panel-num.critical{color:#e84040}.countdown-panel .countdown-track{width:100%;height:4px}.gem-token{border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;transition:transform var(--transition),filter var(--transition),box-shadow var(--transition)}.gem-token[data-size=sm]{width:var(--gem-sm);height:var(--gem-sm)}.gem-token[data-size=md]{width:var(--gem-md);height:var(--gem-md)}.gem-token[data-size=lg]{width:var(--gem-lg);height:var(--gem-lg)}.gem-token.clickable:hover{transform:scale(1.15)}.gem-token.selected{transform:scale(1.18);animation:gemPulse .8s ease-in-out infinite}.gem-token.selected:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;border:2px solid #fff;opacity:.6;pointer-events:none;animation:gemRing 1.2s ease-in-out infinite}@keyframes gemPulse{0%,to{transform:scale(1.18)}50%{transform:scale(1.25)}}@keyframes gemRing{0%,to{border-color:#fff6}50%{border-color:#ffffffe6}}.gem-count{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6);pointer-events:none}.gem-selected-count{position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:#fff;color:#0a0a0f;font-size:13px;font-weight:900;border-radius:11px;padding:0 5px;box-shadow:0 2px 6px #00000080;pointer-events:none;animation:badgePop .2s ease}@keyframes badgePop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.card{width:var(--card-width);height:var(--card-height);background:linear-gradient(180deg,#1e1e30,#181825 70%,#141420);border:1.5px solid #2a2a3e;border-radius:8px;display:flex;flex-direction:column;padding:0;position:relative;transition:transform var(--transition),border-color var(--transition),box-shadow var(--transition);overflow:hidden}.card.compact{width:var(--card-compact-width);height:var(--card-compact-height)}.card.clickable:hover{transform:translateY(-4px);border-color:var(--gold-dim);box-shadow:0 4px 18px #c9a84c2e}.card-top-row{display:flex;align-items:flex-start;justify-content:space-between;padding:6px;width:100%}.card-points{font-family:var(--font-display);font-size:20px;font-weight:900;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6);min-width:22px;text-align:center;line-height:1}.card-bonus-gem{flex-shrink:0}.card-body{display:flex;flex:1;overflow:hidden}.card-center{flex:1;margin:4px 4px 4px 8px;border-radius:4px;background:radial-gradient(ellipse at 50% 40%,rgba(255,255,255,.03) 0%,transparent 70%)}.card-cost{display:flex;flex-direction:column;gap:2px;justify-content:flex-end;padding:0 6px 5px 0}.cost-item{display:flex;align-items:center;gap:2px;justify-content:flex-end;width:100%}.cost-num{font-size:14px;font-weight:700;color:var(--text);text-shadow:0 1px 2px rgba(0,0,0,.5);min-width:10px;text-align:center}.noble{width:var(--noble-width);height:var(--noble-height);position:relative;border-radius:8px;transition:transform var(--transition),box-shadow var(--transition),filter var(--transition)}.noble.clickable:hover{transform:translateY(-3px);filter:brightness(1.1)}.noble.clickable:hover .noble-frame{box-shadow:0 6px 24px #c9a84c59,0 0 0 1.5px #c9a84c59}.noble-frame{width:100%;height:100%;background:linear-gradient(180deg,#1a1a2e,#151528 30%,#12121e,#1a1525);border:2px solid var(--gold-dim);border-radius:8px;display:flex;flex-direction:column;align-items:center;padding:0;position:relative;overflow:hidden;transition:box-shadow var(--transition),border-color var(--transition);box-shadow:0 2px 12px #0006,inset 0 0 40px #c9a84c0a}.noble-frame:before{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px solid rgba(200,168,76,.18);border-radius:5px;pointer-events:none}.noble-top-row{display:flex;align-items:flex-start;justify-content:space-between;padding:6px;width:100%;position:relative;z-index:2}.noble-points{display:flex;align-items:center;justify-content:center}.noble-points-num{font-family:var(--font-display);font-size:22px;font-weight:900;color:var(--gold-bright);text-shadow:0 0 6px rgba(0,0,0,.8),0 0 12px rgba(200,168,76,.6),0 2px 4px rgba(0,0,0,.7);line-height:1}.noble-portrait-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:6px}.noble-portrait-bg img{width:100%;height:100%;object-fit:cover}.noble-body{display:flex;flex:1;overflow:hidden;position:relative;z-index:1;width:100%}.noble-center{flex:1}.noble-reqs{display:flex;flex-direction:column;gap:2px;justify-content:flex-end;padding:4px 6px 5px 0;position:relative;z-index:2}.noble-req{display:flex;align-items:center;gap:2px;justify-content:flex-end;width:100%}.noble-req .req-num{font-size:11px;font-weight:700;color:var(--text);text-shadow:0 1px 2px rgba(0,0,0,.5);min-width:10px;text-align:center}.player-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px;transition:border-color var(--transition)}.player-panel.current{border-color:var(--gold-bright);box-shadow:0 0 12px #c9a84c33,inset 0 0 20px #c9a84c0a;animation:currentGlow 2s ease-in-out infinite}@keyframes currentGlow{0%,to{box-shadow:0 0 12px #c9a84c33,inset 0 0 20px #c9a84c0a}50%{box-shadow:0 0 20px #c9a84c59,inset 0 0 30px #c9a84c0f}}.player-header{display:flex;align-items:center;justify-content:space-between}.player-name{font-family:var(--font-display);font-size:16px;font-weight:700;display:flex;align-items:center;gap:6px}.you-badge{font-family:var(--font-body);font-size:9px;font-weight:600;background:var(--gold);color:#0a0a0f;padding:2px 6px;border-radius:4px;letter-spacing:.1em}.ai-badge{font-family:var(--font-body);font-size:9px;font-weight:600;background:var(--sapphire);color:#fff;padding:2px 6px;border-radius:4px;letter-spacing:.1em}.player-score{font-family:var(--font-display);font-size:22px;font-weight:900;color:var(--gold-bright);transition:transform var(--transition)}.player-panel.current .player-score{animation:scorePop .3s ease}.turn-banner{background:var(--gold);color:#0a0a0f;font-weight:600;font-size:12px;text-align:center;padding:4px 8px;border-radius:6px;margin-bottom:10px;animation:glowPulse 2s infinite;letter-spacing:.04em}@keyframes scorePop{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.section-label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-bottom:4px}.gem-row{display:flex;flex-wrap:wrap;gap:2px;justify-content:flex-start}.purchased-list{display:flex;flex-wrap:wrap;gap:2px}.reserved-list{display:flex;flex-wrap:wrap;gap:4px}.reserved-list .card{min-width:0}.purchased-group{display:flex;align-items:center;gap:3px;background:#ffffff08;border-radius:6px;padding:3px 6px;position:relative}.purchased-group-count{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:11px;font-weight:900;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);min-width:14px;text-align:center;pointer-events:none;z-index:2;line-height:1}.noble-mini-list{display:flex;flex-wrap:wrap;gap:6px}.noble-mini-list .noble{width:var(--card-compact-width);height:var(--card-compact-height)}.noble-mini-list .noble-points-num{font-size:clamp(12px,2.5vw,16px)}.noble-mini-list .noble-req{width:16px;height:16px;font-size:9px}.noble-mini-list .noble-reqs{gap:2px;padding:2px}.noble-mini-list .noble-frame{border-width:1.5px}.noble-mini-list .noble-portrait{transform:scale(.7);transform-origin:center center}.noble-mini-list .noble-body{flex-direction:row-reverse}.noble-mini-list .noble-req{justify-content:flex-start}.noble-mini-list .noble-reqs{border-left:none}.empty-msg{font-size:12px;color:var(--text-dim)}.noble.highlighted .noble-frame{border-color:var(--gold-bright)!important;box-shadow:0 0 16px #c9a84c59,0 0 32px #c9a84c26,inset 0 0 40px #c9a84c0f!important;animation:nobleHighlightPulse 1.5s infinite ease-in-out}.noble.highlighted.clickable:hover .noble-frame{border-color:var(--gold-bright)!important;box-shadow:0 0 24px #e8c84080,0 0 48px #e8c84040!important}@keyframes nobleHighlightPulse{0%,to{box-shadow:0 0 16px #c9a84c59,0 0 32px #c9a84c26}50%{box-shadow:0 0 24px #e8c8408c,0 0 40px #e8c8404d}}.action-bar{display:flex;justify-content:center;padding:16px 0}.game-dock .action-bar{padding:0}.countdown-bar{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;max-width:400px;font-variant-numeric:tabular-nums}.countdown-bar-header{display:flex;align-items:center;justify-content:space-between;width:100%}.countdown-bar-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim)}.countdown-bar-label{font-family:var(--font-display);font-size:24px;font-weight:900;color:var(--gold-bright);line-height:1;text-shadow:0 0 12px rgba(201,168,76,.35);transition:color .4s}.countdown-bar-label.warn{color:#e8a840;text-shadow:0 0 14px rgba(232,168,64,.4)}.countdown-bar-label.critical{color:var(--danger);text-shadow:0 0 16px rgba(232,64,64,.5);animation:countdownPulse .5s infinite}.countdown-track{width:100%;height:8px;background:#ffffff0a;border-radius:4px;overflow:hidden;position:relative}.countdown-track:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;border:1px solid rgba(255,255,255,.06);pointer-events:none}.countdown-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--gold-dim),var(--gold-bright));box-shadow:0 0 10px #c9a84c4d,inset 0 1px #ffffff26;transition:width 1s linear;position:relative}.countdown-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;width:20px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25));border-radius:0 4px 4px 0}.countdown-fill.warn{background:linear-gradient(90deg,#b87820,#e8a840);box-shadow:0 0 12px #e8a84059,inset 0 1px #ffffff1f}.countdown-fill.critical{background:linear-gradient(90deg,#a82020,#e84040);box-shadow:0 0 16px #e8404073,inset 0 1px #ffffff1a;animation:countdownPulse .5s infinite}.ai-thinking-box{width:100%;max-width:500px;background:#00000059;border:1px solid rgba(201,168,76,.12);border-radius:8px;overflow:hidden;animation:fadeSlideIn .3s ease}.ai-thinking-header{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);background:#ffffff05;border-bottom:1px solid rgba(255,255,255,.04)}.ai-thinking-dot{width:6px;height:6px;border-radius:50%;background:var(--gold-bright);box-shadow:0 0 6px var(--gold-bright);animation:dotPulse 1.4s infinite ease-in-out}.ai-thinking-body{padding:8px 12px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:12px;line-height:1.6;color:#c8bea0b3;max-height:120px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.ai-mode-tag{display:inline-block;margin-left:8px;padding:1px 6px;background:#d4a017;color:#1a1a2e;border-radius:3px;font-size:9px;font-weight:800;letter-spacing:.5px;vertical-align:middle}.ai-token-usage{display:inline-block;margin-left:8px;padding:1px 6px;background:#ffffff14;color:#89a;border-radius:3px;font-size:9px;font-weight:600;vertical-align:middle}.action-bar>.btn-action,.action-bar>.action-active{margin:0 4px}.btn-action{background:var(--bg-card);color:var(--text);border:1px solid var(--border-subtle);padding:10px 20px;border-radius:var(--radius);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:var(--transition)}.btn-action:hover:not(:disabled){border-color:var(--gold);color:var(--gold-bright)}.action-active{display:flex;align-items:center;gap:12px;color:var(--gold-bright);font-size:13px}.action-btns{display:flex;flex-direction:column;gap:10px}.countdown-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0a0a0fd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:countdown-fade-in .3s ease-out}.countdown-number{font-size:120px;font-weight:700;color:var(--gold);text-shadow:0 0 60px rgba(212,175,55,.5);animation:countdown-pop .8s ease-out}@keyframes countdown-fade-in{0%{opacity:0}to{opacity:1}}@keyframes countdown-pop{0%{transform:scale(1.8);opacity:0}50%{opacity:1}to{transform:scale(1);opacity:1}}.game-history{margin-top:24px}.history-list,.history-date-group{display:flex;flex-direction:column;gap:6px}.history-date-header{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:8px 0 2px;border-bottom:1px solid var(--border);margin-bottom:2px}.history-date-group:first-child .history-date-header{padding-top:0}.history-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;gap:12px}.history-info{flex:1;min-width:0}.history-players{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.history-vs{color:var(--text-muted);margin:0 6px;font-weight:400;font-size:12px}.history-meta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-muted)}.history-mode-tag{padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.history-mode-tag.pvp{background:#d4af3726;color:var(--gold)}.history-mode-tag.pve{background:#64b4ff26;color:#64b4ff}.history-result{font-size:13px;color:var(--gold);margin-top:4px}.history-score{color:var(--text-muted);font-weight:400}.replay-controls{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--card-bg);border-bottom:1px solid var(--border);gap:12px}.replay-controls-left,.replay-controls-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.replay-controls-center{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.replay-progress{width:100%;max-width:300px}.replay-progress-track{height:4px;background:var(--border);border-radius:2px;overflow:hidden}.replay-progress-fill{height:100%;background:var(--gold);border-radius:2px;transition:width .3s ease}.winning-score-hint{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap;justify-content:center;margin-top:14px;font-size:11px;color:var(--text-dim);opacity:.45;transition:opacity .3s ease;position:relative}.winning-score-hint:hover{opacity:.7}.winning-score-hint.revealed{opacity:1}.winning-score-prefix{font-size:11px;color:inherit;-webkit-user-select:none;user-select:none}.winning-score-value{font-size:11px;color:inherit;background:none;border:none;cursor:pointer;padding:0;font-family:var(--font-body);text-decoration:underline;text-decoration-color:var(--text-dim);text-underline-offset:2px;text-decoration-thickness:.5px;transition:color .2s ease,text-decoration-color .2s ease}.winning-score-value:hover{color:var(--gold-bright);text-decoration-color:var(--gold-dim)}.winning-score-dropdown{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:8px;max-height:0;overflow:hidden;opacity:0;transition:max-height .25s ease,opacity .2s ease,margin-top .25s ease;pointer-events:none;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);z-index:10}.winning-score-hint.revealed .winning-score-dropdown{max-height:60px;opacity:1;margin-top:6px;pointer-events:auto}.winning-score-stepper{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px}.score-btn{width:28px;height:28px;padding:0;font-size:16px;font-weight:600;line-height:1;border-radius:50%;background:var(--bg-deep);border:1px solid var(--border-subtle);color:var(--text);cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;flex-shrink:0}.score-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold-bright)}.score-btn:disabled{opacity:.3;cursor:not-allowed}.winning-score-slider{flex:1;width:120px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:3px;background:var(--bg-deep);border-radius:2px;outline:none}.winning-score-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--text-dim);cursor:pointer;border:2px solid var(--bg-surface);box-shadow:none}.winning-score-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--text-dim);cursor:pointer;border:2px solid var(--bg-surface);box-shadow:none}.reconnecting-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-deep);z-index:1000}.reconnecting-card{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px 48px;background:var(--bg-surface);border-radius:16px;border:1px solid var(--border-subtle);animation:cardEnter .4s ease}.reconnecting-spinner{width:36px;height:36px;border:3px solid var(--border-subtle);border-top-color:var(--gold);border-radius:50%;animation:reconnectSpin .8s linear infinite}@keyframes reconnectSpin{to{transform:rotate(360deg)}}.reconnecting-card h2{font-size:18px;color:var(--text);margin:0}.anim-fly{position:fixed;z-index:500;pointer-events:none;transform:translate(-50%,-50%);opacity:0}.anim-fly-gem{animation:gemFlyArc .7s cubic-bezier(.25,0,.35,1) forwards}.anim-fly-card{animation:cardFlyArc .8s cubic-bezier(.25,0,.35,1) forwards}@keyframes gemFlyArc{0%{opacity:1;transform:translate(-50%,-50%) translate(0) scale(1)}25%{opacity:1;transform:translate(-50%,-50%) translate(calc(var(--tx) * .3),calc(var(--ty) * .3 - 20px)) scale(.85)}to{opacity:0;transform:translate(-50%,-50%) translate(var(--tx),var(--ty)) scale(.3)}}@keyframes cardFlyArc{0%{opacity:1;transform:translate(-50%,-50%) translate(0) scale(1) rotateY(0)}30%{opacity:1;transform:translate(-50%,-50%) translate(calc(var(--tx) * .35),calc(var(--ty) * .35 - 30px)) scale(.8) rotateY(0)}to{opacity:0;transform:translate(-50%,-50%) translate(var(--tx),var(--ty)) scale(.2) rotateY(180deg)}}.lobby-actions{display:flex;flex-direction:column;gap:0;margin-top:28px;animation:fadeSlideIn .4s .15s ease both}.lobby-action-primary,.lobby-action-secondary{width:100%;padding:14px 24px;font-size:15px}.lobby-actions-divider{display:flex;align-items:center;gap:12px;margin:16px 0}.lobby-actions-divider-line{flex:1;height:1px;background:var(--border-subtle)}.lobby-actions-divider-text{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);opacity:.6;-webkit-user-select:none;user-select:none}.lobby-footer{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:24px;font-size:12px;animation:fadeSlideIn .4s .2s ease both}.lobby-footer-sep{color:var(--text-dim);opacity:.3;-webkit-user-select:none;user-select:none}.lobby-footer-link{background:none;border:none;color:var(--text-dim);font-size:12px;cursor:pointer;padding:2px 4px;transition:color .2s}.lobby-footer-link:hover{color:var(--gold-dim)}.rules-modal-overlay{z-index:110}.rules-modal{position:relative;width:460px;max-height:80vh;background:var(--bg-surface);border-radius:16px;border:1px solid var(--border-dim);box-shadow:0 24px 80px #00000080,inset 0 1px 0 var(--border-subtle);padding:32px;display:flex;flex-direction:column;animation:diffModalIn .25s cubic-bezier(.16,1,.3,1)}.rules-modal-close{position:absolute;top:14px;right:14px;background:none;border:none;color:var(--text-dim);font-size:22px;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:color .15s,background .15s;line-height:1}.rules-modal-close:hover{color:var(--text-primary);background:var(--bg-hover)}.rules-modal-header{text-align:center;margin-bottom:24px}.rules-modal-title{font-family:Cinzel,Times New Roman,serif;font-size:22px;font-weight:700;color:var(--gold-bright);margin:0}.rules-body{overflow-y:auto;padding-right:4px;margin-bottom:20px;max-height:50vh;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent}.rules-body::-webkit-scrollbar{width:5px}.rules-body::-webkit-scrollbar-track{background:transparent}.rules-body::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:3px;transition:background .2s}.rules-body::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}.rules-actions-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:20px 0 12px;text-align:center}.rules-section{display:flex;gap:14px;padding:12px;border-radius:10px;background:var(--bg-card);border:1px solid var(--border-subtle);transition:border-color .2s}.rules-section+.rules-section{margin-top:10px}.rules-section:hover{border-color:var(--border-dim)}.rules-section-icon{flex-shrink:0;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px}.rules-icon-goal{background:linear-gradient(135deg,#f59e0b33,#eab3081a);position:relative}.rules-icon-goal:after{content:"";position:absolute;width:14px;height:14px;background:var(--gold-bright);border-radius:2px;transform:rotate(45deg);box-shadow:0 0 8px #eab30880}.rules-icon-gems{background:linear-gradient(135deg,#6366f126,#8b5cf614);position:relative}.rules-icon-gems:before,.rules-icon-gems:after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;box-shadow:0 0 4px currentColor}.rules-icon-gems:before{background:#ef4444;top:6px;left:8px}.rules-icon-gems:after{background:#3b82f6;top:6px;right:8px}.rules-icon-buy{background:linear-gradient(135deg,#22c55e33,#10b9811a);position:relative}.rules-icon-buy:after{content:"";position:absolute;width:16px;height:12px;border:2px solid #22c55e;border-radius:3px;box-shadow:0 0 6px #22c55e66}.rules-icon-reserve{background:linear-gradient(135deg,#eab30833,#ca8a041a);position:relative}.rules-icon-reserve:after{content:"";position:absolute;width:16px;height:16px;border:2px solid #eab308;border-radius:2px;box-shadow:0 0 6px #eab30866}.rules-icon-noble{background:linear-gradient(135deg,#ec489933,#a855f71a);font-size:20px;position:relative}.rules-icon-noble:after{content:"♛";position:absolute;color:#ec4899;text-shadow:0 0 8px rgba(236,72,153,.5)}.rules-section-text{flex:1;min-width:0}.rules-section-title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.rules-section-desc{font-size:13px;color:var(--text-dim);line-height:1.5;margin:0}.rules-confirm{width:100%;padding:12px;font-size:15px}@media (max-width: 767px){.game-layout{flex-direction:column;overflow-y:auto}.game-topbar{padding:4px 6px;flex-wrap:wrap;gap:4px}.game-topbar .room-code{font-size:11px}.player-sidebar{width:100%;padding:2px;max-height:none;flex-shrink:1}.player-sidebar .player-panel{display:grid;grid-template-columns:1fr 1fr 1fr;gap:2px;padding:2px}.player-sidebar .section-label{font-size:7px;margin-bottom:1px}.player-sidebar .player-panel .player-header{grid-column:1;grid-row:1;flex-direction:column;align-items:flex-start;gap:1px}.player-sidebar .player-panel .player-gems{grid-column:2;grid-row:1}.player-sidebar .player-panel .player-gems .gem-row{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:1px}.player-sidebar .player-panel .player-cards{grid-column:3;grid-row:1}.player-sidebar .player-panel .player-reserved{grid-column:1 / 3;grid-row:2}.player-sidebar .player-panel .player-nobles{grid-column:3;grid-row:2}.player-sidebar .player-panel .player-name{font-size:11px}.player-sidebar .player-panel .player-score{font-size:18px}.game-center{flex:none;overflow:visible;min-width:0}.board-scroll{overflow-y:visible;padding:4px 2px 0}.game-dock{padding:2px 2px 6px;gap:4px;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center}.game-dock .ai-thinking-box{flex-basis:100%}.game-dock .gem-bank{padding:4px;gap:2px;background:none;border:none}.game-dock .action-bar{padding:0}.gem-action-row{display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:4px;width:100%;overflow:clip;min-height:44px}.gem-token.selected{transform:scale(1.08);animation:none}.gem-bank-tokens{padding-left:0;gap:6px}.game-dock .countdown-panel{grid-column:auto;justify-self:auto;height:auto;flex-shrink:0;min-width:var(--card-width);width:var(--card-width);padding:4px;gap:1px}.game-dock .countdown-panel-num{font-size:13px}.game-dock .countdown-panel .countdown-track{height:3px}.game-dock .gem-bank{grid-column:auto;flex-shrink:1;min-width:0}.game-dock .action-bar{grid-column:auto;justify-self:auto;flex-shrink:0}.action-btns{flex-direction:column;gap:8px}.action-btns .btn{padding:8px 12px;font-size:13px}.board-grid{border-radius:6px}.board{gap:8px}.card{overflow:visible}.noble-points-num{font-size:18px}.noble-req .req-num{font-size:11px}.card-top-row{padding:2px}.card-points{font-size:14px;min-width:16px}.card-body{overflow:visible}.card-cost{padding:1px 3px 3px;gap:1px}.cost-num{font-size:9px}.tier-badge{padding:12px 2px 8px;font-size:11px}.tier-badge-dot{width:12px;height:12px}.tier-badge-name{font-size:10px}.gem-bank{padding:6px}.gem-bank-tokens{gap:5px}.gem-token.selected{transform:scale(1.12);animation:none}.lobby-card{padding:20px 16px;max-width:95vw}.room-code-big,.direct-join .room-code-big{font-size:28px}}@media (min-width: 768px) and (max-width: 1024px){.game{height:100vh;overflow:hidden}.game-layout{flex-direction:row;flex:1;overflow:hidden}.game-topbar{padding:3px 14px;flex-shrink:0}.player-sidebar{width:156px;padding:8px 6px;flex-shrink:0;overflow-y:auto}.player-sidebar .player-panel{gap:6px}.player-sidebar .player-panel .player-header{flex-direction:column;align-items:flex-start;gap:4px}.player-sidebar .player-panel .player-name{font-size:12px}.player-sidebar .player-panel .player-score{font-size:22px}.player-sidebar .player-panel .section-label{font-size:9px}.player-sidebar .purchased-group-pts,.player-sidebar .purchased-group-count{font-size:10px}.game-center{overflow:hidden;min-width:0;flex:1}.board-scroll{flex:0 0 auto;overflow-y:auto;padding:4px 6px 0}.board{gap:8px}.game-dock{padding:4px 10px 8px;gap:8px;flex-direction:column;align-items:stretch}.game-dock .ai-thinking-box{flex-basis:auto}.game-dock .gem-action-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:100%}.game-dock .countdown-panel{grid-column:1}.game-dock .gem-bank{grid-column:2;justify-self:center;padding:6px;gap:4px;flex-shrink:1;min-width:0;align-items:center}.game-dock .action-bar{grid-column:3}.game-dock .gem-bank-tokens{gap:6px;flex-wrap:nowrap;justify-content:center}.countdown-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:8px 12px;min-width:70px;height:100%;box-sizing:border-box}.countdown-panel-label{font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim)}.countdown-panel-num{font-family:var(--font-display);font-size:18px;font-weight:900;color:var(--gold-bright);line-height:1;text-align:center;font-variant-numeric:tabular-nums}.countdown-panel-num.warn{color:#e8a840}.countdown-panel-num.critical{color:#e84040}.countdown-panel .countdown-track{width:100%;height:4px}.game-dock .action-bar{padding:0;flex-shrink:0}.game-dock .action-active{flex-direction:column;align-items:stretch;justify-content:center;gap:4px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:6px 10px;min-width:110px;height:100%;box-sizing:border-box}.game-dock .action-active span{font-size:10px;color:var(--text-dim);text-align:center}.game-dock .action-btns .btn{padding:8px 18px;font-size:14px}.card,.card-body{overflow:visible}.noble-points-num{font-size:18px}.noble-req .req-num{font-size:11px}.card-top-row{padding:2px}.card-points{font-size:15px;min-width:16px}.card-cost{padding:1px 3px 3px;gap:2px}.cost-num{font-size:10px}.tier-badge{padding:12px 4px 8px;font-size:12px}.tier-badge-dot{width:14px;height:14px}.tier-badge-name{font-size:12px}.chat-panel{display:none}}@media (min-width: 1025px){.card,.card-body{overflow:visible}.game{height:100vh;overflow:hidden}.game-layout{flex:1;overflow:hidden}.player-sidebar{width:220px;padding:10px;flex-shrink:0;overflow-y:auto}.player-sidebar .player-panel{gap:8px}.game-center{overflow:hidden;min-width:0;flex:1}.board-scroll{flex:0 0 auto;overflow-y:auto;padding:4px 6px 0}.board-grid{gap:8px 8px;padding:8px 8px 0}.game-dock{padding:4px 10px 8px;gap:8px;flex-direction:column;align-items:stretch}.game-dock .gem-action-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;width:100%}.game-dock .countdown-panel{grid-column:1}.game-dock .gem-bank{grid-column:2;justify-self:center}.game-dock .action-bar{grid-column:3}.countdown-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:8px 12px;min-width:70px;height:100%;box-sizing:border-box}.countdown-panel-label{font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--text-dim)}.countdown-panel-num{font-family:var(--font-display);font-size:18px;font-weight:900;color:var(--gold-bright);line-height:1;text-align:center;font-variant-numeric:tabular-nums}.countdown-panel-num.warn{color:#e8a840}.countdown-panel-num.critical{color:#e84040}.countdown-panel .countdown-track{width:100%;height:4px}.game-dock .action-bar{padding:0;flex-shrink:0}.game-dock .action-active{flex-direction:column;align-items:stretch;justify-content:center;gap:4px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:6px 10px;min-width:110px;height:100%;box-sizing:border-box}.game-dock .action-active span{font-size:10px;color:var(--text-dim);text-align:center}.game-dock .action-btns .btn{padding:8px 18px;font-size:14px}.game-dock .gem-bank-tokens{flex-wrap:nowrap}}
