@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/tiny-city/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/tiny-city/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/tiny-city/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-vietnamese-600-normal-DO1RqFw5.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/tiny-city/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-latin-ext-600-normal-BKUpuB78.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/tiny-city/assets/nunito-latin-600-normal-Br8yIETf.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-latin-600-normal-Cd0eNu1l.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/tiny-city/assets/nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-cyrillic-ext-800-normal-pjRatrRO.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/tiny-city/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-cyrillic-800-normal-DymMgApb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/tiny-city/assets/nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-vietnamese-800-normal-Dz0hZPb5.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/tiny-city/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-latin-ext-800-normal-CDcxIxx8.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/tiny-city/assets/nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(/play/tiny-city/assets/nunito-latin-800-normal-D-J0wlBY.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{--city-ground: #a8d98a;--city-ground-checker: 3%;--city-water: #6fc3e8;--city-sand: #e8d9a8;--city-sand-w: .15;--city-grid: rgba(0, 0, 0, .08);--city-road: #d6d9de;--city-kerb: #b8bdc6;--city-road-line: rgba(255, 255, 255, .6);--city-road-dash: .3;--city-road-disconnected: .6;--city-building-radius: .2;--city-building-inset: .1;--city-building-band: .12;--city-hall: #f6e7c1;--city-hall-roof: #d9775b;--city-plot: #c9b58a;--city-residence-1: #f7c59f;--city-residence-2: #f9e38a;--city-residence-3: #a9e3c9;--city-residence-4: #c7b8f5;--city-residence-5: #9cd3f2;--city-factory: #9aa7b8;--city-factory-roof: #6f7d91;--city-power: #8c8f99;--city-power-bolt: #ffd447;--city-water-tower: #bfe3f7;--city-water-drop: #42b4ff;--city-depot: #d6b98a;--city-ghost-alpha: .5;--city-ghost-ok: #5fd068;--city-ghost-bad: #f0525f;--city-coverage-alpha: .2;--city-bubble: #ffffff;--city-bubble-shadow: rgba(31, 42, 55, .25);--bubble-size: 40px;--city-metal: #8d99a8;--city-wood: #9c6b3f;--city-plastic: #f4f7fb;--city-textiles: #e07aa0;--city-seeds: #5aa846;--city-selected: #f5b942;--city-ring: #5fd068;--city-ring-track: rgba(255, 255, 255, .7);--city-mark: rgba(255, 255, 255, .9);--city-shade: rgba(31, 42, 55, .16);--city-light: rgba(255, 255, 255, .55);--city-dust: rgba(201, 181, 138, .85);--city-puff: rgba(140, 143, 153, .55);--city-sparkle: #fff3b0;--ink: #1f2a37;--text-dim: #5c6b7f;--bar: rgba(255, 255, 255, .9);--sheet: #ffffff;--sheet-radius: 20px;--accent: #f5b942;--accent-ink: #1f2a37;--go: #5fd068;--danger: #f0525f;--button-line: rgba(31, 42, 55, .12);--radius: 18px;--cell: 48px;--control-min: 48px;--column-w: 480px;--sheet-slide: .22s;--banner-slide: .26s;--pop: .25s;--press: 80ms;font-family:Nunito,system-ui,sans-serif;font-weight:600;color:var(--ink);color-scheme:light;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background-color:var(--city-water);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}.city{position:relative;height:100%;overflow:hidden;touch-action:none}.city-fx{position:absolute;inset:0;width:100%;height:100%;z-index:5;pointer-events:none}.city-map{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.top,.bottom-bar,.build-bar,.sheet{position:absolute;left:50%;width:min(100%,var(--column-w));transform:translate(-50%)}.top{top:0;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}.top>*{pointer-events:auto}.top-bar{width:100%;display:flex;align-items:center;gap:8px;padding:calc(6px + env(safe-area-inset-top)) 10px 6px;background:var(--bar);border-radius:0 0 var(--radius) var(--radius)}.stat{display:flex;flex-direction:column;min-width:0;flex:1}.stat-label{font-size:11px;color:var(--text-dim)}.stat-value{font-size:16px;font-weight:800;white-space:nowrap}.stat-coins .stat-value:before{content:"";display:inline-block;width:10px;height:10px;margin-right:4px;border-radius:50%;background:var(--accent)}.level-pill{min-height:var(--control-min);border:0;font-family:inherit;cursor:pointer;padding:6px 10px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:13px;white-space:nowrap}.bottom-bar,.build-bar{bottom:0;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--bar);border-radius:var(--radius) var(--radius) 0 0}.bottom-bar{display:flex;justify-content:center;gap:8px}.bottom-bar .button.primary{min-width:0;flex:1.4}.bottom-bar .button{flex:1;padding:0 8px}.hint-strip{max-width:calc(100% - 20px);min-height:36px;padding:6px 14px;border:0;border-radius:999px;background:var(--bar);color:var(--ink);font:inherit;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px var(--button-line);cursor:pointer}.button{min-height:var(--control-min);min-width:var(--control-min);padding:0 16px;border:1px solid var(--button-line);border-radius:14px;background:var(--sheet);color:var(--ink);font:inherit;font-weight:800;cursor:pointer}.button:disabled{opacity:.45;cursor:default}.button.primary{background:var(--accent);color:var(--accent-ink);min-width:160px}.button.go{background:var(--go)}.button.danger{background:var(--danger);color:var(--sheet)}.button.small{min-height:var(--control-min);padding:0 10px;font-size:13px}.build-row{display:flex;gap:8px;align-items:stretch}.build-tools{display:flex;gap:8px;overflow-x:auto;flex:1;scrollbar-width:none;touch-action:pan-x}.build-tool{display:flex;flex-direction:column;justify-content:center;flex:0 0 auto;min-width:84px;min-height:56px;padding:4px 10px;border:2px solid var(--button-line);border-radius:14px;background:var(--sheet);color:var(--ink);font:inherit;cursor:pointer}.build-tool.picked{border-color:var(--accent)}.build-tool.locked{opacity:.45}.build-tool.short .build-price{color:var(--danger)}.build-name{font-weight:800;font-size:13px}.build-price{font-size:12px;color:var(--text-dim)}.build-place{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-bottom:8px}.build-reason{color:var(--danger);font-size:13px}.sheet{bottom:0;max-height:60%;overflow-y:auto;padding:12px 16px calc(16px + env(safe-area-inset-bottom));background:var(--sheet);border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;box-shadow:0 -4px 16px var(--button-line)}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet h2{margin:0;font-weight:800;font-size:20px}.sheet p{margin:8px 0}.sheet .ok{color:var(--ink)}.sheet .bad{color:var(--danger)}.needs,.slots{margin:8px 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.produce{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sheet-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.scrim{position:absolute;inset:0;background:var(--button-line)}.sheet.confirm{max-height:none}.sheet .good{color:var(--ink)}.sheet .good:before{content:"✓ ";color:var(--go);font-weight:800}.sheet .dim,.dim{color:var(--text-dim)}.sheet.picker{max-height:none}.price{margin-left:6px;white-space:nowrap}.swatch{display:inline-block;width:12px;height:12px;margin-right:6px;border-radius:3px;border:1px solid var(--button-line);vertical-align:-1px}.needs li,.slots li{display:flex;align-items:center;gap:4px;min-height:28px}.needs .count,.slots .count{margin-left:auto;font-weight:800}.slot-name{min-width:72px;color:var(--text-dim)}.meter-row{display:flex;flex-direction:column;gap:4px;margin:8px 0}.meter{display:block;flex:1;min-width:48px;height:8px;margin:0 8px;border-radius:999px;background:var(--button-line);overflow:hidden}.meter-row .meter{flex:none;margin:0}.meter>span{display:block;height:100%;background:var(--go)}.produce{margin-top:10px}.button.material{display:flex;flex-direction:column;justify-content:center;padding:4px 12px;font-size:13px}.ladder{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.ladder li{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border:2px solid var(--button-line);border-radius:14px;font-size:13px}.ladder li.reached{opacity:.6}.ladder li.current{border-color:var(--accent)}.ladder-head{display:flex;justify-content:space-between;gap:8px;font-size:15px}.languages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0 12px}.language{display:flex;align-items:center;justify-content:center;gap:8px;border-width:2px}.language img{width:28px;height:20px;object-fit:cover;border-radius:3px}.language.chosen{border-color:var(--accent)}.setting{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--control-min)}.setting input{appearance:none;position:relative;width:52px;height:30px;margin:0;border-radius:999px;background:var(--button-line);cursor:pointer}.setting input:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--sheet);box-shadow:0 1px 3px var(--city-bubble-shadow);transition:transform .12s ease-out}.setting input:checked{background:var(--go)}.setting input:checked:after{transform:translate(22px)}.version{font-size:12px;text-align:center}.slide-out{display:contents}.sheet{animation:sheet-up var(--sheet-slide) ease-out}.slide-out.leaving .sheet{animation:sheet-down var(--sheet-slide) ease-in forwards;pointer-events:none}@keyframes sheet-up{0%{transform:translate(-50%) translateY(100%)}to{transform:translate(-50%) translateY(0)}}@keyframes sheet-down{0%{transform:translate(-50%) translateY(0)}to{transform:translate(-50%) translateY(100%)}}.top-bar{position:relative;z-index:1}.level-banner{display:flex;flex-direction:column;align-items:center;gap:2px;width:calc(100% - 20px);min-height:var(--control-min);padding:10px 16px;border:0;border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);font:inherit;font-size:13px;box-shadow:0 4px 14px var(--button-line);cursor:pointer;animation:banner-in var(--banner-slide) ease-out}.level-banner strong{font-weight:800;font-size:18px}.level-banner .dim{color:var(--accent-ink);opacity:.75}.level-banner.leaving{animation:banner-out var(--banner-slide) ease-in forwards;pointer-events:none}@keyframes banner-in{0%{transform:translateY(-120%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes banner-out{0%{transform:translateY(0);opacity:1}to{transform:translateY(-120%);opacity:0}}.stat-value{display:inline-block;transform-origin:left center}.stat-value.pop,.level-pill.pop{animation:pop var(--pop) ease-out}@keyframes pop{40%{transform:scale(1.18)}to{transform:scale(1)}}.button,.build-tool,.level-pill,.hint-strip{transition:transform var(--press) ease-out}.button:active:not(:disabled),.build-tool:active,.level-pill:active,.hint-strip:active{transform:scale(.95)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}
