/* GOLD CITY v3.0 — 2D map, volumetric SVG buildings, compact Telegram sizing */
#gold-city-2d{position:fixed;top:0;left:0;right:0;bottom:auto;height:var(--city2d-visible-height,100dvh);max-height:100dvh;overflow:hidden;z-index:99995;color:#f8f4e9;background:#080b0e;font-family:Manrope,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.4;overscroll-behavior:contain}
html.city2d-open,html.city2d-open body{overflow:hidden!important}
#gold-city-2d *{box-sizing:border-box}
#gold-city-2d button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
#gold-city-2d button:focus-visible{outline:2px solid #eeca88;outline-offset:3px}
#gold-city-2d button:disabled{cursor:not-allowed;opacity:.42}
#gold-city-2d .city2d-icon{display:inline-block;flex:none;vertical-align:middle}
.city2d-app{height:100%;min-height:0;max-height:100%;max-width:900px;margin:0 auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:radial-gradient(circle at 80% 2%,#55402530,transparent 38%),#0b0e11;position:relative;border-inline:1px solid #ffffff0b}
.city2d-top{z-index:4;min-height:73px;padding:calc(env(safe-area-inset-top,0px) + 12px) 17px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e6c38119;background:#0d1013}
.city2d-brand{display:flex;align-items:center;gap:11px;min-width:0}
.city2d-brandmark{display:grid;place-items:center;width:43px;height:43px;border:1px solid #bd985d73;background:linear-gradient(155deg,#6b512d,#241e16);color:#ffe0a3;border-radius:13px}
.city2d-brand small{display:block;font-size:9px;letter-spacing:.17em;color:#b7a98e;font-weight:800}
.city2d-brand strong{display:block;font-size:20px;letter-spacing:-.035em;line-height:1.2;white-space:nowrap}
.city2d-brand em{font-style:normal;color:#eac182}
.city2d-brand sup{display:inline-block;margin-left:5px;vertical-align:middle;font-size:9px;letter-spacing:.04em;border:1px solid #ab864e;padding:3px 4px;border-radius:5px;color:#eac182}
.city2d-round{display:grid;place-items:center;width:42px;height:42px;border:1px solid #74654c75;border-radius:12px;background:#1d201f;color:#dbcbb3;flex:none}
.city2d-main{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:15px clamp(11px,3.8vw,28px) 24px;scrollbar-width:thin;scrollbar-color:#5b503d transparent}
.city2d-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:13px}
.city2d-metric{min-width:0;padding:12px 13px;background:linear-gradient(147deg,#1f2325,#131719);border:1px solid #9176543b;border-radius:14px}
.city2d-metric>span{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:650;color:#abaea7}
.city2d-metric>span .city2d-icon{color:#d7b781}
.city2d-metric strong{display:block;color:#f9e4bd;font-size:clamp(17px,4.8vw,24px);font-weight:800;letter-spacing:-.05em;margin-top:4px;overflow-wrap:anywhere}
.city2d-mapbox,.city2d-panel{border:1px solid #9a875b44;background:linear-gradient(160deg,#151b1c,#0e1215);border-radius:19px;padding:13px;box-shadow:0 16px 40px #0004}
.city2d-sectionhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px}
.city2d-sectionhead small{font-size:9px;color:#bfaa83;letter-spacing:.14em;font-weight:850}
.city2d-sectionhead h2{font-size:18px;letter-spacing:-.04em;margin:3px 0 0;line-height:1.25}
.city2d-count{font-size:10px;color:#d9c5a3;border:1px solid #87725670;border-radius:8px;padding:6px 9px;white-space:nowrap;background:#28251c}
.city2d-switch{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;padding:4px;background:#0a1013;border:1px solid #6a68604a;border-radius:12px;margin:0 0 10px}
.city2d-switch button{min-height:42px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;background:transparent;color:#acb1b2;border-radius:9px;font-size:11px;font-weight:800}
.city2d-switch button.active{background:linear-gradient(125deg,#b48a4a,#795b32);border-color:#e4bd79;color:#151414;box-shadow:0 3px 12px #0006}
.city2d-filter{display:flex;gap:7px;margin:0 0 11px}
.city2d-filter button{min-height:34px;border:1px solid #5c5d58a3;background:#1a2021;border-radius:9px;color:#b5b7b3;font-size:11px;padding:5px 12px}
.city2d-filter button.active{border-color:#c3a16a;background:#3d3020;color:#ffe2a1;font-weight:800}
.city2d-map{position:relative;width:100%;max-width:525px;margin:auto;height:clamp(408px,61dvh,570px);isolation:isolate;overflow:hidden;border:1px solid #64826a66;border-radius:16px;background:
 radial-gradient(ellipse at 23% 18%,#80a1803c,transparent 40%),
 radial-gradient(ellipse at 74% 77%,#63896d55,transparent 38%),
 repeating-linear-gradient(30deg,#436d54 0 16px,#487559 16px 19px,#446c52 19px 41px);
box-shadow:inset 0 0 0 4px #203d3288,inset 0 15px 30px #081a1263}
.city2d-map:before{content:"";position:absolute;inset:0;opacity:.3;pointer-events:none;background-image:radial-gradient(#b5d2a24d .7px,transparent 1px);background-size:10px 10px}
.city2d-road{position:absolute;pointer-events:none;z-index:1;background:#444e52;border:1px solid #84918b44;box-shadow:inset 0 0 5px #0006}
.city2d-road.vertical{top:0;height:100%;width:8%}
.city2d-road.vertical:after{content:"";position:absolute;left:calc(50% - 1px);height:100%;border-left:2px dashed #d9d5b46b}
.city2d-road.horizontal{left:0;width:100%;height:4%}
.city2d-road.horizontal:after{content:"";position:absolute;top:calc(50% - 1px);width:100%;border-top:2px dashed #d9d5b46b}
.road-v1{left:30%}.road-v2{left:63%}
.road-h1{top:18.5%}.road-h2{top:38.3%}.road-h3{top:58%}.road-h4{top:77.8%}
.city2d-mappark{z-index:0;position:absolute;width:26%;height:14%;background:radial-gradient(circle at 25% 45%,#70966c,#4a7454 70%);border-radius:25%;opacity:.4}
.city2d-mappark.park-a{left:2%;top:21%}
.city2d-mappark.park-b{right:5%;bottom:9%}
.city2d-tree{position:absolute;z-index:2;pointer-events:none;width:11px;height:11px;border-radius:50%;background:radial-gradient(circle at 30% 20%,#8fc497,#29583c);box-shadow:3px 4px 0 #203f32,0 0 0 2px #274731}
.tree-a{left:31%;top:27%}.tree-b{left:64%;top:73%}.tree-c{left:7%;top:93%}
.city2d-lot{position:absolute;z-index:4;left:var(--cx);top:var(--cy);transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:29%;height:16%;min-height:58px;max-width:150px;padding:3px 3px 4px;border:1px solid #d3b07999;background:linear-gradient(160deg,#314536ed,#132d26ed);border-radius:11px;box-shadow:0 3px 0 #0c1a18,0 8px 15px #0916108c;color:#fff0d0;transition:border-color .2s,background .2s}
.city2d-lot:active{transform:translate(-50%,-50%) scale(.97)}
.city2d-lot.owned{border-color:#f2c77f;background:linear-gradient(145deg,#436a53f2,#254235f2);box-shadow:0 0 0 1px #e8bf6569,0 6px 14px #0b211889}
.city2d-lot.locked{border-color:#68727296;background:#232b2dbf;color:#c4c7c7}
.city2d-lot.paused{border-color:#baa46c;background:#333631}
.city2d-art{display:block;width:75%;max-height:72%;pointer-events:none;min-height:0}
.city2d-mini{display:block;width:100%;height:100%;min-height:34px;filter:drop-shadow(0 3px 2px #0007)}
.city2d-lot.locked .city2d-art{filter:grayscale(1) brightness(.34);opacity:.77}
.city2d-lot-title{position:relative;font-weight:850;font-size:clamp(8px,2.15vw,11px);line-height:1.05;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;min-height:10px;pointer-events:none}
.city2d-lot-tag{position:absolute;right:2px;bottom:-6px;border:1px solid #b99d6b;background:#171d1d;color:#eee1c3;border-radius:7px;font-size:8px;white-space:nowrap;padding:1px 3px}
.city2d-lock,.city2d-own{position:absolute;z-index:6;display:grid;place-items:center;width:24px;height:24px;top:-7px;right:-5px;border-radius:8px;color:#f7f3eb;border:1px solid #79756b;background:#292d2b;box-shadow:0 3px 6px #101513ad}
.city2d-own{background:#4a7757;color:#e5ffdd;border-color:#bcda95}
.city2d-lot.paused .city2d-own{background:#615641;border-color:#d9c095;color:#f5e0ac}
.city2d-person{position:absolute;left:var(--x1);top:var(--y1);z-index:3;width:16px;height:22px;pointer-events:none;filter:drop-shadow(0 2px 2px #08190a9e);animation:city2d-walk var(--duration) linear var(--delay) infinite}
.city2d-person svg{width:100%;height:100%}
@keyframes city2d-walk{0%{left:var(--x1);top:var(--y1)}40%{left:var(--x2);top:var(--y1)}75%{left:var(--x2);top:var(--y2)}100%{left:var(--x1);top:var(--y1)}}
.city2d-legend{display:flex;gap:11px;flex-wrap:wrap;justify-content:center;padding:11px 0 1px;color:#b7b7a9;font-size:10px}
.city2d-legend span{display:flex;align-items:center;gap:5px}
.city2d-legend i{display:block;width:9px;height:9px;border-radius:3px;border:1px solid #dfbf75}
.city2d-legend i.mine{background:#62866b}.city2d-legend i.closed{background:#383c3c;border-color:#757f7b}
.city2d-advice{display:flex;align-items:flex-start;gap:10px;margin:13px 1px 0;padding:11px 12px;background:#20211b;border:1px solid #8b765d52;border-radius:12px;color:#c5bba7;font-size:10px;line-height:1.55}
.city2d-advice svg{color:#e9c48d}
.city2d-panel{min-height:180px}
.city2d-list{display:grid;gap:8px}
.city2d-list-row{display:flex;align-items:center;min-height:69px;text-align:left;width:100%;border:1px solid #807a6a58;background:#1e2525;border-radius:12px;padding:8px 10px;color:#eee8d9;gap:9px}
.city2d-list-row:active{background:#3a3325}
.city2d-list-art{width:58px;height:49px;flex:none;display:grid;place-items:center}
.city2d-list-art.muted{filter:grayscale(1) brightness(.5)}
.city2d-list-data{flex:1;min-width:0}
.city2d-list-data strong{display:block;font-size:12px;overflow-wrap:anywhere}
.city2d-list-data small{display:block;font-size:10px;color:#aeb3b0;margin-top:5px}
.city2d-list-icon{display:grid;place-items:center;width:35px;height:35px;border-radius:10px;border:1px solid #716b5a;color:#e4c38b}
.city2d-hero-number{background:radial-gradient(circle at 80% 30%,#a98b523d,transparent 42%),linear-gradient(130deg,#3d3123,#1c2325);border:1px solid #ad8853;border-radius:15px;padding:24px;margin:6px 0 13px}
.city2d-hero-number span,.city2d-hero-number small{display:block;font-size:11px;color:#c9c1ad}
.city2d-hero-number strong{font-size:clamp(36px,9vw,60px);font-weight:850;letter-spacing:-.06em;color:#ffdfa4}
.city2d-gridinfo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:13px 0}
.city2d-gridinfo .city2d-metric{background:#202928}
.city2d-progressline{padding:13px;border:1px solid #7d816e66;border-radius:12px;margin:14px 0}
.city2d-progressline>div:first-child{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#c0beb1}
.city2d-progressline strong{color:#e9ce93}
.city2d-progress{height:9px;overflow:hidden;margin-top:11px;background:#313c3b;border-radius:10px}
.city2d-progress i{display:block;height:100%;border-radius:10px;background:linear-gradient(90deg,#967348,#f0c27e)}
.city2d-help{color:#aeb5b2;font-size:11px;line-height:1.6}
.city2d-primary,.city2d-secondary{border:1px solid #e6ba72;min-height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:9px;font-size:12px;font-weight:850;padding:11px 14px}
.city2d-primary{color:#241909;background:linear-gradient(135deg,#f8daa1,#cda057)}
.city2d-secondary{color:#ead6ad;background:#29251d;border-color:#b68d54}
.city2d-claim{width:100%;margin:14px 0}
.city2d-subhead{font-size:15px;font-weight:800;margin:22px 0 12px}
.city2d-zones{display:grid;gap:8px}
.city2d-zone{display:flex;align-items:center;justify-content:space-between;gap:11px;padding:13px 11px;border-radius:12px;background:#202726;border:1px solid #706c5c77}
.city2d-zone>div{min-width:0}
.city2d-zone strong{display:block;font-size:12px}
.city2d-zone small{display:block;font-size:10px;color:#afb4b0;margin-top:4px}
.city2d-zone button{display:flex;align-items:center;gap:4px;border:1px solid #b59962;background:#493b29;color:#f5d49b;border-radius:9px;min-height:36px;padding:5px 9px;font-size:10px;font-weight:800}
.city2d-zone-finished{color:#b8deb3}
.city2d-achievements{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.city2d-achievements>div{display:flex;align-items:center;gap:6px;padding:9px 8px;border:1px solid #4b4f50;border-radius:9px;background:#202528;color:#8e9997;font-size:10px}
.city2d-achievements>div.yes{border-color:#a78d61;color:#f8d9a3;background:#352b20}
.city2d-bottom{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;align-items:stretch;padding:9px 10px calc(8px + env(safe-area-inset-bottom,0px));min-height:68px;background:#111619;border-top:1px solid #96856c43;box-shadow:0 -5px 25px #0004;z-index:3}
.city2d-bottom button{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:4px;border:0;background:transparent;color:#939e9b;padding:5px 3px;border-radius:11px;min-height:50px;font-size:10px;font-weight:720}
.city2d-bottom button.selected{color:#ffe1ac;background:#65513442}
.city2d-bottom button.selected svg{filter:drop-shadow(0 0 5px #ffc67377)}
.city2d-shade{position:absolute;inset:0;z-index:10;background:#03090dc5;display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(3px);animation:city2d-fade .14s ease-out}
@keyframes city2d-fade{from{opacity:0}to{opacity:1}}
.city2d-sheet{outline:none;width:100%;max-width:650px;max-height:min(82dvh,680px);overflow-y:auto;overscroll-behavior:contain;border-radius:23px 23px 0 0;border:1px solid #b79760;background:linear-gradient(155deg,#222726,#111719 62%);box-shadow:0 -18px 55px #000b;padding:8px 19px calc(23px + env(safe-area-inset-bottom,0px))}
.city2d-handle{width:38px;height:5px;border-radius:10px;background:#b0a38767;margin:0 auto 15px}
.city2d-sheethead{display:flex;justify-content:space-between;align-items:center;gap:14px}
.city2d-sheethead span{display:block;color:#d1ae77;letter-spacing:.17em;font-size:9px;font-weight:850}
.city2d-sheethead h2{font-size:22px;letter-spacing:-.04em;line-height:1.15;margin:5px 0}
.city2d-sheetpreview{width:140px;height:88px;margin:11px auto 5px;background:radial-gradient(ellipse,#476d59,#223a32 64%,#1c2625);border-radius:14px;display:grid;place-items:center;border:1px solid #76937d55}
.city2d-sheetpreview .city2d-mini{width:135px;height:92px}
.city2d-sheetpreview.dark{filter:grayscale(1) brightness(.6)}
.city2d-sheetstatus{display:flex;align-items:center;justify-content:center;gap:7px;color:#dac492;font-size:12px;font-weight:700;margin:5px 0 13px}
.city2d-sheetfacts{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
.city2d-sheetfacts>div{padding:11px;border:1px solid #76766671;border-radius:11px;background:#222926}
.city2d-sheetfacts small{display:block;font-size:10px;color:#aeb4ab}
.city2d-sheetfacts strong{display:block;font-size:13px;color:#efdcac;margin-top:4px;overflow-wrap:anywhere}
.city2d-sheetactions{display:grid;gap:9px;margin-top:15px}
.city2d-sheethint,.city2d-lockreason{color:#aaa99d;font-size:11px;line-height:1.5}
.city2d-lockreason,.city2d-max{display:flex;align-items:center;gap:9px;color:#cbb79a}
.city2d-error{margin:0 0 12px;padding:13px;color:#ffe3e1;border:1px solid #ac666d;background:#4b2229;border-radius:12px;font-size:12px}
.city2d-loading{min-height:260px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;color:#e0d4b9;text-align:center}
.city2d-loading svg{color:#debd80}
.city2d-loading button{min-height:40px;border-radius:11px;border:1px solid #bd9e68;color:#f3dcb7;background:#473a26;padding:8px 15px}
@media(min-width:650px){
  .city2d-main{padding-inline:28px}
  .city2d-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
  .city2d-mapbox{max-width:655px;margin:0 auto}
  .city2d-map{height:540px}
  .city2d-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:355px){
  .city2d-main{padding-inline:8px}
  .city2d-mapbox{padding:10px}
  .city2d-lot{width:29.5%}
  .city2d-lot-title{font-size:8px}
  .city2d-filter button{padding:5px 8px}
  .city2d-sectionhead h2{font-size:16px}
  .city2d-metric{padding:10px}
}
@media(prefers-reduced-motion:reduce){
  .city2d-person{animation:none}
  .city2d-shade{animation:none}
  .city2d-lot{transition:none}
}

/* GOLD CITY v2.8 — 2D streetscape and city life; all decorations are scalable CSS/SVG. */
.city2d-map-v28{
 background:
  radial-gradient(circle at 15% 8%,#aec98744,transparent 24%),
  radial-gradient(circle at 86% 83%,#a2bb7850,transparent 28%),
  repeating-linear-gradient(0deg,transparent 0 26px,#264b372b 27px 28px,transparent 29px 60px),
  repeating-linear-gradient(90deg,#3f6d51 0 13px,#487658 13px 15px,#466f53 15px 33px);
}
.city2d-map-v28 .city2d-road{background:linear-gradient(90deg,#505c60,#475457 45%,#505b5a);border-color:#303d42;z-index:1}
.city2d-map-v28 .city2d-road.horizontal{top:var(--road-y);height:4%;left:0;width:100%;background:linear-gradient(#586467,#475254 55%,#566065)}
.city2d-map-v28 .city2d-road.horizontal:after{border-top:2px dashed #e6ddba90}
.city2d-map-v28 .city2d-road.vertical:after{border-left:2px dashed #e5dab588}
.city2d-sidewalk{position:absolute;pointer-events:none;z-index:2;background:linear-gradient(90deg,#9d9f91,#bcc1af 48%,#8a978a);border:1px solid #d5d0ae55;opacity:.75}
.city2d-sidewalk.vertical{left:var(--walk-x);top:0;width:1.75%;height:100%;transform:translateX(-50%);border-left:1px solid #d7d9bd4d;border-right:1px solid #d7d9bd4d}
.city2d-sidewalk.horizontal{top:var(--walk-y);left:0;width:100%;height:1.55%;transform:translateY(-50%);background:linear-gradient(#909b8d,#c0c0ac 55%,#8a9387)}
.city2d-map-v28 .city2d-lot{border-radius:12px;border-bottom-width:3px;box-shadow:0 5px 0 #101d18bb,0 9px 12px #09140f7a;isolation:isolate}
.city2d-map-v28 .city2d-lot.owned{background:linear-gradient(155deg,#5a785df5,#2c4737ee);border-color:#f1d294;box-shadow:0 4px 0 #283a2a,0 0 0 2px #ffcf6840,0 8px 14px #081910aa}
.city2d-map-v28 .city2d-lot.locked{background:linear-gradient(145deg,#2e3334f5,#151d21ed);border-color:#6b797c;border-bottom-color:#424f53;box-shadow:0 5px 0 #151d21,0 9px 13px #0b1419ad}
.city2d-map-v28 .city2d-lot.paused{background:linear-gradient(145deg,#54564a,#303832);border-color:#bbaa83}
.city2d-map-v28 .city2d-lot.locked .city2d-mini{filter:grayscale(1) brightness(.5);opacity:.8}
.city2d-map-v28 .city2d-lot.owned .city2d-mini{filter:drop-shadow(0 3px 2px #0008) saturate(1.14)}
.city2d-map-v28 .city2d-lot.owned:after{content:"";position:absolute;bottom:-5px;left:calc(50% - 8px);width:16px;height:3px;background:#e9be72;box-shadow:0 0 8px #ffe2ad99;border-radius:4px;pointer-events:none}
.city2d-map-v28 .city2d-lot.locked .city2d-lock{background:#1b262b;color:#e4e9e7;border-color:#64777d}
.city2d-map-v28 .city2d-lot-title{color:#fdf5e7;text-shadow:0 1px 3px #091a16db}
.city2d-map-v28 .city2d-lot.locked .city2d-lot-title{color:#c2c9c8}
.city2d-foliage{position:absolute;z-index:2;width:13px;height:13px;transform:translate(-50%,-50%);pointer-events:none;border-radius:50%;background:radial-gradient(circle at 29% 27%,#a9d6a1 0 18%,#5a9b67 22% 47%,#2d704a 50% 74%,#1e523b 75%);box-shadow:2px 3px 0 1px #264630,0 4px 6px #101e1680}
.city2d-foliage i{position:absolute;width:4px;height:7px;left:5px;top:11px;z-index:-1;background:#816946;border-radius:2px}
.city2d-bench{position:absolute;z-index:2;pointer-events:none;width:16px;height:7px;border:1px solid #ccac79;border-radius:2px;background:repeating-linear-gradient(90deg,#9c7552 0 3px,#c39a69 3px 5px)}
.city2d-bench:after{content:"";position:absolute;left:1px;top:-3px;width:13px;height:2px;background:#654b34;border-radius:1px}
.bench-a{left:3%;top:34%}.bench-b{right:3%;bottom:27%}
.city2d-crosswalk{position:absolute;left:33%;top:var(--cross-y);z-index:2;width:11%;height:4%;transform:translateY(-50%);pointer-events:none;background:repeating-linear-gradient(90deg,#e4e2d3dd 0 4%,transparent 4% 15%);opacity:.72}
.city2d-crosswalk.cross-b{left:66%}
.city2d-map-v28 .city2d-person{width:13px;height:20px;filter:drop-shadow(0 2px 2px #041510ad);z-index:3;left:var(--start-x);top:var(--start-y);will-change:left,top,opacity}
.city2d-map-v28 .city2d-person.city2d-visitor{animation:city2d-enter var(--duration) linear var(--delay) infinite}
.city2d-map-v28 .city2d-person.city2d-stroller{animation:city2d-sidewalk-loop var(--duration) linear var(--delay) infinite}
@keyframes city2d-enter{
  0%{left:var(--start-x);top:var(--start-y);opacity:0;transform:scale(.9)}
  8%{opacity:1;transform:scale(1)}
  32%{left:var(--way-x);top:var(--start-y);opacity:1}
  65%{left:var(--way-x);top:var(--finish-y);opacity:1}
  85%{left:var(--door-x);top:var(--finish-y);opacity:1;transform:scale(1)}
  93%{left:var(--inside-x);top:var(--finish-y);opacity:0;transform:scale(.45)}
  100%{left:var(--inside-x);top:var(--finish-y);opacity:0}
}
@keyframes city2d-sidewalk-loop{
  0%{left:var(--start-x);top:var(--start-y);opacity:0}
  8%{opacity:1}
  30%{left:var(--way-x);top:var(--start-y);opacity:1}
  75%{left:var(--way-x);top:var(--finish-y);opacity:1}
  93%{opacity:0}
  100%{left:var(--way-x);top:var(--finish-y);opacity:0}
}
@media(prefers-reduced-motion:reduce){
  .city2d-map-v28 .city2d-person{animation:none!important;left:var(--way-x);top:var(--start-y);opacity:1;will-change:auto}
}

/* Buildings stay clear of the two dedicated road corridors on narrow screens. */
.city2d-map-v28 .city2d-lot{width:26%;}
.city2d-map-v28 .city2d-crosswalk.cross-a{left:30%;width:8%}
.city2d-map-v28 .city2d-crosswalk.cross-b{left:63%;width:8%}


/* Telegram often opens as a partial-height WebView; the app shell must never exceed
   its CURRENT viewport. The map/long lists scroll only inside .city2d-main. */
#gold-city-2d{
  width:100%;
  overscroll-behavior:none;
  -webkit-overflow-scrolling:touch;
}
#gold-city-2d .city2d-app{
  height:100%;
  max-height:100%;
  min-height:0;
  overflow:hidden;
  grid-template-rows:auto minmax(0,1fr) auto;
}
#gold-city-2d .city2d-top{
  min-height:0;
  padding:calc(8px + max(env(safe-area-inset-top,0px),var(--tg-content-safe-area-inset-top,0px),var(--city2d-safe-top,0px))) 13px 8px;
  flex:none;
}
#gold-city-2d .city2d-brandmark{height:37px;width:37px;border-radius:11px}
#gold-city-2d .city2d-brand strong{font-size:18px}
#gold-city-2d .city2d-brand small{font-size:8px}
#gold-city-2d .city2d-top .city2d-round{height:38px;width:38px}
#gold-city-2d .city2d-main{
  min-height:0;
  height:100%;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  padding:10px 11px 14px;
  -webkit-overflow-scrolling:touch;
}
#gold-city-2d .city2d-metrics{gap:7px;margin-bottom:10px}
#gold-city-2d .city2d-metric{padding:8px 10px;border-radius:11px}
#gold-city-2d .city2d-metric strong{font-size:clamp(15px,4.3vw,20px);margin-top:3px}
#gold-city-2d .city2d-mapbox{padding:10px}
#gold-city-2d .city2d-sectionhead h2{font-size:16px}
#gold-city-2d .city2d-switch button{min-height:38px}
#gold-city-2d .city2d-filter button{min-height:32px}
#gold-city-2d .city2d-map{
  height:clamp(330px,calc(var(--city2d-visible-height,100dvh) - 310px),490px);
  max-width:525px;
  min-height:0;
}
#gold-city-2d .city2d-bottom{
  flex:none;
  min-height:0;
  padding:5px 8px calc(5px + max(env(safe-area-inset-bottom,0px),var(--tg-content-safe-area-inset-bottom,0px),var(--city2d-safe-bottom,0px)));
}
#gold-city-2d .city2d-bottom button{
  min-height:42px;
  padding:4px 2px;
  gap:3px;
}
#gold-city-2d .city2d-bottom button span{font-size:10px}
#gold-city-2d .city2d-sheet{
  max-height:calc(var(--city2d-visible-height,100dvh) - 24px);
  padding-bottom:calc(16px + max(env(safe-area-inset-bottom,0px),var(--tg-content-safe-area-inset-bottom,0px),var(--city2d-safe-bottom,0px)));
}
/* 2D streets are still flat; buildings alone have real top/front/side SVG planes. */
#gold-city-2d .city2d-map-v28 .city2d-volume{
  overflow:visible;
  min-height:0;
  width:100%;
  height:100%;
  filter:drop-shadow(1px 4px 2px #0a1e1bad);
}
#gold-city-2d .city2d-map-v28 .city2d-lot.owned .city2d-volume{
  filter:saturate(1.17) drop-shadow(2px 3px 2px #071e12aa);
}
#gold-city-2d .city2d-map-v28 .city2d-lot.locked .city2d-volume{
  filter:grayscale(1) brightness(.47);
}
#gold-city-2d .city2d-lot .city2d-art{height:70%}
#gold-city-2d .city2d-lot{touch-action:manipulation}
@media(max-height:670px){
  #gold-city-2d .city2d-top{padding-bottom:5px}
  #gold-city-2d .city2d-metrics{gap:5px}
  #gold-city-2d .city2d-main{padding-top:7px}
  #gold-city-2d .city2d-map{height:340px}
  #gold-city-2d .city2d-bottom{padding-top:3px}
}
@media(max-width:360px){
  #gold-city-2d .city2d-mapbox{padding:8px}
  #gold-city-2d .city2d-metric{padding:7px}
  #gold-city-2d .city2d-bottom button span{font-size:9px}
}
@media(prefers-reduced-motion:reduce){
  #gold-city-2d .city2d-lot{transition:none}
}
