:root{--paper:#f5f1e7;--ink:#243b3c;--muted:#79857e;--line:#d9dfd3;--green:#245c56;--lime:#e4ecae;--gold:#e8bc64;--red:#a34a3e;--tile:clamp(32px,6.1vw,73px)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.6 "Segoe UI","Microsoft YaHei",sans-serif}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;border-radius:9px;padding:11px 17px;min-height:44px;font-weight:600}button:disabled{opacity:.42;cursor:wait}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c58d31;outline-offset:3px}[hidden]{display:none!important}.top{height:96px;max-width:1510px;margin:auto;padding:0 38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.back{font-size:10px;letter-spacing:2px}.brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:800}.brand-mark{display:grid;place-items:center;background:var(--green);color:var(--lime);height:48px;width:48px;border-radius:50%;font-size:25px}.brand small{display:block;letter-spacing:2px;font-size:9px;font-weight:500;line-height:1.3}.top-right{display:flex;align-items:center;gap:14px}.network{font-size:11px;color:var(--muted)}.network.online{color:var(--green)}.network.offline{color:var(--red)}.primary{background:var(--green);color:#fff}.primary:hover{background:#174740}.primary span{float:right}.secondary{background:#e7eadd;color:var(--green);border:1px solid #d6ddcc}.quiet{background:transparent;color:var(--green);padding:8px 10px}.quiet:hover{background:#e6e8db}.full{width:100%}.danger{color:var(--red)}.primary.danger{background:var(--red);color:#fff}main{max-width:1430px;margin:auto;padding:40px 32px 60px}.welcome{display:grid;grid-template-columns:1.2fr 1fr;gap:45px 80px}.intro{padding-top:32px;position:relative}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:600;color:var(--green);margin:0 0 18px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(32px,4vw,56px);line-height:1.3;letter-spacing:-2px;margin-bottom:22px}h2{font-size:20px;letter-spacing:-.5px}h3{font-size:15px}.lead{font-size:16px;line-height:1.9;color:#61716b;max-width:470px}.intro-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.intro-tags span{border:1px solid #cbd4c6;padding:5px 11px;border-radius:30px;font-size:11px}.intro-note{font-size:11px;color:var(--muted);margin:15px 0}.city-art{height:205px;max-width:550px;position:relative;overflow:hidden;margin-top:20px;border-bottom:1px solid #879b88}.sun{position:absolute;width:125px;height:125px;background:#e9c570;border-radius:50%;left:34%;bottom:50px}.tower{position:absolute;bottom:29px;background:repeating-linear-gradient(0deg,transparent 0 14px,#f4f1dc88 14px 18px),repeating-linear-gradient(90deg,transparent 0 16px,#f4f1dc66 16px 20px),#7ea095;border:7px solid #7ea095}.t1{left:4%;width:16%;height:91px;border-radius:40px 40px 0 0}.t2{left:24%;width:18%;height:144px;background-color:#426e64;border-color:#426e64}.t3{left:46%;width:12%;height:114px}.t4{left:62%;width:17%;height:173px;background-color:#b5bd89;border-color:#b5bd89;clip-path:polygon(50% 0,100% 18%,100% 100%,0 100%,0 18%)}.t5{left:82%;width:15%;height:75px;background-color:#526f6d;border-color:#526f6d}.city-road{position:absolute;bottom:0;width:100%;height:28px;font-size:8px;letter-spacing:2px;display:flex;justify-content:space-around;align-items:center;color:#657b69}.city-road span{font-size:20px}.entry-card{background:#fffdf5;border:1px solid var(--line);padding:32px;border-radius:18px;box-shadow:0 14px 40px #193c3010}.entry-card h2{font-size:28px;margin-bottom:24px}label{display:block;font-size:12px;font-weight:600;margin:0 0 16px}input,select{width:100%;height:45px;background:#fbfaf5;border:1px solid #d2d9cb;border-radius:8px;padding:9px 12px;color:var(--ink);margin-top:7px}input[type=checkbox]{width:17px;height:17px;accent-color:var(--green);margin:0}.check{display:flex;align-items:center;gap:9px;margin:20px 0}.entry-tabs{display:flex;border-bottom:1px solid var(--line);margin:20px 0}.entry-tabs button{flex:1;border-radius:0;background:none;color:var(--muted);border-bottom:2px solid transparent}.entry-tabs button.active{color:var(--green);border-color:var(--green)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hint{font-size:11px;color:var(--muted);line-height:1.9}.muted{color:var(--muted);font-size:12px}.code-input{font:24px monospace;letter-spacing:5px;text-transform:uppercase}#resume{margin-top:12px}.error{color:var(--red);font-size:12px;margin:12px 0 0}.public-rooms{grid-column:1/-1;border-top:1px solid var(--line);padding-top:24px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:15px}.section-title h2{font-size:16px;margin:0}.section-title h2 small{font-weight:400;color:var(--muted);font-size:11px;margin-left:12px}.room-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.room-item{text-align:left;background:#e8ebdf;border:1px solid var(--line);padding:18px}.room-item strong{display:block;font-size:15px}.room-item small{font-weight:400;color:#6f7c70}.room-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.room-heading h1{font-size:29px;margin:0;letter-spacing:-1px}.room-heading .eyebrow{margin-bottom:6px}.room-tools{display:flex;align-items:center;gap:8px}.room-code{font:18px monospace;letter-spacing:3px;padding:8px 10px;background:#e6e9dc;border-radius:7px}.lobby{display:grid;grid-template-columns:1fr 300px;gap:28px}.lobby-main{border:1px solid var(--line);border-radius:15px;background:#fffdf5;padding:28px}.seats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.seat{border:1px solid var(--line);background:#f5f5eb;border-radius:12px;text-align:center;padding:25px 8px;min-height:180px}.seat-token{font-size:30px;display:block;margin:8px auto 15px}.seat strong{font-size:14px;display:block;overflow-wrap:anywhere}.seat small{color:var(--muted);font-size:10px;display:block}.seat button{font-size:10px;min-height:35px;padding:6px}.seat.empty{border-style:dashed;color:#a6b0a2;display:grid;place-content:center}.lobby-bottom{display:flex;align-items:center;justify-content:flex-end;gap:12px;border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.lobby-bottom p{margin:0 auto 0 0;font-size:11px}.lobby-notes{padding:25px;border-radius:15px;background:#e3e8d5}.lobby-notes h2{font-size:25px;margin-top:15px}.lobby-notes p{font-size:12px;color:#627564}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}.board-wrap{min-width:0}.board-top{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;margin:0 2px 10px;color:var(--muted)}.board{display:grid;grid-template:repeat(11,minmax(0,1fr))/repeat(11,minmax(0,1fr));aspect-ratio:1;border:5px solid #35564b;border-radius:8px;background:#35564b;gap:1px;position:relative;box-shadow:0 10px 35px #193d2515}.tile{border-radius:0;padding:2px;min-height:0;min-width:0;background:#f7f5e9;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden;color:#354d45;font-size:clamp(7px,.8vw,11px);line-height:1.18;font-weight:500}.tile:focus-visible{z-index:3;outline-offset:-3px}.tile:hover{background:#fffdef}.tile .band{position:absolute;top:0;left:0;width:100%;height:12%;background:var(--group,#d8e0cf)}.tile .tile-name{margin-top:6px;max-width:100%;overflow-wrap:anywhere}.tile .price{font-size:8px;color:#929985}.tile.special{background:#e4e9d3}.tile.special .tile-name{font-weight:700}.tile .owner{position:absolute;bottom:0;left:0;width:100%;height:3px;background:var(--owner)}.tile .buildings{position:absolute;top:0;right:0;font-size:8px;background:#fff9;color:#356b4e;line-height:1}.tile .mortgaged{position:absolute;top:1px;left:2px;color:var(--red);font-size:9px}.tokens{display:flex;flex-wrap:wrap;gap:1px;justify-content:center;line-height:1;font-size:clamp(9px,1vw,15px);position:relative;z-index:2;min-height:10px}.token{filter:drop-shadow(0 1px 0 white);-webkit-text-stroke:.5px #fff}.token.moved{animation:arrive .6s ease-out}.tile.current-tile{box-shadow:inset 0 0 0 2px #c89834}.board-center{grid-area:2/2/11/11;background:#e8eddb;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4%;text-align:center;position:relative;overflow:auto;gap:10px}.board-center:before{content:'';position:absolute;width:65%;aspect-ratio:1;border:1px solid #b7c8b455;border-radius:50%;pointer-events:none}.center-logo{font-size:clamp(22px,4vw,50px);font-weight:900;letter-spacing:-3px;line-height:1.1;transform:rotate(-7deg);color:#2d5f52;margin:0 0 4px}.center-logo span{color:#81975c}.center-logo small{display:block;font-size:9px;letter-spacing:4px;line-height:2}.city-event{background:#dce4c9;border:1px solid #c5d2b4;border-radius:7px;padding:7px 14px;font-size:11px;position:relative;max-width:95%}.city-event strong{display:block}.turn-info{font-size:16px;font-weight:700;position:relative}.turn-info small{display:block;font-size:11px;color:#71816c;font-weight:400}.dice{display:flex;gap:10px;position:relative}.dice span{display:grid;place-items:center;width:45px;height:45px;border-radius:10px;background:#fffdf3;box-shadow:0 3px 0 #b2bfa8;font-size:32px;line-height:1;color:#31564a}.dice.rolling{animation:shake .5s}.actions{position:relative;max-width:100%;width:360px}.action-row{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}.actions button{font-size:13px}.actions p{font-size:12px;margin:5px 0 10px}.actions .hint{font-size:10px}.voucher-row{display:flex;gap:4px;align-items:center;justify-content:center;margin-bottom:10px}.voucher-row button{min-height:32px;padding:4px 12px;background:#f4f5e8;font-size:11px}.voucher-row button.selected{background:#d7be77;color:#3a4530}.auction-input{display:flex;gap:6px;justify-content:center;max-width:300px;margin:8px auto}.auction-input input{margin:0;width:100px}.auction-input button{padding:8px 12px}.actions select{height:36px;font-size:11px;margin-bottom:6px}.last-card{max-width:90%;font-size:10px;color:#6a7b66;position:relative}.last-card strong{font-weight:600}.center-foot{font-size:9px;color:#8c9b83;letter-spacing:2px;margin-top:4px;position:relative}.board-note{font-size:10px;color:var(--muted);text-align:center;margin:12px 0 18px}.game-side{display:flex;flex-direction:column;gap:16px}.panel{border:1px solid var(--line);border-radius:12px;padding:18px;background:#fffdf4}.panel .section-title h2{font-size:14px}.panel .quiet{font-size:11px;min-height:30px;padding:4px}.player-row{display:flex;gap:11px;align-items:center;padding:12px 7px;border-top:1px solid #e4e7db;border-left:3px solid transparent}.player-row.active{border-left-color:var(--seat);background:#edf0e1;border-radius:5px}.player-row.out{opacity:.45}.player-token{font-size:22px;color:var(--seat)}.player-detail{flex:1;min-width:0}.player-detail strong{font-size:12px;display:block;overflow-wrap:anywhere}.player-detail small{color:var(--muted);font-size:9px}.player-money{text-align:right;font-size:16px;font-variant-numeric:tabular-nums;font-weight:700}.player-money small{display:block;font-size:9px;font-weight:400;color:var(--muted)}.asset-group{margin-top:12px}.asset-group h3{font-size:10px;letter-spacing:1px;margin:0 0 5px;color:var(--muted)}.asset-chip{border-radius:5px;border-left:5px solid var(--group,#c2ccb5);padding:8px 9px;min-height:35px;margin:3px 3px 0 0;background:#edf0e3;font-size:11px}.logs{margin:0;padding:0;list-style:none;max-height:300px;overflow:auto;scrollbar-width:thin}.logs li{font-size:11px;color:#75816e;border-top:1px solid #e7eadf;padding:8px 0}.logs li:first-child{color:var(--ink)}.offers{display:grid;gap:10px}.offer{padding:18px;border:1px solid #c3d0ae;border-radius:10px;background:#eef1dc}.offer h3{margin:0 0 8px}.offer p{font-size:12px;margin-bottom:8px}.offer button{margin-right:7px}.toast{position:fixed;left:50%;bottom:35px;transform:translate(-50%,15px);background:#213f38;color:#fff9e6;padding:13px 24px;border-radius:9px;box-shadow:0 5px 25px #16302330;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:90%;font-size:12px}.toast.show{opacity:1;transform:translate(-50%,0)}.pending-bar{position:fixed;bottom:0;left:0;right:0;background:#e8cd86;color:#544a2c;padding:9px;text-align:center;font-size:11px;z-index:90}dialog{width:min(560px,calc(100% - 28px));max-height:86dvh;border:1px solid #bbc9ad;background:#fffdf4;border-radius:16px;padding:26px;color:var(--ink);box-shadow:0 30px 100px #142d3944}dialog::backdrop{background:#17372e88;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.dialog-head h2{margin:0;font-size:23px}.close{font-size:25px;background:#e9ecdf;min-width:40px;min-height:40px;padding:0;line-height:1}.deed-strip{height:15px;border-radius:5px;margin-bottom:20px}.deed-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.deed-summary div{padding:12px;background:#edf0e2;border-radius:7px;text-align:center;font-size:16px;font-weight:600}.deed-summary small{display:block;color:var(--muted);font-size:10px;font-weight:400}.rent-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:20px}.rent-table td{padding:7px 4px;border-bottom:1px solid var(--line)}.rent-table td:last-child{text-align:right}.rent-table tr.chosen{color:var(--green);font-weight:700;background:#e8edd8}.deed-actions{display:flex;gap:8px;flex-wrap:wrap}.deed-actions button{font-size:12px}.trade-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}.trade-column{padding:13px;border:1px solid var(--line);border-radius:8px}.trade-column h3{margin-bottom:12px}.trade-props{max-height:220px;overflow:auto}.trade-props .check{font-weight:400;margin:10px 0;font-size:11px;align-items:flex-start}.rules-dialog{width:min(720px,calc(100% - 28px))}.rules-content details{border-top:1px solid var(--line);padding:15px 0}.rules-content summary{font-size:14px;font-weight:700;cursor:pointer}.rules-content details p{font-size:12px;color:#6b7e6d;margin:13px 0 0}.rules-content .lead{font-size:14px}.result{background:#edf1d8;border:1px solid #bbcba0;border-radius:10px;padding:13px;font-size:13px}footer{max-width:1430px;margin:auto;padding:25px 32px;border-top:1px solid var(--line);font-size:9px;letter-spacing:2px;display:flex;justify-content:space-between;gap:15px;color:#82907d}footer span{letter-spacing:0}@keyframes arrive{from{transform:scale(2.1);opacity:.3}to{transform:scale(1);opacity:1}}@keyframes shake{0%,100%{transform:rotate(0)}25%{transform:rotate(8deg)}75%{transform:rotate(-8deg)}}@media(min-width:1500px){.game-layout{grid-template-columns:950px 330px}}@media(max-width:1100px){.welcome{gap:40px}.game-layout{grid-template-columns:minmax(0,1fr) 265px}.panel{padding:13px}.lobby{grid-template-columns:1fr}.lobby-notes{display:none}.center-logo{font-size:33px}.board-center{gap:6px}.last-card{font-size:9px}.city-event{font-size:10px;padding:4px 8px}.turn-info{font-size:14px}.dice span{width:36px;height:36px;font-size:27px}.actions button{padding:8px 12px;min-height:39px}}@media(max-width:850px){.top{height:78px;padding:0 20px}.back{display:none}.brand{font-size:18px}.brand-mark{width:40px;height:40px;font-size:22px}.network{font-size:10px}.top-right{gap:4px}.top-right button{font-size:11px}main{padding:25px 18px 40px}.welcome{grid-template-columns:1fr;gap:28px}.intro{padding-top:6px}.intro h1{font-size:39px}.intro .lead{max-width:550px}.city-art{height:170px;max-width:100%}.intro-note{display:none}.entry-card{padding:25px}.public-rooms{grid-column:auto}.game-layout{grid-template-columns:1fr;gap:16px}.board{max-width:790px;margin:auto}.tile{font-size:clamp(7px,1.35vw,11px)}.tokens{font-size:clamp(10px,2vw,17px)}.center-logo{font-size:clamp(29px,5vw,45px)}.game-side{display:grid;grid-template-columns:1fr 1fr;align-items:start}.log-panel{grid-column:1/-1}.logs{max-height:200px}.room-heading{flex-wrap:wrap;gap:14px}.room-tools{flex-wrap:wrap}.room-heading h1{font-size:26px}.seats{gap:7px}.seat{padding:16px 5px;min-height:160px}.seat-token{font-size:23px}.seat strong{font-size:11px}.board-center{gap:10px}.city-event{font-size:11px}.turn-info{font-size:16px}.dice span{height:40px;width:40px}.actions button{min-height:44px}.last-card{font-size:10px}}@media(max-width:480px){.brand small{font-size:7px;letter-spacing:1px}.brand{gap:7px}.top{padding:0 12px}.network{max-width:95px}.top-right button{padding:5px}.welcome .intro{padding:5px}.intro h1{font-size:34px}.lead{font-size:14px}.intro-tags span{font-size:10px;padding:5px 8px}.city-art{height:150px}.t4{height:135px}.t2{height:114px}.entry-card{padding:22px 18px}.entry-card h2{font-size:24px}.form-grid{gap:10px}main{padding:20px 9px 30px}.room-heading{padding:0 7px}.room-code{font-size:15px}.room-tools{gap:4px}.room-tools button{font-size:11px;padding:8px}.lobby-main{padding:17px 12px}.seats{grid-template-columns:repeat(3,1fr)}.seat{min-height:130px}.lobby-bottom{flex-wrap:wrap}.lobby-bottom p{width:100%}.board{border-width:3px;border-radius:5px}.tile{gap:0;font-size:7px;line-height:1.15}.tile .tile-name{margin-top:3px}.tile .price{font-size:6px}.tile .buildings{font-size:6px}.tile .tokens{font-size:10px;min-height:8px}.board-center{padding:2%;gap:5px;justify-content:center;overflow:auto}.center-logo{font-size:25px;margin-bottom:0;letter-spacing:-2px}.center-logo small{font-size:6px;letter-spacing:3px;line-height:1.3}.city-event{font-size:8px;padding:3px 6px;line-height:1.35;max-width:98%}.turn-info{font-size:12px;line-height:1.35}.turn-info small{font-size:8px}.dice{gap:6px}.dice span{width:28px;height:28px;border-radius:6px;font-size:21px;box-shadow:0 2px 0 #b2bfa8}.actions button{font-size:10px;min-height:40px;padding:7px 10px}.actions p{font-size:10px;margin:3px 0 5px}.actions .hint{font-size:8px}.voucher-row{margin-bottom:5px;gap:3px;font-size:9px}.voucher-row button{min-height:28px;padding:3px 8px;font-size:9px}.last-card{font-size:8px;line-height:1.3;max-width:95%}.center-foot{display:none}.auction-input{margin:4px auto;gap:4px}.auction-input input{height:36px;width:75px;font-size:12px;padding:5px}.auction-input button{min-height:36px}.action-row{gap:5px}.board-top{font-size:9px;margin:0 3px 7px}.board-note{font-size:8px}.game-side{gap:10px;grid-template-columns:1fr}.panel{padding:16px}.log-panel{grid-column:auto}.player-row{padding:9px 5px}.panel #players{display:grid;grid-template-columns:1fr 1fr;gap:4px}.player-money{font-size:13px}.player-detail small{font-size:8px}.player-row{gap:6px}.player-token{font-size:17px}.player-detail strong{font-size:10px}.player-money small{font-size:7px}.player-row.active{border-left-width:2px}.trade-grid{gap:9px}.trade-column{padding:9px}.deed-summary div{font-size:14px;padding:10px}dialog{padding:20px}.dialog-head h2{font-size:21px}footer{padding:22px 18px;font-size:8px;letter-spacing:1px}footer span{display:none}.pending-bar{font-size:10px;padding:6px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
