/* V4 art direction: colorful, animated illustration, not 3D multiplayer */
:root{--lime:#bdf06e;--night:#11342d;--cream:#f4f4e9}
body{background:linear-gradient(180deg,#f7f6e8 0%,#f1efe4 100%)}
.world-panel{min-width:0}
.world-stage{background:#a1d3ad;box-shadow:0 12px 36px rgba(14,79,64,.16)}
#townMap [data-loc]{transition:filter .22s ease}
#townMap [data-loc]:hover{filter:drop-shadow(0 0 7px rgba(255,255,180,.95))}
#townMap [data-ad]:hover{filter:brightness(1.16) drop-shadow(0 3px 4px rgba(18,55,35,.3))}
#townMap .v4-waterglow{animation:lagoonSlide 8s linear infinite;will-change:transform}
#townMap .v4-cloud-one{animation:cloudSlide 29s ease-in-out infinite alternate}
#townMap .v4-cloud-two{animation:cloudSlideTwo 36s ease-in-out infinite alternate}
#townMap .v4-danfo-one{animation:danfoRight 17s linear infinite;will-change:transform}
#townMap .v4-danfo-two{animation:danfoLeft 21s linear infinite;will-change:transform}
#townMap .v4-boat-one{animation:boatTravel 20s linear infinite;will-change:transform}
#townMap .v4-bird-one{animation:birdFly 12s linear infinite;will-change:transform}
#townMap .v4-bird-two{animation:birdFlyTwo 16s linear infinite;will-change:transform}
#townMap .v4-avatar-bob{animation:avatarBounce 1.1s ease-in-out infinite alternate}
#townMap [data-ad] rect{transition:filter .2s,stroke-width .2s}
#townMap [data-ad]:focus-visible rect{stroke-width:4px;stroke:#fff}
@keyframes danfoRight{from{transform:translate(-140px,0)}to{transform:translate(1450px,0)}}
@keyframes danfoLeft{from{transform:translate(1450px,0)}to{transform:translate(-180px,0)}}
@keyframes boatTravel{0%{transform:translate(-130px,0)}25%{transform:translate(270px,-2px)}50%{transform:translate(650px,2px)}75%{transform:translate(975px,-2px)}100%{transform:translate(1400px,0)}}
@keyframes birdFly{from{transform:translate(-60px,128px)}to{transform:translate(1370px,88px)}}
@keyframes birdFlyTwo{from{transform:translate(-65px,220px)}to{transform:translate(1370px,165px)}}
@keyframes cloudSlide{from{transform:translateX(-70px)}to{transform:translateX(170px)}}
@keyframes cloudSlideTwo{from{transform:translateX(170px)}to{transform:translateX(-140px)}}
@keyframes lagoonSlide{from{transform:translateX(-30px)}to{transform:translateX(55px)}}
@keyframes avatarBounce{from{transform:translateY(0)}to{transform:translateY(-3px)}}
.city-corner-badge{position:sticky;z-index:4;top:10px;left:12px;margin:10px 0 -46px 12px;background:rgba(10,62,49,.90);color:#f4ffe1;display:table;border:1px solid #9ce1a0;padding:7px 12px;border-radius:9px;font-size:9px;font-weight:950;letter-spacing:.1em;pointer-events:none;box-shadow:0 5px 17px #08372130}
.city-corner-badge span{color:#a9ef73;animation:blink 1.6s ease-in-out infinite alternate}
@keyframes blink{to{opacity:.2}}
.top-free{display:inline-flex;align-items:center}
.boulevard-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin:26px 0 16px}
.boulevard-heading span{font-weight:1000;letter-spacing:.15em;font-size:10px;color:#457e59}
.boulevard-heading h2{font-weight:1000;letter-spacing:-1px;font-size:26px;margin:3px 0 4px}
.boulevard-heading p{color:#6b8070;font-size:12px;margin:0}
.boulevard-heading>b{font-size:10px;border:1px solid #a9cbae;background:#e1f2d8;border-radius:100px;padding:6px 11px;white-space:nowrap}
.brand-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.brand-showroom{border:1px solid #b9d0bc;border-radius:15px;background:#fffef7;text-align:left;min-width:0;padding:9px 9px 11px;box-shadow:0 4px 15px #1241300e;transition:transform .18s,box-shadow .18s;color:#15392d}
.brand-showroom:hover{transform:translateY(-3px);box-shadow:0 9px 23px #184f2726}
.shop-eyebrow{display:block;font-size:8px;letter-spacing:.08em;color:#6d8b72;font-weight:900;padding:3px 4px}
.shop-scene{height:95px;border-radius:9px;background:linear-gradient(130deg,var(--shopcolor),#f9f4e8);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;position:relative;overflow:hidden;border-bottom:7px solid #d4d9cd}
.shop-scene:before{content:'';position:absolute;width:150px;height:150px;left:-61px;top:34px;border-radius:50%;border:25px solid #ffffff54}
.shop-scene:after{content:'';position:absolute;width:55px;height:105px;right:-25px;top:-42px;transform:rotate(27deg);background:#ffffff80}
.shop-window{font-size:39px;line-height:1;z-index:1;font-weight:1000;color:#397260}
.shop-sign{font-size:8px;background:#153d34;color:#faffeb;padding:4px 7px;border-radius:3px;z-index:1;font-weight:950;letter-spacing:.03em}
.brand-showroom strong{display:block;font-size:12px;margin:9px 3px 1px;font-weight:1000}
.shop-caption{display:block;font-size:10px;color:#648073;min-height:30px;margin:0 3px}
.shop-action{display:block;padding:7px 3px 2px;border-top:1px dashed #cee0d0;font-size:9px;font-weight:1000;color:#37855a}
.shop-action b{float:right;font-size:15px;line-height:12px}
.boulevard-foot{margin:13px 0 4px;border-radius:14px;background:#164239;color:#fff;padding:13px 15px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.boulevard-foot strong{font-size:12px}.boulevard-foot span{color:#c4d8cb;font-size:10px;flex:1}
.boulevard-foot button{background:#bdf06e;border:0;border-radius:7px;padding:8px 10px;font-weight:900;font-size:10px;color:#12342e}
.inventory-icon{background:#bdf06e;color:#15342d;width:92px;height:92px;display:grid;place-items:center;border:3px solid #15342d;box-shadow:6px 6px #15342d;font-size:49px;font-weight:1000;border-radius:19px;margin:10px auto 20px}
.inventory-breakdown{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.inventory-breakdown span{font-size:12px;background:#f0f6e9;padding:11px;border-radius:10px;border:1px solid #d7e2d1}
.inventory-breakdown b{color:#167b55;font-size:20px;display:block}
.arcade-header{height:95px;text-align:center;font-size:62px;animation:avatarBounce 1s infinite alternate}
.arcade-meta{display:flex;justify-content:space-between;font-size:11px;font-weight:950;margin:17px 2px 10px}
.arcade-arena{height:172px;background:linear-gradient(#8fd0e1 0 45%,#9dd187 45% 64%,#384e59 64% 100%);border:3px solid #315d56;border-radius:15px;position:relative;overflow:hidden}
.arcade-arena:before{content:'';position:absolute;bottom:22px;left:0;right:0;height:3px;background:repeating-linear-gradient(90deg,#fff6d0 0 24px,transparent 24px 43px)}
.arcade-target{position:absolute;height:100%;width:13%;left:64%;top:0;background:#baff6a4a;border-left:2px dashed #f8ffe2;border-right:2px dashed #f8ffe2;text-align:center;z-index:1;pointer-events:none}
.arcade-target b{font-size:8px;background:#174235;color:#fff;padding:3px 6px;border-radius:4px;display:block;margin:21px auto;white-space:nowrap}
.arcade-bus{position:absolute;left:-18px;bottom:15px;background:#ffd33f;width:91px;height:58px;border:3px solid #233c46;border-radius:9px 13px 7px 6px;z-index:2;box-shadow:3px 7px #233b4540}
.bus-top{font-size:8px;white-space:nowrap;color:#283c3e;font-weight:1000;text-align:center;padding-top:4px}
.bus-window{height:20px;margin:4px 6px;border:3px solid #264c54;background:repeating-linear-gradient(90deg,#70b9bd 0 19px,#204950 19px 22px)}
.bus-wheels{position:absolute;bottom:-9px;left:14px;right:12px;display:flex;justify-content:space-between}.bus-wheels i{width:17px;height:17px;border-radius:50%;border:4px solid #233840;background:#adb9b4}
.arcade-message{text-align:center;font-size:13px;font-weight:750;min-height:46px;margin:12px 0}
.arcade-best{font-size:11px;font-weight:900;color:#558066;text-align:center;margin:10px 0 15px}
.v4-paused #townMap *{animation-play-state:paused!important}
@media(max-width:1000px){.brand-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.boulevard-heading{margin:17px 2px 11px;gap:5px}.boulevard-heading h2{font-size:22px}.boulevard-heading p{font-size:10px}.brand-grid{gap:8px}.brand-showroom{padding:7px}.shop-scene{height:75px}.shop-window{font-size:30px}.shop-caption{min-height:26px}.boulevard-foot{gap:6px}.boulevard-foot strong{font-size:11px}.boulevard-foot span{font-size:9px;flex-basis:100%}.city-corner-badge{font-size:8px}.arcade-arena{height:155px}.arcade-bus{transform:scale(.85);transform-origin:bottom left}}
@media(prefers-reduced-motion:reduce){#townMap *,.brand-showroom,.arcade-header{animation:none!important;transition:none!important}}

/* Gameplay precedes sponsored inventory on smaller screens. */
.brand-boulevard{grid-column:1/-1;margin-top:5px}
.map-zoom{position:sticky;z-index:5;top:49px;left:12px;margin:60px 0 -40px 12px;display:table;background:#fcffe9;border:1.5px solid #274f3b;border-radius:30px;font-size:9px;letter-spacing:.04em;font-weight:1000;padding:8px 10px;box-shadow:0 5px 14px #254a3829;cursor:pointer}
.world-stage.overview #townMap{min-width:0;width:100%}
@media(max-width:650px){.town-layout{display:flex;flex-direction:column}.brand-boulevard{order:3}.sidebar{order:2;grid-template-columns:1fr!important}.sidebar .game-hub,.sidebar .activity-card,.sidebar .ad-card,.sidebar .player-card{grid-column:1/-1}.map-zoom{top:38px;font-size:8px;margin:52px 0 -37px 9px}.city-corner-badge{margin-left:9px}.hub-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}}

.afterday-hint{font-size:13px;line-height:1.5;color:#527068;margin:13px 5px 4px;text-align:center;}

/* V4.2: map controls live in a normal-flow toolbar, never overlapping one another. */
.world-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:9px;padding:9px 13px;background:#e8f3dd;border-left:3px solid white;border-right:3px solid white;border-bottom:1px solid #bfd5ba}
.world-toolbar .map-instruction{font-size:11px;font-weight:850;color:#25523c}
.world-toolbar .town-live-status{font-size:10px;font-weight:950;color:#1b7153;letter-spacing:.03em}
.world-toolbar .map-zoom{position:static;top:auto;left:auto;margin:0;display:inline-flex;z-index:auto;align-items:center;min-height:32px;padding:8px 11px;white-space:nowrap}
.ownership-card,.ledger-card{min-width:0}
.ownership-head{display:flex;gap:9px;align-items:center;justify-content:space-between;margin-bottom:11px;color:#174234;font-size:12px;font-weight:950}
.ownership-head>span{border-radius:20px;padding:6px 9px;background:#dcf3b9;font-size:9px;white-space:nowrap}
.ownership-head button{border:none;background:transparent;font-weight:950;font-size:10px;color:#127153;text-decoration:underline;cursor:pointer}
.owned-business-list{display:grid;gap:8px}
.owned-business-list>p{font-size:11px;line-height:1.5;color:#5e756b;margin:2px 0 9px}
.business-owned{display:flex;align-items:center;gap:9px;padding:9px;background:#f0f7e8;border:1px solid #cfe4c1;border-radius:11px}
.business-owned>span:first-child{font-size:23px}
.business-owned>div{flex:1;min-width:0}
.business-owned b{display:block;font-size:11px;color:#143f33}
.business-owned small{display:block;color:#557569;font-size:10px;margin-top:2px}
.running-dot{color:#16a16a;font-size:14px}
.small-link-button{display:block;width:100%;padding:10px;margin-top:10px;border:1px solid #aec8a3;border-radius:10px;background:#e5f0d9;color:#1a5942;font-weight:950;font-size:10px;cursor:pointer}
.family-support-summary{background:#eff7e8;border-radius:11px;padding:10px;display:flex;gap:6px;align-items:center;justify-content:space-between;margin-bottom:9px}
.family-support-summary span{font-size:11px;color:#36594b;font-weight:850}
.family-support-summary strong{font-size:14px;color:#1b5c41;white-space:nowrap}
.recent-activity{display:grid;gap:2px}
.money-row{display:flex;align-items:center;gap:7px;padding:9px 3px;border-bottom:1px solid #e3ebe0;min-width:0}
.money-row-icon{font-size:16px;flex-shrink:0}
.money-row-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.money-row-info b{font-size:10px;line-height:1.25;color:#254739;overflow-wrap:anywhere}
.money-row-info small{font-size:9px;color:#789082}
.money-row>strong{font-size:11px;white-space:nowrap}
.money-row>strong.positive{color:#12744d}
.money-row>strong.negative{color:#b64839}
.activity-card .ledger-footnote{font-size:9px;line-height:1.4;color:#698272;margin:10px 0 0}
.all-money-rows{margin:12px 0;max-height:50vh;overflow-y:auto;border-top:1px solid #e3ebe0}
.empty-activity{font-size:11px;color:#607769;padding:10px}
.owned-storefront{cursor:pointer;filter:drop-shadow(0 2px 1px rgba(20,58,36,.24))}
.owned-storefront:hover,.owned-storefront:focus{filter:drop-shadow(0 2px 5px #ffd65f)}
@media(max-width:950px){.ownership-card,.ledger-card{grid-column:1/-1}}
@media(max-width:650px){.world-toolbar{gap:5px 12px;padding:7px 9px}.world-toolbar .map-instruction{font-size:10px;flex:1 1 55%}.world-toolbar .town-live-status{font-size:9px;order:3;flex:1 1 100%}.world-toolbar .map-zoom{font-size:9px;min-height:30px;order:2;padding:6px 8px}}
