:root{--term-bg: #0a0a0a;--term-fg: #00ff41;--term-dim: #00aa2a;--term-border: #00ff41;--term-highlight: #ffffff;--term-error: #ff0040;--term-warn: #ffaa00;--term-font: "IBM Plex Mono", monospace;--land-color: #0a3a0a;--land-border: #00ff41;--ocean-color: #0a0a0a;--player-self: #00ff41;--player-other: #00aa2a;--player-bot: #555555}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;background:var(--term-bg);color:var(--term-fg);font-family:var(--term-font);font-size:14px;line-height:1.4;-webkit-font-smoothing:none;-moz-osx-font-smoothing:unset}#app{width:100%;height:100%;display:flex;flex-direction:column;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)}.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(transparent 0px,rgba(0,0,0,.08) 1px,transparent 2px);pointer-events:none;z-index:9999}#app:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 80px #00ff410d;pointer-events:none;z-index:9998}@keyframes flicker{0%,95%,to{opacity:1}96%{opacity:.97}}#app{animation:flicker 4s infinite}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--term-bg)}::-webkit-scrollbar-thumb{background:var(--term-dim);border-radius:0}::selection{background:var(--term-fg);color:var(--term-bg)}input,button,select,textarea{font-family:var(--term-font);font-size:14px;background:var(--term-bg);color:var(--term-fg);border:1px solid var(--term-dim);padding:8px 12px;outline:none}input:focus,textarea:focus{border-color:var(--term-fg);box-shadow:0 0 8px #00ff4133}button{cursor:pointer;text-transform:uppercase;letter-spacing:1px;transition:all .1s}button:hover{background:var(--term-fg);color:var(--term-bg)}button:active{transform:scale(.98)}button:disabled{opacity:.3;cursor:not-allowed}button:disabled:hover{background:var(--term-bg);color:var(--term-fg)}a{color:var(--term-fg);text-decoration:underline}.map-container{position:relative;flex:1;overflow:hidden;cursor:crosshair;touch-action:none}.map-container canvas{display:block;width:100%;height:100%}.map-tooltip{position:absolute;background:var(--term-bg);border:1px solid var(--term-fg);padding:4px 8px;font-size:11px;pointer-events:none;white-space:nowrap;z-index:100}.map-coords{position:absolute;bottom:4px;left:4px;font-size:10px;color:var(--term-dim);pointer-events:none}.terminal-frame{border:1px solid var(--term-dim);position:relative}.terminal-frame .frame-title{position:absolute;top:-1px;left:12px;background:var(--term-bg);padding:0 6px;font-size:11px;color:var(--term-dim);text-transform:uppercase;letter-spacing:2px;transform:translateY(-50%)}.top-bar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;border-bottom:1px solid var(--term-dim);font-size:12px;flex-shrink:0}.top-bar .logo{font-weight:700;font-size:14px;letter-spacing:3px}.top-bar .stats{display:flex;gap:16px}.top-bar .stat-value{color:var(--term-highlight)}.action-bar{display:flex;border-top:1px solid var(--term-dim);flex-shrink:0;background:var(--term-bg)}.action-bar button{flex:1;border:none;border-right:1px solid var(--term-dim);padding:10px 0;font-size:11px;letter-spacing:2px;background:var(--term-bg);color:var(--term-dim)}.action-bar button:last-child{border-right:none}.action-bar button.active{color:var(--term-fg);background:#00ff410d;border-bottom:2px solid var(--term-fg)}.action-bar button:hover{color:var(--term-fg);background:#00ff410d}.panel{padding:12px;overflow-y:auto;flex:1}.panel-header{font-size:12px;text-transform:uppercase;letter-spacing:2px;color:var(--term-fg);padding:6px 12px;background:#00ff411f;border-bottom:1px solid rgba(0,255,65,.2);margin:0 -12px 8px}.panel>.panel-header:first-child{margin-top:-12px}.trade-filters{display:flex;gap:6px;margin-bottom:8px}.trade-filters button{font-size:10px;padding:4px 8px;white-space:nowrap;letter-spacing:1px}.trade-filters button.filter-active{background:#00ff411f;border-color:var(--term-fg);color:var(--term-fg)}.trade-search{flex:1;font-size:11px;padding:4px 8px!important}.trade-item{display:flex;justify-content:space-between;align-items:center;padding:8px;border:1px solid rgba(0,255,65,.15);margin-bottom:4px;font-size:12px}.trade-item:hover{border-color:var(--term-fg)}.trade-item .trade-offer{color:var(--term-warn)}.trade-item .trade-request{color:var(--term-fg)}.trade-item .trade-arrow{color:var(--term-dim);margin:0 8px}.trade-item.trade-fading{animation:tradeFadeOut 1s ease-out forwards}.trade-completed-label{font-size:9px;color:var(--term-fg);letter-spacing:1px}@keyframes tradeFadeOut{0%{opacity:1}to{opacity:0}}.trade-item .trade-qty{color:var(--term-dim);font-size:11px}.trade-item .trade-poster{color:var(--term-dim);font-size:10px}.trade-item button{font-size:10px;padding:4px 8px}.resource-picker{position:relative;flex:1}.resource-picker input{width:100%;padding:6px 8px;font-size:12px}.resource-picker-dropdown{position:absolute;top:100%;left:0;right:0;max-height:180px;overflow-y:auto;background:var(--term-bg);border:1px solid var(--term-fg);border-top:none;z-index:200}.resource-picker-item{display:flex;justify-content:space-between;padding:5px 8px;font-size:11px;cursor:pointer}.resource-picker-item:hover{background:#00ff411a}.resource-picker-item.selected{background:#00ff4126;border-left:2px solid var(--term-fg)}.resource-picker-item.dimmed{opacity:.3}.resource-picker-item .rp-name{color:var(--term-fg)}.resource-picker-item .rp-qty{color:var(--term-highlight)}.resource-picker-item .rp-owned,.resource-picker-item .rp-supply,.resource-picker-item .rp-cat{color:var(--term-dim);font-size:10px}.resource-picker-empty{padding:8px;font-size:11px;color:var(--term-dim);text-align:center}.inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:4px}.inventory-item{padding:6px 8px;border:1px solid rgba(0,255,65,.1);font-size:11px;display:flex;justify-content:space-between}.inventory-item .qty{color:var(--term-highlight)}.leaderboard-item{display:flex;justify-content:space-between;padding:4px 8px;font-size:12px}.leaderboard-item:nth-child(odd){background:#00ff4108}.leaderboard-item .rank{color:var(--term-dim);width:24px}.leaderboard-item .name{flex:1}.leaderboard-item .name.is-bot{color:var(--term-dim)}.leaderboard-item .score{color:var(--term-highlight)}.chat-container{display:flex;flex-direction:column;height:100%}.chat-messages{flex:1;overflow-y:auto;padding:8px}.chat-message{margin-bottom:4px;font-size:12px}.chat-message .chat-from{color:var(--term-highlight)}.chat-message .chat-text{color:var(--term-fg)}.chat-input-row{display:flex;border-top:1px solid var(--term-dim)}.chat-input-row input{flex:1;border:none}.chat-input-row button{padding:8px 16px;border:none;border-left:1px solid var(--term-dim)}.login-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px}.login-screen .title{font-size:32px;font-weight:700;letter-spacing:8px;margin-bottom:4px}.login-screen .subtitle{font-size:12px;color:var(--term-dim);margin-bottom:32px;letter-spacing:2px}.login-form{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}.login-form input{width:100%}.login-form button{width:100%;padding:12px}.login-form .form-footer{text-align:center;font-size:12px;color:var(--term-dim)}.login-form .form-footer a{cursor:pointer}.login-form .error{color:var(--term-error);font-size:12px;text-align:center}.login-form .success{color:var(--term-fg);font-size:12px;text-align:center}.trade-form{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--term-dim);margin-bottom:12px}.trade-form .form-row{display:flex;gap:8px;align-items:center}.trade-form select{flex:1;padding:6px}.trade-form input[type=number]{width:60px;padding:6px}.trade-form label{font-size:11px;color:var(--term-dim);text-transform:uppercase;letter-spacing:1px;min-width:60px}.action-description{font-size:11px;color:var(--term-dim);margin-bottom:10px;line-height:1.5}.action-form{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--term-dim);margin-bottom:12px}.action-form .form-row{display:flex;gap:8px;align-items:center}.action-form label{font-size:11px;color:var(--term-dim);text-transform:uppercase;letter-spacing:1px;min-width:60px}.action-form select{flex:1;padding:6px 8px;font-size:12px}.action-cost{font-size:11px;color:var(--term-warn);padding:0 4px}.prospect-result{padding:8px;text-align:center;font-size:12px;font-weight:700;letter-spacing:1px}.prospect-result.win{color:var(--term-fg);border:1px solid var(--term-fg);background:#00ff4114}.prospect-result.loss{color:var(--term-error);border:1px solid var(--term-error);background:#ff004014}.action-form button[type=submit]{padding:10px}.term-window{position:absolute;background:var(--term-bg);border:1px solid var(--term-fg);z-index:300;min-width:340px;max-width:420px;display:flex;flex-direction:column;box-shadow:0 0 20px #00ff4126}.term-window-titlebar{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-bottom:1px solid var(--term-fg);background:#00ff4114;flex-shrink:0}.term-window-title{font-size:11px;letter-spacing:2px;text-transform:uppercase}.term-window-close{font-size:11px;padding:2px 6px;border:1px solid var(--term-dim);background:var(--term-bg);color:var(--term-dim);cursor:pointer;line-height:1}.term-window-close:hover{border-color:var(--term-error);color:var(--term-error);background:#ff00401a}.term-window-body{padding:12px;overflow-y:auto}.map-actions{position:absolute;top:8px;left:8px;display:flex;flex-direction:column;gap:6px;z-index:200}.map-action-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--term-dim);background:var(--term-bg);color:var(--term-fg);font-size:14px;cursor:pointer;padding:0;letter-spacing:0}.map-action-btn:hover{border-color:var(--term-fg);background:#00ff411a;box-shadow:0 0 8px #00ff4133}.map-action-btn.active{background:#00ff4126;border-color:var(--term-fg)}.map-action-btn .btn-label{font-size:8px;display:block;letter-spacing:.5px}.map-window-container{position:absolute;top:8px;left:52px;z-index:300}.discover-slots{display:flex;flex-wrap:wrap;gap:4px;min-height:28px}.discover-slot{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--term-dim);font-size:10px;cursor:pointer}.discover-slot:hover{border-color:var(--term-error);color:var(--term-error)}.discover-slot .slot-remove{color:var(--term-dim);font-size:9px}.discover-slot:hover .slot-remove{color:var(--term-error)}.discover-slot-empty{font-size:10px;color:var(--term-dim);padding:3px 0}.discover-add select{width:100%;padding:6px 8px;font-size:11px}.event-log{display:flex;flex-direction:column;height:100%}.event-log-entries{flex:1;overflow-y:auto;font-size:11px;padding:4px 12px}.event-log-empty{color:var(--term-dim);padding:8px 0}.event-log-entry{padding:3px 0;border-bottom:1px solid rgba(0,255,65,.05);display:flex;gap:8px}.event-log-entry .event-time{color:var(--term-dim);flex-shrink:0}.event-log-entry .event-text{color:var(--term-fg)}.event-log-entry.error .event-text{color:var(--term-error)}.chat{display:flex;flex-direction:column;height:100%}.chat-messages{flex:1;overflow-y:auto;font-size:11px;padding:4px 12px}.chat-empty{color:var(--term-dim);padding:8px 0}.chat-msg{padding:2px 0;display:flex;gap:6px}.chat-msg .chat-author{color:var(--term-dim);flex-shrink:0}.chat-msg .chat-author:after{content:":"}.chat-msg .chat-text{color:var(--term-fg);word-break:break-word}.chat-msg-mine .chat-author{color:var(--term-fg)}.chat-input{display:flex;gap:4px;padding:4px 8px;border-top:1px solid rgba(0,255,65,.15)}.chat-input input{flex:1;background:#0000004d;border:1px solid rgba(0,255,65,.2);color:var(--term-fg);font-family:var(--term-font);font-size:11px;padding:4px 8px;outline:none}.chat-input input::placeholder{color:var(--term-dim);opacity:.5}.chat-input button{font-size:10px;padding:4px 8px}.winner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000000e6;z-index:500}.winner-overlay .winner-text{font-size:28px;font-weight:700;letter-spacing:4px;margin-bottom:8px;color:var(--term-highlight)}.winner-overlay .winner-name{font-size:20px;color:var(--term-fg);margin-bottom:24px}.admin-panel{padding:0}.admin-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--term-dim)}.admin-tabs button{flex:1;padding:6px 0;border:none;font-size:10px;letter-spacing:1px;background:var(--term-bg);color:var(--term-dim)}.admin-tabs button.active{color:var(--term-fg);background:#00ff410d;border-bottom:2px solid var(--term-fg)}.admin-content{padding:12px;overflow-y:auto;flex:1}.admin-section-header{font-size:11px;text-transform:uppercase;letter-spacing:2px;color:var(--term-dim);margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}.admin-loading{color:var(--term-dim);font-size:11px;padding:8px 0}.admin-user-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(0,255,65,.05);gap:8px}.admin-user-info{display:flex;flex-direction:column;gap:2px;min-width:0}.admin-user-name{font-size:12px;display:flex;align-items:center;gap:6px}.admin-user-meta{font-size:10px;color:var(--term-dim)}.admin-badge{font-size:8px;padding:1px 4px;border:1px solid var(--term-fg);letter-spacing:1px}.admin-badge.banned{border-color:var(--term-error);color:var(--term-error)}.admin-user-actions{display:flex;gap:4px;flex-shrink:0}.admin-btn-sm{font-size:9px;padding:3px 6px;letter-spacing:1px}.admin-btn-sm.danger{border-color:var(--term-error);color:var(--term-error)}.admin-btn-sm.danger:hover{background:var(--term-error);color:var(--term-bg)}.admin-stats{font-size:12px}.admin-stat-row{padding:4px 0;font-size:11px}.admin-actions-row{display:flex;gap:8px;margin-top:12px}.admin-inline-form{display:flex;gap:6px;margin-top:8px;align-items:center}.admin-inline-form input{width:80px;padding:4px 6px;font-size:11px}.admin-economy-form{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.admin-economy-form select,.admin-economy-form input{padding:4px 6px;font-size:11px}.admin-economy-form select{flex:1;min-width:100px}.admin-economy-form input[type=text]{width:100px}.admin-economy-form input[type=number]{width:50px}@media (min-width: 769px){.game-layout{display:flex;flex-direction:column;height:100%}.game-main{display:flex;flex:1;overflow:hidden}.game-main>.mobile-panel{flex:1;overflow-y:auto;max-width:800px;margin:0 auto;width:100%}.map-with-actions{flex:2;position:relative;overflow:hidden}.map-with-actions .map-container{width:100%;height:100%}.game-sidebar{flex:1;border-left:1px solid var(--term-dim);display:flex;flex-direction:column;overflow:hidden}.game-sidebar .panel{flex:1;overflow-y:auto}.map-event-log{position:absolute;bottom:0;left:33vw;right:0;height:200px;z-index:10;pointer-events:none}.map-event-log .event-log{background:transparent;pointer-events:auto;height:100%;overflow:hidden}.map-event-log .panel-header{background:transparent;border-bottom:1px solid rgba(0,255,65,.15);margin:0}.map-event-log .event-log-entries{mask-image:linear-gradient(to bottom,transparent 0%,black 20%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 20%)}.map-event-log .event-log-entry{text-shadow:0 0 4px rgba(0,0,0,.8)}.map-chat{position:absolute;bottom:0;left:0;width:33vw;height:200px;z-index:10;pointer-events:none}.map-chat .chat{background:transparent;pointer-events:auto;height:100%;overflow:hidden}.map-chat .panel-header{background:transparent;border-bottom:1px solid rgba(0,255,65,.15);margin:0}.map-chat .chat-messages{mask-image:linear-gradient(to bottom,transparent 0%,black 20%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 20%)}.map-chat .chat-msg{text-shadow:0 0 4px rgba(0,0,0,.8)}.map-chat .chat-input{background:#0006}}@media (max-width: 768px){.game-layout{display:flex;flex-direction:column;height:100%}.game-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.game-sidebar{display:none}.mobile-panel{flex:1;overflow-y:auto}.top-bar{font-size:10px;padding:4px 8px}.top-bar .logo{font-size:12px;letter-spacing:2px}.top-bar .stats{gap:8px}.trade-form .form-row{flex-wrap:wrap}.trade-form label{min-width:45px;font-size:10px}.trade-form input[type=number]{width:50px}.login-screen .title{font-size:24px;letter-spacing:5px}.inventory-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.notification{left:12px;right:12px;text-align:center}}
