@font-face{font-family:KenneyFuture;src:url(/fonts/KenneyFuture.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:KenneyFutureNarrow;src:url(/fonts/KenneyFutureNarrow.ttf) format("truetype");font-weight:400;font-display:swap}:root{--c-blue: #3db7ff;--c-blue-dk: #1e7bc2;--c-red: #ff5a5a;--c-green: #4fd37a;--c-yellow: #ffd93b;--c-grey: #d7d7d7;--c-text: #eaf4ff;--c-text-dim: #b5c5d9;--c-panel: rgba(14, 22, 35, .9);--c-panel-border: #2a3a52;--c-panel-hl: #3a4e6c;--radius-lg: 14px;--radius-md: 10px;--radius-sm: 6px;--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5)}body{font-family:KenneyFuture,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.kn-panel{background:var(--c-panel);border:2px solid var(--c-panel-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px;color:var(--c-text)}.kn-title{font-family:KenneyFuture,sans-serif;font-size:32px;letter-spacing:1px;margin:0 0 6px;color:var(--c-blue);text-shadow:0 2px 0 rgba(0,0,0,.35)}.kn-title-hero,.kn-lobby-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;user-select:none;pointer-events:none;z-index:0}.kn-name-row{display:flex;gap:10px;align-items:stretch}.kn-name-row>.kn-input{flex:1;min-width:0}.kn-dice-btn{flex:0 0 auto;width:56px;min-height:52px;padding:0;border-radius:var(--radius-md);border:2px solid var(--c-panel-hl);background:#0b1422;color:var(--c-text);font-size:24px;line-height:1;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.kn-dice-btn:hover{border-color:var(--c-blue);transform:rotate(-12deg)}.kn-dice-btn:active{transform:scale(.94)}.kn-dice-btn--roll{animation:kn-dice-roll .5s ease-out}@keyframes kn-dice-roll{0%{transform:rotate(0) scale(1)}50%{transform:rotate(360deg) scale(1.15)}to{transform:rotate(720deg) scale(1)}}.kn-subtitle{font-family:KenneyFutureNarrow,sans-serif;color:var(--c-text-dim);margin:0 0 22px;font-size:14px}.kn-label{display:block;font-family:KenneyFutureNarrow,sans-serif;color:var(--c-text-dim);font-size:13px;margin-bottom:6px;letter-spacing:.5px;text-transform:uppercase}.kn-input{width:100%;padding:12px 14px;border-radius:var(--radius-md);background:#0b1422;border:2px solid var(--c-panel-hl);color:var(--c-text);font-family:KenneyFuture,sans-serif;font-size:18px;outline:none;box-sizing:border-box}.kn-input:focus{border-color:var(--c-blue);box-shadow:0 0 0 3px #3db7ff40}.kn-row{display:flex;gap:12px}.kn-row>*{flex:1}.kn-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 22px;font-family:KenneyFuture,sans-serif;font-size:18px;letter-spacing:.5px;color:#fff;background-color:var(--c-blue);background-image:linear-gradient(180deg,#ffffff2e,#0000001f);border:0;border-radius:var(--radius-md);cursor:pointer;box-shadow:0 4px 0 var(--c-blue-dk),0 6px 16px #00000059;transition:transform 80ms ease,box-shadow 80ms ease,filter 80ms ease;user-select:none}.kn-btn:hover:not(:disabled){filter:brightness(1.08)}.kn-btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--c-blue-dk),0 2px 6px #00000059}.kn-btn:disabled{filter:grayscale(.6) brightness(.7);cursor:not-allowed}.kn-btn--green{background-color:var(--c-green);box-shadow:0 4px #2a8c48,0 6px 16px #00000059}.kn-btn--red{background-color:var(--c-red);box-shadow:0 4px #b03838,0 6px 16px #00000059}.kn-btn--yellow{background-color:var(--c-yellow);color:#3a2c00;box-shadow:0 4px #b89a23,0 6px 16px #00000059}.kn-btn--grey{background-color:var(--c-grey);color:#222;box-shadow:0 4px #8a8a8a,0 6px 16px #00000059}.kn-btn--ghost{background:transparent;border:2px solid var(--c-panel-hl);box-shadow:none;color:var(--c-text)}.kn-btn--ghost:hover:not(:disabled){border-color:var(--c-blue)}.kn-btn--ghost:active:not(:disabled){transform:none}.kn-chip{display:inline-block;padding:6px 12px;border-radius:999px;background:var(--c-panel-hl);color:var(--c-text);font-family:KenneyFutureNarrow,sans-serif;font-size:13px;letter-spacing:.5px}.kn-roomcode{font-family:KenneyFuture,sans-serif;font-size:34px;letter-spacing:6px;padding:10px 18px;background:#0b1422;border:2px dashed var(--c-blue);border-radius:var(--radius-md);color:var(--c-yellow);text-align:center;user-select:all}.kn-player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.kn-player-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#0b1422;border-radius:var(--radius-md);border:1px solid var(--c-panel-hl)}.kn-player-dot{width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 2px #0006}.kn-player-name{font-family:KenneyFuture,sans-serif;font-size:16px;flex:1}.kn-player-badge{font-family:KenneyFutureNarrow,sans-serif;font-size:12px;color:var(--c-yellow);letter-spacing:1px}.kn-lobby{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px 16px;overflow:auto;background:radial-gradient(ellipse at top,#25354d,#0f1624 70%)}.kn-lobby__card{position:relative;z-index:1;width:min(520px,92vw)}.kn-lobby__card--offset{margin-top:52vh;max-height:46vh;overflow:auto}.kn-error{color:var(--c-red);font-family:KenneyFutureNarrow,sans-serif;font-size:14px;margin-top:8px;min-height:18px}.kn-hud{position:fixed;top:14px;left:50%;transform:translate(-50%);display:flex;gap:10px;padding:8px 14px;background:var(--c-panel);border:2px solid var(--c-panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--c-text);font-family:KenneyFutureNarrow,sans-serif;z-index:20}.kn-hud__cell{display:flex;flex-direction:column;padding:2px 12px;min-width:120px;border-right:1px solid var(--c-panel-hl)}.kn-hud__cell:last-child{border-right:0}.kn-hud__label{font-size:11px;letter-spacing:1px;color:var(--c-text-dim);text-transform:uppercase}.kn-hud__cash{font-family:KenneyFuture,sans-serif;font-size:22px;color:var(--c-yellow)}.kn-hud__cash[data-neg=true]{color:var(--c-red)}.kn-hud__date{font-family:KenneyFuture,sans-serif;font-size:18px}.kn-hud__speedgroup{display:inline-flex;gap:4px}.kn-hud__speed{min-width:38px;height:32px;border:2px solid var(--c-panel-hl);background:#0b1422;color:var(--c-text);border-radius:6px;cursor:pointer;font-family:KenneyFuture,sans-serif;font-size:13px;padding:0 8px}.kn-hud__speed:hover:not(:disabled){border-color:var(--c-blue)}.kn-hud__speed[data-active=true]{background:var(--c-blue);color:#0b1422;border-color:var(--c-blue)}.kn-hud__speed:disabled{opacity:.45;cursor:not-allowed}.kn-buildmenu{position:fixed;top:80px;left:14px;width:220px;padding:16px;background:var(--c-panel);border:2px solid var(--c-panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--c-text);z-index:15}.kn-buildmenu__title{font-family:KenneyFuture,sans-serif;font-size:20px;color:var(--c-blue);margin-bottom:10px;letter-spacing:1px}.kn-buildmenu__tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:8px}.kn-buildmenu__tab{padding:6px 4px;background:#0b1422;border:2px solid var(--c-panel-hl);border-radius:6px;color:var(--c-text-dim);cursor:pointer;font-family:KenneyFuture,sans-serif;font-size:12px;transition:border-color 80ms ease,color 80ms ease,background 80ms ease}.kn-buildmenu__tab:hover{border-color:var(--c-blue);color:var(--c-text)}.kn-buildmenu__tab[data-active=true]{border-color:var(--c-yellow);background:#ffd93b1f;color:var(--c-yellow)}.kn-buildmenu__list{display:flex;flex-direction:column;max-height:320px;overflow-y:auto;padding-right:2px}.kn-buildmenu__empty{padding:12px 6px;font-family:KenneyFutureNarrow,sans-serif;font-size:12px;color:var(--c-text-dim);text-align:center}.kn-buildmenu__item{display:block;width:100%;padding:10px 12px;margin-bottom:8px;background:#0b1422;border:2px solid var(--c-panel-hl);border-radius:8px;color:var(--c-text);cursor:pointer;text-align:left;font-family:KenneyFuture,sans-serif;transition:border-color 80ms ease,background 80ms ease}.kn-buildmenu__item:hover{border-color:var(--c-blue)}.kn-buildmenu__item[data-active=true]{border-color:var(--c-yellow);background:#ffd93b1a}.kn-buildmenu__name{font-size:16px}.kn-buildmenu__cost{font-family:KenneyFutureNarrow,sans-serif;font-size:13px;color:var(--c-yellow);margin-top:2px}.kn-buildmenu__zone{font-family:KenneyFutureNarrow,sans-serif;font-size:12px;color:var(--c-text-dim)}.kn-buildmenu__cancel{display:block;width:100%;padding:8px;margin-top:4px;background:transparent;border:2px dashed var(--c-panel-hl);color:var(--c-text-dim);border-radius:6px;cursor:pointer;font-family:KenneyFuture,sans-serif}.kn-buildmenu__cancel:disabled{opacity:.4;cursor:default}.kn-buildmenu__legend{margin-top:14px;font-family:KenneyFutureNarrow,sans-serif;font-size:12px;color:var(--c-text-dim);display:flex;flex-direction:column;gap:4px}.kn-buildmenu__legend .swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle}.kn-buildmenu__legend hr{border:0;border-top:1px solid var(--c-panel-hl);margin:8px 0}.kn-toast-stack{position:fixed;top:80px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:30;pointer-events:none}.kn-toast{padding:10px 16px;background:var(--c-panel);color:var(--c-text);border:2px solid var(--c-panel-hl);border-radius:8px;font-family:KenneyFutureNarrow,sans-serif;font-size:14px;opacity:0;transform:translate(20px);transition:opacity .2s ease,transform .2s ease;box-shadow:var(--shadow-lg)}.kn-toast--show{opacity:1;transform:translate(0)}.kn-toast--error{border-color:var(--c-red);color:#ffd7d7}.kn-toast--warn{border-color:var(--c-yellow);color:#fff0c0}.kn-toast--success{border-color:var(--c-green);color:#d5f7e0}.kn-time{position:fixed;right:16px;bottom:16px;display:inline-flex;align-items:center;gap:10px;padding:10px 14px;background:var(--c-panel);border:2px solid var(--c-panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-family:KenneyFutureNarrow,sans-serif;font-size:13px;color:var(--c-text);z-index:20}.kn-time__dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c-green);box-shadow:0 0 8px var(--c-green);animation:kn-pulse 1s ease-in-out infinite}.kn-time[data-speed="0"] .kn-time__dot{background:var(--c-red);box-shadow:0 0 6px var(--c-red);animation:none}.kn-time[data-speed="2"] .kn-time__dot{animation-duration:.55s;background:var(--c-yellow);box-shadow:0 0 8px var(--c-yellow)}.kn-time[data-speed="3"] .kn-time__dot{animation-duration:.3s;background:var(--c-blue);box-shadow:0 0 8px var(--c-blue)}.kn-time__label{font-family:KenneyFuture,sans-serif;letter-spacing:.5px}.kn-time__tick{color:var(--c-text-dim);font-variant-numeric:tabular-nums}@keyframes kn-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.6}}.kn-buildmenu[data-disabled=true]{filter:grayscale(.7);opacity:.65}.kn-buildmenu[data-disabled=true] .kn-buildmenu__title{color:var(--c-red)}.kn-modal__backdrop{position:fixed;inset:0;background:#0000008c;display:grid;place-items:center;z-index:60}.kn-modal__card{width:min(520px,92vw);max-height:86vh;overflow:auto;padding:22px 26px;display:flex;flex-direction:column;gap:14px}.kn-modal__header{display:flex;align-items:center;gap:12px}.kn-modal__title{flex:1;margin:0;font-family:KenneyFuture,sans-serif;color:var(--c-blue);font-size:22px;letter-spacing:1px}.kn-modal__close{width:32px;height:32px;border:0;background:transparent;color:var(--c-text-dim);cursor:pointer;font-size:18px}.kn-modal__close:hover{color:var(--c-red)}.kn-modal__meta{font-family:KenneyFutureNarrow,sans-serif;color:var(--c-text-dim);font-size:13px}.kn-modal__note{font-family:KenneyFutureNarrow,sans-serif;color:var(--c-text-dim);font-size:14px}.kn-modal__stats{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;padding:12px 14px;background:#0b1422;border:1px solid var(--c-panel-hl);border-radius:var(--radius-md);font-family:KenneyFutureNarrow,sans-serif;font-size:14px}.kn-modal__stats>div{display:flex;justify-content:space-between;color:var(--c-text-dim)}.kn-modal__stats strong{color:var(--c-text);font-family:KenneyFuture,sans-serif}.kn-pill{flex:1;padding:10px 8px;background:#0b1422;border:2px solid var(--c-panel-hl);border-radius:8px;color:var(--c-text);font-family:KenneyFuture,sans-serif;font-size:14px;cursor:pointer;transition:border-color 80ms ease,background 80ms ease}.kn-pill:hover{border-color:var(--c-blue)}.kn-pill[data-active=true]{border-color:var(--c-yellow);background:#ffd93b14}.kn-pill small{display:block;font-family:KenneyFutureNarrow,sans-serif;font-size:11px;color:var(--c-text-dim);margin-top:2px}.kn-slider-row{display:flex;align-items:center;gap:12px}.kn-slider{flex:1;accent-color:var(--c-blue)}.kn-slider-val{min-width:70px;text-align:right;font-family:KenneyFuture,sans-serif;color:var(--c-yellow)}.kn-dispatch-list{display:flex;flex-direction:column;gap:8px}.kn-dispatch-row{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#0b1422;border-radius:8px;border:1px solid var(--c-panel-hl);font-family:KenneyFutureNarrow,sans-serif;font-size:13px}.kn-dispatch-row>span{flex:1;color:var(--c-text)}.kn-dispatch-row .kn-btn{min-height:36px;padding:0 14px;font-size:14px}.kn-input--small{width:70px;height:36px;padding:0 8px;font-size:14px}.kn-toggle-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#0b1422;border:1px solid var(--c-panel-hl);border-radius:8px;color:var(--c-text);font-family:KenneyFutureNarrow,sans-serif;font-size:13px;cursor:pointer}.kn-toggle-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--c-blue)}.kn-mappreview{width:min(560px,92vw);display:flex;flex-direction:column;gap:12px}.kn-mappreview__wrap{display:flex;justify-content:center;padding:10px;background:#0b1422;border:2px solid var(--c-panel-hl);border-radius:var(--radius-md)}.kn-mappreview__canvas{width:min(440px,80vw);height:auto;image-rendering:pixelated;image-rendering:crisp-edges;background:#1b1f28}.kn-mappreview__legend{display:flex;flex-wrap:wrap;gap:12px;font-family:KenneyFutureNarrow,sans-serif;font-size:13px;color:var(--c-text-dim);justify-content:center}.kn-mappreview__legend b{display:inline-block;width:12px;height:12px;margin-right:6px;border-radius:3px;vertical-align:middle}.kn-mappreview__counts{text-align:center;font-family:KenneyFutureNarrow,sans-serif;font-size:13px;color:var(--c-text-dim)}.kn-mappreview__buttons{display:flex;gap:10px;justify-content:flex-end;padding-top:4px}.kn-mappreview__buttons .kn-btn{min-height:46px;padding:0 18px;font-size:16px}.kn-tile-tooltip{position:fixed;display:none;min-width:180px;max-width:240px;padding:10px 12px;background:#0a101af0;border:1px solid var(--c-panel-hl);border-radius:var(--radius-md);color:var(--c-text);font-family:KenneyFutureNarrow,sans-serif;font-size:12px;line-height:1.35;box-shadow:var(--shadow-lg);pointer-events:none;z-index:70;user-select:none}.kn-tile-tooltip__title{font-family:KenneyFuture,sans-serif;font-size:13px;color:var(--c-blue);letter-spacing:.5px;margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid var(--c-panel-hl)}.kn-tile-tooltip__row{display:flex;justify-content:space-between;gap:10px;color:var(--c-text-dim)}.kn-tile-tooltip__row strong{color:var(--c-text);font-family:KenneyFuture,sans-serif;font-size:12px}.kn-tile-tooltip__sub{color:var(--c-text-dim);font-size:11px;margin:2px 0 4px;padding-left:6px;border-left:2px solid var(--c-panel-hl)}.kn-buildpreview{position:fixed;display:none;min-width:220px;max-width:280px;padding:12px 14px;background:#0a101af2;border:2px solid var(--c-yellow);border-radius:var(--radius-md);color:var(--c-text);font-family:KenneyFutureNarrow,sans-serif;font-size:13px;line-height:1.4;box-shadow:var(--shadow-lg);pointer-events:none;z-index:70;user-select:none}.kn-buildpreview__title{font-family:KenneyFuture,sans-serif;font-size:15px;color:var(--c-yellow);letter-spacing:.5px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--c-panel-hl)}.kn-buildpreview__row{display:flex;justify-content:space-between;gap:10px;color:var(--c-text-dim);margin-top:3px}.kn-buildpreview__row strong{color:var(--c-text);font-family:KenneyFuture,sans-serif;font-size:13px}.kn-buildpreview__sub{color:var(--c-text-dim);font-size:11px;margin:2px 0 6px;padding-left:6px;border-left:2px solid var(--c-panel-hl)}.kn-lv-toggle{position:fixed;left:14px;bottom:14px;display:inline-flex;align-items:center;gap:10px;padding:8px 14px 8px 10px;background:var(--c-panel);border:2px solid var(--c-panel-border);border-radius:999px;box-shadow:var(--shadow-lg);color:var(--c-text);font-family:KenneyFuture,sans-serif;font-size:13px;letter-spacing:.5px;cursor:pointer;z-index:25;transition:border-color 80ms ease,transform 80ms ease,background 80ms ease}.kn-lv-toggle:hover{border-color:var(--c-blue)}.kn-lv-toggle:active{transform:translateY(1px)}.kn-lv-toggle[data-active=true]{background:var(--c-blue);color:#0b1422;border-color:var(--c-blue)}.kn-lv-toggle__swatch{width:18px;height:18px;border-radius:4px;background:linear-gradient(90deg,#4fd37a,#ffd93b,#ff5a5a);border:1px solid rgba(0,0,0,.45)}.kn-lv-toggle__label{font-family:KenneyFuture,sans-serif}.kn-lv-toggle__hint{font-family:KenneyFutureNarrow,sans-serif;font-size:11px;padding:2px 6px;border:1px solid currentColor;border-radius:4px;opacity:.7}.kn-lv-toggle[data-active=true] .kn-lv-toggle__hint{opacity:.85}.kn-hud__population{font-family:KenneyFuture,sans-serif;font-size:18px;color:var(--c-green, #4fd37a)}html,body{margin:0;padding:0;height:100%;background:#1b1f28;color:var(--c-text);font-family:KenneyFuture,system-ui,sans-serif;overflow:hidden}#phaser-root{position:fixed;inset:0;z-index:0}#overlay{position:fixed;inset:0;z-index:10;pointer-events:none}#overlay>*{pointer-events:auto}.kn-menubtn{position:fixed;top:14px;right:14px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--c-panel);color:var(--c-text);border:2px solid var(--c-panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);cursor:pointer;z-index:40;transition:border-color 80ms ease,transform 80ms ease}.kn-menubtn:hover{border-color:var(--c-blue)}.kn-menubtn:active{transform:translateY(1px)}.kn-menu-backdrop{position:fixed;inset:0;background:#00000073;z-index:45}.kn-menu-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(360px,92vw);padding:22px;z-index:50;display:flex;flex-direction:column;gap:14px}.kn-menu-popup__title{font-family:KenneyFuture,sans-serif;font-size:22px;color:var(--c-blue);letter-spacing:1px;margin-bottom:4px}.kn-menu-popup__section{background:#0b1422;border:1px solid var(--c-panel-hl);border-radius:var(--radius-md);padding:12px 14px;display:flex;flex-direction:column;gap:10px}.kn-menu-popup__heading{font-family:KenneyFutureNarrow,sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--c-text-dim)}.kn-menu-popup__row{display:flex;align-items:center;gap:10px;font-family:KenneyFutureNarrow,sans-serif;font-size:14px;color:var(--c-text)}.kn-menu-popup__row>span:first-child{min-width:56px}.kn-menu-popup__slider{flex:1;accent-color:var(--c-blue)}.kn-menu-popup__volval{min-width:42px;text-align:right;color:var(--c-text-dim);font-variant-numeric:tabular-nums}.kn-menu-popup__toggle{width:18px;height:18px;margin-left:auto;accent-color:var(--c-blue);cursor:pointer}.kn-menu-popup__exit{margin-top:2px}.kn-menu-popup__close{min-height:40px}
