*{margin:0;padding:0;box-sizing:border-box}html{height:100%;min-height:100vh;background:sienna;overflow-x:hidden}body{margin:0;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#8b4513,#d2691e);background-attachment:fixed;overflow-x:hidden}#root{width:100%;min-height:100vh}.player-setup{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#8b4513,#d2691e);padding:20px}.setup-container{background:#fff;border-radius:12px;padding:40px;box-shadow:0 8px 32px #0000004d;max-width:500px;width:100%}.setup-container .game-title{font-size:3rem;color:#333;text-align:center;margin:0 0 10px;font-weight:700;text-shadow:none}.setup-subtitle{text-align:center;color:#666;margin:0 0 30px;font-size:1.1rem}.player-inputs{display:flex;flex-direction:column;gap:20px;margin-bottom:30px}.player-input-group{display:flex;flex-direction:column;gap:8px}.player-input-group label{font-weight:600;color:#333;font-size:.95rem}.player-name-input{padding:12px 16px;border:2px solid #ddd;border-radius:8px;font-size:1rem;transition:all .3s ease}.player-name-input:focus{outline:none;border-color:#8b4513;box-shadow:0 0 0 3px #8b45131a}.start-game-button{width:100%;padding:16px;background:#8b4513;color:#fff;border:none;border-radius:8px;font-size:1.2rem;font-weight:700;cursor:pointer;transition:all .3s ease}.start-game-button:hover:not(:disabled){background:sienna;transform:translateY(-2px);box-shadow:0 4px 12px #8b45134d}.start-game-button:disabled{background:#ccc;cursor:not-allowed}.panel{background:#fff;border-radius:12px;padding:20px;box-shadow:0 4px 16px #0003}.panel-title{margin:0 0 16px;font-size:1.5rem;color:#8b4513;border-bottom:2px solid #8B4513;padding-bottom:8px}.players-list{display:flex;flex-direction:column;gap:12px}.player-card{padding:12px;border:2px solid #ddd;border-radius:8px;transition:all .3s ease;display:flex;justify-content:space-between;align-items:center;gap:8px}.player-card.active{border-color:#8b4513;background:#fff8dc;box-shadow:0 2px 8px #8b451333}.player-name{font-weight:700;font-size:1.1rem;color:#333;flex:1}.active-badge{background:#8b4513;color:#fff;padding:4px 12px;border-radius:12px;font-size:.75rem;font-weight:700;margin-left:auto}.money-value{font-weight:700;font-size:1.2rem;color:#228b22}.vp-value{font-weight:400;font-size:.9rem;color:#d2691e}.market-and-trading{flex:0 1 auto}.resources-grid{display:flex;flex-direction:column;gap:16px}.resource-row{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#f9f9f9;border-radius:8px;border:2px solid #e0e0e0;gap:16px}.resource-info{display:flex;align-items:center;gap:12px;min-width:150px}.resource-indicator{width:32px;height:32px;border-radius:50%;box-shadow:0 2px 4px #0003;flex-shrink:0}.resource-details{display:flex;flex-direction:column;gap:4px}.resource-name{font-weight:600;color:#333;font-size:1rem}.resource-price{font-size:1.4rem;font-weight:700;color:#228b22}.trading-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.trade-button{padding:10px 20px;border:none;border-radius:6px;font-weight:700;font-size:.95rem;cursor:pointer;transition:all .3s ease;white-space:nowrap}.buy-button{background:#228b22;color:#fff}.buy-button:hover:not(:disabled){background:#1a6b1a;transform:translateY(-2px);box-shadow:0 4px 8px #228b224d}.buy-button:disabled{background:#ccc;cursor:not-allowed;opacity:.6}.sell-button{background:#d2691e;color:#fff}.sell-button:hover{background:#b8581a;transform:translateY(-2px);box-shadow:0 4px 8px #d2691e4d}.port-select{padding:8px 12px;border:2px solid #ddd;border-radius:6px;font-size:.9rem;background:#fff;cursor:pointer;transition:all .3s ease}.port-select:focus{outline:none;border-color:#8b4513}@media(max-width:900px){.resource-row{flex-direction:column;align-items:stretch}.trading-controls{justify-content:stretch}.trade-button{flex:1}}.dice-display{flex-shrink:0}.dice-container{display:flex;justify-content:center;align-items:center;min-height:100px}.dice-results{display:flex;gap:16px;justify-content:center;align-items:center}.dice-value{width:80px;height:80px;display:flex;align-items:center;justify-content:center;background:#fff;border:4px solid #8B4513;border-radius:12px;font-size:3rem;font-weight:700;color:#8b4513;box-shadow:0 4px 12px #0003;animation:diceRoll .3s ease}.dice-value.seven-rolled{border-color:#dc143c;color:#dc143c;animation:diceRoll .3s ease,pulseRed 1s ease .3s infinite}.dice-placeholder{font-size:1.1rem;color:#999;font-style:italic}.next-turn-button{width:100%;padding:14px;background:#8b4513;color:#fff;border:none;border-radius:8px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;margin-top:16px}.next-turn-button:hover{background:sienna;transform:translateY(-2px);box-shadow:0 4px 12px #8b45134d}.next-turn-button:active{transform:translateY(0)}.undo-button{width:100%;padding:14px;background:#696969;color:#fff;border:none;border-radius:8px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;margin-top:12px}.undo-button:hover:not(:disabled){background:gray;transform:translateY(-2px);box-shadow:0 4px 12px #6969694d}.undo-button:active:not(:disabled){transform:translateY(0)}.undo-button:disabled{background:#ccc;cursor:not-allowed;opacity:.6}@keyframes diceRoll{0%{transform:scale(.8) rotate(0)}50%{transform:scale(1.1) rotate(180deg)}to{transform:scale(1) rotate(360deg)}}@keyframes pulseRed{0%,to{box-shadow:0 4px 12px #dc143c66}50%{box-shadow:0 4px 20px #dc143ccc}}.dice-distribution-graph{display:flex;align-items:flex-end;justify-content:space-between;gap:4px;height:150px;padding:10px 0;margin-top:20px}.graph-column{display:flex;flex-direction:column;align-items:center;flex:1;gap:10px}.bar-container{display:flex;flex-direction:column;align-items:center;width:100%;height:120px;position:relative;justify-content:flex-end;gap:4px}.diff-label{font-size:.75rem;font-weight:700;margin-bottom:3px;order:-1}.diff-label.positive{color:#228b22}.diff-label.negative{color:#dc143c}.bar{width:100%;border-radius:4px 4px 0 0;display:flex;align-items:flex-start;justify-content:center;padding-top:4px;transition:all .3s ease;position:relative}.bar.neutral{background:linear-gradient(to top,#8b4513,sienna);border:2px solid #8B4513}.bar.positive{background:linear-gradient(to top,#228b22,#32cd32);border:2px solid #228B22;box-shadow:0 0 8px #228b224d}.bar.negative{background:linear-gradient(to top,#dc143c,#ff6b6b);border:2px solid #DC143C;box-shadow:0 0 8px #dc143c4d}.bar.zero-weight{background:linear-gradient(to top,#dc143c,#ff6b6b);border:2px solid #DC143C;min-height:8px;padding-top:0;box-shadow:0 0 8px #dc143c4d}.weight-value{font-size:.75rem;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.dice-label{font-size:.85rem;font-weight:700;color:#333}.mayor-display{flex-shrink:0}.mayor-section{margin-bottom:20px}.section-heading{font-size:1rem;color:#666;margin:0 0 12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.mayor-ability{padding:12px;background:#fff8dc;border-left:4px solid #8B4513;border-radius:4px;margin:0;font-size:1rem;color:#333;font-style:italic}.distribution-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.distribution-item{display:flex;flex-direction:column;align-items:center;padding:8px;background:#f9f9f9;border-radius:6px;border:1px solid #e0e0e0}.dice-number{font-weight:700;font-size:1.1rem;color:#333;margin-bottom:4px}.diff-value{font-weight:700;font-size:.95rem}.diff-value.positive{color:#228b22}.diff-value.negative{color:#dc143c}.diff-value.neutral{color:#999}.election-button{width:100%;padding:12px;background:#8b4513;color:#fff;border:none;border-radius:6px;font-weight:700;font-size:1rem;cursor:pointer;transition:all .3s ease;margin-top:8px}.election-button:hover{background:sienna;transform:translateY(-2px);box-shadow:0 4px 8px #8b45134d}.election-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .3s ease}.election-modal{background:#fff;border-radius:16px;padding:32px;max-width:1000px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}.election-title{margin:0 0 8px;font-size:2rem;color:#8b4513;text-align:center}.election-subtitle{margin:0 0 24px;text-align:center;color:#666;font-size:1.1rem}.candidates-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.candidate-card{border:3px solid #8B4513;border-radius:12px;padding:20px;background:#fff8dc;transition:all .3s ease}.candidate-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #8b45134d}.candidate-heading{margin:0 0 16px;font-size:1.3rem;color:#8b4513;text-align:center;border-bottom:2px solid #8B4513;padding-bottom:8px}.candidate-section{margin-bottom:16px}.candidate-label{font-size:.85rem;font-weight:600;color:#666;margin:0 0 8px;text-transform:uppercase;letter-spacing:.5px}.candidate-ability{margin:0;padding:12px;background:#fff;border-radius:6px;font-size:.95rem;color:#333;font-style:italic;min-height:50px}.candidate-distribution{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.dist-badge{padding:6px 12px;border-radius:12px;font-size:.85rem;font-weight:700}.dist-badge.positive{background:#90ee90;color:#228b22}.dist-badge.negative{background:#ffb6c1;color:#dc143c}.select-candidate-button{width:100%;padding:14px;background:#8b4513;color:#fff;border:none;border-radius:8px;font-weight:700;font-size:1rem;cursor:pointer;transition:all .3s ease;margin-top:8px}.select-candidate-button:hover{background:sienna;transform:translateY(-2px);box-shadow:0 4px 12px #8b451366}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.dice-pac{margin:0 20px 20px}.pac-grid{display:grid;grid-template-columns:repeat(11,1fr);gap:12px}.pac-item{display:flex;flex-direction:column;gap:8px;padding:12px;background:#f9f9f9;border-radius:8px;border:2px solid #e0e0e0;transition:all .3s ease}.pac-item.first-place{background:gold;border-color:#daa520;box-shadow:0 0 12px #daa52080}.pac-item.first-place .dice-number{color:#8b4513;text-shadow:0 1px 2px rgba(255,255,255,.5)}.pac-item.first-place .pac-funds{color:#006400;text-shadow:0 1px 2px rgba(255,255,255,.5)}.pac-item.second-place{background:silver;border-color:#a9a9a9;box-shadow:0 0 12px #a9a9a980}.pac-item.second-place .dice-number{color:#333;text-shadow:0 1px 2px rgba(255,255,255,.5)}.pac-item.second-place .pac-funds{color:#006400;text-shadow:0 1px 2px rgba(255,255,255,.5)}.pac-header{display:flex;flex-direction:column;align-items:center;gap:4px}.dice-number{font-size:1.5rem;font-weight:700;color:#8b4513}.pac-funds{font-size:.9rem;font-weight:700;color:#228b22}.donate-button{padding:8px 12px;background:#8b4513;color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:700;cursor:pointer;transition:all .3s ease;white-space:nowrap}.donate-button:hover:not(:disabled){background:sienna;transform:translateY(-2px);box-shadow:0 4px 8px #8b45134d}.donate-button:disabled{background:#ccc;cursor:not-allowed;opacity:.6}@media(max-width:1200px){.pac-grid{grid-template-columns:repeat(6,1fr)}}@media(max-width:768px){.pac-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:500px){.pac-grid{grid-template-columns:repeat(3,1fr)}}.charity{margin-top:20px}.charity-subtitle{color:#7f8c8d;font-size:.9rem;margin:8px 0 16px;text-align:center}.charity-list{display:flex;flex-direction:column;gap:12px}.charity-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background-color:#f8f9fa;border-radius:6px}.charity-player-name{font-weight:600;color:#2c3e50}.charity-amount{font-weight:400;font-size:.9rem;color:#27ae60}.charity-donate-button{padding:8px 16px;background-color:#27ae60;color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:700;cursor:pointer;transition:all .2s ease}.charity-donate-button:hover:not(:disabled){background-color:#2ecc71;transform:translateY(-2px);box-shadow:0 2px 4px #0003}.charity-donate-button:disabled{background-color:#95a5a6;cursor:not-allowed;opacity:.6}.charity-donate-button:active:not(:disabled){transform:translateY(0);box-shadow:none}.game-board{min-height:100vh;background:linear-gradient(135deg,#8b4513,#d2691e);padding:0}.game-header{text-align:center;padding:20px 20px 0;margin-bottom:20px}.game-title{font-size:2.5rem;color:#fff;margin:0;text-shadow:2px 2px 4px rgba(0,0,0,.3);font-weight:700}.game-content{display:grid;grid-template-columns:1fr 2fr 1fr;gap:20px;max-width:100%;padding:20px}.left-panel,.center-panel,.right-panel{display:flex;flex-direction:column;gap:20px}@media(max-width:1200px){.game-content{grid-template-columns:1fr}}.restart-container{max-width:1200px;margin:20px auto;padding:0 20px;display:flex;justify-content:center}.restart-button{padding:12px 24px;background-color:#fff;color:#8b4513;border:2px solid #D2691E;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 8px #0006}.restart-button:hover{background-color:#f5f5f5;border-color:#8b4513;transform:translateY(-2px);box-shadow:0 6px 12px #00000080}.restart-button:active{transform:translateY(0);box-shadow:0 4px 8px #0006}.restart-modal{background-color:#fff;border-radius:12px;padding:32px;max-width:500px;width:90%;box-shadow:0 8px 32px #0000004d;text-align:center}.restart-title{color:#2c3e50;font-size:1.8rem;margin:0 0 16px}.restart-warning{color:#7f8c8d;font-size:1rem;line-height:1.6;margin:0 0 24px}.restart-buttons{display:flex;gap:12px;justify-content:center}.restart-confirm-button,.restart-cancel-button{padding:12px 24px;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .2s ease;flex:1;max-width:200px}.restart-confirm-button{background-color:#c0392b;color:#fff}.restart-confirm-button:hover{background-color:#e74c3c;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.restart-cancel-button{background-color:#95a5a6;color:#fff}.restart-cancel-button:hover{background-color:#7f8c8d;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.restart-confirm-button:active,.restart-cancel-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}
