:root{color:#15211d;background:#d8e5de;font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #15211d;--muted: #64726b;--line: #c9d2cc;--surface: #f8faf8;--surface-strong: #ffffff;--forest: #183f32;--forest-light: #2f6954;--sea: #79bbb7;--coral: #d95f4f;--gold: #d6a62f;--focus: #136f63;--danger: #ae3f36;--shadow: 0 10px 30px rgb(20 40 32 / 12%)}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden}body{min-height:100dvh}button,input,select{font:inherit;letter-spacing:0}button,[role=button]{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid rgb(19 111 99 / 35%);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{width:100%;height:100dvh;background:#e7eee9}.loading-screen{position:relative;display:grid;width:100%;min-height:100dvh;place-items:center;overflow:hidden;background:#79b8b0}.loading-screen .access-board-art{width:min(760px,92vw);opacity:.58}.loading-status{position:absolute;display:grid;min-width:min(320px,calc(100% - 32px));padding:18px 22px;place-items:center;gap:7px;color:#173a2f;background:#f9fcfaeb;border:1px solid rgb(255 255 255 / 54%);border-radius:8px;box-shadow:var(--shadow);text-align:center}.loading-status span{color:var(--muted);font-size:.78rem}.loading-status .button{margin-top:8px}.loading-spinner{animation:loading-spin 1.1s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}.icon-button{display:inline-grid;width:40px;height:40px;padding:0;place-items:center;color:inherit;background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer}.icon-button:hover:not(:disabled){background:#183f3214;border-color:#183f321f}.button{display:inline-flex;min-height:42px;padding:0 18px;align-items:center;justify-content:center;gap:8px;color:var(--ink);background:var(--surface-strong);border:1px solid #b7c4bd;border-radius:6px;font-weight:700;cursor:pointer}.button:hover:not(:disabled){border-color:#75887f;background:#f3f7f4}.button.primary{color:#fff;background:var(--forest);border-color:var(--forest)}.button.primary:hover:not(:disabled){background:#23513f;border-color:#23513f}.button.danger{color:var(--danger);border-color:#ae3f3659}.button.full{width:100%}.field{display:grid;gap:7px}.field label{color:#405048;font-size:.82rem;font-weight:700}.field input{width:100%;height:44px;padding:0 12px;color:var(--ink);background:#fff;border:1px solid #afbeb6;border-radius:6px}.field select{width:100%;height:44px;padding:0 34px 0 12px;color:var(--ink);background:#fff;border:1px solid #afbeb6;border-radius:6px}.field input::placeholder{color:#89958f}.field-error,.form-error{margin:0;color:var(--danger);font-size:.82rem;line-height:1.45}.eyebrow{margin:0;color:var(--forest-light);font-size:.72rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.access-screen{display:grid;width:100%;min-height:100dvh;grid-template-columns:minmax(320px,460px) minmax(420px,1fr);background:#dfe9e3}.access-panel{position:relative;z-index:2;display:flex;min-height:100%;padding:48px clamp(28px,5vw,64px);flex-direction:column;justify-content:center;background:var(--surface);border-right:1px solid #c4d0c9}.brand-lockup{display:flex;margin-bottom:46px;align-items:center;gap:13px}.brand-mark{display:grid;width:48px;height:48px;place-items:center;color:#fff;background:var(--forest);border-radius:8px}.brand-name{margin:0;font-family:Georgia,"Noto Serif SC",serif;font-size:2rem;font-weight:700;line-height:1}.brand-subtitle{margin:5px 0 0;color:var(--muted);font-size:.78rem}.access-heading{margin:0 0 8px;font-size:1.55rem;line-height:1.25}.access-copy{margin:0 0 28px;color:var(--muted);font-size:.94rem;line-height:1.6}.segmented-control{display:grid;height:42px;padding:3px;grid-template-columns:1fr 1fr;background:#e6ece8;border:1px solid #d2dad5;border-radius:7px}.segmented-control button{color:#58675f;background:transparent;border:0;border-radius:5px;font-weight:700;cursor:pointer}.segmented-control button[aria-selected=true],.segmented-control button[aria-pressed=true]{color:var(--ink);background:#fff;box-shadow:0 1px 4px #192d241f}.access-form{display:grid;margin-top:20px;gap:18px}.field-label{color:#405048;font-size:.82rem;font-weight:700}.mode-choices{display:grid;gap:8px}.mode-choice{display:grid;padding:11px 13px;gap:3px;text-align:left;background:#fff;border:1px solid #afbeb6;border-radius:7px;cursor:pointer}.mode-choice[aria-checked=true]{background:#f2f8f4;border-color:var(--forest-light);box-shadow:0 0 0 1px var(--forest-light) inset}.mode-choice-title{display:flex;align-items:center;gap:7px;color:var(--ink);font-size:.94rem;font-weight:700}.mode-choice-summary{color:var(--muted);font-size:.8rem;line-height:1.45}.mode-badge{display:inline-flex;align-items:center;margin:0 0 10px;padding:3px 10px;gap:6px;color:var(--ink);font-size:.8rem;font-weight:700;background:#eef4f0;border:1px solid #d2dad5;border-radius:999px}.resume-session{display:flex;margin-top:26px;padding-top:22px;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line)}.resume-session strong,.resume-session span{display:block}.resume-session span{margin-top:3px;color:var(--muted);font-size:.78rem}.access-visual{position:relative;min-height:100%;overflow:hidden;background:#79b8b0}.access-visual:before{position:absolute;inset:28px;border:1px solid rgb(255 255 255 / 28%);border-radius:8px;content:""}.access-board-art{position:absolute;top:50%;left:50%;width:min(780px,112%);height:auto;transform:translate(-48%,-50%) rotate(-3deg);filter:drop-shadow(0 28px 28px rgb(25 58 48 / 24%))}.preview-sea-line{fill:none;stroke:#ebfffa3d;stroke-width:2;stroke-linecap:round}.preview-island-shadow polygon{fill:#16372d33}.preview-island-coast polygon{fill:#d7c99c;stroke:#f8edcab8;stroke-width:3;stroke-linejoin:round}.preview-terrain-layer{pointer-events:none}.preview-hex-tile{stroke-width:3}.preview-tile-inset{fill:none;stroke:#fffff233;stroke-width:1.7;stroke-linejoin:round}.preview-number{filter:drop-shadow(0 2px 1px rgb(25 42 34 / 22%))}.preview-number-shadow{fill:#23352b38}.preview-number-token{fill:#fffaf0;stroke:#393d30a8;stroke-width:1.5}.preview-number-ring{fill:none;stroke:#b29a6194;stroke-width:1}.preview-number-text{fill:#24332d;font-family:Georgia,serif;font-size:19px;font-weight:800;letter-spacing:0;text-anchor:middle;dominant-baseline:middle}.preview-number-text.hot{fill:#b33d35}.access-art-caption{position:absolute;right:42px;bottom:34px;margin:0;color:#11362ec7;font-family:Georgia,"Noto Serif SC",serif;font-size:.9rem;font-weight:700}.top-bar{display:flex;height:52px;padding:0 14px 0 18px;align-items:center;justify-content:space-between;gap:16px;color:#f7fbf8;background:#173b30;border-bottom:1px solid rgb(255 255 255 / 9%)}.top-brand{display:flex;min-width:0;align-items:center;gap:10px}.top-brand strong{font-family:Georgia,"Noto Serif SC",serif;font-size:1.1rem}.room-code{display:inline-flex;min-width:0;min-height:34px;padding:0 7px;align-items:center;gap:7px;color:#c7d8d0;background:transparent;border:1px solid transparent;border-radius:6px;font-size:.78rem;cursor:pointer}.room-code:hover,.room-code:focus-visible,.room-code.copied{color:#fff;background:#ffffff17;border-color:#ffffff24}.room-code.failed{color:#ffd4cb;background:#ae3f363d;border-color:#ffb7aa59}.room-code b{color:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.top-actions{display:flex;align-items:center;gap:2px}.connection-pill{display:inline-flex;margin-right:5px;align-items:center;gap:6px;color:#d7e6df;font-size:.74rem}.connection-dot{width:8px;height:8px;background:#65c88e;border:2px solid rgb(255 255 255 / 25%);border-radius:50%}.connection-dot.offline{background:#e7ad55}.lobby-screen{display:grid;height:100dvh;grid-template-rows:52px 1fr;background:#edf2ef}.lobby-content{display:grid;min-height:0;grid-template-columns:minmax(440px,1.25fr) minmax(340px,.75fr)}.lobby-map{position:relative;display:grid;min-height:0;padding:32px;place-items:center;overflow:hidden;background:#7fbbb3;border-right:1px solid #aec2ba}.lobby-map .access-board-art{position:relative;top:auto;left:auto;width:min(700px,90%);transform:rotate(-2deg)}.lobby-panel{display:flex;min-height:0;padding:34px clamp(26px,4vw,48px);flex-direction:column;overflow-y:auto;background:var(--surface)}.lobby-heading{margin:5px 0 6px;font-size:1.5rem}.lobby-description{margin:0 0 28px;color:var(--muted);font-size:.9rem}.player-slots{display:grid;gap:9px}.player-slot{display:grid;min-height:60px;padding:10px 12px;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:7px}.player-slot.empty{color:#89958f;background:transparent;border-style:dashed}.player-slot.add-bot{width:100%;color:#31594a;text-align:left;cursor:pointer}.player-slot.add-bot:hover:not(:disabled){background:#f2f7f4;border-color:#668779}.player-avatar{display:grid;width:36px;height:36px;overflow:hidden;place-items:center;color:#fff;background:var(--player-color, #526961);border:2px solid rgb(20 35 29 / 18%);border-radius:50%;font-size:.8rem;font-weight:800;line-height:1;white-space:nowrap}.player-name{min-width:0;overflow:hidden;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.player-meta{display:block;margin-top:2px;color:var(--muted);font-size:.72rem}.ready-status{display:inline-flex;align-items:center;gap:5px;color:#52655c;font-size:.74rem;font-weight:700}.ready-status.ready{color:#246047}.player-slot-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:5px}.bot-difficulty-select{min-height:32px;padding:0 24px 0 8px;color:#31463d;background:#f5f8f6;border:1px solid #c8d2cc;border-radius:5px;font-size:.7rem}.player-control-button.button{min-height:32px;padding:0 9px;font-size:.7rem}.remove-bot{width:30px;height:30px;color:var(--danger)}.lobby-actions{display:grid;margin-top:auto;padding-top:28px;gap:10px}.invite-row{display:grid;margin-top:24px;gap:7px}.invite-box{display:grid;min-height:46px;padding-left:12px;grid-template-columns:1fr 42px;align-items:center;background:#edf2ef;border:1px solid #d2dbd6;border-radius:6px}.invite-box code{overflow:hidden;color:#31463d;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.invite-box .copy-failed{color:var(--danger);background:#ae3f3614}.game-screen{position:relative;display:grid;width:100%;height:100dvh;grid-template:"top top top" 52px "turn turn turn" 40px "players board board" minmax(0,1fr) "players hand actions" 92px / 216px minmax(460px,1fr) 360px;background:#e7eee9}.game-screen:has(>.barbarian-track){grid-template:"top top top" 52px "turn turn turn" 40px "barbarian barbarian barbarian" 30px "players board board" minmax(0,1fr) "players hand actions" 92px / 216px minmax(460px,1fr) 360px}.game-screen>.top-bar{grid-area:top}.turn-status{display:grid;grid-area:turn;min-width:0;padding:0 16px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px;color:#263e34;background:#dce7e1;border-bottom:1px solid #bccbc3;font-size:.84rem;font-weight:750;text-align:center}.turn-status-message{display:flex;min-width:0;align-items:center;justify-content:center;gap:9px}.turn-status-message>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.turn-status.yours{color:#fff;background:#2e6853;border-color:#2e6853}.turn-status svg{flex:0 0 auto}.game-over-summary-button{min-height:30px;padding:0 10px;color:inherit;background:#ffffff94;border:1px solid currentcolor;border-radius:6px;font:inherit;font-size:.72rem;cursor:pointer}.game-over-summary-button:hover{background:#ffffffd1}.player-rail{display:flex;grid-area:players;min-height:0;padding:12px 10px;flex-direction:column;gap:8px;overflow-y:auto;background:#f2f6f3;border-right:1px solid #c5d0ca}.game-player{position:relative;display:grid;min-height:82px;padding:8px;grid-template-columns:minmax(0,1fr);align-items:center;gap:6px;background:#fff;border:1px solid #d1dad5;border-left:4px solid var(--player-color, #51665e);border-radius:7px}.game-player:hover,.game-player:focus-within{background:#f8fbf9;border-color:color-mix(in srgb,var(--player-color) 62%,#9baaa2)}.game-player.active{border-color:var(--player-color, #51665e);box-shadow:0 0 0 2px color-mix(in srgb,var(--player-color) 18%,transparent)}.game-player.self{background:#f9fcfa}.game-player-profile-trigger{display:grid;width:100%;min-width:0;min-height:62px;padding:2px;grid-template-columns:34px minmax(0,1fr) 34px;align-content:center;align-items:center;column-gap:8px;row-gap:5px;color:inherit;background:transparent;border:0;border-radius:4px;text-align:left;cursor:pointer}.player-avatar-stack{position:relative;display:grid;width:32px;height:32px;place-items:center}.game-player .player-avatar{width:32px;height:32px;font-size:.72rem}.player-honor-badge{position:absolute;z-index:1;display:grid;width:20px;height:20px;right:-7px;place-items:center;color:#fff;border:2px solid #fff;box-shadow:0 1px 5px #16251f61;pointer-events:none}.player-honor-badge.longest-road{top:-7px;background:#a86412;border-radius:50%}.player-honor-badge.largest-army{right:-7px;bottom:-7px;background:#8a3e59;border-radius:5px 5px 8px 8px}.player-identity{display:block;min-width:0}.game-player .player-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-score{display:grid;min-width:34px;place-items:center;font-size:.68rem}.player-score b{font-size:1.05rem;line-height:1}.player-stats{display:flex;grid-column:1 / -1;min-width:0;align-items:center;gap:10px;color:var(--muted);font-size:.7rem}.player-stat{display:inline-flex;align-items:center;gap:4px}.player-profile-popover{position:fixed;z-index:26;display:grid;width:min(304px,calc(100vw - 16px));max-height:min(460px,calc(100dvh - 16px));padding:13px;gap:12px;overflow-y:auto;background:#fff;border:1px solid #c8d3cd;border-top:4px solid var(--player-color, #51665e);border-radius:7px;box-shadow:0 16px 42px #14282042}.player-profile-header{display:grid;grid-template-columns:36px minmax(0,1fr) 32px;align-items:center;gap:9px}.player-profile-header>.player-avatar{display:grid;width:36px;height:36px;place-items:center}.player-profile-header strong,.player-profile-header .player-profile-presence{display:block}.player-profile-header strong{overflow:hidden;font-size:.88rem;text-overflow:ellipsis;white-space:nowrap}.player-profile-header .player-profile-presence{margin-top:2px;color:var(--muted);font-size:.66rem}.player-profile-header .icon-button{width:32px;height:32px}.player-profile-stats{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #d8e0db;border-left:1px solid #d8e0db}.player-profile-stats>span{display:grid;min-width:0;min-height:52px;padding:7px 9px;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:5px;border-right:1px solid #d8e0db;border-bottom:1px solid #d8e0db}.player-profile-stats small,.player-profile-progress small{color:#637169;font-size:.64rem}.player-profile-stats b{font-size:.95rem;font-variant-numeric:tabular-nums}.player-profile-progress{display:grid;gap:7px}.player-profile-progress>span{display:grid;min-height:42px;padding:6px 8px;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:7px;background:#f3f7f4;border:1px solid #d7dfda;border-radius:6px}.player-profile-progress small,.player-profile-progress b{display:block}.player-profile-progress b{margin-top:1px;font-size:.75rem}.player-profile-progress em{padding:3px 6px;color:#6a511a;background:#f4e6b9;border-radius:4px;font-size:.64rem;font-style:normal;font-weight:850}.player-profile-pieces{display:flex;padding-top:2px;justify-content:space-between;gap:8px;color:#5f6e66;font-size:.68rem}.player-profile-pieces b{color:#263c32;font-variant-numeric:tabular-nums}.player-profile-control{position:sticky;z-index:2;bottom:-13px;display:grid;margin:0 -13px -13px;padding:10px 13px 13px;background:#fff;border-top:1px solid #d8e0db;box-shadow:0 -6px 12px #192b230d}.player-profile-control-action.button{width:100%;min-height:44px;padding:0 12px;color:#31594a;background:#eef4f0;border-color:#c5d2cb;font-size:.74rem}.player-profile-control-action.button:hover:not(:disabled){background:#e2ece6;border-color:#799287}.player-control-confirmation{position:sticky;z-index:2;bottom:-13px;display:grid;margin:0 -13px -13px;padding:11px 13px 13px;gap:10px;color:#603c31;background:#fff6f1;border-top:1px solid #e6cfc4}.player-control-confirmation-copy{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:7px}.player-control-confirmation-copy>svg{margin-top:1px;color:#a34d3c}.player-control-confirmation-copy strong{display:block;font-size:.76rem}.player-control-confirmation-copy p{margin:3px 0 0;color:#7b5b50;font-size:.66rem;line-height:1.4}.player-control-confirmation-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.player-control-confirmation-actions .button{min-width:0;min-height:44px;padding:0 10px;font-size:.72rem}.offline-label{color:#9a5d30}.board-viewport{position:relative;display:grid;grid-area:board;min-width:0;min-height:0;place-items:center;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 46% 42%,#8bc9c1,#72b6b2 62%,#5f9f9e);touch-action:none}.board-svg{display:block;width:100%;height:100%;min-height:300px;overflow:visible;background:transparent}.sea-decoration,.island-shadow-layer,.island-coast-layer,.hex-tile-inset,.hex-tile-highlight,.preview-sea-line,.preview-island-shadow,.preview-island-coast,.preview-tile-inset{pointer-events:none}.board-svg .sea-line{fill:none;stroke:#ecfffa42;stroke-width:3;stroke-linecap:round}.board-svg .sea-line-muted{stroke:#e3fbf626;stroke-width:2}.island-shadow{fill:#16372d33}.island-coast{fill:#d5c69a;stroke:#f7ebc6b8;stroke-width:3;stroke-linejoin:round}.hex-tile{stroke:#1b352b7f;stroke-width:3;stroke-linejoin:round}.hex-tile.forest{fill:#3b7751}.hex-tile.pasture{fill:#79a94e}.hex-tile.fields{fill:#d6b83f}.hex-tile.hills{fill:#bd674e}.hex-tile.mountains{fill:#737d7a}.hex-tile.desert{fill:#d9c278}.hex-group .hex-tile,.hex-group .terrain-detail,.hex-group .hex-tile-inset,.hex-group .hex-tile-highlight{transition:filter .32s ease,opacity .32s ease}.hex-group.robber-blocked .hex-tile{filter:saturate(.48) brightness(.82);transition-delay:.42s}.hex-group.robber-blocked .terrain-detail{opacity:.16;transition-delay:.42s}.hex-group.robber-blocked .hex-tile-inset,.hex-group.robber-blocked .hex-tile-highlight{opacity:.1;transition-delay:.42s}.hex-tile-inset{fill:none;stroke:#fffff233;stroke-width:2;stroke-linejoin:round}.hex-tile-highlight{fill:none;stroke:#fffff247;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.robber-tile-shade{fill:#0f1f192e;pointer-events:none}.terrain-detail{opacity:.44;pointer-events:none;fill:none}.terrain-detail-fill{fill:#1534281a;stroke:none}.terrain-detail-line,.terrain-detail-accent{fill:none;stroke-linecap:round;stroke-linejoin:round}.terrain-detail-line{stroke:#14372a7f;stroke-width:3}.terrain-detail-accent{stroke:#fff9d94d;stroke-width:2.2}.terrain-detail-wool .terrain-detail-line{stroke:#2a5b3070}.terrain-detail-grain .terrain-detail-line,.terrain-detail-brick .terrain-detail-line{stroke:#523d1f6b}.terrain-detail-ore .terrain-detail-line{stroke:#1f34317a}.terrain-detail-desert .terrain-detail-line{stroke:#6a512757}.number-token-group{pointer-events:none;filter:drop-shadow(0 2px 1px rgb(25 42 34 / 22%));transform-box:fill-box;transform-origin:center}.number-token-shadow{fill:#23352b38}.number-token{fill:#fffaf0;stroke:#393d30a8;stroke-width:1.7}.number-token-ring{fill:none;stroke:#b29a6194;stroke-width:1.3}.number-text{fill:#24332d;font-family:Georgia,serif;font-size:28px;font-weight:800;letter-spacing:0;text-anchor:middle;dominant-baseline:middle}.number-text.hot{fill:#b33d35}.pip-text{fill:#65685a;font-size:9px;font-weight:800;text-anchor:middle;dominant-baseline:middle;letter-spacing:0}.road-layer,.building-layer,.robber-layer{pointer-events:none}.port-layer{pointer-events:auto}.port-art{pointer-events:none}.port-art.interactive{cursor:pointer;pointer-events:all}.port-hit-target{fill:transparent;stroke:transparent}.port-hit-route{stroke-width:70;stroke-linecap:round}.port-art.owned .port-token{stroke:#286a55;stroke-width:3.5}.port-art.interactive:hover .port-token,.port-art.interactive:focus-visible .port-token{fill:#fffdf1;stroke:#174e3e;stroke-width:4.5}.port-art.interactive:focus-visible{outline:none}.port-art.interactive:hover .port-token-group,.port-art.interactive:focus-visible .port-token-group{filter:drop-shadow(0 4px 4px rgb(22 68 52 / 42%))}.port-pier-outline,.port-line,.port-pier-highlight{fill:none;stroke-linecap:round;stroke-linejoin:round}.port-pier-outline{stroke:#1c362d94;stroke-width:10}.port-line{stroke:#cdbd8d;stroke-width:7}.port-pier-highlight{stroke:#fff9de9e;stroke-width:2}.port-pier-post{fill:#e3d39f;stroke:#385548;stroke-width:2}.port-token-group{filter:drop-shadow(0 3px 2px rgb(28 52 43 / 24%));transform-box:fill-box;transform-origin:center}.port-token-shadow{fill:#1c332a3d}.port-token{fill:#fff8e5;stroke:#365448;stroke-width:2.5}.port-token-inset{fill:none;stroke:#a9915a70;stroke-width:1}.port-resource-badge{fill:var(--resource-color);stroke:#fffdefe0;stroke-width:2}.port-badge-label{fill:#23382f;stroke:none;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:17px;font-weight:400;text-anchor:middle;dominant-baseline:middle;letter-spacing:0}.port-label{fill:#29443a;font-size:15px;font-weight:850;text-anchor:middle;dominant-baseline:middle;letter-spacing:0}.road-piece{stroke:#14231db8;stroke-width:19;stroke-linecap:round}.road-piece-separator{stroke:#fff9e2e0;stroke-width:15;stroke-linecap:round}.road-piece-color{stroke:var(--piece-color);stroke-width:11;stroke-linecap:round}.road-piece-highlight{stroke:#ffffff61;stroke-width:3;stroke-linecap:round}.building-piece-group{filter:drop-shadow(0 3px 2px rgb(18 35 29 / 25%));transform-box:fill-box;transform-origin:center}.city-wall-ring{fill:none;stroke:#8a6d3b;stroke-width:2.5;stroke-dasharray:4 3;opacity:.85}.metropolis-badge{font-size:1.1rem;text-shadow:0 1px 2px rgb(0 0 0 / 45%)}.building-shadow{fill:#121f1a61}.building-piece-separator{fill:none;stroke:#fff9e2eb;stroke-width:8;stroke-linejoin:round}.building-piece{fill:var(--piece-color);stroke:#22372f;stroke-width:3.5;stroke-linejoin:round}.building-roof-highlight{fill:none;stroke:#ffffff8c;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.building-door{fill:#1e2f289e}.building-window{fill:#fae7a0;stroke:#27393075;stroke-width:1}.building-placement-preview,.building-placement-preview *{pointer-events:none}.building-placement-preview-art{animation:settlement-preview-arrive .2s cubic-bezier(.2,.78,.28,1) both;will-change:opacity,translate}.building-placement-preview-halo{fill:#fff7b838;stroke:#fff6bbf0;stroke-width:3;transform-box:fill-box;transform-origin:center;vector-effect:non-scaling-stroke;animation:settlement-preview-pulse 1.5s ease-in-out infinite}.building-placement-preview .building-shadow{fill:#11261e2e}.building-placement-preview .building-piece-separator{stroke:#fff9daf0;stroke-width:9}.building-placement-preview .building-piece{fill-opacity:.7;stroke:#1d3129e0}.building-placement-preview .building-roof-highlight{stroke:#ffffffbd}.building-placement-preview .building-door,.building-placement-preview .building-window{opacity:.7}@keyframes settlement-preview-arrive{0%{opacity:0;translate:0 7px}to{opacity:1;translate:0 0}}@keyframes settlement-preview-pulse{0%,to{opacity:.55;scale:.96}50%{opacity:.9;scale:1.06}}.robber-ground-shadow{fill:#13261f52}.barbarian-track{display:flex;grid-area:barbarian;min-width:0;padding:5px 12px;align-items:center;gap:9px;overflow:hidden;background:#eef3ef;border-bottom:1px solid #cdd8d1;font-size:.74rem;font-weight:700}.barbarian-track-label{display:inline-flex;align-items:center;gap:5px;color:#45564d}.barbarian-track-spaces{display:flex;margin:0;padding:0;gap:4px;list-style:none}.barbarian-space{width:13px;height:8px;background:#d7e0da;border:1px solid #b8c5bd;border-radius:2px}.barbarian-space.is-filled{background:var(--danger);border-color:var(--danger)}.barbarian-strength{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px}.barbarian-strength.is-safe{color:#1c5040;background:#dcefe3}.barbarian-strength.is-danger{color:#7d2b23;background:#f6dedb}.barbarian-event-die{margin-left:auto;font-size:.95rem}.knight-piece-group{filter:drop-shadow(0 2px 2px rgb(18 35 29 / 25%));transform-box:fill-box;transform-origin:center}.knight-piece-group.is-inactive{opacity:.5}.knight-shadow{fill:#121f1a57}.knight-piece-separator{fill:none;stroke:#fff9e2eb;stroke-width:7;stroke-linejoin:round}.knight-piece{fill:var(--piece-color);stroke:#22372f;stroke-width:3;stroke-linejoin:round}.knight-crest{fill:none;stroke:#ffffff9e;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.knight-rank-pip{fill:#fffceef0;stroke:#22372fb3;stroke-width:1.1}.robber-piece-shadow{fill:#0f1c1852}.robber-piece{fill:#25312d;stroke:#f1ead1;stroke-width:2.5}.robber-piece-highlight{fill:none;stroke:#fffce96b;stroke-width:2.5;stroke-linecap:round}.robber-piece-group{transition:transform .68s cubic-bezier(.22,.78,.24,1);transform-box:fill-box;transform-origin:center;will-change:transform}.robber-impact{fill:none;stroke:#193027b8;stroke-width:16;transform-box:fill-box;transform-origin:center;animation:robber-impact .72s .5s cubic-bezier(.18,.72,.24,1) both;pointer-events:none}@keyframes robber-impact{0%{opacity:0;transform:scale(.45);stroke-width:18}18%{opacity:.72}to{opacity:0;transform:scale(2.3);stroke-width:3}}.board-target-hit{fill:transparent;stroke:transparent;stroke-width:44;pointer-events:all;vector-effect:non-scaling-stroke}.legal-target,.legal-edge{cursor:pointer}.legal-target:focus,.legal-edge:focus{outline:none}.legal-target-marker,polygon.legal-target{cursor:pointer;fill:#fff9cb4d;stroke:#fff2aa;stroke-width:3;vector-effect:non-scaling-stroke}.legal-target-marker,.legal-target-dot{pointer-events:none}.legal-target-dot{fill:#2d6557;stroke:#fffff0cc;stroke-width:1.5;vector-effect:non-scaling-stroke}.legal-target:hover .legal-target-marker,.legal-target:focus-visible .legal-target-marker,.legal-target.selected .legal-target-marker,polygon.legal-target:hover,polygon.legal-target:focus-visible,polygon.legal-target.selected{fill:#ffface85;stroke:#fff3a6}.legal-target:hover .legal-target-dot,.legal-target:focus-visible .legal-target-dot,.legal-target.selected .legal-target-dot{fill:#174d42}.legal-edge-marker{stroke:#fff8c0d1;stroke-width:11;stroke-linecap:round;opacity:.68;pointer-events:none;vector-effect:non-scaling-stroke}.legal-edge:hover .legal-edge-marker,.legal-edge:focus-visible .legal-edge-marker,.legal-edge.selected .legal-edge-marker{stroke:#fff1a2;opacity:1}.board-controls{position:absolute;right:12px;bottom:12px;display:grid;padding:3px;background:#f8faf8e5;border:1px solid rgb(52 79 68 / 24%);border-radius:7px;box-shadow:0 5px 14px #18322924}.board-controls .icon-button{width:36px;height:34px}.game-guide{display:contents}.game-guide-trigger{position:absolute;z-index:5;top:12px;right:12px;width:38px;height:38px;color:#24483b;background:#f8faf8eb;border-color:#344f443d;box-shadow:0 5px 14px #18322924}.game-guide-trigger[aria-expanded=true]{color:#fff;background:#285d49;border-color:#285d49}.game-guide-dismiss-layer{position:absolute;z-index:3;inset:0;cursor:default;touch-action:none}.game-guide-panel{position:absolute;z-index:5;top:58px;right:12px;display:grid;width:min(360px,calc(100% - 24px));max-height:calc(100% - 70px);padding:12px;gap:9px;overflow-y:auto;overscroll-behavior:contain;color:#23362e;background:#fffffff7;border:1px solid #b8c7bf;border-radius:7px;box-shadow:0 16px 38px #11281f47;touch-action:pan-y}.game-guide-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.game-guide-header h2,.game-guide-header p,.game-guide-section h3,.game-guide-section p,.game-guide-costs p,.game-guide-honor-note,.game-guide-more p{margin:0}.game-guide-title{display:flex;min-width:0;align-items:baseline;gap:10px}.game-guide-header h2{font-size:.9rem}.game-guide-header p{color:#9a6820;font-size:.7rem;font-weight:850;white-space:nowrap}.game-guide-header .icon-button{width:32px;height:32px;flex:0 0 auto}.game-guide-section{display:grid;gap:5px}.game-guide-rule-list{display:grid;padding:7px 8px;gap:5px;color:#627169;background:#f5f8f6;border-top:1px solid #d7dfda;border-bottom:1px solid #d7dfda;font-size:.62rem;line-height:1.45}.game-guide-rule-list strong{color:#344b41}.game-guide-section>h3,.game-guide-honor-heading h3{color:#223c31;font-size:.72rem}.game-guide-costs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid #d7dfda;border-bottom:1px solid #d7dfda}.game-guide-costs p{display:grid;min-width:0;min-height:31px;padding:5px 6px;grid-template-columns:minmax(42px,auto) minmax(0,1fr);align-items:center;gap:5px}.game-guide-costs p:nth-child(odd){padding-left:0;border-right:1px solid #e1e7e3}.game-guide-costs p:nth-child(2n){padding-right:0}.game-guide-costs p:not(:nth-last-child(-n+2)){border-bottom:1px solid #e1e7e3}.game-guide-costs strong{font-size:.66rem;white-space:nowrap}.game-guide-costs span{color:#53645c;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:.78rem;line-height:1;white-space:nowrap}.game-guide-honor{padding-top:2px}.game-guide-honor-heading{display:flex;min-width:0;align-items:baseline;justify-content:space-between;gap:8px}.game-guide-honor-heading h3{display:flex;min-width:0;align-items:center;gap:6px;white-space:nowrap}.game-guide-honor-heading h3 b{flex:0 0 auto;color:#9a6820;font-size:.61rem}.game-guide-honor-heading p{min-width:0;color:#68776f;font-size:.62rem;line-height:1.4;text-align:right}.game-guide-progress{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;border-top:1px solid #d7dfda;border-bottom:1px solid #d7dfda;list-style:none}.game-guide-progress li{display:grid;min-width:0;min-height:29px;padding:4px 6px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px;border-bottom:1px solid #e1e7e3;font-size:.66rem}.game-guide-progress li:nth-child(odd){border-right:1px solid #e1e7e3}.game-guide-progress li:nth-last-child(-n+2){border-bottom:0}.game-guide-progress li:nth-last-child(2):nth-child(2n){border-bottom:1px solid #e1e7e3}.game-guide-progress li.self{background:#edf6f1}.game-guide-progress li.holder{box-shadow:inset 3px 0 #d09a26}.game-guide-progress li>span{display:flex;min-width:0;align-items:center;gap:3px;font-weight:800}.game-guide-progress li>span svg{flex:0 0 auto;color:#a06b13}.game-guide-player-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-guide-progress em{display:inline-grid;width:16px;height:16px;flex:0 0 auto;place-items:center;color:#337058;background:#fff;border:1px solid #b9d3c6;border-radius:50%;font-size:.53rem;font-style:normal}.game-guide-progress b{color:#344c42;font-size:.7rem;font-variant-numeric:tabular-nums;white-space:nowrap}.game-guide-honor-note{color:#6f7c75;font-size:.59rem;line-height:1.35;text-align:center}.game-guide-more{border-top:1px solid #d7dfda}.game-guide-more summary{padding:7px 1px 0;color:#40564c;font-size:.66rem;font-weight:800;cursor:pointer}.game-guide-more>div{display:grid;padding:7px 0 1px;gap:5px;color:#627169;font-size:.62rem;line-height:1.45}.game-guide-more strong{color:#344b41}.selection-confirm{position:absolute;bottom:12px;left:50%;display:flex;min-width:min(390px,calc(100% - 90px));min-height:52px;padding:7px 8px 7px 14px;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid #c7d1cb;border-radius:7px;box-shadow:var(--shadow);transform:translate(-50%)}.selection-confirm span{color:#405047;font-size:.78rem}.selection-confirm strong{display:block;color:var(--ink);font-size:.86rem}.selection-buttons{display:flex;gap:5px}.selection-buttons .button{min-height:36px;padding:0 12px;font-size:.78rem}.turn-reminder{z-index:13;display:inline-flex;min-width:168px;min-height:58px;padding:10px 18px;grid-area:board;align-self:center;justify-self:center;align-items:center;justify-content:center;gap:10px;color:#fff;background:#183f32f0;border:1px solid rgb(255 255 255 / 46%);border-radius:7px;box-shadow:0 14px 34px #14282047;font-size:1rem;pointer-events:none;animation:turn-reminder-arrive .18s ease-out both}.turn-reminder>span{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1.35rem;line-height:1}@keyframes turn-reminder-arrive{0%{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}.trade-alert-slot{z-index:9;display:grid;width:min(760px,calc(100% - 24px));margin-top:12px;grid-area:board;align-self:start;justify-self:center;gap:8px;pointer-events:none}.incoming-trade-alert{display:grid;min-width:0;padding:10px;grid-template-columns:minmax(205px,1fr) minmax(230px,auto) auto;align-items:center;gap:12px;background:#fffdf5;border:1px solid #c9a33f;border-left-width:4px;border-radius:7px;box-shadow:0 12px 30px #2a301e33;pointer-events:auto}.trade-feedback-alert{grid-template-columns:minmax(205px,.8fr) minmax(220px,1fr) 32px;background:#fffdf5;animation:trade-feedback-arrive .18s ease-out both}@keyframes trade-feedback-arrive{0%{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}.trade-feedback-alert.success{border-color:#5e9e79}.trade-feedback-alert.success .trade-alert-icon{background:#39775b}.trade-feedback-alert.info{border-color:#6f9bb5}.trade-feedback-alert.info .trade-alert-icon{background:#4d7892}.trade-feedback-alert.warning{border-color:#c49a36}.trade-feedback-detail{min-width:0;margin:0;color:#53635b;font-size:.74rem;line-height:1.45;overflow-wrap:anywhere}.trade-feedback-alert>.icon-button{width:32px;height:32px}.trade-alert-header{display:grid;min-width:0;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:8px}.trade-alert-header>div{min-width:0}.trade-alert-header strong,.trade-alert-eyebrow{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trade-alert-header strong{margin-top:2px;font-size:.82rem}.trade-alert-eyebrow{color:#7e6320;font-size:.66rem;font-weight:800}.trade-alert-icon{display:grid;width:34px;height:34px;place-items:center;color:#fff;background:#9b7620;border-radius:50%}.trade-alert-header .icon-button{width:32px;height:32px}.trade-alert-actions{display:flex;justify-content:flex-end;gap:6px}.trade-alert-actions .button{min-height:38px;padding:0 12px;font-size:.75rem;white-space:nowrap}.trade-deadline{display:inline-flex;min-width:0;margin-top:3px;align-items:center;gap:4px;color:#775e20;font-size:.66rem;font-variant-numeric:tabular-nums;font-weight:800;white-space:nowrap}.auction-alert .trade-alert-header{grid-template-columns:34px minmax(0,1fr) auto}.auction-alert .trade-alert-icon{background:#8a6720}.auction-alert .trade-deadline{min-width:72px;margin-top:0;justify-content:flex-end}.hand-tray{display:grid;grid-area:hand;min-width:0;padding:8px 12px 10px;grid-template-columns:repeat(5,minmax(76px,1fr)) auto;align-items:stretch;gap:7px;background:#f3f7f4;border-top:1px solid #bdcbc4}.hand-tray.has-commodities{grid-template-columns:repeat(8,minmax(54px,1fr)) auto;gap:5px}.resource-chip{display:grid;min-width:0;padding:7px 9px;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:7px;background:#fff;border:1px solid #d0d9d4;border-radius:6px}.resource-chip.is-commodity{background:#fbfaf4;border-color:#cfc9ae}.resource-symbol{display:grid;width:30px;height:30px;place-items:center;color:#21382e;background:var(--resource-color, #d7e2dc);border:1px solid rgb(33 56 46 / 16%);border-radius:5px;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1rem;font-weight:400;line-height:1}.resource-name{min-width:0;color:#5c6b63;font-size:.68rem;font-weight:700}.resource-count{position:relative;display:block;width:2.2ch;height:1.3em;overflow:hidden;font-size:1.1rem;font-weight:850;font-variant-numeric:tabular-nums;line-height:1.3;text-align:center}.resource-count-value{position:absolute;display:grid;inset:0;place-items:center}.resource-count.is-rolling.gain .previous{animation:resource-count-old-up .28s var(--count-delay, .52s) ease-in both}.resource-count.is-rolling.gain .current{animation:resource-count-new-up .32s var(--count-delay, .52s) cubic-bezier(.2,.78,.28,1) both}.resource-count.is-rolling.loss .previous{animation:resource-count-old-down .26s ease-in both}.resource-count.is-rolling.loss .current{animation:resource-count-new-down .3s cubic-bezier(.2,.78,.28,1) both}@keyframes resource-count-old-up{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes resource-count-new-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes resource-count-old-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@keyframes resource-count-new-down{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.resource-flight-layer{position:fixed;z-index:10;inset:0;overflow:hidden;pointer-events:none}.resource-flight{position:absolute;top:0;left:0;display:grid;width:32px;height:32px;place-items:center;color:#1c3028;background:var(--resource-color);border:1px solid rgb(24 48 38 / 28%);border-radius:6px;box-shadow:0 7px 18px #0f261d47;font-size:.72rem;font-weight:900;opacity:0;will-change:transform,opacity;animation:resource-flight .92s var(--flight-delay) cubic-bezier(.2,.72,.24,1) both}.resource-flight>span{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1rem;font-weight:400;line-height:1}.resource-flight b{position:absolute;top:-7px;right:-8px;display:grid;min-width:20px;height:20px;padding:0 4px;place-items:center;color:#fff;background:#1d4738;border:2px solid #fff;border-radius:10px;box-shadow:0 2px 5px #0f261d40;font-size:.58rem;line-height:1}.production-burst{position:absolute;top:0;left:0;display:grid;width:var(--burst-size);height:var(--burst-size);place-items:center;color:#17362b;opacity:0;transform:translate3d(var(--burst-x),var(--burst-y),0);will-change:transform,opacity;animation:production-burst 1.08s var(--burst-delay) cubic-bezier(.16,.76,.2,1) both}.production-burst i{position:absolute;inset:0;background:color-mix(in srgb,var(--resource-color) 82%,#fff);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--resource-color) 72%,#24483a),0 8px 20px #0f261d3d}.production-burst strong{position:relative;z-index:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:clamp(1.25rem,3.2vmin,1.65rem);font-weight:400;line-height:1}.production-burst b{position:absolute;z-index:2;right:-3px;bottom:-4px;display:grid;min-width:24px;height:24px;padding:0 5px;place-items:center;color:#fff;background:#1d4738;border:2px solid #fff;border-radius:12px;box-shadow:0 3px 7px #0f261d3d;font-size:.65rem;line-height:1}.production-flight{border-color:color-mix(in srgb,var(--resource-color) 62%,#243d34);box-shadow:0 0 0 2px color-mix(in srgb,var(--resource-color) 38%,transparent),0 7px 18px #0f261d47}.production-empty{position:absolute;top:0;left:0;max-width:min(82vw,280px);padding:9px 14px;color:#fff;background:#1d4738eb;border:1px solid rgb(255 255 255 / 38%);border-radius:6px;box-shadow:0 8px 22px #0f261d3d;font-size:.78rem;font-weight:750;text-align:center;opacity:0;transform:translate3d(calc(var(--empty-x) - 50%),calc(var(--empty-y) - 50%),0);animation:production-empty .9s ease-out both}@keyframes production-burst{0%{opacity:0;transform:translate3d(var(--burst-x),var(--burst-y),0) scale(.45)}22%{opacity:1;transform:translate3d(var(--burst-x),var(--burst-y),0) scale(1.12)}65%{opacity:1;transform:translate3d(var(--burst-x),var(--burst-y),0) scale(1)}to{opacity:0;transform:translate3d(var(--burst-x),var(--burst-y),0) scale(.84)}}@keyframes production-empty{0%{opacity:0;translate:0 8px}18%,74%{opacity:1;translate:0 0}to{opacity:0;translate:0 -5px}}@keyframes resource-flight{0%{opacity:0;transform:translate3d(var(--flight-start-x),var(--flight-start-y),0) scale(.62) rotate(-8deg)}12%{opacity:1}58%{opacity:1;transform:translate3d(var(--flight-control-x),var(--flight-control-y),0) scale(1.08) rotate(5deg)}86%{opacity:1}to{opacity:0;transform:translate3d(var(--flight-end-x),var(--flight-end-y),0) scale(.62) rotate(0)}}.dev-stack{display:flex;min-width:74px;padding:8px 10px;flex-direction:column;justify-content:center;color:#f8faf8;background:#3b4d46;border-radius:6px}.dev-stack span{font-size:.66rem}.dev-stack strong{margin-top:2px;font-size:1.05rem}.action-toolbar{display:grid;grid-area:actions;min-width:0;min-height:0;padding:8px 10px 10px;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:7px;overflow:hidden;background:#eef3f0;border-top:1px solid #bdcbc4;border-left:1px solid #c4cfc9}.action-toolbar:has([data-command=improve]){grid-template-columns:repeat(5,minmax(0,1fr))}.action-command{position:relative;display:flex;min-width:0;min-height:54px;padding:7px 4px;flex-direction:column;align-items:center;justify-content:center;gap:5px;overflow:hidden;color:#294238;background:#fff;border:1px solid #c6d1cb;border-radius:7px;cursor:pointer}.action-command:hover:not(:disabled){background:#f6faf7;border-color:#698276}.action-command svg{flex:0 0 auto}.action-command>span{display:block;max-width:100%;overflow:hidden;font-size:.72rem;font-weight:800;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.action-command.turn-command:not(:disabled){color:#fff;background:#245641;border-color:#245641}.action-command.turn-command:hover:not(:disabled){background:#2d664f;border-color:#2d664f}.action-command.selected{color:#174536;background:#dcece4;border-color:#3f735f;box-shadow:inset 0 0 0 1px #3f735f}.action-command-badge{position:absolute;top:4px;right:5px;display:grid;min-width:18px;height:18px;padding:0 4px;place-items:center;color:#fff;background:#aa4037;border:2px solid #fff;border-radius:9px;font-size:.58rem;font-weight:850;line-height:1}.action-command-badge.neutral{background:#4d6259}.action-command-badge.auction{padding:0;background:#9b7620}.dock-label{display:flex;margin:0 0 10px;align-items:center;justify-content:space-between;color:#596960;font-size:.72rem;font-weight:800}.dice-area{display:flex;padding:12px;align-items:center;justify-content:space-between;gap:12px;background:#edf3ef;border:1px solid #d6dfda;border-radius:7px}.dice-pair{display:flex;gap:6px}.die,.dice-face{display:grid;width:42px;height:42px;place-items:center;color:#25352e;background:#fff;border:1px solid #b8c4bd;border-radius:7px;box-shadow:0 2px 5px #1c30271a;font-family:Georgia,serif;font-size:1.25rem;font-weight:800}.dice-face{position:relative;padding:8px;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.dice-face:not(.compact){width:68px;height:68px;padding:11px;border-color:#9eaaa4;border-radius:8px;box-shadow:0 8px 14px #0f221b3d,inset 0 0 0 2px #ffffffb3}.dice-pip{width:7px;height:7px;place-self:center;background:#20332b;border-radius:50%;box-shadow:inset 0 1px 1px #00000052}.dice-face:not(.compact) .dice-pip{width:10px;height:10px}.pip-1{grid-area:1 / 1}.pip-2{grid-area:1 / 2}.pip-3{grid-area:1 / 3}.pip-4{grid-area:2 / 1}.pip-5{grid-area:2 / 2}.pip-6{grid-area:2 / 3}.pip-7{grid-area:3 / 1}.pip-8{grid-area:3 / 2}.pip-9{grid-area:3 / 3}.die.empty{color:#728078}.dice-reveal{position:relative;z-index:11;display:grid;width:min(340px,calc(100% - 28px));min-height:258px;padding:16px 20px 14px;grid-area:board;place-self:center;align-content:start;justify-items:center;color:#f8fbf9;background:#153127f0;border:1px solid rgb(255 255 255 / 28%);border-radius:8px;box-shadow:0 22px 50px #0d211a57;pointer-events:none;animation:dice-reveal-in .18s ease-out both}.dice-reveal-heading{display:flex;min-width:0;height:24px;align-items:center;justify-content:center;gap:7px;font-size:.78rem}.dice-reveal-heading strong{max-width:150px;overflow:hidden;color:#fff;font-size:.88rem;text-overflow:ellipsis;white-space:nowrap}.dice-reveal-heading>span:last-child{color:#c4d4cc}.roller-mark{width:9px;height:9px;flex:0 0 auto;background:var(--roller-color, #d95f4f);border:2px solid rgb(255 255 255 / 66%);border-radius:50%}.dice-table{position:relative;width:250px;height:142px;overflow:hidden;perspective:560px}.dice-table.has-event-die{width:286px}.dice-table:before{position:absolute;right:4px;bottom:12px;left:4px;height:90px;background:#2b7157;border:1px solid rgb(255 255 255 / 16%);border-radius:50%;box-shadow:inset 0 -16px 28px #082a1e38;content:"";transform:perspective(240px) rotateX(58deg)}.dice-table-shadow{position:absolute;z-index:1;right:51px;bottom:28px;left:51px;height:20px;background:#071b144d;border-radius:50%;filter:blur(5px)}.thrown-die{position:absolute;z-index:2;top:51px;left:55px;width:68px;height:68px;transform-origin:center}.thrown-die.second{left:132px}.dice-table.has-event-die .thrown-die.first{left:31px}.dice-table.has-event-die .thrown-die.second{left:109px}.thrown-die.event{left:187px}.event-die-face{padding:0;color:#1d352c;background:#fffdf4;border-color:#abb5af;box-shadow:0 8px 14px #0f221b3d,inset 0 0 0 4px #718078}.event-die-symbol{grid-area:1 / 1 / -1 / -1;place-self:center;font-size:2rem;line-height:1;filter:drop-shadow(0 1px 1px rgb(0 0 0 / 18%))}.event-die-trade{border-color:#d7c679;box-shadow:0 8px 14px #0f221b3d,inset 0 0 0 4px #f3d76e}.event-die-politics{box-shadow:0 8px 14px #0f221b3d,inset 0 0 0 4px #78a8d7}.event-die-science{box-shadow:0 8px 14px #0f221b3d,inset 0 0 0 4px #79b68c}.dice-reveal.rolling .thrown-die.first{animation:dice-toss-first 1.05s cubic-bezier(.2,.7,.24,1) both}.dice-reveal.rolling .thrown-die.second{animation:dice-toss-second 1.05s cubic-bezier(.2,.7,.24,1) both}.dice-reveal.rolling .thrown-die.event{animation:dice-toss-event 1.05s cubic-bezier(.2,.7,.24,1) both}.dice-reveal.settled .thrown-die.first{transform:translate(-5px,4px) rotate(-7deg);animation:dice-settle-first .26s ease-out both}.dice-reveal.settled .thrown-die.second{transform:translate(5px,1px) rotate(6deg);animation:dice-settle-second .26s ease-out both}.dice-reveal.settled .thrown-die.event{transform:translate(4px,5px) rotate(-4deg);animation:dice-settle-event .26s ease-out both}.dice-total{display:flex;min-height:46px;align-items:center;justify-content:center;gap:10px;color:#c7d7cf;font-size:.74rem}.dice-total strong{color:#fff;font-size:2rem;line-height:1}.dice-reveal.settled .dice-total{animation:dice-total-in .24s ease-out both}@keyframes dice-reveal-in{0%{opacity:0;transform:translateY(9px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dice-toss-first{0%{transform:translate(-92px,-76px) rotate(-320deg) scale(.72)}38%{transform:translate(-25px,19px) rotate(-155deg) scale(1.04)}58%{transform:translate(-4px,-18px) rotate(-72deg) scale(.96)}78%{transform:translate(-9px,7px) rotate(-22deg) scale(1)}to{transform:translate(-5px,4px) rotate(-7deg)}}@keyframes dice-toss-second{0%{transform:translate(94px,-68px) rotate(300deg) scale(.7)}34%{transform:translate(28px,17px) rotate(142deg) scale(1.05)}57%{transform:translate(2px,-16px) rotate(68deg) scale(.97)}79%{transform:translate(9px,6px) rotate(22deg) scale(1)}to{transform:translate(5px,1px) rotate(6deg)}}@keyframes dice-toss-event{0%{transform:translate(32px,-88px) rotate(340deg) scale(.7)}36%{transform:translate(-19px,15px) rotate(166deg) scale(1.05)}59%{transform:translate(6px,-17px) rotate(76deg) scale(.97)}80%{transform:translate(1px,8px) rotate(18deg) scale(1)}to{transform:translate(4px,5px) rotate(-4deg)}}@keyframes dice-settle-first{0%{transform:translate(-5px,-6px) rotate(-18deg)}}@keyframes dice-settle-second{0%{transform:translate(5px,-7px) rotate(17deg)}}@keyframes dice-settle-event{0%{transform:translate(4px,-6px) rotate(-14deg)}}@keyframes dice-total-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.build-choice-grid,.improvement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.knight-choice-grid{margin-top:8px;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);padding-top:10px}.improvement-grid .action-tile{min-height:112px;grid-template-columns:1fr;align-content:start;align-items:start}.improvement-symbol{display:grid;width:30px;height:30px;place-items:center;color:#21382e;background:var(--resource-color, #d7e2dc);border:1px solid rgb(33 56 46 / 16%);border-radius:5px;font-size:.72rem;font-weight:700;line-height:1}.improvement-cost{color:#5c6b63;font-size:.68rem;font-weight:700}.build-choice-grid .action-tile{min-height:122px;grid-template-columns:1fr;align-content:start;align-items:start}.build-choice-grid .action-tile>span{width:100%}.action-tile{position:relative;display:grid;min-height:72px;padding:9px;grid-template-columns:30px 1fr;align-items:center;gap:7px;color:#24382f;background:#fff;border:1px solid #cbd5cf;border-radius:7px;cursor:pointer;text-align:left}.action-tile:hover:not(:disabled){border-color:#71877c;background:#f4f8f5}.action-tile.selected{color:#fff;background:var(--forest-light);border-color:var(--forest-light)}.action-tile strong,.action-tile span{display:block}.action-tile strong{font-size:.78rem}.action-tile span{margin-top:3px;color:#77847e;font-size:.64rem}.action-tile.selected span{color:#dbe9e2}.action-tile .action-unavailable{color:#8d473e;font-weight:750;line-height:1.25}.start-unavailable{margin:0;color:#8d473e;font-size:.78rem;line-height:1.4;text-align:center}.cost-row{display:flex;margin-top:5px;flex-wrap:wrap;gap:3px}.action-tile .cost-row{display:flex}.cost-dot{display:inline-grid;width:20px;height:20px;place-items:center;color:#24362f;background:color-mix(in srgb,var(--resource-color) 68%,#fff);border:1px solid color-mix(in srgb,var(--resource-color) 82%,#5c6c64);border-radius:4px;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:.76rem;font-style:normal;font-weight:400;line-height:1}.resource-summary-item{display:inline-flex;min-width:30px;height:20px;padding:0 4px;align-items:center;justify-content:center;gap:2px;color:#24362f;background:color-mix(in srgb,var(--resource-color) 68%,#fff);border:1px solid color-mix(in srgb,var(--resource-color) 82%,#5c6c64);border-radius:4px;line-height:1}.resource-summary-symbol{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:.76rem;line-height:1}.resource-summary-count{font-family:inherit;font-size:.68rem;font-variant-numeric:tabular-nums;font-weight:800;line-height:1}.offer-list{display:grid;gap:7px}.trade-offer{display:grid;padding:9px 10px;gap:7px;background:#f1f5f2;border:1px solid #d4ddd8;border-radius:6px}.trade-offer.incoming{background:#fffaf0;border-color:#c9a33f;box-shadow:inset 3px 0 #c9a33f}.trade-offer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.72rem}.trade-exchange{display:grid;min-width:0;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:7px}.trade-side{display:grid;min-width:0;gap:4px}.trade-side-label{color:#786b4b;font-size:.61rem;font-weight:800}.resource-summary{display:flex;min-height:17px;align-items:center;flex-wrap:wrap;gap:5px;font-size:.68rem}.resource-summary-empty{color:var(--text-muted);font-size:.74rem;font-weight:700}.trade-resource-overview{display:grid;margin:-4px 0 12px;padding-bottom:12px;gap:7px;border-bottom:1px solid #d8e0db}.trade-resource-overview-label{color:#53635b;font-size:.7rem;font-weight:800}.trade-resource-overview-items{display:grid;min-width:0;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.trade-resource-item{display:grid;min-width:0;min-height:36px;padding:4px 6px;grid-template:"symbol count" 1fr "symbol name" 1fr / 26px minmax(0,1fr);align-items:center;column-gap:6px;background:#f4f7f5;border:1px solid #d4ddd8;border-radius:6px}.trade-resource-item .resource-symbol{width:26px;height:26px;grid-area:symbol}.trade-resource-item strong{grid-area:count;align-self:end;font-size:.88rem;font-variant-numeric:tabular-nums;line-height:1}.trade-resource-name{min-width:0;grid-area:name;align-self:start;overflow:hidden;color:#64736b;font-size:.58rem;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.trade-mode-control{height:42px;grid-template-columns:repeat(3,minmax(0,1fr))}.trade-mode-control button{display:inline-flex;min-width:0;padding:0 6px;align-items:center;justify-content:center;gap:5px;font-size:.76rem;white-space:nowrap}.mode-live-dot{width:6px;height:6px;flex:0 0 auto;background:#b48622;border-radius:50%}.trade-target-field,.trade-editor-columns,.trade-bank-columns,.trade-bank-rate,.trade-dialog-offers,.auction-composer,.auction-panel{margin-top:16px}.trade-offer-meta{display:flex;min-width:0;align-items:flex-end;flex-direction:column;gap:1px;color:#68766f}.trade-offer-meta .trade-deadline{margin-top:0}.auction-compose-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(160px,.75fr);gap:16px}.auction-terms{display:grid;align-content:start;gap:16px}.auction-minimum-field{display:grid;padding:11px 0;grid-template-columns:1fr;justify-items:start;gap:7px;border-top:1px solid #d8e0db;border-bottom:1px solid #d8e0db}.auction-minimum-field>span,.auction-bid-amount>span{color:#405048;font-size:.78rem;font-weight:800}.auction-minimum-field small{color:#69776f;font-size:.7rem}.auction-amount-stepper{display:grid;width:132px;height:40px;padding:2px;grid-template-columns:36px minmax(42px,1fr) 36px;align-items:center;background:#eef3f0;border:1px solid #cbd6d0;border-radius:6px}.auction-amount-stepper .icon-button{width:34px;height:34px;background:#fff;border-color:#d2dbd6}.auction-amount-stepper output{font-size:1rem;font-variant-numeric:tabular-nums;font-weight:850;text-align:center}.auction-panel{display:grid;gap:12px}.auction-panel-header{display:grid;min-width:0;padding:10px;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px;background:#f4f7f5;border:1px solid #d2dbd6;border-radius:6px}.auction-mark{display:grid;width:36px;height:36px;place-items:center;color:#fff;background:#8a6720;border-radius:6px}.auction-panel-header>div{display:grid;min-width:0;gap:2px}.auction-panel-header>div span{color:#6d796f;font-size:.64rem;font-weight:750}.auction-panel-header>div strong{overflow:hidden;font-size:.85rem;text-overflow:ellipsis;white-space:nowrap}.auction-panel-header .trade-deadline{margin-top:0}.auction-leading{display:grid;min-width:0;padding:10px 2px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;border-top:1px solid #d8e0db;border-bottom:1px solid #d8e0db}.auction-leading span{color:#6d796f;font-size:.68rem;font-weight:750}.auction-leading strong{min-width:0;overflow:hidden;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.auction-leading b{color:#765b17;font-size:.8rem;font-variant-numeric:tabular-nums;white-space:nowrap}.auction-bid-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.auction-bid-amount{display:flex;min-width:0;align-items:center;gap:10px}.auction-bid-controls>.button{min-width:132px}.auction-panel-actions{margin-top:0}.activity-log{display:grid;margin:0;padding:0;gap:9px;list-style:none}.activity-log li{position:relative;padding-left:12px;color:#5f6e66;font-size:.72rem;line-height:1.45}.activity-log li:before{position:absolute;top:.48em;left:0;width:4px;height:4px;background:#82948b;border-radius:50%;content:""}.overlay{position:fixed;z-index:20;display:grid;inset:0;padding:18px;place-items:center;background:#0d1c178f}.dialog{width:min(520px,100%);max-height:min(720px,calc(100dvh - 36px));padding:22px;overflow-y:auto;background:#fff;border:1px solid rgb(255 255 255 / 32%);border-radius:8px;box-shadow:0 18px 60px #0a181347}.dialog.trade-dialog{max-height:min(800px,calc(100dvh - 36px))}.trade-dialog>.dialog-actions{position:sticky;z-index:2;bottom:-22px;margin-right:-4px;margin-left:-4px;padding:10px 4px 4px;background:linear-gradient(to bottom,#ffffff1a,#fff 32%)}.dialog.progress-card-dialog{width:min(760px,calc(100vw - 32px))}.progress-card-summary{display:grid;margin-bottom:14px;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.progress-card-summary>span{display:flex;min-width:0;padding:8px 9px;align-items:center;gap:6px;color:#4b5d54;background:#f3f6f4;border:1px solid #d8e0db;border-radius:7px;font-size:.7rem;font-weight:750}.progress-card-list{display:grid;margin-top:7px;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.progress-card-tile{min-height:66px}.progress-track-symbol{display:grid;width:34px;height:34px;flex:0 0 auto;place-items:center;background:#eef3f0;border:1px solid #d2ddd7;border-radius:50%;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1.05rem}.progress-track-symbol.is-science{background:#eef5f1;border-color:#bdd4c8}.progress-track-symbol.is-trade{background:#fbf5e6;border-color:#dfcf9e}.progress-track-symbol.is-politics{background:#f1f0f7;border-color:#ccc8dd}.progress-play-panel{margin-top:15px;padding:13px;background:#f8faf9;border:1px solid #d6dfda;border-radius:8px}.progress-play-panel>header strong{color:#30483d;font-size:.92rem}.progress-play-panel>header p{margin:4px 0 12px;color:#65736c;font-size:.75rem;line-height:1.5}.progress-parameter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.progress-field{min-width:0}.progress-checkbox-field{display:grid;margin:0;padding:10px;gap:7px;border:1px solid #d6dfda;border-radius:7px}.progress-checkbox-field legend{padding:0 5px;color:#53635b;font-size:.72rem;font-weight:800}.progress-checkbox-field label{display:flex;align-items:center;gap:8px;color:#3d4f46;font-size:.74rem}.revealed-progress-cards{margin-top:14px}.revealed-progress-cards>div{display:flex;margin-top:6px;flex-wrap:wrap;gap:6px}.revealed-progress-cards>div>span{padding:6px 9px;color:#654f18;background:#fff8df;border:1px solid #e2cf89;border-radius:999px;font-size:.68rem;font-weight:800}.commercial-selection-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.commercial-selection-grid label{display:grid;min-width:0;padding:8px;gap:5px;color:#3e5047;background:#f5f8f6;border:1px solid #d6dfda;border-radius:7px;font-size:.7rem}.commercial-selection-grid input{width:100%;min-width:0}.commercial-selection-grid small{color:#718078;font-size:.62rem}.port-trade-workspace{display:grid;gap:13px}.port-resource-choice{min-width:0;margin:0;padding:0;border:0}.port-resource-choice legend{margin-bottom:7px;color:#53635b;font-size:.72rem;font-weight:800}.port-resource-choice>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.port-resource-choice button{display:grid;min-width:0;min-height:78px;padding:7px 4px;place-items:center;gap:2px;color:#31463d;background:#f4f7f5;border:1px solid #d0dad4;border-radius:6px;cursor:pointer}.port-resource-choice button:hover:not(:disabled),.port-resource-choice button:focus-visible{background:#fffaf0;border-color:#a8832d;outline:none}.port-resource-choice button.selected{background:#eef6f1;border-color:#39775b;box-shadow:inset 0 0 0 1px #39775b}.port-resource-choice button:disabled{cursor:not-allowed;opacity:.42}.port-resource-choice button>span{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1.45rem;line-height:1.1}.port-resource-choice button strong{font-size:.68rem}.port-resource-choice button small{color:#66756d;font-size:.57rem}.port-trade-route{display:grid;min-height:64px;padding:8px 18px;grid-template-columns:1fr 32px 1fr;align-items:center;justify-items:center;gap:10px;color:#315345;background:#f0f6f2;border:1px solid #cbdad2;border-radius:7px}.port-trade-route>span{display:flex;align-items:center;gap:7px}.port-trade-route b{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:1.65rem;font-weight:400}.port-trade-route strong{font-size:.8rem}.dialog-header{display:flex;margin-bottom:18px;align-items:flex-start;justify-content:space-between;gap:14px}.dialog-header h2{margin:0;font-size:1.1rem}.dialog-header p{margin:5px 0 0;color:var(--muted);font-size:.8rem;line-height:1.5}.dialog-actions{display:flex;margin-top:20px;justify-content:flex-end;gap:8px}.dialog.game-over-dialog{width:min(700px,100%);background:#fbfcfa}.game-over-winner{display:grid;min-height:100px;margin:0 -22px 18px;padding:16px 22px;grid-template-columns:42px 58px minmax(0,1fr) auto;align-items:center;gap:13px;color:#fff;background:#193e31;border-top:1px solid #c9a653;border-bottom:3px solid var(--player-color, #c9a653)}.winner-crown{color:#f3ca61;filter:drop-shadow(0 2px 2px rgb(0 0 0 / 22%))}.game-result-avatar.player-avatar{width:36px;height:36px;flex:0 0 auto;background:var(--player-color, #526961);border-color:#ffffffb8;font-size:.8rem}.game-over-winner .game-result-avatar{width:56px;height:56px;box-shadow:0 4px 16px #0000003d;font-size:1.05rem}.winner-identity{display:grid;min-width:0;gap:2px}.winner-identity small{color:#f3ca61;font-size:.68rem;font-weight:850}.winner-identity strong{overflow-wrap:anywhere;font-size:1.25rem;line-height:1.2}.winner-score{display:grid;min-width:74px;padding-left:18px;place-items:center;border-left:1px solid rgb(255 255 255 / 25%)}.winner-score b{color:#f8d779;font-size:2rem;font-variant-numeric:tabular-nums;line-height:1}.winner-score small{margin-top:3px;color:#ffffffb8;font-size:.65rem}.final-ranking{min-width:0}.final-ranking-header{display:flex;margin-bottom:8px;align-items:center;justify-content:space-between;gap:12px}.final-ranking-header>span{display:inline-flex;align-items:center;gap:7px;color:#284b3e}.final-ranking-header h3{margin:0;font-size:.86rem}.final-ranking-header small{color:#718078;font-size:.64rem}.game-result-list{margin:0;padding:0;overflow:hidden;background:#fff;border:1px solid #ced8d2;border-radius:7px;list-style:none}.game-result-row{display:grid;min-height:62px;padding:8px 11px;grid-template-columns:36px 36px minmax(116px,1fr) auto 48px;align-items:center;gap:9px;border-bottom:1px solid #e1e7e3;box-shadow:inset 3px 0 var(--player-color, #8b9b93)}.game-result-row:last-child{border-bottom:0}.game-result-row.winner{background:#fff8e7}.game-result-rank{font-size:1.35rem;font-weight:850;text-align:center}.game-result-player{display:grid;min-width:0;gap:4px}.game-result-player>strong{display:flex;min-width:0;align-items:center;gap:6px;overflow-wrap:anywhere;font-size:.8rem;line-height:1.2}.game-result-player>strong em{display:inline-grid;min-width:24px;height:18px;padding:0 5px;flex:0 0 auto;place-items:center;color:#fff;background:#28745a;border-radius:4px;font-size:.58rem;font-style:normal}.game-result-honors{display:flex;min-height:18px;flex-wrap:wrap;gap:4px}.game-result-honors:empty{display:none}.game-result-honors>span{display:inline-flex;min-height:18px;padding:1px 5px;align-items:center;gap:3px;border-radius:4px;font-size:.56rem;font-weight:800;line-height:1.15}.game-result-honors .road{color:#70430c;background:#f5e4c4}.game-result-honors .army{color:#73334c;background:#f3e0e7}.game-result-stats{display:grid;grid-template-columns:repeat(4,minmax(32px,auto));align-items:center;gap:5px}.game-result-stats>span{display:inline-flex;min-width:32px;height:28px;padding:0 6px;align-items:center;justify-content:center;gap:4px;color:#5f6e66;background:#f1f5f2;border-radius:4px;font-size:.68rem}.game-result-stats b,.game-result-score b{font-variant-numeric:tabular-nums}.game-result-score{display:grid;place-items:center;color:#244d3d}.game-result-score b{font-size:1.22rem;line-height:1}.game-result-score small{margin-top:2px;color:#738078;font-size:.58rem}.game-over-actions .button{display:inline-flex;align-items:center;justify-content:center;gap:6px}.game-over-actions{position:sticky;z-index:2;bottom:-22px;margin-right:-4px;margin-left:-4px;padding:10px 4px 4px;background:#fbfcfa}.resource-editor{display:grid;gap:8px}.resource-stepper{display:grid;min-height:48px;padding:6px 7px 6px 10px;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;background:#f4f7f5;border:1px solid #d4ddd8;border-radius:6px}.stepper-controls{display:flex;align-items:center;gap:4px}.stepper-controls .icon-button{width:34px;height:34px;background:#fff;border-color:#cbd5cf}.stepper-value{width:28px;text-align:center;font-weight:800}.trade-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.trade-column h3{margin:0 0 9px;color:#53635b;font-size:.78rem}.phase-message{display:grid;min-height:150px;padding:20px;place-items:center;color:#51635a;text-align:center}.phase-message svg{margin-bottom:10px}.toast-region{position:fixed;z-index:30;top:64px;right:16px;display:grid;width:min(360px,calc(100% - 32px));gap:8px;pointer-events:none}.toast{padding:11px 13px;color:#fff;background:#283b33;border-left:4px solid #63b489;border-radius:6px;box-shadow:var(--shadow);font-size:.8rem;line-height:1.4}.toast.error{border-color:#e47a68}.reconnect-mask{position:absolute;z-index:40;display:grid;inset:0;place-items:center;color:#fff;background:#122b23b8;font-size:.86rem;font-weight:700}@media(max-width:1199px){.game-screen{grid-template:"top top" 52px "turn turn" 40px "players players" 82px "board board" minmax(0,1fr) "hand actions" 88px / minmax(420px,1fr) clamp(300px,30vw,360px)}.game-screen:has(>.barbarian-track){grid-template:"top top" 52px "turn turn" 40px "barbarian barbarian" 30px "players players" 82px "board board" minmax(0,1fr) "hand actions" 88px / minmax(420px,1fr) clamp(300px,30vw,360px)}.player-rail{padding:7px 10px;flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid #c5d0ca}.game-player{min-width:214px;min-height:66px;padding:7px 9px;grid-template-columns:minmax(0,1fr);column-gap:7px;order:var(--mobile-player-order, 10)}.game-player-profile-trigger{min-height:50px;grid-template-columns:30px minmax(0,1fr) 30px;column-gap:7px;row-gap:2px}.player-stats{display:flex;grid-column:1 / -1;gap:8px;white-space:nowrap}.player-stat{gap:2px;font-size:.64rem}.incoming-trade-alert{grid-template-columns:minmax(190px,1fr) minmax(210px,auto)}.trade-alert-actions{grid-column:1 / -1}}@media(max-width:820px){.access-screen{grid-template-columns:1fr;overflow-y:auto}.access-panel{min-height:100dvh;padding:34px clamp(22px,7vw,44px);border-right:0}.access-visual{display:none}.brand-lockup{margin-bottom:38px}.lobby-content{grid-template-columns:1fr}.lobby-map{display:none}.lobby-panel{padding:28px 22px calc(24px + env(safe-area-inset-bottom))}.game-screen{position:relative;grid-template:"top" 48px "turn" 38px "players" 78px "board" minmax(220px,1fr) "hand" 70px "actions" calc(64px + env(safe-area-inset-bottom)) / minmax(0,1fr)}.game-screen:has(>.barbarian-track){grid-template:"top" 48px "turn" 38px "barbarian" 30px "players" 78px "board" minmax(220px,1fr) "hand" 70px "actions" calc(64px + env(safe-area-inset-bottom)) / minmax(0,1fr)}.top-bar{height:48px;padding:0 7px 0 11px}.top-brand strong{font-size:1rem}.connection-pill span:last-child,.room-code>span{display:none}.turn-status{min-height:38px;padding:0 7px 0 10px;font-size:.76rem}.game-over-summary-button{min-height:28px;padding:0 8px;font-size:.68rem}.player-rail{padding:5px 7px;gap:6px}.game-player{min-width:184px;min-height:64px;padding:5px 7px;grid-template-columns:minmax(0,1fr);gap:6px}.game-player-profile-trigger{min-height:52px;grid-template-columns:29px minmax(0,1fr) 27px;gap:6px;row-gap:1px}.game-player .player-avatar{width:28px;height:28px}.player-name{font-size:.76rem}.player-meta{font-size:.62rem}.player-score b{font-size:.94rem}.player-stats{gap:6px}.board-svg{min-height:220px}.board-controls{right:7px;bottom:7px}.board-viewport:has(.selection-confirm) .board-controls{top:7px;bottom:auto}.game-guide-trigger{top:7px;right:7px;width:40px;height:40px}.board-viewport:has(.selection-confirm) .game-guide-trigger{right:54px}.game-guide-panel{top:54px;right:7px;width:calc(100% - 14px);max-height:calc(100% - 61px)}.selection-confirm{bottom:7px;min-width:calc(100% - 14px)}.trade-alert-slot{width:calc(100% - 14px);margin-top:7px}.incoming-trade-alert{padding:9px 10px;grid-template-columns:1fr;gap:9px}.trade-feedback-alert{grid-template-columns:minmax(0,1fr) 32px}.trade-feedback-alert .trade-alert-header,.trade-feedback-alert .trade-feedback-detail{grid-column:1}.trade-feedback-alert>.icon-button{grid-column:2;grid-row:1}.trade-alert-header{grid-template-columns:32px minmax(0,1fr) 32px}.trade-alert-icon{width:32px;height:32px}.trade-alert-actions{grid-column:auto}.trade-alert-actions .button{min-height:36px;flex:1}.auction-alert .trade-alert-header{grid-template-columns:32px minmax(0,1fr) auto}.trade-resource-overview-items{gap:4px}.trade-resource-item{min-height:34px;padding:3px 4px;grid-template:"symbol count" 1fr "symbol name" 1fr / 23px minmax(0,1fr);column-gap:4px}.trade-resource-item .resource-symbol{width:23px;height:23px;font-size:.86rem}.trade-resource-item strong{font-size:.82rem}.trade-resource-name{font-size:.54rem}.auction-compose-grid{grid-template-columns:1fr}.auction-terms{grid-template-columns:minmax(0,1fr) minmax(132px,auto);gap:10px}.auction-minimum-field{padding:0;border:0}.auction-bid-controls{grid-template-columns:1fr}.auction-bid-controls>.button{width:100%}.hand-tray{padding:5px 7px;grid-template-columns:repeat(5,1fr) 52px;gap:4px;overflow:hidden}.hand-tray.has-commodities{grid-template-columns:repeat(8,1fr) 44px;gap:2px}.resource-chip{min-width:0;padding:4px 2px;grid-template-columns:1fr;place-items:center;gap:1px}.resource-symbol{width:27px;height:24px;font-size:.9rem}.resource-name{display:none}.resource-count{font-size:.8rem}.dev-stack{min-width:0;padding:4px;align-items:center}.dev-stack span{font-size:.55rem}.dev-stack strong{font-size:.82rem}.action-toolbar{padding:5px calc(7px + env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) calc(7px + env(safe-area-inset-left));gap:4px;border-top:1px solid #c4cfc9;border-left:0}.action-command{min-height:44px;padding:5px 2px;gap:3px}.action-command>span{font-size:.68rem}.action-command-badge{top:2px;right:3px}.build-choice-grid{grid-template-columns:1fr}.build-choice-grid .action-tile{min-height:76px;grid-template-columns:30px 1fr;align-content:center;align-items:center}.trade-columns{grid-template-columns:1fr}.trade-columns.trade-editor-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.overlay{padding:0;align-items:end}.dialog{width:100%;max-height:82dvh;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:8px 8px 0 0}.dialog.trade-dialog{max-height:90dvh}.dialog.game-over-dialog{max-height:92dvh}.game-over-winner{margin:0 -16px 14px;padding-right:16px;padding-left:16px}.game-over-actions{bottom:calc(-18px - env(safe-area-inset-bottom))}.trade-dialog>.dialog-actions{bottom:calc(-18px - env(safe-area-inset-bottom))}.dialog.progress-card-dialog{width:100%;max-height:92dvh}.progress-card-list,.progress-parameter-grid{grid-template-columns:1fr}.commercial-selection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.dice-reveal:has(.dice-table.has-event-die){width:calc(100% - 8px);padding-right:10px;padding-left:10px}.port-resource-choice>div{gap:4px}.port-resource-choice button{min-height:66px;padding:5px 2px}.port-resource-choice button>span{font-size:1.2rem}.port-resource-choice button strong{font-size:.61rem}.port-resource-choice button small{font-size:.52rem}.port-trade-route{min-height:54px;padding:6px 10px}.trade-mode-control{height:42px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.trade-editor-columns,.trade-editor-columns .resource-editor{gap:6px}.trade-editor-columns .resource-stepper{min-height:40px;padding:4px;grid-template-columns:25px minmax(0,1fr);gap:4px}.trade-editor-columns .resource-stepper>span:nth-child(2){display:none}.trade-editor-columns .resource-stepper .resource-symbol{width:25px;height:25px;font-size:.86rem}.trade-editor-columns .stepper-controls{justify-content:space-between;gap:2px}.trade-editor-columns .stepper-controls .icon-button{width:30px;height:30px}.trade-editor-columns .stepper-value{width:18px}.trade-resource-item{grid-template:"symbol count" 1fr / 23px minmax(0,1fr)}.trade-resource-item strong{align-self:center}.trade-resource-name{display:none}.auction-panel-header{grid-template-columns:32px minmax(0,1fr) auto;gap:7px}.auction-mark{width:32px;height:32px}.auction-leading{grid-template-columns:auto minmax(0,1fr)}.auction-leading b{grid-column:1 / -1}.auction-bid-amount{justify-content:space-between}.game-over-winner{min-height:84px;grid-template-columns:30px 46px minmax(0,1fr) 52px;gap:7px}.winner-crown{width:28px;height:28px}.game-over-winner .game-result-avatar{width:44px;height:44px}.winner-identity strong{font-size:.98rem}.winner-score{min-width:0;padding-left:8px}.winner-score b{font-size:1.55rem}.final-ranking-header small{display:none}.game-result-row{min-height:78px;padding:7px 8px;grid-template-columns:28px 32px minmax(0,1fr) 40px;gap:7px}.game-result-rank{font-size:1.12rem}.game-result-avatar.player-avatar{width:32px;height:32px}.game-result-player{grid-column:3;grid-row:1}.game-result-player>strong{font-size:.74rem}.game-result-stats{grid-column:3 / 5;grid-row:2;grid-template-columns:repeat(4,minmax(0,1fr))}.game-result-stats>span{min-width:0;height:25px;padding:0 3px}.game-result-score{grid-column:4;grid-row:1}.game-over-actions{display:grid;position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.game-over-actions .button{min-width:0;padding:0 8px;font-size:.72rem}.game-over-actions .button.primary{grid-column:1 / -1;grid-row:1}}@media(max-width:820px)and (orientation:landscape){.game-screen{grid-template:"top top" 44px "turn turn" 34px "players players" 64px "board board" minmax(0,1fr) "hand actions" calc(62px + env(safe-area-inset-bottom)) / minmax(0,1fr) clamp(244px,43vw,290px)}.game-screen:has(>.barbarian-track){grid-template:"top top" 44px "turn turn" 38px "barbarian barbarian" 28px "players players" 64px "board board" minmax(0,1fr) "hand actions" calc(62px + env(safe-area-inset-bottom)) / minmax(0,1fr) clamp(244px,43vw,290px)}.top-bar{height:44px}.player-rail{min-height:64px}.board-svg{min-height:0}.board-controls,.board-viewport:has(.selection-confirm) .board-controls{top:6px;right:6px;bottom:auto;display:grid}.board-controls .icon-button{width:44px;height:44px}.game-guide-trigger,.board-viewport:has(.selection-confirm) .game-guide-trigger{top:6px;right:62px;width:44px;height:44px}.game-guide-panel{top:6px;right:116px;bottom:6px;width:min(390px,calc(100% - 122px));max-height:none}.selection-confirm{right:62px;left:6px;min-width:0;transform:none}.number-token-group{scale:1.35}.port-token-group{scale:1.28}.building-piece-group{scale:1.35}.robber-piece-group{scale:1.22}.pip-text{display:none}.game-player{min-height:54px}.player-profile-popover{padding:10px;gap:7px}.player-profile-header{grid-template-columns:32px minmax(0,1fr) 32px}.player-profile-header>.player-avatar{width:32px;height:32px}.player-profile-stats>span{min-height:44px;padding:4px 7px}.player-profile-progress{gap:5px}.player-profile-progress>span{min-height:36px;padding:4px 7px}.player-profile-control{bottom:-10px;margin:0 -10px -10px;padding:6px 10px 10px}.player-control-confirmation{bottom:-10px;margin:0 -10px -10px;padding:8px 10px 10px;gap:7px}.overlay{padding:6px;align-items:center}.dialog{max-height:calc(100dvh - 12px);padding:16px;border-radius:8px}.dialog-header{margin-bottom:12px}.dialog-actions{margin-top:8px}.dialog>.trade-columns,.dialog>.dice-area{margin-top:8px!important}.dialog .phase-message{min-height:80px;padding:12px}.dialog.game-over-dialog{width:min(680px,100%)}.game-over-winner{min-height:72px;margin-bottom:8px;padding-top:7px;padding-bottom:7px;grid-template-columns:30px 42px minmax(0,1fr) 58px;gap:8px}.game-over-winner .game-result-avatar{width:40px;height:40px}.winner-identity strong{font-size:.95rem}.winner-score b{font-size:1.45rem}.game-result-row{min-height:52px;padding-top:5px;padding-bottom:5px}.game-result-stats>span{height:24px}.build-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.build-choice-grid .action-tile{min-height:104px;grid-template-columns:1fr;align-content:start;align-items:start}.trade-columns{grid-template-columns:1fr 1fr}.trade-resource-overview{margin-bottom:8px;padding-bottom:8px;grid-template-columns:auto minmax(0,1fr);align-items:center}.trade-mode-control{height:40px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.trade-target-field,.trade-editor-columns,.trade-bank-columns,.trade-bank-rate,.trade-dialog-offers,.auction-composer,.auction-panel{margin-top:8px}.auction-compose-grid{grid-template-columns:minmax(0,1.25fr) minmax(150px,.75fr)}.auction-terms{grid-template-columns:1fr}.auction-alert{grid-template-columns:minmax(190px,1fr) minmax(190px,auto)}.auction-alert .trade-alert-actions{grid-column:1 / -1}.auction-bid-controls{grid-template-columns:minmax(0,1fr) auto}.auction-bid-controls>.button{width:auto}.action-toolbar{padding:5px calc(6px + env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) 6px;gap:4px;border-top:1px solid #c4cfc9;border-left:1px solid #c4cfc9}.hand-tray{padding-left:calc(7px + env(safe-area-inset-left));padding-bottom:calc(5px + env(safe-area-inset-bottom))}.action-command:has(.action-command-badge)>svg{transform:translate(-5px)}}@media(prefers-reduced-motion:reduce){.building-placement-preview-art,.building-placement-preview-halo{animation:none!important}.building-placement-preview-art{opacity:1;translate:0 0}.building-placement-preview-halo{opacity:.72;scale:1}.resource-flight-layer,.resource-count-value.previous{display:none}.resource-count-value.current{opacity:1!important;transform:none!important}*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
