/* Learning city: geography is navigation, competency remains evidence-based. */
.citypage{max-width:1540px;margin:auto;padding:26px 32px 45px}.city-welcome{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:23px}.city-welcome h1{font-size:30px;line-height:1.6;margin:4px 0}.city-welcome p{font-size:12px;margin:0}.city-stats{display:flex;gap:10px}.city-stat{display:flex;align-items:center;gap:10px;background:white;border:1px solid var(--line);border-radius:13px;padding:10px 16px;min-width:115px}.city-stat strong{display:block;font-size:20px;line-height:1.4}.city-stat small{display:block;font-size:9px;color:var(--muted)}.city-stat .round{width:34px;height:34px;border-radius:50%}.city-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px;flex-wrap:wrap}.city-filters{display:flex;gap:7px;flex-wrap:wrap}.city-filters button{border:1px solid var(--line);background:white;border-radius:20px;padding:6px 14px;font-size:11px;color:var(--muted)}.city-filters button.active{background:var(--green);color:white;border-color:var(--green)}.city-toolbar-right{display:flex;gap:8px;align-items:center}.city-toolbar-right select{font-size:11px;padding:6px 10px;max-width:180px}.city-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:20px;align-items:start}.map-shell{position:relative;border:1px solid #cbd8c0;border-radius:23px;background:#dfeccf;overflow:hidden;box-shadow:0 10px 40px #24492308}.map-scroll{overflow:auto;scrollbar-width:thin;scrollbar-color:#9db690 #dfeccf;direction:ltr}.world{position:relative;aspect-ratio:1120/730;min-width:800px;isolation:isolate}.terrain{position:absolute;inset:0;width:100%;height:100%;z-index:-1}.map-location{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);transform:translate(-50%,-50%);border:0;background:none;padding:0;cursor:pointer;text-align:center;color:var(--ink);width:134px;transition:filter .2s,opacity .2s}.map-location .building-art{height:103px;width:140px;overflow:visible;filter:drop-shadow(0 8px 4px #3d5b3222);transition:transform .2s}.map-location:hover .building-art,.map-location:focus-visible .building-art{transform:translateY(-6px)}.map-location.focused .building-art{transform:translateY(-6px);filter:drop-shadow(0 7px 6px #234f3e44)}.map-location.dim{opacity:.35}.place-label{display:inline-flex;gap:6px;align-items:center;justify-content:center;background:#fffcf2;border:1px solid #d9e0d1;border-radius:9px;padding:4px 12px;font-size:11px;font-weight:800;box-shadow:0 3px 0 #c7d5ba55;white-space:nowrap;direction:rtl}.map-location.focused .place-label{background:var(--green);color:white;border-color:var(--green)}.location-state{position:absolute;top:0;right:3px;border-radius:50%;background:white;border:2px solid white;width:25px;height:25px;display:grid;place-items:center;color:var(--green);box-shadow:0 3px 7px #183e2922;font-size:10px;z-index:2}.location-state.gold{color:#b28336;background:#fff2cf}.location-state.locked{color:#8c9b82;background:#f1f3e8}.location-state .ico{width:14px;height:14px}.map-caption{position:absolute;bottom:14px;left:16px;right:16px;display:flex;justify-content:space-between;gap:10px;pointer-events:none;direction:rtl;z-index:3}.map-caption span{background:#fffdf2d9;border:1px solid #e1e6d4;border-radius:20px;padding:5px 11px;font-size:9px;color:#627357;backdrop-filter:blur(4px)}.map-compass{position:absolute;top:18px;left:20px;width:39px;height:39px;display:grid;place-items:center;border:1px solid #c1d1b6;border-radius:50%;color:#658257;background:#f4f8e9cc;font-size:13px}.map-watermark{position:absolute;top:17px;right:20px;font-size:10px;color:#638157;font-weight:700}.city-detail{background:white;border:1px solid var(--line);border-radius:18px;overflow:hidden;position:sticky;top:133px}.detail-scene{height:120px;background:linear-gradient(135deg,#e8eddf,#d9e6ce);display:flex;align-items:center;justify-content:center;position:relative}.detail-scene svg{width:145px;height:105px;filter:drop-shadow(0 8px 4px #29472114)}.detail-scene .tag{position:absolute;top:12px;inset-inline-start:12px;background:white;font-size:9px}.detail-body{padding:20px}.detail-body h2{font-size:21px;margin:0 0 6px}.detail-body p{font-size:11px}.detail-path{display:grid;gap:0;margin:16px 0}.detail-stage{display:flex;gap:9px;align-items:start;padding:9px 0;font-size:10px;border-bottom:1px solid var(--line)}.detail-stage:last-child{border:0}.detail-stage .stepnum{width:19px;height:19px;font-size:9px}.detail-stage.done .stepnum{background:var(--green);color:white}.detail-stage b{font-size:10px;font-weight:600}.detail-stage small{font-size:9px;display:block;color:var(--muted)}.detail-body .btn{width:100%}.detail-points{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding:12px 0}.city-bottom{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:18px}.city-bottom .card{padding:20px}.passport-row{display:flex;align-items:center;gap:14px}.stamp{width:47px;height:47px;display:grid;place-items:center;border:2px dashed #b6c7a7;border-radius:50%;color:var(--green);font-size:23px;background:#f1f5e9}.passport-track{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.passport-stop{width:33px;height:33px;display:grid;place-items:center;border:1px dashed #ced8c6;border-radius:50%;background:#f4f6ee;color:#93a287;font-size:10px}.passport-stop.done{background:var(--green);color:white;border-color:var(--green)}.city-list{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.city-list button{border:1px solid var(--line);border-radius:12px;padding:16px;background:white;color:var(--ink);text-align:start;display:flex;align-items:center;gap:12px}.city-list svg{width:70px;height:60px}.city-list small{display:block;font-size:10px;color:var(--muted)}.video-stage{background:#193d34;border-radius:14px;color:white;padding:25px;min-height:200px;display:flex;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden}.video-stage:before{content:'';position:absolute;inset:0;opacity:.12;background:repeating-linear-gradient(45deg,transparent,transparent 20px,#fff 21px,transparent 22px)}.video-stage>*{position:relative}.video-stage svg{width:115px;height:85px;display:block;margin:auto}.video-stage h3{color:white}.video-stage p{color:#d2e3d4;font-size:11px}.media-label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px;padding:10px 0}.scene-header{background:var(--green);border-radius:18px;display:grid;grid-template-columns:1fr 155px;gap:15px;color:white;padding:25px}.scene-header p{color:#d4e3d3;font-size:12px}.scene-header h1{font-size:30px}.scene-header>svg{width:155px;height:145px;align-self:center}.scene-header .tag{background:#ffffff20;color:#edf4e6}.scene-tabs{display:flex;gap:8px;overflow:auto;margin:20px 0}.scene-tabs button{border:1px solid var(--line);background:white;padding:9px 15px;border-radius:10px;white-space:nowrap;font-size:11px;color:var(--muted)}.scene-tabs button.active{background:var(--green);border-color:var(--green);color:white}.scene-story{padding:20px;background:#f6f5ee;border:1px solid var(--line);border-radius:12px;direction:rtl}.scene-story .spoken{font-size:21px;color:var(--ink);margin:14px 0}.scene-story .gloss{font-size:11px;color:var(--muted)}.practice-score{display:flex;align-items:center;gap:9px;padding:12px;border-radius:10px;background:#f2efdf;color:#92712e;font-size:12px}.group-card{position:relative}.group-card .group-icon{width:48px;height:48px;border-radius:14px;background:var(--mint);color:var(--green);display:grid;place-items:center;margin-bottom:12px}.group-card .menu{position:absolute;top:16px;inset-inline-end:16px}.group-context{position:absolute;top:55px;inset-inline-end:16px;z-index:4;background:white;padding:6px;border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 25px #153c2920;min-width:155px}.group-context button{display:block;background:white;border:0;padding:8px 12px;width:100%;text-align:start;font-size:11px;border-radius:5px;color:var(--ink)}.group-context button:hover{background:var(--mint)}.group-meta{display:flex;gap:12px;font-size:10px;color:var(--muted);margin:14px 0}.group-code{background:#f2f5ed;padding:8px 12px;border:1px dashed #bccbb0;border-radius:7px;font-size:12px;letter-spacing:2px;direction:ltr;display:inline-block}.group-assigned{display:flex;flex-wrap:wrap;gap:5px;margin:12px 0}.game-achievement{background:#edf3e6;border:1px solid #c8d9ba;border-radius:12px;padding:18px;text-align:center}.game-achievement strong{display:block;font-size:30px;color:var(--green)}.scene-task-note{border-inline-start:3px solid var(--gold);padding:12px 16px;background:#f8f3e8;font-size:12px}.city-review-list{margin-top:22px}.city-review-list .row{align-items:start}.member-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.member-row .grow{flex:1}.member-row:last-child{border:0}.access-note{font-size:10px;color:var(--muted);margin-top:18px}.city-float-help{position:absolute;bottom:16px;inset-inline-end:15px;z-index:5}.city-pulse{animation:citypulse 2.6s ease-in-out infinite}.city-verified{color:#285e3d;font-size:9px;display:flex;gap:5px;align-items:center;margin-top:10px}@keyframes citypulse{0%,100%{opacity:.7}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.city-pulse{animation:none}.map-location .building-art{transition:none}}@media(max-width:1120px){.citypage{padding:22px}.city-layout{grid-template-columns:minmax(0,1fr) 260px}.city-stats{gap:6px}.city-stat{min-width:95px;padding:9px 12px}.world{min-width:760px}.city-welcome h1{font-size:26px}.city-list{grid-template-columns:repeat(2,1fr)}}@media(max-width:850px){.city-layout{grid-template-columns:1fr}.city-detail{position:static;display:grid;grid-template-columns:160px 1fr}.detail-scene{height:100%;min-height:180px}.detail-path{grid-template-columns:repeat(2,1fr);gap:8px;margin:10px 0}.detail-stage{border:0;padding:3px 0}.detail-body{padding:17px}.detail-points{padding:7px 0}.city-welcome{align-items:start}.city-stats{flex-wrap:wrap;justify-content:end;max-width:280px}.city-bottom{grid-template-columns:1fr 1fr}.world{min-width:800px}}@media(max-width:600px){.citypage{padding:20px 14px 35px}.city-welcome{display:block;margin-bottom:16px}.city-welcome h1{font-size:26px;margin-bottom:4px}.city-stats{margin-top:16px;max-width:none;justify-content:stretch;flex-wrap:nowrap;gap:7px}.city-stat{flex:1;min-width:0;padding:10px}.city-stat .round{width:27px;height:27px}.city-stat .round .ico{width:15px;height:15px}.city-stat strong{font-size:17px}.city-stat small{font-size:8px}.city-toolbar{gap:10px}.city-filters{gap:5px}.city-filters button{font-size:10px;padding:5px 10px}.city-toolbar-right{width:100%;justify-content:space-between}.city-layout{gap:13px}.map-shell{border-radius:16px}.world{min-width:780px;aspect-ratio:1120/730}.map-location{width:115px}.map-location .building-art{height:86px;width:117px}.place-label{font-size:10px;padding:3px 9px}.map-watermark{font-size:9px}.map-caption span{font-size:8px;padding:4px 7px}.map-caption{bottom:10px;left:10px;right:10px}.city-detail{grid-template-columns:108px 1fr;border-radius:13px}.detail-scene svg{width:105px}.detail-scene .tag{font-size:8px;padding:3px 7px;top:9px;inset-inline-start:7px}.detail-body{padding:13px}.detail-body h2{font-size:19px}.detail-body p{font-size:10px}.detail-path{grid-template-columns:1fr 1fr;gap:4px}.detail-stage b{font-size:9px}.detail-stage small{display:none}.detail-stage .stepnum{width:16px;height:16px;font-size:8px}.detail-body .btn{font-size:11px;padding:8px}.detail-points{font-size:9px}.city-bottom{grid-template-columns:1fr;gap:12px}.city-bottom .card{padding:17px}.city-list{grid-template-columns:1fr}.scene-header{grid-template-columns:1fr 85px;padding:20px}.scene-header>svg{width:85px;height:105px}.scene-header h1{font-size:24px}.scene-header p{font-size:11px}.scene-tabs{gap:6px}.scene-tabs button{font-size:10px;padding:8px 10px}.scene-story .spoken{font-size:19px}.video-stage{min-height:180px;padding:20px}.group-context{min-width:150px}.city-detail .detail-path .detail-stage:nth-child(4){display:none}}
.city-toolbar-right{flex-wrap:wrap}.city-toolbar-right select{max-width:170px}@media(prefers-reduced-motion:reduce){.citywalker{display:none}}@media(max-width:600px){.city-toolbar-right select{max-width:155px}.city-toolbar-right .iconbtn{width:28px;height:28px}}
.city-layout>div,.city-detail{min-width:0}.map-shell{width:100%;max-width:100%}.map-scroll{max-width:100%}@media(max-width:850px){.city-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:850px){.city-layout>div{display:contents}.city-layout .map-shell,.city-layout .city-list{grid-row:1}.city-layout .city-detail{grid-row:2}.city-layout .city-bottom{grid-row:3}}
