:root{--felt: #1d2723;--felt-hi: #2a3832;--tray: #151d1a;--tray-edge: #33413b;--paper: #f4efe3;--board: #d7e3d0;--space: #efe9da;--sea: #3f6f80;--ink: #ece6d6;--ink-soft: #a9b3ab;--ink-dark: #1e2522;--accent: #e7a93b;--danger: #b2382d;--ok: #6fb26a;--radius: 14px;font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--felt);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--felt);overscroll-behavior:none}body[data-route=t]{overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none}a{color:var(--accent)}button{font:inherit}code{font-size:.9em;background:#ffffff12;padding:1px 5px;border-radius:5px}button{border:1px solid var(--tray-edge);background:#24302b;color:var(--ink);border-radius:999px;padding:12px 20px;min-height:48px;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);color:var(--ink-dark);border-color:transparent;font-weight:700}button.ghost{background:transparent}button.small{min-height:36px;padding:6px 14px}button.wide{width:100%}.muted{color:var(--ink-soft)}.small{font-size:.85rem}.error{color:#ff9b8f}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}.seg{display:inline-flex;background:#121916;border-radius:999px;padding:4px;gap:4px;flex-wrap:wrap}.seg button{border:0;background:transparent;min-height:40px;padding:8px 16px}.seg button.on{background:var(--paper);color:var(--ink-dark);font-weight:700}.seg.big button{min-height:52px;padding:10px 22px}.page{max-width:980px;margin:0 auto;padding:28px 20px 60px}.home-head h1,.setup h1{font-size:2.2rem;margin:8px 0 4px;letter-spacing:-.02em}.game-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;margin:26px 0}.game-card{display:flex;gap:18px;align-items:center;padding:18px;border-radius:20px;text-decoration:none;color:var(--ink);background:var(--tray);border:1px solid var(--tray-edge);min-height:150px}.game-card:active{transform:scale(.99)}.game-card h2{margin:0 0 4px;font-size:1.5rem}.game-card p{margin:4px 0}.thumb{width:110px;height:110px;flex:none}.thumb svg{width:100%;height:100%}.recent h3{margin-top:30px}.recent-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--tray-edge)}.recent-row a{text-decoration:none;color:var(--ink)}footer{margin-top:40px}.back{text-decoration:none}.setup section{margin:28px 0}.setup h3{margin:0 0 12px}.count{display:inline-flex;align-items:center;gap:14px;margin:14px 0}.count button{width:48px;padding:0}.small-count button{width:40px;min-height:40px}.setup-grid{display:grid;grid-template-columns:1fr 240px;gap:18px;align-items:start}@media(max-width:760px){.setup-grid{grid-template-columns:1fr}}.players{display:flex;flex-direction:column;gap:10px}.player-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;background:var(--tray);border:1px solid var(--tray-edge);border-radius:var(--radius);padding:10px}.player-row input{flex:1 1 140px;min-width:120px;min-height:46px;padding:0 14px;border-radius:12px;border:1px solid var(--tray-edge);background:#0f1513;color:var(--ink);font:inherit}.swatches{display:flex;gap:6px}.swatch{width:34px;height:34px;min-height:0;padding:0;border-radius:50%;border:3px solid transparent}.swatch.on{border-color:var(--paper);box-shadow:0 0 0 2px var(--felt)}.edges{display:flex;gap:4px}.edges button{min-height:38px;padding:6px 10px;font-size:.85rem}.edges button.on,.bot-toggle.on{background:var(--paper);color:var(--ink-dark)}.table-preview{width:100%;max-width:240px}.mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:600px){.mode-cards{grid-template-columns:1fr}}.mode-card{display:flex;flex-direction:column;gap:6px;text-align:left;border-radius:18px;padding:18px;min-height:110px;background:var(--tray)}.mode-card b{font-size:1.15rem}.mode-card span{color:var(--ink-soft)}.mode-card.on{border:2px solid var(--accent);background:#2a2a1e}.options{display:flex;flex-direction:column;gap:10px}.option{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;background:var(--tray);border-radius:var(--radius);min-height:56px}.option input[type=checkbox]{width:28px;height:28px;accent-color:var(--accent)}.start{width:100%;min-height:64px;font-size:1.2rem}.table-root{position:fixed;inset:0;background:var(--felt)}.table-svg{width:100%;height:100%;display:block}.center-msg{display:grid;place-items:center;height:100vh;text-align:center;color:var(--ink-soft)}.tappable,.btn{cursor:pointer}.t-small{font-size:16px;fill:var(--ink)}.t-tiny{font-size:13px;fill:var(--ink-soft)}.t-strong{font-weight:700}.t-name{font-size:22px;font-weight:700;fill:var(--ink)}.t-cash{font-size:30px;font-weight:800;fill:var(--ink);letter-spacing:-.02em}.t-prompt{font-size:17px;font-weight:600;fill:var(--accent)}.t-title{font-size:32px;font-weight:800;fill:var(--ink)}.t-big{font-size:34px;font-weight:800;fill:var(--ink)}.t-huge{font-size:54px;font-weight:800;fill:var(--ink)}.t-muted{font-size:18px;fill:var(--ink-soft)}.t-ink,.t-ink.t-title{fill:var(--ink-dark)}.t-tiny-ink{font-size:12px;font-weight:700;letter-spacing:.05em}.t-muted-ink{fill:#7d7a70;font-size:15px}.t-big-ink{font-size:28px;font-weight:800}.cell-text{font-size:10.5px;font-weight:600;fill:#29302c}.cell-price{font-size:11px;fill:#4a524d;font-weight:600}.deed-title{font-size:16px;font-weight:800;fill:#fff;paint-order:stroke;stroke:#00000040;stroke-width:2px}.deed-row{font-size:13px;fill:#29302c}.fo-text{font-size:15px;line-height:1.25;color:var(--ink-dark);font-family:inherit}.btn rect{fill:var(--accent);stroke:#0006;stroke-width:1;transition:transform 80ms}.btn .btn-label{font-size:17px;font-weight:700;fill:var(--ink-dark);pointer-events:none}.btn .btn-sub{font-size:12px;fill:#4a3a12;pointer-events:none}.btn-chip rect{fill:#2c3a34;stroke:#47584f}.btn-chip .btn-label{fill:var(--ink)}.btn-ghost rect{fill:transparent;stroke:#47584f}.btn-ghost .btn-label{fill:var(--ink-soft)}.btn-danger rect{fill:var(--danger)}.btn-danger .btn-label{fill:#fff}.btn:active rect{opacity:.8}.btn-disabled{opacity:.35;cursor:default}.corner-btn circle{fill:#18211d;stroke:var(--tray-edge)}.tray-active{animation:glow 2.4s ease-in-out infinite}@keyframes glow{50%{stroke-opacity:.55}}.pulse{animation:pulse 1.3s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.die-roll{animation:tumble .52s cubic-bezier(.2,.8,.3,1.2);transform-box:fill-box;transform-origin:center}@keyframes tumble{0%{transform:rotate(-200deg) scale(.6);opacity:.2}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.die-roll,.pulse,.tray-active{animation:none}}.toast{position:fixed;left:50%;top:50%;z-index:20;background:var(--paper);color:var(--ink-dark);padding:14px 22px;border-radius:14px;font-weight:600;box-shadow:0 8px 30px #0006;max-width:60vw;text-align:center}.paused{position:fixed;inset:auto 0 45%;margin:auto;width:fit-content;padding:16px 26px;border-radius:14px;background:#0a0e0ce6;color:var(--ink);z-index:30}.modal-backdrop{position:fixed;inset:0;background:#05080799;display:grid;place-items:center;z-index:40}.modal{width:min(860px,94vw);max-height:92vh;overflow:auto;background:#18211d;border:1px solid var(--tray-edge);border-radius:22px;padding:20px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin:18px 0}.qr-card{background:var(--paper);color:var(--ink-dark);border-radius:16px;padding:14px;border:3px solid transparent;display:flex;flex-direction:column;align-items:center}.qr-card .muted{color:#5e6660;text-align:center}.qr-name{font-weight:700;margin-top:8px}.qr-name .ok{color:#2f7a35;font-weight:600}.qr-name .muted{color:#8a8170;font-weight:500}.modal-actions{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}.warn{background:#3a2f17;border:1px solid #6b5420;padding:10px 14px;border-radius:12px}body[data-route=p]{overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none}.phone{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--felt);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.phone-head{flex:none;display:flex;align-items:center;gap:12px;padding:8px 14px;padding-top:max(8px,env(safe-area-inset-top));margin:0 calc(-1*env(safe-area-inset-right)) 0 calc(-1*env(safe-area-inset-left))}.phone-head.mine{box-shadow:inset 0 -4px #ffffffd9}.phone-name{flex:none;max-width:30%;font-size:1.1rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-status{flex:1;min-width:0;text-align:center;font-size:.95rem;line-height:1.2;opacity:.85;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.phone-head.mine .phone-status{opacity:1;font-weight:750}.vp{flex:none;font-size:1.1rem;font-weight:800}.phone-offline{flex:none;padding:6px 14px;background:#4a1f1a;font-size:.9rem}.phone-body{flex:1;min-height:0;padding:10px;display:flex;flex-direction:column}.phone-toast{position:fixed;left:12px;right:12px;bottom:max(16px,env(safe-area-inset-bottom));background:var(--paper);color:var(--ink-dark);padding:14px;border-radius:14px;font-weight:600;text-align:center;z-index:10}.phone-split{flex:1;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px}@media(orientation:landscape){.phone-split{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr 1fr}}.hand-area{min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}.act{min-height:0;display:flex;flex-direction:column;gap:8px}.hand5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.res-tile{position:relative;min-height:0;height:clamp(54px,13vh,84px);padding:4px 0;border-radius:12px;border:3px solid #f4efe3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#1f2a24;box-shadow:0 2px #0000004d}.res-tile b{font-size:1.35rem;line-height:1}.res-tile.zero{opacity:.4}.res-tile.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.res-tile:disabled{opacity:.55}.res-tile em{position:absolute;top:-8px;right:-6px;background:var(--danger);color:#fff;font-style:normal;font-size:.8rem;font-weight:700;border-radius:999px;padding:2px 7px}.hand-meta{display:flex;justify-content:space-between;align-items:center;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{min-height:40px;padding:6px 12px;font-size:.9rem;background:#2e2640;border-color:#5b4a7a}.chip.on{background:#5b4a7a}.act-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(44px,96px);align-content:start;gap:8px}.act-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.act-grid.four{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(40px,72px)}.act-grid.one{grid-template-columns:1fr;grid-auto-rows:minmax(56px,140px)}.act-btn{min-height:0;height:100%;padding:4px 6px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-weight:700;line-height:1.1;overflow:hidden}.act-btn small{font-weight:500;font-size:.75rem}.act-btn.on{background:var(--paper);color:var(--ink-dark);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent)}.act-btn.danger{background:var(--danger);color:#fff;border-color:transparent}.act-note{margin:0;font-weight:600}.cost{display:inline-flex;gap:2px}.cost i{width:18px;height:18px;border-radius:4px;display:inline-grid;place-items:center}.cost svg{width:13px;height:13px}.idle{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:0 6px}.idle p{margin:4px 0}.sheet{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px;background:var(--tray);border:1px solid var(--accent);border-radius:16px;padding:10px;overflow:hidden}.sheet h3{margin:0;font-size:1.05rem}.sheet p{margin:0}.row{display:flex;gap:10px;justify-content:flex-end;margin-top:auto}.row .primary{flex:1}.trade-cols{display:grid;gap:10px}.trade-cols p{margin-bottom:4px}@media(orientation:landscape){.trade-cols{grid-template-columns:1fr 1fr}}.tcell{display:flex;flex-direction:column;gap:4px;min-width:0}.trade-sheet .res-tile{height:clamp(48px,11vh,72px)}.tcell .minus{min-height:30px;padding:0;border-radius:8px}.deeds{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;min-height:0;overflow:hidden}.deed{min-height:38px;padding:4px 10px;border-radius:8px;border:1px solid var(--tray-edge);border-top:6px solid;background:var(--tray);display:inline-flex;align-items:center;gap:6px;font-size:.85rem}.deed.mortgaged{opacity:.5}.deed.on{background:var(--paper);color:var(--ink-dark)}.deed.pardon{border-top-color:#7c5aa6;color:#cdb6f0}.others{display:flex;flex-wrap:wrap;gap:12px;margin-top:auto;font-size:.9rem;color:var(--ink-soft)}.others span{display:inline-flex;align-items:center;gap:5px}.others i{width:10px;height:10px;border-radius:50%}.display{padding:28px;max-width:1200px;margin:0 auto}.display h2{margin:0 0 18px}.piles{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-end}.pile{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:1.2rem}.pile-stack{position:relative;width:90px;height:calc(120px + var(--n) * 3px)}.pile-card{position:absolute;bottom:0;width:90px;height:120px;border-radius:10px;border:4px solid #f4efe3;display:grid;place-items:center;box-shadow:0 calc(var(--n) * 3px) 0 -2px #d9d2bf,0 calc(var(--n) * 3px + 2px) 0 -2px #2a2f2c}.pile-card.back{background:repeating-linear-gradient(45deg,#5b4a7a 0 8px,#4e3f6a 8px 16px)}.houses{display:grid;grid-template-columns:repeat(8,14px);gap:4px}.houses i{width:14px;height:14px;border-radius:3px;background:#4f8f4a;border:1px solid #1a201d}.hotels{grid-template-columns:repeat(6,22px)}.hotels i{width:22px;background:var(--danger)}.unsold{display:flex;flex-wrap:wrap;gap:8px}.unsold span{border-left:8px solid;background:var(--tray);padding:8px 12px;border-radius:6px}.display-row{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0}.display-player{display:flex;flex-direction:column;gap:2px;padding:12px 16px;border-left:6px solid;background:var(--tray);border-radius:10px;min-width:160px}.display-log p{margin:4px 0;color:var(--ink-soft)}.tray-prompt{font-size:15px;line-height:1.2;color:var(--ink-soft);text-align:right;height:40px;overflow:hidden;display:flex;align-items:center;justify-content:flex-end;font-family:inherit}.tray-prompt.on{color:var(--accent);font-weight:650}.t-score{font-size:14px;font-weight:700;fill:var(--ink)}
