:root{--ink:#142226;--deep:#0e191d;--panel:#17282d;--panel2:#20353a;--cream:#f7f1e6;--muted:#a7b7b5;--lime:#d3f36b;--orange:#ef9c68;--line:rgba(255,255,255,.12);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--cream);background:var(--deep)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--deep)}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:3px}.hidden{display:none!important}.screen{min-height:100vh}.landing{padding:24px clamp(18px,5vw,76px) 18px;overflow:hidden;background:radial-gradient(ellipse at 76% 38%,#334d48 0,#182b2d 40%,#101b20 76%)}.topline,footer{font-size:10px;letter-spacing:.16em;font-weight:800;color:#c4d1c7}.dot,.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--lime);margin-right:8px}.topright{float:right;color:#8fa19d}.hero{display:grid;grid-template-columns: .9fr 1.1fr;align-items:center;max-width:1250px;margin:5vh auto 3vh;min-height:72vh;gap:4vw}.hero-copy{position:relative;z-index:2;padding:12px 0}.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:800;color:var(--lime)}h1,h2,h3,p{margin-top:0}.hero h1{font-size:clamp(64px,10vw,140px);line-height:.82;letter-spacing:-.09em;margin:24px 0 16px;font-weight:950}.hero h1 em{font-style:normal;color:var(--lime)}.tagline{font-size:clamp(19px,2vw,27px);font-weight:750;margin-bottom:14px}.intro{max-width:370px;color:#b7c7c0;line-height:1.65;font-size:14px}.landing-actions{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:30px}.primary,.secondary,.ghost{border:0;border-radius:12px;padding:15px 20px;font-weight:800;transition:transform .18s,filter .18s}.primary{background:var(--lime);color:#17221d;box-shadow:0 9px 25px #0002}.primary:hover,.secondary:hover{transform:translateY(-2px);filter:brightness(1.04)}.primary span{margin-left:35px}.secondary{background:#ffffff0e;color:var(--cream);border:1px solid var(--line)}.landing-foot{display:flex;gap:24px;margin-top:36px;color:#90a29c;font-size:11px}.hero-art{height:min(67vh,640px);min-height:380px;position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(#efad72 0%,#c97560 37%,#374c4a 38%,#1a3032 100%);box-shadow:0 30px 80px #0004}.sun{position:absolute;width:130px;height:130px;border-radius:50%;background:#ffe2a2;top:10%;right:20%;box-shadow:0 0 75px #ffd79a99}.tower{position:absolute;bottom:28%;background:#263d3c;border-top:6px solid #d18b65;box-shadow:inset 8px 0 #ffffff0b}.tower:after{content:"";position:absolute;inset:18px 12px;background:repeating-linear-gradient(90deg,transparent 0 12px,#f5c38d66 12px 16px),repeating-linear-gradient(0deg,transparent 0 22px,#f5c38d66 22px 25px)}.tower1{height:37%;width:15%;left:5%}.tower2{height:55%;width:17%;left:21%;background:#314948}.tower3{height:28%;width:16%;left:41%}.tower4{height:45%;width:17%;left:59%;background:#223937}.tower5{height:32%;width:15%;right:5%}.palm{position:absolute;z-index:2;color:#182d2a;font-size:65px;bottom:23%}.palm1{left:5%}.palm2{right:10%;font-size:52px}.road{position:absolute;bottom:0;left:0;right:0;height:26%;background:#172326;transform:perspective(100px) rotateX(2deg)}.road:after{content:"";position:absolute;left:0;right:0;top:50%;border-top:3px dashed #d8c4a0}.car{position:absolute;z-index:3;bottom:13%;width:100px;height:27px;background:#dce3c2;border-radius:9px 20px 5px 5px;box-shadow:0 7px 0 #1118}.car:before{content:"";position:absolute;left:22px;top:-13px;width:48px;height:15px;background:#dce3c2;border-radius:10px 14px 0 0}.car:after{content:"●     ●";position:absolute;top:19px;left:12px;letter-spacing:34px;color:#111;font-size:14px}.car1{left:23%}.car2{right:17%;bottom:7%;transform:scale(.7);background:#e59b5f}.car2:before{background:#e59b5f}.streetlight{position:absolute;bottom:25%;right:28%;height:130px;border-left:4px solid #152b29}.streetlight:before{content:"";position:absolute;top:0;left:-3px;width:30px;border-top:4px solid #152b29;transform:rotate(-20deg)}.art-caption{position:absolute;bottom:16px;left:20px;right:20px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.12em;font-weight:800}.landing>footer{max-width:1250px;margin:auto}.landing>footer span,.game-footer span{color:var(--lime);margin:0 8px}.auth-screen{display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#284541,#0e191d 60%)}.auth-card{width:min(100%,440px);background:#182a2f;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 30px 90px #0004}.back,.linkbtn{border:0;background:none;color:var(--lime);padding:4px 0}.mini-brand{font-size:12px;font-weight:950;letter-spacing:.13em;margin:28px 0 12px}.mini-brand span{color:var(--lime)}.auth-card h2{font-size:30px;letter-spacing:-.04em;margin-bottom:8px}.auth-card>p{color:var(--muted);font-size:13px}.field{margin:18px 0}.field label{display:block;font-size:12px;font-weight:750;color:#d8e0d8;margin-bottom:8px}.field input,.field select,.control{width:100%;background:#0e1b1f;color:var(--cream);border:1px solid var(--line);border-radius:10px;padding:14px}.full{width:100%;margin-top:6px}.msg{font-size:12px;color:#ffb8a8;line-height:1.5;margin:12px 0 0}.msg.ok{color:var(--lime)}.linkbtn{margin-top:18px;font-size:12px}.game{min-height:100vh;background:#0e191d}.game-header{display:flex;align-items:center;justify-content:space-between;padding:16px clamp(16px,4vw,60px);border-bottom:1px solid var(--line);background:#111f23;position:sticky;top:0;z-index:10}.brand-small,.header-right{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:var(--lime);color:#17221d;font-weight:950;font-size:22px}.brand-small b,.brand-small small,.cash small,.cash b{display:block}.brand-small b{font-size:11px;letter-spacing:.1em}.brand-small small,.cash small{font-size:9px;letter-spacing:.1em;color:var(--muted);margin-top:4px}.cash{text-align:right}.cash b{font-size:14px;color:var(--lime);margin-top:4px}.logout{border:1px solid var(--line);background:#ffffff08;color:var(--cream);width:38px;height:38px;border-radius:11px}.game-main{max-width:1150px;margin:auto;padding:28px clamp(14px,3vw,34px) 20px}.welcome-row{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.welcome-row h1{font-size:clamp(25px,4vw,39px);letter-spacing:-.06em;margin:8px 0}.welcome-row p{font-size:13px;color:var(--muted);margin-bottom:0}.level-chip{min-width:82px;border:1px solid var(--line);background:#17282d;border-radius:13px;padding:12px;text-align:center}.level-chip span,.level-chip small{display:block;color:var(--muted);font-size:9px;letter-spacing:.1em}.level-chip b{display:block;font-size:24px;color:var(--lime)}.level-chip small{margin-top:3px}.city-scene{height:220px;border-radius:18px;overflow:hidden;position:relative;background:linear-gradient(180deg,#d99a72 0%,#a76b5c 48%,#344946 49%,#263b39 100%);margin-bottom:18px}.scene-sun{position:absolute;width:75px;height:75px;right:16%;top:20px;background:#ffe3a1;border-radius:50%;box-shadow:0 0 40px #ffe3a166}.scene-buildings{position:absolute;bottom:55px;left:5%;right:5%;height:105px;display:flex;align-items:flex-end;gap:8px}.scene-buildings i{display:block;flex:1;height:56%;background:#253c39;border-top:4px solid #d88c62;position:relative}.scene-buildings i:nth-child(2){height:92%}.scene-buildings i:nth-child(3){height:72%}.scene-buildings i:nth-child(4){height:100%;background:#294541}.scene-buildings i:nth-child(5){height:60%}.scene-buildings i:nth-child(6){height:82%}.scene-buildings i:after{content:"";position:absolute;inset:10px 8px;background:repeating-linear-gradient(90deg,transparent 0 14px,#f7d5a866 14px 18px),repeating-linear-gradient(0deg,transparent 0 17px,#f7d5a866 17px 20px)}.scene-road{position:absolute;bottom:0;left:0;right:0;height:58px;background:#172426}.roadline{position:absolute;left:0;right:0;top:27px;border-top:2px dashed #d6c5a1}.scene-car{position:absolute;left:24%;top:10px;width:75px;height:19px;background:#d9e2c5;border-radius:7px 13px 3px 3px;box-shadow:0 5px #1115}.scene-car:before{content:"";position:absolute;width:32px;height:11px;top:-9px;left:18px;background:inherit;border-radius:7px 9px 0 0}.scene-player{position:absolute;bottom:35px;left:55%;width:30px;height:54px;z-index:3}.player-head{margin:auto;width:17px;height:17px;background:#7d4735;border-radius:50%;border:3px solid #211f1a}.player-body{height:32px;background:#d3f36b;border-radius:8px 8px 4px 4px;margin-top:2px;box-shadow:inset -7px 0 #abc54e}.scene-palm{position:absolute;bottom:46px;right:6%;font-size:57px;color:#1d3731}.scene-location{position:absolute;left:16px;top:15px;display:grid;grid-template-columns:auto 1fr;align-items:center;background:#17282ddd;padding:9px 11px;border-radius:10px;font-size:10px;font-weight:850;letter-spacing:.1em}.scene-location small{grid-column:2;color:#a8b8b0;font-size:8px;margin-top:4px;letter-spacing:.12em}.live-dot{width:6px;height:6px;margin-right:0}.tabs{display:flex;gap:6px;overflow-x:auto;padding:5px 0 13px;scrollbar-width:thin}.tab{flex:0 0 auto;border:1px solid transparent;border-radius:10px;background:transparent;color:#a9b9b5;padding:10px 14px;font-size:12px;font-weight:750}.tab span{margin-right:7px;font-size:15px}.tab.active{background:var(--lime);color:#17221d}.panel{background:#142428;border:1px solid var(--line);border-radius:17px;padding:clamp(16px,3vw,27px);min-height:245px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px}.panel h2{font-size:23px;letter-spacing:-.04em;margin:0 0 6px}.panel .sub{color:var(--muted);font-size:12px;line-height:1.55;margin:0}.section-label{font-size:9px;color:var(--lime);letter-spacing:.15em;font-weight:850;margin-bottom:8px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.feature-card,.item-card,.stat-card{border:1px solid var(--line);border-radius:13px;padding:16px;background:#1a2e32;min-width:0}.feature-card{cursor:pointer;transition:transform .15s,border-color .15s}.feature-card:hover{transform:translateY(-2px);border-color:#d3f36b66}.feature-icon{font-size:24px;margin-bottom:18px}.feature-card h3,.item-card h3{font-size:14px;margin:0 0 7px}.feature-card p,.item-card p{font-size:11px;color:var(--muted);line-height:1.5;margin:0 0 14px}.card-link{color:var(--lime);font-size:10px;font-weight:850;letter-spacing:.05em}.item-card{display:flex;flex-direction:column;gap:8px}.item-card .price{color:var(--lime);font-size:14px;font-weight:850;margin-top:auto}.item-card button,.action-btn{border:1px solid #d3f36b55;background:#d3f36b12;color:var(--lime);border-radius:9px;padding:10px;font-size:11px;font-weight:800}.item-card button:disabled{opacity:.5;cursor:not-allowed}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stat-card .label{font-size:10px;color:var(--muted)}.stat-card strong{display:block;font-size:21px;color:var(--lime);margin-top:9px}.empty,.loading{padding:26px 12px;text-align:center;color:var(--muted);font-size:12px}.field-inline{display:flex;gap:9px;align-items:center;margin:12px 0}.field-inline>*{flex:1;min-width:0}.field-inline input,.field-inline select{background:#0e1b1f;color:var(--cream);border:1px solid var(--line);border-radius:9px;padding:12px;width:100%}.tx-list{display:grid;gap:8px}.tx{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;font-size:11px}.tx:last-child{border-bottom:0}.tx small{display:block;color:var(--muted);margin-top:5px}.positive{color:var(--lime)}.negative{color:#ffb39f}.pill{display:inline-block;border-radius:99px;padding:5px 8px;font-size:9px;background:#d3f36b14;color:var(--lime);margin-bottom:8px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:100;background:#e8f5cf;color:#15231d;border-radius:11px;padding:12px 16px;font-size:12px;font-weight:750;box-shadow:0 8px 35px #0005;max-width:calc(100vw - 30px);transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.game-footer{font-size:9px;letter-spacing:.13em;color:#738782;padding:20px 2px 0}.game-footer #footerStatus{float:right;color:var(--lime)}@media(max-width:760px){.landing{padding:20px 20px 18px}.hero{grid-template-columns:1fr;gap:26px;margin:7vh auto 5vh}.hero-copy{padding:0}.hero h1{font-size:clamp(70px,20vw,112px);margin-top:18px}.hero-art{height:330px;min-height:330px}.hero-art .tower{bottom:28%}.landing-foot{margin-top:26px}.hero-art .sun{width:90px;height:90px}.game-header{padding:13px 15px}.game-main{padding:22px 14px 18px}.city-scene{height:190px}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.item-card{padding:12px}.item-card button{padding:11px 6px}.tab{padding:10px 12px}.panel{padding:16px}.two-col{grid-template-columns:1fr}.welcome-row h1{font-size:27px}.welcome-row p{font-size:11px}.level-chip{min-width:68px;padding:9px}.panel h2{font-size:21px}.panel-head{margin-bottom:15px}}@media(max-width:380px){.grid{grid-template-columns:1fr}.hero-art{height:280px;min-height:280px}.cash b{font-size:12px}.brand-small b{font-size:10px}.welcome-row h1{font-size:24px}}

/* Hiring confirmation modal */
.hire-modal-overlay{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:20px;background:rgba(5,12,14,.78);backdrop-filter:blur(7px)}.hire-modal{width:min(100%,430px);padding:30px 25px 25px;text-align:center;background:#17282d;border:1px solid #d3f36b55;border-radius:22px;box-shadow:0 30px 100px #0009;animation:hirePop .22s ease-out}.hire-modal-check{display:grid;place-items:center;width:54px;height:54px;margin:0 auto 18px;border-radius:50%;background:var(--lime);color:#142226;font-size:30px;font-weight:950}.hire-modal .section-label{margin-bottom:10px}.hire-modal h2{font-size:25px;line-height:1.2;letter-spacing:-.04em;margin:0 0 12px}.hire-modal p{font-size:14px;line-height:1.55;color:var(--cream);margin:0 0 10px}.hire-modal p strong{color:var(--lime)}.hire-modal .hire-modal-sub{font-size:12px;color:var(--muted)}.hire-modal-salary{margin:18px 0;padding:13px;border:1px solid var(--line);border-radius:12px;color:var(--lime);font-weight:850;font-size:18px}.hire-modal-salary small{display:block;margin-top:4px;font-size:10px;color:var(--muted);font-weight:600}.hire-modal .primary{margin-top:8px}@keyframes hirePop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.notification-count{display:none;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ff8d72;color:#182327;font-size:10px;line-height:18px;text-align:center;margin-left:4px}.notification-count.has-count{display:inline-block}.notification-row.unread{background:#d3f36b0c;border-radius:10px;padding:14px 10px;border-left:3px solid var(--lime)}.message-compose{margin-bottom:20px}.message-compose textarea{resize:vertical;font:inherit;line-height:1.5}.settings-toggle{display:flex;gap:12px;align-items:flex-start;cursor:pointer}.settings-toggle input{width:20px;height:20px;accent-color:var(--lime);flex:0 0 auto;margin-top:2px}.settings-toggle b,.settings-toggle small{display:block}.settings-toggle b{font-size:13px}.settings-toggle small{font-size:11px;color:var(--muted);line-height:1.5;margin-top:5px}.danger-btn{border-color:#ffb39f66;color:#ffb39f;background:#ffb39f0c}
.apartment-section{margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}.apartment-room,.guest-room-preview{height:235px;position:relative;overflow:hidden;border:1px solid #d7b58b55;border-radius:14px;background:linear-gradient(180deg,#d9bba0 0 68%,#765746 68% 100%);box-shadow:inset 0 0 0 8px #2b211b33}.apartment-room:before,.guest-room-preview:before{content:"";position:absolute;inset:0 0 32% 0;background:linear-gradient(90deg,#b88d71 0 4%,transparent 4% 96%,#b88d71 96%);opacity:.45}.room-window{position:absolute;left:10%;top:13%;width:92px;height:72px;display:flex;gap:4px;padding:5px;background:#6d5143;border:4px solid #f0d8b7;box-shadow:0 6px 0 #49352e}.room-window span{flex:1;background:linear-gradient(145deg,#b6d8d2,#7ba8a7);border:2px solid #ead5b6}.room-wall-art{position:absolute;right:12%;top:15%;width:75px;height:62px;display:grid;place-content:center;text-align:center;background:#243a35;border:5px solid #dfbd91;color:#d5f36b;font-size:11px;font-weight:900;letter-spacing:.12em;transform:rotate(2deg)}.room-wall-art small{font-size:7px}.room-floor{position:absolute;left:0;right:0;bottom:0;height:32%;background:repeating-linear-gradient(90deg,#795c48 0 44px,#8e6b52 44px 47px);border-top:5px solid #b18a68}.room-sofa{position:absolute;left:34%;bottom:24px;font-size:50px;filter:drop-shadow(0 5px 2px #39261f88)}.room-plant{position:absolute;right:7%;bottom:22px;font-size:36px}.room-piece{position:absolute;z-index:2;font-size:27px;filter:drop-shadow(0 4px 2px #35261e66)}.room-label{position:absolute;bottom:10px;left:12px;z-index:3;background:#142428e8;border:1px solid #ffffff22;border-radius:9px;padding:8px 11px}.room-label b,.room-label small{display:block}.room-label b{font-size:11px}.room-label small{font-size:9px;color:var(--muted);margin-top:4px}.room-inventory{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.invite-actions{display:flex;gap:6px;flex-wrap:wrap}.invite-actions .action-btn{padding:8px}.apartment-visit-modal{width:min(92vw,540px)}.guest-room-preview{margin:18px 0}.guest-room-preview .room-sofa{bottom:22px}.guest-room-preview .room-plant{bottom:22px}


/* V15: visible flight journey animation */
.flight-overlay{z-index:300;background:rgba(5,12,14,.86);backdrop-filter:blur(6px)}
.flight-modal{width:min(100%,760px);padding:clamp(18px,4vw,30px);background:#f5f0e6;color:#17272a;border-radius:20px;box-shadow:0 25px 90px #0008;overflow:hidden}
.flight-topline{display:flex;align-items:center;justify-content:space-between;gap:12px}.flight-topline .section-label{margin:0;color:#536a5e}.flight-class{border-radius:99px;padding:7px 10px;background:#e4e9d0;font-size:11px;font-weight:800}
.flight-modal h2{font-size:clamp(23px,4vw,34px);letter-spacing:-.04em;margin:12px 0 4px}.flight-modal h2 span{color:#698d62}.flight-subtitle{font-size:13px;color:#5d6c69;margin:0 0 15px}
.flight-scene{height:245px;position:relative;overflow:hidden;border-radius:15px;background:linear-gradient(180deg,#86c3d8 0%,#d5e8df 75%,#b6c7a6 100%);border:1px solid #7d9f9b55;isolation:isolate}
.flight-sun{position:absolute;right:13%;top:14%;width:45px;height:45px;border-radius:50%;background:#fff0b0;box-shadow:0 0 35px #fff0b066}
.flight-cloud{position:absolute;color:#fff;font-size:64px;line-height:1;opacity:.82;text-shadow:0 4px 0 #fff3;white-space:nowrap}.cloud-one{left:12%;top:26%;animation:cloudDrift 12s linear infinite}.cloud-two{left:48%;top:13%;font-size:48px;animation:cloudDrift 16s linear infinite reverse}.cloud-three{left:73%;top:48%;font-size:55px;animation:cloudDrift 14s linear infinite}
.flight-route-line{position:absolute;left:8%;right:8%;top:53%;border-top:2px dashed #fff9}
.flight-plane{position:absolute;z-index:3;left:-18%;top:63%;width:clamp(112px,24vw,154px);height:auto;filter:drop-shadow(0 8px 5px #203c4544);transform:rotate(0deg) scale(.72);transform-origin:center;animation:aircraftJourney 18s cubic-bezier(.32,.03,.24,1) forwards;will-change:left,top,transform}.flight-plane svg{display:block;width:100%;height:auto;overflow:visible}.jet-gear{opacity:1;transition:opacity .25s}.flight-scene:not(.landed) .flight-plane{animation-fill-mode:forwards}.flight-plane .jet-wing-back{opacity:.95}
.flight-airport{position:absolute;z-index:2;bottom:16px;display:flex;flex-direction:column;gap:3px;color:#fff;background:#17383dd9;border-radius:9px;padding:8px 10px;box-shadow:0 4px 14px #17383d22}.flight-airport b{font-size:13px;letter-spacing:.08em}.flight-airport small{font-size:8px;letter-spacing:.12em}.from-airport{left:12px}.to-airport{right:12px;text-align:right}.flight-runway{position:absolute;bottom:0;left:0;right:0;height:7px;background:repeating-linear-gradient(90deg,#6e8b6d 0 35px,#8da586 35px 70px)}
.flight-progress{height:7px;border-radius:99px;background:#d7dfd5;overflow:hidden;margin:15px 0 12px}.flight-progress span{display:block;width:0;height:100%;background:#6f985d;border-radius:99px;transition:width .12s linear}
.flight-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px 0;border-top:1px solid #d7ded5;border-bottom:1px solid #d7ded5}.flight-details small,.flight-details b{display:block}.flight-details small{font-size:8px;letter-spacing:.1em;color:#687975;margin-bottom:5px}.flight-details b{font-size:12px;overflow-wrap:anywhere}.flight-note{font-size:12px;color:#536660;line-height:1.45;min-height:18px;margin:12px 0}.flight-modal .primary{background:#d3f36b;color:#17221d;border:0}.flight-modal .primary:disabled{opacity:.7;cursor:default}.flight-skip{display:block;margin:9px auto 0;border:0;background:transparent;color:#63736d;text-decoration:underline;font-size:11px;padding:8px}
.flight-scene.landed{background:linear-gradient(180deg,#f0bd8c 0%,#d7e1ce 70%,#9bb49a 100%)}.flight-scene.landed .flight-plane{animation:none;left:75%;top:64%;transform:rotate(0deg) scale(.62);filter:drop-shadow(0 3px 2px #203c4533)}.flight-scene.landed .flight-plane .jet-gear{opacity:1}
@keyframes aircraftJourney{
  0%{left:-18%;top:63%;transform:rotate(0deg) scale(.72)}
  8%{left:0%;top:63%;transform:rotate(0deg) scale(.74)}
  15%{left:10%;top:57%;transform:rotate(-7deg) scale(.78)}
  24%{left:19%;top:42%;transform:rotate(-10deg) scale(.84)}
  35%{left:31%;top:25%;transform:rotate(-5deg) scale(.94)}
  48%{left:44%;top:20%;transform:rotate(0deg) scale(1)}
  62%{left:57%;top:23%;transform:rotate(2deg) scale(.98)}
  73%{left:66%;top:33%;transform:rotate(6deg) scale(.9)}
  84%{left:72%;top:47%;transform:rotate(8deg) scale(.8)}
  93%{left:75%;top:59%;transform:rotate(4deg) scale(.7)}
  100%{left:75%;top:64%;transform:rotate(0deg) scale(.62)}
}
@keyframes cloudDrift{from{translate:-20px 0}to{translate:30px 0}}
@media(max-width:540px){.flight-scene{height:205px}.flight-details{gap:6px}.flight-details small{font-size:7px}.flight-details b{font-size:10px}.flight-plane{width:110px}.flight-modal{padding:17px}}
@media(prefers-reduced-motion:reduce){.flight-cloud{animation:none}.flight-plane{animation-duration:18s;animation-timing-function:linear}}


/* V17: interactive Accra city map and destination cards */
.map-current-pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#d3f36b12;color:var(--lime);padding:9px 11px;border-radius:999px;font-size:10px;font-weight:800;max-width:170px}
.accra-map-shell{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#17282b;margin:18px 0 26px}
.map-top-label{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 17px;background:#203638;border-bottom:1px solid #ffffff10}.map-top-label b{font-size:13px;letter-spacing:.15em;color:var(--lime)}.map-top-label span{font-size:9px;letter-spacing:.12em;color:#a4b9ae}
.accra-map-art{height:360px;position:relative;overflow:hidden;isolation:isolate;background-color:#263d37;background-image:radial-gradient(ellipse at 30% 20%,#547363 0 8%,transparent 9%),radial-gradient(ellipse at 70% 48%,#405e4e 0 11%,transparent 12%),radial-gradient(ellipse at 28% 74%,#3e5a49 0 12%,transparent 13%),linear-gradient(135deg,#263d37,#1c302d 68%,#304b3e)}
.map-water{position:absolute;right:-5%;bottom:-18%;width:47%;height:40%;background:linear-gradient(135deg,#2e7980,#1f5e69);border-radius:60% 0 0 0;transform:rotate(-9deg);opacity:.92;border-top:5px solid #83b6a477}
.map-road{position:absolute;height:12px;background:#d5c8a54d;border:2px solid #d8d0b42c;border-left:0;border-right:0;border-radius:100%;z-index:1;transform-origin:center}
.road-a{left:-10%;top:37%;width:125%;transform:rotate(-14deg)}.road-b{left:-8%;top:63%;width:125%;transform:rotate(18deg)}.road-c{left:17%;top:48%;width:95%;transform:rotate(65deg)}.road-d{left:43%;top:36%;width:75%;transform:rotate(-48deg)}
.map-district{position:absolute;color:#c9ddc8a6;font-size:9px;font-weight:900;letter-spacing:.2em;z-index:1;pointer-events:none}.district-one{left:51%;top:8%}.district-two{right:8%;top:17%}.district-three{left:30%;top:68%}.district-four{right:20%;bottom:8%}
.map-pin{position:absolute;z-index:3;transform:translate(-50%,-50%);border:0;background:transparent;color:#f5f1e6;display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer;padding:0;max-width:125px}.map-pin span{width:38px;height:38px;border-radius:50% 50% 50% 10px;transform:none;display:grid;place-items:center;background:var(--lime);color:#1c2b25;border:3px solid #f8f5e8;box-shadow:0 4px 15px #0008;font-size:17px}.map-pin span::first-letter{transform:rotate(45deg)}.map-pin small{background:#11211feF;border:1px solid #d3f36b66;border-radius:6px;padding:4px 6px;font-size:9px;line-height:1.2;font-weight:800;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.map-pin.is-current span{background:#ffb77a;animation:pinPulse 1.8s infinite}.map-pin:hover span,.map-pin:focus-visible span{scale:1.1}.map-compass{position:absolute;right:13px;top:13px;z-index:2;width:35px;height:43px;display:grid;place-content:center;text-align:center;border-radius:8px;background:#11211fcf;color:#e8f3df;font-size:11px;font-weight:900;line-height:1.3}
.map-legend{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 16px;font-size:10px;color:var(--muted);background:#132326}.map-legend span:first-child{display:flex;align-items:center;gap:7px}.map-legend i{display:inline-block;width:8px;height:8px;background:var(--lime);border-radius:50%}.map-place-heading{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-bottom:13px}.map-place-heading h3{font-size:19px;margin:4px 0 0}.map-count{font-size:10px;color:var(--muted)}.map-place-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.map-place-card{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#17282b;min-width:0}.map-photo-button{width:100%;height:130px;position:relative;display:block;overflow:hidden;border:0;padding:0;background:linear-gradient(135deg,#355b4d,#b5a47c);cursor:pointer}.map-photo-button img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}.map-photo-button:hover img{transform:scale(1.04)}.map-photo-icon{position:absolute;left:10px;top:10px;width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#11211fd9;border:1px solid #ffffff3b;font-size:17px}.map-kind{position:absolute;right:8px;bottom:8px;padding:5px 7px;border-radius:99px;background:#11211fe8;color:var(--lime);font-size:8px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.map-place-copy{padding:12px}.map-place-copy h4{font-size:13px;margin:0 0 5px;line-height:1.3}.map-place-copy p{font-size:10px;color:var(--muted);margin:0 0 11px}.map-place-copy .action-btn{width:100%;padding:9px 7px;font-size:10px}.map-disclaimer{font-size:10px;line-height:1.5;color:var(--muted);margin:14px 0 0}.place-detail-modal{position:relative;width:min(100%,470px);text-align:left;padding:18px}.place-close{position:absolute;right:15px;top:15px;z-index:4;width:34px;height:34px;border:1px solid #ffffff66;border-radius:50%;background:#11211fe8;color:white;font-size:25px;line-height:1;cursor:pointer}.place-detail-image{display:block;width:100%;height:180px;object-fit:cover;border-radius:13px;margin-bottom:18px;background:#2b453e}.place-detail-modal .section-label{margin-bottom:7px}.place-detail-modal h2{font-size:24px;line-height:1.2;margin:0 0 10px}.place-detail-modal>p{font-size:13px;line-height:1.55;color:#e0e8dd}.place-activities{display:grid;gap:9px;margin:17px 0 20px;padding:14px;border:1px solid #ffffff19;border-radius:12px;background:#ffffff06}.place-activities b{font-size:9px;letter-spacing:.13em;color:var(--lime);margin-bottom:3px}.place-activities span{font-size:12px;color:#e4e8df}.place-detail-modal .primary{background:var(--lime);color:#18241d;border:0}.place-detail-modal .hire-modal-sub{font-size:10px;text-align:center;margin:12px 0 0;color:var(--muted)}
@keyframes pinPulse{0%,100%{box-shadow:0 4px 15px #0008}50%{box-shadow:0 0 0 7px #ffb77a35,0 4px 15px #0008}}
@media(max-width:540px){.accra-map-art{height:320px}.map-pin span{width:32px;height:32px;font-size:14px}.map-pin small{font-size:8px;max-width:100px}.map-place-grid{gap:9px}.map-photo-button{height:112px}.map-place-copy{padding:10px}.map-place-copy h4{font-size:12px}.map-top-label{padding:12px}.map-top-label span{font-size:8px}.place-detail-image{height:150px}}

/* V17 social venues: arriving opens an explorable place, not just a map pin. */
.venue-scene{position:relative;min-height:245px;border-radius:16px;overflow:hidden;background:#263b36;margin:6px 0 24px}.venue-scene>img{position:absolute;inset:0;width:100%;height:100%;min-height:245px;object-fit:cover}.venue-scene-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,20,20,.88),rgba(8,20,20,.15)),linear-gradient(0deg,rgba(8,20,20,.7),transparent 70%)}.venue-scene-caption{position:relative;z-index:1;max-width:520px;padding:25px 20px;min-height:245px;display:flex;flex-direction:column;justify-content:flex-end}.venue-live-pill{display:inline-block;align-self:flex-start;border:1px solid #ffffff55;background:#10201dcc;color:#eaf4dc;padding:7px 9px;border-radius:99px;font-size:9px;letter-spacing:.08em;font-weight:800}.venue-scene-caption h3{font-size:27px;margin:14px 0 7px;letter-spacing:-.04em}.venue-scene-caption p{font-size:12px;line-height:1.5;color:#e4e9e1;margin:0}.venue-activities{margin-bottom:25px}.venue-activities h3,.venue-crowd h3{font-size:17px;margin:0 0 6px}.venue-activity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}.venue-activity{min-height:48px;text-align:left;border:1px solid var(--line);background:#1a2e32;color:var(--cream);border-radius:11px;padding:12px;font-size:11px;font-weight:750}.venue-activity:hover{border-color:#d3f36b77;background:#d3f36b0c}.venue-crowd{border-top:1px solid var(--line);padding-top:20px}.venue-crowd-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px}.venue-count{white-space:nowrap;border-radius:99px;background:#d3f36b14;color:var(--lime);font-size:10px;padding:7px 9px}.venue-people-list{display:grid;gap:9px}.venue-person{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#192c30;min-width:0}.venue-avatar{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:50%;background:#d3f36b;color:#17221d;font-weight:900;font-size:17px}.venue-person-copy{min-width:0;flex:1}.venue-person-copy b{display:block;font-size:12px;overflow-wrap:anywhere}.venue-person-copy small{display:block;color:var(--muted);font-size:10px;line-height:1.6;margin-top:3px}.venue-live-dot{display:inline-block;width:6px;height:6px;background:#d3f36b;border-radius:50%;margin-right:4px}.venue-person-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.venue-person-actions .action-btn{padding:8px;font-size:10px}.venue-empty{padding:22px 14px;text-align:center;border:1px dashed #ffffff2a;border-radius:13px;background:#ffffff04}.venue-empty>div{font-size:27px;margin-bottom:7px}.venue-empty>b{font-size:13px}.venue-empty p{max-width:400px;margin:8px auto 13px;font-size:11px;line-height:1.6;color:var(--muted)}@media(max-width:540px){.venue-scene,.venue-scene>img,.venue-scene-caption{min-height:220px}.venue-scene-caption{padding:18px 15px}.venue-scene-caption h3{font-size:23px}.venue-person{align-items:flex-start;flex-wrap:wrap}.venue-person-copy{padding-top:4px}.venue-person-actions{width:100%;padding-left:53px;justify-content:flex-start}.venue-activity-grid{grid-template-columns:1fr}.venue-crowd-head{align-items:flex-start;flex-direction:column}}

/* Player-controlled furniture placement and resale controls */
.room-piece{position:absolute;z-index:4;font:inherit;line-height:1;background:transparent;border:1px solid transparent;border-radius:8px;padding:2px 4px;cursor:grab;touch-action:none;user-select:none;transform:translate(-50%,0);font-size:30px;filter:drop-shadow(0 4px 2px #35261e66);}
.room-piece:hover,.room-piece:focus-visible{background:#ffffff44;border-color:#ffffff88;outline:2px solid #d5f36b;}
.room-piece.is-dragging{cursor:grabbing;z-index:8;transform:translate(-50%,-3px) scale(1.12);background:#ffffff55;}
.owned-furniture-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:12px;}
.mini-action{border:1px solid var(--line);background:transparent;color:var(--text);border-radius:8px;padding:6px 9px;font-size:11px;white-space:nowrap;cursor:pointer;}
.mini-action:hover{border-color:var(--accent);}

/* V20: city activities and player-organised house parties */
.house-party-section{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}.house-party-section>h3{font-size:21px;margin:6px 0}.house-party-section>.sub{max-width:620px;line-height:1.55;margin-bottom:16px}.party-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.party-card,.party-create-box{min-width:0;border:1px solid var(--line);border-radius:15px;background:#17282b;padding:15px}.party-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.party-card .pill{margin:0}.party-attendee-count{font-size:10px;color:var(--lime)}.party-card h4{font-size:16px;line-height:1.3;margin:13px 0 8px}.party-card p{font-size:11px;line-height:1.55;color:var(--muted);overflow-wrap:anywhere;margin:0 0 8px}.party-card .party-time{color:var(--cream)}.party-card button{margin-top:8px;width:100%;min-height:42px}.party-card .primary{background:var(--lime);color:#17221d;border:0;border-radius:9px;font-weight:850}.party-empty{grid-column:1/-1;padding:20px;border:1px dashed var(--line);border-radius:13px;color:var(--muted);font-size:12px;line-height:1.6}.party-create-box{margin-top:15px;background:#1b3031}.party-create-box h4{font-size:16px;margin:0 0 14px}.party-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.party-form-grid .field{min-width:0}.party-form-grid .control{width:100%;min-width:0}.party-description-field{grid-column:1/-1}.party-create-box>.primary{margin-top:14px;min-height:44px;background:var(--lime);color:#17221d;border:0;border-radius:9px;font-weight:850}.party-create-box>.action-btn{margin-top:8px}@media(max-width:540px){.party-grid,.party-form-grid{grid-template-columns:1fr}.party-description-field{grid-column:auto}.party-card{padding:13px}}

/* V21: visible character actions, activity timers and XP rewards */
.venue-activity{display:flex;align-items:center;gap:10px;min-width:0;min-height:66px}.venue-activity-icon{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:11px;background:#d3f36b16;font-size:23px}.venue-activity>span:nth-child(2){display:flex;flex-direction:column;gap:5px;min-width:0}.venue-activity small{display:block;color:var(--muted);font-size:9px;font-weight:600}.venue-activity-arrow{margin-left:auto;color:var(--lime);font-size:17px}.activity-stage{display:flex;align-items:center;gap:16px;margin-top:15px;padding:17px;border:1px solid #d3f36b55;border-radius:15px;background:linear-gradient(135deg,#1b3434,#19282b);min-width:0}.activity-avatar{width:78px;height:78px;flex:0 0 78px;display:grid;place-items:center;border-radius:20px;background:#d3f36b18;border:1px solid #d3f36b55;font-size:42px}.activity-moving{animation:activityCharacter 1.15s ease-in-out infinite alternate}.activity-copy{min-width:0;flex:1}.activity-copy h3{font-size:18px;margin:5px 0 6px}.activity-copy p{font-size:11px;line-height:1.6;color:var(--muted);margin:0 0 11px}.activity-reward{display:flex;flex-wrap:wrap;gap:8px 14px;margin:10px 0;color:var(--lime);font-size:10px;font-weight:800}.activity-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.activity-actions .primary{min-height:43px;padding:11px 14px;background:var(--lime);color:#17221d;border:0;border-radius:9px;font-weight:850}.activity-note{font-size:9px;color:var(--muted);line-height:1.5}.activity-progress{height:8px;border-radius:99px;overflow:hidden;background:#ffffff17;margin:13px 0 5px}.activity-progress span{display:block;height:100%;background:var(--lime);border-radius:99px;transition:width .8s linear}.activity-running{border-color:#d3f36b99}.activity-complete{border-color:#78cba788;background:linear-gradient(135deg,#183b31,#19282b)}@keyframes activityCharacter{0%{transform:translateY(0) rotate(-4deg) scale(.98)}50%{transform:translateY(-5px) rotate(3deg) scale(1.04)}100%{transform:translateY(0) rotate(-2deg) scale(1)}}@media(max-width:540px){.activity-stage{align-items:flex-start;gap:12px;padding:13px}.activity-avatar{width:56px;height:56px;flex-basis:56px;font-size:30px;border-radius:14px}.activity-copy h3{font-size:16px}.activity-actions{align-items:stretch;flex-direction:column}.activity-actions .primary{width:100%}}

/* V22: actual 2D character scenes for churches, clubs, campuses and house parties */
.venue-scene.venue-live-scene,.venue-scene.venue-party-scene{min-height:330px;background:#17292b;isolation:isolate}
.venue-scene.venue-live-scene>img,.venue-scene.venue-party-scene>img{min-height:330px;filter:saturate(.72);opacity:.48}
.venue-live-scene>.venue-scene-shade,.venue-party-scene>.venue-scene-shade{background:linear-gradient(180deg,rgba(6,14,17,.48),rgba(6,14,17,.08) 36%,rgba(6,14,17,.65))}
.venue-live-scene .venue-scene-caption,.venue-party-scene .venue-scene-caption{z-index:4;min-height:0;position:relative;justify-content:flex-start;max-width:100%;padding:15px 17px 14px;background:linear-gradient(90deg,rgba(6,14,17,.75),transparent);pointer-events:none}
.venue-live-scene .venue-scene-caption h3,.venue-party-scene .venue-scene-caption h3{font-size:22px;margin:8px 0 4px}
.venue-live-scene .venue-scene-caption p,.venue-party-scene .venue-scene-caption p{max-width:480px;font-size:10px}
.live-game-world{position:absolute;z-index:2;inset:0;overflow:hidden;background:linear-gradient(180deg,#243f44,#3b5149 72%,#6a7557);isolation:isolate}
.live-game-world:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 58%,rgba(8,18,16,.45)),radial-gradient(ellipse at 50% 105%,#879276 0,transparent 56%);pointer-events:none}
.world-set-dressing{position:absolute;inset:0;overflow:hidden}
.world-character-stage{position:absolute;z-index:3;left:3%;right:3%;bottom:25px;height:180px;display:flex;align-items:flex-end;justify-content:center;gap:clamp(0px,2vw,20px);padding:0 8px}
.world-character{position:relative;flex:0 1 78px;width:78px;min-width:34px;height:145px;display:flex;align-items:flex-end;justify-content:center;animation:worldBob 2.1s ease-in-out infinite;animation-delay:var(--delay,0s);transform-origin:50% 100%;filter:drop-shadow(0 4px 2px #07110d55)}
.world-character:nth-child(2n){animation-duration:2.5s}.world-character:nth-child(3n){animation-duration:1.8s}
.character-drawing{width:100%;height:100%;overflow:visible;position:relative;z-index:1}
.world-nameplate{position:absolute;z-index:4;bottom:calc(100% - 2px);left:50%;transform:translateX(-50%);max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#101c20ed;border:1px solid #ffffff36;border-radius:7px;padding:4px 6px;color:#f6f3e9;font-size:9px;font-weight:850;box-shadow:0 2px 8px #0005}
.world-character.is-self .world-nameplate{background:#d3f36b;color:#14211d;border-color:#efffc0}
.world-character-state{position:absolute;z-index:2;bottom:2px;left:50%;transform:translateX(-50%);font-size:8px;white-space:nowrap;color:#f7f4e7;text-shadow:0 1px 3px #000;background:#14211db8;padding:2px 5px;border-radius:5px}
.world-character.is-self .character-drawing{filter:drop-shadow(0 0 6px #d3f36b75)}
.world-character.sprite-dance{animation:worldDance .75s ease-in-out infinite alternate;animation-delay:var(--delay,0s)}
.world-character.sprite-worship .sprite-arm.arm-a{transform-origin:22px 44px;animation:worldRaise .9s ease-in-out infinite alternate}
.world-character.sprite-worship .sprite-arm.arm-b{transform-origin:46px 44px;animation:worldRaise .9s ease-in-out infinite alternate-reverse}
.world-character.sprite-workout .sprite-arm{animation:worldPump .65s ease-in-out infinite alternate;transform-origin:35px 48px}
.world-scene-label{position:absolute;z-index:5;left:12px;bottom:9px;border:1px solid #ffffff35;border-radius:7px;background:#0c171bd9;padding:5px 7px;font-size:8px;letter-spacing:.07em;font-weight:900;color:#eaf3dc}
.world-scene-label span{color:#d3f36b;padding:0 3px}
.world-church{background:linear-gradient(180deg,#344955 0,#667a77 62%,#856f59 63%,#3e3029 100%)}
.world-church .world-window{position:absolute;top:24px;width:48px;height:92px;border:5px solid #c6b89b;background:linear-gradient(135deg,#85d5e6,#e8e6c2 45%,#7cabc4);border-radius:25px 25px 3px 3px;box-shadow:0 0 0 2px #382d2b}.world-church .win-a{left:13%}.world-church .win-b{right:13%}
.world-altar{position:absolute;top:38px;left:50%;transform:translateX(-50%);width:66px;height:72px;display:grid;place-items:center;background:#6e4e37;border:4px solid #b99769;color:#f4e4a6;font-size:32px;box-shadow:0 8px 0 #3d2e29}.world-altar small{position:absolute;bottom:2px;font-size:6px;letter-spacing:.15em;color:#fff0c4}
.world-pew{position:absolute;left:5%;right:5%;height:12px;border-radius:3px;background:#68462e;border-bottom:4px solid #2f2724;box-shadow:0 -3px 0 #9d704a}.world-church .pew-a{bottom:45px}.world-church .pew-b{bottom:25px;left:18%;right:18%}
.world-club{background:radial-gradient(ellipse at 50% 15%,#8a368f 0,transparent 40%),linear-gradient(180deg,#11142b,#2b1742 60%,#141722)}.world-club:before{background:repeating-linear-gradient(110deg,transparent 0 38px,#7d4fff19 39px 42px),linear-gradient(180deg,transparent 42%,#0b0d1a 70%,#10111a)}
.club-beam{position:absolute;top:-15px;width:30%;height:230px;filter:blur(8px);opacity:.52;transform-origin:top center}.beam-a{left:23%;background:linear-gradient(#e25cdd,transparent);transform:rotate(24deg)}.beam-b{right:18%;background:linear-gradient(#42c4ff,transparent);transform:rotate(-26deg)}.club-dj{position:absolute;top:30px;left:50%;transform:translateX(-50%);width:72px;height:46px;display:grid;place-items:center;background:#171624;border:2px solid #b46de6;border-radius:8px;color:#e6c9ff;font-size:27px;box-shadow:0 0 22px #a54cff77}.club-dj small{position:absolute;bottom:1px;font-size:6px;letter-spacing:.2em}.club-floor{position:absolute;left:0;right:0;bottom:0;height:40%;background:repeating-linear-gradient(90deg,#ffffff08 0 2px,transparent 2px 35px),linear-gradient(180deg,#9a55ad20,#b65ad63b);border-top:2px solid #d781ff55}
.world-gym{background:linear-gradient(180deg,#263e48,#49636a 64%,#39474b 65%,#212b2d)}.gym-mirror{position:absolute;left:10%;right:10%;top:24px;height:98px;border:5px solid #33474a;background:linear-gradient(120deg,#9ebfc0aa,#425d6a99);box-shadow:inset 0 0 0 2px #ffffff2c}.gym-rack{position:absolute;right:9%;top:36px;color:#1b2629;font-size:26px;letter-spacing:7px;writing-mode:vertical-rl;text-shadow:0 0 2px #a7c0c0}
.world-beach{background:linear-gradient(180deg,#7bc6e2 0,#d9dca7 55%,#dfc38c 56%,#ba9669 100%)}.beach-sun{position:absolute;right:15%;top:20px;width:38px;height:38px;border-radius:50%;background:#ffe9a2;box-shadow:0 0 30px #fff4c1}.beach-wave{position:absolute;left:-10%;right:-10%;height:22px;border-radius:50%;background:#6bc0d6aa}.wave-a{top:52%}.wave-b{top:60%;left:8%;background:#a2e1df99}
.world-campus{background:linear-gradient(180deg,#7bb3c4,#cad8bd 55%,#6c865c 56%,#435c42)}.world-campus:before{background:linear-gradient(180deg,transparent 45%,#38543933)}.world-campus .world-window{position:absolute;top:30px;left:14%;right:14%;height:70px;background:#d4c7a4;border:8px solid #826c50;box-shadow:inset 0 0 0 4px #d9e7d4}.world-campus .world-window:after{content:"";position:absolute;left:50%;top:0;bottom:0;border-left:4px solid #826c50}
.world-cinema{background:linear-gradient(180deg,#171d30,#323249 60%,#191923)}.cinema-screen{position:absolute;left:25%;right:25%;top:18px;height:75px;display:grid;place-items:center;background:linear-gradient(135deg,#7da9c6,#f2c5a1);border:5px solid #222331;box-shadow:0 0 18px #8ec6ed55;color:#26343a;font-size:8px;font-weight:900;letter-spacing:.15em}.cinema-seat{position:absolute;bottom:45px;width:25%;height:23px;border-radius:7px 7px 2px 2px;background:#743e4a;border-bottom:6px solid #41272f}.seat-a{left:8%}.seat-b{right:8%}
.world-lounge,.world-party{background:linear-gradient(180deg,#394a4d,#6e7565 58%,#755a43 59%,#362c2a)}.world-lamp{position:absolute;top:12px;right:18%;height:58px;width:5px;background:#d2b28a}.world-lamp:before{content:"";position:absolute;top:-3px;left:-17px;width:39px;height:19px;border-radius:50% 50% 4px 4px;background:#ffe4a5;box-shadow:0 0 22px #ffe4a588}.world-lounge .world-window{position:absolute;top:24px;left:12%;width:66px;height:75px;background:linear-gradient(135deg,#87b9c6,#c7d9c0);border:5px solid #574a3b}.world-sofa{position:absolute;bottom:40px;right:8%;width:100px;height:28px;background:#5b7564;border-radius:8px 8px 2px 2px;border-bottom:8px solid #34473e}.world-party{background:radial-gradient(ellipse at 50% 15%,#a96083 0,transparent 38%),linear-gradient(180deg,#39444a,#715c5b 59%,#6d5140 60%,#342b2b)}.party-bunting{position:absolute;top:22px;left:8%;right:8%;color:#ffe0a0;font-size:18px;letter-spacing:4px;text-align:center}.party-speaker{position:absolute;left:8%;bottom:45px;width:36px;height:50px;border:3px solid #2d2529;border-radius:4px;background:#1d242b;color:#d3f36b;display:grid;place-items:center;font-size:22px}
@keyframes worldBob{0%,100%{translate:0 0}50%{translate:0 -3px}}
@keyframes worldDance{0%{transform:rotate(-7deg) translateY(0)}100%{transform:rotate(7deg) translateY(-7px)}}
@keyframes worldRaise{0%{rotate:0deg}100%{rotate:-62deg}}
@keyframes worldPump{0%{rotate:-22deg}100%{rotate:28deg}}
@media(max-width:540px){.venue-scene.venue-live-scene,.venue-scene.venue-party-scene,.venue-scene.venue-live-scene>img,.venue-scene.venue-party-scene>img{min-height:310px}.world-character-stage{left:0;right:0;bottom:25px;height:150px;gap:0;padding:0 3px}.world-character{flex-basis:62px;height:126px;min-width:28px}.world-nameplate{font-size:7px;max-width:70px;padding:3px 4px}.world-character-state{font-size:7px}.world-scene-label{font-size:7px;left:7px;bottom:7px}.world-church .world-window{height:62px;width:31px;top:26px}.world-altar{top:43px;width:50px;height:54px}.club-dj{top:38px}.world-lounge .world-window{width:44px;height:59px}.world-sofa{width:67px;height:23px}}

/* V23: playable character movement, populated venues and a real-looking UPSA lecture room */
.world-character-stage{display:block!important;left:0!important;right:0!important;bottom:22px!important;height:178px!important;padding:0!important;overflow:visible!important}
.world-character{position:absolute!important;flex:none!important;width:70px!important;min-width:0!important;height:138px!important;margin-left:-35px!important;z-index:3;cursor:default;transition:left .22s ease,bottom .22s ease}
.world-character.is-self{z-index:5}
.world-character.is-npc{filter:drop-shadow(0 3px 2px #07110d66)}
.world-character.is-seated{height:112px!important;animation:none!important}
.world-character.is-seated .sprite-leg{transform-origin:35px 78px;transform:rotate(62deg) translate(2px,-2px)}
.world-character.is-seated .sprite-arm.arm-a{transform:rotate(-26deg) translate(7px,4px);transform-origin:22px 44px}
.world-character.is-seated .sprite-arm.arm-b{transform:rotate(26deg) translate(-7px,4px);transform-origin:46px 44px}
.world-character.is-seated .world-character-state{bottom:-4px}
.world-nameplate{max-width:118px;font-size:8px}
.world-character.is-npc .world-nameplate{background:#172b32e8;border-color:#ffffff45}
.world-character.is-self .world-nameplate{background:#d3f36b;color:#14211d}
.world-classroom{background:linear-gradient(180deg,#c4d0d1 0,#d9ded6 53%,#8b9a83 54%,#63755d 100%)}
.world-classroom:before{background:linear-gradient(180deg,transparent 0 42%,#20372b15 43% 100%),linear-gradient(90deg,#23362a13 1px,transparent 1px);background-size:auto,42px 100%}
.classroom-board{position:absolute;left:22%;right:22%;top:13px;height:68px;background:#23483d;border:8px solid #9a7b57;box-shadow:0 4px 0 #6c543d,inset 0 0 0 1px #d7c7a0;color:#f0f3dc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center}
.classroom-board b{font-size:16px;letter-spacing:.14em;color:#d3f36b}
.classroom-board span{font-size:7px;font-weight:900;letter-spacing:.15em}
.classroom-board small{font-size:8px;color:#dce6d5}
.classroom-teacher{position:absolute;top:83px;left:50%;width:50px;height:72px;transform:translateX(-50%);z-index:2;display:flex;align-items:center;flex-direction:column}
.teacher-head{width:21px;height:22px;border-radius:50%;background:#8d5539;border:2px solid #4a3028;position:relative;z-index:2}
.teacher-head:before{content:"";position:absolute;left:-1px;top:-4px;width:21px;height:10px;border-radius:12px 12px 4px 4px;background:#211813}
.teacher-body{width:34px;height:42px;background:#e9eee9;border:2px solid #51615a;border-radius:9px 9px 3px 3px;margin-top:-1px}
.classroom-teacher b{position:absolute;top:64px;font-size:6px;letter-spacing:.08em;background:#14251e;color:#fff;padding:3px 4px;border-radius:4px;white-space:nowrap}
.classroom-desk{position:absolute;z-index:2;height:11px;width:17%;border-radius:3px 3px 1px 1px;background:linear-gradient(180deg,#c79a66,#98683f);border:2px solid #725035;box-shadow:0 7px 0 -2px #4a5147,0 10px 0 -4px #303e36}
.desk-a{left:8%;bottom:14%}.desk-b{left:25%;bottom:14%}.desk-c{left:42%;bottom:14%}.desk-d{left:59%;bottom:14%}.desk-e{left:76%;bottom:14%}.desk-f{left:17%;bottom:37%;width:16%}
.classroom-door{position:absolute;right:3%;bottom:0;width:44px;height:94px;border:5px solid #806348;border-bottom:0;background:linear-gradient(90deg,#7b6048,#b68d61);display:flex;align-items:flex-start;justify-content:center;padding-top:5px;color:#f4e9ce;font-size:7px;font-weight:900;letter-spacing:.1em}
.world-classroom .world-scene-label{background:#17251fdc}
.world-play-controls{margin:-8px 0 24px;padding:16px;border:1px solid #ffffff20;border-radius:15px;background:linear-gradient(135deg,#1b3032,#182629)}
.world-controls-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.world-controls-title h3{font-size:16px;margin:4px 0 5px}
.world-controls-title p{font-size:11px;line-height:1.5;color:var(--muted);margin:0}
.world-control-hint{font-size:9px;font-weight:800;white-space:nowrap;border:1px solid #ffffff22;border-radius:99px;padding:7px 9px;color:#d3f36b}
.world-controls-row{display:flex;gap:18px;align-items:center;margin-top:15px}
.world-dpad{width:112px;flex:0 0 112px;display:flex;flex-direction:column;align-items:center;gap:5px}
.world-dpad>button,.world-dpad>div button{width:34px;height:34px;border-radius:9px;border:1px solid #ffffff28;background:#263c3e;color:#f7f1e6;font-weight:900;font-size:15px;touch-action:manipulation}
.world-dpad>div{display:flex;gap:5px}
.world-dpad button:active{background:#d3f36b;color:#15231d}
.world-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;flex:1;min-width:0}
.world-actions .action-btn{min-height:38px;padding:8px 10px;font-size:10px;text-align:center}
.world-control-footnote{font-size:9px;line-height:1.55;color:var(--muted);margin:12px 0 0}
.world-control-footnote b{color:#d3f36b}
@media(max-width:540px){.world-character-stage{bottom:20px!important;height:150px!important}.world-character{width:55px!important;height:116px!important;margin-left:-27px!important}.world-character.is-seated{height:98px!important}.world-nameplate{max-width:80px;font-size:7px;padding:3px 4px}.world-character-state{font-size:7px;max-width:75px;overflow:hidden;text-overflow:ellipsis}.classroom-board{left:15%;right:15%;height:56px;top:12px}.classroom-board b{font-size:13px}.classroom-teacher{top:72px;transform:translateX(-50%) scale(.82);transform-origin:top center}.classroom-desk{width:18%;height:8px}.desk-a{left:3%}.desk-b{left:22%}.desk-c{left:41%}.desk-d{left:60%}.desk-e{left:79%}.desk-f{left:12%;bottom:37%}.classroom-door{width:30px;height:65px}.world-play-controls{padding:12px}.world-controls-row{gap:10px;align-items:flex-start}.world-dpad{width:104px;flex-basis:104px}.world-actions{grid-template-columns:1fr}.world-actions .action-btn{min-height:36px;font-size:9px;padding:8px 5px}.world-controls-title{gap:7px}.world-controls-title h3{font-size:14px}.world-control-hint{font-size:8px;padding:6px 7px}}
.world-character.sprite-walk .sprite-leg.leg-a{transform-origin:30px 80px;animation:worldWalkLeg .24s ease-in-out infinite alternate}
.world-character.sprite-walk .sprite-leg.leg-b{transform-origin:40px 80px;animation:worldWalkLeg .24s ease-in-out infinite alternate-reverse}
.world-character.sprite-walk .sprite-arm.arm-a{animation:worldWalkArm .24s ease-in-out infinite alternate;transform-origin:22px 44px}
.world-character.sprite-walk .sprite-arm.arm-b{animation:worldWalkArm .24s ease-in-out infinite alternate-reverse;transform-origin:46px 44px}
@keyframes worldWalkLeg{from{rotate:-20deg}to{rotate:22deg}}
@keyframes worldWalkArm{from{rotate:-16deg}to{rotate:16deg}}

/* V24: make class posture and studying readable at phone size */
.world-character.is-seated .character-drawing{transform:translateY(8px) scaleY(.9);transform-origin:50% 100%}
.world-character.is-seated .sprite-leg.leg-a{transform:rotate(72deg) translate(5px,-3px)}
.world-character.is-seated .sprite-leg.leg-b{transform:rotate(70deg) translate(-2px,-1px)}
.world-character.sprite-study .sprite-arm.arm-a{transform-origin:22px 44px;animation:studentWrite .48s ease-in-out infinite alternate}
.world-character.sprite-study .sprite-arm.arm-b{transform-origin:46px 44px;animation:studentWrite .65s ease-in-out infinite alternate-reverse}
.world-character.sprite-study .sprite-leg{animation:none}
@keyframes studentWrite{from{rotate:-3deg;translate:0 0}to{rotate:16deg;translate:2px 2px}}
.classroom-desk{z-index:2}
.desk-g{left:32%;bottom:37%;width:17%}.desk-h{left:66%;bottom:37%;width:17%}
.classroom-room-sign{position:absolute;left:10px;top:10px;z-index:2;background:#f7f0d7d9;color:#3d4b3e;border:1px solid #7c8b75;border-radius:5px;padding:5px 7px;font-size:7px;font-weight:900;letter-spacing:.08em}
.world-character.is-npc[role="button"]{cursor:pointer}
.world-character.is-npc[role="button"]:focus-visible{outline:2px solid #d3f36b;outline-offset:3px;border-radius:9px}
.world-character.is-self.is-seated .world-character-state{background:#243b2d;color:#e8ffc0}
@media(max-width:540px){.classroom-room-sign{top:6px;left:6px;font-size:6px;padding:4px 5px}.world-character.is-seated .character-drawing{transform:translateY(6px) scaleY(.9)}}

/* V25: Enzo Lounge shared song-request queue and music player */
.club-music-panel{margin:22px 0 26px;padding:clamp(15px,3vw,24px);border:1px solid #b78aff4a;border-radius:18px;background:linear-gradient(145deg,#211d32,#171e2a 70%,#18252b);box-shadow:0 18px 50px #0002;color:#f8f4ff}.club-music-heading,.club-queue-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.club-music-heading h3{font-size:23px;margin:5px 0 7px;letter-spacing:-.04em}.club-music-heading .sub{max-width:520px;line-height:1.5}.club-live-badge{font-size:9px;font-weight:900;letter-spacing:.1em;color:#d3f36b;border:1px solid #d3f36b55;border-radius:99px;padding:7px 9px;white-space:nowrap}.club-song-form{padding:16px;margin:18px 0;border-radius:13px;background:#ffffff08;border:1px solid #ffffff12}.club-song-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.club-song-fields .field{margin-bottom:11px}.club-song-fields label{display:block;font-size:10px;color:#c5c1d5;margin-bottom:7px}.club-song-fields .control{width:100%;box-sizing:border-box;background:#111722;border-color:#ffffff24;color:#fff}.club-song-link{grid-column:1/-1}.club-request-button{width:100%;background:#d3f36b;color:#18211d;border-color:transparent;font-weight:900}.club-music-note{font-size:10px;line-height:1.55;color:#a9a9be;margin:10px 0 0}.club-now-playing{display:flex;align-items:center;gap:13px;padding:13px;border:1px solid #d3f36b45;background:#d3f36b0b;border-radius:13px}.club-now-icon{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;background:#d3f36b;color:#17211d;font-size:24px}.club-now-playing small,.club-now-playing b,.club-now-playing span{display:block}.club-now-playing small{font-size:8px;font-weight:900;letter-spacing:.14em;color:#d3f36b}.club-now-playing b{font-size:14px;margin:4px 0;overflow-wrap:anywhere}.club-now-playing span{font-size:10px;color:#bcb9cc}.club-song-player{margin-top:10px}.club-player-placeholder{padding:16px;border:1px dashed #ffffff26;border-radius:12px;text-align:center;font-size:11px;line-height:1.6;color:#bcb9cc}.club-video-card{border:1px solid #ffffff1a;border-radius:13px;overflow:hidden;background:#10151e}.club-video-meta{padding:12px;display:flex;flex-direction:column;gap:5px}.club-video-meta b{font-size:12px}.club-video-meta span,.club-video-footer{font-size:10px;color:#a9a9be;line-height:1.45}.club-video-frame{aspect-ratio:16/9;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 30%,#4e356f,#10151e 70%);position:relative}.club-video-frame iframe{width:100%;height:100%;position:absolute;inset:0;border:0}.club-play-song{border:1px solid #d3f36b77;border-radius:99px;background:#d3f36b;color:#19231e;font-weight:900;padding:13px 19px;cursor:pointer}.club-audio-help{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;font-size:11px;line-height:1.5;color:#e4e1ef;background:#ffffff08}.club-open-youtube{display:inline-flex;margin:0 12px 12px;padding:10px 13px;border-radius:10px;background:#d3f36b;color:#18211d;font-size:11px;font-weight:900;text-decoration:none}.club-video-footer{padding:9px 12px}.club-queue-heading{align-items:center;margin:20px 0 9px}.club-queue-heading h4{font-size:14px;margin:0}.club-queue-heading .action-btn{font-size:10px;padding:7px 10px}.club-song-queue{display:flex;flex-direction:column;gap:8px}.club-queue-row{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid #ffffff15;background:#ffffff06;border-radius:12px;min-width:0}.club-queue-number{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:#ffffff12;font-weight:900;font-size:11px;flex:0 0 auto}.club-queue-copy{flex:1;min-width:0}.club-queue-copy b,.club-queue-copy span,.club-queue-copy small{display:block;overflow-wrap:anywhere}.club-queue-copy b{font-size:12px}.club-queue-copy span{font-size:10px;color:#c1bfd0;margin-top:3px}.club-queue-copy small{font-size:9px;color:#9294a9;margin-top:4px}.club-play-next{background:#ffffff10;border-color:#d3f36b66;color:#eaffc0;font-size:10px;flex:0 0 auto;padding:9px}.club-music-panel .field{min-width:0}
@media(max-width:560px){.club-song-fields{grid-template-columns:1fr;gap:0}.club-song-link{grid-column:auto}.club-music-heading h3{font-size:20px}.club-live-badge{font-size:8px;padding:6px}.club-queue-row{align-items:flex-start;flex-wrap:wrap}.club-queue-copy{flex-basis:calc(100% - 42px)}.club-play-next{margin-left:38px}.club-song-form{padding:12px}.club-now-playing b{font-size:12px}}


/* Games link added to V27 navigation */
.tabs .games-tab{text-decoration:none;color:inherit;}
