body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.toast-container{display:flex;flex-direction:column;gap:12px;max-width:400px;position:fixed;right:20px;top:20px;z-index:9999}.toast{align-items:center;animation:slideInRight .3s ease;background:#1a1a2e;border-left:4px solid;border-radius:8px;box-shadow:0 4px 20px #00000080;display:flex;gap:12px;min-width:300px;padding:16px}@keyframes slideInRight{0%{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}.toast-success{background:linear-gradient(135deg,#4caf5033,#1a1a2e);border-left-color:#4caf50}.toast-error{background:linear-gradient(135deg,#f4433633,#1a1a2e);border-left-color:#f44336}.toast-warning{background:linear-gradient(135deg,#ff980033,#1a1a2e);border-left-color:#ff9800}.toast-info{background:linear-gradient(135deg,#2196f333,#1a1a2e);border-left-color:#2196f3}.toast-icon{flex-shrink:0}.toast-success .toast-icon{color:#4caf50}.toast-error .toast-icon{color:#f44336}.toast-warning .toast-icon{color:#ff9800}.toast-info .toast-icon{color:#2196f3}.toast-message{color:#fff;flex:1 1;font-size:14px;line-height:1.5}.toast-close{align-items:center;background:none;border:none;border-radius:4px;color:#888;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:4px;transition:all .2s}.toast-close:hover{background:#ffffff1a;color:#fff}@media (max-width:768px){.toast-container{left:10px;max-width:none;right:10px;top:10px}.toast{min-width:auto}}.auth-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.auth-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:400px;padding:40px;width:100%}.auth-card h1{color:#333;font-size:32px;margin-bottom:8px;text-align:center}.auth-card h2{color:#666;font-size:18px;font-weight:400;margin-bottom:32px;text-align:center}.form-group label{color:#555}.form-group input{border:2px solid #e2e8f0}.form-group input:focus{border-color:#667eea}.btn-primary{border-radius:8px;font-size:16px;padding:12px 24px;width:100%}.btn-primary:hover{transform:translateY(-2px)}.error-message{background:#fee;color:#c33;padding:12px;text-align:center}.auth-link{color:#666;margin-top:24px;text-align:center}.auth-link a{color:#667eea;font-weight:600;text-decoration:none}.auth-link a:hover{text-decoration:underline}.modal-overlay{align-items:center;animation:fadeIn .2s ease;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{animation:slideUp .3s ease;background:#1a1a2e;border-radius:12px;box-shadow:0 10px 40px #00000080;max-width:500px;padding:0;width:90%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.modal-header{align-items:center;border-bottom:1px solid #2d2d44;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#fff;font-size:24px;margin:0}.modal-close{align-items:center;background:none;border:none;color:#888;cursor:pointer;display:flex;font-size:32px;height:32px;justify-content:center;padding:0;transition:color .2s;width:32px}.modal-close:hover{color:#fff}.city-form{padding:24px}.form-group{margin-bottom:20px}.form-group label{color:#aaa;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.form-group input{background:#0f0f1e;border:1px solid #2d2d44;border-radius:8px;color:#fff;font-size:16px;padding:12px 16px;transition:border-color .2s;width:100%}.form-group input:focus{border-color:#4caf50;outline:none}.form-group input:disabled{cursor:not-allowed;opacity:.6}.form-hint{color:#666;font-size:13px;font-style:italic;margin:8px 0 0}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.error-message{background:#f443361a;border:1px solid #f443364d;border-radius:8px;color:#f44336;font-size:14px;margin-bottom:20px;padding:12px 16px}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.btn-primary,.btn-secondary{border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;padding:12px 24px;transition:all .2s}.btn-primary:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.btn-primary:disabled{cursor:not-allowed;opacity:.6}.btn-secondary{background:#2d2d44;color:#fff}.btn-secondary:hover:not(:disabled){background:#3d3d54}.btn-secondary:disabled{cursor:not-allowed;opacity:.6}.daily-quests{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:20px}.dq-header{justify-content:space-between;margin-bottom:14px}.dq-header,.dq-header h3{align-items:center;display:flex}.dq-header h3{color:#1a202c;font-size:16px;gap:8px;margin:0}.dq-timer{color:#a0aec0;font-size:12px;font-weight:600}.dq-list{display:flex;flex-direction:column;gap:8px}.dq-item{align-items:center;background:#f7fafc;border-left:3px solid #667eea;border-radius:8px;display:flex;gap:14px;padding:12px 14px;transition:all .15s}.dq-item.dq-done{background:#f0fff4;border-left-color:#38a169}.dq-item.dq-claimed{background:#f7fafc;border-left-color:#a0aec0;opacity:.6}.dq-info{flex:1 1;min-width:0}.dq-title{color:#1a202c;font-size:14px;font-weight:600}.dq-desc{color:#718096;font-size:12px;margin-top:2px}.dq-progress-bar{background:#e2e8f0;border-radius:2px;height:4px;margin-top:6px;overflow:hidden}.dq-progress-fill{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:2px;height:100%;transition:width .3s ease}.dq-done .dq-progress-fill{background:#38a169}.dq-progress-text{color:#a0aec0;font-size:11px;margin-top:2px}.dq-reward{flex-shrink:0}.dq-reward-preview{align-items:flex-end;color:#718096;display:flex;flex-direction:column;font-size:11px;font-weight:600;gap:2px}.dq-claim-btn{align-items:center;animation:dq-pulse 1.5s infinite;background:#38a169;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:12px;font-weight:600;gap:4px;padding:6px 12px}@keyframes dq-pulse{0%,to{box-shadow:0 0 0 0 #38a16966}50%{box-shadow:0 0 0 6px #38a16900}}.dq-check{color:#38a169}.activity-feed{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:20px}.activity-feed h3{align-items:center;color:#1a202c;display:flex;font-size:16px;gap:8px;margin:0 0 14px}.feed-list{display:flex;flex-direction:column;gap:4px;max-height:300px;overflow-y:auto}.feed-item{align-items:flex-start;background:#f7fafc;border-radius:6px;display:flex;gap:10px;padding:8px 10px;transition:background .15s}.feed-item:hover{background:#edf2f7}.feed-icon{flex-shrink:0;font-size:14px;text-align:center;width:20px}.feed-content{align-items:center;display:flex;flex:1 1;gap:8px;justify-content:space-between;min-width:0}.feed-title{color:#2d3748;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-time{color:#a0aec0;flex-shrink:0;font-size:11px}.dashboard{margin:0 auto;max-width:1200px;padding:24px}.dashboard-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:32px}.dashboard-header h1{color:#1a202c;font-size:32px;margin:0}.user-stats{display:flex;gap:24px}.stat{align-items:center;color:#4a5568;display:flex;font-weight:600;gap:8px}.stats-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:40px}.stat-card{align-items:flex-start;background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;display:flex;gap:16px;padding:24px}.stat-icon{color:#667eea;flex-shrink:0}.stat-content h3{color:#2d3748;font-size:14px;font-weight:500;margin:0 0 8px}.stat-value{color:#1a202c;margin:0 0 4px}.stat-desc{color:#718096;font-size:12px;margin:0}.cities-section{margin-bottom:40px}.section-header{margin-bottom:24px}.section-header h2{color:#1a202c;font-size:24px}.cities-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.city-card{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;color:inherit;padding:20px;text-decoration:none;transition:transform .2s,box-shadow .2s}.city-card:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.city-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.city-card-header h3{color:#1a202c;margin:0}.capital-badge{background:#fed7d7;border-radius:4px;color:#c53030;font-size:12px;font-weight:600;padding:4px 8px}.city-stats{display:flex;gap:16px;margin-bottom:12px}.city-stat{align-items:center;color:#4a5568;display:flex;font-size:14px;gap:4px}.city-resources{display:flex;flex-wrap:wrap;gap:12px}.resource{color:#718096;font-size:12px}.dashboard-nav{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.nav-card{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;color:inherit;padding:24px;text-decoration:none;transition:transform .2s}.nav-card:hover{transform:translateY(-2px)}.nav-card h3{color:#1a202c;margin:0 0 8px}.nav-card p{color:#718096;font-size:14px;margin:0}.dashboard-duo{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr;margin-bottom:24px}@media (max-width:900px){.dashboard-duo{grid-template-columns:1fr}}.loading{padding:40px}.protection-badge{align-items:center;background:#ebf8ff;border:1px solid #bee3f8;border-radius:6px;color:#2b6cb0;display:inline-flex;font-size:13px;font-weight:600;gap:6px;margin-top:8px;padding:6px 12px}.production-chart-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:40px;padding:24px}.production-chart-section h2{color:#1a202c;font-size:18px;margin:0 0 16px}.chart-container{width:100%}@media (max-width:768px){.dashboard{padding:12px}.dashboard-header{align-items:flex-start;flex-direction:column;gap:12px}.dashboard-header h1{font-size:22px}.user-stats{flex-wrap:wrap;gap:12px}.stats-grid{gap:12px;grid-template-columns:repeat(2,1fr)}.stat-card{padding:16px}.cities-grid,.dashboard-nav{grid-template-columns:1fr}.dashboard-nav{gap:12px}.section-header{align-items:flex-start;flex-direction:column;gap:12px}}@media (max-width:480px){.stats-grid{grid-template-columns:1fr}}.countdown-timer{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.countdown-label{color:#718096;font-size:12px}.countdown-time{font-feature-settings:"tnum";color:#d69e2e;font-size:14px;font-variant-numeric:tabular-nums;font-weight:700}.countdown-done .countdown-time{color:#38a169}.countdown-progress{background:#e2e8f0;border-radius:2px;height:4px;overflow:hidden;width:100%}.countdown-progress-fill{background:linear-gradient(90deg,#667eea,#764ba2);border-radius:2px;height:100%;transition:width 1s linear}.countdown-done .countdown-progress-fill{background:#48bb78}.city-page{margin:0 auto;max-width:1200px;padding:24px}.city-header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;gap:20px;margin-bottom:20px;padding-bottom:16px}.city-header h1{color:#1a202c;flex:1 1;font-size:28px;margin:0}.city-info{color:#4a5568;display:flex;font-weight:600;gap:20px}.city-info span{align-items:center;display:flex;gap:8px}.city-resource-bar{background:#1a202c;border-radius:10px;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px;padding:10px 16px}.city-res-item{align-items:center;background:#ffffff0f;border-radius:6px;display:flex;flex:1 1;gap:6px;min-width:130px;padding:4px 12px}.city-res-dot{border-radius:50%;flex-shrink:0;height:8px;width:8px}.city-res-name{color:#a0aec0;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.city-res-amount{color:#e2e8f0;font-size:14px;font-weight:700;margin-left:auto}.city-res-prod{color:#68d391;font-size:11px;font-weight:600}.facilities-panel{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:20px}.facilities-panel h2{color:#1a202c;font-size:18px;margin:0 0 16px}.facilities-list{display:flex;flex-direction:column;gap:2px}.facility-row{align-items:center;background:#f7fafc;border-left:3px solid #0000;border-radius:8px;display:flex;gap:16px;padding:14px 16px;transition:all .15s}.facility-row:hover{background:#edf2f7}.facility-row.facility-active{border-left-color:#667eea}.facility-row.facility-townhall{background:#fff5f5;border-left-color:#e53e3e}.facility-icon{align-items:center;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;color:#a0aec0;display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.facility-info{flex:1 1;min-width:0}.facility-name-row{align-items:center;display:flex;gap:10px}.facility-name-row h3{color:#1a202c;font-size:15px;margin:0}.facility-level{background:#667eea;border-radius:10px;color:#fff;font-size:11px;font-weight:700;min-width:20px;padding:2px 8px;text-align:center}.facility-desc{color:#718096;font-size:12px;margin:2px 0 0}.facility-details{display:flex;flex-wrap:wrap;gap:12px;margin-top:4px}.facility-per-unit{background:#edf2f7;border-radius:4px;color:#4a5568;font-size:11px;padding:2px 8px}.facility-current{color:#38a169;font-size:11px;font-weight:600}.facility-action{align-items:flex-end;display:flex;flex-direction:column;flex-shrink:0;gap:6px}.facility-cost{color:#718096;font-size:11px;max-width:200px;text-align:right}.facility-build-btn{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 20px;transition:background .2s}.facility-build-btn:hover:not(:disabled){background:#5a6fd8}.facility-build-btn:disabled{cursor:not-allowed;opacity:.6}.loading{padding:100px 20px}.research-panel{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;padding:20px}.research-panel .section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.research-panel .section-header h2{align-items:center;color:#1a202c;display:flex;font-size:18px;gap:8px;margin:0}.btn-toggle{background:#edf2f7;border:1px solid #e2e8f0;border-radius:6px;color:#4a5568;cursor:pointer;font-size:13px;padding:6px 14px}.btn-toggle:hover{background:#e2e8f0}.research-warning{background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;color:#c53030;font-size:13px;font-weight:500;margin-bottom:16px;padding:12px 16px}.research-progress{align-items:center;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;color:#92400e;display:flex;font-size:14px;gap:10px;margin-bottom:16px;padding:12px 16px}.tech-tree-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.tech-card{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:14px}.tech-card.completed{background:#f0fff4;border-color:#c6f6d5}.tech-card.researching{background:#fffbeb;border-color:#fcd34d}.tech-card.locked{opacity:.6}.tech-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.tech-header h4{color:#1a202c;font-size:14px;margin:0}.tech-category{border-radius:3px;font-size:10px;font-weight:600;padding:2px 6px;text-transform:uppercase}.cat-economy{background:#e6fffa;color:#234e52}.cat-military{background:#fed7d7;color:#742a2a}.tech-cost{color:#718096;display:flex;flex-wrap:wrap;font-size:11px;gap:6px;margin-bottom:4px}.tech-time{color:#a0aec0}.tech-requires,.tech-time{font-size:11px;margin-bottom:6px}.tech-requires{color:#e53e3e}.tech-status-done{color:#38a169;font-size:12px;font-weight:600}.tech-card button{background:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:12px;padding:6px 12px;width:100%}.tech-card button:disabled{background:#a0aec0;cursor:not-allowed}@media (max-width:900px){.city-page{padding:12px}.city-header{flex-wrap:wrap;gap:10px}.city-header h1{font-size:22px}.city-resource-bar{gap:4px;padding:8px 10px}.city-res-item{min-width:100px;padding:4px 8px}.facility-row{flex-wrap:wrap;gap:10px;padding:12px}.facility-action{align-items:center;flex-direction:row;justify-content:space-between;width:100%}.tech-tree-grid{grid-template-columns:1fr}}@media (max-width:600px){.city-resource-bar{flex-direction:column;gap:2px}.city-res-item{min-width:0}.facility-icon{height:32px;width:32px}}.listing-form select{background:#0f0f1e;border:1px solid #2d2d44;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;padding:12px 16px;transition:border-color .2s;width:100%}.listing-form select:focus{border-color:#4caf50;outline:none}.listing-form select:disabled{cursor:not-allowed;opacity:.6}.resource-available{color:#4caf50;display:block;font-size:13px;margin-top:6px}.total-preview{background:#4caf501a;border:1px solid #4caf504d;border-radius:8px;color:#4caf50;font-size:16px;font-weight:600;margin-bottom:20px;padding:12px 16px;text-align:center}.npc-merchant{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:20px}.npc-merchant h3{align-items:center;color:#1a202c;display:flex;font-size:16px;gap:8px;margin:0 0 6px}.npc-desc{color:#718096;font-size:12px;margin:0 0 14px}.npc-grid{display:flex;flex-direction:column;gap:6px}.npc-row{align-items:center;background:#f7fafc;border-radius:6px;display:flex;flex-wrap:wrap;gap:10px;padding:8px 12px}.npc-resource{color:#2d3748;font-size:13px;font-weight:600;width:80px}.npc-price{font-size:12px;font-weight:600;width:65px}.buy-price{color:#c53030}.sell-price{color:#38a169}.npc-qty{border:1px solid #e2e8f0;border-radius:4px;font-size:13px;padding:4px 8px;text-align:center;width:70px}.npc-btn{border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;padding:4px 10px;transition:opacity .15s}.npc-btn:disabled{cursor:not-allowed;opacity:.5}.npc-buy{background:#fed7d7;color:#c53030}.npc-buy:hover:not(:disabled){background:#feb2b2}.npc-sell{background:#c6f6d5;color:#276749}.npc-sell:hover:not(:disabled){background:#9ae6b4}@media (max-width:768px){.npc-row{gap:6px}.npc-resource{width:100%}.npc-price{width:auto}}.market-page{margin:0 auto;max-width:1200px;padding:24px}.market-header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;justify-content:space-between;margin-bottom:32px;padding-bottom:16px}.market-header h1{color:#1a202c;font-size:32px;margin:0}.btn-primary{align-items:center;display:flex;gap:8px}.market-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.market-filters button{background:#f7fafc;border:1px solid #e2e8f0;border-radius:20px;cursor:pointer;padding:8px 16px;transition:all .2s;white-space:nowrap}.market-filters button:hover{background:#edf2f7}.market-filters button.active{background:#667eea;border-color:#667eea;color:#fff}.listings-table{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;overflow:hidden}.listings-table table{border-collapse:collapse;width:100%}.listings-table th{background:#f7fafc;color:#4a5568;font-weight:600;text-align:left}.listings-table td,.listings-table th{border-bottom:1px solid #e2e8f0;padding:16px}.listings-table tr:hover{background:#f7fafc}.resource-name{align-items:center;display:flex;font-weight:600;gap:8px}.total-price{color:#d69e2e;font-weight:700}.seller-info{display:flex;flex-direction:column;gap:4px}.seller-info span:first-child{font-weight:600}.reputation{color:#718096;font-size:12px}.btn-buy{background:#38a169;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:6px 12px;transition:background .2s}.btn-buy:hover:not(:disabled){background:#2f855a}.btn-buy:disabled{cursor:not-allowed;opacity:.6}.market-stats{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;display:flex;flex-wrap:wrap;gap:24px;margin-top:24px;padding:20px}.market-stats .stat{align-items:center;color:#4a5568;display:flex;font-weight:600;gap:8px}.empty-state{padding:80px 20px}.empty-state svg{margin-bottom:20px}.loading{color:#718096;padding:80px 20px;text-align:center}.price-chart-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:16px 20px}.btn-chart-toggle{align-items:center;background:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;color:#4a5568;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:6px;padding:8px 16px}.btn-chart-toggle:hover{background:#edf2f7}.price-chart-container{margin-top:16px}.chart-resource-selector{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px}.chart-resource-selector button{background:#f7fafc;border:1px solid #e2e8f0;border-radius:4px;color:#4a5568;cursor:pointer;font-size:12px;padding:4px 10px}.chart-resource-selector button.active{background:#667eea;border-color:#667eea;color:#fff}.no-data{color:#a0aec0;font-size:14px;padding:30px;text-align:center}@media (max-width:768px){.market-header{align-items:stretch;flex-direction:column;gap:16px}.listings-table{overflow-x:auto}.market-filters{justify-content:center}.market-stats{flex-direction:column;gap:12px}}.politics-page{margin:0 auto;max-width:1200px;padding:24px}.politics-header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;gap:20px;margin-bottom:32px;padding-bottom:16px}.politics-header h1{color:#1a202c;font-size:32px;margin:0}.back-button{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;gap:8px;transition:background .2s}.back-button:hover{background:#edf2f7}.politics-intro{margin-bottom:32px}.intro-card{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;display:flex;gap:16px;padding:24px}.intro-card h3{font-size:20px;margin:0 0 8px}.intro-card p{margin:0;opacity:.9}.elections-grid{grid-gap:24px;align-items:start;display:grid;gap:24px;grid-template-columns:2fr 1fr}.elections-section h2{color:#1a202c;font-size:24px;margin:0 0 20px}.elections-list{display:flex;flex-direction:column;gap:16px}.election-card{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;padding:20px}.election-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.election-header h3{color:#1a202c;font-size:18px;margin:0}.status{border-radius:20px;font-weight:600}.status-upcoming{background:#fed7d7;color:#c53030}.status-registration{background:#bee3f8;color:#3182ce}.status-campaign{background:#faf089;color:#d69e2e}.status-voting{background:#c6f6d5;color:#38a169}.status-completed{background:#e2e8f0;color:#4a5568}.election-info{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.info-row{align-items:center;color:#4a5568;display:flex;font-size:14px;gap:8px}.election-actions{display:flex;gap:12px}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px;font-weight:600;padding:8px 16px;transition:transform .2s}.btn-primary:hover{transform:translateY(-1px)}.btn-secondary{background:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;color:#4a5568;cursor:pointer;font-weight:600;padding:8px 16px;transition:background .2s}.btn-secondary:hover{background:#edf2f7}.political-info h2{color:#1a202c;font-size:20px;margin:0 0 20px}.positions-list{display:flex;flex-direction:column;gap:16px}.position-card{border-radius:12px;box-shadow:0 4px 16px #0000001a}.position-card h3{color:#1a202c;font-size:16px;margin:0 0 8px}.position-card p{color:#4a5568;font-size:14px;margin:0 0 12px}.position-card ul{list-style:none;margin:0;padding:0}.position-card li{color:#718096;font-size:14px;padding:4px 0}.position-card li:before{color:#667eea;content:"•";margin-right:8px}.empty-state{color:#718096;padding:60px 20px;text-align:center}.empty-state svg{color:#cbd5e0}@media (max-width:768px){.elections-grid{grid-template-columns:1fr}.politics-header{align-items:stretch;flex-direction:column;gap:16px}.intro-card{flex-direction:column;text-align:center}}.leaderboard-page{background:linear-gradient(135deg,#0f0f1e,#1a1a2e);color:#fff;min-height:100vh;padding:24px}.leaderboard-header{align-items:center;display:flex;gap:20px;margin-bottom:32px}.leaderboard-header h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,gold,orange);-webkit-background-clip:text;background-clip:text;font-size:32px;margin:0}.stats-overview{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:32px}.stat-box{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid #2d2d44;border-radius:12px;display:flex;gap:16px;padding:20px}.stat-box .stat-icon{color:#4caf50;height:32px;width:32px}.stat-value{color:#fff;font-size:24px;font-weight:700}.stat-label{color:#888;font-size:13px}.metric-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.metric-filters button{align-items:center;background:#1a1a2e;border:2px solid #2d2d44;border-radius:8px;color:#aaa;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;padding:12px 20px;transition:all .2s}.metric-filters button:hover{border-color:#4caf50;color:#fff}.metric-filters button.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#667eea;color:#fff}.metric-filters button svg{height:18px;width:18px}.leaderboard-table{background:#1a1a2e;border-radius:12px;box-shadow:0 4px 16px #0000004d;overflow:hidden}.leaderboard-table table{border-collapse:collapse;width:100%}.leaderboard-table thead{background:#0f0f1e}.leaderboard-table th{color:#aaa;font-size:13px;font-weight:600;letter-spacing:.5px;padding:16px;text-align:left;text-transform:uppercase}.leaderboard-table tbody tr{border-bottom:1px solid #2d2d44;transition:background .2s}.leaderboard-table tbody tr:hover{background:#4caf500d}.leaderboard-table td{color:#ccc;font-size:14px;padding:16px}.rank-cell{font-weight:700;width:80px}.rank-badge{align-items:center;background:#2d2d44;border-radius:16px;display:inline-flex;font-size:16px;font-weight:700;height:32px;justify-content:center;min-width:40px;padding:0 12px}.rank-1 .rank-badge{background:linear-gradient(135deg,gold,orange);box-shadow:0 4px 12px #ffd70066;color:#000}.rank-2 .rank-badge{background:linear-gradient(135deg,silver,#a9a9a9);box-shadow:0 4px 12px #c0c0c066;color:#000}.rank-3 .rank-badge{background:linear-gradient(135deg,#cd7f32,#b87333);box-shadow:0 4px 12px #cd7f3266;color:#fff}.player-cell{color:#fff;font-weight:600}.date-cell{color:#888;font-size:12px}.empty-state,.loading{color:#aaa;padding:60px 20px;text-align:center}.empty-state svg{color:#4caf50;margin-bottom:16px}.empty-state h3{color:#fff;margin:16px 0 8px}@media (max-width:768px){.leaderboard-table{overflow-x:auto}.stats-overview{grid-template-columns:1fr}.metric-filters{justify-content:center}}.world-map-page{background:linear-gradient(135deg,#0a1628,#1a1a2e);color:#fff;min-height:100vh;padding:24px}.world-map-header{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:24px}.world-map-header h1{font-size:28px;margin:0}.map-search input{background:#1a1a2e;border:1px solid #2d2d44;border-radius:8px;color:#fff;font-size:14px;outline:none;padding:8px 16px;width:220px}.map-search input:focus{border-color:#667eea}.map-search input::placeholder{color:#666}.view-toggle{display:flex;gap:4px}.view-toggle button{background:#1a1a2e;border:2px solid #2d2d44;border-radius:6px;color:#aaa;cursor:pointer;font-size:13px;padding:8px 16px;transition:all .2s}.view-toggle button.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#667eea;color:#fff}.world-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px}.world-stats .stat{align-items:center;background:#1a1a2e;border:1px solid #2d2d44;border-radius:8px;display:flex;font-size:14px;gap:8px;padding:10px 16px}.world-stats .stat svg{color:#4caf50}.map-container{background:#0f0f1e;border-radius:12px;padding:16px;position:relative}.map-toolbar{align-items:center;display:flex;gap:8px;margin-bottom:12px}.map-toolbar button{align-items:center;background:#1a1a2e;border:1px solid #2d2d44;border-radius:6px;color:#ccc;cursor:pointer;display:flex;padding:8px;transition:all .2s}.map-toolbar button:hover{background:#2d2d44;color:#fff}.zoom-level{color:#666;font-size:12px;margin-left:8px}.map-canvas{background:radial-gradient(circle at 50% 50%,#1a1a2e 0,#0f0f1e 100%);border:2px solid #2d2d44;border-radius:8px;cursor:grab;height:600px;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;width:100%}.map-canvas:active{cursor:grabbing}.map-grid{pointer-events:none}.map-cities-layer,.map-grid{height:100%;left:0;position:absolute;top:0;transform-origin:center;width:100%}.city-marker{align-items:center;cursor:pointer;display:flex;flex-direction:column;gap:4px;position:absolute;transform:translate(-50%,-50%);transition:all .15s;z-index:1}.city-dot{background:#666;border:2px solid #888;border-radius:50%;transition:all .2s}.city-marker:hover{z-index:10}.city-marker:hover .city-dot{box-shadow:0 0 12px #8889}.city-marker:hover .city-name{opacity:1}.city-marker.own-city .city-dot{background:#4caf50;border-color:#66bb6a}.city-marker.own-city:hover .city-dot{box-shadow:0 0 12px #4caf5099}.city-marker.capital .city-dot{background:gold;border-color:#fff176}.city-marker.selected .city-dot{border-color:#667eea;box-shadow:0 0 16px #667eeacc}.city-marker.selected .city-name{opacity:1}.city-name{background:#000c;border-radius:3px;color:#fff;font-size:10px;font-weight:600;opacity:0;padding:3px 6px;pointer-events:none;transition:opacity .2s;white-space:nowrap}.city-marker.own-city .city-name{background:#4caf50e6}.city-detail-panel{animation:slideIn .2s ease-out;background:#1a1a2e;border:1px solid #2d2d44;border-radius:10px;padding:16px;position:absolute;right:16px;top:60px;width:220px;z-index:20}@keyframes slideIn{0%{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}.city-detail-panel h3{align-items:center;display:flex;font-size:16px;gap:6px;margin:0 0 10px}.city-detail-panel h3 svg{color:gold}.city-detail-panel p{color:#aaa;font-size:13px;margin:4px 0}.city-detail-panel p strong{color:#ccc}.city-detail-panel .btn-primary{font-size:13px;margin-top:10px;padding:8px;text-align:center;width:100%}.city-detail-panel .btn-close{background:none;border:1px solid #2d2d44;border-radius:6px;color:#888;cursor:pointer;font-size:12px;margin-top:6px;padding:6px;width:100%}.city-detail-panel .btn-close:hover{border-color:#444;color:#ccc}.map-legend{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;margin-top:16px}.legend-item{align-items:center;color:#aaa;display:flex;font-size:13px;gap:8px}.legend-marker{background:#666;border-radius:50%;height:12px;width:12px}.legend-marker.own-city{background:#4caf50}.cities-list{background:#1a1a2e;border-radius:12px;overflow:auto}.cities-list table{border-collapse:collapse;min-width:500px;width:100%}.cities-list thead{background:#0f0f1e}.cities-list th{color:#888;font-size:12px;font-weight:600;letter-spacing:.5px;padding:14px 16px;text-align:left;text-transform:uppercase}.cities-list tbody tr{border-bottom:1px solid #2d2d44;transition:background .2s}.cities-list tbody tr:hover{background:#4caf500d}.cities-list tbody tr.own-city-row{background:#4caf501a}.cities-list tbody tr.own-city-row:hover{background:#4caf5033}.cities-list td{color:#ccc;font-size:14px;padding:14px 16px}.back-button{align-items:center;background:none;border:1px solid #2d2d44;border-radius:6px;color:#ccc;cursor:pointer;display:flex;font-size:14px;gap:6px;padding:8px 16px}.back-button:hover{background:#1a1a2e}@media (max-width:768px){.world-map-page{padding:12px}.world-map-header{align-items:stretch;flex-direction:column}.world-map-header h1{font-size:22px}.map-search input{width:100%}.map-canvas{height:350px}.city-detail-panel{border-radius:12px 12px 0 0;bottom:0;left:0;position:fixed;right:0;top:auto;width:100%}.world-stats{gap:8px}.world-stats .stat{font-size:12px;padding:8px 12px}}.military-page{margin:0 auto;max-width:1400px;padding:20px}.military-page h1{color:#2c3e50;margin-bottom:20px}.city-selector{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:15px}.city-selector select{border:1px solid #ddd;border-radius:4px;font-size:14px;margin-left:10px;padding:8px 15px}.tabs{display:flex;gap:10px;margin-bottom:20px}.tabs button{align-items:center;background:#fff;border:none;border-radius:8px;cursor:pointer;display:flex;flex:1 1;gap:8px;justify-content:center;padding:12px;transition:all .3s}.tabs button:hover{background:#f0f0f0}.tabs button.active{background:#3498db;color:#fff}.units-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:20px}.unit-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:20px}.unit-icon{font-size:48px;margin-bottom:10px;text-align:center}.unit-card h3{color:#2c3e50;margin-bottom:15px;text-align:center}.unit-stats{background:#f8f9fa;border-radius:4px;flex-direction:column;padding:10px}.unit-cost,.unit-stats{display:flex;gap:8px;margin-bottom:15px}.unit-cost{flex-wrap:wrap}.unit-cost span{background:#e9ecef;border-radius:4px;font-size:12px;padding:4px 8px}.train-controls{display:flex;gap:10px}.train-controls input{border:1px solid #ddd;border-radius:4px;flex:1 1;padding:8px}.train-controls button{background:#27ae60;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 20px;transition:background .3s}.train-controls button:hover:not(:disabled){background:#229954}.train-controls button:disabled{background:#95a5a6;cursor:not-allowed}.alliances-list,.battles-list{display:flex;flex-direction:column;gap:15px}.alliance-card,.battle-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.outcome{border-radius:4px;display:inline-block;font-weight:700;margin-bottom:10px;padding:4px 12px}.outcome.attacker_win{background:#d4edda;color:#155724}.outcome.defender_win{background:#f8d7da;color:#721c24}.battle-details{background:#f8f9fa;border-radius:4px;font-size:14px;margin-top:10px;padding:10px}.status{border-radius:4px;display:inline-block;font-size:12px;font-weight:700;margin-bottom:10px;padding:4px 12px;text-transform:uppercase}.status.active{background:#d4edda;color:#155724}.status.pending{background:#fff3cd;color:#856404}.status.broken,.status.rejected{background:#f8d7da;color:#721c24}.battle-card{border-left:4px solid #e2e8f0}.battle-card.attacker_win{border-left-color:#38a169}.battle-card.defender_win{border-left-color:#e53e3e}.battle-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.battle-outcome{border-radius:4px;font-size:12px;font-weight:700;letter-spacing:1px;padding:3px 10px}.battle-outcome.attacker_win{background:#c6f6d5;color:#22543d}.battle-outcome.defender_win{background:#fed7d7;color:#742a2a}.battle-versus{align-items:center;background:#f7fafc;border-radius:8px;display:flex;gap:16px;justify-content:center;margin-bottom:14px;padding:10px}.battle-side{flex:1 1;text-align:center}.battle-side strong{color:#1a202c;display:block;font-size:15px}.battle-city-name{color:#718096;font-size:12px}.battle-vs{color:#a0aec0;flex-shrink:0;font-size:14px;font-weight:700}.battle-stats-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.battle-stat-box{background:#f7fafc;border-radius:6px;padding:10px}.battle-stat-box.plunder{background:ivory;border:1px solid #fefcbf}.battle-stat-label{color:#718096;font-size:11px;font-weight:600;margin-bottom:4px;text-transform:uppercase}.battle-stat-value{font-size:16px;font-weight:700}.battle-stat-value.loss{color:#e53e3e}.battle-unit-loss{color:#718096;font-size:12px}.battle-plunder-item{color:#38a169;font-size:13px;font-weight:600}@media (max-width:768px){.military-page{padding:12px}.military-page h1{font-size:22px;margin-bottom:14px}.tabs{flex-wrap:wrap;gap:6px}.tabs button{flex:1 1 45%;font-size:13px;padding:10px}.units-grid{gap:14px;grid-template-columns:1fr}.unit-card{padding:14px}.unit-icon{font-size:36px}.train-controls{flex-direction:column}.train-controls button{width:100%}.alliance-card,.battle-card{padding:14px}.battle-details{font-size:13px;overflow-x:auto}.city-selector{padding:10px}.city-selector select{margin-left:0;margin-top:8px;width:100%}}@media (max-width:480px){.military-page{padding:8px}.military-page h1{font-size:18px}.tabs button{flex:1 1 100%;font-size:12px;padding:8px}.unit-card h3{font-size:15px}.unit-stats{font-size:13px;padding:8px}.status,.unit-cost span{font-size:11px}.outcome,.status{padding:3px 8px}.outcome{font-size:13px}}.economy-page{margin:0 auto;max-width:1400px;padding:20px}.economy-page h1{color:#2c3e50;margin-bottom:20px}.section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.section-header h2{margin:0}.btn-primary{background:#3498db;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 20px;transition:background .3s}.btn-primary:hover{background:#2980b9}.orders-list,.routes-list{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.order-card,.route-card{background:#f8f9fa;border-left:4px solid #3498db;border-radius:8px;padding:15px}.order-type,.route-info{font-weight:700;margin-bottom:10px}.order-type{border-radius:4px;display:inline-block;font-size:12px;padding:4px 12px}.order-type.buy{background:#d4edda;color:#155724}.order-type.sell{background:#f8d7da;color:#721c24}.tax-info{display:flex;flex-direction:column;gap:15px;max-width:500px}.tax-item{background:#f8f9fa;border-radius:4px;display:flex;justify-content:space-between;padding:12px}.tax-item label{font-weight:700}.note{background:#fff3cd;border-left:4px solid #ffc107;border-radius:4px;margin-top:20px;padding:12px}@media (max-width:768px){.economy-page{padding:12px}.economy-page h1{font-size:22px;margin-bottom:14px}.section{padding:14px}.section-header{align-items:flex-start;flex-direction:column;gap:10px}.section-header h2{font-size:18px}.btn-primary{text-align:center;width:100%}.orders-list,.routes-list{gap:12px;grid-template-columns:1fr}.order-card,.route-card{padding:12px}.tax-info{max-width:100%}.tax-item{flex-direction:column;gap:4px;padding:10px}}@media (max-width:480px){.economy-page{padding:8px}.economy-page h1{font-size:18px}.section{padding:10px}.section-header h2{font-size:16px}.btn-primary{font-size:13px;padding:8px 14px}.route-info{font-size:14px}.order-type{font-size:11px}.note{font-size:13px;padding:10px}}.government-page{margin:0 auto;max-width:1400px;padding:20px}.government-page h1{color:#2c3e50;margin-bottom:20px}.mayor-powers-panel{background:linear-gradient(135deg,#667eea08,#764ba208);border:1px solid #667eea30;border-radius:12px;margin-bottom:20px;padding:20px}.mayor-powers-panel h3{align-items:center;color:#1a202c;display:flex;font-size:16px;gap:8px;margin:0 0 14px}.mayor-powers-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.mayor-power-btn{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;display:flex;gap:12px;padding:14px 16px;text-align:left;transition:all .15s}.mayor-power-btn:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea26}.mayor-power-btn strong{color:#1a202c;display:block;font-size:13px}.mayor-power-btn span{color:#718096;display:block;font-size:11px}.mayor-power-btn.boost svg{color:#d69e2e}.mayor-power-btn.tax svg{color:#667eea}.mayor-power-btn.ban svg{color:#e53e3e}.mayor-info-banner{background:#ebf8ff;border:1px solid #bee3f8;border-radius:8px;color:#2b6cb0;font-size:14px;margin-bottom:20px;padding:10px 16px}.policies-list{grid-gap:20px;display:grid;gap:20px}.policy-card{background:#fff;border-left:4px solid #3498db;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.policy-card h3{color:#2c3e50;margin:10px 0}.policy-info{color:#666;display:flex;font-size:14px;gap:20px;margin:15px 0}.vote-section{border-top:1px solid #eee;margin-top:15px;padding-top:15px}.votes{display:flex;font-size:18px;gap:20px;margin-bottom:10px}.votes-for{color:#27ae60}.votes-against{color:#e74c3c}.vote-buttons{display:flex;gap:10px}.btn-vote{border:none;border-radius:4px;cursor:pointer;flex:1 1;font-weight:700;padding:10px;transition:all .3s}.btn-vote.for{background:#27ae60;color:#fff}.btn-vote.for:hover{background:#229954}.btn-vote.against{background:#e74c3c;color:#fff}.btn-vote.against:hover{background:#c0392b}.positions-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.position-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px;text-align:center}.position-title{color:#2c3e50;font-size:24px;font-weight:700;margin-bottom:15px}.holder{font-size:18px;margin:10px 0}.impeachments-list{grid-gap:20px;display:grid;gap:20px}.impeachment-card{background:#fff;border-left:4px solid #e74c3c;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.impeachment-header{font-size:18px;margin-bottom:10px}.progress-bar{background:#ecf0f1;border-radius:10px;height:20px;margin:15px 0;overflow:hidden;width:100%}.progress{background:linear-gradient(90deg,#27ae60,#2ecc71);height:100%;transition:width .3s}@media (max-width:768px){.government-page{padding:12px}.government-page h1{font-size:22px;margin-bottom:14px}.policy-card{padding:14px}.policy-info{flex-direction:column;font-size:13px;gap:6px}.votes{font-size:16px;gap:14px}.vote-buttons{flex-direction:column}.btn-vote{padding:12px}.positions-list{gap:14px;grid-template-columns:1fr}.position-card{padding:14px}.position-title{font-size:20px}.holder{font-size:16px}.impeachment-card{padding:14px}.impeachment-header{font-size:16px}}@media (max-width:480px){.government-page{padding:8px}.government-page h1{font-size:18px}.policy-card{padding:10px}.policy-card h3{font-size:15px}.policy-info{font-size:12px}.votes{font-size:14px}.position-title{font-size:18px}.holder{font-size:14px}.progress-bar{height:16px}}.achievements-page{margin:0 auto;max-width:1000px;padding:24px}.achievements-header{align-items:center;display:flex;gap:20px;margin-bottom:24px}.achievements-header h1{align-items:center;color:#1a202c;display:flex;font-size:28px;gap:10px;margin:0}.achievements-summary{align-items:center;background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;display:flex;flex-wrap:wrap;gap:24px;margin-bottom:32px;padding:24px}.summary-stat{align-items:center;display:flex;flex-direction:column}.summary-number{color:#667eea;font-size:28px;font-weight:700}.summary-label{color:#718096;font-size:12px;text-transform:uppercase}.progress-bar-container{background:#e2e8f0;border-radius:4px;flex:1 1;height:8px;min-width:200px;overflow:hidden}.progress-bar-fill{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px;height:100%;transition:width .5s ease}.achievement-section{margin-bottom:32px}.achievement-section h2{color:#1a202c;font-size:20px;margin:0 0 16px}.achievements-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.achievement-card{background:#fff;border-radius:10px;box-shadow:0 2px 8px #00000014;display:flex;gap:14px;padding:16px;transition:transform .2s}.achievement-card:hover{transform:translateY(-2px)}.achievement-card.unlocked{border-left:4px solid #48bb78}.achievement-card.locked{border-left:4px solid #cbd5e0;opacity:.7}.achievement-icon{align-items:center;border-radius:10px;display:flex;flex-shrink:0;height:44px;justify-content:center;width:44px}.achievement-card.unlocked .achievement-icon{background:#f0fff4;color:#38a169}.achievement-card.locked .achievement-icon{background:#f7fafc;color:#a0aec0}.achievement-info h3{color:#1a202c;font-size:14px;margin:0 0 4px}.achievement-info p{color:#718096;font-size:12px;margin:0}.achievement-xp{background:#ebf4ff;border-radius:4px;color:#667eea;display:inline-block;font-size:11px;font-weight:600;margin-top:6px;padding:2px 8px}@media (max-width:768px){.achievements-page{padding:12px}.achievements-header h1{font-size:22px}.achievements-grid{grid-template-columns:1fr}.achievements-summary{gap:16px}}.banking-page{margin:0 auto;max-width:900px;padding:24px}.banking-header{align-items:center;display:flex;gap:20px;margin-bottom:24px}.banking-header h1{align-items:center;color:#1a202c;display:flex;font-size:28px;gap:10px;margin:0}.bank-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:24px}.bank-section h2{align-items:center;color:#1a202c;display:flex;font-size:18px;gap:8px;margin:0 0 12px}.bank-desc{color:#718096;font-size:14px;margin:0 0 16px}.loan-form{display:flex;flex-direction:column;gap:12px}.form-row label{color:#4a5568;display:block;font-size:13px;margin-bottom:4px}.form-row input{border:1px solid #e2e8f0;border-radius:8px;font-size:16px;outline:none;padding:10px 14px;width:100%}.form-row input:focus{border-color:#667eea}.loan-preview{background:#f7fafc;border-radius:8px;color:#4a5568;display:flex;flex-wrap:wrap;font-size:14px;gap:16px;padding:12px 16px}.loan-preview strong{color:#1a202c}.loans-list{display:flex;flex-direction:column;gap:12px}.loan-card{align-items:center;background:#f7fafc;border-left:4px solid #667eea;border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:16px}.loan-card.overdue{background:#fff5f5;border-left-color:#e53e3e}.loan-card.status-repaid{border-left-color:#48bb78}.loan-card.status-defaulted{border-left-color:#e53e3e}.loan-info{flex:1 1}.loan-source{align-items:center;color:#1a202c;font-weight:600;gap:8px}.loan-amounts,.loan-source{display:flex;margin-bottom:6px}.loan-amounts{color:#4a5568;font-size:13px;gap:16px}.loan-due{color:#718096;font-size:13px;margin-bottom:8px}.overdue-badge{align-items:center;color:#e53e3e;display:flex;font-weight:700;gap:4px}.loan-progress{background:#e2e8f0;border-radius:2px;height:4px;overflow:hidden}.loan-progress-bar{background:linear-gradient(135deg,#48bb78,#38a169);height:100%;transition:width .3s}.status-badge.status-repaid{background:#f0fff4;color:#38a169}.status-badge.status-defaulted{background:#fff5f5;color:#e53e3e}.status-badge.status-active{background:#ebf4ff;color:#3182ce}.btn-repay{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;padding:8px 20px;white-space:nowrap}.repay-form{align-items:center;display:flex;gap:8px}.repay-form input{border:1px solid #e2e8f0;border-radius:6px;font-size:14px;padding:6px 10px;width:100px}.repay-form button{background:#48bb78;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 14px}.repay-form .btn-cancel{background:#e2e8f0;color:#4a5568}@media (max-width:768px){.banking-page{padding:12px}.banking-header h1{font-size:22px}.loan-amounts{flex-direction:column;gap:4px}.loan-card{align-items:stretch;flex-direction:column}.loan-preview{flex-direction:column;gap:8px}}.contracts-page{margin:0 auto;max-width:900px;padding:24px}.contracts-header{align-items:center;display:flex;gap:20px;margin-bottom:24px}.contracts-header h1{align-items:center;color:#1a202c;display:flex;font-size:28px;gap:10px;margin:0}.contracts-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:24px;padding:24px}.contracts-section h2{color:#1a202c;font-size:18px;margin:0 0 16px}.contracts-list{display:flex;flex-direction:column;gap:12px}.contract-card{align-items:center;background:#f7fafc;border-left:4px solid #667eea;border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:16px}.contract-card.pending{background:ivory;border-left-color:#ecc94b}.contract-card.status-completed{border-left-color:#48bb78}.contract-card.status-breached{border-left-color:#e53e3e}.contract-card.status-cancelled{border-left-color:#a0aec0}.contract-info{display:flex;flex:1 1;flex-direction:column;gap:6px}.contract-parties{align-items:center;color:#4a5568;display:flex;font-size:14px;gap:8px}.role-badge{border-radius:4px;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase}.role-badge.seller{background:#fed7d7;color:#c53030}.role-badge.buyer{background:#c6f6d5;color:#276749}.contract-terms{color:#718096;display:flex;flex-wrap:wrap;font-size:13px;gap:12px}.contract-total{color:#1a202c;font-size:14px;font-weight:600}.contract-progress{align-items:center;color:#718096;display:flex;font-size:12px;gap:10px}.contract-progress-bar{background:#e2e8f0;border-radius:2px;flex:1 1;height:4px;overflow:hidden}.contract-progress-bar div{background:linear-gradient(135deg,#667eea,#764ba2);height:100%;transition:width .3s}.contract-next{color:#a0aec0;font-size:12px}.contract-actions{display:flex;gap:8px}.btn-accept{background:#48bb78}.btn-accept,.btn-reject{align-items:center;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:4px;padding:8px 16px}.btn-reject{background:#fc8181}.btn-cancel-contract{background:#e2e8f0;border:none;border-radius:6px;color:#4a5568;cursor:pointer;font-size:13px;padding:6px 14px}.status-badge{border-radius:4px;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase}.status-badge.status-completed{background:#f0fff4;color:#38a169}.status-badge.status-breached{background:#fff5f5;color:#e53e3e}.status-badge.status-cancelled{background:#f7fafc;color:#a0aec0}.empty-text{color:#a0aec0;font-size:14px}@media (max-width:768px){.contracts-page{padding:12px}.contracts-header h1{font-size:22px}.contract-card{align-items:stretch;flex-direction:column}.contract-actions{justify-content:flex-end}.contract-terms{flex-direction:column;gap:4px}}.profile-page{margin:0 auto;max-width:800px;padding:24px}.profile-header{align-items:center;display:flex;gap:20px;margin-bottom:24px}.profile-header h1{align-items:center;color:#1a202c;display:flex;font-size:28px;gap:10px;margin:0}.profile-card{background:#fff;border-radius:16px;box-shadow:0 4px 20px #0000001a;margin-bottom:24px;padding:32px}.profile-avatar{margin-bottom:24px;text-align:center}.avatar-circle{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;display:flex;height:80px;justify-content:center;margin:0 auto 12px;width:80px}.avatar-circle span{color:#fff;font-size:32px;font-weight:700}.profile-avatar h2{color:#1a202c;font-size:24px;margin:0 0 8px}.profile-shield{align-items:center;background:#ebf8ff;border-radius:12px;color:#2b6cb0;display:inline-flex;font-size:12px;font-weight:600;gap:4px;padding:4px 12px}.profile-stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.profile-stat{align-items:center;background:#f7fafc;border-radius:10px;display:flex;gap:10px;padding:14px}.profile-stat svg{color:#667eea;flex-shrink:0}.stat-icon{color:#a0aec0;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.stat-val{color:#1a202c;display:block;font-size:16px;font-weight:700}.stat-sub{color:#a0aec0;font-size:12px}.xp-bar{background:#e2e8f0;height:6px;margin:4px 0;overflow:hidden;width:120px}.xp-bar,.xp-fill{border-radius:3px}.xp-fill{background:linear-gradient(90deg,#667eea,#764ba2);height:100%;transition:width .5s}.profile-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;margin-bottom:20px;padding:20px}.profile-section h3{color:#1a202c;font-size:16px;margin:0 0 14px}.profile-cities{display:flex;flex-direction:column;gap:8px}.profile-city{background:#f7fafc;border-radius:8px;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:10px 14px;transition:background .2s}.profile-city:hover{background:#edf2f7}.profile-achievements{display:flex;flex-wrap:wrap;gap:8px}.profile-ach{border-radius:12px;font-size:12px;font-weight:600;padding:4px 12px}.profile-ach.unlocked{background:#f0fff4;border:1px solid #c6f6d5;color:#276749}.profile-ach.locked{background:#f7fafc;border:1px solid #e2e8f0;color:#a0aec0}@media (max-width:768px){.profile-page{padding:12px}.profile-stats-grid{grid-template-columns:repeat(2,1fr)}.profile-card{padding:20px}.profile-header h1{font-size:22px}}@media (max-width:480px){.profile-stats-grid{grid-template-columns:1fr}}.main-navbar{align-items:center;background:linear-gradient(135deg,#1a202c,#2d3748);box-shadow:0 2px 8px #0000004d;display:flex;height:56px;justify-content:space-between;padding:0 20px;position:-webkit-sticky;position:sticky;top:0;z-index:1000}.navbar-brand a{color:#667eea;font-size:18px;font-weight:800;letter-spacing:2px;text-decoration:none}.navbar-links{display:flex;gap:4px}.nav-link{align-items:center;border-radius:6px;color:#a0aec0;display:flex;font-size:13px;font-weight:500;gap:6px;padding:8px 12px;text-decoration:none;transition:all .2s}.nav-link:hover{background:#ffffff1a;color:#fff}.nav-link.active{background:#667eea4d;color:#fff}.navbar-user{align-items:center;display:flex;gap:12px}.user-info{color:#e2e8f0;font-size:13px;font-weight:600}.logout-btn{align-items:center;background:none;border:1px solid #4a5568;border-radius:6px;color:#a0aec0;cursor:pointer;display:flex;padding:6px 8px;transition:all .2s}.logout-btn:hover{border-color:#e53e3e;color:#e53e3e}.resource-topbar{align-items:center;background:#2d3748;border-bottom:1px solid #4a5568;display:flex;gap:4px;padding:4px 20px;position:-webkit-sticky;position:sticky;top:56px;z-index:999}.resource-topbar-city{border-right:1px solid #4a5568;color:#667eea;font-size:12px;font-weight:700;margin-right:8px;padding-right:12px;white-space:nowrap}.res-topbar-item{align-items:center;background:#ffffff0a;border-radius:4px;display:flex;gap:4px;padding:2px 8px}.res-topbar-dot{border-radius:50%;flex-shrink:0;height:6px;width:6px}.res-topbar-label{color:#718096;font-size:10px;font-weight:600;text-transform:uppercase}.res-topbar-val{color:#e2e8f0;font-size:12px;font-weight:700}@media (max-width:1024px){.nav-link span{display:none}.nav-link{padding:8px}}@media (max-width:768px){.main-navbar{flex-wrap:wrap;gap:6px;height:auto;padding:8px 12px}.navbar-brand a{font-size:16px}.navbar-links{border-top:1px solid #ffffff1a;flex-wrap:wrap;gap:2px;justify-content:center;order:3;padding-top:6px;width:100%}.nav-link{font-size:12px;padding:6px 8px}.nav-link span{display:none}.navbar-user{gap:8px}.user-info{font-size:12px}.logout-btn{padding:5px 6px}.resource-topbar{flex-wrap:wrap;gap:2px;padding:4px 8px;position:relative;top:auto}.resource-topbar-city{border-bottom:1px solid #4a5568;border-right:none;font-size:11px;margin-bottom:2px;margin-right:0;padding-bottom:3px;padding-right:0;width:100%}.res-topbar-item{flex:1 1;min-width:70px;padding:2px 4px}.res-topbar-label{display:none}}@media (max-width:480px){.main-navbar{padding:6px 8px}.navbar-brand a{font-size:14px;letter-spacing:1px}.navbar-links{gap:1px}.nav-link{font-size:11px;padding:5px 6px}.user-info{display:none}.logout-btn{font-size:12px;padding:4px 6px}}.bell-btn,.notification-bell{position:relative}.bell-btn{align-items:center;background:none;border:1px solid #4a5568;border-radius:6px;color:#a0aec0;cursor:pointer;display:flex;padding:6px 8px;transition:all .2s}.bell-btn:hover{border-color:#667eea;color:#667eea}.badge{align-items:center;background:#e53e3e;border-radius:8px;color:#fff;display:flex;font-size:10px;font-weight:700;height:16px;justify-content:center;min-width:16px;padding:0 4px;position:absolute;right:-6px;top:-6px}.notif-dropdown{background:#1a202c;border:1px solid #2d3748;border-radius:8px;box-shadow:0 8px 24px #0006;max-height:400px;overflow:hidden;position:absolute;right:0;top:42px;width:340px;z-index:2000}.notif-header{align-items:center;border-bottom:1px solid #2d3748;color:#e2e8f0;display:flex;font-size:14px;justify-content:space-between;padding:12px 16px}.mark-all{background:none;border:none;color:#667eea;cursor:pointer;font-size:12px}.notif-list{max-height:340px;overflow-y:auto}.notif-empty{color:#718096;font-size:14px;padding:24px;text-align:center}.notif-item{border-bottom:1px solid #2d3748;cursor:pointer;padding:12px 16px;transition:background .15s}.notif-item:hover{background:#ffffff0d}.notif-item.unread{background:#667eea1a;border-left:3px solid #667eea}.notif-title{color:#e2e8f0;font-size:13px;font-weight:600}.notif-msg{color:#a0aec0;font-size:12px;margin-top:2px}.notif-time{color:#718096;font-size:11px;margin-top:4px}.tutorial-overlay{align-items:center;display:flex;height:100%;justify-content:center;left:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:10000}.tutorial-backdrop{background:#0009;height:100%;left:0;pointer-events:auto;position:absolute;top:0;width:100%}.tutorial-tooltip{animation:tutorialSlideIn .3s ease-out;background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:480px;padding:28px 32px;pointer-events:auto;position:relative;width:90%;z-index:1}@keyframes tutorialSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.tutorial-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.tutorial-step-label{color:#667eea;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.tutorial-skip{background:none;border:none;border-radius:4px;color:#a0aec0;cursor:pointer;font-size:13px;padding:4px 8px;transition:color .2s}.tutorial-skip:hover{color:#4a5568}.tutorial-title{color:#1a202c;font-size:22px;font-weight:700;margin:0 0 12px}.tutorial-content{color:#4a5568;font-size:15px;line-height:1.6;margin:0 0 20px}.tutorial-progress{background:#e2e8f0;border-radius:2px;height:4px;margin-bottom:20px;overflow:hidden}.tutorial-progress-bar{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:2px;height:100%;transition:width .3s ease}.tutorial-footer{align-items:center;display:flex;justify-content:space-between}.tutorial-dots{display:flex;gap:8px}.tutorial-dot{background:#e2e8f0;border-radius:50%;height:8px;transition:all .2s;width:8px}.tutorial-dot.active{background:#667eea;transform:scale(1.3)}.tutorial-dot.done{background:#48bb78}.tutorial-next-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 24px;transition:transform .2s,box-shadow .2s}.tutorial-next-btn:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-1px)}@media (max-width:600px){.tutorial-tooltip{margin:0 8px;max-width:95%;padding:20px 24px}.tutorial-title{font-size:18px}.tutorial-content{font-size:14px}}.chat-toggle-btn{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:50%;bottom:24px;box-shadow:0 4px 16px #667eea66;color:#fff;cursor:pointer;display:flex;height:52px;justify-content:center;position:fixed;right:24px;transition:transform .2s;width:52px;z-index:9000}.chat-toggle-btn:hover{transform:scale(1.1)}.chat-unread{align-items:center;background:#e53e3e;border-radius:9px;color:#fff;display:flex;font-size:11px;font-weight:700;height:18px;justify-content:center;min-width:18px;padding:0 4px;position:absolute;right:-4px;top:-4px}.chat-panel{animation:chatSlideUp .2s ease-out;background:#fff;border-radius:12px;bottom:24px;box-shadow:0 8px 32px #00000026;display:flex;flex-direction:column;height:480px;overflow:hidden;position:fixed;right:24px;width:360px;z-index:9000}.chat-panel.chat-minimized{height:auto}@keyframes chatSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.chat-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;justify-content:space-between;padding:10px 12px}.chat-tabs{display:flex;gap:4px}.chat-tab{background:#fff3;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;font-weight:600;padding:4px 12px}.chat-tab.active{background:#fff6}.chat-controls{display:flex;gap:4px}.chat-controls button{background:none;border:none;border-radius:4px;color:#fffc;cursor:pointer;padding:4px}.chat-controls button:hover{background:#fff3}.chat-messages{flex:1 1;gap:8px;overflow-y:auto;padding:12px}.chat-messages,.chat-msg{display:flex;flex-direction:column}.chat-msg{gap:2px}.chat-msg.own .chat-msg-sender{color:#667eea}.chat-msg-sender{color:#4a5568;font-size:11px;font-weight:600}.chat-msg-sender small{color:#a0aec0;font-weight:400}.chat-msg-text{color:#2d3748;font-size:13px;line-height:1.4;word-break:break-word}.chat-input-area{border-top:1px solid #e2e8f0;display:flex;gap:8px;padding:10px 12px}.chat-input-area input{border:1px solid #e2e8f0;border-radius:8px;flex:1 1;font-size:13px;outline:none;padding:8px 12px}.chat-input-area input:focus{border-color:#667eea}.chat-input-area button{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;padding:8px 12px}.chat-input-area button:disabled{cursor:not-allowed;opacity:.5}@media (max-width:600px){.chat-panel{bottom:8px;height:400px;right:8px;width:calc(100% - 16px)}}.events-banner{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:8px;margin:8px 24px;overflow:hidden}.events-banner-header{align-items:center;cursor:pointer;display:flex;gap:10px;padding:10px 16px;-webkit-user-select:none;user-select:none}.events-banner-icon{font-size:18px}.events-banner-title{color:#92400e;flex:1 1;font-size:14px;font-weight:600}.events-banner-toggle{color:#92400e;font-size:12px}.events-banner-list{display:flex;flex-direction:column;gap:8px;padding:0 16px 12px}.events-banner-item{background:#fff9;border-radius:6px;display:flex;gap:10px;padding:8px 12px}.event-icon{flex-shrink:0;font-size:20px}.event-details{flex:1 1}.event-details strong{color:#1a202c;display:block;font-size:13px}.event-details p{color:#4a5568;font-size:12px;margin:2px 0}.event-timer{color:#d69e2e;font-size:11px;font-weight:600}@media (max-width:768px){.events-banner{margin:8px 12px}}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f8fafc;color:#1a202c;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.App{min-height:100vh}.loading-container{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;min-height:100vh}.spinner{animation:spin 1s linear infinite;border:4px solid #e2e8f0;border-radius:50%;border-top-color:#667eea;height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.btn-primary{white-space:nowrap;width:-webkit-fit-content;width:fit-content}.App{padding-top:0}
/*# sourceMappingURL=main.c481a65e.css.map*/