@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/merriweather-cyrillic-ext-400-normal-D9NYhYTq.woff2) format("woff2"),url(/assets/merriweather-cyrillic-ext-400-normal-Di6yW_eE.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/merriweather-cyrillic-400-normal-AvfsDsMQ.woff2) format("woff2"),url(/assets/merriweather-cyrillic-400-normal-DAcQ8g-H.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/merriweather-vietnamese-400-normal-hNacsVs_.woff2) format("woff2"),url(/assets/merriweather-vietnamese-400-normal-Dh8WVvgZ.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/merriweather-latin-ext-400-normal-CWVzVQq3.woff2) format("woff2"),url(/assets/merriweather-latin-ext-400-normal-CLqijLtt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/merriweather-latin-400-normal-G4kZaoXi.woff2) format("woff2"),url(/assets/merriweather-latin-400-normal-CvqO63Ah.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/merriweather-cyrillic-ext-700-normal-Bk1p9YoV.woff2) format("woff2"),url(/assets/merriweather-cyrillic-ext-700-normal-DoooT6Vg.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/merriweather-cyrillic-700-normal-wbY04GlL.woff2) format("woff2"),url(/assets/merriweather-cyrillic-700-normal-CHCcU-4a.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/merriweather-vietnamese-700-normal-Bp6kWjW5.woff2) format("woff2"),url(/assets/merriweather-vietnamese-700-normal-C7_HxHBa.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/merriweather-latin-ext-700-normal-jHnxg2Kc.woff2) format("woff2"),url(/assets/merriweather-latin-ext-700-normal-CaBzXGOk.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/merriweather-latin-700-normal-DoUP8Ce-.woff2) format("woff2"),url(/assets/merriweather-latin-700-normal-D4-nzrAh.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2) format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2) format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2) format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2) format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/dm-sans-latin-ext-600-normal-4vooXBpG.woff2) format("woff2"),url(/assets/dm-sans-latin-ext-600-normal-DRtaDpgU.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/dm-sans-latin-600-normal-Aqo67rzb.woff2) format("woff2"),url(/assets/dm-sans-latin-600-normal-BmdmIIQ2.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-ext-700-normal-CJIcxD6K.woff2) format("woff2"),url(/assets/dm-sans-latin-ext-700-normal-BLI3TTWz.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-700-normal-DvUfVpUG.woff2) format("woff2"),url(/assets/dm-sans-latin-700-normal-CUSSCpQX.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display: "Merriweather", Georgia, serif;--font-ui: "DM Sans", system-ui, sans-serif;--bg-page: #e8f2ec;--bg-hero: linear-gradient(165deg, #1b5e20 0%, #2e7d32 42%, #1b3d22 100%);--bg-hero-blob: radial-gradient( ellipse 70% 55% at 75% 15%, rgba(255, 255, 255, .14), transparent 50% );--panel: #ffffff;--panel-elevated: #f1f8f4;--panel-border: #c5e1cb;--text-on-panel: #1b2e22;--text-muted: #4a6352;--ink: #15351f;--ink-muted: #5a6f62;--accent: #43a047;--accent-hover: #66bb6a;--accent-ink: #0d1f0f;--danger: #c62828;--success: #2e7d32;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 16px;--shadow-card: 0 4px 20px rgba(21, 53, 31, .12);--shadow-soft: 0 2px 10px rgba(21, 53, 31, .08);font-family:var(--font-ui);color:var(--ink);background:var(--bg-page);background-image:url(/textures/paper-tile.svg);background-size:192px 192px;line-height:1.45}*{box-sizing:border-box}body{margin:0;min-height:100vh}h1,h2,h3,.hero-title{font-family:var(--font-display)}a{color:var(--accent)}.app-root{min-height:100vh;display:flex;flex-direction:column}.lobby-error{margin:.65rem 0 0;padding:.5rem .65rem;border-radius:var(--radius-sm);background:#c628281f;color:var(--danger);font-size:.9rem;font-weight:600}.app-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1rem 1rem 2rem}.hero{position:relative;border-radius:var(--radius-xl);overflow:hidden;background:var(--bg-hero);background-image:var(--bg-hero-blob),var(--bg-hero);color:#faf7f2;padding:2rem 1.75rem 2.25rem;margin-bottom:1.25rem;box-shadow:var(--shadow-card)}.hero-inner{position:relative;z-index:1;max-width:36rem}.hero-eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;color:#d4a84bf2;margin:0 0 .5rem;font-weight:600}.hero-title{font-size:clamp(1.65rem,4vw,2.15rem);margin:0 0 .5rem;line-height:1.2}.hero-sub{margin:0;font-size:1rem;color:#faf7f2e0;max-width:32rem}.hero-tagline{margin:1rem 0 0;font-weight:600;font-size:.95rem;color:#d4a84bf2;letter-spacing:.04em}.lobby-home{display:flex;flex-direction:column;gap:1rem}.lobby-room-page{max-width:40rem;margin:0 auto;width:100%}.lobby-split{display:grid;gap:1rem;grid-template-columns:1fr}@media(min-width:720px){.lobby-split{grid-template-columns:1fr 1fr;align-items:stretch}}.lobby-panel{display:flex;flex-direction:column;gap:.65rem;padding:1.15rem 1.2rem 1.2rem;min-height:100%;background:linear-gradient(165deg,#ffffff 0%,var(--panel-elevated) 100%)}.lobby-panel-eyebrow{margin:0;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--accent)}.lobby-panel .lobby-panel-title{margin:0;font-family:var(--font-display);font-size:1.2rem;color:var(--ink);line-height:1.25}.lobby-panel-desc{margin:0;font-size:.88rem;color:var(--text-muted);line-height:1.45}.lobby-panel-actions{display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end;margin-top:.25rem}.lobby-field-grow{flex:1 1 12rem;min-width:0}.lobby-panel-primary{flex-shrink:0;padding:.5rem 1.1rem}.lobby-panel-switch{margin-top:.35rem;padding-top:.85rem;border-top:1px solid var(--panel-border)}.lobby-join-row{display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end;margin-top:.35rem}.lobby-code-input{width:7.5rem;text-align:center;font-weight:700;font-size:1.05rem;letter-spacing:.18em;text-transform:uppercase}.lobby-join-btn{padding:.5rem 1.25rem}.room-code-heading{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem;padding:.85rem 1rem;margin:0 0 .85rem;background:linear-gradient(135deg,#43a0471a,#1b5e200f);border:1px solid rgba(67,160,71,.28);border-radius:var(--radius-md)}.room-code-heading--solo{margin-bottom:.65rem}.room-code-heading-main{min-width:0}.room-code-heading-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}.lobby-kick-btn{margin-left:auto;border-color:#c6282859;color:var(--danger)}.lobby-kick-btn:hover:not(:disabled){background:#c6282814;border-color:#c628288c}.room-code-heading-label{margin:0 0 .2rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.room-code-heading-value{margin:0;font-family:ui-monospace,Cascadia Code,Segoe UI Mono,Menlo,monospace;font-size:clamp(1.65rem,5vw,2.15rem);font-weight:800;letter-spacing:.14em;color:var(--ink);line-height:1.1}.lobby-room-card{padding:1.15rem 1.25rem 1.25rem}.lobby-room-lead{margin:0 0 .85rem;font-size:.9rem;line-height:1.45}.lobby-wait-note{margin:.85rem 0 0;padding:.75rem .85rem;border-radius:var(--radius-md);background:var(--panel-elevated);border:1px solid var(--panel-border);color:var(--text-muted);font-size:.88rem;line-height:1.45}.lobby-host-settings{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--panel-border);display:flex;flex-direction:column;gap:1rem}.lobby-host-section-title{margin:0 0 .15rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink)}.lobby-host-section-hint{margin:0 0 .55rem;font-size:.8rem;color:var(--text-muted);line-height:1.4}.lobby-start-row{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:flex-end}.lobby-vp-input{width:5.5rem;min-width:0}.lobby-start-switch{flex:1 1 10rem;min-width:0}.lobby-start-btn{margin-left:auto;padding:.5rem 1.15rem}@media(max-width:560px){.lobby-start-btn{margin-left:0;width:100%}}.lobby-roster-title{margin:.5rem 0 .45rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.lobby-roster{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.lobby-roster-item{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;padding:.5rem .65rem;background:var(--panel-elevated);border:1px solid var(--panel-border);border-radius:var(--radius-md)}.lobby-public-card{padding:1.1rem 1.2rem 1.2rem}.lobby-public-title{margin:0;font-family:var(--font-display);font-size:1.08rem;color:var(--ink)}.lobby-public-sub{margin:.35rem 0 0;font-size:.86rem;line-height:1.45}.lobby-public-empty{margin:.85rem 0 0;padding:.85rem 1rem;text-align:center;font-size:.88rem;color:var(--text-muted);background:var(--panel-elevated);border:1px dashed var(--panel-border);border-radius:var(--radius-md)}.lobby-join-card .lobby-join-actions{margin-top:.85rem}.card{background:var(--panel);color:var(--text-on-panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);padding:1rem 1.15rem;margin-bottom:.75rem;box-shadow:var(--shadow-soft)}.card h3{font-family:var(--font-display);font-size:1.05rem;margin:0 0 .65rem;color:var(--ink)}.card-muted{font-size:.85rem;color:var(--text-muted)}.row{display:flex;flex-wrap:wrap;gap:.5rem .65rem;align-items:center}.row-tight{gap:.35rem}.panel{background:var(--panel);color:var(--text-on-panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);padding:1rem 1.15rem;margin-bottom:.75rem;box-shadow:var(--shadow-soft)}.panel h3{font-family:var(--font-display);font-size:1.05rem;margin:0 0 .65rem;color:var(--ink)}.stack{display:flex;flex-direction:column;gap:.5rem}button,.btn{cursor:pointer;font-family:var(--font-ui);font-weight:600;font-size:.875rem;border-radius:var(--radius-sm);border:1px solid #a5d6a7;background:#e8f5e9;color:var(--ink);padding:.4rem .75rem;transition:background .15s ease,border-color .15s ease,transform .08s ease}button:hover:not(:disabled),.btn:hover:not(:disabled){background:#c8e6c9;border-color:#81c784}button:active:not(:disabled),.btn:active:not(:disabled){transform:translateY(1px)}button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,var(--accent-hover) 0%,var(--accent) 100%);color:#fff;border-color:#2e7d32;box-shadow:0 2px #1b5e2059}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,#81c784,#43a047);border-color:#1b5e20}.btn-ghost{background:transparent;border-color:#a5d6a7}.btn-ghost:hover:not(:disabled){background:#81c78433}input,select{font-family:var(--font-ui);border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.12);background:#fffcf7;color:var(--ink);padding:.4rem .55rem}.card input,.card select{background:#fff;color:var(--ink);border-color:#c8e6c9}label.field{display:inline-flex;flex-direction:column;gap:.2rem;font-size:.78rem;color:var(--text-muted)}.dock-card label.field span{color:var(--text-muted)}label.field span{font-weight:600;text-transform:uppercase;letter-spacing:.06em}.error{background:#c45c4a26;border:1px solid rgba(196,92,74,.45);color:#8b2e22;padding:.6rem .85rem;border-radius:var(--radius-md);font-size:.9rem;margin-bottom:.75rem}.connecting{padding:2rem;text-align:center;font-size:1rem;color:var(--ink-muted)}.game-shell{display:flex;flex-direction:column;gap:.75rem}.phase-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;background:linear-gradient(90deg,#fff,#e8f5e9);color:var(--text-on-panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);padding:.75rem 1rem;box-shadow:var(--shadow-soft)}.phase-banner-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem}.phase-label{font-family:var(--font-display);font-size:1.1rem;font-weight:700;color:var(--ink)}.phase-phase{color:var(--ink)}.phase-active-name{color:var(--success)}.phase-detail{font-size:.88rem;color:var(--text-muted)}.dice-pill{display:inline-flex;align-items:center;gap:.35rem;background:#c8e6c9;color:var(--ink);padding:.2rem .55rem;border-radius:999px;font-weight:700;font-size:.85rem}.game-layout{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start}.board-wrap{flex:1 1 420px;min-width:0}.board-frame{position:relative;background:linear-gradient(180deg,#1565c0,#0d47a1 55%,#0a3d91);border-radius:var(--radius-lg);padding:.75rem;border:1px solid #0a3f6e;box-shadow:none}.dock{flex:1 1 320px;min-width:min(100%,280px);max-width:440px;display:flex;flex-direction:column;gap:.65rem}.resource-strip{display:flex;flex-wrap:wrap;gap:.5rem}.resource-chip{display:flex;align-items:center;gap:.4rem;background:#f1f8f4;border:1px solid #c8e6c9;border-radius:var(--radius-md);padding:.35rem .55rem;min-width:4.5rem}.resource-chip svg{flex-shrink:0;opacity:.95}.resource-chip .name{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.resource-stack{--cardW: 2.4rem;--cardH: 3.05rem;--offset: .5rem;--stack: 1;position:relative;width:calc(var(--cardW) + (max(1,var(--stack)) - 1) * var(--offset));height:var(--cardH);flex-shrink:0;isolation:isolate}.resource-stack--bar{--cardW: 2.75rem;--cardH: 3.4rem;--offset: .56rem}.resource-stack-card{--i: 0;position:absolute;top:0;left:calc(var(--i) * var(--offset));width:var(--cardW);height:var(--cardH);border-radius:7px;border:1px solid rgba(20,30,45,.26);box-shadow:inset 0 1px #ffffff52;background:var(--stackBg);z-index:calc(10 + var(--i))}.resource-stack-top{position:absolute;top:0;left:calc((max(1,var(--stack)) - 1) * var(--offset));width:var(--cardW);height:var(--cardH);border-radius:7px;border:1px solid rgba(20,30,45,.34);box-shadow:inset 0 1px #ffffff59;background:var(--stackBg);display:flex;align-items:center;justify-content:center;z-index:99}.resource-stack-badge{position:absolute;top:1px;right:1px;min-width:1.15rem;height:1.15rem;padding:0 .2rem;border-radius:999px;background:#1976d2;color:#fff;font-size:.65rem;font-weight:800;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.35);line-height:1}.resource-stack--wood{--stackBg: linear-gradient(180deg, #c8e6c9 0%, #81c784 100%)}.resource-stack--brick{--stackBg: linear-gradient(180deg, #ffccbc 0%, #ff8a65 100%)}.resource-stack--sheep{--stackBg: linear-gradient(180deg, #e8f5e9 0%, #aed581 100%)}.resource-stack--wheat{--stackBg: linear-gradient(180deg, #fff9c4 0%, #ffd54f 100%)}.resource-stack--ore{--stackBg: linear-gradient(180deg, #cfd8dc 0%, #90a4ae 100%)}.divider{height:1px;background:var(--panel-border);margin:.35rem 0}.dev-list{list-style:none;padding:0;margin:.35rem 0 0}.dev-list li{margin-bottom:.45rem;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.dev-kind{font-family:ui-monospace,monospace;font-size:.78rem;background:#e0e0e0;padding:.15rem .35rem;border-radius:4px;color:var(--ink)}.maritime-grid{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.maritime-grid button{font-size:.72rem;padding:.3rem .45rem}.section-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-top:.35rem}code{font-size:.85em}.player-roster{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-start}.player-roster-card{flex:0 0 auto;min-width:132px;max-width:220px;background:var(--panel);border:1px solid var(--panel-border);border-left:4px solid #888;border-radius:var(--radius-md);padding:.4rem .55rem;box-shadow:var(--shadow-soft);transition:box-shadow .15s ease,transform .1s ease}.player-roster-row{display:flex;align-items:center;gap:.55rem}.player-roster-avatar{width:50px;height:50px;border-radius:999px;background:linear-gradient(180deg,#f5f7fa,#e8ecf0);border:3px solid rgba(8,20,36,.18);display:grid;place-items:center;position:relative;flex-shrink:0;color:#37474f;box-shadow:inset 0 1px #ffffffa6}.player-roster-avatar svg{opacity:.98}.player-roster-vp-badge{position:absolute;left:-6px;bottom:-6px;display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .38rem;border-radius:999px;font-weight:900;font-size:.82rem;color:#102a43;background:#fffef7;border:1px solid rgba(16,42,67,.2);box-shadow:0 2px 10px #020c1829}.player-roster-main{min-width:0;flex:1 1 auto}.player-roster-card.is-turn{box-shadow:0 0 0 2px var(--accent),var(--shadow-soft)}.player-roster-card.is-self{background:#f9fff9}.player-roster-top{display:flex;align-items:center;justify-content:space-between;gap:.35rem;margin-bottom:.25rem}.player-roster-top-right{display:inline-flex;align-items:center;gap:.45rem;min-width:0;flex-shrink:0}.player-roster-awards{display:inline-flex;align-items:center;gap:.35rem}.player-roster-award{display:block;width:22px;height:22px;object-fit:contain;filter:drop-shadow(0 1px 0 rgba(0,0,0,.12));opacity:.95}.player-roster-name{font-weight:700;font-size:.84rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-roster-you{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--success);flex-shrink:0}.player-roster-stats{display:flex;flex-wrap:wrap;gap:.55rem .8rem;font-size:1.02rem;font-weight:800;color:var(--text-muted)}.player-roster-stat{display:inline-flex;align-items:center;gap:.32rem}.player-roster-stat svg,.player-roster-stat .player-roster-stat-icon{flex-shrink:0}.player-roster-stat .player-roster-stat-icon{display:block;object-fit:contain}.dock-inner{display:flex;flex-direction:column;gap:.65rem}.dock-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.65rem;align-items:start}.dock-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);padding:.75rem .9rem;box-shadow:var(--shadow-soft)}.dock-card h3{font-family:var(--font-display);font-size:.98rem;margin:0 0 .5rem;color:var(--ink)}.dock-card-wide{grid-column:1 / -1}.dock-trade-details{align-self:start;grid-column:1 / -1}.dock-trade-details-body{padding-top:.35rem;border-top:1px solid var(--panel-border);margin-top:.35rem}.dock-trade-title{font-weight:700;color:var(--ink);display:flex;align-items:center;gap:.4rem;-webkit-user-select:none;user-select:none}.dock-card-alert{border-color:#ffcc80;background:#fff8e1}.dock-card-trade{border-color:#90caf9;background:#f3f9ff}.dock-hint{font-size:.78rem;color:var(--text-muted);margin:.35rem 0 0}.harbor-line{font-size:.78rem;margin:0 0 .5rem}.colonist-maritime button{font-size:.7rem}.trade-domestic{margin-top:.35rem}.trade-tabs{display:flex;gap:.35rem;padding:.25rem;border-radius:10px;border:1px solid var(--panel-border);background:var(--panel-elevated);margin:.45rem 0 .55rem}.trade-tab-btn{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;padding:.35rem .6rem;font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-muted)}.trade-tab-btn:hover:not(:disabled){background:#81c7842e;border-color:#81c78459}.trade-tab-btn.is-active{background:#fff;border-color:#81c7848c;color:var(--ink);box-shadow:0 1px #15351f14}.trade-columns{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem}@media(max-width:520px){.trade-columns{grid-template-columns:1fr}}.trade-offer-line{font-size:.88rem;color:var(--text-on-panel);margin:0 0 .5rem}.trade-part{display:inline-flex;flex-wrap:wrap;gap:.25rem;vertical-align:middle}.trade-part-chip{display:inline-block;background:#e8f5e9;border:1px solid #a5d6a7;border-radius:999px;padding:.1rem .45rem;font-size:.78rem;font-weight:600}.resource-stepper{display:flex;flex-direction:column;gap:.35rem}.resource-stepper-row{display:grid;grid-template-columns:22px 1fr 32px 28px 32px;align-items:center;gap:.35rem;font-size:.82rem}.resource-stepper-icon{color:var(--success)}.resource-stepper-label{text-transform:capitalize;color:var(--text-muted);font-size:.78rem}.resource-stepper-val{text-align:center;font-weight:700;color:var(--ink)}.resource-stepper-btn{display:inline-flex;align-items:center;justify-content:center;padding:.2rem;min-width:32px;min-height:32px;border-radius:var(--radius-sm);border:1px solid #a5d6a7;background:#fff;color:var(--ink)}.resource-stepper-btn:hover:not(:disabled){background:#e8f5e9}.discard-rows{display:flex;flex-direction:column;gap:.35rem}.resource-pile{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;vertical-align:middle}.resource-pile--compact{gap:.2rem .35rem}.resource-pile-item{display:inline-flex;align-items:center;gap:.15rem;background:#f1f8f4;border:1px solid #c8e6c9;border-radius:999px;padding:.08rem .4rem .08rem .25rem;color:var(--ink)}.resource-pile-n{font-weight:800;font-size:.78rem}.resource-pile-empty{font-style:italic}.trade-offer-visual{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;margin-bottom:.65rem;font-size:.9rem}.trade-offer-gives,.trade-offer-wants{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:700}.trade-offer-arrow{font-weight:800;color:var(--success)}.partner-hand-hint{font-size:.78rem;margin:.35rem 0 .5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.trade-preview-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .65rem;margin-bottom:.65rem;background:#f9fcf9;border:1px dashed #a5d6a7;border-radius:var(--radius-md)}.trade-preview-side{display:flex;flex-direction:column;gap:.25rem;min-width:0}.trade-preview-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.trade-preview-mid{font-size:1.35rem;font-weight:800;color:var(--success);flex-shrink:0}.maritime-trade-btn{min-height:2.5rem;display:inline-flex;align-items:center;justify-content:center}.maritime-trade-inner{display:inline-flex;align-items:center;gap:.35rem;flex-wrap:wrap;justify-content:center}.maritime-arrow{font-weight:800;color:var(--success)}.build-costs{font-size:.78rem;margin-bottom:.5rem}.build-cost-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.build-cost-row span:first-child{font-weight:600;min-width:4.5rem}.build-mode-buttons button:disabled{opacity:.4;cursor:not-allowed}.app-root--play{height:100vh;max-height:100vh;overflow:hidden}.app-main--play{flex:1;min-height:0;max-width:none;width:100%;margin:0;padding:.35rem .45rem .4rem;overflow:hidden;display:flex;flex-direction:column}.app-main--play .game-shell{flex:1;min-height:0;display:flex;flex-direction:column;gap:.4rem;overflow:hidden}.player-roster-scroll{flex-shrink:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;padding-bottom:1px}.player-roster-scroll .player-roster{flex-wrap:nowrap;gap:.35rem;min-width:min-content}.player-roster-scroll .player-roster-card{flex:0 0 auto;min-width:138px;max-width:178px;padding:.45rem .55rem}.app-main--play .game-main-split{flex:1;min-height:0;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,22vw);grid-template-rows:minmax(0,1fr);gap:.45rem;align-items:stretch;overflow:hidden}.app-main--play .board-column{flex:none;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:stretch;overflow:visible}.app-main--play .board-column>.game-bottom{width:100%;max-width:100%;position:relative;z-index:50}.app-main--play .board-frame{flex:1 1 auto;width:100%;height:100%;min-height:0;min-width:0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;padding:.35rem .4rem;border-radius:14px;background:radial-gradient(ellipse 120% 80% at 50% -20%,rgba(120,198,255,.35),transparent 55%),linear-gradient(180deg,#1a7cbe,#0d5288 48%,#082f4d);border:1px solid rgba(4,20,36,.9);box-shadow:inset 0 1px #ffffff1f,0 6px 24px #020c1873}.board-svg-measure{width:100%;height:100%;min-height:0;min-width:0;display:flex;align-items:center;justify-content:center}.board-svg{width:100%;height:100%;max-width:100%;overflow:visible;max-height:100%;display:block}.board-svg .board-hex-pip-num{fill:#1a1208}.board-svg .board-hex-pip-num--red{fill:#b71c1c}.board-dock-res-fo-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#1a2433}.app-main--play .dock-card{padding:.55rem .65rem}.app-main--play .dock-card h3{font-size:.88rem;margin-bottom:.4rem}.app-main--play .chat-stub summary{font-size:.88rem}.app-main--play .game-event-log-panel{max-height:min(200px,30vh)}.app-main--play .game-event-log-scroller{font-size:.74rem}.app-main--play .dock-grid{gap:.45rem}.dock-preroll-hint{font-size:.78rem;line-height:1.35}.phase-banner--play{flex-shrink:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.5rem .75rem;padding:.45rem .65rem;background:linear-gradient(180deg,#fff,#eef6ff);border:1px solid #b8cfe8;border-radius:var(--radius-lg);box-shadow:0 2px 12px #0828481f}.phase-banner-left{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .85rem;min-width:0}.phase-banner-room{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem}.phase-room-label{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#0d47a1c7}.phase-room-code{font-family:ui-monospace,monospace;font-size:.85rem;font-weight:700;background:#e3f2fd;color:#0d47a1;padding:.12rem .4rem;border-radius:6px;border:1px solid #90caf9}.phase-banner-mid{display:flex;justify-content:center;align-items:center;min-width:0}.phase-clean-mid{display:flex;align-items:center;justify-content:center;gap:.5rem;min-width:0;flex-wrap:wrap}.phase-clean-text{font-size:.82rem;color:#37474f;font-weight:650;min-width:0;text-align:center}.phase-banner-right{justify-self:end;display:flex;align-items:center;justify-content:flex-end;gap:.5rem;text-align:right;min-width:0}.phase-leave-btn{flex-shrink:0}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:grid;place-items:center;padding:1rem;background:#020c188c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog-card{width:min(420px,100%);background:var(--panel);color:var(--text-on-panel);border:1px solid rgba(8,24,48,.18);border-radius:var(--radius-lg);box-shadow:0 18px 55px #00000047;padding:1rem 1.1rem 1.05rem}.dialog-title{margin:0 0 .35rem;font-family:var(--font-display);font-size:1.05rem;color:var(--ink)}.dialog-desc{margin:0;font-size:.88rem;color:var(--text-muted);line-height:1.4}.dialog-actions{margin-top:.9rem;display:flex;justify-content:flex-end;gap:.5rem}.dialog-confirm--danger{background:linear-gradient(180deg,#ef5350,#c62828)!important;border-color:#8e1b1b!important;box-shadow:0 2px #8e1b1b59!important}@keyframes win-confetti-fall{0%{transform:translate3d(0,-12vh,0) rotate(0);opacity:1}to{transform:translate3d(var(--win-confetti-drift, 0px),108vh,0) rotate(720deg);opacity:.88}}.win-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10020;display:grid;place-items:center;padding:1rem;background:#020c1880;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.win-modal-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.win-modal-confetti-piece{position:absolute;top:-10%;border-radius:2px;opacity:.95;box-shadow:0 0 1px #0000001f;animation-name:win-confetti-fall;animation-timing-function:linear;animation-fill-mode:forwards}.win-modal-card{position:relative;z-index:1;width:min(440px,100%);padding:1.35rem 1.4rem 1.25rem;background:linear-gradient(165deg,#fffffffa,#f5f8fcfa);color:var(--ink);border:1px solid rgba(8,24,48,.12);border-radius:var(--radius-lg);box-shadow:0 4px #ffc85059,0 22px 60px #00000052;text-align:center}.win-modal-eyebrow{margin:0 0 .35rem;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted)}.win-modal-title{margin:0 0 .55rem;font-family:var(--font-display);font-size:clamp(1.45rem,4vw,1.85rem);line-height:1.15;color:var(--ink)}.win-modal-subtitle{margin:0;font-size:.95rem;line-height:1.5;color:var(--text-muted)}.win-modal-subtitle strong{color:var(--ink);font-weight:700}.win-modal-actions{margin-top:1.25rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.65rem}.win-modal-btn{min-width:8.5rem}.win-modal-btn--primary:disabled{opacity:.45;cursor:not-allowed}.win-modal-host-hint{margin:.85rem 0 0;font-size:.82rem;line-height:1.45;color:var(--text-muted)}.phase-roll-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.45rem}.btn-roll-dice{font-size:1rem!important;font-weight:800!important;padding:.55rem 1.35rem!important;border-radius:10px!important;letter-spacing:.03em;border:1px solid #1b5e20!important;background:linear-gradient(180deg,#66bb6a,#2e7d32)!important;color:#fff!important;box-shadow:0 3px #0c3c148c,0 8px 20px #1b5e2059!important}.btn-roll-dice:hover:not(:disabled){filter:brightness(1.05)}.btn-knight-preroll{font-size:.8rem!important;padding:.45rem .75rem!important;border-radius:8px!important;background:#fff8e1!important;border:1px solid #ffb74d!important;color:#4e342e!important}.phase-wait-hint{font-size:.82rem;color:#37474f;text-align:center;max-width:22rem;line-height:1.35}.phase-phase-line{display:flex;flex-direction:column;gap:.2rem;align-items:center}.phase-chip{display:inline-block;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:.2rem .45rem;border-radius:999px;background:#e8f5e9;color:#1b5e20;border:1px solid #a5d6a7}.phase-chip--muted{background:#eceff1;color:#455a64;border-color:#cfd8dc}.phase-turn-who{font-size:.8rem;color:#546e7a}.phase-phase-block{display:flex;flex-direction:column;gap:.15rem;align-items:flex-end}.phase-active-line{font-size:.78rem;color:var(--text-muted)}.phase-active-label{text-transform:uppercase;letter-spacing:.06em;font-weight:700;font-size:.62rem;margin-right:.25rem}.phase-active-name{color:#1565c0;font-size:.88rem}.dice-display{display:flex;align-items:center;gap:.5rem}.dice-display-pair{display:flex;gap:.35rem;align-items:center}.die-face{width:48px;height:48px;border-radius:10px;background:linear-gradient(145deg,#fff,#e8e0d5 55%,#d7ccc8);border:1px solid #8d6e63;box-shadow:0 3px #5d4037,0 6px 14px #00000038;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;gap:1px;box-sizing:border-box}.die-face--empty{display:flex;align-items:center;justify-content:center;grid-template-columns:unset;grid-template-rows:unset;padding:0}.die-empty-glyph{font-size:1.35rem;font-weight:800;color:#90a4ae;line-height:1}.die-cell{display:flex;align-items:center;justify-content:center}.die-cell--pip:after{content:"";width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#444,#0a0a0a 70%);box-shadow:inset 0 -1px 1px #ffffff40}.dice-display-sum-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:2.5rem}.dice-display-sum{font-size:1.65rem;font-weight:800;color:#0d1a2a;line-height:1;font-variant-numeric:tabular-nums;text-shadow:0 1px 0 rgba(255,255,255,.85)}.dice-display-sum--pending{font-size:.68rem;font-weight:700;color:#37474f;text-transform:uppercase;letter-spacing:.04em;text-align:center;max-width:5rem;line-height:1.2}.app-main--play .game-bottom{flex-shrink:0;min-height:0}.app-main--play .game-sidebar{min-height:0;overflow:hidden;display:flex;flex-direction:column}.game-sidebar-inner{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;display:flex;flex-direction:column;gap:.45rem;padding-right:2px}.sidebar-section-title{font-family:var(--font-display);font-size:.78rem;margin:.15rem 0 .25rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em}.sidebar-opponents{flex-shrink:0}.chat-stub{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-md);padding:.35rem .5rem;font-size:.82rem}.chat-stub summary{cursor:pointer;font-weight:700;color:var(--ink);list-style:none;display:flex;align-items:center;gap:.4rem;-webkit-user-select:none;user-select:none}.chat-stub summary::-webkit-details-marker{display:none}.chat-stub summary::marker{content:"";font-size:0}.chat-stub summary:before{content:"";display:inline-block;width:.4em;height:.4em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);margin-top:-.12em;opacity:.65;flex-shrink:0;transition:transform .15s ease,margin .15s ease}.chat-stub[open]>summary:before{transform:rotate(45deg);margin-top:.08em}.chat-stub-body{margin:.35rem 0 0;font-size:.78rem}.game-event-log-panel{flex-shrink:0;display:flex;flex-direction:column;min-height:0;max-height:min(220px,32vh);background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-md);padding:.35rem .45rem .45rem}.game-event-log-panel .sidebar-section-title{flex-shrink:0}.game-event-log-scroller{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;font-size:.78rem;line-height:1.4;color:var(--ink)}.game-event-log-line{padding:.28rem .35rem;margin-bottom:.2rem;border-radius:6px;border:1px solid rgba(8,24,48,.08);background:#ffffff8c}.game-event-log-line--you-gain{border-color:#2e7d3259;background:linear-gradient(180deg,#f1f8e9,#e8f5e9)}.game-event-log-line--you-lose{border-color:#c628284d;background:linear-gradient(180deg,#fff8f8,#ffebee)}.game-event-log-line--error{border-color:#b71c1c73;background:linear-gradient(180deg,#fff3e0,#ffe0b2);color:#4e342e}.game-event-log-line-inner{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .35rem}.game-event-log-res.resource-pile{vertical-align:middle}.map-game-toast-wrap{position:absolute;top:.55rem;left:50%;transform:translate(-50%);z-index:7;max-width:min(380px,calc(100% - 5.5rem));pointer-events:none;filter:drop-shadow(0 6px 20px rgba(0,0,0,.32));display:flex;flex-direction:column;gap:.25rem}.map-game-toast{padding:.45rem .7rem;border-radius:10px;font-size:.84rem;font-weight:600;line-height:1.35;text-align:center;border:1px solid rgba(8,24,48,.14);animation:map-game-toast-in .32s ease-out}.map-game-toast--steal{color:#1b2a3a;background:linear-gradient(180deg,#fffdf5fa,#fff8e1f7)}.map-game-toast--error{color:#4e342e;background:linear-gradient(180deg,#fff3e0,#ffe0b2);border-color:#b71c1c59}.map-game-toast--info{color:#1a2f45;background:linear-gradient(180deg,#ecf6fffa,#e3f2fdf5);border-color:#1976d238}@keyframes map-game-toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.app-toast-wrap{position:fixed;top:1rem;left:50%;transform:translate(-50%);z-index:9999;max-width:min(420px,calc(100% - 2rem));pointer-events:none;filter:drop-shadow(0 6px 20px rgba(21,53,31,.22))}.map-trade-overlay{position:absolute;top:.5rem;right:.55rem;left:auto;transform:none;z-index:6;max-width:min(420px,calc(100% - 1rem));pointer-events:auto;filter:drop-shadow(0 8px 28px rgba(0,0,0,.35))}.map-trade-card{display:flex;flex-direction:row;align-items:stretch;gap:.65rem;padding:.55rem .65rem;border-radius:12px;background:#f8fafcf7;border:1px solid rgba(8,24,48,.12)}.map-trade-rows{flex:1;min-width:0;display:flex;flex-direction:column;gap:.45rem}.map-trade-row{display:flex;flex-direction:row;align-items:center;gap:.4rem}.map-trade-avatar{flex-shrink:0;width:34px;height:34px;border-radius:50%;border:2px solid #90a4ae;display:flex;align-items:center;justify-content:center;background:#fffffff2;color:#37474f}.map-trade-arrow{flex-shrink:0;opacity:.85}.map-trade-arrow--give{color:#2e7d32}.map-trade-arrow--want{color:#c62828}.map-trade-pile{flex:1;min-width:0;display:flex;flex-direction:column;gap:.12rem}.map-trade-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.map-trade-actions{flex-shrink:0;display:flex;flex-direction:column;justify-content:center;gap:.35rem;min-width:5.5rem}.map-trade-watcher{margin:0;font-size:.72rem;max-width:7rem}.map-trade-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.4rem .55rem;font-size:.78rem;font-weight:700;border-radius:8px;border:1px solid rgba(8,24,48,.15);cursor:pointer;background:#fff;color:#102a43}.map-trade-btn--accept{background:linear-gradient(180deg,#26a69a,#00897b);border-color:#00695c;color:#fff}.map-trade-btn--accept:hover{filter:brightness(1.05)}.map-trade-btn--reject{background:#fff;border-color:#b0bec5}.map-trade-btn--cancel{font-weight:600;font-size:.72rem}.map-trade-btn--compact{padding:.32rem .48rem;font-size:.74rem}.map-trade-responses{display:flex;flex-direction:column;gap:.3rem;margin:.15rem 0 .35rem;max-width:12.5rem}.map-trade-response-row{display:grid;grid-template-columns:1fr auto;gap:.25rem .5rem;align-items:center;padding:.25rem .35rem;border-radius:10px;border:1px solid rgba(8,24,48,.1);background:#ffffffb3}.map-trade-response-name{font-size:.78rem;font-weight:800;color:#102a43;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-trade-response-status{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;justify-self:end;color:var(--text-muted)}.map-trade-response-status--accepted{color:#1b5e20}.map-trade-response-status--rejected{color:#b71c1c}.map-trade-response-status--pending{color:#455a64}.map-trade-response-row .map-trade-btn{grid-column:1 / -1;width:100%}@media(max-width:520px){.map-trade-card{flex-direction:column;align-items:stretch}.map-trade-actions{flex-direction:row;flex-wrap:wrap;min-width:0}.map-trade-watcher{max-width:none}}.map-steal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;pointer-events:none;display:flex;align-items:flex-end;justify-content:flex-start;padding:0 0 .5rem .45rem}.map-steal-card{pointer-events:auto;width:min(208px,calc(100% - 5.5rem));padding:.38rem .45rem .42rem;border-radius:10px;background:#ffffffe0;border:1px solid rgba(8,24,48,.1);box-shadow:0 3px 14px #00000024;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.map-steal-title{margin:0 0 .32rem;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.map-steal-actions{display:flex;flex-direction:column;gap:.28rem}.map-steal-choice{display:flex;flex-direction:row;align-items:center;gap:.38rem;width:100%;padding:.28rem .4rem;border-radius:8px;border:1px solid #90a4ae;background:#fffffff5;cursor:pointer;font:inherit;text-align:left;color:#102a43;transition:filter .12s ease,transform .12s ease}.map-steal-choice:hover{filter:brightness(1.02)}.map-steal-choice:active{transform:scale(.99)}.map-steal-choice-avatar{flex-shrink:0;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center}.map-steal-choice-name{font-size:.78rem;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-discard-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:14;display:flex;align-items:flex-end;justify-content:flex-start;padding:0 0 .55rem .45rem;pointer-events:none}.map-discard-panel{position:relative;pointer-events:auto;width:min(330px,calc(100% - 6.2rem));border-radius:12px;background:#ffffffe0;border:1px solid rgba(8,24,48,.1);box-shadow:0 3px 14px #00000024;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:.48rem .52rem .52rem}.map-discard-header{display:flex;flex-direction:row;align-items:center;gap:.4rem;margin-bottom:.25rem}.map-discard-header-icon{flex-shrink:0;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#e3f2fdf2,#bbdefbe6);border:1px solid rgba(100,181,246,.8);color:#1565c0}.map-discard-title{margin:0;font-size:.9rem;font-weight:800;color:#c62828;line-height:1.25;min-width:0}.map-discard-count{font-weight:800;color:#c62828}.map-discard-count--ready{color:#2e7d32}.map-discard-sub{margin:0 0 .45rem;font-size:.72rem;line-height:1.35;font-weight:650;color:#102a43e0}.map-discard-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.25rem .1rem;border-radius:10px;background:#ffffffb3;border:1px solid rgba(8,24,48,.08)}.map-discard-row+.map-discard-row{margin-top:.45rem}.map-discard-row--hand{background:#ffffffeb}.map-discard-row-hint{font-size:.72rem;font-weight:650;color:#102a438c;padding:.15rem .35rem}.map-discard-stack{--cardW: 3.35rem;--cardH: 4.15rem;--offset: .7rem;--stack: 1;position:relative;width:calc(var(--cardW) + (max(1,var(--stack)) - 1) * var(--offset));height:var(--cardH);border:0;background:transparent;padding:0;cursor:pointer;font:inherit;isolation:isolate}.map-discard-stack:disabled{cursor:not-allowed;opacity:.45}.map-discard-stack:not(:disabled):active{transform:scale(.97)}.map-discard-stack-card{--i: 0;position:absolute;top:0;left:calc(var(--i) * var(--offset));width:var(--cardW);height:var(--cardH);border-radius:7px;border:1px solid rgba(20,30,45,.28);box-shadow:inset 0 1px #ffffff59;background:var(--stackBg);z-index:calc(10 + var(--i))}.map-discard-stack-top{position:absolute;top:0;left:calc((max(1,var(--stack)) - 1) * var(--offset));width:var(--cardW);height:var(--cardH);border-radius:7px;border:1px solid rgba(20,30,45,.35);box-shadow:inset 0 1px #ffffff59;background:var(--stackBg);display:flex;align-items:center;justify-content:center;z-index:99}.map-discard-stack--hand:not(:disabled):hover .map-discard-stack-top{filter:brightness(1.04)}.map-discard-stack--wood{--stackBg: linear-gradient(180deg, #c8e6c9 0%, #81c784 100%)}.map-discard-stack--brick{--stackBg: linear-gradient(180deg, #ffccbc 0%, #ff8a65 100%)}.map-discard-stack--sheep{--stackBg: linear-gradient(180deg, #e8f5e9 0%, #aed581 100%)}.map-discard-stack--wheat{--stackBg: linear-gradient(180deg, #fff9c4 0%, #ffd54f 100%)}.map-discard-stack--ore{--stackBg: linear-gradient(180deg, #cfd8dc 0%, #90a4ae 100%)}.map-discard-badge{position:absolute;top:1px;right:1px;min-width:1.15rem;height:1.15rem;padding:0 .2rem;border-radius:999px;background:#1976d2;color:#fff;font-size:.65rem;font-weight:800;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.35);line-height:1}.map-discard-confirm{margin-left:auto;width:2.05rem;height:2.05rem;border-radius:8px;border:1px solid #0288d1;background:linear-gradient(180deg,#4fc3f7,#039be5);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #039be559}.map-discard-confirm:disabled{cursor:not-allowed;opacity:.38;filter:grayscale(.2);box-shadow:none}.map-discard-confirm:not(:disabled):hover{filter:brightness(1.06)}.map-discard-confirm:not(:disabled):active{transform:scale(.97)}.bank-strip{flex-shrink:0;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-md);padding:.35rem .45rem}.bank-strip-header{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.25rem}.bank-strip-row{display:flex;justify-content:space-between;gap:.25rem}.bank-strip-cell{flex:1;display:flex;flex-direction:column;align-items:center;gap:.12rem;min-width:0}.bank-strip-count{font-size:.72rem;font-weight:800;color:var(--ink)}.board-canvas-outer{position:relative;flex:1;min-height:0;min-width:0;overflow:hidden;touch-action:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.board-canvas-outer *{-webkit-user-select:none;-ms-user-select:none;user-select:none}.board-canvas-toolbar{position:absolute;z-index:3;top:6px;left:6px;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem}.board-canvas-tool{width:28px;height:28px;padding:0!important;font-size:1rem!important;font-weight:800!important;border-radius:6px!important;background:#ffffffeb!important;border:1px solid #90a4ae!important;color:#263238!important}.board-canvas-panlayer{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transform-origin:center center}.board-canvas-boardslot{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.board-dice-fixed{position:absolute;right:.65rem;bottom:.55rem;z-index:4;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;pointer-events:auto;filter:drop-shadow(0 4px 18px rgba(0,0,0,.4))}.board-dice-stack{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}.board-dice-knight{font-size:.72rem!important;padding:.28rem .55rem!important}.board-dice-roll-hit{display:block;margin:0;padding:.35rem .45rem;border:1px solid rgba(8,24,48,.14);border-radius:12px;background:#fffdf7f5;cursor:pointer;text-align:right;transition:transform .12s ease,background .15s ease;box-shadow:0 2px 10px #0000001f}.board-dice-roll-hit:hover{background:#ffffff38;transform:scale(1.02)}.board-dice-roll-hit:active{transform:scale(.98)}.board-dice-static{padding:.35rem .45rem;border-radius:12px;border:1px solid rgba(8,24,48,.12);background:#fffdf7f0;box-shadow:0 2px 10px #0000001a}@keyframes dice-shine-strong{0%,to{box-shadow:0 0 0 2px #ffd54f8c,0 0 22px #ffeb78bf}50%{box-shadow:0 0 0 3px #ffeb78d9,0 0 32px #ffc107f2}}@keyframes dice-shine-soft{0%,to{box-shadow:0 0 0 1px #81c78459}50%{box-shadow:0 0 0 2px #66bb6a8c,0 0 14px #81c78459}}.board-dice-roll-hit--glow{animation:dice-shine-strong 1.1s ease-in-out infinite}.board-dice-static--your-turn{animation:dice-shine-soft 2s ease-in-out infinite}.bottom-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem 1.15rem;justify-content:space-between;padding:.6rem .7rem;background:linear-gradient(180deg,#fff,#f5f9fc);border:1px solid #b0bec5;border-radius:var(--radius-lg);box-shadow:0 -2px 12px #08284814}.bottom-bar-hand{flex:1 1 420px;min-width:0}.bottom-bar-hand-row{display:flex;align-items:center;gap:.75rem;flex-wrap:nowrap;min-width:0}.bottom-bar-dev-strip{display:inline-flex;align-items:center;gap:.45rem;flex-wrap:nowrap;flex-shrink:0;padding-left:.65rem;border-left:1px solid rgba(176,190,197,.7);min-width:0;overflow:visible}.bottom-bar-dev-strip,.bottom-bar-actions{max-width:100%}.bottom-bar-dev-label{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.bottom-bar-dev-empty{font-size:.85rem}.bottom-bar-dev-cards{display:flex;flex-wrap:nowrap;gap:.35rem;align-items:center;min-width:0;overflow:visible}.bottom-bar-dev-pop{position:relative}.bottom-bar-dev-pop>summary{list-style:none}.bottom-bar-dev-pop>summary::-webkit-details-marker{display:none}.bottom-bar-dev-card{display:inline-flex;align-items:center;gap:.35rem;border-radius:10px;border:1px solid rgba(8,24,48,.14);background:#ffffffe6;padding:.28rem .45rem;cursor:pointer;-webkit-user-select:none;user-select:none;max-width:12.5rem}.bottom-bar-dev-pop.is-locked .bottom-bar-dev-card{opacity:.55;cursor:not-allowed}.bottom-bar-dev-icon{width:18px;height:18px;flex-shrink:0;opacity:.95}.bottom-bar-dev-kind{font-size:.74rem;font-weight:800;color:#102a43;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bottom-bar-dev-panel{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);width:min(340px,88vw);background:#fffffffa;border:1px solid rgba(8,24,48,.18);border-radius:12px;box-shadow:0 14px 40px #00000038;padding:.55rem .6rem .6rem;z-index:200;display:flex;flex-direction:column;gap:.45rem}.bottom-bar-dev-actions{display:flex;flex-wrap:wrap;gap:.45rem .55rem;align-items:flex-end}.bottom-bar-dev-blocked{margin:0;font-size:.78rem;line-height:1.35}.bottom-bar-dev-close{align-self:flex-end;font-size:.78rem;padding:.32rem .55rem}.bottom-bar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .8rem;flex:0 1 auto;justify-content:flex-end;justify-self:end}.bottom-bar-build{display:flex;flex-wrap:wrap;gap:.45rem}.bottom-bar-build-btn.is-locked{opacity:.45;cursor:not-allowed;pointer-events:auto}.bottom-bar-build-btn.is-locked.btn-primary{opacity:.5}.bottom-bar-dev-buy{font-weight:700}.build-cost-tip-wrap{position:relative;display:inline-flex;vertical-align:middle}.build-cost-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;min-width:max-content;max-width:min(320px,85vw);opacity:0;visibility:hidden;transition:opacity .14s ease,visibility .14s ease;z-index:90;pointer-events:none}.build-cost-tip-wrap:hover .build-cost-tip,.build-cost-tip-wrap:focus-within .build-cost-tip{opacity:1;visibility:visible}.build-cost-tip-panel{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.45rem .55rem .5rem;background:linear-gradient(180deg,#fffef9,#f3ece0);border:1px solid rgba(25,45,70,.28);border-radius:10px;box-shadow:0 4px #0c1c300f,0 10px 28px #020c1c47}.build-cost-tip-label{font-family:var(--font-display);font-size:.7rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#102a43;text-align:center}.build-cost-tip-hint{display:block;max-width:18rem;margin-top:.05rem;font-size:.72rem;line-height:1.38;font-weight:600;color:#102a43e0;text-align:center;white-space:pre-line}.build-cost-tip-cards{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.28rem}.build-cost-tip-card{display:flex;align-items:center;justify-content:center;width:2rem;height:2.55rem;border-radius:6px;border:1px solid rgba(20,30,45,.35);color:#1a2433;box-shadow:inset 0 1px #ffffff59}.build-cost-tip-card--wood{background:linear-gradient(180deg,#c8e6c9,#81c784)}.build-cost-tip-card--brick{background:linear-gradient(180deg,#ffccbc,#ff8a65)}.build-cost-tip-card--sheep{background:linear-gradient(180deg,#e8f5e9,#aed581)}.build-cost-tip-card--wheat{background:linear-gradient(180deg,#fff9c4,#ffd54f)}.build-cost-tip-card--ore{background:linear-gradient(180deg,#cfd8dc,#90a4ae)}.build-cost-tip-card--missing{opacity:.38;filter:grayscale(.85) brightness(.95);box-shadow:none}.build-cost-tip-caret{width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #ebe2d4;margin-top:-1px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.12))}.bottom-bar-costs{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;font-size:.72rem}.bottom-bar-cost-sep{opacity:.45}.bottom-bar-end{margin-left:1.1rem}.bottom-bar-hint{width:100%;margin:0;font-size:.74rem}.resource-strip-bar-wrap{display:flex;align-items:center;gap:.6rem}.resource-strip--bar{flex:1;min-width:0;display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.6rem}.resource-strip-bar-total{font-weight:800;font-size:1.25rem;color:#1565c0;flex-shrink:0;display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .45rem;border-radius:10px;background:#e3f2fde6;border:1px solid rgba(25,118,210,.22)}.resource-strip-bar-total-icon{flex-shrink:0;opacity:.92}.player-roster--column{flex-direction:column;flex-wrap:nowrap}.player-roster--column .player-roster-card{max-width:none;width:100%;flex:0 0 auto}.phase-banner--slim.phase-banner--play{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,160px)}@media(max-width:960px){.app-main--play .game-main-split{grid-template-columns:1fr;grid-template-rows:minmax(200px,44vh) minmax(0,1fr)}.phase-banner--play{grid-template-columns:1fr;grid-template-rows:auto auto auto}.phase-banner-right{justify-self:start;text-align:left}.phase-banner-mid{justify-content:flex-start}}.switch-field{display:flex;align-items:flex-start;gap:.65rem}.switch-field--inline{align-items:center}.switch-field-label{margin:0;padding-top:.12rem;font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-on-panel);cursor:pointer;line-height:1.35}.switch-field--inline .switch-field-label{padding-top:0}.toggle-switch{position:relative;flex-shrink:0;width:2.75rem;height:1.5rem;margin:0;padding:0;border-radius:999px;border:1px solid var(--panel-border);background:#cfd8dc;cursor:pointer;transition:background .15s ease,border-color .15s ease}.toggle-switch[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.toggle-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle-switch:disabled{opacity:.45;cursor:not-allowed}.toggle-switch-thumb{position:absolute;top:2px;left:2px;width:1.125rem;height:1.125rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #15351f38;transition:transform .15s ease;pointer-events:none}.toggle-switch[aria-checked=true] .toggle-switch-thumb{transform:translate(1.2rem)}.btn-compact{padding:.35rem .75rem;font-size:.85rem}.public-rooms-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.public-rooms-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.public-rooms-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem .75rem;background:var(--panel-elevated);border:1px solid var(--panel-border);border-radius:var(--radius-md)}.public-rooms-row-main{min-width:0;display:flex;flex-direction:column;gap:.15rem}.public-rooms-code{font-weight:700;letter-spacing:.1em;font-size:.95rem}.public-rooms-meta{font-size:.82rem}.lobby-player-name{font-weight:600}.lobby-player-badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.12rem .4rem;border-radius:var(--radius-sm);background:var(--panel-elevated);border:1px solid var(--panel-border);color:var(--text-muted)}.lobby-player-badge--you{color:var(--accent-ink);background:#43a0472e;border-color:#43a04773}@media(max-width:520px){.die-face{width:40px;height:40px}.die-cell--pip:after{width:6px;height:6px}.dice-display-sum{font-size:1.35rem}}
