*{box-sizing:border-box} :root{font-family:'Trebuchet MS','Segoe UI',sans-serif;color:#254a51;background:#eef7e4;font-synthesis:none}body{margin:0;background:radial-gradient(ellipse at 50% 28%,#fbffe9 0,#e1f0d2 65%,#cbe2cd 100%);min-height:100vh}button,select,input,textarea{font:inherit}button,a,select,input,textarea{outline-offset:4px}button{border:1px solid #c9dbd1;border-radius:12px;padding:10px 15px;color:#34585b;background:#fffdf3;font-weight:800;cursor:pointer;box-shadow:0 3px 0 #c4d4c5}button:hover:enabled{background:#fff5ce;transform:translateY(-1px)}button:disabled{opacity:.45;cursor:default}.primary{color:white;background:#197f7d;border-color:#126d70;box-shadow:0 4px 0 #105b60}.primary:hover:enabled{background:#25978e}.city-app{max-width:1560px;margin:auto;padding:18px 30px 24px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:72px}.back{color:#456965;text-decoration:none;font-size:13px;font-weight:800}.brand{display:flex;gap:12px;align-items:center}.brand>span{background:#267f7c;color:#fff6cf;padding:12px 9px;border-radius:16px;transform:rotate(-8deg);font-size:20px;font-weight:900;box-shadow:0 4px 0 #145c63}.brand h1{margin:0;color:#276c71;font-size:36px;letter-spacing:-1.7px}.brand p{font-size:9px;font-weight:900;letter-spacing:2.3px;margin:1px 0 0}.topbar nav{display:flex;gap:7px}.topbar nav button{font-size:11px;padding:8px}.gamebar{display:flex;gap:14px;align-items:center;background:#ffffffa3;border:1px solid #fff;border-radius:18px;padding:10px 16px;margin:15px 0 20px;box-shadow:0 3px 12px #467e6610;font-size:13px}.pill{background:#e1eee3;border-radius:30px;padding:7px 12px;white-space:nowrap;font-size:11px;font-weight:900;letter-spacing:1px}#turn-label{flex:1;font-weight:800}#clock{font-size:25px;letter-spacing:1px;font-variant-numeric:tabular-nums;color:#23696c}.gamebar button{padding:7px 10px;font-size:12px}.playfield{display:grid;grid-template-columns:170px minmax(0,1fr) 170px;gap:24px;align-items:center}.teams{display:grid;gap:32px}.team-card{--team:#ef936f;position:relative;background:#fffdf4;border:2px solid white;border-radius:21px;padding:18px 12px 14px;text-align:center;box-shadow:0 6px 0 #c8d9bf,0 10px 20px #2c694719}.team-card.active{border-color:var(--team);box-shadow:0 6px 0 var(--team),0 0 0 5px #fff8;transform:translateY(-4px)}.team-card .avatar{width:69px;height:69px;margin:0 auto 8px;border-radius:23px;background:var(--team);box-shadow:inset 0 -6px 0 #0001}.avatar svg{width:100%;height:100%}.team-card h3{margin:6px 0;font-size:16px;overflow-wrap:anywhere}.team-card .coins{display:flex;align-items:center;justify-content:center;gap:7px;font-size:26px;font-weight:900;color:#7a6034}.coin{background:#ffda69;color:#b7811e;border:3px solid #f3c14b;border-radius:50%;width:23px;height:23px;display:inline-grid;place-items:center;font-size:14px}.team-card small{display:block;margin-top:8px;color:#6d8376;font-size:11px}.team-card .turn-tag{font-size:9px;letter-spacing:1.3px;color:#4b6966;font-weight:900;min-height:14px;margin-bottom:7px}.board-shell{padding:14px;background:#e7b96b;border-radius:30px;box-shadow:0 9px 0 #b9874b,0 15px 30px #3e74432b;border:3px solid #fff5c2;transform:perspective(1600px) rotateX(4deg)}.board{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:7px;aspect-ratio:8/6;background:#b1d0a0;border-radius:17px;padding:8px}.tile{position:relative;min-width:0;background:#fffbee;border:2px solid #fff;border-radius:12px;box-shadow:0 4px 0 #a6ae8f;text-align:center;padding:7px 2px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.tile.building{background:#d5f0e5}.tile.chance{background:#f5d8df}.tile.challenge{background:#e4dcfa}.tile.bonus,.tile.start{background:#fff1bd}.tile.penalty{background:#dbe9f1}.tile.owned{border-color:var(--owner);box-shadow:0 4px 0 var(--owner)}.tile-name{font-size:clamp(7px,.73vw,12px);font-weight:900;line-height:1.05}.tile-price{font-size:9px;color:#53726c}.tile-icon{height:24px;width:30px;color:#338b80}.tile-icon svg{height:100%;width:100%}.tile.chance .tile-icon{color:#cf7291}.tile.challenge .tile-icon{color:#8a70bf}.tile.bonus .tile-icon,.tile.start .tile-icon{color:#d3a334}.tile.penalty .tile-icon{color:#6295ab}.tile-number{position:absolute;top:3px;left:5px;color:#48665b99;font-size:7px}.tokens{position:absolute;bottom:-1px;left:0;right:0;display:flex;justify-content:center;gap:1px;pointer-events:none;z-index:2}.token{display:inline-grid;place-items:center;width:19px;height:22px;border:2px solid white;border-radius:9px 9px 6px 6px;background:var(--team);color:#23444a;font-size:11px;font-weight:900;box-shadow:0 3px 1px #38544555;animation:land .2s ease-out}.city-center{grid-column:2/8;grid-row:2/6;display:flex;align-items:center;justify-content:space-between;flex-direction:column;min-height:0;background:radial-gradient(ellipse,#f4f9d5,#d0e6b6);border:2px solid #c5dda7;border-radius:22px;overflow:hidden}.city-label{text-align:center;padding-top:15px;z-index:1}.city-label>span{font-size:8px;color:#5a8970;letter-spacing:2px;font-weight:900}.city-label h2{font-size:clamp(12px,1.6vw,25px);margin:4px 0 0;color:#397665}.city-art{width:90%;flex:1;min-height:0;filter:saturate(.95)}.center-bottom{display:flex;align-items:center;gap:8px;font-size:9px;font-weight:800;color:#5f836b;margin-bottom:11px}.city-seal{border:2px solid #d9bc61;color:#a68b36;border-radius:50%;padding:4px 7px}.control-deck{display:flex;align-items:center;justify-content:space-between;padding:20px 28px;margin:26px auto 0;background:#fffdf2;border:2px solid white;border-radius:22px;box-shadow:0 5px 0 #c4d7bb;max-width:1050px;gap:20px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:900;color:#789182}.control-deck p{font-size:17px;font-weight:800;margin:7px 0 0}.roll-controls{display:flex;align-items:center;gap:15px;flex-shrink:0}#dice{width:52px;height:52px;border-radius:14px;border:2px solid #e2dfc8;background:white;display:grid;place-items:center;font-size:32px;font-weight:900;box-shadow:0 5px 0 #d7d5b9}#dice.rolling{animation:roll .12s infinite}.roll-controls button{padding:17px 28px}.footnote{text-align:center;font-size:10px;color:#6c8979;margin:17px}.history{font-size:12px;max-width:1050px;margin:20px auto;color:#587565}.history summary{cursor:pointer}.history li{margin:5px}dialog{color:#2d5156;border:2px solid white;border-radius:25px;padding:28px;width:min(650px,94vw);max-height:90vh;box-shadow:0 20px 80px #193f5055;background:#fffef3}dialog::backdrop{background:#183d455e;backdrop-filter:blur(5px)}dialog h2{font-size:28px;margin:10px 0 18px;overflow-wrap:anywhere}dialog p{line-height:1.6}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-head h2{margin-bottom:0}.dialog-head button{font-size:11px}.setup-options{display:flex;gap:24px;margin:20px 0}.setup-options label{display:flex;gap:10px;align-items:center}input,select,textarea{border:1px solid #c0d4c5;border-radius:10px;background:white;padding:10px;color:#2b5259}textarea{width:100%;resize:vertical;line-height:1.65;font-size:13px}.name-inputs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:20px}.name-inputs label{display:flex;gap:7px;align-items:center;font-size:12px}.name-inputs input{width:100%;min-width:0}.help{font-size:12px;color:#73867a}#setup-error{color:#b94c43;font-weight:800;font-size:13px;min-height:20px}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.actions button{flex:1;min-width:100px}.answer{padding:18px;background:#e6f1de;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere}.options{display:grid;gap:9px}.options button{text-align:left;font-weight:600}.options button[aria-pressed=true]{border:2px solid #23877f;background:#e2f0df}.answer[hidden]{display:none}.correct{background:#36886d;color:white}.incorrect{background:#fae3d7;color:#9b4b37}.rank-row{display:grid;grid-template-columns:35px 1fr auto;gap:12px;padding:18px 12px;border-radius:14px;background:#eff4e5;margin-bottom:10px;align-items:center}.rank-row:first-child{background:#ffedb3}.rank-row small{display:block;margin-top:5px;font-size:12px;color:#66806b}.rank-row strong{font-size:24px}#storage-warning{text-align:center;color:#a34b3a;font-size:12px}.no-motion *, .no-motion *::before,.no-motion *::after{animation:none!important;transition:none!important}button:focus-visible,a:focus-visible{outline:3px solid #cd853c}@keyframes land{from{transform:translateY(-12px)}to{transform:translateY(0)}}@keyframes roll{50%{transform:rotate(16deg) translateY(-4px)}}@media(min-width:1450px){.city-app{padding-left:45px;padding-right:45px}.board{gap:9px}.tile-icon{height:32px;width:35px}}@media(max-width:1100px){.city-app{padding:12px 15px}.playfield{grid-template-columns:125px minmax(0,1fr) 125px;gap:13px}.teams{gap:22px}.team-card{padding:12px 7px}.team-card h3{font-size:13px}.team-card .avatar{height:51px;width:51px;border-radius:18px}.team-card .coins{font-size:22px}.board-shell{padding:8px;border-radius:22px}.board{gap:5px;padding:5px}.tile{padding:4px 1px;border-radius:8px}.tile-icon{height:20px}.tile-price{font-size:8px}.city-label{padding-top:7px}.brand h1{font-size:30px}.topbar{flex-wrap:wrap}.topbar nav{margin-left:auto}.control-deck{padding:15px 20px}.gamebar{flex-wrap:wrap;gap:9px}}@media(max-width:760px){.playfield{grid-template-columns:1fr 1fr;gap:14px}.board-shell{grid-column:1/-1;grid-row:1}.teams{display:flex;gap:12px}.team-card{flex:1;min-width:0}.team-card .avatar{height:36px;width:36px;float:left;margin:0 6px 0 0;border-radius:12px}.team-card .turn-tag{display:none}.team-card h3{margin:0;font-size:12px}.team-card .coins{font-size:18px}.team-card small{font-size:9px;clear:both}.tile-name{font-size:8px}.tile-icon{height:22px}.city-label h2{font-size:17px}.city-label>span{font-size:7px}.brand{order:-1}.topbar .back{margin-left:auto}.topbar nav{width:100%;justify-content:flex-end}.gamebar{font-size:11px}.control-deck{padding:15px;gap:12px}.control-deck p{font-size:14px}.roll-controls{gap:8px}.roll-controls button{padding:14px}.eyebrow{font-size:8px}.footnote{line-height:1.6}.name-inputs{grid-template-columns:1fr}dialog{padding:20px}dialog h2{font-size:23px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}

@media (min-width: 1101px) {
  .playfield { max-width: calc((100vh - 350px) * 1.333 + 388px); margin-inline: auto; }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .playfield { max-width: calc((100vh - 350px) * 1.333 + 276px); margin-inline: auto; }
}
#show-results { display: block; margin: 0 auto 16px; }
#show-results[hidden] { display: none; }
.team-die { position: absolute; right: 8px; top: 7px; color: #527b76; font: 25px 'Segoe UI Symbol', sans-serif; }
.mode-switch { display: flex; gap: 8px; margin-top: 22px; }
.mode-switch button { flex: 1; }
.mode-switch button[aria-pressed="true"] { background: #dceee1; border: 2px solid #197f7d; }
.print-settings { border: 1px solid #c5d9c6; border-radius: 14px; padding: 12px; margin-bottom: 18px; background: #eff5e7; }
.print-settings .setup-options { flex-wrap: wrap; margin: 0 0 14px; gap: 12px; }
.print-settings > label { display: flex; align-items: center; gap: 8px; font-size: 13px; margin: 8px 0; }
.print-settings input { accent-color: #197f7d; }
#print-dialog { width: min(1200px, 96vw); max-width: none; }
#print-dialog .dialog-head { flex-wrap: wrap; }
#print-dialog h2 { flex: 1; font-size: 23px; margin: 0; }
#print-frame { width: 100%; height: 65vh; border: 1px solid #bbd1c0; border-radius: 10px; background: #d9e4df; }
#print-status { font-size: 13px; line-height: 1.5; }
.print-error { color: #a43731; font-weight: 800; }
[hidden] { display: none !important; }
