.townhouse-page,.townhouse-page *{box-sizing:border-box}.townhouse-page{position:fixed;inset:0;z-index:30;overflow:hidden;font-family:PingFang SC,Microsoft YaHei,-apple-system,Helvetica Neue,sans-serif;background:#d8e4e9;color:#17272a;overscroll-behavior:none}.townhouse-page #stage{position:absolute;inset:0}.townhouse-page #stage canvas{display:block;width:100%!important;height:100%!important;touch-action:none}.townhouse-page #card{position:fixed;top:calc(12px + env(safe-area-inset-top));left:12px;background:rgba(255,255,255,.78);backdrop-filter:blur(14px);border:1px solid rgba(23,39,42,.08);border-radius:16px;padding:12px 15px;max-width:min(76vw,330px);box-shadow:0 8px 28px rgba(23,39,42,.1);z-index:5}.townhouse-page #card .t{font-size:17px;font-weight:700;letter-spacing:.02em}.townhouse-page #card .s{font-size:12px;color:#0f766e;margin-top:3px;font-weight:600}.townhouse-page #card .m{font-size:11px;color:#5a6a6d;margin-top:6px;line-height:1.55}.townhouse-page #ui{position:fixed;left:0;right:0;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:9px;pointer-events:none;z-index:5}.townhouse-page #modes,.townhouse-page #tools{display:flex;gap:6px;background:rgba(255,255,255,.8);backdrop-filter:blur(14px);border:1px solid rgba(23,39,42,.08);border-radius:999px;padding:5px;pointer-events:auto;box-shadow:0 8px 24px rgba(23,39,42,.12)}.townhouse-page button{border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:#3d4f52;padding:9px 16px;border-radius:999px;min-height:40px;cursor:pointer}.townhouse-page #modes button.on{background:#0f766e;color:#fff}.townhouse-page #tools button{padding:9px 14px}.townhouse-page #tools button.on{color:#0f766e;background:rgba(15,118,110,.12)}.townhouse-page #hint{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(126px + env(safe-area-inset-bottom));background:rgba(23,39,42,.8);color:#fff;font-size:12px;padding:8px 14px;border-radius:999px;transition:opacity .7s;pointer-events:none;z-index:6;white-space:nowrap}.townhouse-page #hint.hide{opacity:0}.townhouse-page #err{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:30px;background:#d8e4e9;font-size:14px;color:#3d4f52;z-index:9;line-height:1.7}.townhouse-page #err[hidden]{display:none}.townhouse-page #load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#d8e4e9;color:#5a6a6d;font-size:13px;z-index:8;transition:opacity .5s}.townhouse-page #load.off{opacity:0;pointer-events:none}.townhouse-page #compass{position:fixed;top:calc(12px + env(safe-area-inset-top));right:168px;width:72px;height:72px;border-radius:50%;background:rgba(255,255,255,.82);backdrop-filter:blur(14px);border:1px solid rgba(23,39,42,.1);box-shadow:0 8px 24px rgba(23,39,42,.12);z-index:5;pointer-events:none}.townhouse-page #compass-rose{position:absolute;inset:6px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#f7fafb 0,#e8eef1 70%,#d5dde1 100%);border:1px solid rgba(23,39,42,.08)}.townhouse-page #compass-rose span{position:absolute;font-size:11px;font-weight:700;letter-spacing:.04em;line-height:1;color:#5a6a6d}.townhouse-page #compass-rose .c-n{top:7px;left:50%;transform:translateX(-50%);color:#c23b3b}.townhouse-page #compass-rose .c-s{bottom:7px;left:50%;transform:translateX(-50%)}.townhouse-page #compass-rose .c-e{right:8px;top:50%;transform:translateY(-50%)}.townhouse-page #compass-rose .c-w{left:8px;top:50%;transform:translateY(-50%)}.townhouse-page #compass-rose .c-needle{position:absolute;left:50%;top:50%;width:3px;height:22px;margin-left:-1.5px;margin-top:-22px;border-radius:2px 2px 1px 1px;background:linear-gradient(#c23b3b 0 55%,#3d4f52 55% 100%);transform-origin:50% 100%;box-shadow:0 1px 2px rgba(23,39,42,.2)}.townhouse-page #compass:after{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:#17272a;box-shadow:0 0 0 2px rgba(255,255,255,.9);z-index:2}.townhouse-page #weather{position:fixed;top:calc(96px + env(safe-area-inset-top));right:168px;display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.8);backdrop-filter:blur(14px);border:1px solid rgba(23,39,42,.08);border-radius:14px;padding:8px 12px;z-index:5;box-shadow:0 8px 24px rgba(23,39,42,.12);pointer-events:none;max-width:240px}.townhouse-page #weather:empty{display:none}.townhouse-page #weather .w-ico{font-size:24px;line-height:1}.townhouse-page #weather .w-tx{display:flex;flex-direction:column;gap:2px}.townhouse-page #weather .w-tx b{font-size:13px;font-weight:700;color:#17272a;line-height:1.25}.townhouse-page #weather .w-tx i{font-style:normal;font-size:10.5px;color:#5a6a6d;line-height:1.3;white-space:nowrap}.townhouse-page.walk #card .m{display:none}.townhouse-page.walk #modes{opacity:.45;pointer-events:none}.townhouse-page.walk #bRot{opacity:.4;pointer-events:none}.townhouse-page #walk-ui{position:fixed;inset:0;z-index:4;pointer-events:none}.townhouse-page #walk-ui[hidden]{display:none}.townhouse-page #walk-crosshair{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid rgba(255,255,255,.85);border-radius:50%;box-shadow:0 0 0 1px rgba(23,39,42,.25)}.townhouse-page #walk-pad{position:absolute;left:calc(18px + env(safe-area-inset-left));bottom:calc(110px + env(safe-area-inset-bottom));width:110px;height:110px;border-radius:50%;background:rgba(255,255,255,.35);border:1px solid rgba(23,39,42,.12);backdrop-filter:blur(10px);pointer-events:auto;touch-action:none}.townhouse-page #walk-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:rgba(15,118,110,.85);box-shadow:0 4px 14px rgba(23,39,42,.2)}.townhouse-page #door-btn{position:absolute;left:50%;bottom:calc(118px + env(safe-area-inset-bottom));transform:translateX(-50%);pointer-events:auto;background:rgba(23,39,42,.82);color:#fff;box-shadow:0 6px 18px rgba(23,39,42,.2)}.townhouse-page #door-btn[hidden]{display:none}.townhouse-page.walk #walk-pad{display:block}