/* Approved pale-sage visual benchmark: one continuous tabletop. */
body{background:#e0e8de;overflow:hidden;color:#34463f}.shell{position:absolute;left:50%;top:50%;width:1600px;max-width:none;height:900px;min-height:0;margin:0;padding:0;display:block;transform:translate(-50%,-50%) scale(var(--table-scale,1));background:radial-gradient(ellipse at 50% 38%,#ffffff35,transparent 75%),repeating-linear-gradient(7deg,#ffffff14 0 1px,transparent 1px 4px),repeating-linear-gradient(93deg,#82948308 0 1px,transparent 1px 3px),#e0e8de;overflow:visible}
.topbar{position:absolute;inset:18px 32px auto;height:36px}.brand-seal,.brand small,.brand h1 span,.offline-badge,.toolbar kbd{display:none}.brand h1{font:25px 'KaiTi',serif;letter-spacing:3px}.toolbar button{font-size:12px;color:#52685b;padding:5px 9px;background:transparent;border:0;min-height:28px}.toolbar .outline-button{border:0;background:transparent}.hud,.board-wrap,.board-stage,.player-desk,.game-rail{display:contents;border:0;box-shadow:none;background:none}.faction{position:absolute;display:flex;flex-wrap:nowrap;align-items:center;gap:14px;padding:0;border:0;background:none!important;box-shadow:none!important;width:280px;height:85px}.faction.crow{left:35px;bottom:29px}.faction.magpie{right:35px;top:69px;flex-direction:row;width:280px}.faction-piece{order:0;width:82px;height:82px;border:2px solid #c6b899;border-radius:50%;background-color:#fffbef;box-shadow:0 4px 8px #435e4128}.faction.active .faction-piece{outline:2px solid #6f9984;outline-offset:4px}.faction-heading{display:none}.faction .score{order:1;display:flex;flex-direction:row;align-items:center;gap:17px;margin:0}.score>span{display:flex;flex-direction:row;align-items:center;gap:6px;font-size:18px;color:#9f8a53}.score strong{font:27px Georgia;color:#34463f}.round{position:absolute;top:19px;left:700px;width:200px;margin:0;border:0;text-align:center;display:block}.round strong{font:22px Georgia,'Microsoft YaHei';color:#34463f}.round>small,.round>span,.round-track{display:none}
.public-orders{position:absolute;right:325px;top:76px;width:245px;display:flex;padding:0;border:0;background:none;box-shadow:none;gap:0}.public-order-side{display:none!important}.public-order-side.opponent{display:flex!important;flex-direction:row-reverse;gap:9px;align-items:center;width:100%}.public-order-side>b{display:none}.public-order{display:flex;flex-direction:column;align-items:center;justify-content:center;width:70px;height:75px;border-radius:5px;background:#f5e9d1;color:#354a3e;border:1px solid #cdbfa5;box-shadow:0 4px 0 #b5a88c,0 6px 9px #55695020;font-size:13px}.public-order i{font-style:normal;font-size:25px;margin-bottom:5px}.public-order.spent{opacity:.4;box-shadow:none}.sealed-orders{font-size:12px;color:#748571;text-align:center;width:100%}.opponent-hand{position:absolute;left:650px;top:68px;width:305px;height:94px;display:flex;justify-content:center;pointer-events:none}.opponent-back{width:68px;height:91px;margin-left:-18px;border:1px solid #b7c1a9;border-radius:4px;box-shadow:1px 4px 6px #465d3830;background:#adc2b1;display:grid;place-items:center;color:#fffbea;font-size:42px;font-family:serif;transform:none}.opponent-back:first-child{margin-left:0}.opponent-hand small{position:absolute;bottom:-20px;font-size:10px;color:#6c7f6e}
.board{position:absolute;inset:auto;left:292px;top:168px;width:1010px;height:540px;overflow:visible}.table-label,.board-legend{display:none}.board-guidance{position:absolute;left:340px;top:722px;width:810px;padding:0;background:none;border:0;box-shadow:none;text-align:center;font-size:12px;line-height:20px;min-height:0;color:#6a806e}.board-guidance.is-active{background:none;border:0;color:#456b56}.hex-slot{filter:drop-shadow(2px 6px 3px #47593e38);z-index:1}.hex-slot:has(.unit){z-index:2}.hex-slot:has(.hex.selected){z-index:3;filter:drop-shadow(0 3px 3px #5b856150)}.hex{clip-path:polygon(25% 0,75% 0,100% 45%,75% 100%,25% 100%,0 45%);border:0;border-radius:0;background:transparent!important;box-shadow:none!important;overflow:visible;display:grid;place-items:center;padding:0;isolation:isolate}.hex:after,.hex:before{display:none!important}.tile-drawing{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}.tile-top{fill:#f2e3c7;stroke:#c8b492;stroke-width:.85}.tile-side{fill:#c9b08a;stroke:#b39b7a;stroke-width:.7}.tile-ink{stroke:#738a71;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.hex:is(.selected,.legal,.return-target,.escape-target) .tile-top{stroke:#6e9e8a;stroke-width:2}.hex:is(.retreat-target,.attack) .tile-top{stroke:#c29165;stroke-width:2}.hex.selected .tile-top{fill:#dfebda}.hex:hover .tile-top,.hex:focus-visible .tile-top{stroke:#618b78;stroke-width:2.5}.hex .cell-art,.hex .cell-name,.hex .resource,.hex .recruit-site{display:none}.hex.site-depleted .tile-ink{opacity:.3}.unit{--foot-x:59%;--foot-y:96.5%;position:absolute;inset:auto;left:50%;top:var(--piece-surface,50%);width:72%;height:auto;aspect-ratio:1;transform:translate(calc(-1 * var(--foot-x)),calc(-1 * var(--foot-y)));z-index:3;pointer-events:none;filter:none}.unit:before{display:none}.piece-art{width:100%;height:100%;filter:drop-shadow(1px 3px 0 #beaa82) drop-shadow(3px 6px 2px #394b3438)}.token-id{right:8%;bottom:8%;width:16px;height:16px;font:9px Georgia;background:#526959;border:1px solid #f4efdd;box-shadow:none}.repeat-fee{bottom:-3px;white-space:nowrap;font-size:8px}.ready-badge{font-size:9px;background:#e9d8b5;color:#765d3f;border-radius:3px;padding:2px;position:absolute;bottom:3px;left:10%}.dropped-food{position:absolute;right:13%;bottom:15%;z-index:4;background:#f5e3b4;border-radius:10px;padding:2px 5px;font-size:9px}.route-preview{z-index:8;pointer-events:none}.roof{z-index:9;bottom:0;font-size:11px}.center-counter{position:absolute;z-index:2;left:calc(50% - 9px);top:60%;width:18px;height:18px;display:grid;place-items:center;font:12px Georgia;border-radius:50%;background:#debe76;color:#4c5944}
.order-dock{position:absolute;left:320px;bottom:35px;width:255px;height:85px}.order-dock>.dock-heading,.hand-dock>.dock-heading{display:none}.orders{display:flex;gap:10px;height:100%}.order{position:relative;flex:1;width:75px;min-height:0;height:83px;padding:8px 4px;border:1px solid #cbbb9c;border-radius:5px;background:#f5e8ce;box-shadow:0 4px 0 #b5a88c,0 6px 9px #55695020;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.order-letter,.order-boost{display:none}.order-symbol{position:static;display:block;font-size:28px;color:#344b3f;line-height:31px}.order strong{font-size:14px;margin:2px 0 0}.order.active{border-color:#659880;box-shadow:0 0 0 2px #82ab94,0 4px 0 #b5a88c;background:#faf4e3}.order.spent{opacity:.4;box-shadow:none}.order-modes{display:flex;gap:3px;margin-top:8px;flex-wrap:nowrap}.order-modes button{padding:6px 4px;min-height:28px;border:1px solid #bfcab3;background:#fffbed;font-size:12px;border-radius:3px;color:#48624f}.order-modes .primary{background:#8dac96;color:#fff}.shell[data-phase=orders] .order-dock{left:316px;bottom:30px;width:420px;height:150px}.shell[data-phase=orders] .order{height:145px}.shell[data-phase=orders] .hand-dock{left:762px;width:395px}.shell[data-phase=orders] .board-guidance{top:705px}
.hand-dock{position:absolute;left:608px;bottom:22px;width:560px;height:143px;overflow:visible}.hand{display:flex;justify-content:center;align-items:flex-start;overflow:visible!important;height:143px;padding:0;gap:0;scrollbar-width:none}.hand-navigation{display:none}.hand .card{flex:0 0 132px;width:132px;height:143px;margin:0;margin-right:min(8px,calc((var(--hand-width,560px) - var(--hand-count,3)*132px)/(var(--hand-count,3) - 1)));padding:0;border-radius:6px;border:1px solid #c9bea6;background:#fffcf0;box-shadow:0 4px 2px #b7aa8b55,0 8px 12px #47614022;transform:none;overflow:visible;transition:transform .16s,box-shadow .16s;opacity:1}.hand .card:last-child{margin-right:0}.hand .card:hover,.hand .card:focus-visible{transform:translateY(-35px);z-index:20;box-shadow:0 8px 20px #47614040}.hand .card.selected{transform:translateY(-23px);outline:2px solid #6b9d82;z-index:10}.card b{position:absolute;top:15px;left:33px;right:19px;font-size:12px;line-height:1.3;text-align:left;white-space:normal}.card-corner{position:absolute;left:8px;top:9px;right:auto;bottom:auto;width:23px;height:23px;display:grid;place-items:center;border-radius:50%;font:18px Georgia;color:#fff;background:#3c5450;border:0}.card-art{position:absolute;inset:38px 18px 12px;height:auto;display:block}.card-art>.sprite{width:100%;height:100%;background-size:400% 300%}.card>small,.card>.type{display:none}.category-corner{position:absolute;top:0;right:0;width:32px;height:32px;clip-path:polygon(0 0,100% 0,100% 100%);background:var(--category-color);color:white;font-size:15px;padding:1px 2px 0 14px;border-radius:0 5px 0 0}.card[data-category=move]{--category-color:#7faaa0}.card[data-category=search]{--category-color:#c7ad6a}.card[data-category=clash]{--category-color:#c88f79}.card[data-category=tactic]{--category-color:#8aa7be}
.recruit-panel{position:absolute;left:35px;top:205px;width:226px;padding:0;border:0;background:none;box-shadow:none}.recruit-panel>.dock-heading{margin:0 0 16px;display:flex}.recruit-panel h2{font:19px 'KaiTi',serif;color:#344b3f;letter-spacing:2px}.recruit-market{display:flex;flex-direction:column;gap:12px}.recruit-market>p{display:none}.market-candidate{position:relative;display:block!important;min-height:90px;width:226px;text-align:left;padding:13px 12px;border:1px solid #c6b99c;border-radius:6px;background:#fffbec;box-shadow:0 4px 3px #8d9a7b30;color:#344b3f;opacity:1!important}.market-candidate:disabled{color:#586951;filter:none}.market-candidate:not(:disabled){outline:1px solid #80a18a}.market-candidate b{font-size:15px;font-family:'KaiTi',serif;position:relative;z-index:2}.market-candidate .merc-art{position:absolute;right:14px;top:4px;width:86px;height:70px;background-size:400% 300%;background-repeat:no-repeat;mix-blend-mode:multiply}.market-cost{position:absolute;right:12px;bottom:7px;font-size:13px}.market-stock{font-size:10px;color:#6f826d;margin-left:auto}.merc-owned{font-size:10px;color:#6c805f;line-height:1.8;margin-top:16px}
.objective-panel,.journal-panel:not(.recruit-panel),.rail-footer{display:none}.decision-panel{position:absolute;right:28px;top:300px;width:267px;padding:0;border:0;background:none;box-shadow:none;z-index:5}.section-kicker{display:none}.step-track{display:none!important}.prompt-line>strong{font:20px 'KaiTi',serif;color:#3b5444;line-height:1.5}.prompt-line>span{font-size:12px;line-height:1.85;color:#6f816d;margin-top:10px;display:block}.actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:18px}.actions button{flex:1 1 auto;min-height:36px;font-size:12px;padding:8px 10px;border:1px solid #b6c5ad;background:#fff9e9;color:#46604d;border-radius:5px;box-shadow:0 3px 3px #82917020}.actions button.primary{background:#7b9f8d;color:white;border-color:#6d907c}.actions button.danger{background:#e1b9a6;color:#6b483b}.actions button:disabled{opacity:.4}.actions .choice-card{flex:0 0 calc(50% - 5px);min-height:80px;background:#fffbee}.tactic-preview,.inline-notice{font-size:11px;line-height:1.7;padding:8px;background:#faf5df;border-color:#94ab8b}.combat-preview{border:1px solid #c1cbb8;background:#fff9e6;padding:12px;margin-top:16px;border-radius:6px}.combat-preview p{font-size:11px}.inspector{position:absolute;right:28px;bottom:27px;width:267px;min-height:0;max-height:205px;overflow:auto;background:#fffbeeef;border:1px solid #c4cbb6;padding:15px;border-radius:7px;box-shadow:0 5px 16px #49613d1c;z-index:30;opacity:0;pointer-events:none;transition:opacity .15s}.inspector.peek,.inspector:hover,.inspector:focus-within{opacity:1;pointer-events:auto}.inspector h3{font:20px 'KaiTi',serif}.inspector p{font-size:12px;line-height:1.7}.inspect-tag{font-size:10px}.eyebrow{color:#829170;font-size:9px}.turn-banner,.action-toast{z-index:30}.action-toast{position:absolute;top:157px;left:50%;transform:translateX(-50%);background:#fff9e9;border:1px solid #c5cbb2;color:#4e6854;font-size:12px;box-shadow:0 4px 13px #68815330}.winner{position:absolute;inset:0;z-index:80;background:#e5ecdac9}.winner-box{background:#fff9e9}.game-dialog{background:#fbf8ed;border-color:#bdc9b2;color:#34463f;max-height:92dvh}.game-dialog::backdrop{background:#526b5260;backdrop-filter:blur(5px)}.lobby-art{background:#dfe8d8}.lobby-content{background:#fffbef}.setup-dialog[open]{max-width:850px}.setup label{color:#53694f}.gold-button{background:#7c9d88;border-color:#71917d;color:white}.lobby-mascots .sprite{background-size:400% 300%}.sprite.art-crow,.sprite.art-magpie{background-image:url('../assets/raven-magpie/visual-benchmark/exploration/atlas-study.png');background-size:400% 300%}.hand .card .sprite{background-image:url('../assets/raven-magpie/visual-benchmark/exploration/atlas-study.png')}.sprite.art-crow{background-position:0 0}.sprite.art-magpie{background-position:33.333333% 0}.sprite.art-gull{background-position:66.666667% 0}.sprite.art-pigeon{background-position:100% 0}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.shell:before,.shell:after{display:none!important}.hex .cell-name,.hex.building .cell-name{display:none!important}.order .order-symbol{position:static;display:block;font:28px Georgia;line-height:30px;color:#435d4e}.order .order-boost{display:none}.hand .card{background:#fffcf0!important}.card b{padding-right:0}.faction .score>span{display:flex!important;flex-direction:row!important;align-items:center;gap:6px}.faction .score strong{display:inline;color:#34463f}.resource-icon{width:23px;height:26px;vertical-align:middle;fill:none;stroke:#af8e4e;stroke-width:2;stroke-linecap:round}.market-cost{display:flex;align-items:center;gap:4px}.market-cost .resource-icon{width:17px;height:17px}.opponent-back svg{width:33px;height:56px;fill:#fff9e4;transform:rotate(22deg)}.market-candidate .merc-art{width:75px;height:75px;right:19px;top:4px}.market-candidate.selected{outline:2px solid #6c9f85}.inspector{visibility:hidden}.inspector.peek,.inspector:hover,.inspector:focus-within{visibility:visible}.board-guidance{max-width:none}.unit .piece-art{background-size:400% 300%}

.action-toast{bottom:auto;right:auto;height:auto;min-height:0;max-width:550px;padding:10px 18px;line-height:1.6}.turn-banner{position:absolute;top:165px;left:50%;bottom:auto;right:auto;transform:translateX(-50%);padding:10px 20px;font-size:14px;line-height:1.5;max-width:550px}.board-stage:before{display:none!important}

.hand .card:focus{transform:translateY(-35px);z-index:25;outline:2px solid #759a82;outline-offset:2px}.piece-art{background-repeat:no-repeat}.unit.recruited{opacity:1}

.ready-badge{top:auto;right:auto;left:12%;bottom:-3px;width:auto;height:auto;line-height:13px;padding:1px 4px;white-space:nowrap}.unit:has(.ready-badge) .token-id{background:#ab895a}.faction-piece.art-gull,.faction-piece.art-pigeon,.piece-art.art-gull,.piece-art.art-pigeon{background-image:url("../assets/raven-magpie/visual-benchmark/exploration/atlas-study.png");background-size:400% 300%}.action-toast{max-height:70px;overflow:hidden}.turn-banner{top:134px;max-height:55px;overflow:hidden}

.shell:has(#actionToast:not([hidden])) #turnBanner{display:none}

/* Anchor the physical base within each atlas cell, not its transparent canvas. */
.unit:has(.art-magpie){--foot-x:67.5%}
.unit:has(.art-gull){--foot-x:50%;--foot-y:97.5%}
.unit:has(.art-pigeon){--foot-x:64.5%;--foot-y:99%}
.hex,.hex:hover,.hex:focus-visible,.hex.selected{z-index:0}
.unit .token-id{left:calc(var(--foot-x) + 15%);right:auto;bottom:0}
.unit .ready-badge,.unit .repeat-fee{left:var(--foot-x);right:auto;bottom:-17px;transform:translateX(-50%)}

/* A separate silhouette hit area keeps bird clicks on its tile, while the
   transparent atlas corners remain available to neighboring tile buttons. */
.unit{--bird-hit:polygon(12% 80%,53% 42%,66% 25%,77% 22%,95% 29%,96% 35%,86% 38%,81% 61%,68% 82%,77% 93%,76% 99%,41% 99%,41% 90%,14% 96%)}
.unit:has(.art-magpie){--bird-hit:polygon(1% 84%,46% 49%,64% 24%,81% 24%,99% 30%,100% 38%,88% 40%,86% 70%,72% 83%,85% 94%,85% 99%,49% 99%,49% 87%,7% 95%,1% 94%)}
.unit:has(.art-gull){--bird-hit:polygon(13% 35%,28% 27%,38% 26%,45% 30%,55% 54%,95% 68%,96% 74%,62% 84%,63% 98%,35% 99%,35% 90%,42% 82%,31% 74%,25% 48%,13% 46%)}
.unit:has(.art-pigeon){--bird-hit:polygon(9% 76%,57% 42%,66% 26%,79% 24%,88% 30%,91% 42%,83% 43%,82% 66%,73% 83%,75% 99%,39% 99%,39% 88%,9% 85%)}
.unit:after{content:'';position:absolute;inset:0;clip-path:var(--bird-hit);pointer-events:auto;cursor:pointer}
/* 右侧阵营棋子镜像朝左：翻转贴图与点击热区，锚点取镜像值，编号与待命标记仍正向显示。 */
.unit.magpie:has(.art-crow){--foot-x:41%}
.unit.magpie:has(.art-magpie){--foot-x:32.5%}
.unit.magpie:has(.art-gull){--foot-x:50%}
.unit.magpie:has(.art-pigeon){--foot-x:35.5%}
.unit.magpie .piece-art{transform:scaleX(-1)}
.unit.magpie:after{transform:scaleX(-1)}

/* Match the standard flat-top hex used by the 75% / 50% board spacing. */
.hex{clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
/* Public supplies and cargo belong to the board, not either player's HUD. */
.bin-content{position:absolute;left:50%;top:58%;transform:translateX(-50%);padding:1px 5px;border-radius:8px;background:#f7f4e7;color:#486c65;font:bold 11px sans-serif;z-index:5;white-space:nowrap;box-shadow:0 1px 2px #67594125}
.bin-content.emptied{color:#9a9d93;background:#eee9df}
.cargo-badge,.cargo-ground{position:absolute;right:0;bottom:10%;padding:2px 5px;background:#fff3bd;color:#72582a;border:1px solid #cbb176;border-radius:8px;font:bold 12px sans-serif;z-index:12;white-space:nowrap}
.cargo-ground{right:15%;bottom:20%}.merc-meeple{display:block;width:100%;height:100%;background-repeat:no-repeat;filter:drop-shadow(0 4px 2px #534c4140)}
.shell[data-phase="mercenary"] .prompt{max-width:620px;background:#fcfaf2f2;border-radius:14px;box-shadow:0 6px 30px #55645520;padding:12px}
.shell[data-phase="mercenary"] .prompt button{font-size:12px;padding:5px 9px}

/* Public contracts remain inspectable after leaving the recruitment market. */
.merc-owned{display:grid;gap:8px;margin-top:12px}
.owned-contract{display:block;width:226px;text-align:left;padding:9px 11px;border:1px solid #b9c8b7;border-radius:7px;background:#f5f8ed;color:#344b3f;cursor:pointer;box-shadow:0 3px 7px #526b5212}
.owned-contract:hover,.owned-contract:focus-visible{outline:2px solid #7a9c87;outline-offset:2px}
.owned-contract-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}
.owned-contract-heading b{font-size:14px}.owned-contract-heading small{font-size:10px;color:#6a7b70}
.owned-contract-summary{display:block;font-size:11px;line-height:1.5;margin-top:4px}
.owned-contract-hint{display:block;font-size:10px;color:#708778;margin-top:3px}
.merc-contract-dialog{width:min(420px,85vw);padding:28px;border:1px solid #bbcbb9;border-radius:14px;box-shadow:0 18px 70px #344b3f35}
.merc-contract-dialog h2{margin:12px 0;font-size:24px}.merc-contract-dialog p{font-size:16px;line-height:1.9;white-space:pre-line}.merc-contract-dialog footer{font-size:12px;color:#718376;margin-top:20px}
.contract-close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:24px;color:#526b59;cursor:pointer}

/* Secret combat handoff fully covers the table, including the next hand. */
#handoffDialog { position:fixed; inset:0; width:100vw; height:100vh; max-width:none; max-height:none; margin:0; border:0; background:#f4f3e9; color:#344c46; text-align:center; padding-top:35vh; box-sizing:border-box; z-index:2147483647; }
#handoffDialog::backdrop { background:#f4f3e9; }
.card.bluff { background:linear-gradient(145deg,#f5f2e9,#e2e9df); }
.card.bluff .card-art::after { content:'?'; font-size:42px; color:#718a7d; }
.card.bluff .sprite { display:none; }

.combat-cards { position:absolute; left:620px; top:326px; width:360px; display:flex; justify-content:center; gap:16px; z-index:30; padding:18px; background:#f5f4eaeF; border-radius:18px; box-shadow:0 12px 40px #344c4633; }
.combat-cards[hidden] { display:none; }
.sealed-card { width:156px; height:208px; padding:14px; box-sizing:border-box; background:repeating-linear-gradient(45deg,#dae5db,#dae5db 5px,#e1e9df 5px,#e1e9df 10px); border:5px solid #fffdf1; border-radius:9px; box-shadow:0 3px 8px #344c4622; color:#3e6152; text-align:center; }
.sealed-card b { display:block; font-size:20px; margin:20px 0 12px; }
.sealed-card p { font-size:28px; }
.sealed-card.face-up { background:#fffdf1; }
.sealed-card.face-up p { font-size:12px; line-height:1.7; }
