:root{--navy:#0e3b66;--navy-2:#0a2c4e;--ink:#12263a;--paper:#fffdf6;--panel:#fff;--muted:#5f7488;--line:#d8e4ee;--accent:#ff7a3d;--accent-2:#ffbe0b;--good:#1fa463;--bad:#e23d5c;--sea:#1f8fc6;--radius:14px;--shadow:0 6px 20px #0925422e;color:var(--ink);font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:radial-gradient(1200px 600px at 20% -10%, #4fd1e6 0%, transparent 60%), linear-gradient(160deg, #1c7fb8, var(--navy) 60%, var(--navy-2));background-attachment:fixed;min-height:100vh}button,input,select{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:.82rem}.warn{color:var(--bad)}.chip{vertical-align:middle;border:1px solid #00000040;border-radius:50%;width:10px;height:10px;margin-right:5px;display:inline-block}.btn{cursor:pointer;color:var(--ink);background:#eaf3fa;border:0;border-radius:1.2em;padding:.55em 1.1em;font-weight:700;transition:transform 80ms,filter .15s;box-shadow:inset 0 -3px #0000001f}.btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px)}.btn:active:not(:disabled){box-shadow:none;transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg, #ff9a52, var(--accent));color:#fff;text-shadow:0 1px #0003}.btn.danger{color:#a3112e;background:#ffe1e7}.btn.big{padding:.7em 1.4em;font-size:1.1rem}.btn.small{padding:.35em .75em;font-size:.78rem}.icon-btn{cursor:pointer;color:#fff;background:#ffffff24;border:0;border-radius:10px;padding:6px 9px;font-size:1.05rem}.icon-btn:hover:not(:disabled){background:#ffffff42}.icon-btn:disabled{opacity:.4}.btn-row{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.link{cursor:pointer;color:var(--ink);text-align:left;background:0 0;border:0;padding:0;font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:focus-visible{outline:3px solid var(--accent-2);outline-offset:2px}.setup{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.setup-card{background:var(--paper);box-shadow:var(--shadow);border-radius:22px;width:min(720px,100%);padding:28px}.setup-card h1{color:var(--navy);letter-spacing:1px;margin:0;font-size:2.6rem}.setup-card h2{color:var(--navy);margin:22px 0 10px;font-size:1.05rem}.tagline{color:var(--muted);margin:4px 0 0}.setup-row{grid-template-columns:30px minmax(110px,1.5fr) minmax(0,1.2fr) minmax(0,1.2fr) 34px;align-items:center;gap:8px;margin-bottom:8px;display:grid}.setup-row select{text-overflow:ellipsis}.setup-row input,.setup-row select,.opt select,.opt input{border:2px solid var(--line);background:#fff;border-radius:10px;min-width:0;padding:7px 9px}.setup-row .icon-btn{color:var(--ink);background:#eef4f9}.token-icon{flex:none;width:28px;height:26px}.opt{flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0;display:flex}.setup-actions{justify-content:flex-end;margin-top:20px;display:flex}.language-picker{border-top:1px solid var(--line);text-align:center;margin-top:22px;padding-top:16px}.language-options{flex-wrap:wrap;justify-content:center;gap:8px;margin:8px 0;display:flex}.language-options .btn{min-width:90px;min-height:44px}.language-options .selected{background:var(--navy);color:#fff;outline:2px solid var(--accent-2);outline-offset:2px}.language-picker p{margin:8px 0 0}html[lang=zh-CN]{font-family:Microsoft YaHei,PingFang SC,Noto Sans CJK SC,system-ui,sans-serif}.resume{background:#e6f6ff;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;display:flex}.modes{grid-template-columns:1fr 1fr;gap:10px;display:grid}.mode-card{text-align:left;cursor:pointer;border:3px solid var(--line);background:#fff;border-radius:14px;gap:2px;padding:12px 14px;transition:border-color .15s,transform 80ms;display:grid}.mode-card:hover{transform:translateY(-1px)}.mode-card.selected{border-color:var(--accent);background:#fff4ec}.mode-name{color:var(--navy);font-size:1.1rem;font-weight:900}.mode-time{color:var(--accent);font-weight:800}.mode-blurb{color:var(--muted);font-size:.82rem}.custom-rules{margin-top:10px}.custom-rules summary{cursor:pointer;color:var(--navy);margin-bottom:6px;font-weight:700}.check.rule{align-items:flex-start;gap:8px;padding:4px 0}.check.rule input{margin-top:4px}@media (width<=520px){.modes{grid-template-columns:1fr}}.rules-mini{color:var(--muted);margin-top:16px}.rules-mini summary{cursor:pointer;color:var(--navy);font-weight:700}@media (width<=640px){.setup-row{grid-template-columns:26px minmax(0,1fr) minmax(0,1fr) 34px}.setup-row select[data-field=token]{grid-column:2/-2}.setup-row .icon-btn{grid-area:1/-2}.setup-card{padding:20px 16px}}.topbar{color:#fff;z-index:30;grid-area:top;justify-content:flex-end;align-items:center;gap:8px;display:flex;position:relative}.topbar .btn.small{background:#ffffffe6}.layout{grid-template:"board top""board side"1fr/minmax(0,1fr) 360px;align-items:start;gap:10px 14px;padding:12px 16px 16px;display:grid}.board-col{grid-area:board;gap:12px;min-width:0;display:grid}.board-wrap{box-shadow:var(--shadow);background:#14508f;border-radius:20px;position:relative;overflow:hidden}.board-svg{-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.side{flex-direction:column;grid-area:side;gap:10px;min-width:0;display:flex}.panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px}.panel h3{color:var(--navy);margin:0 0 6px;font-size:1rem}@media (width<=980px){.layout{grid-template:"top""board""side"/minmax(0,1fr)}}@media (width<=700px){.topbar{flex-wrap:wrap;gap:6px}.layout{padding:8px 10px 12px}#board{-webkit-overflow-scrolling:touch;overflow-x:auto}.board-svg{width:760px;max-width:none}}.lane-glow{fill:none;stroke:#fff;stroke-opacity:.25;stroke-width:26px;stroke-linecap:round;filter:url(#glow)}.lane{fill:none;stroke:#fff;stroke-opacity:.75;stroke-width:4px;stroke-dasharray:2 10;stroke-linecap:round}.lane-canal{stroke:#ffe8a3}.lane-deep{stroke:#a8c7ff}.tile{cursor:pointer}.tile .face{stroke:#1d2b3a;stroke-width:1.2px}.tile .ring{fill:none;stroke:#fff;stroke-width:2px}.tile-port .face{stroke:#fff;stroke-width:2px}.tile .owner-ring{fill:none;stroke-width:7px;pointer-events:none}.tile-port.owned .face{stroke:#1d2b3a;stroke-width:1.2px}.tile .tariff-tag{fill:#12263a;paint-order:stroke;stroke:#ffffffd9;stroke-width:3px;pointer-events:none;font-size:11px;font-weight:900}.tile .sub-hatch{fill:url(#hatch);pointer-events:none;display:none}.tile.subbed .sub-hatch{display:inline}.tile .sub-mark{pointer-events:none;font-size:11px;display:none}.tile.subbed .sub-mark{display:inline}.tile .hl{fill:none;stroke:none}.tile:hover .face{filter:brightness(1.12)}.tile.selected .hl{stroke:#fff;stroke-width:3px;stroke-dasharray:4 4}.tile-icon{pointer-events:none;font-size:17px}.tile-label{fill:#fff;paint-order:stroke;stroke:#0a2c4e;stroke-width:3.2px;stroke-linejoin:round;pointer-events:none;font-size:11.5px;font-weight:700}.home-ring{fill:none;stroke-width:3px;stroke-dasharray:5 4}.stretch-label{letter-spacing:1.5px;paint-order:stroke;stroke:#0a2c4e;stroke-width:3px;opacity:.9;pointer-events:none;font-size:11px;font-weight:900}.crane-icon{vertical-align:-.25em;width:1.25em;height:1.3em}.tile-pirate .face{stroke:#e23d5c;stroke-width:2.5px}.choice-arrow circle{fill:none;stroke:#ffbe0b;stroke-width:4px;transform-origin:50%;transform-box:fill-box;animation:1s ease-in-out infinite pulse}.tile.highlight .face{filter:brightness(1.2)drop-shadow(0 0 6px #ffbe0b)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.15)}}.market rect{fill:#fff;stroke:#1d2b3a;stroke-width:1.5px}.market-boom rect{fill:#d8ffd6}.market-war rect{fill:#ffe0d6}.market-strike rect{fill:#fff0b3}.market text{fill:#12263a;font-size:12px;font-weight:800}.canal-closed rect{fill:#e23d5c;stroke:#fff;stroke-width:2px}.canal-closed text,.canal-owner text{fill:#fff;paint-order:stroke;stroke:#00000059;stroke-width:2px;font-size:12px;font-weight:800}.canal-owner rect{stroke:#fff;stroke-width:2px}.contract-mark,.pulse-ring{pointer-events:none}.pulse-ring circle{fill:none;stroke:#fff;stroke-width:4px;transform-box:fill-box;transform-origin:50%;filter:drop-shadow(0 0 4px #00000080);animation:1.1s ease-in-out infinite ringPulse}.pulse-ring.tender circle{stroke:#ffbe0b;stroke-width:5px}.pulse-badge{font-size:16px}@keyframes ringPulse{0%,to{stroke-opacity:1;transform:scale(.92)}50%{stroke-opacity:.55;transform:scale(1.18)}}.offer-mark{pointer-events:none}.offer-mark circle{fill:#fff;stroke:#f0a500;stroke-width:3px}.offer-mark text{fill:#7a4b00;font-size:12px;font-weight:900}.stamp{pointer-events:none}.stamp-ring{fill:none;stroke-width:5px;transform-box:fill-box;transform-origin:50%;animation:1s ease-out forwards stampRing}.stamp-ring.late{opacity:0;animation-delay:.25s}@keyframes stampRing{0%{opacity:1;transform:scale(.8)}to{opacity:0;transform:scale(2.4)}}.stamp-icon{transform-box:fill-box;transform-origin:50%;font-size:26px;animation:1.3s ease-out forwards stampPop}@keyframes stampPop{0%{opacity:0;transform:scale(.2)}25%{opacity:1;transform:scale(1.4)}60%{opacity:1;transform:scale(1)}to{opacity:0;transform:translateY(-14px)}}.stamp-tag{animation:1.3s ease-out forwards stampTag}@keyframes stampTag{0%{opacity:0}15%,80%{opacity:1}to{opacity:0}}.stamp-tag text{fill:#fff;text-shadow:0 1px #0000004d;font-size:12px;font-weight:900}.token{pointer-events:none;transition-property:transform;transition-duration:.14s;transition-timing-function:ease-in-out}.token .token-body{filter:drop-shadow(0 3px 3px #00000073)}.pin-body{stroke:#fff;stroke-width:2.5px;stroke-linejoin:round}.pin-shadow{fill:#00000059}.pin-glow{fill:none;stroke:#ffd166;stroke-width:4px;opacity:0}.token.active .pin-glow{opacity:1;animation:1.2s ease-in-out infinite glow}@keyframes glow{0%,to{stroke-opacity:1}50%{stroke-opacity:.25}}.token.active .token-body{animation:1.6s ease-in-out infinite bob}.token.hop .token-body{animation:.18s ease-out hop}.token.sunk{display:none}@keyframes bob{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-3px)rotate(2deg)}}@keyframes hop{0%{transform:translateY(0)}50%{transform:translateY(-7px)}to{transform:translateY(0)}}.float-text{paint-order:stroke;stroke:#0a2c4e;stroke-width:4px;font-size:16px;font-weight:900;animation:1.4s ease-out forwards floatUp}@keyframes floatUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-34px)}}.dice{opacity:0;pointer-events:none;align-items:center;gap:8px;transition:all .2s;display:flex;position:absolute;bottom:12px;left:12px;transform:translateY(10px)}.dice.show{opacity:1;transform:none}.die{background:#fff;border-radius:9px;width:42px;height:42px;position:relative;box-shadow:0 3px #c9d6e2,0 6px 14px #0000004d}.dice.rolling .die{animation:.14s linear infinite shake}.pip{background:var(--ink);border-radius:50%;width:18%;height:18%;margin:7% 0 0 7%;position:absolute;transform:translate(-50%,-50%)}.dice-total{background:var(--accent-2);color:var(--ink);border-radius:999px;padding:4px 10px;font-weight:900}@keyframes shake{0%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}to{transform:rotate(-8deg)}}.stage{z-index:25;pointer-events:none;opacity:0;place-items:center;padding:16px;transition:opacity .18s;display:grid;position:fixed;inset:0}.stage.show{opacity:1;pointer-events:auto;background:#061c3273}.stage-panel{background:var(--paper);text-align:center;border-top:8px solid var(--pc);border-radius:22px;min-width:min(300px,100%);max-width:100%;max-height:calc(100dvh - 32px);padding:18px 26px 20px;animation:.28s cubic-bezier(.2,1.4,.4,1) stagePop;overflow-y:auto;box-shadow:0 24px 60px #00000073}@keyframes stagePop{0%{opacity:0;transform:scale(.7)translateY(20px)}to{opacity:1;transform:none}}.stage-title{color:var(--navy);font-size:1.35rem;font-weight:900}.stage-rule{color:var(--muted);margin-top:4px;font-size:.9rem}.stage-verdict{opacity:0;min-height:1.6em;margin-top:4px;font-size:1.25rem;font-weight:900;transition:all .25s;transform:translateY(6px)}.stage-panel.landed .stage-verdict{opacity:1;transform:none}.stage-verdict.good{color:var(--good)}.stage-verdict.bad{color:var(--bad)}.dice-row{perspective:700px;flex-wrap:wrap;justify-content:center;gap:28px;margin:22px 8px 18px;display:flex}.cube-wrap{width:76px;height:76px}.stage-panel.rolling .cube-wrap{animation:.5s ease-in-out infinite alternate diceBounce}@keyframes diceBounce{0%{transform:translateY(-14px)}to{transform:translateY(4px)}}.cube{width:76px;height:76px;transform-style:preserve-3d;position:relative}.cface{backface-visibility:hidden;background:linear-gradient(145deg,#fff,#e9eef5);border:2px solid #cfdae6;border-radius:14px;position:absolute;inset:0;box-shadow:inset 0 0 12px #12263a1f}.f1{transform:translateZ(38px)}.f6{transform:rotateY(180deg)translateZ(38px)}.f2{transform:rotateY(90deg)translateZ(38px)}.f5{transform:rotateY(-90deg)translateZ(38px)}.f3{transform:rotateX(90deg)translateZ(38px)}.f4{transform:rotateX(-90deg)translateZ(38px)}.cpip{background:radial-gradient(circle at 35% 35%,#3b5674,#12263a);border-radius:50%;width:15px;height:15px;position:absolute;transform:translate(-50%,-50%)}.f1 .cpip{background:radial-gradient(circle at 35% 35%,#ff6b81,#c9184a);width:19px;height:19px}.named-die{justify-items:center;gap:10px;display:grid}.named-die span{color:var(--pc);border:2px solid var(--pc);background:#fff;border-radius:999px;padding:1px 10px;font-size:.85rem;font-weight:800}.flip{perspective:1000px;width:min(250px,78vw);margin:14px auto 12px;animation:.4s cubic-bezier(.2,.9,.3,1.1) dealIn}@keyframes dealIn{0%{opacity:0;transform:translate(-120px,160px)rotate(-18deg)scale(.5)}to{opacity:1;transform:none}}.flip-inner{min-height:300px;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.3,.7,.3,1);display:grid}.stage-panel.flipped .flip-inner{transform:rotateY(180deg)}.card-back,.flip .card{backface-visibility:hidden;border-radius:16px;grid-area:1/1}.card-back{color:#fff;letter-spacing:1px;text-transform:uppercase;background:repeating-linear-gradient(45deg,#ffffff1f 0 10px,#0000 10px 20px),linear-gradient(160deg,#2ec27e,#13795b);border:6px solid #fff;place-content:center;gap:8px;font-size:1.1rem;display:grid;box-shadow:0 12px 30px #00000059}.deck-gov .card-back{background:repeating-linear-gradient(45deg,#ffffff1f 0 10px,#0000 10px 20px),linear-gradient(160deg,#8e7cff,#5a45d6)}.card-back span{font-size:3.4rem}.flip .card{box-sizing:border-box;flex-direction:column;justify-content:center;width:100%;animation:none;display:flex;transform:rotateY(180deg)}.stage-continue{margin-top:6px}.pay-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:18px 0 8px;display:grid}.pay-who{justify-items:center;gap:6px;font-size:.95rem;display:grid}.pay-dot{background:var(--pc);border:3px solid #fff;border-radius:50%;width:34px;height:34px;box-shadow:0 2px 6px #0000004d}.pay-flow{width:120px;height:34px;position:relative;overflow:hidden}.coin{color:#7a4b00;background:radial-gradient(circle at 35% 30%,#fff3b0,#ffbe0b 60%,#d18b00);border-radius:50%;place-items:center;width:24px;height:24px;font-size:13px;font-weight:900;animation:.9s ease-in-out infinite coinFly;display:grid;position:absolute;top:5px;left:-24px;box-shadow:0 1px 3px #00000059}.coin:nth-child(2){animation-delay:.18s}.coin:nth-child(3){animation-delay:.36s}.coin:nth-child(4){animation-delay:.54s}.coin:nth-child(5){animation-delay:.72s}.stage-panel.landed .coin{opacity:0;animation-play-state:paused}@keyframes coinFly{0%{opacity:0;transform:translateY(4px)}15%{opacity:1}50%{transform:translate(72px,-6px)}85%{opacity:1}to{opacity:0;transform:translate(144px,4px)}}.pay-amount{color:var(--bad);font-variant-numeric:tabular-nums;font-size:2.4rem;font-weight:900}.stage-panel.landed .pay-amount{animation:.3s ease-out payPop}@keyframes payPop{50%{transform:scale(1.15)}}.speed-opts{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px;display:grid}.volume-row{border-bottom:1px dashed var(--line);grid-template-columns:minmax(0,1fr) minmax(110px,160px) 3.2em;align-items:center;gap:10px;padding:8px 0;display:grid}.volume-name{gap:1px;display:grid}.volume-row input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.volume-value{color:var(--navy);text-align:right;font-variant-numeric:tabular-nums;font-weight:800}@media (width<=420px){.volume-row{grid-template-columns:minmax(0,1fr) 3.2em}.volume-row input[type=range]{grid-area:2/1/auto/-1}}.speed-opt{border:3px solid var(--line);cursor:pointer;text-align:center;background:#fff;border-radius:12px;gap:2px;padding:10px;display:grid}.speed-opt.selected{border-color:var(--accent);background:#fff4ec}.hidden{display:none!important}.location{background:#f4f8fb;border-radius:12px;margin:4px 0 10px;padding:8px 10px}.loc-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:.78rem;font-weight:800}.loc-title{color:var(--navy);margin:2px 0;font-size:1.1rem;font-weight:900}.loc-more summary{cursor:pointer;color:var(--muted)}.owner-tag{color:#fff;background:var(--pc);text-shadow:0 1px #00000040;border-radius:999px;padding:1px 9px;font-weight:800;display:inline-block}.owner-tag.unowned{color:var(--navy);border:2px dashed var(--muted);text-shadow:none;background:#fff}.port-row.subbed{opacity:.75}.btn.small.sub{background:#fff1c2}.card{text-align:center;background:#fff;border:6px solid #2ec27e;border-radius:16px;width:min(250px,70%);padding:16px;animation:.35s ease-out flip;box-shadow:0 16px 40px #0006}.card-gov{border-color:#8e7cff}.card-deck{text-transform:uppercase;letter-spacing:2px;color:var(--muted);font-size:.72rem;font-weight:900}.card-icon{margin:6px 0;font-size:3rem}.card-title{color:var(--navy);font-size:1.3rem;font-weight:900}.card-text{margin:6px 0}.card-effect{background:#f3f8fc;border-radius:10px;margin:6px 0 8px;padding:6px 8px;font-size:1.15rem;font-weight:900}.card-effect.good{color:var(--good);background:#e3fbe9}.card-effect.bad{color:var(--bad);background:#ffe8ec}.card-effect.coast{border-left:8px solid var(--st);color:var(--navy)}.card-who{color:var(--muted);font-size:.8rem}@keyframes flip{0%{transform:rotateY(90deg)scale(.8)}to{transform:none}}.actions{border:3px solid #0000}.turn-head{border-bottom:2px solid color-mix(in srgb, var(--pc) 40%, transparent);align-items:center;gap:8px;margin-bottom:6px;padding-bottom:8px;display:flex}.turn-head .phase-tag{background:color-mix(in srgb, var(--pc) 22%, #fff);border-radius:999px;margin-left:auto;padding:2px 10px;font-size:.78rem;font-weight:800}.turn-head .round-tag{color:var(--muted);white-space:nowrap;background:#eef4f9;border-radius:999px;padding:2px 8px;font-size:.78rem;font-weight:700}.actions{font-size:15px}.actions .small,.actions .tariffs{font-size:calc(.82rem - 1px)}.actions .btn.big,.actions .loc-title{font-size:calc(1.1rem - 1px)}.actions .btn.small,.actions .loc-label,.actions .turn-head .phase-tag,.actions .turn-head .round-tag,.actions .route-notes{font-size:calc(.78rem - 1px)}.actions h3,.actions .btn.locate{font-size:calc(1rem - 1px)}.actions .route-name{font-size:calc(1.05rem - 1px)}.actions .route-land{font-size:calc(.86rem - 1px)}.actions .offer-terms{font-size:calc(.85rem - 1px)}.actions .offer.mine{font-size:calc(.88rem - 1px)}.actions .badge{font-size:calc(.72rem - 1px)}.actions .offer-num{font-size:calc(.75rem - 1px)}.thinking{color:var(--muted);font-style:italic}.action-body[inert]{opacity:.6}.route-btns{gap:8px;display:grid}.btn.route{text-align:left;border-radius:14px;gap:2px;display:grid}.route-name{font-size:1.05rem}.route-land{font-size:.86rem;font-weight:600}.route-notes{color:var(--muted);font-size:.78rem;font-weight:500}.manage summary{cursor:pointer;color:var(--navy);margin-top:4px;font-weight:800}.port-list{gap:4px;max-height:260px;margin-top:6px;display:grid;overflow:auto}.port-row{border-bottom:1px dashed var(--line);grid-template-columns:auto 1fr auto auto;align-items:center;gap:6px;padding:3px 0;font-size:.88rem;display:grid}.port-row .row-btns{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-end;gap:6px;display:flex}.port-row .pips{font-size:.7rem}.tariffs{border-collapse:collapse;width:100%;margin:6px 0;font-size:.82rem}.tariffs th,.tariffs td{border:1px solid var(--line);text-align:center;padding:3px 5px}.tariffs td.now{background:#fff1c2;font-weight:800}.trade-summary{background:#f3f8fc;border-radius:10px;grid-template-columns:1fr 1fr;gap:10px;padding:10px;display:grid}.players{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;display:grid}.pcard{box-shadow:var(--shadow);border-left:6px solid var(--pc);background:#fff;border-radius:12px;padding:8px 10px;font-size:.86rem}.pcard.current{outline:3px solid color-mix(in srgb, var(--pc) 60%, #fff)}.pcard.actor{box-shadow:0 0 0 3px var(--accent-2), var(--shadow)}.pcard.sunk{opacity:.5;filter:grayscale(.7)}.pcard-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pcard-money{flex-direction:column;margin:2px 0;display:flex}.cash{color:var(--good);font-size:1.2rem;font-weight:900}.cash.neg{color:var(--bad)}.badge{background:#eef4f9;border-radius:999px;padding:1px 7px;font-size:.72rem;font-weight:700}.badge.warn{color:#a3112e;background:#ffe1e7}.contracts{gap:3px;margin-top:4px;display:grid}.contract{background:#fff8e1;border-radius:8px;padding:2px 6px;font-size:.76rem}.good{color:var(--good)}.contract .turns{float:right;color:var(--navy);font-weight:800}.contract.urgent{background:#ffe1e7}.contract.urgent .turns{color:var(--bad)}.contract-box{background:#fffaf0;border:2px dashed #f0c96a;border-radius:12px;gap:6px;margin-bottom:10px;padding:8px;display:grid}.contract-box-head{color:var(--navy);flex-wrap:wrap;align-items:center;gap:6px;font-weight:900;display:flex}.contract-box-head [data-ui=hide-contract]{margin-left:auto}.contract-box.covered{background:repeating-linear-gradient(45deg,#fffaf0 0 10px,#fff3d6 10px 20px)}.contract-box p{margin:0}.offer-row{grid-template-columns:1fr auto;align-items:stretch;gap:6px;display:grid}.btn.locate{border-radius:12px;padding:4px 10px;font-size:1rem}.offer-num{color:#7a4b00;border:2px solid #f0a500;border-radius:50%;place-items:center;width:20px;height:20px;margin-right:4px;font-size:.75rem;font-weight:900;display:inline-grid}.contract.clickable{cursor:pointer}.contract.clickable:hover{outline:2px solid #f0c96a}.btn.offer{text-align:left;background:#fff;border-radius:12px;gap:2px;min-width:0;padding:8px 12px;display:grid}.btn.offer:hover{background:#fff4d6}.offer-terms{font-size:.85rem}.offer.mine{flex-wrap:wrap;align-items:center;gap:6px;font-size:.88rem;display:flex}.offer.mine .btn{margin-left:auto}.inspector p{margin:4px 0}.log ol{max-height:min(60vh,520px);margin:0;padding-left:0;font-size:.88rem;list-style:none;overflow:auto}.log-modal{width:min(560px,100%)}.log-btn{position:relative}.log-count:empty{display:none}.log-count{background:var(--accent);color:#fff;text-align:center;border-radius:9px;min-width:18px;height:18px;padding:0 4px;font-size:.68rem;font-weight:900;line-height:18px;position:absolute;top:-4px;right:-4px;box-shadow:0 1px 3px #0000004d}.log li{border-bottom:1px solid #f0f4f8;padding:3px 0}.log li.round-line{color:var(--navy);font-weight:800}.modal{z-index:35;background:#061c328c;place-items:center;padding:16px;display:none;position:fixed;inset:0}.modal.open{display:grid}.modal-card{background:var(--paper);width:min(560px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow);border-radius:18px;padding:20px;overflow:auto}.modal-card.wide{width:min(900px,100%)}.modal-card h2{color:var(--navy);margin-top:0}.trade-cols{grid-template-columns:1fr 1fr;gap:14px;display:grid}.trade-cols h3{margin:8px 0 4px;font-size:.95rem}.check{align-items:center;gap:4px;padding:2px 0;font-size:.88rem;display:flex}.opt input[type=number]{width:110px}@media (width<=520px){.trade-cols{grid-template-columns:1fr}}.toasts{z-index:30;pointer-events:none;gap:6px;width:min(440px,100% - 32px);display:grid;position:fixed;top:10px;left:50%;transform:translate(-50%)}.toast{box-shadow:var(--shadow);border-left:6px solid var(--sea);background:#fff;border-radius:12px;padding:9px 14px;font-weight:700;transition:opacity .4s;animation:.25s ease-out drop}.toast.good{border-left-color:var(--good)}.toast.error{border-left-color:var(--bad)}.toast.out{opacity:0}@keyframes drop{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}.confetti{pointer-events:none;z-index:40;position:fixed;inset:0}.stats .chart{background:#fff;border-radius:12px;width:100%;height:auto}.stats .chart text{fill:var(--muted);font-size:11px}.stats .chart .grid{stroke:#e7eef5}.legend{flex-wrap:wrap;gap:12px;margin:6px 0 12px;font-size:.86rem;display:flex}.table-wrap{overflow-x:auto}.stats table{border-collapse:collapse;width:100%;font-size:.84rem}.stats th,.stats td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:6px 8px}.stats th:first-child,.stats td:first-child{text-align:left}.stats tr.sunk{opacity:.6}.rules ul{padding-left:18px;line-height:1.45}.play-guide{color:var(--ink);gap:14px;margin-top:16px;display:grid}.guide-section{border:1px solid var(--line);background:#f4f8fb;border-radius:14px;min-width:0;padding:16px}.guide-section h3{color:var(--navy);margin:0 0 14px;font-size:1.05rem}.guide-steps{counter-reset:guide-step;gap:16px;margin:0;padding:0;list-style:none;display:grid}.guide-step{counter-increment:guide-step;grid-template-columns:24px 32px minmax(0,1fr);align-items:start;gap:8px;display:grid}.guide-step:before{content:counter(guide-step);background:var(--navy);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:.8rem;font-weight:900;display:grid}.guide-icon{font-size:1.5rem;line-height:1.2}.play-guide h4{color:var(--navy);margin:0 0 4px;font-size:.95rem}.play-guide p{margin:0;font-size:.88rem;line-height:1.5}.guide-step p+p{margin-top:8px}.guide-routes{border-top:1px dashed var(--line);margin-top:16px;padding-top:12px}.guide-route{flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0;font-size:.8rem;display:flex}.guide-route>span:not([aria-hidden]){background:#e2eff8;border-radius:8px;padding:4px 8px}.guide-win{background:#fff8df;border-color:#f0d58a}.guide-special{background:#f5f1ff;border-color:#dcd2f4}.guide-tariff{border:1px solid var(--line);background:#fff;border-radius:10px;margin-top:16px;padding:12px}.guide-calculation{gap:6px;margin:10px 0;font-size:.85rem;display:grid}.guide-calculation>div{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.guide-calculation dd{font-variant-numeric:tabular-nums;margin:0;font-weight:700}.guide-total{border-top:1px solid var(--line);color:var(--navy);padding-top:8px;font-weight:900}.guide-legend{background:#eef8fa}.guide-legend-list{gap:14px;margin:14px 0 0;display:grid}.guide-legend-row{min-width:0}.guide-legend-row dt{color:var(--navy);align-items:center;gap:10px;font-size:.95rem;display:flex}.guide-legend-row dd{margin:4px 0 0 70px;font-size:.88rem;line-height:1.5}.guide-legend-sample{background:#1f8fc6;border-radius:8px;flex:none;place-items:center;width:60px;height:44px;display:grid}.guide-legend-sample .crane-icon{width:32px;height:34px}.guide-goal{grid-template-columns:32px minmax(0,1fr);gap:8px;display:grid}.guide-goal p+p{margin-top:8px}.guide-tip{border-top:1px dashed #e5c878;padding-top:8px}.guide-details{margin-top:16px}.guide-details summary{cursor:pointer;color:var(--navy);font-weight:700}@media (width<=420px){.guide-section{padding:12px}.guide-step{grid-template-columns:24px 26px minmax(0,1fr);gap:6px}.guide-step .guide-icon{font-size:1.1rem}}.setup-card,.panel,.pcard,.modal-card,.stage-panel,.toast{overflow-wrap:anywhere;min-width:0}.btn,.link,.mode-card,.speed-opt{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.modes,.speed-opts,.trade-summary,.trade-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.speed-opts{grid-template-columns:repeat(3,minmax(0,1fr))}.mode-card>*,.speed-opt>*,.offer-row>*,.port-row>*,.volume-row>*,.pay-row>*{min-width:0}.offer-row{grid-template-columns:minmax(0,1fr) auto}.port-row{grid-template-columns:auto minmax(0,1fr) auto auto}.turn-head,.resume,.setup-actions{flex-wrap:wrap}.opt select{max-width:100%}.tariffs{table-layout:fixed}@media (width<=520px){.modes,.trade-cols{grid-template-columns:minmax(0,1fr)}.setup-card h1{font-size:clamp(1.7rem,8vw,2.6rem)}.stage-panel{padding-inline:16px}.pay-flow{width:60px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
