:root{--paper:#eef2f7;--paper-light:#fff;--ink:#2f3640;--anil:#0b2a5b;--terracota:#0b2a5b;--coffee:#4a5563;--coast:#1e4e8c;--gold:#c9a24a;--font-display:"Fraunces", serif;--font-body:"Space Grotesk", sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior-y:none}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);touch-action:manipulation;background-image:repeating-linear-gradient(45deg,#1a161305 0 2px,#0000 2px 12px);margin:0}.app-shell{background:var(--paper);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;position:relative}.screen{padding:24px 20px;padding-top:calc(24px + var(--safe-top));flex:1;justify-content:center;align-items:center;display:flex}.brand-eyebrow{font-family:var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--terracota);font-size:12px;font-weight:600}.brand-title{font-family:var(--font-display);color:var(--ink);margin:6px 0 4px;font-size:34px;font-weight:700;line-height:1.1}.brand-sub{color:var(--coffee);margin-bottom:20px;font-size:14px}.home-card,.lobby-card{background:var(--paper-light);border:2px solid var(--ink);width:100%;box-shadow:5px 5px 0 var(--ink);border-radius:18px;padding:28px 22px}.input{border:2px solid var(--ink);width:100%;font-family:var(--font-body);background:#fff;border-radius:10px;margin-bottom:12px;padding:14px;font-size:16px}.btn{border:2px solid var(--ink);width:100%;font-family:var(--font-body);cursor:pointer;border-radius:12px;min-height:48px;padding:14px 16px;font-size:15px;font-weight:600;transition:transform 80ms}.btn:active{transform:translateY(1px)scale(.99)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--terracota);color:var(--paper-light)}.btn-secondary{background:var(--paper-light);color:var(--ink)}.btn-big{padding:16px;font-size:17px}.btn-half{flex:1;width:auto}.btn-mini{border:1.5px solid var(--ink);background:var(--gold);font-family:var(--font-body);cursor:pointer;border-radius:8px;min-height:36px;padding:8px 12px;font-size:12px;font-weight:600}.btn-mini:disabled{opacity:.4;cursor:not-allowed}.divider{text-align:center;color:var(--coffee);margin:16px 0;font-size:12px}.join-row{gap:8px;display:flex}.join-row .input{margin-bottom:0}.join-row .btn-secondary{flex-shrink:0;width:auto;padding-left:18px;padding-right:18px}.error-msg{color:var(--terracota);margin-top:12px;font-size:13px;font-weight:600}.room-code{font-family:var(--font-display);letter-spacing:.08em;margin:4px 0 8px;font-size:40px}.player-list{margin:0;padding:0;list-style:none}.player-list-item{border-bottom:1px solid #1a16131a;align-items:center;gap:8px;padding:10px 0;font-size:14px;display:flex}.player-list-item.is-current{font-weight:700}.player-list-item.is-bankrupt{opacity:.4;text-decoration:line-through}.player-name{flex:1}.player-cash{color:var(--coffee);font-weight:600}.jail-tag{font-size:12px}.token-mini{border:1.5px solid var(--ink);border-radius:50%;flex-shrink:0;width:14px;height:14px;display:inline-block}.host-tag{background:var(--gold);border-radius:6px;margin-left:6px;padding:2px 6px;font-size:10px}.waiting-msg{color:var(--coffee);font-size:13px}.game-shell{padding-top:var(--safe-top);padding-bottom:var(--safe-bottom)}.top-bar{font-family:var(--font-display);background:var(--ink);color:var(--paper-light);justify-content:space-between;align-items:center;padding:10px 14px;font-size:15px;font-weight:700;display:flex}.top-bar-cash{color:var(--gold)}.board-grid{aspect-ratio:1;background:var(--paper-light);grid-template-rows:repeat(11,1fr);grid-template-columns:repeat(11,1fr);width:100%;display:grid;position:relative}.board-viewport{aspect-ratio:1;border-bottom:3px solid var(--ink);flex-shrink:0;width:100%;position:relative;overflow:hidden}.board-scaler{will-change:transform;width:200%;height:200%;transition:transform .35s cubic-bezier(.4,0,.2,1)}.quad-arrow{z-index:10;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);touch-action:manipulation;background:#0b2a5bad;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;transition:background .12s,transform 80ms;display:flex;position:absolute}.quad-arrow:active{background:#0b2a5beb;transform:scale(.92)}.quad-arrow-up{top:8px;left:50%;transform:translate(-50%)}.quad-arrow-up:active{transform:translate(-50%)scale(.92)}.quad-arrow-down{bottom:8px;left:50%;transform:translate(-50%)}.quad-arrow-down:active{transform:translate(-50%)scale(.92)}.quad-arrow-left{top:50%;left:8px;transform:translateY(-50%)}.quad-arrow-left:active{transform:translateY(-50%)scale(.92)}.quad-arrow-right{top:50%;right:8px;transform:translateY(-50%)}.quad-arrow-right:active{transform:translateY(-50%)scale(.92)}.quad-zoom-btn{z-index:12;color:#fff;border:1.5px solid var(--gold);font-family:var(--font-body);cursor:pointer;-webkit-backdrop-filter:blur(6px);background:#0b2a5be6;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700;transition:transform .1s,background .15s,top .2s,bottom .2s,left .2s,right .2s;position:absolute;top:12px;left:12px;box-shadow:0 2px 6px #0000004d}.quad-zoom-btn:active{background:var(--anil);transform:scale(.95)}.quad-zoom-btn-q0{inset:12px auto auto 58px}.quad-zoom-btn-q1{inset:12px 58px auto auto}.quad-zoom-btn-q2{inset:auto 58px 12px auto}.quad-zoom-btn-q3{inset:auto auto 12px 58px}.space{background:var(--paper-light);cursor:pointer;border:.5px solid #1a161359;flex-direction:column;display:flex;position:relative;overflow:hidden}.space-color-bar{flex-shrink:0;width:100%;height:7px}.space-body{text-align:center;flex-direction:column;flex:1;justify-content:space-evenly;align-items:center;gap:0;min-height:0;padding:1px 1.5px;display:flex;overflow:hidden}.space-name{letter-spacing:-.01em;text-transform:uppercase;color:var(--ink);word-break:break-word;-webkit-hyphens:auto;hyphens:auto;max-width:100%;font-size:clamp(7.5px,2.1vw,9.5px);font-weight:700;line-height:1.02}.space-price{color:var(--coast);font-size:clamp(7px,1.8vw,9.5px);font-weight:800;line-height:1}.space-icon{margin:0;font-size:clamp(14px,3.2vw,20px);line-height:1}.space-houses{letter-spacing:-1px;margin:0;font-size:clamp(10px,2.2vw,14px);line-height:1}.space-owner-dot{border:1.5px solid var(--ink);z-index:3;border-radius:50%;width:16px;height:16px;position:absolute;top:3px;right:3px;box-shadow:0 1px 4px #0000004d}.space-tokens{z-index:4;pointer-events:none;flex-wrap:wrap;gap:2px;max-width:calc(100% - 4px);display:flex;position:absolute;bottom:2px;left:2px}.token{border:2px solid var(--ink);color:#fff;opacity:.8;-webkit-backdrop-filter:blur(2px);pointer-events:auto;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;font-weight:800;transition:opacity .15s,transform .15s;display:flex;box-shadow:0 2px 5px #00000059}.token:hover,.token:active{opacity:1;transform:scale(1.1)}.board-center{border:1px dashed #1a16134d;justify-content:center;align-items:center;display:flex}.board-center-badge{flex-direction:column;align-items:center;display:flex;transform:rotate(-6deg)}.board-center-eyebrow{font-family:var(--font-body);letter-spacing:.16em;color:var(--terracota);text-transform:uppercase;font-size:9px;font-weight:600}.board-center-title{font-family:var(--font-display);color:var(--anil);text-align:center;font-size:clamp(16px,6vw,26px);font-weight:700}.action-bar{background:var(--paper-light);border-bottom:2px solid var(--ink);z-index:5;flex-direction:column;gap:8px;padding:10px 14px 12px;display:flex;position:sticky;top:0}.action-bar-turn{align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.action-bar-name{flex:1}.dice-mini{color:var(--coffee);font-size:13px;font-weight:700}.auction-summary{color:var(--coffee);justify-content:space-between;gap:8px;font-size:12.5px;font-weight:600;display:flex}.auction-summary span:last-child{color:var(--anil)}.auction-input-row{align-items:center;gap:8px;display:flex}.auction-input{flex:1;min-width:0;margin-bottom:0;padding-top:12px;padding-bottom:12px}.auction-plus-btn{background:var(--gold);min-width:72px;color:var(--ink);flex-shrink:0}.action-buy-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.action-buy-text{width:100%;font-size:12.5px;font-weight:600}.waiting-msg-inline{color:var(--coffee);margin:4px 0 0;font-size:13px}.tab-bar{border-bottom:2px solid var(--ink);background:var(--paper-light);display:flex}.tab-btn{cursor:pointer;color:var(--coffee);background:0 0;border:none;border-top:3px solid #0000;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 4px 10px;font-size:17px;display:flex}.tab-btn span{font-size:10px;font-weight:600;font-family:var(--font-body)}.tab-btn.active{color:var(--terracota);border-top-color:var(--terracota);background:#0b2a5b14}.tab-panel{padding:14px 16px calc(20px + var(--safe-bottom));flex:1;overflow-y:auto}.log-list{color:var(--coffee);flex-direction:column;gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.prop-list{margin:0;padding:0;list-style:none}.prop-list-item{border-bottom:1px solid #1a161314;justify-content:space-between;align-items:center;padding:10px 0;font-size:14px;display:flex}.prop-empty{color:var(--coffee);padding:8px 0;font-size:13px}.chat-block{flex-direction:column;height:100%;display:flex}.chat-messages{flex-direction:column;flex:1;gap:6px;margin-bottom:10px;font-size:13px;display:flex;overflow-y:auto}.chat-input-row{gap:6px;display:flex}.chat-input-row .input{margin-bottom:0}.sheet-backdrop{z-index:9999;background:#1a1613a6;justify-content:center;align-items:flex-end;animation:.15s ease-out sheet-fade-in;display:flex;position:fixed;inset:0}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}.sheet-card{background:var(--paper-light);border-top:3px solid var(--ink);width:100%;max-width:480px;padding-bottom:calc(16px + var(--safe-bottom));border-top-left-radius:16px;border-top-right-radius:16px;animation:.2s ease-out sheet-slide-up;overflow:hidden}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-handle{background:#1a161340;border-radius:2px;width:36px;height:4px;margin:10px auto 4px}.sheet-color-bar{width:100%;height:8px}.sheet-body{padding:14px 18px 4px}.sheet-title{font-family:var(--font-display);margin:0 0 2px;font-size:20px}.sheet-group{color:var(--coffee);margin:0 0 12px;font-size:12px}.sheet-row{border-bottom:1px solid #1a16131f;justify-content:space-between;margin:0;padding:8px 0;font-size:14px;display:flex}.sheet-row span:first-child{color:var(--coffee)}.sheet-row span:last-child{font-weight:700}.sheet-note{color:var(--coffee);margin:0;padding:8px 0;font-size:13px}.sheet-close{width:calc(100% - 36px);margin:14px 18px 0}.prop-mortgaged{opacity:.55}.mortgage-tag{background:var(--coffee);color:var(--paper-light);vertical-align:middle;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:10px;display:inline-block}.house-count{color:var(--coffee);margin-left:4px;font-size:11px}.prop-label{flex:1;min-width:0}.prop-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:4px;display:flex}.trade-panel{flex-direction:column;gap:10px;display:flex}.trade-section-title{font-family:var(--font-display);color:var(--anil);border-bottom:2px solid var(--anil);margin-bottom:4px;padding-bottom:4px;font-size:15px;font-weight:700}.trade-card{background:var(--paper-light);border:2px solid var(--ink);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex;box-shadow:3px 3px #2f36401f}.trade-card-header{justify-content:space-between;align-items:center;display:flex}.trade-with{color:var(--anil);font-size:13px;font-weight:700}.trade-id{color:var(--coffee);font-size:11px}.trade-sides{align-items:flex-start;gap:6px;display:flex}.trade-side{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.trade-side-label{text-transform:uppercase;letter-spacing:.08em;color:var(--coffee);font-size:10px;font-weight:700}.trade-side-value{color:var(--ink);word-break:break-word;font-size:12px;font-weight:600}.trade-arrow{color:var(--gold);flex-shrink:0;align-self:center;font-size:18px;font-weight:700}.trade-card-actions{gap:8px;display:flex}.trade-label{color:var(--coffee);margin-top:8px;margin-bottom:4px;font-size:12px;font-weight:600;display:block}.trade-select{margin-bottom:4px;padding-top:10px;padding-bottom:10px;font-size:14px}.trade-num{margin-bottom:0;padding-top:10px;padding-bottom:10px;font-size:14px}.trade-cols{gap:10px;margin-top:4px;display:flex}.trade-col{background:#0b2a5b0a;border:1.5px solid #2f36401f;border-radius:10px;flex:1;min-width:0;padding:10px 10px 12px}.trade-col-header{text-transform:uppercase;letter-spacing:.08em;color:var(--anil);margin-bottom:6px;font-size:12px;font-weight:700}.trade-check-row{cursor:pointer;color:var(--ink);align-items:center;gap:6px;padding:4px 0;font-size:12px;display:flex}.trade-check-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--anil);cursor:pointer;flex-shrink:0}.trade-error{color:var(--terracota);background:#0b2a5b0f;border-radius:8px;margin-top:6px;padding:8px 10px;font-size:12px;font-weight:600}.unread-badge{color:#fff;vertical-align:middle;background:#d73a3a;border-radius:10px;justify-content:center;align-items:center;min-width:15px;height:15px;margin-left:3px;padding:0 4px;font-size:9px;font-weight:800;display:inline-flex}.prop-name-text{font-weight:700}.group-progress{color:var(--terracota);margin-left:6px;font-size:11px;font-weight:600}.log-card{background:var(--paper-light);border:1.5px solid #2f36401f;border-left:4px solid var(--coffee);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:13px;line-height:1.35;transition:transform .1s;display:flex;box-shadow:0 2px 5px #0000000d}.log-card-rent,.log-card-tax,.log-card-bankrupt{background:#d73a3a0d;border-left-color:#d73a3a}.log-card-buy,.log-card-win,.log-card-parking{background:#2e7d460d;border-left-color:#2e7d46}.log-card-trade,.log-card-auction,.log-card-card{background:#1e4e8c0d;border-left-color:#1e4e8c}.log-card-roll{border-left-color:var(--coffee);background:var(--paper-light)}.log-icon{flex-shrink:0;margin-top:1px;font-size:20px;line-height:1}.log-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.log-text{color:var(--ink);word-break:break-word;font-weight:500}.log-player-badge{color:#fff;vertical-align:middle;border-radius:6px;align-items:center;margin:0 3px;padding:1px 7px;font-size:11px;font-weight:700;display:inline-flex;box-shadow:0 1px 3px #0003}.log-cash-pill{color:#1a1613;vertical-align:middle;background:#c9a24a;border:1px solid #00000026;border-radius:5px;align-items:center;margin:0 2px;padding:1px 6px;font-size:11.5px;font-weight:800;display:inline-flex}.log-time{color:var(--coffee);opacity:.75;align-self:flex-end;font-size:10px}.trade-pulse-dot{vertical-align:middle;background:#e84118;border-radius:50%;width:8px;height:8px;margin-left:4px;animation:1.2s ease-in-out infinite trade-pulse-anim;display:inline-block;box-shadow:0 0 6px #e84118}@keyframes trade-pulse-anim{0%{opacity:.5;transform:scale(.9);box-shadow:0 0 2px #e84118}50%{opacity:1;transform:scale(1.3);box-shadow:0 0 10px #e84118}to{opacity:.5;transform:scale(.9);box-shadow:0 0 2px #e84118}}.trade-spectator-badge{color:var(--coffee);background:#2f364014;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:600}.card-modal-body{background:var(--paper-light);border:3px solid var(--ink);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:16px;width:90%;max-width:360px;padding:20px;animation:.25s cubic-bezier(.175,.885,.32,1.275) card-pop-in;display:flex;box-shadow:0 10px 30px #00000080}@keyframes card-pop-in{0%{opacity:0;transform:scale(.7)translateY(30px)}to{opacity:1;transform:scale(1)translateY(0)}}.card-modal-chance{background:linear-gradient(185deg,#fff9f2 0%,#fdf2e9 100%);border-color:#e67e22}.card-modal-chest{background:linear-gradient(185deg,#f4f9fd 0%,#ebf5fb 100%);border-color:#2980b9}.card-modal-header{flex-direction:column;align-items:center;gap:4px;display:flex}.card-modal-icon{font-size:40px;line-height:1}.card-modal-header h3{font-family:var(--font-display);letter-spacing:.05em;color:var(--ink);text-transform:uppercase;margin:0;font-size:18px;font-weight:800}.card-modal-content{flex-direction:column;gap:8px;width:100%;display:flex}.card-modal-text{color:var(--ink);background:#ffffffb3;border:1px dashed #2f364033;border-radius:10px;margin:0;padding:12px;font-size:15px;font-weight:600;line-height:1.4}.card-modal-player{color:var(--coffee);margin:0;font-size:12px}.card-modal-btn{width:100%;padding:12px;font-size:15px;font-weight:700}
