/* The game is a tabletop: one shared board, loose decks, and a player rack. */
:root{--table:#163b35;--gold:#d2b36b;--cream:#f4e8c9;--paper:#f3e5c3;--ink:#342e22;--muted:#b8ba99;background:#102c28;color:var(--cream)}
body{background:radial-gradient(ellipse at 45% 25%,#31584b 0%,#1b3d35 50%,#0b231f 100%);background-attachment:fixed;min-height:100dvh;color:var(--cream)}
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;background:repeating-linear-gradient(35deg,#ffffff03 0 1px,transparent 1px 4px);box-shadow:inset 0 0 140px #0007}
.game-hud{height:60px;background:transparent;border:0;padding:10px 28px;z-index:10;gap:16px}.brand{color:#efe1b9;gap:9px}.brand-mark{border-color:#b79b60;background:#153b32;color:#d8bb70;box-shadow:0 3px 5px #0005;width:34px;height:38px;font-size:25px}.brand-mark>span{background:#163b32}.brand>span:last-child{font-size:22px;letter-spacing:4px}.brand small{font-size:7px;letter-spacing:1.4px;color:#b4b796}.game-hud nav{gap:8px}.game-hud nav button{min-height:40px;padding:8px 13px;border:1px solid #b69c5b60;border-radius:5px;background:#0b282899;color:#e5d7ad;font-size:13px;box-shadow:0 2px 0 #061815}.game-hud nav button:hover{color:#fff4cf;background:#285044}.game-subtitle{color:#bfc0a0;font-family:'Songti SC',serif;letter-spacing:6px;font-size:14px}.season-track{display:flex;gap:9px;align-items:center}.season-track>span{font-size:12px;letter-spacing:2px;color:#b8bb9c;margin-right:5px}.season-track b{font:15px Georgia,serif;width:27px;height:27px;border:1px solid #8f946b60;border-radius:50%;display:grid;place-items:center;color:#b4b697;background:#153b32;box-shadow:inset 0 2px 3px #0003}.season-track b.current{background:radial-gradient(circle at 35% 20%,#f0daa0,#b49450);border:2px solid #ecdbac;box-shadow:0 3px 0 #6a542c,0 0 18px #e6c07522;color:#4f3d1e;font-weight:bold}.season-track b.passed{color:#b9a473;background:#293f30}
.tabletop{height:calc(100dvh - 60px);min-height:740px;max-width:1640px;padding:0 28px 12px;display:grid;grid-template-rows:64px minmax(360px,1fr) 170px 65px;gap:12px;margin:auto}.turn-strip{background:transparent;border:0;padding:0 100px;min-height:0;display:block}.opponents{gap:22px;height:100%;align-items:center}.merchant-chip{color:#e6ddba;background:linear-gradient(#29493d,#19392f);border:1px solid #5a715146;border-bottom:4px solid var(--player);border-radius:8px;padding:9px 11px;gap:10px;box-shadow:0 5px 9px #07191288;min-height:57px}.merchant-chip.active{color:#fff4d4;background:linear-gradient(#526247,#294a35);border:1px solid #d6b875;border-bottom:4px solid var(--player);box-shadow:0 0 0 2px #d9ba6530,0 6px 12px #05150f88}.merchant-chip .crest{width:32px;height:36px;font-size:20px;box-shadow:inset 0 0 0 2px #fff3cb60,0 3px 2px #0004}.merchant-chip strong{font:15px 'Songti SC','STSong',serif;font-weight:bold}.merchant-chip small{color:#c2c6a7;font-size:12px;margin-top:5px}.first-marker{color:#e7d69b;background:#877342;font-size:10px;margin-left:7px}.turn-label{display:none}
.tabletop .play-surface{height:auto!important;min-height:0!important;max-height:none;display:grid;grid-template-columns:minmax(0,1fr) 345px;gap:27px;padding:0}.board-section{border:0;background:none;border-radius:0;box-shadow:none;overflow:visible;filter:drop-shadow(0 9px 0 #081d1b) drop-shadow(0 14px 12px #001a1680)}.board-section::before,.board-section::after{content:'';position:absolute;inset:0;clip-path:polygon(12% 0,88% 0,100% 15%,100% 85%,88% 100%,12% 100%,0 85%,0 15%);pointer-events:none}.board-section::before{background:linear-gradient(125deg,#dfca8b,#8f7445 42%,#c8ad70 70%,#85724a)}.board-section::after{inset:5px;background:linear-gradient(#15525922,#082c3322),url('/assets/sea-mat.webp') center/cover}.board-heading{z-index:3;top:14px;left:14%;right:14%;align-items:center}.board-heading h2{margin:0;color:#dbd4aa;font:14px 'Songti SC',serif;letter-spacing:4px}.board-key{color:#c4d0b3;font-size:11px;gap:5px}.board-key .property-token{width:19px;height:22px}.board-window{z-index:2;overflow:visible}.board{height:560px}.port-tile{width:206px;height:232px;filter:drop-shadow(0 5px 0 #8b7049) drop-shadow(0 8px 5px #062b3099)}.port-tile .hex-art{padding:5px;background:#ebd59c}.port-tile.monopoly .hex-art{background:var(--port-owner);padding:7px}.port-name{bottom:38px;left:28px;right:28px;background:#f2e4bde8;border-top:1px solid #fff2c8;border-bottom:2px solid #9c8155;box-shadow:0 2px 4px #33261366;padding:6px 0;gap:5px;color:#4b422d}.port-name strong{font-size:20px;letter-spacing:2px}.port-name>span{font-size:12px}.monopoly-label{top:91px;border:2px solid #efddae;padding:3px 7px;border-radius:3px;font-size:12px;z-index:4}.sea-separator{top:274px;color:#c7d0b087}.sea-separator span{font:13px 'Songti SC',serif;letter-spacing:8px}
.berth{width:70px;height:70px;min-height:0;border:2px solid #bba46e;border-radius:50%;padding:0;gap:0;background:radial-gradient(circle at 35% 25%,#e3d7ad,#bdad7d);box-shadow:0 4px 0 #7d704c,0 7px 8px #052f2f88;align-items:center;justify-content:center;color:#705e36;z-index:4}.berth:hover{background:radial-gradient(circle at 35% 25%,#fff1ba,#d8bd76);box-shadow:0 4px 0 #8f7848,0 0 0 4px #f2d87955}.berth.dockable,.berth.buyable{border-color:#f3dc95;box-shadow:0 4px 0 #7e6c3e,0 0 0 3px #ead38438,0 8px 10px #052729aa}.berth.selected{background:#f3d382;border-color:#fff3ba;box-shadow:0 4px 0 #95773b,0 0 0 5px #f5d27188}.berth.occupied{background:#cfbc8f}.berth-top{position:absolute;inset:0;height:auto;pointer-events:none}.berth-top>b{position:absolute;left:-7px;top:-3px;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#344e40;border:1px solid #bfa976;color:#fff0bc;font:16px Georgia,serif;box-shadow:0 2px 2px #182c2788}.berth .property-token{width:31px;height:34px;right:-11px;top:-16px;z-index:5}.ship-slot{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.ship-slot img{width:72px;height:64px;max-width:none;margin:0;filter:drop-shadow(0 4px 2px #4e432466)}.ship-slot small{position:absolute;bottom:-7px;right:-1px;color:#f6e9c0;background:#2e4437;border:1px solid #a58f5b;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;font:12px Georgia,serif}.ship-slot small:empty{display:none}.anchor-mark{font-size:29px;color:#847342;opacity:.65}
.market{display:flex;flex-direction:column;background:transparent;border:0;box-shadow:none;padding:5px 0 3px;overflow:visible;gap:8px}.market-title{border:0;padding:0 0 2px;color:#f1dfaf}.market-title h2{font:20px 'Songti SC',serif;letter-spacing:4px}.market-title>span{font-size:12px;color:#aebe9d}.market-tier{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;margin:0;padding-left:47px}.tier-heading{height:17px;margin-bottom:5px;font-size:12px;color:#d2caa8}.tier-dot{width:6px;height:6px}.deck-count{position:absolute;left:0;top:26px;display:flex;flex-direction:column;gap:6px;color:#bfc4a3;font-size:11px}.deck-count .card-back{width:32px;height:47px;border:1px solid #e3d09b;border-radius:3px;box-shadow:2px 2px 0 #a29365,4px 4px 0 #e1d2a3,6px 6px 0 #978356,8px 9px 7px #04160c88;transform:rotate(-6deg)}.order-pair{display:grid;grid-template-columns:1fr 1fr;gap:13px;flex:1;min-height:0;padding:0 3px 2px}.order-card{border:1px solid #bba578;border-top:5px solid var(--tier);border-radius:7px;background:linear-gradient(105deg,#fff2d4,#eaddb7);box-shadow:0 2px 0 #f9ebc4,0 4px 0 #a79363,0 8px 9px #00181188;transform:rotate(-2deg)}.order-card:nth-child(even){transform:rotate(2deg)}.order-card:hover{z-index:3;box-shadow:0 2px 0 #f9ebc4,0 4px 0 #bba473,0 11px 13px #001811bb;filter:brightness(1.05)}.order-card.selected{box-shadow:0 0 0 3px #f1ce70,0 7px 12px #00150caa}.order-card.ready{border-color:#b1bf76;box-shadow:0 0 0 2px #c4d07f,0 8px 9px #00181188}.market .order-main{padding:5px 7px;min-height:0;display:flex;flex-direction:column;justify-content:center;height:100%;align-items:center}.card-tier,.market .card-tier{font-size:12px;letter-spacing:1px;line-height:16px}.card-name,.market .card-name{display:none}.market .recipe{margin:3px 0;min-height:30px;gap:2px}.market .ingredient img{width:30px;height:28px}.market .ingredient b{font-size:17px}.market .recipe:has(.ingredient:nth-child(3)){min-height:32px;max-width:105px}.market .recipe:has(.ingredient:nth-child(3)) .ingredient{height:18px}.market .recipe:has(.ingredient:nth-child(3)) img{width:23px;height:18px}.market .recipe:has(.ingredient:nth-child(3)) b{font-size:14px;line-height:18px}.market .card-reward b{font-size:29px}.market .card-reward>span{font-size:12px}
.personal{background:linear-gradient(90deg,#162c2299,#142f2680);border:1px solid #a58c5550;border-top:2px solid #be9c5660;border-radius:10px 10px 25px 25px;box-shadow:0 8px 16px #03181066,inset 0 1px 0 #eddb9d15;margin:0;overflow:visible;padding:0 16px;position:relative}.personal-label{height:31px;background:transparent;border:0;padding:0;gap:8px;color:#ebdeba}.personal-label>strong{font:14px 'Songti SC',serif}.personal-label>span:not(.crest){font-size:11px;color:#9cac8d}.asset-detail{color:#c8bf94;font-size:12px}.personal-content{display:grid;grid-template-columns:1.06fr 1.15fr .7fr .85fr;gap:25px;padding:0 6px 9px;align-items:start}.area-heading{color:#d5c69f;font-size:12px;margin-bottom:7px}.area-heading>span{color:#9fae8e;font-size:11px}.hand-cards{gap:12px;padding:0 4px}.hand-empty{background:#0e2c2255;border-color:#8b966556;height:96px;color:#8c9d7b;transform:rotate(-3deg);border-radius:6px}.hand-empty:nth-child(even){transform:rotate(3deg)}.hand-empty small{font-size:11px}.hand-area .order-main{min-height:92px;height:92px;padding:4px}.hand-area .card-tier{font-size:11px}.hand-area .card-reward b{font-size:24px}.hand-area .recipe{min-height:25px}.hand-area .ingredient img{width:26px;height:25px}.hand-area .ingredient b{font-size:14px}.hand-area .ready-note{font-size:10px;margin-top:1px}.deliver-button{position:absolute;bottom:0;transform:translateY(85%);z-index:3;border-radius:4px;min-height:29px;background:#b6c180;box-shadow:0 3px 3px #03221888}.material-stacks{justify-content:center;gap:10px;padding:0 4px}.material-card{width:69px;max-width:80px;height:97px;border-radius:5px;background:linear-gradient(110deg,#f8ebcc,#dccb9b);box-shadow:1px 3px 0 #b6a170,3px 5px 0 #e2d2a6,4px 7px 0 #958256,5px 10px 9px #061e1988;transform:rotate(-5deg);padding:6px 3px}.material-card:nth-child(even){transform:rotate(4deg);margin-top:4px}.material-card:not(:disabled):active{transform:translateY(-5px) rotate(0)}.material-card>span{color:#675b3b;font-size:13px}.material-card img{width:59px;height:57px}.material-card>b{font-size:19px;bottom:-5px;right:1px;border:2px solid #efe2b7;background:#695b39;color:#fff1c8}.coin-balance{min-height:93px;gap:8px;color:#e9d7a0;justify-content:center;filter:drop-shadow(0 3px 1px #081c1680)}.coin-balance img{width:59px;height:63px}.coin-balance strong{font:38px Georgia,serif;text-shadow:0 2px 1px #0008}.coin-balance>span{color:#c1b078}.cash-area .area-heading{text-align:center}.dock-ships{height:68px;gap:0}.dock-ship{min-width:54px;height:68px}.dock-ship img{width:65px;height:55px;filter:drop-shadow(0 5px 2px #031c1999)}.dock-ship>span{color:#c3b98d;font-size:11px}.no-ships{color:#a7b298;font-size:12px}.building-ship{color:#c3b98d;font-size:11px}.boat-button{background:#b79b57;color:#352e1d;border:1px solid #e1c986;box-shadow:0 3px 0 #5d4b27;min-height:30px;font-size:12px}.more-ships{color:#d6c69b}
.action-area{position:relative;background:transparent;padding:0;z-index:7}.action-bar{background:#0b2623dd;border:1px solid #a0874f66;border-radius:8px;min-height:63px;padding:8px 14px;box-shadow:0 4px 0 #061b17,0 6px 14px #051e1977}.turn-prompt{gap:12px}.turn-prompt strong{color:#ebd9ac;font-size:14px;font-weight:500}.turn-prompt strong>span{color:#b1c1a4;font-size:12px}.turn-prompt p{color:#adbda0;font-size:12px;margin-top:4px}.turn-actions .end-button{background:linear-gradient(#d7b96f,#b3944d);border:1px solid #f0d697;border-bottom:3px solid #79612f;color:#332b1c;box-shadow:0 3px 5px #0005;border-radius:6px;min-height:44px;font-size:14px;font-weight:600}.phase-coins{display:flex;gap:9px;margin-right:10px}.phase-coins>span{display:grid;place-items:center;width:30px;height:30px;border:1px solid #8b976954;border-radius:50%;color:#81967b;font:14px Georgia,serif;position:relative;margin-bottom:10px}.phase-coins small{position:absolute;top:32px;font:10px -apple-system,sans-serif;white-space:nowrap}.phase-coins .current{background:#cab16f;color:#3f381f;border:1px solid #f3df9e;box-shadow:0 3px 0 #695b33}.phase-coins .current small{color:#dfd0a0}.selection-panel{position:absolute;bottom:calc(100% + 11px);left:50%;right:auto;transform:translateX(-50%);width:min(650px,90vw);margin:0;background:linear-gradient(115deg,#fff0cb,#e0cb96);border:2px solid #be9e5b;border-radius:9px;padding:14px 44px 14px 18px;box-shadow:0 7px 0 #7b6742,0 18px 35px #03171199;color:#403b29;z-index:20}.selection-copy>strong{font:18px 'Songti SC',serif}.selection-copy>p{font-size:13px;color:#756448}.selection-copy .primary{background:#416449;border-color:#273e28;color:#fff2c7;min-height:43px}.selection-note{color:#6c7751}.tutorial-note{position:absolute;bottom:calc(100% + 10px);left:0;right:0;background:#dace9c;color:#565735;box-shadow:0 4px 8px #03170d80;z-index:9}.action-area:has(.selection-panel) .tutorial-note{display:none}
.game-menu{display:grid;gap:10px}.game-menu button{font-size:15px;min-height:47px}dialog{background:linear-gradient(120deg,#faeccb,#e7d5a7);border:3px solid #ad9056;box-shadow:0 6px 0 #74603d,0 30px 100px #00100bcc;color:#3e412b}dialog::backdrop{background:#041811b8;backdrop-filter:blur(5px)}dialog p{color:#686549}dialog h2{color:#3e482e}.primary{background:linear-gradient(#42654a,#2c4e35);color:#fbefd0;border-color:#203d29;box-shadow:0 3px 0 #132919}.secondary{background:#efe2bd;color:#626344;border-color:#b7a576;box-shadow:0 2px 0 #b29d67}.close-selection{color:#7a643e}.modal-close{color:#85714c}#toast{background:#1c4431;border-color:#bda066;color:#f9e6b1}
/* A box-cover title and a setup tray, rather than a website landing page. */
.welcome{max-width:1220px;min-height:calc(100dvh - 70px);padding:14px 35px 30px;gap:55px;grid-template-columns:minmax(0,1fr) 400px;align-items:center}.welcome-copy{grid-column:2;grid-row:1;max-width:400px;width:100%;margin:0}.game-title{text-align:center;margin:0 0 19px;color:#eed6a0;text-shadow:0 3px 0 #061f17}.game-title>span{font:10px Georgia,serif;letter-spacing:5px;color:#bcbd93}.game-title h1{font:52px 'Songti SC','STSong',serif;letter-spacing:14px;line-height:1.1;margin:9px 0 10px}.game-title p{font:16px 'Songti SC',serif;letter-spacing:7px;color:#d7c695;margin:0}.setup{background:linear-gradient(115deg,#f3e7c8,#d8c795);border:1px solid #b99e64;border-radius:9px;box-shadow:0 6px 0 #756344,0 22px 36px #05191080;padding:20px 24px;color:#3e4831}.section-head{margin-bottom:13px}.section-head h2{font:23px 'Songti SC',serif}.section-head>span{color:#8b7b53}.mode-tabs{background:#b4b28e55;border-color:#b5ad82}.mode-tabs button{font-size:14px;color:#717457}.mode-tabs button.active{background:#faf0d2;color:#3e5538;box-shadow:0 2px 0 #b6a46d}.mode-help{min-height:0;color:#827851;font-size:12px;margin:9px 0}.setting-line{padding:8px 0}.setting-line small{color:#8d805c}.stepper button{border-color:#ab9f72;background:#e8dcaf;box-shadow:0 2px 0 #b4a46d}.ai-settings label{border-color:#b6ad8266;color:#536144}.ai-settings select{background:#eee4c3;border-color:#b4ad83;color:#536144}.seed-details{color:#807855;margin:3px 0 9px}.seed-details input{background:#fbefd0}.start-button{min-height:47px;padding:11px 16px}.continue-button{border-color:#b6a77b;color:#616945;min-height:42px;font-size:13px}.continue-button>span{color:#8e825c;font-size:11px}.local-note{color:#96885e;font-size:10px;margin-top:11px}.welcome-table{grid-column:1;grid-row:1;width:100%;background:transparent;border:0;box-shadow:none;overflow:visible;padding:0;min-height:0;border-radius:0;transform:rotate(-5deg)}.welcome-ports{height:465px;max-width:580px;margin:0 auto}.preview-port{width:230px;height:250px;filter:drop-shadow(0 6px 0 #aa8f5e) drop-shadow(0 14px 8px #041e1799)}.preview-port>span{font-size:17px}.preview-letter{top:178px;width:110px;height:156px;left:calc(50% - 55px);box-shadow:0 6px 0 #ab9569,0 13px 12px #032215aa}.preview-letter img{height:77px}.preview-letter>span{font-size:13px}.preview-letter b{font-size:16px}.preview-ship{width:95px;height:77px}.table-note{font-size:12px;color:#a7b48e;letter-spacing:5px;margin-bottom:25px}.welcome-materials{margin-top:25px;gap:20px}.welcome-materials>div{width:69px;height:97px;border-radius:5px;box-shadow:1px 4px 0 #a7905a,0 9px 10px #041e1680}.welcome-materials img{height:66px}.welcome-materials span{font-size:12px}.welcome-materials .mini-gold{background:transparent;border:0;box-shadow:none;margin-left:0}.mini-gold img{filter:drop-shadow(0 5px 1px #09231588)}.mini-gold>span{color:#cfbf8d}.table-caption{color:#adb998;font-size:12px;letter-spacing:2px;margin-top:19px}.results{color:#ead8aa}.results-table{color:#504a32;background:#efe2ba;border:3px solid #bfa56a;box-shadow:0 7px 0 #756043,0 12px 35px #031b1399}.winner-line{color:#d4cc9c}.results>.eyebrow{color:#b7bd92}.results>p:not(.winner-line){color:#acb794}
@media(min-width:900px) and (max-height:830px){.game-hud{height:54px}.tabletop{height:calc(100dvh - 54px);min-height:700px;grid-template-rows:57px minmax(335px,1fr) 157px 61px;gap:9px}.personal-content{gap:20px}.personal{padding:0 13px}.personal-label{height:27px}.area-heading{margin-bottom:4px}.material-card{height:91px}.hand-empty{height:87px}.hand-area .order-main{height:86px;min-height:86px}.action-bar{min-height:60px}.market{gap:6px}.market .recipe{min-height:23px;margin:2px 0}.market .recipe:has(.ingredient:nth-child(3)){min-height:30px}.market .card-tier{font-size:11px}.market .card-reward b{font-size:25px}.market .card-reward>span{font-size:11px}}
@media(min-width:900px) and (max-width:1200px){.game-hud{padding:9px 20px}.tabletop{padding-left:18px;padding-right:18px}.turn-strip{padding:0 50px}.opponents{gap:13px}.merchant-chip{padding:7px;gap:6px}.merchant-chip strong{font-size:13px}.merchant-chip small{font-size:10px}.merchant-chip .crest{width:27px;height:31px}.tabletop .play-surface{grid-template-columns:minmax(0,1fr) 285px;gap:16px}.market-tier{padding-left:35px}.deck-count .card-back{width:25px;height:40px}.order-pair{gap:10px}.personal-content{gap:15px;grid-template-columns:1fr 1.1fr .6fr .8fr}.material-stacks{gap:7px}.material-card{width:58px}.material-card img{width:49px}.coin-balance{gap:4px}.coin-balance img{width:44px}.coin-balance strong{font-size:33px}.dock-ship img{width:51px}.dock-ship{min-width:44px}.welcome{gap:32px;padding:15px 30px;grid-template-columns:minmax(0,1fr) 370px}.preview-port{width:200px;height:220px}.welcome-ports{height:410px}.preview-letter{top:155px}.welcome-materials{gap:13px}}
@media(max-width:899px){
 .game-hud{height:62px;padding:10px 15px;gap:10px;flex-wrap:nowrap}.game-hud .brand>span:last-child{font-size:20px;letter-spacing:2px}.game-hud .brand small{display:none}.game-hud .brand-mark{width:28px;height:32px;font-size:22px}.game-hud nav{gap:5px}.game-hud nav button{font-size:12px;padding:6px 9px;min-height:38px}.game-hud nav button span{display:none}.game-subtitle{font-size:11px;letter-spacing:3px}.season-track{gap:5px;flex:1;justify-content:center}.season-track>span{display:none}.season-track b{width:20px;height:20px;font-size:12px}.season-track b:not(.current):not(.passed){display:none}.season-track b.passed{display:none}.season-track b.current{width:32px;height:32px;position:relative}.season-track b.current:after{content:'/ 8';position:absolute;left:36px;white-space:nowrap;color:#bfc8a4;font-size:12px}.season-track{padding-right:27px}
 .tabletop{height:auto;min-height:0;display:flex;flex-direction:column;gap:16px;padding:0 14px 14px}.turn-strip{padding:0;min-height:0}.opponents{gap:8px}.merchant-chip{padding:8px 3px;gap:5px;min-height:92px;border-bottom-width:3px}.merchant-chip .crest{width:25px;height:29px;font-size:16px}.merchant-chip strong{font-size:12px}.merchant-chip small{font-size:9px;white-space:normal;line-height:1.4}.first-marker{font-size:8px;margin-left:3px}.tabletop .play-surface{display:flex;flex-direction:column;gap:20px}.board-section{padding:54px 0 18px;height:auto;width:100%;overflow:visible;filter:drop-shadow(0 6px 0 #081d1b) drop-shadow(0 8px 7px #001a1680)}.board-section:before,.board-section:after{display:block;clip-path:polygon(7% 0,93% 0,100% 5%,100% 95%,93% 100%,7% 100%,0 95%,0 5%)}.board-section:after{position:absolute;inset:4px;content:''}.board-heading{display:flex;left:9%;right:9%;top:17px}.board-heading h2{font-size:15px}.board-key{font-size:10px}.board-window{width:100%;min-width:0;height:auto}.board{width:100%;height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));position:relative;transform:none!important;left:0!important}.port-group{height:310px;left:auto!important;top:auto!important;position:relative}.port-cluster{position:absolute;left:calc(50% + 16px);top:50%;width:0;height:0;transform:scale(.87)}.port-tile{width:206px;height:232px}.port-name strong{font-size:20px}.berth{width:70px;height:70px;min-height:0}.sea-separator{display:none}
 .market{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 3px}.market-title{grid-column:1/-1}.market-tier{padding:0;display:block}.tier-heading{height:auto;font-size:12px;margin-bottom:9px}.deck-count{position:static;display:inline-flex;flex-direction:row;font-size:10px;gap:3px}.deck-count .card-back{display:none}.order-pair{grid-template-columns:1fr;gap:14px;padding:0 1px}.market .order-main{min-height:134px;padding:7px 3px}.market .card-tier{font-size:11px;letter-spacing:0}.market .ingredient img{width:27px;height:27px}.market .ingredient b{font-size:16px}.market .card-reward b{font-size:30px}.market .card-reward>span{font-size:11px}.market .recipe{min-height:34px}.market .recipe:has(.ingredient:nth-child(3)){min-height:38px;max-width:88px}.market .recipe:has(.ingredient:nth-child(3)) img{width:20px;height:19px}.market .recipe:has(.ingredient:nth-child(3)) b{font-size:13px}
 .personal{padding:0 12px 15px;margin:0;border-radius:10px}.personal-label{height:39px}.personal-content{grid-template-columns:1fr 1fr;gap:23px 12px;padding:0 3px}.hand-area,.inventory-area{grid-column:1/-1}.hand-cards{gap:22px;max-width:none;padding:0 7px}.hand-empty{height:105px}.hand-area .order-main{height:107px;min-height:107px}.hand-area .card-tier{font-size:12px}.material-stacks{gap:13px;justify-content:space-around}.material-card{height:103px;width:23%;max-width:83px}.material-card img{width:57px;height:64px}.material-card>span{font-size:12px}.material-card>b{font-size:20px}.cash-area .area-heading{text-align:left}.coin-balance{min-height:72px;justify-content:flex-start;gap:6px}.coin-balance img{width:48px;height:54px}.coin-balance strong{font-size:34px}.dock-area{border:0;padding:0}.dock-ships{height:70px}.dock-ship{min-width:46px;height:67px}.dock-ship img{width:53px;height:47px}.boat-button{min-height:44px}.area-heading{font-size:13px}.area-heading>span{font-size:11px}
 .action-area{position:sticky;bottom:8px;top:auto;padding:0;background:none;z-index:7}.action-bar{padding:9px 10px;gap:8px;background:#0a2825f5;box-shadow:0 3px 0 #041b16,0 7px 25px #00150acc;backdrop-filter:blur(10px)}.phase-coins{display:none}.turn-prompt{align-items:center;gap:8px}.turn-prompt .crest{width:25px;height:29px;font-size:16px}.turn-prompt strong{font-size:13px}.turn-prompt strong>span{font-size:11px;margin-left:5px}.turn-prompt p{font-size:12px;margin-top:3px}.turn-actions{justify-content:flex-end}.turn-actions .end-button{min-height:42px;padding:7px 16px;font-size:13px;margin-left:0}.action-bar{flex-direction:row;align-items:center}.turn-prompt{flex:1}.turn-prompt p{max-width:390px}.turn-prompt strong>span{display:block;margin:3px 0 0}.turn-prompt strong{line-height:1.3}.selection-panel{width:calc(100vw - 34px);padding:13px 39px 13px 15px;bottom:calc(100% + 10px);max-height:60dvh;overflow:auto}.selection-copy>strong{font-size:18px}.selection-copy>p{font-size:13px}.selection-copy>button{width:100%;min-height:46px;margin-top:7px}.tutorial-note{font-size:12px;padding:8px;bottom:calc(100% + 9px)}
 .welcome{display:flex;flex-direction:column;min-height:0;max-width:600px;padding:10px 22px 28px;gap:24px}.welcome-copy{max-width:420px;margin:auto;order:0}.game-title{margin:5px 0 22px}.game-title h1{font-size:48px;margin:9px 0}.game-title p{font-size:15px}.setup{padding:21px}.welcome-table{order:1;max-width:430px;width:100%;transform:rotate(-3deg);margin:22px auto 0;min-height:0;padding:0;border:0}.welcome-ports{height:363px}.preview-port{width:174px;height:194px}.preview-letter{top:139px;width:90px;height:130px;left:calc(50% - 45px)}.preview-letter img{height:62px}.preview-letter>span{font-size:11px}.preview-letter b{font-size:13px}.preview-ship{width:74px;height:65px}.welcome-materials{gap:15px;margin:15px 0 20px}.welcome-materials>div{width:55px;height:84px}.welcome-materials img{height:56px}.welcome-materials span{font-size:11px}.table-caption{font-size:11px;gap:12px;margin-top:15px}.table-note{font-size:10px;margin-bottom:17px}.results{margin-top:25px}.results-table{padding:3px 8px}.result-row{color:#4f4830}.result-heading{font-size:11px}
}
@media(max-width:599px){.board{grid-template-columns:1fr}.port-group{height:310px}.port-cluster{transform:scale(1)}.board-heading{left:11%;right:11%}.market{gap:10px}.market-title h2{font-size:19px}.market-title>span{font-size:11px}.tier-heading{font-size:11px}.merchant-chip strong{font-size:11px}.turn-prompt p{font-size:11px}.turn-actions .end-button{font-size:12px;padding:8px 10px}.game-hud .brand>span:last-child{font-size:19px}.game-hud nav button{padding:6px 8px}.personal{padding-left:9px;padding-right:9px}.material-stacks{gap:9px}.material-card img{width:52px}}
@media(max-width:370px){.game-hud{padding:8px 10px}.game-hud .brand{gap:5px}.game-hud .brand-mark{display:none}.tabletop{padding-left:10px;padding-right:10px}.merchant-chip strong{font-size:10px}.merchant-chip small{font-size:9px}.opponents{gap:5px}.port-group{height:280px}.port-cluster{transform:scale(.9)}.market{gap:8px}.material-stacks{gap:7px}.coin-balance{gap:3px}.coin-balance img{width:41px}.coin-balance strong{font-size:31px}.dock-ship{min-width:40px}.dock-ship img{width:45px}.game-subtitle{font-size:10px;letter-spacing:2px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
.preview-port>span{color:#55462c}

.ai-avatar{font-size:23px;color:#536345;width:28px;text-align:center}
.deliver-button{left:0;right:0}

/* Compact phone board: four ports in two rows, with 44px berth targets. */
@media(max-width:599px){.board{grid-template-columns:repeat(2,minmax(0,1fr))}.board-section{padding:43px 0 10px}.board-heading{top:13px;left:8%;right:8%}.board-heading h2{font-size:12px;letter-spacing:2px}.port-group{height:176px}.port-cluster{left:calc(50% + 8px);transform:scale(.5)}.board .berth{width:88px;height:88px}.board .port-name strong{font-size:24px}.board .port-name>span{display:none}.board .property-token{width:30px;height:34px}.board .berth-top>b{font-size:24px}.board .ship-slot small{font-size:24px}}
@media(max-width:370px){.tabletop{padding-left:7px;padding-right:7px}.port-group{height:170px}.port-cluster{left:calc(50% + 5px)}}

/* Delivery stays visible beside the phase controls, with a secondary exit. */
.delivery-bar .turn-actions{display:flex;gap:10px;align-items:center}.delivery-choices{display:flex;gap:8px}.deliver-now{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:48px;padding:8px 12px;background:linear-gradient(#f6df9c,#dcc078);border:1px solid #fff0bc;border-bottom:3px solid #96763e;color:#302b1d;white-space:normal}.deliver-now span{font-size:12px}.deliver-now strong{font-size:15px}.delivery-bar .delivery-end{background:transparent;color:#d2cfb1;border:1px solid #768571;box-shadow:none;white-space:nowrap}.tabletop:has(.delivery-bar){grid-template-rows:57px minmax(335px,1fr) 157px auto}
@media(max-width:1100px){.delivery-bar{flex-wrap:wrap}.delivery-bar .turn-actions{width:100%;justify-content:flex-end}.delivery-choices{flex:1}.deliver-now{flex:1}}
@media(max-width:599px){.delivery-bar .turn-actions{flex-wrap:wrap}.delivery-choices{width:100%;flex-basis:100%}.deliver-now{padding:8px;min-width:0}.deliver-now span{font-size:11px}.deliver-now strong{font-size:14px}.delivery-bar .delivery-end{min-height:36px;padding:6px 12px}.delivery-bar .turn-prompt p{margin-bottom:0}.delivery-choices:empty{display:none}}
