@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--color-plain:#a7f3d0;--color-mountain:#065f46;--color-water:#3b82f6;--color-ghost:#80808080;--color-start:#ef4444;--color-end:#10b981;--color-bg:#1e293b;--color-text:#f8fafc;--color-border:#334155;--color-road:#475569;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}body{-webkit-user-select:none;user-select:none;justify-content:center;place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex}#root{text-align:center;width:100%;max-width:1280px;margin:0 auto;padding:2rem}.buff-selector-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.buff-selector{background:var(--color-bg);border:1px solid var(--color-border);text-align:center;border-radius:12px;max-width:600px;padding:2rem;box-shadow:0 20px 25px -5px #0000001a}.buff-selector h2{color:#10b981;margin-top:0}.buff-options{flex-direction:column;gap:12px;margin-top:1.5rem;display:flex}.buff-options button{color:#fff;cursor:pointer;text-align:left;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;padding:1rem;transition:all .2s}.buff-options button h3{color:#fbbf24;margin:0 0 4px}.buff-options button p{color:#94a3b8;margin:0;font-size:.875rem}.buff-options button:hover{background:#3b82f633;border-color:#3b82f6;transform:translate(4px)}.game-hud{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);z-index:100;background:#1e293bcc;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;top:0;box-shadow:0 4px 6px -1px #0000001a}.hud-part{align-items:center;gap:12px;display:flex}.hud-icon{color:#94a3b8}.hud-info{flex-direction:column;align-items:flex-start;display:flex}.hud-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.hud-value{color:var(--color-text);font-size:1.25rem;font-weight:700}.mana-text{color:#fbbf24}.score-part{text-align:right;align-items:flex-end;min-width:100px;margin-left:auto}.score-part .hud-info{align-items:flex-end}.map-tile{-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:8px;width:100%;height:100%;transition:all .2s;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #0000001a}.map-tile:hover{z-index:10;transform:scale(1.05);box-shadow:0 4px 12px #0000004d}.terrain-plain{background-color:var(--color-plain)}.terrain-mountain{background-color:var(--color-mountain)}.terrain-water{background-color:var(--color-water)}.is-ghost-point{background-color:var(--color-ghost);z-index:5;border:3px solid #ffffff4d;border-radius:50%;width:24px;height:24px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.point-indicator{z-index:5;border-radius:50%;width:24px;height:24px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px #00000080}.is-start{background-color:var(--color-start);border:3px solid #fff}.is-end{background-color:var(--color-end);border:3px solid #fff}.tile-svg{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.connection-line{stroke:var(--color-road);stroke-width:16px;stroke-linecap:round;stroke-linejoin:round;fill:none}.facility-roundabout{border:8px solid var(--color-road);background-color:var(--color-plain);z-index:3;border-radius:50%;width:28px;height:28px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.facility-overpass{background-color:var(--color-road);z-index:4;width:32px;height:32px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:2px 2px 4px #0006}.edge-node{z-index:20;background-color:#fbbf2466;border:2px solid #fbbf24cc;border-radius:50%;width:20px;height:20px;transition:all .2s;position:absolute}.edge-node:hover{background-color:#fbbf24;transform:scale(1.3)}.edge-top{top:-10px;left:50%;transform:translate(-50%)}.edge-bottom{bottom:-10px;left:50%;transform:translate(-50%)}.edge-left{top:50%;left:-10px;transform:translateY(-50%)}.edge-right{top:50%;right:-10px;transform:translateY(-50%)}.edge-top:hover,.edge-bottom:hover{transform:translate(-50%)scale(1.3)}.edge-left:hover,.edge-right:hover{transform:translateY(-50%)scale(1.3)}.pending-indicator{color:#1e293b;pointer-events:none;z-index:500;background:#fbbf24;border-radius:20px;padding:8px 16px;font-weight:700;animation:1.5s infinite pulse;position:fixed;bottom:240px;left:50%;transform:translate(-50%);box-shadow:0 4px 6px #0003}@keyframes pulse{0%{opacity:.8;transform:translate(-50%)scale(1)}50%{opacity:1;transform:translate(-50%)scale(1.05)}to{opacity:.8;transform:translate(-50%)scale(1)}}.error-indicator{color:#fff;pointer-events:none;z-index:500;background:#ef4444;border-radius:20px;padding:8px 16px;font-weight:700;animation:.4s ease-in-out shake;position:fixed;bottom:240px;left:50%;transform:translate(-50%);box-shadow:0 4px 6px #0003}@keyframes shake{0%,to{transform:translate(-50%)}25%{transform:translate(calc(-50% - 10px))}75%{transform:translate(calc(10px - 50%))}}.map-container{background-color:var(--color-bg);justify-content:center;align-items:center;width:100%;height:calc(100vh - 80px);padding-bottom:240px;display:flex;position:relative;overflow:auto}.map-grid{transform-origin:50%;background-color:#ffffff0d;border-radius:8px;gap:2px;padding:4px;transition:transform .3s;display:grid}.map-container::-webkit-scrollbar{display:none}.map-container{-ms-overflow-style:none;scrollbar-width:none}.card-item{cursor:pointer;background:linear-gradient(145deg,#2a3b52,#1e293b);border:2px solid #0000;border-radius:12px;flex-direction:column;width:140px;height:200px;padding:12px;transition:all .2s cubic-bezier(.175,.885,.32,1.275);display:flex;position:relative;box-shadow:0 4px 6px -1px #0003,0 2px 4px -1px #0000001a}.card-item:hover{z-index:10;transform:translateY(-16px)scale(1.05);box-shadow:0 10px 15px -3px #0000004d}.card-item.selected{z-index:20;border-color:#fbbf24;transform:translateY(-24px)scale(1.1);box-shadow:0 0 20px #fbbf2466}.card-cost{color:#fbbf24;background:#00000080;border-radius:12px;align-items:center;gap:4px;padding:4px 8px;font-size:.875rem;font-weight:700;display:flex;position:absolute;top:8px;right:8px}.card-name{text-shadow:1px 1px 2px #00000080;margin:20px 0 4px;font-size:1.125rem}.card-type-label{color:#fff9;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:.65rem}.card-desc{color:#fffc;background:#0003;border-radius:6px;flex:1;padding:8px;font-size:.75rem;line-height:1.4}.card-road{border-top:4px solid var(--color-plain)}.card-bridge{border-top:4px solid var(--color-water)}.card-tunnel{border-top:4px solid var(--color-mountain)}.card-facility{border-top:4px solid #f59e0b}.card-demolish{border-top:4px solid #ef4444}.card-special{border-top:4px solid #a855f7}.card-area{pointer-events:none;background:linear-gradient(#0000 0%,#0f172ab3 30%,#0f172af2 100%);justify-content:space-between;align-items:flex-end;height:220px;padding:0 40px 20px;display:flex;position:fixed;bottom:0;left:0;right:0}.card-area>*{pointer-events:auto}.hand-container{justify-content:center;align-items:flex-end;gap:-20px;margin-bottom:10px;display:flex}.hand-container .card-item{margin-left:-40px}.hand-container .card-item:first-child{margin-left:0}.piles-info{border:1px solid var(--color-border);color:#94a3b8;background:#1e293be6;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;width:80px;height:100px;margin-bottom:30px;display:flex}.pile-count{color:var(--color-text);margin:4px 0;font-size:1.5rem;font-weight:700}.pile-label{font-size:.7rem}.action-piles{align-items:flex-end;gap:20px;display:flex}.end-turn-btn{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:12px;align-items:center;gap:8px;height:60px;margin-bottom:30px;padding:0 24px;font-size:1rem;font-weight:600;transition:all .2s;display:flex;box-shadow:0 4px 14px #3b82f663}.end-turn-btn:hover{background:#2563eb;transform:translateY(-2px);box-shadow:0 6px 20px #3b82f666}.end-turn-btn:active{transform:translateY(0)}
