:root{--bg: #fbf1de;--bg-2: #f4e2c2;--panel: #fffaf2;--panel-2: #f7ecd8;--line: #ead7b6;--line-strong: #d9bf95;--ink: #3d2e24;--muted: #8a7563;--accent: #ff7a3d;--accent-dark: #d65a1d;--accent-soft: #ffe3cf;--ok: #2fa64f;--ok-dark: #1f7f3a;--ok-soft: #dcf3e1;--danger: #e5484d;--danger-dark: #b8343a;--gold: #f5b82e;--gold-dark: #c98e0c;--wood: #c48d57;--wood-dark: #8f5f33;--sky-top: #9fd9ee;--sky-bottom: #e6f5ee;--radius: 18px;--radius-sm: 12px;--chunk: 0 4px 0 rgba(120, 80, 40, .18);--soft: 0 14px 34px rgba(90, 60, 30, .16);--font-display: "Fredoka", "Nunito", system-ui, sans-serif;--font-body: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:radial-gradient(circle at 15% 10%,rgba(255,255,255,.7),transparent 40%),radial-gradient(circle at 85% 90%,rgba(255,214,170,.45),transparent 45%),var(--bg);color:var(--ink);font:15px/1.5 var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:.01em}button,input,select{font:inherit;color:inherit}button{font-family:var(--font-display);font-weight:500;background:#fff;border:2px solid var(--line);border-radius:var(--radius-sm);padding:7px 14px;cursor:pointer;box-shadow:0 3px 0 var(--line);transition:transform .08s,box-shadow .08s,background .12s,border-color .12s;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}button:hover:not(:disabled){background:#fffdf8;border-color:var(--line-strong)}button:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 0 var(--line)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent-dark);color:#fff;font-weight:600;box-shadow:0 4px 0 var(--accent-dark);text-shadow:0 1px 0 rgba(0,0,0,.15)}button.primary:hover:not(:disabled){background:#ff8a52;border-color:var(--accent-dark)}button.primary:active:not(:disabled){box-shadow:0 0 0 var(--accent-dark);transform:translateY(4px)}button.good{background:var(--ok);border-color:var(--ok-dark);color:#fff;font-weight:600;box-shadow:0 4px 0 var(--ok-dark)}button.good:hover:not(:disabled){background:#39b75b;border-color:var(--ok-dark)}button.good:active:not(:disabled){box-shadow:0 0 0 var(--ok-dark);transform:translateY(4px)}button.ghost{background:transparent;box-shadow:none;border-color:transparent}button.ghost:hover:not(:disabled){background:var(--panel-2);border-color:var(--line)}button.ghost:active:not(:disabled){transform:translateY(1px)}button.big{padding:12px 22px;font-size:18px;border-radius:16px}button.danger{color:var(--danger)}button.round{border-radius:99px;padding:7px;width:40px;height:40px}input,select{background:#fff;border:2px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;box-shadow:inset 0 2px #7850280f}input:focus,select:focus,button:focus-visible{outline:3px solid rgba(255,122,61,.45);outline-offset:1px}input[type=range]{accent-color:var(--accent);padding:0;box-shadow:none;border:0;background:none}input[type=checkbox]{accent-color:var(--accent);width:20px;height:20px}a{color:var(--accent-dark)}.muted{color:var(--muted)}.error-text{color:var(--danger);font-weight:600}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.spacer{flex:1}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;flex:none;box-shadow:inset 0 -2px #0000002e}.dot.big{width:18px;height:18px}.icon{flex:none;vertical-align:-.2em}.center-msg{height:100%;display:grid;place-content:center;text-align:center;gap:8px;color:var(--muted);font-family:var(--font-display);font-size:18px}.logo{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-family:var(--font-display);font-weight:700;letter-spacing:.01em}.logo svg{filter:drop-shadow(0 2px 0 rgba(120,80,40,.25))}.logo .word{font-size:26px;line-height:1}.logo .word b{color:var(--accent)}.logo.huge .word{font-size:64px}.card-box{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:18px;min-width:0;box-shadow:var(--chunk)}.card-box h3{margin:0 0 12px;font-size:19px;display:flex;align-items:center;gap:8px}.tag{font-size:12px;font-weight:700;padding:2px 9px;border-radius:99px;background:var(--panel-2);color:var(--muted);white-space:nowrap}.tag.ok{color:var(--ok-dark);background:var(--ok-soft)}.tag.warn{color:#fff;background:var(--danger)}.tag.host{color:var(--gold-dark);background:#fff1cc}.field{display:grid;gap:6px}.field>span{font-size:14px;font-weight:700;color:var(--ink);font-family:var(--font-display);display:flex;align-items:center;gap:6px}.field .hint{font-size:13px;color:var(--muted)}.info{position:relative;display:inline-flex;color:var(--muted);cursor:help}.info:hover:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);width:240px;padding:9px 12px;border-radius:12px;background:var(--ink);color:#fff;font:13px/1.4 var(--font-body);font-weight:600;z-index:100;box-shadow:var(--soft);pointer-events:none}.modal-backdrop{position:fixed;inset:0;background:#3d2e2480;display:grid;place-items:center;z-index:80;padding:16px;backdrop-filter:blur(3px);animation:fade .15s ease-out}.modal{background:var(--panel);border:3px solid var(--line);border-radius:24px;padding:24px;max-width:760px;width:100%;max-height:90vh;overflow-y:auto;display:grid;gap:14px;box-shadow:0 6px 0 var(--line-strong),var(--soft);animation:pop .22s cubic-bezier(.2,1.4,.4,1)}.modal h2{margin:0;font-size:28px;display:flex;align-items:center;gap:10px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:scale(.85);opacity:0}}.home{max-width:1200px;margin:0 auto;padding:36px 16px 56px;display:grid;gap:28px}.hero>*{min-width:0}.hero{display:grid;grid-template-columns:minmax(300px,430px) 1fr;gap:28px;align-items:stretch}.home-card{grid-template-columns:minmax(0,1fr);background:var(--panel);border:3px solid var(--line);border-radius:28px;padding:30px;display:grid;gap:16px;align-content:start;box-shadow:0 6px 0 var(--line-strong),var(--soft)}.home-card .lead{color:var(--muted);margin:0;font-size:17px}.home-card .or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.home-card .or:before,.home-card .or:after{content:"";flex:1;height:2px;background:var(--line)}.join{display:flex;gap:8px}.join input{flex:1;min-width:0;letter-spacing:.35em;text-transform:uppercase;font-weight:800;text-align:center;font-family:var(--font-display);font-size:18px}.hero-board{position:relative;border-radius:28px;overflow:hidden;background:linear-gradient(var(--sky-top),var(--sky-bottom));border:3px solid #fff;box-shadow:0 6px 0 var(--line-strong),var(--soft);min-height:420px;display:flex;flex-direction:column}.hero-board .board-preview{flex:1;min-height:340px}.hero-board .map-switch{position:absolute;top:16px;left:16px}.hero-board .preview-legend{position:absolute;left:16px;right:16px;bottom:14px}.hero-board .attribution{position:absolute;right:14px;top:18px;font-size:11px;color:#3d2e248c;max-width:40%;text-align:right}.segmented{display:inline-flex;flex-wrap:wrap;background:var(--panel-2);border:2px solid var(--line);border-radius:14px;padding:3px;gap:3px;width:fit-content;max-width:100%}.segmented button{border:0;box-shadow:none;border-radius:10px;background:transparent;padding:6px 12px;font-size:14px}.segmented button:hover:not(:disabled){background:#ffffffb3}.segmented button.on{background:#fff;color:var(--accent-dark);font-weight:600;box-shadow:0 2px 0 var(--line-strong)}.settings-form:disabled .segmented button:not(.on){opacity:.55}.preview-legend{display:flex;flex-wrap:wrap;gap:6px;font-size:13px;font-weight:700}.preview-legend span{background:#ffffffe0;border-radius:99px;padding:3px 10px 3px 6px;display:inline-flex;align-items:center;gap:6px;box-shadow:0 2px #78502826}.preview-legend i{display:inline-block;width:12px;height:12px;border-radius:4px}.preview-legend b{color:var(--accent-dark)}.how h2{margin:0 0 14px;font-size:26px;text-align:center}.how-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.how-card{background:var(--panel);border:3px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--chunk);display:grid;gap:8px;align-content:start;position:relative}.how-card .num{position:absolute;top:-12px;right:16px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;font-family:var(--font-display);font-weight:700;display:grid;place-items:center;box-shadow:0 3px 0 var(--accent-dark)}.how-card .art{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -4px #00000026}.how-card h3{margin:0;font-size:19px}.how-card p{margin:0;color:var(--muted);font-size:14px}.how-foot{text-align:center;margin-top:14px;color:var(--muted);font-size:14px}.kbd{display:inline-block;font-family:var(--font-display);font-size:12px;padding:1px 7px;border:2px solid var(--line);border-bottom-width:3px;border-radius:7px;background:#fff;color:var(--ink)}.lobby{max-width:1280px;margin:0 auto;padding:20px 16px 40px}.lobby-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.code-box{display:flex;align-items:center;gap:12px;background:var(--panel);border:2px solid var(--line);border-radius:18px;padding:8px 10px 8px 16px;box-shadow:var(--chunk);flex-wrap:wrap}.code{font-size:30px;letter-spacing:.25em;font-family:var(--font-display);font-weight:700;color:var(--accent-dark)}.lobby-grid{display:grid;grid-template-columns:340px 1fr 380px;gap:18px;align-items:start}.lobby-col{display:grid;gap:18px;min-width:0}.seats{display:flex;flex-direction:column;gap:8px}.seat{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:14px;background:#fff;border:2px solid var(--line)}.seat.you{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.seat .avatar{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -3px #0003;flex:none}.seat .sname{flex:1;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat .name-input{flex:1;min-width:0;padding:4px 8px;font-weight:700}.seat .x{padding:4px;box-shadow:none;border:0;background:none;color:var(--muted)}.seat.empty{border-style:dashed;background:transparent;color:var(--muted);justify-content:center;font-weight:600;min-height:56px}.colors{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:10px 0 6px}.colors .muted{width:100%;font-size:13px;font-weight:700}.color{width:32px;height:32px;border-radius:10px;padding:0;border:3px solid #fff;box-shadow:0 2px #0000002e}.color.on{outline:3px solid var(--ink);outline-offset:1px}.color:disabled{opacity:.25}.bot-add{display:flex;gap:8px;flex-wrap:wrap}.start{display:grid;gap:8px;padding-top:14px;border-top:2px dashed var(--line);margin-top:6px}.start p{margin:0;font-size:14px}.settings-form{border:0;margin:0;padding:0;display:grid;gap:16px}.settings-form h4{margin:6px 0 -4px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.field.toggle{grid-template-columns:1fr auto;align-items:center}.field.toggle .hint{grid-column:1 / -1}.field.range{grid-template-columns:minmax(0,220px) auto;align-items:center;justify-content:start;gap:6px 12px}.field.range>span{grid-column:1 / -1}.field.range input{width:100%}.extras{border:2px dashed var(--line);border-radius:16px;padding:4px 14px}.extras summary{cursor:pointer;font-family:var(--font-display);font-weight:600;padding:8px 0;list-style:none;display:flex;align-items:center;gap:8px}.extras summary::-webkit-details-marker{display:none}.extras[open] summary{margin-bottom:8px}.extras .settings-sub{display:grid;gap:16px;padding-bottom:14px}.lobby-preview{padding:0;overflow:hidden;background:linear-gradient(var(--sky-top),var(--sky-bottom));border-color:#fff;position:relative}.lobby-preview .board-preview{height:260px}.lobby-preview .preview-legend{padding:0 12px 12px}.lobby-preview .map-title{position:absolute;top:12px;left:14px;font-family:var(--font-display);font-weight:600;font-size:18px;background:#ffffffe0;padding:2px 12px;border-radius:99px}.lobby-chat{display:flex;flex-direction:column;height:300px;padding:0;overflow:hidden}.lobby-chat h3{padding:14px 16px 0}.board-preview{width:100%;height:100%;min-height:200px}@media (max-width: 1100px){.lobby-grid{grid-template-columns:1fr 1fr}.lobby-col.side{grid-column:1 / -1;grid-template-columns:1fr 1fr}}@media (max-width: 900px){.hero{grid-template-columns:minmax(0,1fr)}.hero-board{min-height:340px}.how-grid{grid-template-columns:1fr 1fr}.lobby-grid,.lobby-col.side{grid-template-columns:1fr}.logo.huge .word{font-size:48px}}@media (max-width: 520px){.how-grid{grid-template-columns:1fr}.home{padding:20px 12px 40px}.hero-board .preview-legend{position:static;padding:0 12px 12px}button.big{white-space:normal}.home-card{padding:22px}.code{font-size:24px}}.game{height:100%;display:grid;grid-template-columns:1fr 310px;grid-template-rows:66px 1fr;grid-template-areas:"top top" "table side"}.topbar{grid-area:top;display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--panel);border-bottom:3px solid var(--line);z-index:40;position:relative}.topbar .logo .word{font-size:22px}.chip{padding:6px 12px;border-radius:14px;font-size:14px}.chip b{background:var(--accent);color:#fff;border-radius:99px;padding:0 7px;font-size:12px;min-width:20px}.chip.icon{padding:7px}.chip.pulse{animation:chipPulse 1.4s ease-in-out infinite}@keyframes chipPulse{50%{box-shadow:0 3px 0 var(--line),0 0 0 5px var(--accent-soft)}}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 8px);background:var(--panel);border:2px solid var(--line);border-radius:16px;padding:8px;display:grid;gap:4px;min-width:240px;z-index:60;box-shadow:var(--soft)}.menu button{justify-content:flex-start;box-shadow:none;border-color:transparent;background:transparent}.menu button:hover:not(:disabled){background:var(--panel-2)}.menu-code{padding:6px 10px;color:var(--muted);font-size:13px}.phasebar{display:flex;align-items:center;gap:10px;min-width:0}.turn-who{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:600;white-space:nowrap;padding:4px 12px 4px 4px;border-radius:99px;background:var(--panel-2)}.turn-who .avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -3px #0003}.turn-who.me{background:var(--accent-soft);color:var(--accent-dark)}.turn-who small{color:var(--muted);font-weight:500}.steps{display:flex;align-items:center;gap:4px}.step{display:flex;align-items:center;gap:6px;padding:5px 12px 5px 6px;border-radius:99px;font-family:var(--font-display);font-weight:500;font-size:14px;color:var(--muted);white-space:nowrap;transition:background .2s,color .2s}.step .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--panel-2);border:2px solid var(--line);font-size:12px;font-weight:700}.step.done{color:var(--ok-dark)}.step.done .n{background:var(--ok);border-color:var(--ok-dark);color:#fff}.step.now{background:var(--accent);color:#fff;box-shadow:0 3px 0 var(--accent-dark)}.step.now .n{background:#fff;border-color:#fff;color:var(--accent-dark)}.steps .sep{width:14px;height:2px;background:var(--line);border-radius:2px}.setup-pill{font-family:var(--font-display);font-weight:600;background:var(--gold);color:#5a3d00;padding:5px 14px;border-radius:99px;box-shadow:0 3px 0 var(--gold-dark);white-space:nowrap}.round{color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}.timer{position:relative;width:44px;height:44px;display:grid;place-items:center;flex:none}.timer svg{position:absolute;inset:0}.timer .track{fill:#fff;stroke:var(--line);stroke-width:4}.timer .fill{fill:none;stroke:var(--muted);stroke-width:4;stroke-linecap:round;transition:stroke-dasharray .25s linear}.timer.mine .fill{stroke:var(--accent)}.timer.warn .fill{stroke:var(--danger)}.timer.warn{animation:shake .5s ease-in-out infinite}.timer span{font-family:var(--font-display);font-size:14px;font-weight:700;position:relative}@keyframes shake{25%{transform:rotate(-6deg)}75%{transform:rotate(6deg)}}.table{grid-area:table;position:relative;overflow:hidden;background:linear-gradient(180deg,var(--sky-top) 0%,#c7ebef 45%,var(--sky-bottom) 100%)}.board3d{position:absolute;inset:0}.board3d canvas{touch-action:none}.board-loading{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--font-display);font-size:20px;color:var(--muted)}.troops{min-width:30px;height:30px;padding:0 7px;border-radius:99px;border:3px solid #fff;color:#fff;font:700 16px/24px var(--font-display);text-align:center;box-shadow:0 3px #00000040,0 6px 12px #00000026;text-shadow:0 1px 0 rgba(0,0,0,.3);user-select:none;transition:transform .15s}.troops.option{animation:badgeBob 1.2s ease-in-out infinite}.troops.selected{transform:scale(1.25);border-color:#fff;box-shadow:0 0 0 4px #fff9,0 3px #00000040}.troops.target{transform:scale(1.2);border-color:#ffd23f;box-shadow:0 0 0 4px #ffd23f99,0 3px #00000040}.troops.dim{opacity:.6}.troops.hidden{font-size:14px}@keyframes badgeBob{50%{transform:translateY(-4px)}}.tlabel{position:relative;display:flex;justify-content:center}.tname{position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%);background:#fffaf2f2;color:var(--ink);border-radius:99px;padding:1px 9px;font:600 12px/1.5 var(--font-display);white-space:nowrap;box-shadow:0 2px #78502833;text-align:center;user-select:none}.snowflake{font-size:22px;color:#6aa7d8;text-shadow:0 2px 0 #fff;user-select:none}.overlay-left{position:absolute;left:12px;top:12px;display:grid;gap:10px;width:250px;pointer-events:none;z-index:30}.legend,.tinfo{background:#fffaf2f2;border:2px solid var(--line);border-radius:16px;padding:10px 12px;font-size:13px;pointer-events:auto;box-shadow:var(--chunk)}.legend h4,.tinfo h4{margin:0 0 6px;font-size:15px;display:flex;align-items:center;gap:6px}.legend-head{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}.legend-head h4{margin:0;flex:1}.legend-rows{margin-top:6px}.legend-row{display:flex;align-items:center;gap:7px;padding:3px 6px;margin:0 -6px;border-radius:10px;cursor:default}.legend-row:hover{background:var(--panel-2)}.legend-row .cname{flex:1;font-weight:700}.legend-row .swatch{width:14px;height:14px;border-radius:5px;box-shadow:inset 0 -2px #0003}.legend-row .progress{color:var(--muted);font-size:12px;font-weight:700}.legend-row .bonus{font-family:var(--font-display);font-weight:600;padding:0 8px;border-radius:99px;background:var(--panel-2);min-width:34px;text-align:center}.legend-row .bonus.mine{background:var(--ok);color:#fff}.legend .note{margin:6px 0 0;color:var(--muted);font-size:12px}.tinfo .owner{display:flex;align-items:center;gap:6px;margin:4px 0;font-weight:700}.tinfo .line{display:flex;align-items:center;gap:6px;margin:2px 0}.tinfo .places{color:var(--muted);font-size:12px;margin-top:6px}.tinfo .neighbours{font-size:12px;margin-top:4px}.view-tools{position:absolute;right:12px;top:12px;display:grid;gap:8px;z-index:30}.view-tools button{width:42px;height:42px;padding:0;border-radius:14px}.view-tools button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}.panel{position:absolute;left:50%;bottom:16px;transform:translate(-50%);width:min(880px,calc(100% - 32px));background:var(--panel);border:3px solid var(--line);border-radius:22px;box-shadow:0 5px 0 var(--line-strong),var(--soft);z-index:35;animation:rise .25s ease-out}@keyframes rise{0%{transform:translate(-50%,16px);opacity:0}}.panel.highlight{border-color:var(--gold);box-shadow:0 5px 0 var(--gold-dark),var(--soft)}.panel.mine{border-color:var(--accent);box-shadow:0 5px 0 var(--accent-dark),var(--soft)}.coach{display:flex;align-items:center;gap:12px;padding:10px 14px 10px 10px}.coach .mascot{flex:none;margin:-26px 0 -6px;filter:drop-shadow(0 3px 0 rgba(120,80,40,.2))}.coach .say{flex:1;min-width:0}.coach .say b.title{display:block;font-family:var(--font-display);font-weight:600;font-size:17px;line-height:1.25}.coach .say span{color:var(--muted);font-size:14px}.coach .hide{padding:4px;box-shadow:none;border:0;background:none;color:var(--muted);align-self:flex-start}.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px 12px;border-top:2px dashed var(--line)}.controls .big{font-size:17px}.controls .what{font-weight:700;display:inline-flex;align-items:center;gap:6px}.controls .what .dot{width:14px;height:14px}.count-pill{font-family:var(--font-display);font-weight:700;font-size:20px;color:#fff;background:var(--accent);border-radius:14px;padding:2px 12px;box-shadow:0 3px 0 var(--accent-dark)}.slider{display:inline-flex;align-items:center;gap:6px}.slider input{width:150px}.slider button{padding:4px;width:32px;height:32px;border-radius:10px}.slider .all{width:auto;padding:4px 10px;font-size:13px}.slider-value{min-width:34px;text-align:center;font-family:var(--font-display);font-size:20px;font-weight:700}.dice-pick{display:inline-flex;background:var(--panel-2);border:2px solid var(--line);border-radius:12px;padding:2px;gap:2px}.dice-pick button{border:0;box-shadow:none;border-radius:9px;padding:4px 9px;background:transparent}.dice-pick button.on{background:#fff;color:var(--accent-dark);font-weight:700;box-shadow:0 2px 0 var(--line-strong)}.stop{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:600;font-size:14px}.stop input{width:60px;padding:4px 6px;text-align:center}.odds{font-family:var(--font-display);font-weight:700;padding:3px 10px;border-radius:99px;background:#fff1cc;color:var(--gold-dark);display:inline-flex;align-items:center;gap:4px}.odds.good{background:var(--ok-soft);color:var(--ok-dark)}.odds.bad{background:#ffe0e0;color:var(--danger-dark)}.vs-line{display:inline-flex;align-items:center;gap:8px;font-weight:700}.vs-line .troops-mini{font-family:var(--font-display);color:#fff;border-radius:99px;padding:0 8px;font-size:13px}.battle{position:absolute;left:50%;top:14px;transform:translate(-50%);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:4px 10px;background:var(--panel);border:3px solid var(--line);border-radius:22px;padding:10px 16px 12px;box-shadow:0 5px 0 var(--line-strong),var(--soft);animation:drop .25s cubic-bezier(.2,1.4,.4,1);cursor:pointer;z-index:45;width:min(460px,calc(100% - 24px))}@keyframes drop{0%{transform:translate(-50%,-20px);opacity:0}}.battle .side{display:grid;justify-items:center;gap:0;min-width:0}.battle .side.def{justify-items:center}.battle .who{font-family:var(--font-display);font-weight:600;font-size:16px;display:flex;align-items:center;gap:6px}.battle .where{font-size:12px;color:var(--muted);font-weight:700}.battle .loss{font-family:var(--font-display);font-weight:700;font-size:18px;color:var(--danger)}.battle .loss.zero{color:var(--ok)}.battle .vs{color:var(--accent)}.battle .dice-row{grid-column:1 / -1}.battle .blitz{grid-column:1 / -1;text-align:center;font-family:var(--font-display);color:var(--muted);display:flex;align-items:center;justify-content:center;gap:6px}.dice3d{width:100%;height:110px}.turn-banner{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);z-index:50;pointer-events:none;font-family:var(--font-display);font-weight:700;font-size:54px;color:#fff;background:var(--accent);padding:10px 34px;border-radius:26px;box-shadow:0 7px 0 var(--accent-dark),var(--soft);text-shadow:0 3px 0 rgba(0,0,0,.18);animation:banner 2s ease-in-out forwards;white-space:nowrap}.turn-banner small{display:block;font-size:18px;font-weight:500;text-align:center}@keyframes banner{0%{transform:translate(-50%,-50%) scale(.4) rotate(-6deg);opacity:0}15%{transform:translate(-50%,-50%) scale(1.08) rotate(2deg);opacity:1}25%{transform:translate(-50%,-50%) scale(1) rotate(0)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-70%) scale(.95)}}.mission-card{position:absolute;right:64px;top:12px;width:290px;background:#fff7d6;border:3px solid var(--gold);border-radius:18px;padding:14px 16px;cursor:pointer;z-index:40;box-shadow:0 5px 0 var(--gold-dark),var(--soft);animation:pop .2s ease-out}.mission-card h3{margin:0 0 6px;font-size:16px;color:var(--gold-dark);display:flex;align-items:center;gap:6px}.mission-card p{margin:0;font-weight:600}.toast{position:absolute;left:50%;bottom:190px;transform:translate(-50%);padding:10px 16px;border-radius:14px;background:var(--panel);border:2px solid var(--line);font-weight:700;z-index:50;box-shadow:var(--soft);animation:pop .2s ease-out}.toast.error{border-color:var(--danger);color:var(--danger-dark);background:#fff3f3}.sidebar{grid-area:side;display:flex;flex-direction:column;background:var(--panel);border-left:3px solid var(--line);min-height:0}.players{padding:12px;display:grid;gap:6px;border-bottom:2px solid var(--line)}.player{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:14px;border:2px solid transparent;transition:background .2s}.player .avatar{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -3px #0003;flex:none;position:relative}.player.active{background:#fff;border-color:var(--accent);box-shadow:0 3px 0 var(--accent-soft)}.player.active .avatar:after{content:"";position:absolute;right:-4px;top:-4px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #fff;animation:chipPulse 1.4s infinite}.player.out{opacity:.45}.player.out .pname{text-decoration:line-through}.player .pinfo{flex:1;min-width:0}.player .pname{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:4px}.player .pname small{color:var(--muted);font-weight:600}.player .stats{display:flex;gap:8px;font-size:12px;color:var(--muted);font-weight:700}.player .stats span{display:inline-flex;align-items:center;gap:3px}.tabs{display:flex;padding:8px 10px 0;gap:4px;border-bottom:2px solid var(--line)}.tabs button{flex:1;border:0;box-shadow:none;border-radius:12px 12px 0 0;background:transparent;padding:8px;color:var(--muted)}.tabs button.on{color:var(--ink);background:var(--panel-2)}.badge-count{background:var(--accent);color:#fff;border-radius:99px;padding:0 7px;font-size:11px;font-weight:800}.log{flex:1;overflow-y:auto;padding:10px 12px;font-size:13px;display:flex;flex-direction:column;gap:4px;min-height:0}.log-line{border-left:4px solid;padding:3px 0 3px 9px;border-radius:2px;animation:fade .3s ease-out}.chat{flex:1;display:flex;flex-direction:column;min-height:0}.chat-lines{flex:1;overflow-y:auto;padding:10px 12px;font-size:14px;display:flex;flex-direction:column;gap:6px;min-height:0}.chat-line{background:#fff;border-radius:12px;padding:5px 10px;border:2px solid var(--line)}.chat form{padding:10px;border-top:2px solid var(--line)}.chat input{width:100%}.hand{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:12px}.card{position:relative;display:grid;gap:4px;justify-items:center;padding:16px 8px 12px;border-radius:16px;background:#fff;color:var(--ink);border:3px solid var(--line);box-shadow:0 4px 0 var(--line-strong);white-space:normal}.card:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 7px 0 var(--line-strong)}.card.picked{border-color:var(--accent);transform:translateY(-6px) rotate(-1.5deg);box-shadow:0 8px 0 var(--accent-dark);background:#fff8f2}.card .art{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -4px #0000002e}.card.infantry .art{background:#4f9de8}.card.cavalry .art{background:#e8913a}.card.artillery .art{background:#9b6ad6}.card.wild .art{background:var(--gold)}.card .type{font-family:var(--font-display);font-weight:600;font-size:15px}.card .terr{font-size:12px;color:var(--muted);text-align:center;font-weight:700}.card .own{position:absolute;top:8px;right:8px;font-size:11px;font-weight:800;color:#fff;background:var(--ok);border-radius:99px;padding:0 6px}.card.wild{background:#fffbe8}.sets-help{display:flex;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted);font-weight:700}.sets-help span{background:var(--panel-2);border-radius:99px;padding:3px 10px}.gameover{text-align:center;justify-items:center;max-width:440px}.gameover .trophy{width:96px;height:96px;border-radius:50%;background:var(--gold);display:grid;place-items:center;color:#fff;box-shadow:0 6px 0 var(--gold-dark);animation:pop .5s cubic-bezier(.2,1.6,.4,1)}.gameover h2{justify-content:center}.gameover ol{text-align:left;margin:0;padding:0;list-style:none;display:grid;gap:6px;width:100%}.gameover li{display:flex;align-items:center;gap:10px;background:#fff;border:2px solid var(--line);border-radius:14px;padding:6px 10px;font-weight:700}.gameover li .place{font-family:var(--font-display);width:26px;text-align:center;color:var(--muted)}.gameover li small{color:var(--muted);font-weight:600;margin-left:auto}.tour-hole{position:fixed;z-index:90;border-radius:18px;box-shadow:0 0 0 9999px #3d2e2494;border:3px solid #fff;pointer-events:none;transition:all .3s ease}.tour-bubble{position:fixed;z-index:91;width:min(420px,calc(100vw - 32px));background:var(--panel);border:3px solid var(--line);border-radius:22px;padding:16px 18px;box-shadow:0 5px 0 var(--line-strong),var(--soft);display:grid;gap:10px;transition:top .3s ease,left .3s ease}.tour-bubble .head{display:flex;align-items:center;gap:10px}.tour-bubble h3{margin:0;font-size:20px}.tour-bubble p{margin:0}.tour-bubble .dots{display:flex;gap:5px}.tour-bubble .dots i{width:8px;height:8px;border-radius:50%;background:var(--line)}.tour-bubble .dots i.on{background:var(--accent)}.board{width:100%;height:100%;display:block;cursor:grab;user-select:none}.board:active{cursor:grabbing}.land{fill:#a8754a}.territory{stroke:#fffaf0;stroke-width:1;vector-effect:non-scaling-stroke;cursor:pointer;transition:filter .15s}.territory:hover,.territory.option{filter:brightness(1.12)}.territory.dim{filter:saturate(.4) brightness(.85)}.continent-border{fill:none;stroke:#5c3d24;stroke-width:2.6;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round}.outline-selected{fill:none;stroke:#fff;stroke-width:4;vector-effect:non-scaling-stroke;pointer-events:none}.outline-target{fill:none;stroke:#ffd23f;stroke-width:4;vector-effect:non-scaling-stroke;pointer-events:none;stroke-dasharray:6 4}.badge{stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.badge-text{fill:#fff;font-weight:700;text-anchor:middle;font-family:var(--font-display)}.name{fill:var(--ink);text-anchor:middle;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:3px}.capital{stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}.pulse{fill:none;stroke-width:3;vector-effect:non-scaling-stroke;animation:pulse 1s ease-out forwards}@keyframes pulse{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2.6)}}.portal line{stroke:#a77bf3;stroke-width:2;stroke-dasharray:3 6;vector-effect:non-scaling-stroke;pointer-events:none}.portal circle{fill:none;stroke:#a77bf3;stroke-width:2.5;vector-effect:non-scaling-stroke;pointer-events:none}.portal.inactive{opacity:.35}@media (max-width: 1200px){.step .label{display:none}.step{padding:5px}}@media (max-width: 1000px){.game{grid-template-columns:1fr;grid-template-rows:auto 1fr 230px;grid-template-areas:"top" "table" "side"}.topbar{flex-wrap:wrap;padding:8px 10px;gap:8px}.topbar .logo .word{display:none}.sidebar{border-left:0;border-top:3px solid var(--line)}.overlay-left{width:210px}.legend-rows.collapsible{display:none}}@media (max-width: 640px){.overlay-left{display:none}.troops{min-width:22px;height:22px;font-size:12px;line-height:17px;padding:0 4px;border-width:2px}.panel{bottom:8px;width:calc(100% - 16px)}.coach .mascot{width:44px;height:44px;margin:-14px 0 -4px}.coach .say span{display:none}.controls{gap:6px;padding:8px 10px 10px}.slider input{width:90px}.turn-who small,.round{display:none}.turn-banner{font-size:34px}.mission-card{right:8px;left:8px;width:auto}.battle{top:8px}}.tname.free{position:static;transform:none}
