.island-scene{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:#7fb2d9;line-height:0}.island-scene svg{display:block;width:100%;height:auto}.island-scene.demo{pointer-events:none}.sky-stop{transition:stop-color 2.5s linear}.cloud{opacity:.9}.cloud-1{animation:ifg-drift-1 110s linear infinite}.cloud-2{animation:ifg-drift-2 80s linear infinite;animation-delay:-36s}.cloud-3{animation:ifg-drift-3 140s linear infinite;animation-delay:-90s}@keyframes ifg-drift-1{0%{transform:translate(-180px,26px) scale(.9)}to{transform:translate(1320px,26px) scale(.9)}}@keyframes ifg-drift-2{0%{transform:translate(-200px,78px) scale(.65)}to{transform:translate(1340px,78px) scale(.65)}}@keyframes ifg-drift-3{0%{transform:translate(-160px,8px) scale(1.15)}to{transform:translate(1360px,8px) scale(1.15)}}.wave-1{animation:ifg-wave-180 13s linear infinite}.wave-2{animation:ifg-wave-240r 19s linear infinite}.wave-3{animation:ifg-wave-320 26s linear infinite}@keyframes ifg-wave-180{0%{transform:translate(0)}to{transform:translate(-180px)}}@keyframes ifg-wave-240r{0%{transform:translate(-240px)}to{transform:translate(0)}}@keyframes ifg-wave-320{0%{transform:translate(0)}to{transform:translate(-320px)}}.foam{opacity:0;animation:ifg-twinkle 4.2s ease-in-out infinite}.foam-1{animation-delay:1.3s}.foam-2{animation-delay:2.6s}@keyframes ifg-twinkle{0%,to{opacity:0}50%{opacity:.9}}.part-twinkle{animation:ifg-twinkle 2.6s ease-in-out infinite}.part-bob{animation:ifg-bob 3.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 80%}@keyframes ifg-bob{0%,to{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(3px) rotate(1.2deg)}}.sail-cloth,.flag-cloth{animation:ifg-flutter 2.1s ease-in-out infinite;transform-box:fill-box;transform-origin:0% 50%}@keyframes ifg-flutter{0%,to{transform:skewY(0)}50%{transform:skewY(2.4deg)}}.ship-mover{transition:transform 1s linear}.ship-label{font:700 15px var(--font-body);fill:#fdf9f0;paint-order:stroke;stroke:#0d3046a6;stroke-width:3px}.ship-label.danger{fill:#ffc9c9}.ambient-trader{opacity:.8;animation:ifg-trader 160s linear infinite;animation-delay:-40s}@keyframes ifg-trader{0%{transform:translate(-120px)}to{transform:translate(1320px)}}.part-sway{animation:ifg-sway 5.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}@keyframes ifg-sway{0%,to{transform:rotate(-1.6deg)}50%{transform:rotate(1.8deg)}}.plot-empty{fill:none;stroke:#fdf9f08c;stroke-width:2;stroke-dasharray:6 6}.building-art{transform-box:fill-box;transform-origin:50% 100%;animation:ifg-art-pop .55s var(--ease-pop) backwards}@keyframes ifg-art-pop{0%{transform:scale(.2);opacity:0}60%{opacity:1}to{transform:scale(1);opacity:1}}.plot{cursor:default}.plot:hover .building-art{filter:brightness(1.08)}.dust{opacity:0}.dust-1{animation:ifg-puff 1.6s ease-out infinite}.dust-2{animation:ifg-puff 1.6s ease-out infinite .5s}.dust-3{animation:ifg-puff 1.6s ease-out infinite 1s}@keyframes ifg-puff{0%{opacity:.7;transform:translateY(0) scale(.6)}to{opacity:0;transform:translateY(-16px) scale(1.4)}}.part-scaffold{transform-box:fill-box}.ring-fill{transition:stroke-dashoffset 1s linear}.spark{opacity:1;animation:ifg-spark .8s ease-out forwards;animation-delay:var(--sd, 0ms)}@keyframes ifg-spark{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--sx),var(--sy)) scale(.2);opacity:0}}.wonder-beam{animation:ifg-beam 3.2s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}@keyframes ifg-beam{0%,to{opacity:.35;transform:scaleX(.92)}50%{opacity:.65;transform:scaleX(1.06)}}.wonder-flame{animation:ifg-flame .9s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:50% 100%}@keyframes ifg-flame{0%{transform:scale(1)}to{transform:scale(1.12,1.22)}}.citizen{animation:ifg-stroll 7s ease-in-out infinite alternate;animation-delay:var(--cd, 0s)}.citizen.work{animation:ifg-toil 1.4s ease-in-out infinite;animation-delay:var(--cd, 0s)}@keyframes ifg-stroll{0%{transform:translate(var(--tx, 0px)) translate(0)}25%{transform:translate(7px) translateY(-1px)}50%{transform:translate(1px) translateY(0)}75%{transform:translate(9px) translateY(-1px)}to{transform:translate(3px) translateY(0)}}@keyframes ifg-toil{0%,to{transform:translateY(0)}50%{transform:translateY(-2.4px)}}.heart{font-size:15px;fill:#c4506a;animation:ifg-heart 1.8s ease-out infinite}.heart-2{animation-delay:.7s}@keyframes ifg-heart{0%{opacity:0;transform:translateY(4px) scale(.7)}30%{opacity:1}to{opacity:0;transform:translateY(-18px) scale(1.1)}}.drought .isle{filter:saturate(.4) brightness(.92)}.isle{transition:filter 1.2s ease}.drought .citizen{animation-duration:14s}.pall{pointer-events:none}.endgame-vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;box-shadow:inset 0 0 70px #a33b3b59;animation:ifg-vignette 2.6s ease-in-out infinite;border-radius:var(--radius)}@keyframes ifg-vignette{0%,to{opacity:.45}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.island-scene *,.island-scene *:before,.island-scene *:after{animation:none!important;transition:none!important}.endgame-vignette{opacity:.6}.foam{opacity:.5}.dust{opacity:.4}}@media (max-width: 920px){.island-scene{border-radius:var(--radius-sm)}.ship-label{font-size:19px}}.island-scene{position:relative}.island-scene:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity 1.2s ease}.island-scene.event-goldRush:after{opacity:1;background:radial-gradient(ellipse at 50% 30%,#ffc85047,#d9a4401a 70%);animation:scene-event-breathe 2.8s ease-in-out infinite}.island-scene.event-harvest:after{opacity:1;background:radial-gradient(ellipse at 50% 55%,#8cc85a38,#5aa04614 70%);animation:scene-event-breathe 3.4s ease-in-out infinite}.island-scene.event-festival:after{opacity:1;background:radial-gradient(ellipse at 50% 40%,#be6ec833,#9650aa14 70%);animation:scene-event-breathe 3s ease-in-out infinite}.island-scene.event-fog:after{opacity:1;background:linear-gradient(180deg,#e1e8ec8c,#c8d4dc59 45%,#becdd68c),radial-gradient(ellipse at 30% 60%,rgba(255,255,255,.35),transparent 60%);animation:scene-fog-breathe 5s ease-in-out infinite}@keyframes scene-event-breathe{0%,to{opacity:1}50%{opacity:.55}}@keyframes scene-fog-breathe{0%,to{opacity:1}50%{opacity:.78}}@media (prefers-reduced-motion: reduce){.island-scene.event-goldRush:after,.island-scene.event-harvest:after,.island-scene.event-festival:after,.island-scene.event-fog:after{animation:none}}.home-hero{position:relative;width:100%;max-width:880px;display:flex;flex-direction:column}.home-hero-scene{animation:home-scene-in var(--dur-grand) var(--ease-glide) backwards}.home-hero-copy{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:clamp(6px,2.5vw,26px);pointer-events:none}.home-hero-copy-inner{text-align:center;padding:8px 40px 18px;background:radial-gradient(closest-side,#fdf9f0c7,#fdf9f000)}.home .hero-title{animation:home-rise var(--dur-grand) var(--ease-glide) backwards;text-shadow:0 1px 0 rgba(253,249,240,.75),0 4px 18px rgba(253,249,240,.9)}.home .hero-tagline{color:var(--sea-deep);animation:home-rise var(--dur-grand) var(--ease-glide) .16s backwards;text-shadow:0 1px 8px rgba(253,249,240,.9)}.home .home-forms{animation:home-rise var(--dur-grand) var(--ease-glide) .34s backwards}.home .home-footer{animation:home-rise var(--dur-grand) var(--ease-glide) .52s backwards}@keyframes home-rise{0%{opacity:0;transform:translateY(16px)}}@keyframes home-scene-in{0%{opacity:0;transform:translateY(6px) scale(.985)}}.home .home-card .btn.big{position:relative}.home .home-card .btn.big:not(:disabled):after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:inherit;box-shadow:0 0 18px 4px #d9a4408c;opacity:0;pointer-events:none;animation:home-breathe 3.4s ease-in-out 1.4s infinite}@keyframes home-breathe{0%,to{opacity:0}50%{opacity:.8}}@media (max-width: 680px){.home-hero-copy{position:static;order:-1;padding:0 0 12px}.home-hero-copy-inner{background:none;padding:0}.home .hero-title,.home .hero-tagline{text-shadow:none}}@media (prefers-reduced-motion: reduce){.home-hero-scene,.home .hero-title,.home .hero-tagline,.home .home-forms,.home .home-footer,.home .home-card .btn.big{animation:none!important}}.lobby .lobby-box{max-width:560px}.lby-harbor{width:100%;line-height:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:#4f93c9;animation:lby-rise var(--dur-grand) var(--ease-glide) backwards}.lby-harbor svg{display:block;width:100%;height:auto}.lby-cloud-1{animation:lby-drift-1 95s linear infinite}.lby-cloud-2{animation:lby-drift-2 140s linear infinite;animation-delay:-60s}@keyframes lby-drift-1{0%{transform:translate(-140px,12px) scale(.7)}to{transform:translate(1120px,12px) scale(.7)}}@keyframes lby-drift-2{0%{transform:translate(-160px,46px) scale(.5)}to{transform:translate(1140px,46px) scale(.5)}}.lby-wave-1{animation:lby-wave-180 13s linear infinite}.lby-wave-2{animation:lby-wave-240 19s linear infinite reverse}@keyframes lby-wave-180{to{transform:translate(-180px)}}@keyframes lby-wave-240{to{transform:translate(-240px)}}.lby-lamp{animation:lby-lamp 3.2s ease-in-out infinite}@keyframes lby-lamp{0%,to{opacity:.55}50%{opacity:1}}.lby-buoy{animation:lby-buoy 4.2s ease-in-out infinite}@keyframes lby-buoy{0%,to{transform:translateY(0)}50%{transform:translateY(2.5px)}}.lby-arrive{animation:lby-sail-in 1.5s var(--ease-glide) backwards;transform-box:fill-box;transform-origin:50% 100%}@keyframes lby-sail-in{0%{opacity:0;transform:translate(560px)}12%{opacity:1}to{opacity:1;transform:translate(0)}}.lby-pennant-cloth{animation:lby-flutter 2.3s ease-in-out infinite;transform-box:fill-box;transform-origin:0% 50%}@keyframes lby-flutter{0%,to{transform:skewY(0)}50%{transform:skewY(3deg)}}.lby-pennant-name{font:700 13px var(--font-body);fill:#16455e;paint-order:stroke;stroke:#fdf9f0e6;stroke-width:3px}.lby-berth.offline .sail-cloth{opacity:.25;animation:none}.lby-berth.offline .part-bob,.lby-berth.offline .lby-pennant-cloth{animation:none}.lby-berth.offline .lby-pennant-name{fill:#6f5f49}.lby-harbor.starting .lby-arrive{animation:lby-cast-off .9s var(--ease-glide) forwards}.lby-harbor.starting .sail-cloth{opacity:1}@keyframes lby-cast-off{to{transform:translateY(-3px) rotate(-2deg)}}@keyframes lby-rise{0%{opacity:0;transform:translateY(14px)}}.lobby .lobby-kicker{animation:lby-rise var(--dur-move) var(--ease-glide) backwards}.lobby .code-letter{animation:lby-code-pop var(--dur-grand) var(--ease-pop) backwards;animation-delay:var(--d, 0ms)}@keyframes lby-code-pop{0%{opacity:0;transform:translateY(-22px) scale(.7)}60%{opacity:1;transform:translateY(4px) scale(1.05)}to{opacity:1;transform:none}}.lobby .lobby-hint{animation:lby-rise var(--dur-grand) var(--ease-glide) .24s backwards}.lobby .lobby-card{animation:lby-rise var(--dur-grand) var(--ease-glide) .18s backwards}.lobby .host-controls{animation-delay:.3s}.lobby .lobby-wait{animation:lby-rise var(--dur-grand) var(--ease-glide) .3s backwards}.lobby .link-btn{animation:lby-rise var(--dur-grand) var(--ease-glide) .42s backwards}.lobby .player-row{animation:lby-row-in var(--dur-move) var(--ease-glide) backwards;animation-delay:var(--d, 0ms)}@keyframes lby-row-in{0%{opacity:0;transform:translate(-16px)}}.lobby .add-bot-btn{width:100%;margin-bottom:10px;animation:lby-rise var(--dur-grand) var(--ease-glide) .34s backwards}.lobby .bot-remove{margin-left:auto;border:none;background:none;color:var(--muted, #8a93a0);font-size:13px;line-height:1;padding:4px 6px;border-radius:6px;cursor:pointer;transition:color var(--dur-snap, .12s),background var(--dur-snap, .12s)}.lobby .bot-remove:hover{color:#d9534f;background:#d9534f1f}.lobby .start-btn{position:relative;width:100%;font-size:16px;animation:lby-grand-in var(--dur-grand) var(--ease-pop) .38s backwards}@keyframes lby-grand-in{0%{opacity:0;transform:translateY(14px) scale(.9)}}.lobby .start-btn:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:13px;pointer-events:none;box-shadow:0 0 0 4px #d9a44040,0 0 26px #d9a44080;opacity:0;animation:lby-breathe-glow 2.6s ease-in-out 1.1s infinite}.lobby .start-btn:disabled:after{animation:none;opacity:0}@keyframes lby-breathe-glow{0%,to{opacity:0}50%{opacity:1}}@media (max-width: 680px){.lby-harbor{border-radius:var(--radius-sm)}.lby-pennant-name{font-size:17px}}@media (prefers-reduced-motion: reduce){.lby-harbor,.lby-harbor *,.lobby .lobby-kicker,.lobby .code-letter,.lobby .lobby-hint,.lobby .lobby-card,.lobby .lobby-wait,.lobby .link-btn,.lobby .player-row,.lobby .start-btn{animation:none!important;transition:none!important}.lobby .start-btn:after{animation:none!important;opacity:.5}}.topbar .fx-num.gain{color:#d8eaa6}.topbar .fx-num.dip{color:#ffb4a0}.topbar .vp-chip{position:relative;display:inline-block;overflow:hidden}.vp-glint{position:absolute;top:-30%;bottom:-30%;left:0;width:34%;background:linear-gradient(105deg,transparent,rgba(255,240,200,.95),transparent);transform:translate(-140%) skew(-18deg);animation:tb-glint .85s var(--ease-glide) .05s forwards;pointer-events:none}@keyframes tb-glint{to{transform:translate(440%) skew(-18deg)}}.topbar .clock{display:inline-block}.topbar .clock.amber{animation:tb-clock-pulse 1.6s ease-in-out infinite}@keyframes tb-clock-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.88}}.topbar .peace-badge{display:inline-block;animation:tb-rise-in var(--dur-grand) var(--ease-glide) backwards}.tb-dove{display:inline-block;animation:tb-dove-float 3.2s ease-in-out infinite}@keyframes tb-dove-float{0%,to{transform:translateY(0)}50%{transform:translateY(-1.6px)}}@keyframes tb-rise-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.toasts .toast{position:relative;animation:tb-toast-in var(--dur-move) var(--ease-pop) backwards}@keyframes tb-toast-in{0%{opacity:0;transform:translateY(-18px) scale(.95)}to{opacity:1;transform:none}}.toasts .toast-icon{display:inline-block;animation:tb-thump .45s var(--ease-pop) .1s backwards}@keyframes tb-thump{0%{transform:scale(.3)}55%{transform:scale(1.3)}to{transform:scale(1)}}.toasts .toast-combat:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;border:2px solid var(--danger);opacity:0;animation:tb-edge-flash .8s ease-out .1s;pointer-events:none}@keyframes tb-edge-flash{0%{opacity:0}25%{opacity:.9}to{opacity:0}}.splash-scene{width:220px;max-width:calc(100vw - 48px);border-radius:18px;overflow:hidden;margin-bottom:16px;background:linear-gradient(180deg,#a8d4ea,#eaf6ff 58%,#9ccadd);box-shadow:var(--shadow);line-height:0}.splash-scene svg{display:block;width:100%;height:auto}.spl-wave-back{animation:spl-drift-back 7s linear infinite}.spl-wave-front{animation:spl-drift-front 9.5s linear infinite}@keyframes spl-drift-back{0%{transform:translate(0)}to{transform:translate(-80px)}}@keyframes spl-drift-front{0%{transform:translate(-110px)}to{transform:translate(0)}}.screen.splash p{animation:tb-rise-in var(--dur-grand) var(--ease-glide) backwards}.conn-banner{animation:tb-banner-in var(--dur-move) var(--ease-glide)}@keyframes tb-banner-in{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.conn-anchor{display:inline-block;transform-origin:50% 20%;animation:tb-anchor-sway 2.4s ease-in-out infinite}@keyframes tb-anchor-sway{0%,to{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}@media (prefers-reduced-motion: reduce){.topbar .clock.amber,.tb-dove,.topbar .peace-badge,.toasts .toast,.toasts .toast-icon,.toasts .toast-combat:after,.spl-wave-back,.spl-wave-front,.screen.splash p,.conn-banner,.conn-anchor{animation:none!important}.vp-glint{display:none}}.research-panel .tech-node:before{content:"";position:absolute;left:16px;top:27px;bottom:-27px;width:4px;border-radius:2px;background:transparent}.research-panel .tech-node:last-child:before{display:none}.research-panel .tech-done:before{background:linear-gradient(180deg,#f0c468,var(--gold));box-shadow:0 0 6px #d9a44073;transform-origin:50% 0;animation:rsr-thread-grow var(--dur-grand) var(--ease-glide) backwards;animation-delay:var(--rsr-d, 0ms)}.research-panel .tech-done:not(:has(+.tech-done)):before{background:linear-gradient(180deg,#f0c468,var(--gold) 45%,rgba(217,164,64,0));box-shadow:none}@keyframes rsr-thread-grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.research-panel .tech-done .tech-dot{background:radial-gradient(circle at 32% 28%,#c9573f,#a33b3b 55%,#7e2c24);border-color:#7e2c24;box-shadow:inset 0 0 0 3px #fdf9f038,0 1px 3px #2b221859;color:var(--ivory);font-family:var(--font-display);font-weight:700;text-shadow:0 1px 1px rgba(43,34,24,.4);transform:rotate(-6deg)}.research-panel .tech-dot.sealing{animation:rsr-stamp var(--dur-grand) var(--ease-pop)}@keyframes rsr-stamp{0%{transform:scale(2.1) rotate(9deg);opacity:0}55%{transform:scale(.86) rotate(-9deg);opacity:1}75%{transform:scale(1.08) rotate(-4deg)}to{transform:scale(1) rotate(-6deg)}}.research-panel .tech-current .tech-dot{animation:rsr-ponder 2.4s ease-in-out infinite}@keyframes rsr-ponder{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.research-panel .tech-quill{position:absolute;right:-11px;top:-13px;font-size:14px;line-height:1;pointer-events:none;display:inline-block;transform-origin:18% 88%;animation:rsr-scribble 1.3s ease-in-out infinite}@keyframes rsr-scribble{0%,to{transform:rotate(0) translate(0)}15%{transform:rotate(-9deg) translate(-1.5px,1px)}30%{transform:rotate(4deg) translate(1px,-.5px)}45%{transform:rotate(-7deg) translate(-1px,1px)}60%{transform:rotate(6deg) translate(1.5px)}75%{transform:rotate(-4deg) translate(-.5px,.5px)}}.research-panel .lock-ic{display:inline-block;transform-origin:50% 30%}@media (hover: hover) and (pointer: fine){.research-panel .tech-locked:hover .lock-ic{animation:rsr-lock-wiggle .45s var(--ease-pop) 1}}@keyframes rsr-lock-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-14deg)}55%{transform:rotate(11deg)}80%{transform:rotate(-5deg)}}@media (prefers-reduced-motion: reduce){.research-panel .tech-done:before,.research-panel .tech-dot.sealing,.research-panel .tech-current .tech-dot,.research-panel .tech-quill,.research-panel .tech-locked:hover .lock-ic{animation:none!important}}.combat-modal.cbt{max-width:520px}.cbt:not(.cbt-done){cursor:pointer}.cbt:not(.cbt-done) .cbt-report{pointer-events:none}.cbt.cbt-done .cbt-anim,.cbt.cbt-done .cbt-drop{animation:none!important}.cbt.cbt-done .cbt-rain{display:none}.cbt-stage-wrap{position:relative;border-radius:var(--radius-sm);overflow:hidden;line-height:0;margin:10px 0 12px;box-shadow:var(--shadow-soft);animation:cbt-shake .4s linear 1.15s both}.cbt-stage{display:block;width:100%;height:auto}@keyframes cbt-shake{0%,to{transform:none}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.cbt-wave-1{animation:cbt-wave-90 11s linear infinite}.cbt-wave-2{animation:cbt-wave-130 17s linear infinite}@keyframes cbt-wave-90{0%{transform:translate(0)}to{transform:translate(-90px)}}@keyframes cbt-wave-130{0%{transform:translate(-130px)}to{transform:translate(0)}}.cbt-isle{transform-box:fill-box;transform-origin:50% 100%;animation:cbt-rise .5s var(--ease-pop) both}.cbt-isle-r{animation-delay:.12s}@keyframes cbt-rise{0%{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}.cbt-name{font:italic 700 14px var(--font-display);fill:var(--ink);paint-order:stroke;stroke:#fdf9f0d9;stroke-width:3px;animation:cbt-fade .4s ease .35s both}@keyframes cbt-fade{0%{opacity:0}to{opacity:1}}.cbt-ship-l{transform:translate(58px);animation:cbt-sail-l 1s var(--ease-glide) .25s both}.cbt-ship-r{transform:translate(-45px);animation:cbt-sail-r 1s var(--ease-glide) .25s both}@keyframes cbt-sail-l{0%{transform:translate(-70px)}to{transform:translate(58px)}}@keyframes cbt-sail-r{0%{transform:translate(70px)}to{transform:translate(-45px)}}.cbt-sunk{transform-box:fill-box;transform-origin:50% 70%;transform:translateY(9px) rotate(7deg);opacity:.35;animation:cbt-sink .9s ease-in 1.6s both}@keyframes cbt-sink{0%{transform:none;opacity:1}to{transform:translateY(9px) rotate(7deg);opacity:.35}}.cbt-clash-flash{opacity:0;transform-box:fill-box;transform-origin:center;animation:cbt-flash .55s ease-out 1.15s both}@keyframes cbt-flash{0%{opacity:0;transform:scale(.2)}25%{opacity:.95}to{opacity:0;transform:scale(2.1)}}.cbt-clash-rays{opacity:0;transform-box:fill-box;transform-origin:center;animation:cbt-rays .6s ease-out 1.2s both}@keyframes cbt-rays{0%{opacity:0;transform:scale(.4)}30%{opacity:1}to{opacity:0;transform:scale(1.25)}}.cbt-clash-icon{opacity:0;transform-box:fill-box;transform-origin:center;animation:cbt-icon 1s var(--ease-pop) 1.2s both}@keyframes cbt-icon{0%{opacity:0;transform:scale(.2)}18%{opacity:1;transform:scale(1.25)}35%{transform:scale(1)}80%{opacity:1}to{opacity:0;transform:scale(.9)}}.cbt-powers{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:0 0 6px;animation:cbt-fade-up .4s var(--ease-glide) 1.25s both}.cbt-power{display:flex;flex-direction:column;align-items:center}.cbt-power-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.cbt-power-num{font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1.1}.cbt-power-atk .cbt-power-num{color:var(--terracotta)}.cbt-power-def .cbt-power-num{color:var(--sea-light)}.cbt-powers-vs{font-family:var(--font-display);font-style:italic;color:var(--ink-soft)}@keyframes cbt-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.combat-verdict.cbt-banner{font-size:19px;margin:0 0 10px;animation:cbt-slam .5s var(--ease-pop) 1.95s both}@keyframes cbt-slam{0%{opacity:0;transform:scale(2.4)}55%{opacity:1;transform:scale(.94)}to{opacity:1;transform:none}}.cbt-rain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.cbt-drop{position:absolute;top:14%;left:var(--lx, 50%);font-size:18px;line-height:1;opacity:0;animation:cbt-fall 1s ease-in var(--dd, 2s) both}@keyframes cbt-fall{0%{opacity:0;transform:translateY(-8px)}12%{opacity:1}78%{opacity:1}to{opacity:0;transform:translate(var(--rx, 0px),132px)}}.cbt-report{animation:cbt-fade-up .45s var(--ease-glide) 2.25s both}.mil-train-track{position:relative}.mil-marcher-lane{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transform:translate(0);transition:transform 1s linear}.mil-marcher{position:absolute;top:50%;left:0;display:inline-block;font-size:17px;line-height:1;transform:translate(-55%,-58%);animation:mil-march .7s ease-in-out infinite;filter:drop-shadow(0 1px 1px rgba(43,34,24,.35))}@keyframes mil-march{0%,to{transform:translate(-55%,-58%) rotate(-6deg)}50%{transform:translate(-55%,-70%) rotate(6deg)}}.mil-incoming{position:relative}.mil-incoming:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:var(--radius-sm);box-shadow:0 0 0 2px #a33b3b8c,0 0 20px #a33b3b66;opacity:.15;pointer-events:none;animation:mil-alarm 1.5s ease-in-out infinite}@keyframes mil-alarm{0%,to{opacity:.15}50%{opacity:1}}.mil-route-wrap{border-radius:var(--radius-sm);overflow:hidden;line-height:0;margin-top:8px;box-shadow:var(--shadow-soft)}.mil-route{display:block;width:100%;height:auto}.mil-route-ship{transition:transform 1s linear}.mil-wave-1{animation:mil-wave-70 9s linear infinite}.mil-wave-2{animation:mil-wave-110 15s linear infinite}@keyframes mil-wave-70{0%{transform:translate(0)}to{transform:translate(-70px)}}@keyframes mil-wave-110{0%{transform:translate(-110px)}to{transform:translate(0)}}.mil-peace{display:flex;align-items:center;gap:10px;background:#2e6f8e17;border:1px dashed var(--sea-light);border-radius:var(--radius-sm);padding:8px 12px;margin-top:8px}.mil-dove{display:inline-block;font-size:22px;line-height:1;animation:mil-float 3.2s ease-in-out infinite}@keyframes mil-float{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-5px) rotate(4deg)}}.mil-peace-text{display:flex;flex-direction:column;line-height:1.25}.mil-peace-text strong{font-family:var(--font-display);font-size:14px;color:var(--sea)}.mil-peace-count{font-size:12.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums}@media (prefers-reduced-motion: reduce){.cbt-stage-wrap,.cbt .cbt-anim,.cbt .cbt-drop,.cbt-stage *,.combat-verdict.cbt-banner,.mil-marcher,.mil-dove,.mil-incoming:after,.mil-route *,.mil-wave-1,.mil-wave-2{animation:none!important}.cbt-rain{display:none}.mil-marcher-lane,.mil-route-ship{transition:none!important}.mil-incoming:after{opacity:.7}.cbt:not(.cbt-done) .cbt-report{pointer-events:auto}}.intel-panel{margin:10px 0;padding:10px 12px;background:#0d30460f;border:1px solid rgba(13,48,70,.12);border-radius:var(--radius-sm, 8px)}.intel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.intel-title{font-weight:600;font-size:14px}.intel-row{margin-top:6px;font-size:14px;font-variant-numeric:tabular-nums}.intel-unknown{opacity:.65;font-style:italic}.intel-age{margin-top:2px;font-size:12px;opacity:.6}.trade-panel .trade-row{animation:trd-in var(--dur-move) var(--ease-glide) backwards;animation-delay:var(--trd-d, 0ms)}@keyframes trd-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.trade-panel .trade-give,.trade-panel .trade-want{white-space:nowrap}.trade-panel .trade-row.mine .trade-give{position:relative;overflow:hidden;display:inline-block;border-radius:6px;padding:0 4px;background:#d9a44029;box-shadow:inset 0 0 0 1px #d9a44059}.trade-panel .trade-row.mine .trade-give:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-130%);background:linear-gradient(100deg,transparent 25%,rgba(255,255,255,.55) 50%,transparent 75%);animation:trd-escrow 3s var(--ease-glide) infinite}@keyframes trd-escrow{0%{transform:translate(-130%)}55%,to{transform:translate(130%)}}.trade-swap-row{display:flex;justify-content:center;margin:-7px 0}.trade-swap{width:30px;height:30px;border-radius:50%;border:1px solid var(--sand-deep);background:var(--ivory);color:var(--terracotta);font-size:15px;line-height:1;cursor:pointer;box-shadow:var(--shadow-soft);display:inline-flex;align-items:center;justify-content:center;padding:0;transition:transform var(--dur-quick) var(--ease-pop),box-shadow var(--dur-quick) ease}.trade-swap:hover{transform:translateY(-1px) scale(1.1);box-shadow:var(--shadow)}.trade-swap:active{transform:scale(.92)}.trade-swap-icon{display:inline-block}.trade-swap-icon.spin{animation:trd-swap-spin .45s var(--ease-pop)}@keyframes trd-swap-spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.3)}to{transform:rotate(360deg) scale(1)}}.trade-panel .trade-list-head{position:relative}@media (prefers-reduced-motion: reduce){.trade-panel .trade-row,.trade-panel .trade-row.mine .trade-give:after,.trade-swap-icon.spin{animation:none!important}.trade-swap,.trade-swap:hover,.trade-swap:active{transition:none;transform:none}}.map-scene{position:relative;background:#16455e;line-height:0}.map-wave-a{animation:map-wave-240 19s linear infinite}.map-wave-b{animation:map-wave-320 27s linear infinite}@keyframes map-wave-240{0%{transform:translate(-240px)}to{transform:translate(0)}}@keyframes map-wave-320{0%{transform:translate(0)}to{transform:translate(-320px)}}.map-foam{opacity:0;animation:map-twinkle 4.6s ease-in-out infinite;animation-delay:var(--fd, 0s)}@keyframes map-twinkle{0%,to{opacity:0}50%{opacity:.7}}.map-isle-pop{transform-box:fill-box;transform-origin:50% 60%;animation:map-isle-pop .55s var(--ease-pop) backwards;animation-delay:var(--ip, 0ms);transition:filter 1.2s ease,opacity 1.2s ease}@keyframes map-isle-pop{0%{transform:scale(.2);opacity:0}60%{opacity:1}to{transform:scale(1);opacity:1}}.map-isle.away .map-isle-pop{filter:saturate(.3) brightness(.9);opacity:.82}.map-you-ring{fill:none;stroke:var(--gold);stroke-width:3.5;stroke-dasharray:12 9;opacity:.95;animation:map-ring-march 6s linear infinite}@keyframes map-ring-march{to{stroke-dashoffset:-84}}.map-pennant-cloth{animation:map-flutter 2.1s ease-in-out infinite;transform-box:fill-box;transform-origin:0% 50%}@keyframes map-flutter{0%,to{transform:skewY(0)}50%{transform:skewY(3deg)}}.map-isle-name{font:700 20px var(--font-body);fill:#f2e8d2;paint-order:stroke;stroke:#0d30468c;stroke-width:3px}.map-isle-meta{font:600 15px var(--font-body);fill:#bcd6e2;paint-order:stroke;stroke:#0d304673;stroke-width:3px}.map-away-rect{fill:#0d3046b8;stroke:#fdf9f059;stroke-width:1}.map-away-text{font:700 11px var(--font-body);letter-spacing:.08em;fill:#dbe8ee}.map-raid-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:10 9;animation:map-dash 1.1s linear infinite}.map-raid-line.out{stroke:#fdf9f0b3}.map-raid-line.in{stroke:#e87461e6}@keyframes map-dash{to{stroke-dashoffset:-38}}.map-ship{transition:transform 1s linear}.map-ship-eta{font:700 14px var(--font-body);fill:#fdf9f0;paint-order:stroke;stroke:#0d3046a6;stroke-width:3px}.map-ship-eta.danger{fill:#ffc9c9}@media (prefers-reduced-motion: reduce){.map-scene *,.map-scene *:before,.map-scene *:after{animation:none!important;transition:none!important}.map-foam{opacity:.5}}@media (max-width: 920px){.map-isle-name{font-size:25px}.map-isle-meta{font-size:19px}.map-ship-eta{font-size:18px}.map-away-text{font-size:14px}}.cer-banner{animation:cer-drop .6s var(--ease-pop) backwards}@keyframes cer-drop{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}.cer-motif{display:block;margin:0 auto 4px;overflow:visible}.cer-motif.cer-wonder{width:112px}.cer-motif.cer-sun{width:190px}.cer-wonder-float{animation:cer-float 6s ease-in-out infinite}@keyframes cer-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.cer-wonder .wonder-beam{transform-box:fill-box;transform-origin:50% 100%;animation:cer-beam 3.2s ease-in-out infinite}@keyframes cer-beam{0%,to{opacity:.35;transform:scaleX(.92)}50%{opacity:.7;transform:scaleX(1.08)}}.cer-wonder .wonder-flame{transform-box:fill-box;transform-origin:50% 100%;animation:cer-flame .9s ease-in-out infinite alternate}@keyframes cer-flame{0%{transform:scale(1)}to{transform:scale(1.12,1.22)}}.cer-sun-set{animation:cer-sunset 5.5s var(--ease-glide) backwards}@keyframes cer-sunset{0%{transform:translateY(-9px)}to{transform:translateY(0)}}.cer-sun-glow{animation:cer-sun-glow 4s ease-in-out infinite}@keyframes cer-sun-glow{0%,to{opacity:.22}50%{opacity:.42}}.cer-standings{width:100%;display:flex;flex-direction:column;gap:8px}.cer-row{position:relative;animation:cer-reveal .5s var(--ease-pop) backwards;animation-delay:var(--reveal, 0ms)}@keyframes cer-reveal{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}.cer-track{width:100%}.cer-fill{display:flex;height:100%;border-radius:999px;overflow:hidden;transform-origin:0 50%;animation:cer-race .9s var(--ease-glide) backwards;animation-delay:calc(var(--reveal, 0ms) + .28s)}@keyframes cer-race{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.cer-rankwrap{position:relative}.cer-crown{position:absolute;left:50%;top:-16px;width:26px;height:auto;pointer-events:none;transform:translate(-50%) rotate(-10deg);animation:cer-crown-drop .65s var(--ease-pop) backwards;animation-delay:var(--settle, 1.5s)}@keyframes cer-crown-drop{0%{opacity:0;transform:translate(-50%) translateY(-26px) rotate(16deg) scale(.55)}60%{opacity:1}to{opacity:1;transform:translate(-50%) rotate(-10deg)}}.cer-row.cer-winner:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:var(--radius-sm);pointer-events:none;box-shadow:0 0 0 2px var(--gold),0 0 26px #d9a4408c;opacity:0;animation:cer-glow-in .6s ease forwards,cer-glow-pulse 2.6s ease-in-out infinite;animation-delay:calc(var(--settle, 1.5s) + .12s),calc(var(--settle, 1.5s) + .72s)}@keyframes cer-glow-in{0%{opacity:0}to{opacity:1}}@keyframes cer-glow-pulse{0%,to{opacity:1}50%{opacity:.55}}.cer-confetti{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:150}.cer-confetto{position:absolute;top:-24px;left:var(--x, 50%);width:9px;height:14px;border-radius:2px;background:hsl(var(--hue, 43) 72% 55%);opacity:0;animation:cer-fall var(--fall, 3.6s) linear both;animation-delay:var(--delay, 0ms)}.cer-confetto:nth-child(3n){width:8px;height:8px;border-radius:50%}.cer-confetto:nth-child(4n+1){width:6px;height:13px}@keyframes cer-fall{0%{transform:translateZ(0) rotate(0);opacity:1}85%{opacity:1}to{transform:translate3d(var(--drift, 0px),105vh,0) rotate(var(--spin, 540deg));opacity:0}}.cer-late{animation:cer-fade .6s ease backwards;animation-delay:var(--settle, 1.5s)}.cer-again{animation:cer-fade .7s ease backwards;animation-delay:calc(var(--settle, 1.5s) + .45s)}@keyframes cer-fade{0%{opacity:0}to{opacity:1}}.cer-splash-bob{animation:cer-bob 2.8s ease-in-out infinite}@keyframes cer-bob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}@media (prefers-reduced-motion: reduce){.cer-banner,.cer-row,.cer-fill,.cer-crown,.cer-row.cer-winner:after,.cer-late,.cer-again,.cer-wonder-float,.cer-wonder .wonder-beam,.cer-wonder .wonder-flame,.cer-sun-set,.cer-sun-glow,.cer-splash-bob{animation:none!important}.cer-row.cer-winner:after{opacity:1}.cer-confetti{display:none}}@media (max-width: 560px){.cer-motif.cer-sun{width:160px}.cer-motif.cer-wonder{width:96px}}.recap-chart,.recap-awards,.recap-timeline{margin-top:18px;text-align:left}.recap-chart h2,.recap-awards h2,.recap-timeline h2{font-size:14px;text-transform:uppercase;letter-spacing:.06em;opacity:.75;margin:0 0 8px}.recap-chart svg{display:block;width:100%;background:#0d30460f;border-radius:var(--radius-sm, 8px)}.recap-grid{stroke:#0d304626;stroke-dasharray:3 4}.recap-axis{font-size:10px;fill:#0d30468c}.recap-line{stroke-dasharray:1;stroke-dashoffset:1;animation:recap-draw 1.4s var(--ease-glide, ease-out) calc(var(--settle, 0ms) + .2s) forwards}.recap-dot{opacity:0;animation:recap-pop var(--dur-pop, .3s) var(--ease-pop, ease-out) calc(var(--settle, 0ms) + 1.5s) forwards}@keyframes recap-draw{to{stroke-dashoffset:0}}@keyframes recap-pop{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.recap-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:13px}.award-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.award-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 8px;background:#faf4e6b3;border:1px solid rgba(13,48,70,.12);border-radius:var(--radius-sm, 8px);text-align:center}.award-emoji{font-size:22px}.award-name{font-size:11px;text-transform:uppercase;letter-spacing:.05em;opacity:.65}.award-holder{font-size:14px}.award-desc{font-size:12px;opacity:.7}.recap-timeline ul{list-style:none;margin:0;padding:8px 10px;max-height:190px;overflow-y:auto;background:#0d30460d;border-radius:var(--radius-sm, 8px);font-size:13px}.recap-timeline li{display:flex;gap:10px;padding:3px 0}.tl-time{font-variant-numeric:tabular-nums;opacity:.6;min-width:42px;text-align:right}@media (prefers-reduced-motion: reduce){.recap-line{animation:none;stroke-dashoffset:0}.recap-dot{animation:none;opacity:1}}:root{--sand: #f0e3c8;--sand-light: #f6edd8;--sand-deep: #e3d1ab;--ivory: #fdf9f0;--terracotta: #c4633e;--terracotta-dark: #a84e2e;--terracotta-soft: #e6b39b;--sea: #16455e;--sea-deep: #0d3046;--sea-light: #2e6f8e;--ink: #2b2218;--ink-soft: #6f5f49;--olive: #6b7a3f;--gold: #d9a440;--danger: #a33b3b;--wonder: #7a5ca8;--amber: #d98c2b;--radius: 15px;--radius-sm: 10px;--shadow: 0 2px 8px rgba(43, 34, 24, .08), 0 10px 30px rgba(43, 34, 24, .07);--shadow-soft: 0 1px 4px rgba(43, 34, 24, .08);--font-display: Georgia, "Times New Roman", "Palatino Linotype", serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(1100px 500px at 85% -10%,rgba(217,164,64,.16),transparent 60%),radial-gradient(900px 600px at -10% 110%,rgba(46,111,142,.12),transparent 55%),linear-gradient(180deg,var(--sand-light),var(--sand));min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,h3,.brand-name,.room-code{font-family:var(--font-display);letter-spacing:.01em}h2,h3{margin:0 0 6px}.muted{color:var(--ink-soft);font-weight:400}.btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-family:var(--font-body);font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,#d0744e,var(--terracotta));border:1px solid var(--terracotta-dark);border-radius:var(--radius-sm);padding:9px 14px;cursor:pointer;box-shadow:0 2px 0 var(--terracotta-dark),var(--shadow-soft);transition:transform .08s ease,box-shadow .08s ease,filter .12s ease;text-align:center}.btn:hover:not(:disabled){filter:brightness(1.05)}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 0 0 var(--terracotta-dark),var(--shadow-soft)}.btn:disabled{background:#cfc3a9;border-color:#b8aa8d;box-shadow:none;color:#84775e;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,#2f7796,var(--sea));border-color:var(--sea-deep);box-shadow:0 2px 0 var(--sea-deep),var(--shadow-soft)}.btn.primary:disabled{background:#cfc3a9;border-color:#b8aa8d;box-shadow:none}.btn.big{font-size:16px;padding:12px 20px;width:100%}.btn.small{font-size:13px;padding:6px 12px;flex-direction:row;gap:6px}.btn.ghost{background:transparent;color:var(--terracotta-dark);border:1px solid var(--terracotta-soft);box-shadow:none}.btn.ghost:active:not(:disabled){transform:translateY(1px)}.btn-cost{font-size:12px;font-weight:500;opacity:.95}.btn-action{line-height:1.15}.link-btn{background:none;border:none;color:var(--ink-soft);text-decoration:underline;cursor:pointer;font-size:13px;padding:8px}.input{font-family:var(--font-body);font-size:15px;color:var(--ink);background:var(--ivory);border:1px solid var(--sand-deep);border-radius:var(--radius-sm);padding:10px 12px;width:100%;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.input:focus{border-color:var(--sea-light);box-shadow:0 0 0 3px #2e6f8e2e}.select{width:auto;padding:8px 10px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}.seg{display:flex;gap:6px}.seg-btn{flex:1;font-family:var(--font-body);font-size:14px;font-weight:600;padding:9px 6px;border-radius:var(--radius-sm);border:1px solid var(--sand-deep);background:var(--ivory);color:var(--ink-soft);cursor:pointer;transition:all .12s ease}.seg-btn.active{background:var(--sea);border-color:var(--sea-deep);color:#fff}.reason{font-size:12px;color:var(--ink-soft);font-style:italic;margin-top:6px}.card-hint{font-size:12px;color:var(--ink-soft);margin:8px 0 0}.hint-card{background:#2e6f8e17;border:1px dashed var(--sea-light);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;color:var(--sea);margin-bottom:12px}.card{background:var(--ivory);border:1px solid rgba(43,34,24,.07);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.card-emoji{font-size:28px;line-height:1}.card-title{display:flex;flex-direction:column;gap:2px;min-width:0}.card-title h3{margin:0;font-size:17px}.card-desc{font-size:13px;color:var(--ink-soft);margin:0 0 8px;line-height:1.4}.card-effect{font-size:13px;font-weight:600;color:var(--olive);margin:0 0 8px}.card-next{font-size:12px;color:var(--sea-light);font-weight:600;margin:0 0 8px}.max-badge{font-size:13px;font-weight:700;color:var(--gold);background:#d9a4401f;border-radius:var(--radius-sm);padding:8px 10px;text-align:center}.pips{display:inline-flex;gap:4px}.pips i{width:9px;height:9px;border-radius:50%;background:var(--sand-deep);border:1px solid rgba(43,34,24,.12)}.pips i.on{background:var(--terracotta);border-color:var(--terracotta-dark)}.tickbar{position:relative;height:24px;border-radius:999px;background:var(--sand-deep);overflow:hidden;margin:6px 0}.tickbar-fill{position:absolute;top:0;bottom:0;left:0;background:linear-gradient(90deg,var(--terracotta),#de9268);border-radius:inherit;transition:width 1s linear}.tickbar-growth .tickbar-fill{background:linear-gradient(90deg,var(--olive),#93a55f)}.tickbar-wonder .tickbar-fill{background:linear-gradient(90deg,var(--wonder),#a98ed1)}.tickbar-raid .tickbar-fill{background:linear-gradient(90deg,var(--sea),var(--sea-light))}.tickbar-danger .tickbar-fill{background:linear-gradient(90deg,#7e2c2c,var(--danger))}.tickbar-label{position:relative;z-index:1;display:block;font-size:12px;font-weight:700;line-height:24px;padding:0 12px;color:var(--ink);text-shadow:0 1px 0 rgba(255,255,255,.35);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stepper{display:inline-flex;align-items:center;gap:8px}.stepper-btn{width:30px;height:30px;border-radius:50%;border:1px solid var(--sand-deep);background:var(--ivory);color:var(--ink);font-size:17px;font-weight:700;line-height:1;cursor:pointer;transition:all .1s ease;display:inline-flex;align-items:center;justify-content:center}.stepper-btn:hover:not(:disabled){background:var(--sand-light);border-color:var(--terracotta)}.stepper-btn:active:not(:disabled){transform:scale(.92)}.stepper-btn:disabled{opacity:.35;cursor:not-allowed}.stepper-val{min-width:26px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.cost{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center}.cost-item{font-variant-numeric:tabular-nums}.cost-item.short{color:#ffb4a0;font-weight:700}.btn:disabled .cost-item.short{color:var(--danger)}.screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px 16px}.screen.splash{justify-content:center;color:var(--ink-soft);font-size:17px}.splash-emoji{font-size:64px;margin-bottom:12px}.home{justify-content:center;gap:28px}.hero{text-align:center}.hero-emoji{font-size:72px;line-height:1;filter:drop-shadow(0 6px 14px rgba(43,34,24,.25))}.hero-title{font-size:clamp(44px,9vw,72px);margin:8px 0 4px;color:var(--sea-deep);letter-spacing:.02em}.hero-tagline{font-family:var(--font-display);font-style:italic;font-size:clamp(15px,3vw,19px);color:var(--ink-soft);margin:0}.home-forms{width:100%;max-width:760px}.nick-field{max-width:360px;margin:0 auto 18px}.nick-field .input{text-align:center;font-size:17px}.home-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}.home-card h2{font-size:20px;color:var(--sea-deep)}.code-input{text-transform:uppercase;letter-spacing:.5em;font-family:var(--font-display);font-size:22px;text-align:center}.home-footer{font-size:13px;color:var(--ink-soft);text-align:center;max-width:560px}@media (max-width: 680px){.home-cards{grid-template-columns:1fr}}.lobby{justify-content:center}.lobby-box{width:100%;max-width:460px;display:flex;flex-direction:column;align-items:center;gap:14px}.lobby-kicker{font-size:14px;color:var(--ink-soft);margin:0;text-transform:uppercase;letter-spacing:.14em}.room-code{display:flex;gap:10px;background:none;border:none;cursor:pointer;padding:0}.code-letter{font-family:var(--font-display);font-size:clamp(40px,11vw,56px);font-weight:700;color:var(--sea-deep);background:var(--ivory);border:1px solid rgba(43,34,24,.08);border-radius:var(--radius);box-shadow:var(--shadow);width:clamp(58px,15vw,76px);padding:8px 0;text-align:center;transition:transform .1s ease}.room-code:hover .code-letter{transform:translateY(-2px)}.room-code:active .code-letter{transform:translateY(1px)}.lobby-hint{font-size:13px;color:var(--ink-soft);margin:0}.lobby-card{width:100%}.lobby-card h2{font-size:18px;color:var(--sea-deep)}.player-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.player-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--sand-light)}.player-row.me{background:#2e6f8e1a}.player-name{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conn-dot{width:9px;height:9px;border-radius:50%;background:#b0a489;flex:none}.conn-dot.on{background:#5ba85b;box-shadow:0 0 0 3px #5ba85b33}.you-tag{font-size:11px;font-weight:700;color:var(--sea);background:#2e6f8e24;border-radius:999px;padding:2px 8px;text-transform:uppercase;letter-spacing:.05em}.lobby-wait{font-size:14px;font-style:italic;color:var(--ink-soft);text-align:center}.topbar{position:sticky;top:0;z-index:60;background:linear-gradient(180deg,var(--sea),var(--sea-deep));color:var(--ivory);box-shadow:0 3px 14px #0d304659}.topbar-inner{max-width:1280px;margin:0 auto;padding:8px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:8px;min-width:0}.brand-emoji{font-size:22px}.brand-name{font-size:19px;font-weight:700}.room-chip{font-size:12px;font-weight:700;letter-spacing:.18em;background:#ffffff1f;border-radius:6px;padding:3px 8px}.res-row{display:flex;gap:14px;flex:1;justify-content:center;flex-wrap:wrap}.res-counter{display:flex;align-items:baseline;gap:5px;background:#ffffff12;border-radius:999px;padding:4px 12px}.res-emoji{font-size:16px}.res-val{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;display:inline-block}.res-val.pulse{animation:res-pulse .55s ease}@keyframes res-pulse{0%{transform:scale(1)}35%{transform:scale(1.22);color:#ffd98c}to{transform:scale(1)}}.res-rate{font-size:11px;color:#a8cfdd;font-variant-numeric:tabular-nums}.res-rate.neg{color:#f0a48c}.status-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.clock{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;background:#ffffff17;border-radius:999px;padding:4px 12px}.clock.amber{color:#ffd98c;background:#d98c2b40}.vp-chip{font-size:15px;font-weight:700;background:#d9a44033;color:#ffe1a3;border-radius:999px;padding:4px 12px;font-variant-numeric:tabular-nums}.peace-badge{font-size:13px;font-weight:700;background:#8fd18f2e;color:#c9eac9;border-radius:999px;padding:4px 12px;font-variant-numeric:tabular-nums}.game{max-width:1280px;margin:0 auto;padding:16px;width:100%}.layout-wide{display:grid;grid-template-columns:minmax(0,1fr) 384px;gap:16px;align-items:start}.layout-narrow{padding-bottom:86px}.city-panel{display:flex;flex-direction:column;gap:14px}.city-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:12px}.building-card.unbuilt{background:linear-gradient(180deg,var(--ivory),#f6efdd)}.building-card.busy,.wonder-card.busy{outline:2px solid var(--terracotta-soft);outline-offset:-1px}.build-btn{width:100%}.wonder-card{background:linear-gradient(160deg,#f8f2e4,#efe2cc);border:1px solid rgba(122,92,168,.3)}.wonder-emoji{font-size:36px}.wonder-stage-chip{margin-left:auto;font-size:12px;font-weight:700;color:var(--wonder);background:#7a5ca81f;border-radius:999px;padding:4px 10px;white-space:nowrap}.wonder-btn{background:linear-gradient(180deg,#8d6fc0,var(--wonder));border-color:#5f4585;box-shadow:0 2px #5f4585,var(--shadow-soft)}.wonder-btn:disabled{background:#cfc3a9;border-color:#b8aa8d;box-shadow:none}.wonder-done{color:var(--wonder);background:#7a5ca81f}.pop-count{font-size:15px;font-weight:700}.pop-note,.pop-warn{font-size:13px;border-radius:var(--radius-sm);padding:9px 12px;margin:6px 0}.pop-note{background:#2e6f8e17;color:var(--sea)}.pop-warn{background:#a33b3b1a;color:var(--danger);font-weight:600}.worker-rows{display:flex;flex-direction:column;gap:8px;margin-top:10px}.worker-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--sand-light);border-radius:var(--radius-sm);padding:7px 12px}.worker-label{font-size:14px;font-weight:600}.idle-row{background:#d9a4401f}.idle-count{font-weight:700;min-width:26px;text-align:center;font-variant-numeric:tabular-nums}.side-panel{background:var(--sea);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.layout-wide .side-panel{position:sticky;top:70px;max-height:calc(100vh - 86px);display:flex;flex-direction:column}.tabs{display:flex;background:var(--sea-deep);padding:6px 6px 0;gap:4px}.tab{flex:1;position:relative;display:flex;align-items:center;justify-content:center;gap:5px;font-family:var(--font-body);font-size:12.5px;font-weight:700;color:#9dbecf;background:transparent;border:none;border-radius:10px 10px 0 0;padding:9px 4px;cursor:pointer;transition:color .12s ease,background .12s ease}.tab.active{color:var(--ink);background:var(--sand-light)}.tab-emoji{font-size:15px}.badge{position:absolute;top:2px;right:6px;min-width:17px;height:17px;border-radius:999px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}.side-content{background:var(--sand-light);padding:14px;overflow-y:auto;flex:1}.panel-title{font-size:18px;color:var(--sea-deep);margin:0 0 12px}.panel-sub{font-size:14px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;margin:18px 0 8px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:70;display:flex;background:var(--sea-deep);padding:6px 8px calc(6px + env(safe-area-inset-bottom));gap:4px;box-shadow:0 -3px 14px #0d304666}.bottom-tab{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;font-family:var(--font-body);font-size:10.5px;font-weight:700;color:#9dbecf;background:transparent;border:none;border-radius:10px;padding:6px 2px;cursor:pointer}.bottom-tab.active{color:#fff;background:#ffffff1f}.bottom-tab .tab-emoji{font-size:19px}.layout-narrow .side-panel{background:transparent;box-shadow:none;border-radius:0}.layout-narrow .side-content{background:transparent;padding:0}.tech-chain{list-style:none;margin:0;padding:0;position:relative}.tech-chain:before{content:"";position:absolute;left:17px;top:18px;bottom:18px;width:2px;background:var(--sand-deep)}.tech-node{position:relative;display:flex;gap:12px;padding:9px 0}.tech-dot{position:relative;z-index:1;flex:none;width:36px;height:36px;border-radius:50%;background:var(--ivory);border:2px solid var(--sand-deep);display:inline-flex;align-items:center;justify-content:center;font-size:16px}.tech-done .tech-dot{background:var(--olive);border-color:#56652f;color:#fff;font-weight:700}.tech-current .tech-dot{border-color:var(--terracotta);box-shadow:0 0 0 4px #c4633e2e}.tech-available .tech-dot{border-color:var(--sea-light)}.tech-locked{opacity:.62}.tech-body{flex:1;min-width:0}.tech-head{display:flex;align-items:baseline;gap:8px}.tech-vp{font-size:11px;font-weight:700;color:var(--gold);margin-left:auto}.tech-desc{font-size:12.5px;color:var(--ink-soft);margin:2px 0 6px}.tech-lock{font-size:12px;color:var(--ink-soft);font-style:italic}.army-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}.army-stat{background:var(--ivory);border:1px solid rgba(43,34,24,.07);border-radius:999px;padding:6px 12px;font-size:14px;font-weight:700;box-shadow:var(--shadow-soft)}.army-stat small{font-weight:500;color:var(--ink-soft)}.unit-trainer{background:var(--ivory);border:1px solid rgba(43,34,24,.07);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:12px;margin-bottom:10px}.unit-head{display:flex;align-items:center;gap:10px}.unit-emoji{font-size:24px}.unit-info{display:flex;flex-direction:column}.unit-stats{font-size:12px;color:var(--ink-soft)}.unit-desc{font-size:12px;color:var(--ink-soft);margin:6px 0 8px}.train-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.incoming-raid{background:#a33b3b1f;border:1px solid rgba(163,59,59,.4);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px}.incoming-head{font-size:13px;font-weight:700;color:var(--danger);margin-bottom:4px}.raid-status{background:var(--ivory);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:12px}.raid-status-head{font-size:14px;font-weight:600;margin-bottom:4px}.raid-launcher{background:var(--ivory);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:12px}.target-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.target{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-body);font-size:14px;background:var(--sand-light);border:2px solid transparent;border-radius:var(--radius-sm);padding:8px 12px;cursor:pointer;text-align:left;transition:border-color .1s ease,background .1s ease}.target:hover{background:var(--sand)}.target.selected{border-color:var(--terracotta);background:#c4633e1a}.target-name{font-weight:700}.target-meta{font-size:12px;color:var(--ink-soft)}.slider-row{display:flex;align-items:center;gap:12px;margin:6px 0}.slider-row input[type=range]{flex:1;accent-color:var(--terracotta)}.slider-val{font-weight:700;min-width:52px;text-align:right;font-variant-numeric:tabular-nums}.military-panel .btn.primary{width:100%;margin-top:4px}.trade-form{background:var(--ivory);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:12px;display:flex;flex-direction:column;gap:10px}.trade-form-row{display:grid;grid-template-columns:70px 1fr 86px;align-items:center;gap:8px}.trade-form-row .select{width:100%}.input.amount{text-align:right;font-variant-numeric:tabular-nums;padding:8px 10px}.trade-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.trade-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--ivory);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:10px 12px}.trade-row.mine{background:#2e6f8e14}.trade-desc{display:flex;flex-direction:column;min-width:0}.trade-terms{font-size:13px;color:var(--ink-soft)}.map-frame{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.map-svg{display:block;width:100%;height:auto}.map-wave{fill:none;stroke:#ffffff1a;stroke-width:2}.island-land{fill:#ead7a6;stroke:#c9ad77;stroke-width:2.5}.island-shore{fill:#ffffff29}.island-huts{font-size:34px}.island-name{font-family:var(--font-body);font-size:25px;font-weight:700;fill:#f2e8d2}.island-meta{font-family:var(--font-body);font-size:21px;fill:#b9d2de}.you-ring{fill:none;stroke:var(--gold);stroke-width:4;stroke-dasharray:10 8;opacity:.9}.ship{transition:transform 1s linear}.results{justify-content:center}.results-box{width:100%;max-width:680px;display:flex;flex-direction:column;align-items:center;gap:22px}.winner-banner{text-align:center}.winner-emoji{font-size:58px}.winner-banner h1{font-size:clamp(24px,5.5vw,36px);color:var(--sea-deep);margin:8px 0 4px}.winner-sub{font-family:var(--font-display);font-style:italic;color:var(--ink-soft);margin:0}.podium{display:flex;align-items:flex-end;gap:14px;width:100%;justify-content:center}.podium-col{flex:1;max-width:200px;display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--ivory);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 12px 0}.podium-col.me{outline:2px solid var(--sea-light)}.podium-medal{font-size:34px}.podium-name{font-family:var(--font-display);font-size:17px;font-weight:700;text-align:center;word-break:break-word}.podium-vp{font-size:14px;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums}.podium-col .vp-bar{width:100%}.podium-base{width:calc(100% + 24px);margin:10px -12px 0;background:linear-gradient(180deg,var(--sand-deep),#d4bf92);border-radius:0 0 var(--radius) var(--radius)}.vp-bar{display:flex;height:14px;border-radius:999px;background:var(--sand-deep);overflow:hidden;margin:4px 0}.vp-seg{height:100%}.standings-rest{width:100%;display:flex;flex-direction:column;gap:8px}.standing-row{display:flex;align-items:center;gap:12px;background:var(--ivory);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:10px 14px}.standing-row.me{outline:2px solid var(--sea-light)}.standing-rank{font-size:18px;font-weight:700;min-width:36px;text-align:center}.standing-main{flex:1;min-width:0}.standing-head{display:flex;align-items:baseline;gap:8px}.standing-vp{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums}.vp-legend{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;font-size:12px;color:var(--ink-soft)}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-item i{width:11px;height:11px;border-radius:3px;display:inline-block}.results .btn.big{max-width:300px}@media (max-width: 560px){.podium{flex-direction:column;align-items:stretch}.podium-col{max-width:none;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px}.podium-base{display:none}.podium-medal{font-size:26px}.podium-col .vp-bar{flex-basis:100%}}.toasts{position:fixed;top:14px;right:14px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(340px,calc(100vw - 28px));pointer-events:none}.toast{display:flex;align-items:flex-start;gap:8px;background:var(--ivory);border-left:4px solid var(--sea-light);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:10px 14px;font-size:13.5px;animation:toast-in .22s ease}.toast-success{border-left-color:var(--olive)}.toast-warning{border-left-color:var(--amber)}.toast-combat{border-left-color:var(--danger);background:#fbf1ec}.toast-msg{line-height:1.35}@keyframes toast-in{0%{transform:translate(24px);opacity:0}to{transform:translate(0);opacity:1}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#0d30469e;display:flex;align-items:center;justify-content:center;padding:16px;animation:fade-in .18s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--ivory);border-radius:var(--radius);box-shadow:0 18px 60px #0d304680;width:100%;max-width:480px;max-height:calc(100vh - 40px);overflow-y:auto;padding:22px;animation:modal-in .2s ease}@keyframes modal-in{0%{transform:translateY(14px) scale(.97);opacity:0}to{transform:none;opacity:1}}.combat-banner{text-align:center;font-size:36px}.combat-title{text-align:center;font-size:22px;color:var(--sea-deep);margin:6px 0 2px}.combat-verdict{text-align:center;font-family:var(--font-display);font-style:italic;color:var(--ink-soft);margin:0 0 16px}.combat-verdict.won{color:var(--olive);font-weight:700}.combat-verdict.lost{color:var(--danger);font-weight:700}.combat-sides{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}.combat-side{background:var(--sand-light);border-radius:var(--radius-sm);padding:10px 12px}.combat-side.winner{outline:2px solid var(--gold)}.combat-side-head{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-bottom:6px}.combat-role{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.combat-laurel{margin-left:auto}.combat-vs{align-self:center;font-family:var(--font-display);font-style:italic;color:var(--ink-soft)}.power-row{display:flex;align-items:center;gap:8px}.power-bar{flex:1;height:10px;background:var(--sand-deep);border-radius:999px;overflow:hidden}.power-fill{height:100%;border-radius:inherit}.power-fill.atk{background:var(--terracotta)}.power-fill.def{background:var(--sea-light)}.power-num{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;min-width:38px;text-align:right}.combat-loss{font-size:12.5px;color:var(--ink-soft);margin:6px 0 0}.loot-box{margin-top:14px;background:#d9a4401a;border:1px solid rgba(217,164,64,.35);border-radius:var(--radius-sm);padding:10px 14px}.loot-box h3{font-size:14px;color:var(--ink);margin:0 0 6px}.loot-grid{display:flex;gap:14px;flex-wrap:wrap}.loot-item{font-weight:700;font-variant-numeric:tabular-nums}.loot-empty{font-size:13px;font-style:italic;color:var(--ink-soft);margin:0}.modal-close{width:100%;margin-top:18px}.conn-banner{position:fixed;top:0;left:0;right:0;z-index:400;background:var(--danger);color:#fff;text-align:center;font-size:13px;font-weight:700;padding:7px 12px}@media (max-width: 920px){.topbar-inner{padding:6px 10px;gap:8px}.brand-name{display:none}.res-row{order:3;flex-basis:100%;justify-content:space-between;gap:6px}.res-counter{padding:3px 8px;gap:4px}.res-val{font-size:15px}.status-row{margin-left:auto}.game{padding:12px}.city-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px}.card{padding:13px}}@media (max-width: 420px){.res-rate{display:none}.clock,.vp-chip,.peace-badge{font-size:13px;padding:3px 9px}.city-grid{grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}:root{--dur-quick: .14s;--dur-move: .28s;--dur-grand: .7s;--ease-pop: cubic-bezier(.2, .9, .3, 1.4);--ease-glide: cubic-bezier(.3, .7, 0, 1)}.fx-num{display:inline-block;font-variant-numeric:tabular-nums}.fx-num.gain{animation:fx-gain .6s var(--ease-pop);color:var(--olive)}.fx-num.dip{animation:fx-dip .6s ease;color:var(--danger)}@keyframes fx-gain{0%{transform:translateY(0)}30%{transform:translateY(-3px) scale(1.14)}to{transform:none}}@keyframes fx-dip{0%{transform:translateY(0)}30%{transform:translateY(3px) scale(.94)}to{transform:none}}.burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:6}.burst-p{position:absolute;width:7px;height:7px;margin:-3.5px;border-radius:50%;background:var(--gold);animation:burst-fly .85s ease-out forwards;animation-delay:var(--bd, 0ms)}.burst-sea .burst-p{background:var(--sea-light)}.burst-wonder .burst-p{background:var(--wonder)}.burst-core{position:absolute;width:26px;height:26px;margin:-13px;border-radius:50%;border:3px solid rgba(217,164,64,.8);animation:burst-ring .6s ease-out forwards}.burst-wonder .burst-core{border-color:#7a5ca8cc}@keyframes burst-fly{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--bx),var(--by)) scale(.25);opacity:0}}@keyframes burst-ring{0%{transform:scale(.3);opacity:.9}to{transform:scale(2);opacity:0}}.card{position:relative;transition:transform var(--dur-move) var(--ease-glide),box-shadow var(--dur-move) ease,outline-color var(--dur-quick) ease}.city-grid .card:hover,.side-content .card:hover{transform:translateY(-3px);box-shadow:0 4px 10px #2b22181a,0 16px 38px #2b22181f}.card.hl{outline:2px solid var(--gold);outline-offset:-1px;box-shadow:0 0 0 4px #d9a4402e,var(--shadow)}.building-card.busy,.wonder-card.busy{animation:busy-glow 2.2s ease-in-out infinite}@keyframes busy-glow{0%,to{outline-color:var(--terracotta-soft)}50%{outline-color:var(--terracotta)}}.tickbar-fill{position:relative;overflow:hidden}.tickbar-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);background-size:220% 100%;animation:bar-sheen 1.8s linear infinite}@keyframes bar-sheen{0%{background-position:180% 0}to{background-position:-80% 0}}@media (prefers-reduced-motion: reduce){.fx-num.gain,.fx-num.dip,.burst-p,.burst-core,.tickbar-fill:after,.building-card.busy,.wonder-card.busy{animation:none!important}.card,.ship-mover{transition:none!important}.city-grid .card:hover,.side-content .card:hover{transform:none}}.sound-toggle{position:fixed;left:14px;bottom:14px;z-index:60;width:40px;height:40px;border-radius:50%;border:1px solid rgba(13,48,70,.18);background:#faf4e6d1;font-size:17px;line-height:1;cursor:pointer;opacity:.65;box-shadow:0 2px 8px #0d30462e;transition:opacity var(--dur-snap, .12s),transform var(--dur-snap, .12s)}.sound-toggle:hover{opacity:1;transform:scale(1.08)}.sound-toggle:active{transform:scale(.94)}@media (max-width: 680px){.sound-toggle{left:10px;bottom:72px}}.event-badge{font-size:13px;font-weight:700;background:#d9a44038;color:#ffe3a3;border-radius:999px;padding:4px 12px;font-variant-numeric:tabular-nums;animation:event-badge-pulse 2.4s ease-in-out infinite}.event-emoji{display:inline-block;margin-right:2px}@keyframes event-badge-pulse{0%,to{opacity:1}50%{opacity:.75}}.toast-event{border-left-color:var(--gold, #d9a440);background:#fdf6e7}@media (prefers-reduced-motion: reduce){.event-badge{animation:none}}.objectives-bar{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;padding:6px 10px 0}.obj-chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:999px;background:#faf4e6cc;border:1px dashed rgba(13,48,70,.3);color:var(--ink, #2a3540);animation:obj-in var(--dur-move, .3s) var(--ease-glide, ease-out) backwards}.obj-chip .obj-vp{opacity:.6;font-variant-numeric:tabular-nums}.obj-chip.claimed{border-style:solid;border-color:#d9a440a6;background:#d9a4402e}.obj-chip.claimed .obj-name{opacity:.55}.obj-chip .obj-claimant{font-weight:700;color:#8a6300}.obj-chip.mine .obj-claimant{color:#1f7a33}@keyframes obj-in{0%{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion: reduce){.obj-chip{animation:none}}.emote-picker{position:fixed;right:14px;bottom:14px;z-index:60;display:flex;align-items:center;gap:8px}.emote-toggle{width:40px;height:40px;border-radius:50%;border:1px solid rgba(13,48,70,.18);background:#faf4e6d1;font-size:17px;line-height:1;cursor:pointer;opacity:.65;box-shadow:0 2px 8px #0d30462e;transition:opacity var(--dur-snap, .12s),transform var(--dur-snap, .12s)}.emote-toggle:hover,.emote-picker.open .emote-toggle{opacity:1;transform:scale(1.08)}.emote-row{display:flex;gap:4px;padding:6px 8px;background:#faf4e6f2;border:1px solid rgba(13,48,70,.18);border-radius:999px;box-shadow:0 4px 14px #0d304638;animation:emote-row-in var(--dur-pop, .25s) var(--ease-pop, ease-out)}.emote-btn{border:none;background:none;font-size:20px;line-height:1;padding:4px;border-radius:8px;cursor:pointer;transition:transform var(--dur-snap, .12s)}.emote-btn:hover{transform:scale(1.25)}@keyframes emote-row-in{0%{opacity:0;transform:translate(12px) scale(.92)}}.emote-overlay{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:70;display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none}.emote-pop{display:flex;align-items:center;gap:8px;padding:4px 14px;background:#faf4e6eb;border:1px solid rgba(13,48,70,.15);border-radius:999px;box-shadow:0 4px 12px #0d30462e;animation:emote-pop-in var(--dur-pop, .25s) var(--ease-pop, ease-out),emote-pop-out .5s ease 2.5s forwards}.emote-big{font-size:26px;line-height:1;display:inline-block;animation:emote-bounce .5s var(--ease-pop, ease-out)}.emote-who{font-size:13px;font-weight:700;color:var(--ink, #2a3540)}@keyframes emote-pop-in{0%{opacity:0;transform:translateY(-10px) scale(.8)}}@keyframes emote-pop-out{to{opacity:0;transform:translateY(-6px)}}@keyframes emote-bounce{0%{transform:scale(.4)}60%{transform:scale(1.25)}to{transform:scale(1)}}@media (max-width: 680px){.emote-picker{right:10px;bottom:72px}}@media (prefers-reduced-motion: reduce){.emote-row,.emote-pop,.emote-big{animation:none}}.trait-tag{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:#0d304612;border:1px solid rgba(13,48,70,.12);white-space:nowrap}.topbar .trait-chip{cursor:help}.advisor{display:flex;align-items:center;gap:8px;max-width:720px;margin:6px auto 0;padding:6px 12px;font-size:13px;border-radius:10px;background:#fff4d6eb;border:1px solid rgba(217,164,64,.45);color:var(--ink, #2a3540);animation:advisor-in var(--dur-move, .3s) var(--ease-glide, ease-out)}.advisor-lamp{flex:none;animation:advisor-glow 2.4s ease-in-out infinite}.advisor-text{flex:1;min-width:0}.advisor-mute{flex:none;border:none;background:none;font-size:11px;color:#2a35408c;text-decoration:underline;cursor:pointer;padding:2px 4px}.advisor-dismiss{flex:none;border:none;background:none;font-size:13px;color:#2a354099;cursor:pointer;padding:2px 6px;border-radius:6px}.advisor-dismiss:hover{background:#d9a44033}@keyframes advisor-in{0%{opacity:0;transform:translateY(-6px)}}@keyframes advisor-glow{0%,to{opacity:1}50%{opacity:.55}}@media (max-width: 680px){.advisor{margin:6px 10px 0}}.howto-modal{max-width:560px;text-align:left}.howto-modal h2{margin-top:0}.howto-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:9px;font-size:14px;line-height:1.45}.howto-list li{display:flex;gap:10px}.howto-emoji{flex:none;width:22px;text-align:center}.howto-btn{white-space:nowrap}.home-footer .howto-btn{margin-left:10px}.lobby-links{display:flex;justify-content:center;gap:18px}@media (prefers-reduced-motion: reduce){.advisor,.advisor-lamp{animation:none}}
