@import "https://fonts.googleapis.com/css2?family=Oxanium:wght@400;600;700;800&family=Barlow+Semi+Condensed:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";:root{--font-ui:"Barlow Semi Condensed", system-ui, sans-serif;--font-display:"Oxanium", system-ui, sans-serif;--r-sm:2px;--r-md:4px;--r-lg:6px;--r-sheet:8px;--bg-base:#02050a;--bg-primary:#050c14;--bg-secondary:#0a1421;--bg-card:#112033;--bg-input:#16273d;--surface:#050c14;--border:#2a394d;--border-faint:#15202d;--border-strong:#455a74;--text-primary:#d9dfe6;--text-secondary:#7a818a;--text-muted:#4e5359;--accent:#c90042;--gold:#e9b10d;--energy:#0092d7;--success:#4cc157;--danger:#d40924;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem}@supports (color:lab(0% 0 0)){:root{--bg-base:lab(1.17864% -.155538 -2.31166);--bg-primary:lab(2.99843% -.420302 -5.14475);--bg-secondary:lab(6.08078% -.823021 -10.2017);--bg-card:lab(11.6346% -1.14787 -14.6631);--bg-input:lab(15.0828% -1.26502 -16.7493);--surface:lab(2.99843% -.420302 -5.14475);--border:lab(23.2863% -1.87886 -14.1398);--border-faint:lab(11.7208% -1.33529 -10.5855);--border-strong:lab(37.1758% -2.4973 -17.7156);--text-primary:lab(88.3751% -.959426 -4.39417);--text-secondary:lab(53.5633% -1.2151 -5.82562);--text-muted:lab(35.0124% -.90912 -4.36813);--accent:lab(43.0104% 71.0982 26.0323);--gold:lab(75.8137% 12.5947 76.3239);--energy:lab(56.8352% -14.3149 -46.6277);--success:lab(69.679% -50.5618 42.4636);--danger:lab(45.5382% 69.8881 46.2994)}}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-ui);background:var(--bg-primary);color:var(--text-primary);touch-action:manipulation;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.55;overflow:hidden}#main{width:100%;height:100%}.app-container{flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.btn-guide-link{margin-top:var(--space-6);border:none;border-top:1px solid var(--border-faint);width:100%;color:var(--text-muted);font-family:var(--font-ui);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.45rem;padding:.7rem 0;font-size:.75rem;font-weight:600;transition:color .15s,border-color .15s;animation:.55s cubic-bezier(.16,1,.3,1) .3s both home-rise;display:flex}.btn-guide-link:hover{color:var(--text-secondary);border-color:var(--border)}.home-screen{background-image:radial-gradient(circle,rgba(42,57,77,.45) 1px,transparent 1px);background-image:radial-gradient(circle,lab(23.2863% -1.87886 -14.1398/.45) 1px,transparent 1px);background-size:28px 28px;justify-content:center;align-items:center;height:100%;padding:2rem;display:flex;position:relative}.home-content{text-align:center;z-index:1;width:100%;max-width:400px;position:relative}.stale-session-hint{color:var(--text-secondary);justify-content:center;align-items:center;gap:.75rem;margin-top:1.5rem;font-size:.85rem;display:flex}.btn-clear-session{border:1px solid var(--border);color:var(--text-muted);border-radius:var(--r-sm);font-family:var(--font-ui);letter-spacing:.04em;cursor:pointer;background:0 0;padding:.3rem .7rem;font-size:.75rem;font-weight:500;transition:border-color .15s,color .15s}.btn-clear-session:hover{border-color:var(--danger);color:var(--danger)}.home-logo{width:148px;height:148px;margin:0 auto var(--space-4);animation:.55s cubic-bezier(.16,1,.3,1) both home-rise;display:block}.game-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.03em;margin-bottom:var(--space-3);font-size:3.75rem;font-weight:800;line-height:.95;animation:.55s cubic-bezier(.16,1,.3,1) 70ms both home-rise}.game-subtitle{color:var(--text-muted);margin-bottom:var(--space-10);letter-spacing:.16em;text-transform:uppercase;justify-content:center;align-items:center;gap:.7rem;font-size:.72rem;font-weight:600;animation:.55s cubic-bezier(.16,1,.3,1) .13s both home-rise;display:flex}.game-subtitle:before,.game-subtitle:after{content:"";background:var(--border);flex:1;max-width:2.5rem;height:1px}.name-input-group{text-align:left;margin-bottom:1.5rem;animation:.55s cubic-bezier(.16,1,.3,1) .2s both home-rise}.code-input-group{text-align:left;margin-bottom:1.5rem}.name-input-group label,.code-input-group label{margin-bottom:var(--space-1);color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:600;display:block}input[type=text]{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-input);width:100%;color:var(--text-primary);font-family:var(--font-ui);outline:none;padding:.75rem 1rem;font-size:1rem;font-weight:500;transition:border-color .2s}input[type=number]{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-input);width:100%;color:var(--text-primary);font-family:var(--font-ui);outline:none;padding:.75rem 1rem;font-size:1rem;font-weight:500;transition:border-color .2s}input:focus{border-color:var(--accent)}input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.home-buttons{gap:var(--space-3);flex-direction:column;animation:.55s cubic-bezier(.16,1,.3,1) .25s both home-rise;display:flex}.join-section{animation:.2s slideIn}.btn{border-radius:var(--r-md);font-family:var(--font-ui);letter-spacing:.02em;cursor:pointer;border:none;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:opacity .15s,transform .15s,background .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#f8efef;color:lab(95.2523% 3.25876 1.01894);text-transform:uppercase;letter-spacing:.06em;font-size:.85rem}.btn-primary:hover:not(:disabled){background:#de1c4e;background:lab(48.8192% 71.1458 25.5208);transform:translateY(-1px)}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border);letter-spacing:.04em;background:0 0;font-size:.9rem}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong);color:var(--text-primary);background:rgba(16,27,41,.5);background:lab(9.38104% -1.20228 -11.2383/.5)}.btn-action{color:var(--text-primary);border-radius:var(--r-md);font-family:var(--font-ui);letter-spacing:.02em;width:100%;margin-bottom:var(--space-2);background:rgba(201,0,66,.1);background:lab(43.0104% 71.0982 26.0323/.1);border:1px solid rgba(201,0,66,.5);border:1px solid lab(43.0104% 71.0982 26.0323/.5);padding:.625rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s}.btn-action:hover:not(:disabled){border-color:var(--accent);background:rgba(201,0,66,.18);background:lab(43.0104% 71.0982 26.0323/.18)}.btn-back{border-radius:var(--r-md);color:var(--text-secondary);cursor:pointer;font-size:.85rem;font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;background:0 0;border:1px solid transparent;padding:.4rem .75rem;font-weight:600;transition:color .15s,border-color .15s}.btn-back:hover{color:var(--text-primary);border-color:var(--border)}.create-game-screen{flex-direction:column;height:100%;display:flex;overflow:hidden}.create-header{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.create-header h2{font-size:1.1rem}.create-map-container{flex:1;min-height:0;position:relative}.create-map-container .leaflet-container,.leaflet-dragging .create-map-container .leaflet-container{cursor:crosshair!important}.tac-marker{background:#c90042;background:lab(43.0104% 71.0982 26.0323);border:2.5px solid rgba(217,223,230,.85);border:2.5px solid lab(88.3751% -.959426 -4.39417/.85);border-radius:50%;width:20px;height:20px;transition:transform .1s,box-shadow .1s;box-shadow:0 0 0 3px rgba(201,0,66,.25),0 2px 8px rgba(0,0,0,.55);box-shadow:0 0 0 3px lab(43.0104% 71.0982 26.0323/.25),0 2px 8px lab(0% 0 0/.55)}.tac-marker:hover{transform:scale(1.2);box-shadow:0 0 0 5px rgba(201,0,66,.3),0 3px 12px rgba(0,0,0,.6);box-shadow:0 0 0 5px lab(43.0104% 71.0982 26.0323/.3),0 3px 12px lab(0% 0 0/.6)}.dioxus-leaflet-container{width:100%;height:100%}.game-map-container .dioxus-leaflet-container{position:absolute;inset:0}.map-overlay-info{color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--r-md);font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;z-index:1000;pointer-events:none;-webkit-backdrop-filter:blur(6px);background:rgba(5,12,20,.88);background:lab(2.99843% -.420302 -5.14475/.88);padding:.45rem 1rem;font-size:.75rem;font-weight:600;position:absolute;bottom:1rem;left:50%;transform:translate(-50%)}.btn-locate{z-index:1000;border-radius:var(--r-md);border:1px solid var(--border);width:2.5rem;height:2.5rem;color:var(--text-secondary);cursor:pointer;-webkit-backdrop-filter:blur(6px);background:rgba(5,12,20,.88);background:lab(2.99843% -.420302 -5.14475/.88);justify-content:center;align-items:center;font-size:1.1rem;transition:border-color .15s,color .15s;display:flex;position:absolute;top:.75rem;right:.75rem;box-shadow:0 2px 8px rgba(0,0,0,.45);box-shadow:0 2px 8px lab(0% 0 0/.45)}.btn-locate:hover{border-color:var(--border-strong);color:var(--text-primary)}.create-settings{background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;padding:1rem;overflow-y:auto}.setting-row{justify-content:space-between;align-items:center;margin-bottom:.8rem;display:flex}.setting-row label{color:var(--text-secondary);font-size:.85rem;font-weight:500}.setting-row input[type=number]{text-align:center;width:80px}.create-buttons{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.create-buttons .btn{flex:1;min-width:120px}@keyframes lobby-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes lobby-code-reveal{0%{opacity:0;letter-spacing:.6em;filter:blur(6px)}60%{filter:blur()}to{opacity:1;letter-spacing:.35em}}@keyframes pulse-ring{0%{box-shadow:0 0 rgba(233,177,13,.4);box-shadow:0 0 lab(75.8137% 12.5947 76.3239/.4)}70%{box-shadow:0 0 0 8px rgba(233,177,13,0);box-shadow:0 0 0 8px lab(75.8137% 12.5947 76.3239/0)}to{box-shadow:0 0 rgba(233,177,13,0);box-shadow:0 0 lab(75.8137% 12.5947 76.3239/0)}}@keyframes player-join{0%{opacity:0;transform:scale(.7)translateY(-4px)}60%{transform:scale(1.06)translateY(0)}to{opacity:1;transform:scale(1)}}@keyframes waiting-dots{0%,80%,to{opacity:.2;transform:scaleY(.6)}40%{opacity:1;transform:scaleY(1)}}@keyframes team-card-select{0%{transform:scale(1)}40%{transform:scale(.96)}to{transform:scale(1)}}@keyframes start-btn-pulse{0%,to{box-shadow:0 0 rgba(201,0,66,.5);box-shadow:0 0 lab(43.0104% 71.0982 26.0323/.5)}50%{box-shadow:0 0 0 6px rgba(201,0,66,0);box-shadow:0 0 0 6px lab(43.0104% 71.0982 26.0323/0)}}@keyframes home-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.lobby-screen *,.lobby-screen :before,.lobby-screen :after,.home-screen *,.home-screen :before,.home-screen :after,.guide-screen,.guide-screen *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.lobby-screen{flex-direction:column;height:100%;display:flex;overflow-y:auto}.lobby-header{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);animation:.35s cubic-bezier(.22,1,.36,1) both lobby-fade-up;display:flex}.lobby-code-display{text-align:center;padding:var(--space-8) var(--space-6) var(--space-6);background:var(--bg-card);margin:var(--space-4) var(--space-4) var(--space-2);border-radius:var(--r-md);border:1px solid var(--border);animation:.45s cubic-bezier(.22,1,.36,1) 50ms both lobby-fade-up}.code-label{color:var(--text-muted);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.12em;font-size:.7rem;font-weight:600;display:block}.code-value{font-family:var(--font-display);letter-spacing:.35em;color:var(--gold);font-size:3rem;font-weight:800;line-height:1;animation:.7s cubic-bezier(.22,1,.36,1) .15s backwards lobby-code-reveal}.lobby-error-wrap{padding:0 var(--space-4);margin-bottom:var(--space-2)}.teams-section,.lobby-players{padding:0 var(--space-4);margin-bottom:1rem;animation:.45s cubic-bezier(.22,1,.36,1) .15s both lobby-fade-up}.teams-section h3,.lobby-players h3{margin-bottom:.8rem;font-size:1rem}.teams-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem;display:grid}.team-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--space-4);cursor:pointer;transition:border-color .2s cubic-bezier(.22,1,.36,1),background .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s cubic-bezier(.22,1,.36,1)}.team-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.35);box-shadow:0 6px 20px lab(0% 0 0/.35)}.team-card.selected{border-color:var(--accent);background:rgba(201,0,66,.08);background:lab(43.0104% 71.0982 26.0323/.08);animation:.25s cubic-bezier(.22,1,.36,1) team-card-select}.team-card:active{box-shadow:none;transform:scale(.97)translateY(0)}.team-color-dot{border-radius:50%;width:24px;height:24px;margin-bottom:.5rem;transition:transform .2s cubic-bezier(.22,1,.36,1)}.team-card.selected .team-color-dot{animation:2s cubic-bezier(.22,1,.36,1) infinite pulse-ring}.team-name{margin-bottom:.5rem;font-weight:600;display:block}.team-players{flex-wrap:wrap;gap:4px;display:flex}.player-badge{background:var(--bg-secondary);border-radius:var(--r-sm);letter-spacing:.02em;padding:2px 6px;font-size:.75rem;animation:.3s cubic-bezier(.22,1,.36,1) both player-join}.player-badge.unassigned{background:var(--border)}.lobby-actions{padding:var(--space-4);background:var(--bg-primary);border-top:1px solid var(--border);flex-direction:column;align-items:flex-end;animation:.45s cubic-bezier(.22,1,.36,1) .25s both lobby-fade-up;display:flex;position:sticky;bottom:0}.lobby-actions .btn-primary:not(:disabled){animation:2.5s cubic-bezier(.22,1,.36,1) 1s infinite start-btn-pulse}.lobby-warning{margin:0 0 var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--r-md);color:var(--gold);text-align:center;background:rgba(233,177,13,.1);background:lab(75.8137% 12.5947 76.3239/.1);border:1px solid rgba(233,177,13,.35);border:1px solid lab(75.8137% 12.5947 76.3239/.35);align-self:stretch;font-size:.85rem;font-weight:500}.lobby-waiting{padding:var(--space-3) 0 var(--space-1);color:var(--text-muted);font-size:.75rem;font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;justify-content:center;align-items:center;gap:5px;display:flex}.lobby-waiting-dot{background:var(--text-muted);border-radius:2px;width:3px;height:12px;animation:1.4s ease-in-out infinite waiting-dots}.lobby-waiting-dot:nth-child(2){animation-delay:.16s}.lobby-waiting-dot:nth-child(3){animation-delay:.32s}.lobby-waiting-dot:nth-child(4){animation-delay:.48s}.game-screen{flex-direction:column;height:100%;display:flex;position:relative}.game-map-container{flex:1;position:relative}.map-loading{color:var(--text-secondary);background:var(--bg-primary);z-index:1;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.hud{padding:var(--space-2) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:1001;justify-content:space-between;align-items:center;min-height:44px;display:flex}.hud-left{gap:var(--space-3);align-items:center;display:flex}.hud-stat{font-family:var(--font-display);letter-spacing:.02em;font-size:.875rem;font-weight:600}.hud-stat.gold{color:var(--gold)}.hud-stat.energy{color:var(--energy);padding-left:var(--space-3);border-left:1px solid var(--border)}.hud-stat.gold-rate{color:var(--success)}.phase-indicator{letter-spacing:.08em;text-transform:uppercase;border-radius:var(--r-sm);border:1px solid var(--border);color:var(--text-muted);background:0 0;padding:2px 6px;font-size:.72rem;font-weight:600}.phase-indicator.running{color:var(--success);background:rgba(0,121,43,.15);background:lab(43.9237% -47.5444 35.7537/.15);border-color:rgba(0,121,43,.6);border-color:lab(43.9237% -47.5444 35.7537/.6)}.bottom-toolbar{background:var(--bg-secondary);border-top:1px solid var(--border);z-index:1001;gap:0;display:flex}.bottom-toolbar>*{flex:1;justify-content:center;align-items:center;min-width:0;padding:.8rem;display:flex}.toolbar-btn{color:var(--text-secondary);font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border:none;border-right:1px solid var(--border);background:0 0;font-size:.72rem;font-weight:600;transition:color .15s,background .15s}.toolbar-btn:hover{color:var(--text-primary)}.toolbar-btn:last-child{border-right:none}.toolbar-btn:active{background:var(--bg-card);color:var(--text-primary)}.hex-panel{background:var(--bg-secondary);border-top:1px solid var(--border-strong);border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding:var(--space-4);z-index:1002;max-height:55vh;animation:.18s cubic-bezier(.16,1,.3,1) slideUp;position:absolute;bottom:48px;left:0;right:0;overflow-y:auto}.hex-panel-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.hex-panel-header h3{font-size:1rem}.panel-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0 .5rem;font-size:1.5rem}.hex-info-row{padding:var(--space-1) 0;border-bottom:1px solid var(--border-faint);justify-content:space-between;display:flex}.info-label{color:var(--text-secondary);font-size:.85rem}.info-value{font-size:.85rem;font-weight:600}.info-value.active{color:var(--success)}.info-value.inactive{color:var(--danger)}.badge-base{color:var(--gold);font-weight:700}.hex-panel-actions{flex-direction:column;gap:.5rem;margin-top:1rem;display:flex}.conn-wizard{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--space-3);gap:var(--space-2);background:rgba(16,27,41,.5);background:lab(9.38104% -1.20228 -11.2383/.5);flex-direction:column;display:flex}.conn-wizard-header{justify-content:space-between;align-items:center;font-size:.9rem;font-weight:600;display:flex}.conn-cancel{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0 .4rem;font-size:1.1rem}.btn-neighbor{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text-primary);padding:var(--space-2) var(--space-3);font-family:var(--font-ui);cursor:pointer;text-align:left;width:100%;font-size:.82rem;transition:border-color .15s,background .15s}.btn-neighbor:hover{border-color:var(--border-strong)}.btn-neighbor:active{background:#03162e;background:lab(6.8791% .450157 -18.8375)}.conn-direction-row{gap:.4rem;display:flex}.btn-dir{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-secondary);font-family:var(--font-ui);cursor:pointer;flex:1;padding:.4rem;font-size:.75rem;font-weight:500;transition:border-color .15s,background .15s}.btn-dir.active{background:var(--energy);color:#fff;border-color:var(--energy);font-weight:700}.conn-flow-config{flex-direction:column;gap:.3rem;display:flex}.conn-flow-labels{justify-content:space-between;font-size:.82rem;display:flex}.conn-avail{color:var(--text-secondary)}.connection-summary-row{border-bottom:1px solid rgba(255,255,255,.04);align-items:center;gap:.5rem;padding:.25rem 0;font-size:.8rem;display:flex}.conn-out{color:#f39c12}.conn-in{color:var(--energy)}.hex-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:var(--space-4) 0 var(--space-2);font-size:.75rem;font-weight:700}.conn-cap{color:var(--text-secondary);font-size:.72rem}.conn-label{font-weight:600}.step-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-sheet);align-items:center;gap:0;display:flex;overflow:hidden}.step-btn{color:var(--text-primary);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:2.2rem;height:2.2rem;font-size:1.1rem;font-weight:700;display:flex}.step-btn:active{background:var(--bg-secondary)}.step-value{text-align:center;white-space:nowrap;flex:1;min-width:3rem;padding:0 .3rem;font-size:.85rem;font-weight:600}.energy-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);width:5rem;color:var(--text-primary);padding:.3rem .5rem;font-size:.85rem}.treasure-row .info-label{color:var(--gold)}.treasure-row .info-value{color:var(--gold);font-weight:700}.btn-treasure{background:var(--gold);color:#090501;color:lab(1.5716% .486493 2.02143);border-radius:var(--r-md);font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:none;width:100%;padding:.6rem 1rem;font-size:.85rem;font-weight:700;transition:filter .15s}.btn-treasure:hover:not(:disabled){filter:brightness(1.1)}.btn-danger{background:var(--danger);color:#f8efee;color:lab(95.2683% 3.05608 1.64289);border-radius:var(--r-md);font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:none;width:100%;padding:.6rem 1rem;font-size:.85rem;font-weight:700;transition:filter .15s}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.btn-danger.disabled,.btn-danger:disabled{opacity:.5;cursor:not-allowed}.enemy-label{color:#e74c3c;font-size:.95rem;font-weight:700}.inventory-icon{font-size:1rem}.chat-panel{background:var(--bg-secondary);border-top:1px solid var(--border-strong);border-radius:var(--r-sheet) var(--r-sheet) 0 0;z-index:1003;flex-direction:column;height:50vh;animation:.18s cubic-bezier(.16,1,.3,1) slideUp;display:flex;position:absolute;bottom:48px;left:0;right:0}.chat-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.8rem 1rem;display:flex}.chat-messages{flex:1;padding:.5rem 1rem;overflow-y:auto}.chat-message{margin-bottom:.5rem;font-size:.85rem}.chat-sender{color:var(--accent);font-weight:700}.chat-input-row{border-top:1px solid var(--border);gap:.5rem;padding:.5rem;display:flex}.chat-input-row input{flex:1}.btn-send{background:var(--accent);color:#f8efee;color:lab(95.2683% 3.05608 1.64289);border-radius:var(--r-md);cursor:pointer;border:none;padding:.5rem 1rem;font-size:1rem;transition:background .15s}.btn-send:hover:not(:disabled){background:#de1c4e;background:lab(48.8192% 71.1458 25.5208)}.phase-banner{backdrop-filter:blur(4px);color:var(--text-primary);padding:var(--space-2) var(--space-5);font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;z-index:1001;pointer-events:none;white-space:nowrap;background:rgba(0,3,18,.94);background:lab(.70817% 1.92937 -10.3477/.94);border:1px solid rgba(112,130,152,.5);border:1px solid lab(53.4817% -2.54229 -14.3502/.5);border-radius:0;font-size:.8rem;font-weight:600;position:absolute;top:60px;left:50%;transform:translate(-50%)}.conn-pick-banner{pointer-events:all;align-items:center;gap:var(--space-2);white-space:nowrap;color:var(--gold);background:rgba(10,5,0,.94);background:lab(1.53545% 2.20238 3.44973/.94);border-color:rgba(233,177,13,.6);border-color:lab(75.8137% 12.5947 76.3239/.6);display:flex}.game-over-banner{pointer-events:none;border:1px solid var(--gold);color:var(--gold);letter-spacing:.12em;background:rgba(0,3,14,.96);background:lab(.816063% .521831 -5.58997/.96);font-size:.9rem}.test-mode-badge{color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--r-sm);z-index:1001;pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:rgba(1,9,25,.92);background:lab(2.351% .232108 -9.62863/.92);border:1px solid rgba(70,87,108,.6);border:1px solid lab(36.0665% -2.25735 -14.251/.6);max-width:240px;padding:3px 7px;font-size:.65rem;font-weight:600;position:absolute;bottom:56px;right:8px;overflow:hidden}.gps-badge{color:var(--success);border-color:rgba(0,121,43,.4);border-color:lab(43.9237% -47.5444 35.7537/.4)}.toolbar-btn.disabled{opacity:.4;cursor:not-allowed}.error-toast{background:var(--bg-secondary);border:1px solid rgba(212,9,36,.5);border:1px solid lab(45.5382% 69.8881 46.2994/.5);border-left:3px solid var(--danger);color:var(--text-primary);padding:var(--space-3) var(--space-4);border-radius:var(--r-md);z-index:2000;align-items:center;gap:var(--space-3);white-space:normal;word-break:break-word;max-width:calc(100vw - 3rem);font-size:.85rem;font-weight:500;animation:.2s cubic-bezier(.22,1,.36,1) slideUp;display:flex;position:absolute;bottom:60px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px rgba(0,0,0,.4);box-shadow:0 4px 16px lab(0% 0 0/.4)}.error-toast:before{content:"!";background:var(--danger);color:#f8efee;color:lab(95.2683% 3.05608 1.64289);width:18px;height:18px;font-size:.65rem;font-weight:800;font-family:var(--font-ui);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toast-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;font-size:1.1rem;line-height:1;transition:color .15s}.toast-close:hover{color:var(--text-primary)}.error-message{align-items:flex-start;gap:var(--space-2);border:1px solid rgba(212,9,36,.4);border:1px solid lab(45.5382% 69.8881 46.2994/.4);border-left:3px solid var(--danger);color:var(--text-primary);padding:var(--space-3) var(--space-4);border-radius:var(--r-md);margin-bottom:var(--space-2);background:rgba(212,9,36,.08);background:lab(45.5382% 69.8881 46.2994/.08);font-size:.85rem;line-height:1.5;animation:.2s cubic-bezier(.22,1,.36,1) slideIn;display:flex}.error-message:before{content:"!";background:var(--danger);color:#f8efee;color:lab(95.2683% 3.05608 1.64289);width:16px;height:16px;font-size:.65rem;font-weight:800;font-family:var(--font-ui);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:flex}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.leave-confirm-overlay{z-index:3000;background:rgba(0,0,0,.7);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.leave-confirm-dialog{background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--r-lg);padding:var(--space-6);text-align:center;width:284px}.leave-confirm-dialog p{margin-bottom:1rem;font-size:1rem}.leave-confirm-buttons{justify-content:center;gap:.5rem;display:flex}.btn-danger{background:var(--danger);color:#fff}.btn-warning{color:#120904;color:lab(3.00361% 2.40424 2.80357);letter-spacing:.04em;background:#cf6400;background:lab(54.7861% 46.4519 104.283);font-weight:600}.scan-result-msg{border-radius:var(--r-md);padding:var(--space-2) var(--space-3);color:var(--text-primary);margin-bottom:var(--space-2);text-align:center;background:rgba(33,113,204,.1);background:lab(46.6477% 2.39781 -55.0026/.1);border:1px solid rgba(33,113,204,.4);border:1px solid lab(46.6477% 2.39781 -55.0026/.4);font-size:.85rem}.config-locked-hint{color:var(--text-secondary);text-align:center;opacity:.7;padding:.4rem .5rem;font-size:.8rem}.toast-notification{background:var(--danger);color:#f8efee;color:lab(95.2683% 3.05608 1.64289);border-radius:var(--r-md);padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-3);z-index:5000;letter-spacing:.01em;max-width:90vw;font-size:.9rem;font-weight:500;display:flex;position:fixed;top:72px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px rgba(0,0,0,.5);box-shadow:0 4px 20px lab(0% 0 0/.5)}.toast-close{color:#fff;cursor:pointer;opacity:.8;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.hex-labels-container{pointer-events:none;z-index:500;transition:opacity .12s ease-out;position:absolute;inset:0;overflow:visible}.leaflet-dragging .hex-labels-container,.leaflet-moving .hex-labels-container{opacity:0;transition:none}.hex-label-wrap{pointer-events:none;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:absolute;transform:translate(-50%,-50%)}.hex-label-energy{font-family:var(--font-display);color:#fff;text-shadow:0 0 4px #000,0 0 8px #000;letter-spacing:.04em;font-size:11px;font-weight:600;line-height:1}.hex-label-energy.low{color:#ffc4c8;color:lab(83.8769% 64.8724 21.7124);text-shadow:0 0 4px #0a0000,0 0 10px rgba(138,0,41,.5);text-shadow:0 0 4px lab(.303539% 7.93977 .825948),0 0 10px lab(27.8973% 70.929 28.7678/.5);animation:2s ease-in-out infinite hex-label-critical}.hex-label-energy.high{color:#ffe395;color:lab(92.1347% 9.2968 60.2017);text-shadow:0 0 4px #060300,0 0 10px rgba(130,92,0,.5);text-shadow:0 0 4px lab(.87598% 1.72236 2.09624),0 0 10px lab(41.9321% 16.5072 101.341/.5)}.hex-label-wrap.is-base .hex-label-energy{animation:3s ease-in-out infinite hex-base-pulse}.hex-label-wrap.is-selected .hex-label-energy{animation:1.2s cubic-bezier(.4,0,.6,1) infinite hex-selected-beacon!important}.hex-label-badge{font-family:var(--font-display);color:var(--text-secondary);border-radius:var(--r-sm);text-shadow:none;white-space:nowrap;letter-spacing:.03em;background:rgba(0,5,20,.85);background:lab(1.45416% .408307 -7.47158/.85);border:1px solid rgba(57,73,93,.5);border:1px solid lab(30.2588% -2.11239 -14.2059/.5);padding:1px 4px;font-size:8px;font-weight:700;line-height:1.3;position:absolute;top:-10px;right:-18px}.hex-label-badge.level-high{color:var(--gold);background:rgba(16,7,0,.85);background:lab(2.45898% 2.70638 5.15775/.85);border-color:rgba(164,120,0,.6);border-color:lab(53.6939% 11.9807 75.6764/.6)}.hex-label-detail{font-family:var(--font-display);letter-spacing:.02em;white-space:nowrap;text-shadow:0 0 3px #000,0 0 6px #000;align-items:center;gap:4px;font-size:8px;font-weight:500;line-height:1;display:flex}.hex-detail-in{color:#6bc670;color:lab(72.8361% -42.0397 34.49)}.hex-detail-out{color:#f09080;color:lab(69.9345% 36.2033 24.7888)}.hex-detail-gold{color:#f8c655;color:lab(82.8261% 9.77922 61.542)}@keyframes hex-base-pulse{0%,to{text-shadow:0 0 4px #000,0 0 8px #000,0 0 14px rgba(0,110,219,.2);text-shadow:0 0 4px lab(0% 0 0),0 0 8px lab(0% 0 0),0 0 14px lab(46.0394% 8.56912 -68.4233/.2)}50%{text-shadow:0 0 4px #000,0 0 8px #000,0 0 18px rgba(40,142,255,.55);text-shadow:0 0 4px lab(0% 0 0),0 0 8px lab(0% 0 0),0 0 18px lab(57.5884% 7.28574 -75.3641/.55)}}@keyframes hex-selected-beacon{0%,to{text-shadow:0 0 4px #000,0 0 8px #000,0 0 16px rgba(69,159,255,.5);text-shadow:0 0 4px lab(0% 0 0),0 0 8px lab(0% 0 0),0 0 16px lab(63.2002% 8.35437 -82.1945/.5)}50%{text-shadow:0 0 3px #000,0 0 6px #000,0 0 22px rgba(139,193,255,.9);text-shadow:0 0 3px lab(0% 0 0),0 0 6px lab(0% 0 0),0 0 22px lab(74.7364% 7.26679 -89.1424/.9)}}@keyframes hex-label-critical{0%,to{opacity:1}50%{opacity:.55}}.energy-transfer-row{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--space-3) var(--space-3) var(--space-2);margin-bottom:var(--space-3);background:rgba(5,18,35,.6);background:lab(5.09439% -.308447 -13.0889/.6)}.energy-slider-row{gap:var(--space-1);flex-direction:column;display:flex}.energy-slider-labels{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-1);justify-content:space-between;font-size:.7rem;font-weight:600;display:flex}.flow-slider{width:100%;accent-color:var(--energy);cursor:pointer;appearance:none;background:var(--border);border-radius:2px;outline:none;height:4px}.flow-slider::-webkit-slider-thumb{appearance:none;border-radius:var(--r-sm);background:var(--energy);cursor:pointer;border:2px solid #132946;border:2px solid lab(16.1414% -.800431 -20.8115);width:16px;height:16px}.flow-slider::-moz-range-thumb{border-radius:var(--r-sm);background:var(--energy);cursor:pointer;border:2px solid #132946;border:2px solid lab(16.1414% -.800431 -20.8115);width:16px;height:16px}.energy-slider-value{text-align:center;font-family:var(--font-display);color:var(--energy);letter-spacing:.05em;margin-top:var(--space-1);font-size:1.1rem;font-weight:700}.hack-select-header{color:var(--text-secondary);justify-content:space-between;align-items:center;padding:.4rem 0;font-size:.85rem;display:flex}.hack-conn-btn{text-align:left;padding:.5rem .75rem;font-size:.85rem}.hack-progress-overlay{z-index:1010;background:rgba(15,52,96,.97);border-top:2px solid #e74c3c;flex-direction:column;gap:.4rem;padding:.6rem 1rem;display:flex;position:fixed;bottom:56px;left:0;right:0}.hack-progress-header{justify-content:space-between;align-items:center;display:flex}.hack-status-label{color:#e74c3c;font-size:.9rem;font-weight:700}.hack-stop-btn{color:#e74c3c;cursor:pointer;background:rgba(231,76,60,.2);border:1px solid #e74c3c;border-radius:6px;padding:.25rem .75rem;font-size:.8rem}.hack-progress-bar-wrap{background:rgba(255,255,255,.1);border-radius:3px;height:6px;overflow:hidden}.hack-progress-bar{background:linear-gradient(90deg,#e74c3c,#ff6b6b);border-radius:3px;height:100%;transition:width .5s}.hack-progress-stats{color:var(--text-secondary);gap:1.5rem;font-size:.8rem;display:flex}.hex-label-intel{color:#f99;text-shadow:0 0 3px #000,0 0 6px #000;letter-spacing:.02em;font-size:11px;font-weight:700;line-height:1}.hex-label-intel.frozen{color:#888;opacity:.7}.btn-warn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#8e44ad,#6c3483);border:none;border-radius:8px;width:100%;padding:.6rem 1rem;font-size:.9rem;font-weight:700}.btn-warn.disabled,.btn-warn:disabled{opacity:.5;cursor:not-allowed}.btn-end-game{color:#fff!important;background:rgba(180,30,30,.85)!important;border:1px solid #e74c3c!important}.btn-end-game:hover{background:#c0392b!important}.confirm-overlay{z-index:2000;background:rgba(0,0,0,.6);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.confirm-dialog{background:var(--bg-card);border:1px solid var(--gold);border-radius:var(--r-lg);padding:var(--space-6) var(--space-8);text-align:center;max-width:320px;color:var(--text-primary)}.confirm-dialog p{margin:0 0 .5rem;font-size:1.05rem;font-weight:600}.confirm-sub{color:#aaa;font-size:.85rem!important;font-weight:400!important}.confirm-buttons{justify-content:center;gap:.75rem;margin-top:1rem;display:flex}.confirm-buttons .btn{flex:1;min-width:0}.scoreboard-overlay{z-index:1500;pointer-events:all;background:rgba(0,0,0,.7);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.scoreboard{background:var(--bg-card);border:1px solid var(--gold);border-radius:var(--r-lg);padding:var(--space-5) var(--space-6);min-width:280px;max-width:90vw;position:relative;overflow-x:auto}.scoreboard-close{color:#aaa;cursor:pointer;background:0 0;border:none;font-size:1.2rem;line-height:1;position:absolute;top:.5rem;right:.7rem}.scoreboard-close:hover{color:#fff}.scoreboard-title{text-align:center;font-family:var(--font-display);color:var(--gold);margin:0 0 var(--space-4);letter-spacing:.08em;text-transform:uppercase;font-size:1.1rem;font-weight:700}.scoreboard-table{border-collapse:collapse;color:#ddd;width:100%;font-size:.85rem}.scoreboard-table th,.scoreboard-table td{text-align:center;white-space:nowrap;padding:.35rem .7rem}.scoreboard-cat{color:#aaa;padding-right:1rem;font-weight:600;text-align:left!important}.scoreboard-team{color:#fff;padding-bottom:.4rem;font-weight:700}.scoreboard-val.best{color:var(--gold);font-weight:700}.scoreboard-sum td{border-top:1px solid #444;padding-top:.5rem;font-weight:700}.scoreboard-rank td{font-size:1rem}.scoreboard-rank .best{font-size:1.15rem}.guide-screen{flex-direction:column;height:100%;animation:.35s cubic-bezier(.16,1,.3,1) both home-rise;display:flex;overflow:hidden}.guide-header{border-bottom:1px solid var(--border);background:var(--bg-secondary);align-items:center;gap:1rem;padding:1rem;display:flex}.guide-back{flex-shrink:0}.guide-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:1.15rem;font-weight:700}.guide-content{-webkit-overflow-scrolling:touch;counter-reset:guide-section;flex:1;padding:1rem 1.2rem 3rem;overflow-y:auto}.guide-content h2{font-family:var(--font-display);color:var(--text-primary);border-bottom:1px solid var(--border);letter-spacing:.07em;text-transform:uppercase;counter-increment:guide-section;align-items:baseline;gap:.55rem;margin:2rem 0 .6rem;padding-bottom:.4rem;font-size:.82rem;display:flex}.guide-content h2:before{content:counter(guide-section, decimal-leading-zero);font-family:var(--font-display);color:var(--accent);letter-spacing:.04em;flex-shrink:0;font-size:.95em;font-weight:600}.guide-content h2:first-of-type{margin-top:1.2rem}.guide-content h3{color:var(--text-primary);margin:1rem 0 .3rem;font-size:.95rem}.guide-content p{color:var(--text-secondary);margin:.3rem 0 .6rem;font-size:.88rem;line-height:1.5}.guide-content ul,.guide-content ol{color:var(--text-secondary);margin:.3rem 0 .8rem;padding-left:1.4rem;font-size:.88rem;line-height:1.6}.guide-intro{color:var(--text-primary)!important;font-size:.92rem!important}.guide-hint{border-radius:0 var(--r-md) var(--r-md) 0;background:rgba(35,6,10,.5);background:lab(4.86002% 13.9014 3.37582/.5);border:1px solid rgba(201,0,66,.2);border:1px solid lab(43.0104% 71.0982 26.0323/.2);border-left:2px solid oklch(53% .22 15/.65);padding:.625rem .875rem;font-size:.82rem!important}.guide-highlight{border-radius:0 var(--r-md) var(--r-md) 0;background:rgba(40,26,0,.45);background:lab(10.6636% 7.01235 20.6233/.45);border:1px solid rgba(233,177,13,.2);border:1px solid lab(75.8137% 12.5947 76.3239/.2);border-left:2px solid oklch(79% .16 85/.75);padding:.625rem .875rem;font-size:.82rem!important}.guide-card{background:var(--bg-secondary);border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:0 var(--r-md) var(--r-md) 0;padding:var(--space-3) var(--space-4);margin:var(--space-2) 0}.guide-card h4{color:var(--text-primary);margin:0 0 .3rem;font-size:.95rem}.guide-card p{margin:0}.guide-table{border-collapse:collapse;width:100%;color:var(--text-secondary);margin:.5rem 0 1rem;font-size:.82rem}.guide-table th{text-align:left;color:var(--text-primary);border-bottom:1px solid var(--border);padding:.4rem .6rem;font-weight:600}.guide-table td{border-bottom:1px solid rgba(255,255,255,.05);padding:.35rem .6rem}.guide-legend{flex-wrap:wrap;gap:.5rem 1.2rem;margin:.5rem 0 1rem;display:flex}.guide-legend-item{color:var(--text-secondary);align-items:center;gap:.4rem;font-size:.82rem;display:flex}.legend-swatch{border-radius:3px;flex-shrink:0;width:16px;height:16px;display:inline-block}.admin-screen{height:100%;color:var(--text-primary);flex-direction:column;padding:1rem;display:flex;overflow-y:auto}.admin-header{align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.admin-header h1{margin:0;font-size:1.4rem}.admin-loading,.admin-empty,.admin-error{text-align:center;color:var(--text-secondary);padding:2rem}.admin-error{color:#ff6b6b}.admin-table{border-collapse:collapse;width:100%;font-size:.9rem}.admin-table th{text-align:left;border-bottom:2px solid var(--border);color:var(--text-secondary);padding:.5rem .8rem;font-weight:600}.admin-table td{border-bottom:1px solid var(--border);padding:.5rem .8rem}.admin-row{cursor:pointer;transition:background .15s}.admin-row:hover{background:rgba(255,255,255,.05)}.admin-code{font-family:var(--font-display);letter-spacing:.15em;color:var(--gold);font-size:.9rem;font-weight:700}.observer-screen{height:100%;color:var(--text-primary);flex-direction:column;display:flex}.observer-header{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}.observer-title{font-size:1.1rem;font-weight:700}.observer-phase{color:var(--text-secondary);margin-left:auto;font-size:.9rem}.observer-team-hud{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;gap:.5rem;padding:.5rem 1rem;display:flex;overflow-x:auto}.observer-team-card{background:rgba(255,255,255,.04);border-radius:6px;flex-direction:column;min-width:100px;padding:.4rem .8rem;display:flex}.observer-team-name{margin-bottom:.2rem;font-size:.85rem;font-weight:600}.observer-team-stats{color:var(--text-secondary);gap:.6rem;font-size:.8rem;display:flex}.observer-map-container{flex:1;min-height:0;position:relative}.observer-map-container .dioxus-leaflet-container{position:absolute;inset:0}.observer-map-loading{z-index:1000;background:var(--surface);color:var(--text-secondary);justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:absolute;inset:0}.observer-loading,.observer-error{text-align:center;color:var(--text-secondary);padding:2rem}.observer-error{color:#ff6b6b}.observer-hex-panel{background:var(--surface);border-top:1px solid var(--border);z-index:1001;padding:1rem;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -4px 12px rgba(0,0,0,.5)}.observer-hex-panel h3{margin:0 0 .5rem}.observer-hex-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:1.2rem;position:absolute;top:.5rem;right:.5rem}.observer-hex-detail p{margin:.2rem 0;font-size:.9rem}.observer-scoreboard{background:var(--surface);border-top:1px solid var(--border);padding:1rem}.observer-scoreboard h2{margin:0 0 .5rem;font-size:1.1rem}