:root{--bg: #1a0f08;--bg-light: #2a1a10;--bg-card: #3a2418;--bg-surface: #2f1c12;--text: #f4e8d4;--text-muted: #b09878;--text-dim: #7a6a58;--accent: #d4a043;--accent-hover: #ecc15a;--accent-glow: rgba(212, 160, 67, .4);--danger: #c0392b;--danger-hover: #e74c3c;--success: #27ae60;--success-glow: rgba(39, 174, 96, .3);--wood: #2d6b2d;--wheat: #c9941a;--sheep: #5db85d;--brick: #b84c3c;--ore: #5a6672;--desert: #c4a66a;--ocean-deep: #0d2847;--ocean-mid: #143b66;--ocean-light: #1a4d80;--border: #5a3a25;--border-light: #7a5a3a;--shadow-sm: 0 1px 3px rgba(0,0,0,.4);--shadow-md: 0 4px 12px rgba(0,0,0,.5);--shadow-lg: 0 8px 32px rgba(0,0,0,.6);--shadow-glow: 0 0 20px var(--accent-glow);--font-heading: "Cinzel", "Georgia", serif;--font-body: "Inter", "Nunito", -apple-system, sans-serif;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 24px;--radius-round: 50%}::selection{background:var(--accent);color:var(--bg)}::-moz-selection{background:var(--accent);color:var(--bg)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-family:var(--font-heading);letter-spacing:.03em}button{font-family:var(--font-body);cursor:pointer;border:2px solid var(--border-light);background:linear-gradient(180deg,var(--bg-card) 0%,#2a1810 100%);color:var(--text);padding:.55rem 1.1rem;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;transition:all var(--transition-normal) cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;text-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:var(--shadow-sm),inset 0 1px #ffffff0d}button:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.06) 0%,transparent 50%);pointer-events:none}button:hover:not(:disabled){background:linear-gradient(180deg,var(--accent) 0%,#b8862e 100%);color:var(--bg);border-color:var(--accent);box-shadow:var(--shadow-md),var(--shadow-glow);transform:translateY(-1px);text-shadow:none}button:active:not(:disabled){transform:translateY(1px) scale(.97);box-shadow:var(--shadow-sm);transition-duration:.05s}button:disabled{opacity:.35;cursor:default;filter:grayscale(.5)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select{font-family:var(--font-body);padding:.6rem .8rem;border:2px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-size:1rem;transition:border-color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-fast);box-shadow:inset 0 2px 4px #0000004d}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent);box-shadow:inset 0 2px 4px #0000004d,0 0 0 3px var(--accent-glow)}input::placeholder{color:var(--text-dim)}.home,.lobby{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1.2rem;padding:2rem;background:radial-gradient(ellipse at 50% 30%,rgba(212,160,67,.08) 0%,transparent 60%),radial-gradient(ellipse at 20% 80%,rgba(30,77,128,.15) 0%,transparent 50%),radial-gradient(ellipse at 80% 70%,rgba(30,77,128,.1) 0%,transparent 50%),var(--bg);position:relative;animation:pageSlideIn .5s ease-out}.home:before,.lobby:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(45deg,transparent,transparent 100px,rgba(255,255,255,.005) 100px,rgba(255,255,255,.005) 200px);pointer-events:none}@keyframes pageSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.home h1{font-size:3.5rem;background:linear-gradient(180deg,#f4d675,#d4a043,#b8862e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none;filter:drop-shadow(0 2px 8px rgba(212,160,67,.3));letter-spacing:.08em;animation:titleFloat 3s ease-in-out infinite}@keyframes titleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.home>p{font-family:var(--font-heading);font-size:1.1rem;color:var(--text-muted);letter-spacing:.15em;text-transform:uppercase}.lobby h2{font-size:2rem;color:var(--text)}.lobby h2 span{color:var(--accent)}.home .actions{display:flex;flex-direction:column;gap:.8rem;align-items:center;width:100%;max-width:320px}.home .actions input{width:100%}.home .actions button{width:100%;padding:.7rem 1.2rem;font-size:1rem;font-weight:600}.lobby .players{list-style:none}.lobby .players li{padding:.5rem .8rem;font-size:1.05rem;display:flex;align-items:center;gap:.5rem;border-radius:var(--radius-sm);transition:background var(--transition-fast);animation:listItemSlide .3s ease-out both}.lobby .players li:nth-child(1){animation-delay:.05s}.lobby .players li:nth-child(2){animation-delay:.1s}.lobby .players li:nth-child(3){animation-delay:.15s}.lobby .players li:nth-child(4){animation-delay:.2s}.lobby .players li:nth-child(5){animation-delay:.25s}.lobby .players li:nth-child(6){animation-delay:.3s}.lobby .players li:hover{background:#ffffff08}@keyframes listItemSlide{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.room-code{font-family:var(--font-heading);font-size:2rem;color:var(--accent);letter-spacing:.15em;padding:.5rem 1.5rem;background:var(--bg-card);border:2px solid var(--accent);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-normal);position:relative}.room-code:hover{box-shadow:var(--shadow-glow);transform:scale(1.03)}.room-code-copied{position:absolute;top:-28px;left:50%;transform:translate(-50%);font-size:.75rem;color:var(--success);animation:copiedFade 1.5s ease forwards}@keyframes copiedFade{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(-10px)}}.game-container{display:grid;grid-template-columns:240px 1fr 280px;grid-template-rows:auto 1fr auto;height:100vh;gap:0;background:var(--bg);animation:pageSlideIn .4s ease-out}.game-header{grid-column:1 / -1;background:linear-gradient(180deg,var(--bg-light) 0%,var(--bg) 100%);padding:.6rem 1.2rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);box-shadow:0 2px 8px #0006;z-index:10;pointer-events:none}.game-header button,.game-header a,.game-header input,.game-header select,.game-header [onclick],.game-header .clickable{pointer-events:auto}.left-panel{grid-row:2 / 4;background:linear-gradient(180deg,var(--bg-light) 0%,var(--bg-surface) 100%);border-right:1px solid var(--border);padding:.75rem;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;box-shadow:2px 0 12px #0000004d}.board-area{grid-row:1 / -1;grid-column:1 / -1;display:flex;align-items:center;justify-content:center;overflow:visible;z-index:0;position:relative;background:radial-gradient(ellipse at 50% 50%,var(--ocean-mid) 0%,var(--ocean-deep) 100%)}.board-area:before{content:"";position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;background:repeating-linear-gradient(135deg,transparent,transparent 40px,rgba(255,255,255,.015) 40px,rgba(255,255,255,.015) 80px);animation:waveShift 12s linear infinite;pointer-events:none}@keyframes waveShift{0%{transform:translate(0)}to{transform:translate(80px,80px)}}.right-panel{grid-row:2 / 4;background:linear-gradient(180deg,var(--bg-light) 0%,var(--bg-surface) 100%);border-left:1px solid var(--border);padding:.75rem;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;box-shadow:-2px 0 12px #0000004d}.bottom-bar{grid-column:2;background:linear-gradient(0deg,var(--bg-light) 0%,var(--bg-surface) 100%);border-top:1px solid var(--border);padding:.6rem 1rem;display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;box-shadow:0 -2px 8px #0000004d}.bottom-bar button{font-weight:600;letter-spacing:.02em}.panel-section{background:linear-gradient(180deg,var(--bg-card) 0%,rgba(42,24,16,.9) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.7rem;box-shadow:var(--shadow-sm),inset 0 1px #ffffff08;position:relative;overflow:hidden;transition:box-shadow var(--transition-normal)}.panel-section:hover{box-shadow:var(--shadow-md),inset 0 1px #ffffff08}.panel-section:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(212,160,67,.2),transparent)}.panel-section h3{font-family:var(--font-heading);font-size:.8rem;color:var(--accent);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600}.resources{display:flex;flex-wrap:wrap;gap:.35rem}.resource-badge{display:flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:700;border:1px solid rgba(0,0,0,.3);box-shadow:var(--shadow-sm),inset 0 1px #ffffff26;transition:transform var(--transition-normal) cubic-bezier(.34,1.56,.64,1),box-shadow var(--transition-normal);position:relative;overflow:hidden;cursor:default}.resource-badge:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.12) 0%,transparent 60%);pointer-events:none}.resource-badge:hover{transform:translateY(-3px) scale(1.08);box-shadow:var(--shadow-md)}.resource-badge .res-count{display:inline-block;transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.resource-badge .res-count.changed{animation:countBounce .4s cubic-bezier(.34,1.56,.64,1)}@keyframes countBounce{0%{transform:scale(1)}40%{transform:scale(1.4)}to{transform:scale(1)}}.resource-badge .res-diff{animation:resDiffFade .8s ease-out forwards;pointer-events:none}@keyframes resDiffFade{0%{opacity:1;transform:translateY(0)}70%{opacity:1;transform:translateY(-2px)}to{opacity:0;transform:translateY(-6px)}}.resource-badge.wood{background:linear-gradient(135deg,#2d6b2d,#1a4a1a);color:#d4f0d4;border-color:#1a4a1a}.resource-badge.brick{background:linear-gradient(135deg,#b84c3c,#8a3428);color:#ffd8d0;border-color:#8a3428}.resource-badge.sheep{background:linear-gradient(135deg,#5db85d,#3a8a3a);color:#e8ffe8;border-color:#3a8a3a}.resource-badge.wheat{background:linear-gradient(135deg,#c9941a,#967010);color:#fff4d0;border-color:#967010}.resource-badge.ore{background:linear-gradient(135deg,#5a6672,#3e4852);color:#d8e0ea;border-color:#3e4852}.player-info{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.85rem;border-radius:var(--radius-sm);transition:background var(--transition-normal),border-color var(--transition-normal),box-shadow var(--transition-normal);border-left:3px solid transparent}.player-info:hover{background:#ffffff08}.player-dot{width:14px;height:14px;border-radius:var(--radius-round);display:inline-block;flex-shrink:0;box-shadow:0 0 6px #0006,inset 0 -2px 4px #0000004d;border:2px solid rgba(255,255,255,.15);transition:box-shadow var(--transition-normal)}.player-info.active{font-weight:700;background:#d4a0431f;border-left:3px solid var(--accent);padding-left:calc(.5rem - 3px);box-shadow:inset 0 0 20px #d4a04314;animation:activePlayerGlow 2s ease-in-out infinite;position:relative}.player-info.active:before{content:"▶";position:absolute;right:.3rem;top:50%;transform:translateY(-50%);font-size:.55rem;color:var(--accent);opacity:.7}@keyframes activePlayerGlow{0%,to{box-shadow:inset 0 0 20px #d4a0430d}50%{box-shadow:inset 0 0 30px #d4a0431f}}.player-info.active .player-dot{box-shadow:0 0 8px currentColor,0 0 16px #d4a0434d;animation:playerPulse 2s ease-in-out infinite}@keyframes playerPulse{0%,to{box-shadow:0 0 6px currentColor}50%{box-shadow:0 0 12px currentColor,0 0 20px #d4a0434d}}.achievement-badge{display:inline-flex;animation:goldenShimmer 3s ease-in-out infinite;filter:drop-shadow(0 0 4px rgba(255,215,0,.4));background:#ffd70026;border-radius:4px;padding:0 .2rem;font-size:.85rem}@keyframes goldenShimmer{0%,to{filter:drop-shadow(0 0 4px rgba(255,215,0,.3))}50%{filter:drop-shadow(0 0 10px rgba(255,215,0,.7))}}.dice-container{display:flex;gap:.5rem;align-items:center;perspective:300px}.die{width:42px;height:42px;background:linear-gradient(145deg,#faf5ea,#e8dcc8);color:#2c1810;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:800;font-family:var(--font-heading);box-shadow:2px 3px 6px #0006,inset 0 1px #fffc,inset 0 -1px #0000001a,inset -1px 0 #0000000d,inset 1px 0 #ffffff4d;border:1px solid #c4b8a0;transition:transform var(--transition-fast);transform-style:preserve-3d}.die:hover{transform:rotateY(10deg) rotateX(-5deg) scale(1.1)}@keyframes diceTumble{0%{transform:rotateX(0) rotateY(0) rotate(0) scale(.3);opacity:0}15%{opacity:1}25%{transform:rotateX(270deg) rotateY(180deg) rotate(90deg) scale(1.15)}50%{transform:rotateX(540deg) rotateY(360deg) rotate(180deg) scale(.9)}70%{transform:rotateX(680deg) rotateY(450deg) rotate(220deg) scale(1.05)}85%{transform:rotateX(710deg) rotateY(710deg) rotate(350deg) scale(.98)}to{transform:rotateX(720deg) rotateY(720deg) rotate(360deg) scale(1)}}.die.rolling{animation:diceTumble 1s cubic-bezier(.25,.46,.45,.94)}.die.rolled-highlight{animation:diceFlash .6s ease-out}@keyframes diceFlash{0%{box-shadow:2px 3px 6px #0006,0 0 #d4a04300}30%{box-shadow:2px 3px 6px #0006,0 0 20px #d4a043cc}to{box-shadow:2px 3px 6px #0006,0 0 #d4a04300}}.vp-counter{font-size:1.4rem;text-align:center;font-weight:700;color:var(--accent);display:inline-block;overflow:hidden;position:relative}.vp-counter .vp-number{display:inline-block;transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.vp-counter .vp-number.vp-changed{animation:vpRoll .5s cubic-bezier(.34,1.56,.64,1)}@keyframes vpRoll{0%{transform:translateY(100%);opacity:0}60%{transform:translateY(-10%);opacity:1}to{transform:translateY(0);opacity:1}}.turn-banner{position:fixed;top:60px;left:50%;transform:translate(-50%);z-index:100;padding:.8rem 2rem;border-radius:var(--radius-lg);font-family:var(--font-heading);font-size:1.3rem;font-weight:700;letter-spacing:.06em;text-shadow:0 2px 4px rgba(0,0,0,.5);border:2px solid;box-shadow:var(--shadow-lg),0 0 30px #0000004d;animation:turnBannerIn .5s cubic-bezier(.34,1.56,.64,1),turnBannerOut .4s ease-in 2.5s forwards;pointer-events:none}@keyframes turnBannerIn{0%{transform:translate(-50%) translateY(-40px) scale(.8);opacity:0}to{transform:translate(-50%) translateY(0) scale(1);opacity:1}}@keyframes turnBannerOut{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(-30px)}}.your-turn-banner{font-size:1.6rem;padding:1rem 2.5rem;animation:turnBannerIn .5s cubic-bezier(.34,1.56,.64,1),yourTurnPulse 1s ease-in-out .5s 3,turnBannerOut .4s ease-in 3.5s forwards;box-shadow:var(--shadow-lg),0 0 40px #ffc80066}@keyframes yourTurnPulse{0%,to{transform:translate(-50%) scale(1)}50%{transform:translate(-50%) scale(1.05);box-shadow:var(--shadow-lg),0 0 60px #ffc80099}}.game-log{max-height:200px;overflow-y:auto;font-size:.75rem;color:var(--text-muted)}.game-log .entry{padding:.2rem .3rem;border-bottom:1px solid rgba(255,255,255,.04);transition:background var(--transition-fast);animation:logEntryIn .3s ease-out}@keyframes logEntryIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.game-log .entry:hover{background:#ffffff05}.game-log .entry:last-child{border-bottom:none}.trade-panel{display:flex;flex-direction:column;gap:.4rem}.trade-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.trade-row label{font-size:.8rem;min-width:50px;color:var(--text-muted);font-weight:500}.trade-proposal{animation:tradeSlideIn .4s cubic-bezier(.34,1.56,.64,1);background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:.8rem;box-shadow:var(--shadow-md)}@keyframes tradeSlideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.trade-fly{animation:tradeFly .6s ease-in-out}@keyframes tradeFly{0%{transform:translate(0) translateY(0) scale(1);opacity:1}50%{transform:translate(50px) translateY(-30px) scale(1.3);opacity:.8}to{transform:translate(100px) translateY(0) scale(.5);opacity:0}}.overlay,.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:overlayFadeIn .25s ease}@keyframes overlayFadeIn{0%{opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{opacity:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.dialog,.modal{background:linear-gradient(180deg,var(--bg-card) 0%,var(--bg-surface) 100%);border:2px solid var(--accent);border-radius:var(--radius-lg);padding:2rem;max-width:500px;width:90%;text-align:center;box-shadow:var(--shadow-lg),0 0 40px #d4a04326;animation:dialogSlideIn .35s cubic-bezier(.34,1.56,.64,1)}@keyframes dialogSlideIn{0%{transform:translateY(30px) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.dialog h2,.modal h3{color:var(--accent);margin-bottom:1rem;font-family:var(--font-heading)}.robber-danger-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#8b000026;z-index:50;pointer-events:none;animation:robberDanger .8s ease-out forwards}@keyframes robberDanger{0%{opacity:0}20%{opacity:1}40%{opacity:.8}60%{opacity:1}to{opacity:0}}.screen-shake{animation:screenShake .5s ease-out}@keyframes screenShake{0%,to{transform:translate(0)}10%{transform:translate(-4px) translateY(2px)}20%{transform:translate(4px) translateY(-2px)}30%{transform:translate(-3px) translateY(1px)}40%{transform:translate(3px) translateY(-1px)}50%{transform:translate(-2px)}60%{transform:translate(2px)}70%{transform:translate(-1px)}80%{transform:translate(1px)}}.victory-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;animation:overlayFadeIn .5s ease;overflow:hidden}.victory-content{text-align:center;animation:victoryEntrance .8s cubic-bezier(.34,1.56,.64,1);position:relative;z-index:1}@keyframes victoryEntrance{0%{transform:scale(.3) rotate(-10deg);opacity:0}60%{transform:scale(1.1) rotate(2deg)}to{transform:scale(1) rotate(0);opacity:1}}.victory-content h1{font-size:3.5rem;font-family:var(--font-heading);background:linear-gradient(180deg,gold,#ff8c00,gold);background-size:200% 200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 4px 12px rgba(255,215,0,.4));animation:victoryGlow 2s ease-in-out infinite,victoryGradient 3s ease infinite}@keyframes victoryGlow{0%,to{filter:drop-shadow(0 4px 12px rgba(255,215,0,.4))}50%{filter:drop-shadow(0 4px 24px rgba(255,215,0,.7))}}@keyframes victoryGradient{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.victory-content h2{font-size:1.5rem;color:var(--text);margin-top:1rem;font-family:var(--font-heading)}.confetti-container{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.confetti{position:absolute;width:10px;height:10px;top:-20px;animation:confettiFall linear forwards}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(100vh) rotate(720deg);opacity:0}}.winner-spotlight{position:absolute;width:400px;height:400px;border-radius:var(--radius-round);background:radial-gradient(circle,rgba(255,215,0,.15) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);animation:spotlightPulse 2s ease-in-out infinite}@keyframes spotlightPulse{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.6}50%{transform:translate(-50%,-50%) scale(1.3);opacity:1}}.build-hint{font-size:.85rem;font-weight:500;color:var(--accent);text-align:center;padding:.4rem 1rem;background:linear-gradient(90deg,transparent,rgba(212,160,67,.1),transparent);border:1px solid rgba(212,160,67,.2);border-radius:var(--radius-md);animation:hintPulse 2s ease-in-out infinite}@keyframes hintPulse{0%,to{border-color:#d4a04333;background:linear-gradient(90deg,transparent,rgba(212,160,67,.08),transparent)}50%{border-color:#d4a04380;background:linear-gradient(90deg,transparent,rgba(212,160,67,.15),transparent)}}.invalid-placement,.btn-shake{animation:invalidShake .4s ease-out}@keyframes invalidShake{0%,to{transform:translate(0)}15%{transform:translate(-5px)}30%{transform:translate(5px)}45%{transform:translate(-4px)}60%{transform:translate(4px)}75%{transform:translate(-2px)}90%{transform:translate(2px)}}.end-turn-glow{animation:endTurnPulse 1.5s ease-in-out infinite;box-shadow:0 0 8px var(--success, #2ecc71),0 0 16px var(--success, #2ecc71)}@keyframes endTurnPulse{0%,to{box-shadow:0 0 4px var(--success, #2ecc71)}50%{box-shadow:0 0 12px var(--success, #2ecc71),0 0 24px #2ecc714d}}.build-mode-indicator{position:fixed;top:4.5rem;left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--success, #2ecc71);border-radius:999px;padding:.25rem .8rem;font-size:.78rem;font-weight:600;color:var(--success, #2ecc71);z-index:50;pointer-events:none;box-shadow:0 2px 8px #0000004d;animation:fadeSlideDown .2s ease-out}@keyframes fadeSlideDown{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.settlement-placed{animation:settlementDrop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes settlementDrop{0%{transform:translateY(-30px) scale(.5);opacity:0}60%{transform:translateY(3px) scale(1.1);opacity:1}80%{transform:translateY(-2px) scale(.98)}to{transform:translateY(0) scale(1)}}.road-placed{animation:roadDraw .4s ease-out;stroke-dasharray:100;stroke-dashoffset:100}@keyframes roadDraw{to{stroke-dashoffset:0}}.city-upgrade{animation:cityGrow .6s cubic-bezier(.34,1.56,.64,1)}@keyframes cityGrow{0%{transform:scale(.7)}40%{transform:scale(1.2)}70%{transform:scale(.95)}to{transform:scale(1)}}.resource-selector{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}.resource-selector button{font-size:.85rem;padding:.35rem .7rem;transition:all var(--transition-normal) cubic-bezier(.34,1.56,.64,1)}.resource-selector button:hover:not(:disabled){transform:translateY(-2px) scale(1.05)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}.chat-system{font-style:italic;color:var(--text-dim);font-size:.8rem}.chat-collapsed{transition:all var(--transition-normal)}.chat-collapsed:hover{background:#ffffff0d!important}.hex-tooltip{position:absolute;background:var(--bg-card);border:1px solid var(--accent);border-radius:var(--radius-md);padding:.4rem .8rem;font-size:.8rem;color:var(--text);pointer-events:none;z-index:50;box-shadow:var(--shadow-md);animation:tooltipIn .15s ease-out;white-space:nowrap}@keyframes tooltipIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}@keyframes gentleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes spinIn{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes breathe{0%,to{transform:scale(1);opacity:.6}50%{transform:scale(1.15);opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.skeleton{background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-light) 50%,var(--bg-card) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.tap-pulse{animation:tapPulse .25s ease-out}@keyframes tapPulse{0%{transform:scale(1)}50%{transform:scale(.93)}to{transform:scale(1)}}.phase-hint-banner{margin:.75rem auto 0;max-width:1100px;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;padding:.75rem 1rem;background:#ffffff0d;border:1px solid var(--border);border-radius:12px;color:var(--text-muted);pointer-events:none}.phase-hint-banner button,.phase-hint-banner a,.phase-hint-banner input{pointer-events:auto}.phase-hint-banner strong{color:var(--text)}.spectator-recap-banner{margin:.55rem auto 0;max-width:1100px;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;padding:.7rem 1rem;background:#8fd3ff1a;border:1px solid rgba(143,211,255,.28);border-radius:12px;color:#bfe8ff;box-shadow:0 10px 30px #0000002e}.spectator-recap-banner strong{color:#fff}.spectator-color-legend{display:flex;align-items:center;gap:.75rem;padding:.4rem 1rem;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:8px;margin:.3rem auto;width:fit-content;z-index:10;flex-wrap:wrap;justify-content:center}.spectator-color-legend .legend-item{display:flex;align-items:center;gap:.25rem}.trade-toast{position:fixed;top:5rem;left:50%;transform:translate(-50%);z-index:150;background:#228b22e6;color:#fff;padding:.6rem 1.2rem;border-radius:8px;font-size:.9rem;font-weight:600;animation:toastSlideIn .3s ease-out,toastFadeOut .5s ease-in 2.5s forwards;pointer-events:none}@keyframes toastSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastFadeOut{0%{opacity:1}to{opacity:0}}.vp-badge{font-weight:700;transition:transform .2s ease}.vp-pulse{animation:vpPulseAnim 1.5s ease-out}@keyframes vpPulseAnim{0%{transform:scale(1)}15%{transform:scale(1.5);color:gold}30%{transform:scale(1.1)}50%{transform:scale(1.3);color:gold}to{transform:scale(1)}}.board-controls-overlay{position:absolute;top:.85rem;right:.85rem;z-index:4;display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;padding:.35rem .45rem;background:#0c121eb8;border:1px solid rgba(255,255,255,.12);border-radius:999px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none}.board-controls-overlay button,.board-controls-overlay input,.board-controls-overlay select{pointer-events:auto}.board-controls-overlay button{min-height:34px;padding:.35rem .7rem}.board-zoom-label{font-size:.78rem;color:var(--text-muted);min-width:48px;text-align:center}.panel-collapsed{display:none!important}.panel-toggle{display:none;position:fixed;bottom:70px;z-index:50;background:linear-gradient(180deg,var(--bg-card) 0%,var(--bg-surface) 100%);border:2px solid var(--accent);border-radius:var(--radius-round);width:48px;height:48px;font-size:1.2rem;cursor:pointer;color:var(--text);align-items:center;justify-content:center;box-shadow:var(--shadow-md),var(--shadow-glow);transition:all var(--transition-normal)}.panel-toggle:active{transform:scale(.9)}.panel-toggle-left{left:12px}.panel-toggle-right{right:12px}.mobile-quick-actions{position:fixed;left:50%;bottom:70px;transform:translate(-50%);z-index:49;display:none;gap:.45rem;align-items:center;justify-content:center;flex-wrap:wrap;padding:.45rem .55rem;max-width:min(92vw,720px);background:#0c121ecc;border:1px solid rgba(255,255,255,.12);border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-md)}.mobile-quick-actions button{min-height:44px;min-width:44px;padding:.45rem .85rem;font-size:.85rem}@media (pointer: coarse){button{min-height:44px;min-width:44px;padding:.6rem 1rem}input,select{min-height:44px;font-size:16px}button:active:not(:disabled){transform:scale(.93);transition-duration:.05s}}@media (max-width: 1100px){.panel-toggle,.mobile-quick-actions{display:flex}}@media (max-width: 768px){.game-container{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.left-panel,.right-panel{grid-row:auto;border:none;border-bottom:1px solid var(--border);max-height:200px;overflow-y:auto;box-shadow:none}.left-panel{flex-direction:row;flex-wrap:wrap;gap:.5rem;padding:.5rem}.right-panel{flex-direction:row;flex-wrap:wrap;gap:.5rem;padding:.5rem;order:4}.board-area{grid-row:auto;min-height:300px;touch-action:manipulation}.bottom-bar{grid-column:1;position:sticky;bottom:0;z-index:10}.game-header{flex-wrap:wrap;gap:.5rem;padding:.4rem .6rem}.die{width:34px;height:34px;font-size:1.1rem}.home h1{font-size:2.2rem}.lobby h2{font-size:1.6rem}.panel-section{min-width:150px;flex:1}.turn-banner{font-size:1rem;padding:.6rem 1.2rem}.phase-hint-banner,.spectator-recap-banner{margin:.5rem;font-size:.82rem}.board-controls-overlay{top:.6rem;right:.6rem}}@media (max-width: 480px){.game-container{grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto auto;height:auto;min-height:100vh}.left-panel{flex-direction:column;max-height:150px}.right-panel{flex-direction:column;max-height:180px}.board-area{min-height:250px;max-height:50vh}.bottom-bar{flex-wrap:wrap;padding:.4rem;gap:.3rem}.bottom-bar button{font-size:.8rem;padding:.5rem .7rem;flex:1 1 auto;min-width:70px}.game-header{font-size:.85rem}.home h1{font-size:1.8rem}.home>p{font-size:.8rem}.home .actions{width:100%;padding:0 1rem;max-width:none}.home .actions input,.home .actions button{width:100%!important}.dialog,.modal{width:95%;padding:1.2rem}.trade-panel,.player-info{font-size:.8rem}.resource-badge{font-size:.75rem;padding:.2rem .45rem}.victory-content h1{font-size:2.2rem}.victory-content h2{font-size:1.1rem}.turn-banner{font-size:.9rem;padding:.5rem 1rem}.phase-hint-banner,.spectator-recap-banner{margin:.5rem .5rem 0;padding:.65rem .75rem}.mobile-quick-actions{bottom:62px;width:calc(100vw - 1rem);border-radius:18px}.board-controls-overlay{left:.5rem;right:.5rem;justify-content:center;border-radius:14px}.board-controls-overlay button{padding:.35rem .55rem}}.board-area svg{filter:drop-shadow(0 0 20px rgba(0,0,0,.3));transition:transform var(--transition-slow)}.board-area svg circle[style*=pointer],.board-area svg line[style*=pointer],.board-area svg polygon[style*=pointer]{transition:filter .2s ease,opacity .2s ease}.board-area svg circle[style*=pointer]:hover,.board-area svg line[style*=pointer]:hover{filter:drop-shadow(0 0 8px rgba(255,255,255,.6))}.hex-group{transition:filter .2s ease}.hex-group:hover .hex-main{filter:brightness(1.15)}.token-pulse{animation:tokenPulse 1s ease-out}@keyframes tokenPulse{0%{r:17;fill-opacity:1}30%{r:22;fill-opacity:.8}60%{r:18;fill-opacity:1}to{r:17;fill-opacity:1}}.build-spot-pulse{animation:breathe 1.5s ease-in-out infinite}.robber-slide{transition:transform .6s cubic-bezier(.34,1.56,.64,1)}.disconnected-bar{background:#5c3a1a;color:#fc9;padding:.5rem;text-align:center;animation:fadeInUp .3s ease-out}.error-bar{background:#5c1a1a;color:#f99;padding:.5rem;text-align:center;cursor:pointer;animation:fadeInUp .3s ease-out;transition:background var(--transition-normal)}.error-bar:hover{background:#6c2a2a}@keyframes spin{to{transform:rotate(360deg)}}.connection-status{position:fixed;top:.5rem;right:.5rem;z-index:2000;display:flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:20px;font-size:.75rem;font-weight:600;transition:opacity .3s ease}.connection-status.connected{background:#2ea04326;color:#2ea043;opacity:0;pointer-events:none}.connection-status.connected.show{opacity:1;pointer-events:auto}.connection-status.disconnected{background:#da363333;color:#da3633}.connection-status.reconnecting{background:#e3b34133;color:#e3b341}.connection-dot{width:8px;height:8px;border-radius:50%;background:currentColor}@keyframes diceShake{0%,to{transform:translate(0) rotate(0)}10%{transform:translate(-4px,-2px) rotate(-8deg)}20%{transform:translate(4px,2px) rotate(8deg)}30%{transform:translate(-3px,3px) rotate(-6deg)}40%{transform:translate(3px,-3px) rotate(6deg)}50%{transform:translate(-2px,2px) rotate(-4deg)}60%{transform:translate(2px,-2px) rotate(4deg)}70%{transform:translate(-1px,1px) rotate(-2deg)}80%{transform:translate(1px,-1px) rotate(2deg)}90%{transform:translate(0) rotate(0)}}@keyframes diceReveal{0%{opacity:0;transform:scale(.3) rotate(180deg)}60%{opacity:1;transform:scale(1.2) rotate(-10deg)}to{opacity:1;transform:scale(1) rotate(0)}}.die.dice-animating{animation:diceShake .6s ease-in-out,diceReveal .8s ease-out .4s both}@keyframes buildPopIn{0%{transform:scale(0);opacity:0}50%{transform:scale(1.3);opacity:1}70%{transform:scale(.9)}to{transform:scale(1);opacity:1}}.building-new{animation:buildPopIn .5s cubic-bezier(.34,1.56,.64,1);transform-origin:center}@keyframes resourceSlideIn{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}.resource-card-new{animation:resourceSlideIn .4s ease-out}@keyframes robberGlide{0%{opacity:.5;transform:translateY(-20px) scale(.8)}50%{opacity:1;transform:translateY(5px) scale(1.1)}to{opacity:1;transform:translateY(0) scale(1)}}.robber-moving{animation:robberGlide .6s ease-out}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.color-blind-mode .player-color-red{background-image:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(0,0,0,.3) 3px,rgba(0,0,0,.3) 4px)}.color-blind-mode .player-color-blue{background-image:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,.3) 3px,rgba(0,0,0,.3) 4px)}.color-blind-mode .player-color-green{background-image:repeating-linear-gradient(90deg,transparent,transparent 3px,rgba(0,0,0,.3) 3px,rgba(0,0,0,.3) 4px)}.color-blind-mode .player-color-orange{background-image:repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(0,0,0,.3) 3px,rgba(0,0,0,.3) 4px)}.color-blind-mode .player-color-white{background-image:radial-gradient(circle,rgba(0,0,0,.3) 1px,transparent 1px);background-size:4px 4px}.color-blind-mode .player-color-brown{background-image:repeating-linear-gradient(135deg,transparent,transparent 2px,rgba(0,0,0,.3) 2px,rgba(0,0,0,.3) 3px)}[role=button]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.board-area svg{width:clamp(300px,80vw,900px);height:auto}@media (max-width: 768px){.game-container{display:flex;flex-direction:column;height:auto;min-height:100vh}.game-header{flex-wrap:wrap;padding:.5rem;gap:.5rem}.left-panel,.right-panel{width:100%;max-width:100%;position:static;height:auto;max-height:none;overflow:visible;order:2}.board-area{width:100%;order:1;min-height:40vh}.bottom-bar{order:3;flex-wrap:wrap;gap:.3rem}button{min-height:44px;min-width:44px}.bottom-bar button{padding:.5rem .8rem;font-size:.85rem}.home h1{font-size:2rem}}@media (max-width: 480px){.game-container{padding:0}.game-header{font-size:.8rem;padding:.3rem}.left-panel,.right-panel{padding:.5rem}.board-area{min-height:35vh}.board-area svg{width:100vw}.panel-section{padding:.5rem;margin-bottom:.3rem}.die{width:28px;height:28px;font-size:.9rem}.home h1{font-size:1.6rem}.home{padding:1rem;gap:.8rem}.actions{width:100%}.actions input,.actions button{width:100%!important}}.undo-btn{background:linear-gradient(180deg,#4a3520,#3a2510);border-color:var(--accent);color:var(--accent);font-size:.85rem;display:flex;align-items:center;gap:.3rem;animation:fadeInUp .3s ease-out}.undo-btn:hover:not(:disabled){background:var(--accent);color:var(--bg)}.stats-panel,.leaderboard-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem;max-width:500px;width:100%}.stats-panel h3,.leaderboard-panel h3{margin-bottom:.75rem;color:var(--accent)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem}.stat-card{background:var(--bg-surface);padding:.75rem;border-radius:var(--radius-md);text-align:center}.stat-card .stat-value{font-size:1.5rem;font-weight:700;color:var(--accent)}.stat-card .stat-label{font-size:.75rem;color:var(--text-muted)}.leaderboard-row{display:flex;align-items:center;padding:.4rem .5rem;border-bottom:1px solid var(--border);gap:.75rem}.leaderboard-row:last-child{border-bottom:none}.leaderboard-rank{font-weight:700;width:2rem;text-align:center;color:var(--accent)}@keyframes settlement-pop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}@keyframes city-slide-up{0%{transform:translateY(10px) scale(.8);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes road-draw{0%{stroke-dashoffset:40;opacity:.5}to{stroke-dashoffset:0;opacity:1}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.15)}}@keyframes badge-pulse{0%,to{transform:scale(1);box-shadow:0 0 #e74c3cb3}50%{transform:scale(1.15);box-shadow:0 0 0 6px #e74c3c00}}.trade-badge-pulse{animation:badge-pulse 1.5s ease-in-out infinite}@keyframes diceResultPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}25%{transform:translate(-50%,-50%) scale(1)}70%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-60%) scale(.8)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.skip-link{position:absolute;top:-100%;left:0;z-index:10000;background:var(--accent);color:var(--bg);padding:.75rem 1.5rem;font-weight:700;text-decoration:none;border-radius:0 0 var(--radius-md) 0}.skip-link:focus{top:0}@media print{body{background:#fff;color:#000}.connection-status,.sound-control,.mobile-quick-actions,button,.modal-overlay,.skip-link{display:none!important}.victory-content{animation:none!important}}@keyframes resourceFloat{0%{opacity:1;transform:translate(-50%) translateY(0)}70%{opacity:1}to{opacity:0;transform:translate(-50%) translateY(-60px)}}.player-stats-hover{position:relative}.player-stats-popup{display:none;position:absolute;right:100%;top:50%;transform:translateY(-50%);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.5rem .7rem;min-width:160px;z-index:200;font-size:.78rem;line-height:1.6;box-shadow:0 4px 16px #0006;pointer-events:none;white-space:nowrap;margin-right:.5rem}.player-stats-hover:hover .player-stats-popup{display:block}@keyframes diceShake{0%,to{transform:rotate(0)}10%{transform:rotate(-12deg) scale(1.1)}30%{transform:rotate(10deg) scale(1.15)}50%{transform:rotate(-8deg) scale(1.1)}70%{transform:rotate(6deg)}90%{transform:rotate(-4deg)}}.die.rolling{animation:diceShake .5s ease-in-out!important}.board-area.build-mode-active{box-shadow:inset 0 0 20px #2ecc714d;outline:2px solid rgba(46,204,113,.4);outline-offset:-2px;border-radius:12px;transition:box-shadow .3s,outline-color .3s}@keyframes robberPulse{0%,to{opacity:.18}50%{opacity:.35}}.robber-valid-hex{animation:robberPulse 1.2s ease-in-out infinite;pointer-events:none}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
