:root{--tinta: #2b1d1a;--papel: #fff9f5;--hueso: #f0eae6;--piedra: #7a6b62;--petroleo: #2f6b73;--turquesa: #44989d;--jade: #3a7a6d;--espuma: #cddfdd;--berenjena: #4a2f5b;--jacaranda: #7a63a8;--glicina: #a898c9;--lila: #e8e4f1;--line: rgba(43, 29, 26, .12);--shadow: 0 10px 30px rgba(43, 29, 26, .16);--r-tag: 14px;--r-card: 28px;--sky: linear-gradient(180deg, #bcd6dc 0%, #e4e0d4 52%, #ecd2b4 100%);--sky-axo: linear-gradient(180deg, #fff9f5 0%, #e8e4f1 100%);--sky-city: linear-gradient(180deg, #a9c9d6 0%, #e3dccb 55%, #e8c9a2 100%);--font-title: Fredoka, "Nunito Sans", system-ui, sans-serif;--font-body: "Nunito Sans", system-ui, sans-serif;--c-teal: var(--petroleo);--c-plum: var(--berenjena);--c-violet: var(--jacaranda);--c-foam: #cddfdd;--panel: rgba(255, 249, 245, .92);--hint-bg: rgba(232, 228, 241, .92);color-scheme:light}:root[data-theme=dark]{--tinta: #f3ece6;--papel: #1f1a26;--hueso: #2a2431;--piedra: #b3a69e;--espuma: #213f45;--lila: #352b47;--glicina: #5d4c80;--line: rgba(255, 249, 245, .12);--shadow: 0 10px 30px rgba(0, 0, 0, .45);--c-teal: #7cc8c9;--c-plum: #cdbfe8;--c-violet: #b7a6e0;--panel: rgba(31, 26, 38, .9);--hint-bg: rgba(53, 43, 71, .92);--sky: linear-gradient(180deg, #0d1b2a 0%, #1d2c40 52%, #3a3350 100%);--sky-axo: linear-gradient(180deg, #1f1a26 0%, #2c2340 100%);--sky-city: linear-gradient(180deg, #0b1724 0%, #1a2a3c 55%, #36304a 100%);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{font-family:var(--font-body);color:var(--tinta);background:var(--sky);-webkit-font-smoothing:antialiased}body[data-mode=axo]{background:var(--sky-axo)}body[data-mode=city]{background:var(--sky-city)}:lang(zh-Hans) body,html[lang=zh-Hans] body{font-family:Nunito Sans,PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid var(--glicina);outline-offset:2px}.topbar{position:fixed;top:16px;left:16px;right:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px}.brand .logo{width:44px;height:44px;display:block}.brand h1{font-family:var(--font-title);font-weight:700;font-size:28px;margin:0;line-height:1;color:var(--c-teal)}.brand p{margin:4px 0 0;font-size:13px;color:var(--piedra)}.top-right{display:flex;align-items:center;gap:10px}.modes,.langs{display:flex;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:999px;padding:4px;box-shadow:var(--shadow)}.modes button,.langs button{border:0;background:transparent;padding:8px 16px;border-radius:999px;font-family:var(--font-title);font-weight:600;font-size:14px;color:var(--c-teal)}.modes button:hover,.langs button:hover{background:var(--espuma)}.modes button[aria-selected=true]{background:var(--petroleo);color:#fff}.langs button{padding:8px 11px;color:var(--c-plum)}.langs button:hover{background:var(--lila)}.langs button[aria-pressed=true]{background:var(--jacaranda);color:#fff}.links{display:flex;gap:8px}.pill{display:inline-flex;align-items:center;gap:6px;text-decoration:none;border:0;border-radius:999px;padding:9px 14px;box-shadow:var(--shadow);font-family:var(--font-title);font-weight:600;font-size:14px}.pill.donate{background:var(--jacaranda);color:#fff}.pill.donate:hover{background:var(--berenjena)}.pill.about-btn{background:var(--panel);color:var(--c-teal);border:1px solid var(--line)}.pill.about-btn:hover{background:var(--espuma)}.pill.theme-btn{background:var(--panel);color:var(--c-plum);border:1px solid var(--line);padding:8px 10px}:root[data-theme=dark] .pill.theme-btn{color:#f2c66d}.pill.theme-btn:hover{background:var(--lila)}.theme-btn .moon,:root[data-theme=dark] .theme-btn .sun{display:block}.theme-btn .sun,:root[data-theme=dark] .theme-btn .moon{display:none}.logo-dark,:root[data-theme=dark] .logo-light{display:none!important}:root[data-theme=dark] .logo-dark{display:block!important}.pill.about-btn>span:first-child{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--petroleo);color:#fff;font-size:12px;font-weight:700}.about{width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow-y:auto;border:0;border-radius:var(--r-card);padding:28px 28px 24px;background:var(--papel);color:var(--tinta);box-shadow:0 24px 60px #2b1d1a4d}.about::backdrop{background:#4a2f5b73;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.about .close{position:absolute;top:16px;right:16px;border:0;background:var(--lila);color:var(--c-plum);width:32px;height:32px;border-radius:50%;font-size:18px;line-height:1}.about-logo{display:block;margin-bottom:10px}.about h2{font-family:var(--font-title);font-weight:700;font-size:26px;margin:0 0 10px;color:var(--c-teal)}.about h3{font-family:var(--font-title);font-weight:600;font-size:16px;margin:20px 0 4px;color:var(--c-violet)}.about p{margin:0 0 8px;font-size:15px;line-height:1.55}.email-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.email{font-family:var(--font-title);font-weight:600;font-size:17px;color:var(--c-teal);background:var(--espuma);padding:8px 14px;border-radius:var(--r-tag);text-decoration:none;word-break:break-all}.email:hover{text-decoration:underline}.copy{border:0;background:var(--lila);color:var(--c-plum);border-radius:999px;padding:8px 14px;font-family:var(--font-title);font-weight:600;font-size:14px}.donate-big{display:block;text-align:center;margin-top:10px;padding:13px;border-radius:999px;text-decoration:none;background:var(--jacaranda);color:#fff;font-family:var(--font-title);font-weight:600;font-size:16px}.donate-big:hover{background:var(--berenjena)}.legend{position:fixed;left:16px;top:92px;bottom:84px;width:236px;display:flex;flex-direction:column;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 6px}.legend-title{font-family:var(--font-title);font-weight:600;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-plum)}.phone-only{display:none!important}.legend-body{overflow-y:auto;padding:0 10px 14px}.legend h3{margin:12px 8px 4px;font-family:var(--font-title);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--c-violet);font-weight:600}.legend-item{display:flex;flex-direction:column;width:100%;text-align:left;border:0;background:transparent;padding:6px 10px;border-radius:var(--r-tag)}.legend-item:hover{background:var(--espuma)}.legend-item.active{background:var(--petroleo);color:#fff}.legend-item .n{font-size:14px;font-weight:700}.legend-item .nah{font-family:var(--font-title);font-weight:600;font-size:13px;color:var(--c-teal)}.legend-item.active .nah{color:var(--c-foam)}.info{position:fixed;right:16px;top:92px;bottom:84px;width:370px;background:var(--papel);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);overflow-y:auto;padding:24px 24px 20px}.info[hidden]{display:none}.info .close{position:sticky;top:0;float:right;margin:-8px -6px 0 0;border:0;background:var(--lila);color:var(--c-plum);width:32px;height:32px;border-radius:50%;font-size:18px;line-height:1}.info .group{display:inline-block;font-family:var(--font-title);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--c-plum);background:var(--lila);padding:3px 10px;border-radius:var(--r-tag)}.info h2{font-family:var(--font-title);font-weight:700;font-size:28px;margin:10px 0 14px;line-height:1.12;color:var(--tinta)}.nahuatl-card{background:var(--espuma);border-radius:22px;padding:14px 16px;margin-bottom:16px}.nahuatl-card .label{font-family:var(--font-title);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--c-teal)}.nahuatl-card .word{font-family:var(--font-title);font-size:26px;font-weight:700;color:var(--c-teal);margin:2px 0;line-height:1.15}.nahuatl-card .classical{font-size:13px;color:var(--tinta);opacity:.75}.nahuatl-card .gloss{font-size:14.5px;margin-top:6px}.info h4{margin:18px 0 4px;font-family:var(--font-title);font-weight:600;font-size:14px;color:var(--c-violet)}.info p{margin:0;font-size:15px;line-height:1.55}.info ul{margin:0;padding-left:18px;font-size:14.5px;line-height:1.5}.info li{margin-bottom:6px}.info li::marker{color:var(--turquesa)}.info .action{margin-top:18px;width:100%;border:0;border-radius:999px;padding:12px;font-family:var(--font-title);font-weight:600;font-size:15px;background:var(--berenjena);color:#fff}.info .action:hover{background:var(--jacaranda)}.info .community{margin-top:18px;padding:12px 14px;border-radius:var(--r-tag);background:var(--lila);color:var(--c-plum);font-size:13.5px;line-height:1.45}.toolbar{position:fixed;left:50%;bottom:16px;transform:translate(-50%);display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:999px;padding:8px 16px;box-shadow:var(--shadow);font-size:14px;max-width:calc(100vw - 32px)}.toolbar button{border:0;background:var(--petroleo);color:#fff;border-radius:999px;padding:6px 14px;font-family:var(--font-title);font-weight:600;font-size:14px}.toolbar button:hover{background:var(--jade)}.toolbar button.icon{background:var(--lila);color:var(--c-plum);padding:6px 11px}.toolbar button.icon:hover{background:var(--glicina)}.toggle,.slider{display:flex;align-items:center;gap:6px;white-space:nowrap}.toggle input,.slider input{accent-color:var(--jacaranda)}.slider input{width:110px}.axo-controls{display:flex;align-items:center;gap:6px}#layerName{min-width:200px;text-align:center;font-family:var(--font-title);font-weight:600;color:var(--c-plum)}body:not([data-mode=chinampa]) .only-chinampa{display:none}body:not([data-mode=axo]) .only-axo{display:none}body:not([data-mode=buildings]) .only-buildings{display:none}body[data-mode=buildings]{background:var(--sky-axo)}body[data-mode=buildings] .toggle:has(#autoRotate){display:none}#bldName{min-width:200px;text-align:center;font-family:var(--font-title);font-weight:600;color:var(--c-plum)}.map-labels{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:1}.topbar,.legend,.info,.toolbar{z-index:3}.map-label{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;cursor:pointer;white-space:nowrap;font-family:var(--font-title);font-weight:600;font-size:13px;color:var(--c-plum);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-tag);padding:3px 9px 4px;box-shadow:0 4px 12px #2b1d1a26;transition:opacity .2s}.map-label:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translate(-50%);border:6px solid transparent;border-bottom:0;border-top-color:var(--panel)}.map-label i{font-style:normal;color:var(--c-teal);margin-left:6px;font-size:12px}.map-label:hover,.map-label.active{background:var(--berenjena);color:#fff}.map-label:hover i,.map-label.active i{color:var(--c-foam)}.map-label:hover:after,.map-label.active:after{border-top-color:var(--berenjena)}.map-label.hidden{opacity:0;pointer-events:none}.label-lines{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.label-lines line{stroke:var(--c-plum);stroke-width:1.5}.label-lines circle{fill:var(--c-plum)}body[data-mode=axo] .toggle:has(#autoRotate){display:none}.tooltip{position:fixed;pointer-events:none;z-index:5;background:var(--tinta);color:var(--papel);padding:6px 12px;border-radius:var(--r-tag);font-size:13px;transform:translate(14px,14px);white-space:nowrap}.tooltip i{font-style:normal;font-family:var(--font-title);font-weight:600;color:var(--c-foam);margin-left:8px}.hint{position:fixed;left:50%;top:84px;transform:translate(-50%);margin:0;font-size:13px;color:var(--c-plum);background:var(--hint-bg);padding:6px 14px;border-radius:999px;transition:opacity .6s;white-space:nowrap}.hint.gone{opacity:0;pointer-events:none}.axo-labels{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.axo-label{position:absolute;display:flex;align-items:center;pointer-events:auto;cursor:pointer;transform:translateY(-50%);white-space:nowrap}.axo-label .dot{width:9px;height:9px;border-radius:50%;background:var(--c-plum);flex:none}.axo-label .line{width:46px;height:1.5px;background:var(--c-plum);flex:none}.axo-label .txt{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-tag);padding:4px 10px;font-family:var(--font-title);font-weight:600;font-size:13px}.axo-label .txt b{color:var(--c-violet);margin-right:6px}.axo-label .txt i{font-style:normal;color:var(--c-teal);margin-left:8px}.axo-label:hover .txt{background:var(--lila)}.axo-label.current .txt{background:var(--berenjena);color:#fff}.axo-label.current .txt b{color:var(--glicina)}.axo-label.current .txt i{color:var(--c-foam)}@media (max-width: 1180px) and (min-width: 901px){.legend{width:200px}.info{width:320px}.hint,.brand p{display:none}}@media (max-width: 1380px){.pill.about-btn .lbl{display:none}.pill.about-btn{padding:9px 11px}}@media (max-width: 900px){.pill .lbl{display:none}}@media (max-width: 900px){.phone-only{display:revert!important}.wide-only{display:none!important}.topbar{top:calc(10px + env(safe-area-inset-top));left:12px;right:12px;display:grid;grid-template-columns:1fr auto auto;grid-template-areas:"brand links langs" "modes modes modes";gap:8px}.top-right{display:contents}.links{grid-area:links;align-self:center;gap:5px}.pill,.pill.theme-btn{width:32px;height:32px;padding:0;justify-content:center}.pill.about-btn>span:first-child{width:18px;height:18px}.about{padding:24px 20px 20px}.brand{grid-area:brand;gap:8px}.brand .logo{width:32px;height:32px}.brand h1{font-size:21px}.brand p{display:none}.langs{grid-area:langs;align-self:center;padding:3px}.langs button{padding:6px 8px;font-size:13px;white-space:nowrap}.modes{grid-area:modes;width:100%;padding:3px}.modes button{flex:1;padding:8px 4px;font-size:13.5px}.toolbar{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));transform:none;max-width:none;border-radius:22px;padding:8px 10px;gap:8px;justify-content:space-between;font-size:13px}.toolbar>*{flex:none}.toolbar button{padding:8px 12px;font-size:13.5px}.toolbar .list-btn{background:var(--berenjena)}.toolbar .list-btn:before{content:"☰ "}.toggle{padding:4px 2px}.slider,.axo-controls{order:-1;flex:1 1 100%!important;justify-content:center}.slider input{flex:1;width:auto}.axo-controls{justify-content:space-between;gap:4px;min-width:0;max-width:100%}.axo-controls button{flex:none}.toolbar button.icon,#layerAll{padding:8px 10px}#layerName{min-width:0;flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend,.info{left:0;right:0;top:auto;bottom:0;width:auto;max-height:62vh;border-radius:28px 28px 0 0;padding-bottom:calc(96px + env(safe-area-inset-bottom));transform:translateY(105%);transition:transform .28s ease;box-shadow:0 -10px 30px #2b1d1a2e;z-index:3}.info{padding:6px 20px calc(110px + env(safe-area-inset-bottom));max-height:58vh}.info[hidden]{display:block;visibility:hidden}.toolbar{z-index:4}.legend:before,.info:before{content:"";display:block;width:44px;height:5px;border-radius:3px;background:var(--line);margin:10px auto 0}body[data-sheet=legend] .legend,body[data-sheet=info] .info{transform:none;visibility:visible}.sheet-head{padding:8px 18px 4px}.info .sheet-head{padding:6px 0 0}.info .back{border:0;background:var(--lila);color:var(--c-plum);border-radius:999px;padding:6px 12px;font-family:var(--font-title);font-weight:600;font-size:13px}.info .close{position:absolute;top:18px;right:18px;float:none;margin:0}.legend .close{border:0;background:var(--lila);color:var(--c-plum);width:32px;height:32px;border-radius:50%;font-size:18px}.legend-body{padding:0 12px 12px}.legend-body{display:grid;grid-template-columns:1fr 1fr;gap:2px 6px}.legend h3{grid-column:1 / -1}.legend-item{padding:8px 10px}.info h2{font-size:24px;margin-top:8px}.nahuatl-card .word{font-size:23px}.hint{top:auto;bottom:calc(118px + env(safe-area-inset-bottom));max-width:calc(100vw - 32px);white-space:normal;text-align:center;font-size:12.5px;border-radius:16px}.tooltip{display:none}.axo-label .line{width:14px}.axo-label .txt{font-size:11.5px;padding:3px 7px}.axo-label .txt i{display:none}}@media (max-width: 380px){.brand h1{font-size:18px}.langs button{padding:6px 7px}.legend-body{grid-template-columns:1fr}.toggle{font-size:12.5px}}
