:root{color-scheme:dark;--ink: #f6edd8;--muted: #cbb892;--wood: #24170f;--wood-2: #342216;--gold: #e0c48a;--line: rgba(224, 196, 138, .55);--bg: #100c09;--bad: #f0c2b4;font-family:Palatino,Palatino Linotype,Iowan Old Style,Georgia,serif;background:var(--bg);color:var(--ink)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,input,select{font:inherit;color:inherit}button{min-height:44px;border:1px solid var(--line);background:#3b291c;border-radius:10px;padding:.4rem .75rem;cursor:pointer}button.primary{background:#8d6430;color:#1a120c;font-weight:700}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid #f6edd8;outline-offset:2px}.mark{width:28px;height:28px;flex:none}.muted{color:var(--muted)}.row{display:flex;flex-wrap:wrap;gap:.5rem}.panel{background:linear-gradient(180deg,rgba(255,236,196,.06),transparent 28%),var(--wood);border:1px solid var(--line);border-radius:16px;padding:1rem;box-shadow:0 16px 40px #00000059}.panel.tight{padding:.75rem}.panel h1,.panel h2{font-weight:600;margin:0 0 .4rem}.panel p,.panel li{line-height:1.35}.disclosure{font-size:.92rem;color:var(--muted)}.eyebrow{letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;color:var(--gold);margin:0}.intro,.setup-screen{min-height:100%;display:grid;place-items:center;padding:1.25rem;position:relative}.intro img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.05)}.intro-card,.setup-screen .panel{position:relative;max-width:40rem}.intro-card{background:#140c08e0}.intro-card.host-card{max-width:48rem}.host-row{display:flex;gap:1.1rem;align-items:flex-start;margin:.7rem 0 .3rem}.host-figure{margin:0;flex:0 0 auto;text-align:center}.intro-card .host-portrait{position:relative;inset:auto;width:118px;height:134px;object-fit:cover;border-radius:14px;border:2px solid var(--gold);box-shadow:0 10px 24px #00000080}.host-figure figcaption{display:grid;margin-top:.45rem;line-height:1.2}.host-figure figcaption strong{color:var(--gold);font-size:.95rem}.host-figure figcaption span{color:var(--muted);font-size:.8rem}.host-speech{border-left:3px solid var(--gold);padding-left:.95rem}.host-speech p{margin:0 0 .55rem}.host-speech p:last-child{margin-bottom:0}@media(max-width:640px){.host-row{flex-direction:column}.host-figure{display:flex;align-items:center;gap:.7rem;text-align:left}.intro-card .host-portrait{width:84px;height:96px}.host-figure figcaption{margin-top:0}}.seat-grid{display:grid;gap:.6rem;margin:.8rem 0}.seat,.seed,.town-picker,.file{display:grid;gap:.25rem}.seat{grid-template-columns:auto 1fr;align-items:center;gap:.6rem}.seat input,.seed input,.town-picker select,.file input{grid-column:1 / -1}input,select{min-height:44px;border-radius:10px;border:1px solid var(--line);background:#140e0a;padding:.4rem .6rem}.app{height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.topbar,.firms{display:flex;gap:.75rem;align-items:center;padding:.45rem .7rem;background:#1b120c;border-bottom:1px solid var(--line);flex-wrap:wrap}.brand,.who,.firm-chip,.purse,.ap{display:flex;align-items:center;gap:.55rem}.ap .pip,.gate-chip .pip{width:18px;height:18px;border-radius:50%;border:2px solid var(--gold);display:inline-block}.ap .pip.on{background:var(--gold)}.firm-chip{border:1px solid transparent;border-radius:999px;padding:.15rem .55rem .15rem .15rem}.firm-chip.current{border-color:var(--gold);background:#e0c48a14}.firm-chip span,.who span{display:grid}.menu{position:absolute;right:.7rem;top:3.2rem;z-index:5;display:grid;gap:.4rem}.stage{display:grid;grid-template-columns:minmax(0,1fr) 380px;min-height:0}.side{overflow:auto;padding:.6rem;display:grid;align-content:start;gap:.55rem;background:#160f0b}.board-viewport{position:relative;overflow:hidden;background:#0c0907;touch-action:none;min-height:0}.board-world{position:absolute;width:1024px;height:576px;transform-origin:0 0}.board-world img,.board-svg{position:absolute;inset:0;width:1024px;height:576px}.board-svg{overflow:visible}.zoom-controls{position:absolute;left:.6rem;bottom:.6rem;display:flex;gap:.35rem}.zoom-controls button{min-width:44px;background:#140c08e0}.town circle{fill:transparent;stroke:transparent;stroke-width:1.5}.town.reachable circle{stroke:#f6edd8d9}.town.selected circle{stroke:#f3d48a;stroke-width:2.6;filter:drop-shadow(0 0 6px rgba(243,212,138,.95))}.town.selected circle.town-halo{stroke:none;filter:none}.town.selected circle.town-ring{filter:none}.town-halo{fill:#f3d48a29;stroke:none;animation:halo-pulse 1.6s ease-in-out infinite}.town-ring{fill:none;stroke:#f3d48a;stroke-width:2;animation:ring-pulse 1.6s ease-in-out infinite}.town-reach{fill:none;stroke:#f6edd8d9;stroke-width:1.5;stroke-dasharray:3.5 3;animation:reach-pulse 2.2s ease-in-out infinite}@keyframes halo-pulse{50%{opacity:.4}}@keyframes ring-pulse{50%{opacity:.55}}@keyframes reach-pulse{50%{opacity:.35}}.boat,.wagon{transition:transform 1.05s cubic-bezier(.4,.05,.3,1)}.boat{cursor:pointer}.boat-glow{fill:#f3d48a4d;animation:halo-pulse 1.8s ease-in-out infinite}.town-record{pointer-events:none}.legend p,.seal-list{margin:.28rem 0}.seal-list{list-style:none;padding:0;display:grid;gap:.15rem}.waterway{pointer-events:none}.waterway path{fill:none;stroke-linecap:round;stroke-linejoin:round}.water-bank{stroke:#54482e42;stroke-width:34}.water-body{stroke:#6d9a9e;stroke-width:30;opacity:.94}.water-sheen{stroke:#b2cdc829;stroke-width:21}.route{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.route.water{stroke:#f6edd8eb}.route.road{stroke:#d2a454f2}.gate-chip rect{fill:#2a1c12;stroke:#e0c48a;stroke-width:.6}.gate-chip text{fill:#f6edd8;font-size:7px;font-family:Palatino,Georgia,serif}.gate-chip .pip.open{fill:#e0c48a}.gate-chip .pip.shut{fill:#4a3b2e}.boat-name{fill:#f6edd8;stroke:#1a120c;stroke-width:.45;paint-order:stroke}.jobs{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.job{display:grid;text-align:left;min-height:72px;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease}.job.selected{border-color:var(--gold);background:#4a321c;box-shadow:0 0 0 2px #e0c48a8c,0 0 18px #e0c48a59;transform:translateY(-1px)}.firm-chip.current{box-shadow:0 0 12px #e0c48a59}.locks{display:flex;flex-wrap:wrap;gap:.35rem .7rem;font-size:.92rem}.actions{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.card,.builder,.confirm,.hint,.error{margin:0}.card{border-top:1px solid var(--line);padding-top:.4rem}.hint{color:var(--muted)}.error{color:var(--bad)}.confirm{position:sticky;bottom:0}.check{display:flex;gap:.4rem;align-items:center;min-height:36px}.log ul{list-style:none;padding:0;margin:.4rem 0 0;display:grid;gap:.3rem}.log li{font-size:.92rem}.private{border-color:#e0c48a}.overlay{position:fixed;inset:0;background:#080503eb;display:grid;place-items:center;padding:1rem;z-index:40}.overlay.front{z-index:80}.coach-ring{position:fixed;z-index:60;pointer-events:none;border:3px solid #f3d48a;border-radius:14px;box-shadow:0 0 0 7px #f3d48a59,0 0 16px #f3d48ad9;animation:coach-pulse 1.3s ease-in-out infinite}.coach-tip{position:fixed;z-index:61;background:#2a1c12;color:#f6edd8;border:1px solid #e0c48a;border-radius:14px;padding:.75rem .85rem;box-shadow:0 10px 28px #00000073}.coach-tip p{margin:.25rem 0 .5rem;line-height:1.35}.coach-count{margin:0;color:#e0c48a;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}.coach-bar{position:fixed;z-index:62;left:50%;bottom:.6rem;transform:translate(-50%);display:flex;gap:.4rem;background:#140c08eb;border:1px solid rgba(224,196,138,.55);border-radius:999px;padding:.3rem}.coach-bar button{min-height:40px}[data-coach]{scroll-margin:90px}@keyframes coach-pulse{50%{box-shadow:0 0 0 12px #f3d48a1f,0 0 22px #f3d48af2}}.overlay .panel{max-width:38rem;width:min(38rem,100%)}.endgame ol{list-style:none;padding:0;display:grid;gap:.45rem}.endgame li{display:flex;gap:.5rem;align-items:center}.rules{max-height:min(80dvh,40rem);overflow:auto}.rules ul{padding-left:1.1rem}@media(max-width:860px){.stage{grid-template-columns:1fr;grid-template-rows:minmax(200px,36dvh) minmax(0,1fr)}.topbar .purse{display:none}.coach-bar{top:4.5rem;bottom:auto}.coach-tip{top:7.6rem!important;left:8px!important;right:8px;max-width:none!important}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}.coach-ring{animation:none}}.sound-toggle{position:fixed;top:calc(env(safe-area-inset-top,0px) + 10px);right:10px;z-index:70;width:42px;height:42px;border-radius:50%;border:1px solid rgba(243,212,138,.65);background:#18110ac7;font-size:19px;line-height:1;cursor:pointer;display:grid;place-items:center}.sound-toggle.inbar{position:static;width:38px;height:38px;flex:none}.hear-amos{display:block;width:100%;margin:.9rem 0 .2rem;padding:.65rem 1rem;border-radius:10px;border:1px solid rgba(243,212,138,.65);background:#f3d48a24;color:inherit;font-size:1rem;font-weight:600;cursor:pointer}.hear-amos:hover{background:#f3d48a3d}.job-main{background:none;border:none;padding:0;font:inherit;color:inherit;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer;width:100%}.job-take{margin-top:6px;align-self:flex-start}.hold{display:flex;flex-wrap:wrap;gap:.3rem;margin:.3rem 0}.hold-slot{min-width:44px;min-height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;padding:.2rem .35rem;font-size:.85rem;background:#f6edd80f}.hold-slot.empty{color:var(--muted);border-style:dashed}button.hold-slot{cursor:pointer}button.hold-slot:hover{border-color:var(--gold)}.hold-slot.cargo-G{border-color:#d9b96a}.hold-slot.cargo-S{border-color:#a9743f}.hold-slot.cargo-M{border-color:#b98d54}.hold-slot.cargo-F{border-color:#f1e7cf}.card-row,.hand{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;margin-top:.4rem}.trade-card{display:grid;gap:.25rem;border:1px solid var(--line);border-radius:8px;padding:.4rem;background:#f6edd80a;align-content:start}.trade-card img{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:5px;display:block}.trade-card b{font-size:.95rem}.trade-card span{font-size:.85rem;color:var(--muted)}.trade-card button{margin-top:.2rem}.town-fact{font-style:italic;color:var(--muted)}.dock-piece{cursor:grab;touch-action:none}.dock-piece:hover{filter:brightness(1.15)}.dock-plank{stroke:#7a5a34d9;stroke-width:2.4}.boat[data-drag]{cursor:grab}.drag-ghost{filter:drop-shadow(0 3px 4px rgba(0,0,0,.55))}.cargo-piece.ghost{opacity:.92}.drag-route{stroke-dasharray:7 5}.mill-marker .mill-wheel{fill:#140c08b8;stroke:#f3d48a;stroke-width:.7}.mill-marker .mill-spokes{stroke:#f3d48a;stroke-width:.55}.app{grid-template-rows:auto auto minmax(0,1fr) auto}.board-col{display:flex;flex-direction:column;min-height:0;min-width:0}.board-wrap{position:relative;flex:1;min-height:0;display:flex}.board-wrap>.board-viewport{flex:1}.market-row{display:grid;grid-template-columns:1fr;gap:.55rem}.market-row .panel{margin:0;min-width:0}.market-row .jobs{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.3rem}.market-row .job{flex:0 0 172px;min-height:0}.ticket-dest{font-family:Palatino,Georgia,serif;font-weight:700;font-size:1.08rem;color:#ffe9b8}.ticket-mix{font-size:.92rem}.ticket-prestige{color:var(--gold);font-weight:700}.market-row .card-row{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.3rem}.market-row .trade-card{flex:0 0 148px}.dock{display:flex;justify-content:center;padding:.5rem;background:#1b120c;border-top:1px solid var(--line)}.dock .actions{display:flex;gap:.45rem}.dock button{padding:.62rem 1.1rem;font-weight:700;font-size:1rem;border-radius:.65rem;box-shadow:0 5px 16px #0000008c;white-space:nowrap}.dock button:active{transform:translateY(2px);box-shadow:0 2px 8px #0000008c}.sheet{background:#221610;border:1px solid var(--gold);border-radius:.8rem;padding:.7rem .85rem;box-shadow:0 10px 30px #00000080}.personal{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:.9rem;padding:.55rem .75rem;background:linear-gradient(180deg,#251710,#170e08);border-top:2px solid var(--gold);max-height:178px}.personal-block,.hand-zone{overflow:auto;min-height:0;min-width:0}.personal h2{font-size:1rem;margin:.15rem 0 .35rem}.personal .hand{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.3rem}.personal .hand .trade-card{flex:0 0 128px}.dest-ring{fill:none;stroke-width:2.6;pointer-events:none;animation:ring-pulse 1.6s ease-in-out infinite}.claim-fx{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;pointer-events:none;z-index:8;animation:claim-fade 2.7s ease forwards}.claim-seal{width:76px;height:76px;border-radius:50%;background:#8e2f26;border:3px solid #e8b4a0;color:#ffe9d6;display:flex;align-items:center;justify-content:center;font-size:2.1rem;box-shadow:0 10px 30px #0009;animation:stamp-in .45s cubic-bezier(.2,2.2,.4,1)}.claim-fx b{font-family:Palatino,Georgia,serif;font-size:1.6rem;color:#ffe9d6;text-shadow:0 2px 12px #000}.claim-fx span{color:#f6edd8;text-shadow:0 1px 8px #000;max-width:82%;text-align:center}@keyframes stamp-in{0%{transform:scale(2.1) rotate(-18deg);opacity:0}}@keyframes claim-fade{0%,76%{opacity:1}to{opacity:0}}@media(max-width:860px){.personal{grid-template-columns:1fr;max-height:148px}.dock .actions{flex-wrap:wrap;justify-content:center}.dock button{padding:.5rem .8rem;font-size:.94rem}}.coach-tip{pointer-events:none}.coach-tip button{pointer-events:auto}@media(max-width:860px){.hand-zone>p,.personal-block .hint{display:none}.personal{max-height:140px}}@media(max-height:860px){.personal{max-height:126px}.hand-zone>p,.personal-block .hint{display:none}.dock{padding:.35rem}.dock button{padding:.5rem .95rem}}.track-layer{pointer-events:none}.track-glow{stroke:#409cd652;stroke-width:11;stroke-linecap:round}.track-line{stroke:#2674b280;stroke-width:5.5;stroke-linecap:round}.track-seg{stroke:#d8f0fd73;stroke-width:5.5;stroke-dasharray:7 5}.track-road{stroke:#a07c4a8c;stroke-width:3;stroke-dasharray:4 4;stroke-linecap:round}.gate-icon rect{fill:#f4efe2;stroke:#7a4b16;stroke-width:1.1}.gate-icon line{stroke:#7a4b16;stroke-width:1}.town-medallion{fill:#f7ead0eb;stroke:#b07f2e;stroke-width:1.6}.town-medallion.inland{fill:#e8d9b8e6;stroke:#8a6b3f}.name-plate{pointer-events:none}.name-plate rect{fill:#f6efe0ed;stroke:#7a5a24d9;stroke-width:.7}.plate-name{font-family:Georgia,Times New Roman,serif;font-size:8px;font-weight:700;letter-spacing:.03em;fill:#2e2118;text-anchor:middle}.plate-supplies{font-family:Georgia,Times New Roman,serif;font-size:5.5px;font-weight:700;letter-spacing:.14em;fill:#7a5a24;text-anchor:middle}.app{display:flex;flex-direction:column;height:100dvh}.stage{display:block;flex:1;min-height:0}.board-col{height:100%}.board-world>svg.board-terrain{position:absolute;inset:0;width:100%;height:100%}.water-wide{stroke:#5e93a8;stroke-width:13;stroke-linecap:round;opacity:.9}.water-core{stroke:#93bccc;stroke-width:6.5;stroke-linecap:round}.order-route{fill:none;stroke-width:3.2;stroke-linecap:round;stroke-dasharray:.1 8;animation:route-pulse 1.8s ease-in-out infinite}.need-ring{fill:none;stroke:#ffd97a;stroke-width:2.2;animation:route-pulse 1.6s ease-in-out infinite}@keyframes route-pulse{0%,to{opacity:.5}50%{opacity:.95}}.guide-line{position:absolute;top:8px;left:8px;z-index:6;background:#262016d9;color:#f6ecd2;padding:6px 10px;border-radius:10px;font-size:13px;max-width:302px;box-shadow:0 3px 10px #1e190f59}.guide-line .ticker{display:block;opacity:.78;font-size:12px;margin-top:2px}.error.chip{position:absolute;top:66px;left:8px;z-index:7;max-width:320px;margin:0}.orders-bar{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:6;display:flex;gap:8px;align-items:stretch;max-width:97%;overflow-x:auto;padding:2px}.orders-label{align-self:center;font-weight:800;background:#262016d9;color:#f3e5c3;padding:5px 9px;border-radius:8px;font-size:13px}.orders-ticket{background:#faf4e3f7;border:1.5px solid #a97c3f;border-radius:10px;padding:6px 8px;min-width:138px;box-shadow:0 3px 10px #1e190f59}.cargo-piece{display:inline-flex;width:17px;height:17px;border-radius:50%;align-items:center;justify-content:center;font-size:10px;font-weight:800;margin-right:2px;border:1.5px solid rgba(0,0,0,.35)}.cargo-G{background:#e3a93c}.cargo-S{background:#e8e4da}.cargo-M{background:#9c6b43;color:#fff}.cargo-F{background:#f3e3bb}.town-card{position:absolute;right:10px;top:86px;width:252px;z-index:6;background:#faf4e3f7;border:1.5px solid #a97c3f;border-radius:12px;padding:10px 12px;box-shadow:0 4px 14px #1e190f59;font-size:13px}.town-card h2{margin:0 0 4px;font-size:17px}.sheet-float{position:absolute;left:50%;transform:translate(-50%);bottom:88px;z-index:7;background:#faf4e3fa;border:1.5px solid #a97c3f;border-radius:12px;padding:10px 14px;max-width:min(540px,94%);box-shadow:0 6px 18px #1e190f66}.corner{position:absolute;left:10px;bottom:10px;z-index:6;background:#262016de;color:#f3e8cd;border-radius:12px;padding:8px 12px;max-width:308px;font-size:13px;box-shadow:0 3px 10px #1e190f59}.corner p{margin:3px 0}.corner-order{display:flex;align-items:center;gap:7px;margin:3px 0;flex-wrap:wrap}.pip{display:inline-flex;width:15px;height:15px;border-radius:50%;align-items:center;justify-content:center;font-size:9px;font-weight:800;border:1.5px solid rgba(0,0,0,.4);opacity:.32}.pip.on{opacity:1}.caravan{position:absolute;right:10px;bottom:10px;z-index:6;background:#faf4e3f5;border:1.5px solid #a97c3f;border-radius:12px;padding:8px 12px;display:flex;align-items:center;gap:10px;box-shadow:0 3px 10px #1e190f59}.caravan-label{font-weight:700;font-size:13px}.dock .actions button{font-size:17px;padding:12px 30px}.menu-log ul{max-height:170px;overflow:auto;margin:6px 0;padding-left:18px;font-size:13px}@media(max-width:860px){.guide-line{top:74px;max-width:47vw;font-size:12px}.orders-bar{left:4px;right:4px;transform:none}.orders-ticket{min-width:124px}.town-card{width:196px;top:auto;bottom:238px;right:6px;font-size:12px}.corner{bottom:142px;max-width:54vw;font-size:12px}.caravan{left:6px;right:6px;bottom:66px;justify-content:space-between}.sheet-float{bottom:208px}}.guide-line,.corner,.town-card,.orders-bar{pointer-events:none}.orders-bar .orders-ticket,.orders-bar .orders-label{pointer-events:auto}.menu{z-index:30}.coach-bar{pointer-events:none}.coach-bar button{pointer-events:auto}.app:has(.coach-bar){padding-bottom:56px}.town-card,.orders-ticket,.sheet-float,.caravan{color:#3a2a16}.town-card h2,.orders-ticket .ticket-dest{color:#4a2f18}.town-card .muted,.orders-ticket .muted,.sheet-float .muted,.caravan .muted{color:#7a6748}.sheet-float .hint{color:#5d4a2e}.order-route-halo{fill:none;stroke:#fff8ea;stroke-width:6.5;stroke-linecap:round;stroke-dasharray:.1 8;opacity:.5}@media(max-width:860px){.guide-line{top:128px}.town-card{bottom:262px}.town-card .town-fact,.town-card [data-testid=town-seals],.caravan-label{display:none}.caravan .hold-slot{min-width:46px;padding:6px 4px;font-size:11px}}.orders-ticket .job-take{color:#f6ecd2}@media(max-width:860px){.guide-line{top:172px;max-width:62vw}}
