:root{--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--bg:#0e1013;--panel:#121418d1;--line:#ffffff1a;--text:#f1efe9;--muted:#a7a49c;--accent:#e3b46b;--accent-2:#7fb4ff;--free:#5fbf7a;--reserved:#e3b46b;--sold:#9a9790;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;overflow:hidden}#view{position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}.bar{left:50%;bottom:max(16px, calc(var(--safe-bottom) + 8px));background:var(--panel);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:14px;gap:4px;padding:4px;display:flex;position:absolute;transform:translate(-50%)}.bar button{appearance:none;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:10px;padding:10px 14px;font:500 13px/1 inherit}.bar button[aria-pressed=true]{color:var(--text);background:#ffffff1a}.stats{color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:10px;max-width:60vw;padding:8px 10px;font:11px/1.4 ui-monospace,Menlo,monospace;position:absolute;top:12px;left:12px}.attrib{color:#ffffff8c;text-shadow:0 1px 2px #0009;font-size:10px;position:absolute;bottom:6px;right:8px}.attrib a{color:inherit}.loading{background:var(--bg);color:var(--muted);place-items:center;font-size:14px;transition:opacity .6s;display:grid;position:absolute;inset:0}.loading.done{opacity:0;pointer-events:none}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.big{letter-spacing:-.01em;font-size:22px;font-weight:600}.big small{color:var(--muted);font-size:13px;font-weight:400}.muted{color:var(--muted);font-size:13px}.pad{padding:0 18px}.topbar{left:12px;top:calc(12px + var(--safe-top));background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:14px;align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:8px 14px 8px 8px;display:flex;position:absolute}.topbar .name{font-size:15px;font-weight:600}.icon{appearance:none;width:36px;height:36px;color:var(--text);cursor:pointer;background:#ffffff0f;border:0;border-radius:10px;font-size:16px}.hint{left:50%;bottom:calc(max(16px, calc(var(--safe-bottom) + 8px)) + 58px);color:var(--text);white-space:nowrap;background:#0a0b0d8c;border-radius:999px;padding:6px 12px;font-size:12px;position:absolute;transform:translate(-50%)}.tip{pointer-events:none;color:var(--text);border:1px solid var(--line);z-index:5;background:#0a0b0dd1;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;position:fixed;top:0;left:0}.loading .spinner,.photo-veil .spinner{border:2px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;margin:0 auto 12px;animation:.9s linear infinite spin}.loading{text-align:center;place-content:center;display:grid}@keyframes spin{to{transform:rotate(360deg)}}.photo-veil{text-align:center;color:var(--text);z-index:20;background:#08090b99;place-content:center;display:grid;position:absolute;inset:0}.panel{right:12px;top:calc(12px + var(--safe-top));bottom:calc(12px + var(--safe-bottom));background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);border-radius:18px;width:min(420px,100vw - 24px);transition:transform .45s cubic-bezier(.2,.8,.2,1);position:absolute;overflow:auto;transform:translate(calc(100% + 24px))}.panel.open{transform:none}.panel-head{background:linear-gradient(var(--panel) 80%, transparent);z-index:1;justify-content:space-between;align-items:flex-start;padding:16px 16px 8px 18px;display:flex;position:sticky;top:0}.stepper{gap:4px;display:flex}.stepper button{appearance:none;border:1px solid var(--line);color:var(--text);cursor:pointer;background:#ffffff0a;border-radius:10px;width:34px;height:34px;font-size:12px}.stepper button.x{margin-left:6px}.fp-wrap{padding:4px 14px}svg.fp{width:100%;height:auto;display:block}svg.fp .shell{fill:#ffffff08;stroke:#ffffff59;stroke-width:.12px}svg.fp .core{fill:#ffffff14;stroke:none}svg.fp .apt .hit{fill:#0000;stroke:none}svg.fp .apt .room{fill:none;stroke:#ffffff47;stroke-width:.05px}svg.fp .apt{cursor:pointer;outline:none}svg.fp .apt.free .hit{fill:#5fbf7a38}svg.fp .apt.reserved .hit{fill:#e3b46b38}svg.fp .apt.sold{cursor:default}svg.fp .apt.sold .hit{fill:#9a979024}svg.fp .apt.free:hover .hit,svg.fp .apt.free:focus .hit{fill:#5fbf7a6b}svg.fp .apt.reserved:hover .hit{fill:#e3b46b66}svg.fp .apt.sel .hit{fill:#7fb4ff73;stroke:#7fb4ff;stroke-width:.15px}svg.fp text{fill:var(--text);text-anchor:middle;pointer-events:none;font-family:inherit}svg.fp text.n{font-size:1.5px;font-weight:700}svg.fp text.a{fill:var(--muted);font-size:1.05px}.legend{color:var(--muted);gap:14px;padding:6px 18px 12px;font-size:12px;display:flex}.lg:before{content:"";vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.lg.free:before{background:var(--free)}.lg.reserved:before{background:var(--reserved)}.lg.sold:before{background:var(--sold)}.card{border:1px solid var(--line);background:#ffffff0d;border-radius:14px;margin:6px 14px 16px;padding:16px}.card .row{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.price{color:var(--accent);margin:10px 0 4px;font-size:20px;font-weight:600}.pill{background:#ffffff14;border-radius:999px;padding:4px 9px;font-size:11px}.pill.free{color:var(--free)}.pill.reserved{color:var(--reserved)}.pill.sold{color:var(--sold)}.actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.btn{appearance:none;border:1px solid var(--line);color:var(--text);cursor:pointer;background:#ffffff0f;border-radius:12px;align-items:center;gap:8px;padding:11px 16px;font:600 14px/1 inherit;text-decoration:none;display:inline-flex}.btn.primary{background:var(--accent);color:#1c1610;border-color:#0000}.btn:disabled{opacity:.5;cursor:default}.room-labels{pointer-events:none;position:absolute;inset:0}.room-label{border:1px solid var(--line);white-space:nowrap;background:#0c0d0fb8;border-radius:9px;flex-direction:column;align-items:center;padding:5px 9px;font-size:11px;transition:opacity .2s;display:flex;position:absolute;top:0;left:0}.room-label b{font-size:12px;font-weight:600}.room-label span{color:var(--muted);font-size:10.5px}.apt-info{left:12px;top:calc(12px + var(--safe-top));background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:14px;padding:12px 16px;position:absolute}.apt-info .price{margin:6px 0 0;font-size:16px}@media (width<=720px){.panel{width:auto;max-height:62vh;inset:auto 8px 8px;transform:translateY(calc(100% + 24px))}.panel.open{transform:none}.bar{bottom:max(10px, env(safe-area-inset-bottom))}.bar button{padding:10px;font-size:12px}.topbar .name{font-size:14px}.hint{display:none}}html.tg,html.tg body{overscroll-behavior:none;-webkit-user-select:none;user-select:none}.app{-webkit-overflow-scrolling:touch;padding:calc(10px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));background:var(--bg);flex-direction:column;gap:14px;max-width:640px;margin:0 auto;display:flex;position:absolute;inset:0;overflow-y:auto}.app-head{align-items:center;gap:12px;min-height:48px;display:flex}.app-head .name{font-size:17px;font-weight:600}.app-head>div:nth-child(2){flex:1}.brand{align-items:center;gap:12px;display:flex}.brand .logo{color:#1c1610;background:linear-gradient(145deg,#e3b46b,#a8743a);border-radius:12px;place-items:center;width:40px;height:40px;font-size:18px;display:grid}.hero{border:1px solid var(--line);background:linear-gradient(160deg,#e3b46b24,#7fb4ff0f);border-radius:18px;padding:18px}.hero h1{letter-spacing:-.01em;margin:0 0 8px;font-size:22px;line-height:1.2}.hero p{margin:0 0 12px;line-height:1.45}.how{gap:8px;margin:0;padding-left:20px;font-size:14px;line-height:1.4;display:grid}.list{gap:12px;display:grid}.pcard{border:1px solid var(--line);background:#ffffff0d;border-radius:16px;gap:6px;padding:16px;display:grid}.pcard .name{font-size:17px;font-weight:600}.tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.tag{color:var(--muted);background:#ffffff12;border-radius:999px;padding:4px 9px;font-size:12px}.tag.ok{color:var(--free);background:#5fbf7a1f}.btn.big{border-radius:14px;justify-content:center;width:100%;padding:15px 18px;font-size:15px}.btn.sm{padding:8px 12px;font-size:13px}.btn.ghost{background:0 0}.btn.danger{color:#ff8a80;border-color:#ff8a8059}.btn[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.demo-card{appearance:none;text-align:left;color:var(--text);font:inherit;cursor:pointer;background:#ffffff08;border:1px dashed #ffffff2e;border-radius:16px;gap:4px;padding:16px;display:grid}.demo-card .name{font-weight:600}.attrib-line{color:var(--muted);text-align:center;font-size:11px}.attrib-line a{color:inherit}.toast{left:50%;bottom:calc(90px + var(--safe-bottom));z-index:60;border:1px solid var(--line);max-width:calc(100vw - 32px);color:var(--text);background:#14161af2;border-radius:12px;padding:12px 16px;font-size:14px;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #0006}.wz-steps{gap:6px;display:flex}.wz-dot{appearance:none;cursor:pointer;background:#ffffff1a;border:0;border-radius:4px;flex:1;height:4px;padding:0}.wz-dot.done{background:#e3b46b8c}.wz-dot.cur{background:var(--accent)}.wz-body{flex:1;align-content:start;gap:12px;display:grid}.wz-foot{background:linear-gradient(transparent, var(--bg) 30%);padding-top:10px;position:sticky;bottom:0}.field{color:var(--muted);gap:6px;font-size:13px;display:grid}.field input,.field select,.search input{width:100%;color:var(--text);border:1px solid var(--line);background:#ffffff0f;border-radius:12px;outline:none;padding:12px 13px;font:16px/1.2 inherit}.field input:focus,.search input:focus{border-color:var(--accent)}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.label{color:var(--muted);margin-top:4px;font-size:13px}.search{gap:8px;display:flex}.results{gap:4px;display:grid}.result{appearance:none;text-align:left;color:var(--text);border:1px solid var(--line);cursor:pointer;background:#ffffff0d;border-radius:10px;padding:10px 12px;font:14px/1.35 inherit}.map{border:1px solid var(--line);background:#1a1d21;border-radius:16px;height:min(52vh,420px);overflow:hidden}.map-info{padding:2px;font-size:14px;line-height:1.4}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{appearance:none;border:1px solid var(--line);color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:999px;align-items:center;gap:8px;padding:9px 12px;font:13px/1 inherit;display:inline-flex}.chip[aria-pressed=true]{border-color:var(--c,var(--accent));background:color-mix(in srgb, var(--c,var(--accent)) 22%, transparent)}.chips.big .chip{padding:12px 14px;font-size:14px}.chip .sw{border:1px solid #ffffff4d;border-radius:5px;width:16px;height:16px}.big-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tile{appearance:none;text-align:left;color:var(--text);font:inherit;border:1px solid var(--line);cursor:pointer;background:#ffffff0d;border-radius:16px;gap:6px;padding:16px;display:grid}.tile .ico{font-size:26px}.tile .muted{font-size:12px}.plan-thumb img{object-fit:contain;background:#fff;border-radius:12px;width:100%;max-height:240px}.room-row{border:1px solid var(--line);background:#ffffff0d;border-radius:14px;align-items:center;gap:10px;padding:12px;display:flex}.room-row .grow{flex:1;min-width:0}.summary{border:1px solid var(--line);background:#ffffff0d;border-radius:16px;gap:2px;padding:6px 14px;display:grid}.sline{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:10px 0;font-size:14px;display:flex}.sline:last-child{border-bottom:0}.sline b{text-align:right;font-weight:600}.leaflet-container{font:12px/1.4 inherit}.cam{z-index:50;color:#fff;background:#000;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.cam-card{border:1px solid var(--line);background:#15171b;border-radius:20px;width:min(520px,100vw - 32px);max-height:calc(100vh - 32px);padding:22px 20px;overflow:auto}.cam-card.center{text-align:center}.cam-card h2{margin:6px 0 12px;font-size:20px;line-height:1.25}.cam-steps{gap:10px;margin:0 0 16px;padding-left:22px;font-size:15px;line-height:1.4;display:grid}.cam-actions{gap:8px;display:grid}.cam-actions .btn{justify-content:center;padding:14px}.cam-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cam-frame{border-radius:8px;position:absolute;inset:14% 7% 22%;box-shadow:0 0 0 100vmax #00000073}.cam-frame .c{border:3px solid #fff;width:34px;height:34px;position:absolute}.cam-frame .tl{border-bottom:0;border-right:0;border-radius:8px 0 0;top:-3px;left:-3px}.cam-frame .tr{border-bottom:0;border-left:0;border-radius:0 8px 0 0;top:-3px;right:-3px}.cam-frame .bl{border-top:0;border-right:0;border-radius:0 0 0 8px;bottom:-3px;left:-3px}.cam-frame .br{border-top:0;border-left:0;border-radius:0 0 8px;bottom:-3px;right:-3px}.cam-tip{top:calc(16px + var(--safe-top));text-align:center;background:#0009;border-radius:999px;width:max-content;max-width:calc(100vw - 80px);padding:9px 14px;font-size:14px;line-height:1.3;position:absolute;left:50%;transform:translate(-50%)}.cam-level{border:2px solid #ffffffb3;border-radius:50%;width:64px;height:64px;margin:-32px;position:absolute;top:50%;left:50%}.cam-level i{background:#ffd166;border-radius:50%;width:16px;height:16px;margin:-8px;transition:transform 80ms;position:absolute;top:50%;left:50%}.cam-level.ok{border-color:#5fbf7a}.cam-level.ok i{background:#5fbf7a}.cam-bar{padding:16px 20px calc(20px + var(--safe-bottom));background:linear-gradient(#0000,#000000a6);grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid;position:absolute;bottom:0;left:0;right:0}.cam-bar>:first-child{justify-self:start}.cam-bar>:last-child{justify-self:end}.cam-bar .btn{color:#fff}.shutter{appearance:none;cursor:pointer;background:#ffffff40;border:5px solid #fff;border-radius:50%;width:74px;height:74px;padding:0}.shutter:active{background:#fff}.cam-review{object-fit:contain;background:#111;width:100%;height:100%;position:absolute;inset:0}.cam-ghost{opacity:.45;pointer-events:none;width:30%;height:100%;position:absolute;top:0;left:0}.cam-guide-line{pointer-events:none;border-top:1px dashed #ffffff73;height:0;position:absolute;top:50%;left:0;right:0}.cam-count{top:calc(64px + var(--safe-top));text-shadow:0 1px 3px #0009;font-size:15px;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.cam-ring{top:calc(92px + var(--safe-top));background:#ffffff40;border-radius:6px;width:120px;height:6px;margin-left:-60px;position:absolute;left:50%;overflow:hidden}.cam-ring:after{content:"";width:calc(var(--p,0) * 100%);background:#5fbf7a;position:absolute;inset:0}.cam-close{top:calc(12px + var(--safe-top));z-index:2;appearance:none;color:#fff;cursor:pointer;background:#0000008c;border:0;border-radius:50%;width:40px;height:40px;font-size:16px;position:absolute;right:12px}.cam-spacer{width:1px}.ed{z-index:40;padding-top:var(--safe-top);background:#0b0c0e;flex-direction:column;display:flex;position:fixed;inset:0}.ed-head{align-items:center;gap:10px;padding:8px 12px;display:flex}.ed-title{flex:1;font-weight:600}.ed-tabs{gap:4px;padding:0 10px 8px;display:flex;overflow-x:auto}.ed-tabs button{appearance:none;border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:10px;flex:none;padding:9px 11px;font:13px/1 inherit}.ed-tabs button[aria-pressed=true]{color:var(--text);border-color:var(--accent);background:#e3b46b1f}.ed-stage{background:#2a2d31;flex:1;min-height:0;position:relative}.ed-svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.ed-label{fill:#fff;text-anchor:middle;paint-order:stroke;stroke:#000000bf;stroke-width:3px;pointer-events:none;font-weight:700}.ed-label.sub{font-weight:500}.ed-vtx{fill:#fff;stroke:#000;stroke-width:1px;vector-effect:non-scaling-stroke}.ed-draft,.ed-scale{fill:#ffd166;stroke:#000;stroke-width:1px;vector-effect:non-scaling-stroke}.ed-hint{color:var(--muted);border-top:1px solid var(--line);background:#121417;padding:8px 14px;font-size:12.5px;line-height:1.35}.ed-bar{padding:10px 12px calc(12px + var(--safe-bottom));background:#121417;flex-wrap:wrap;align-content:flex-start;align-items:center;gap:8px;min-height:168px;display:flex}.ed-bar .chips{width:100%}.ed-row{scrollbar-width:none;flex-wrap:nowrap;align-items:center;gap:8px;width:100%;display:flex;overflow-x:auto}.ed-row .btn{flex:none}.ed-row .btn.primary{margin-left:auto}.ed-row input[type=range]{flex:1;min-width:120px}.ed-field{color:var(--muted);gap:4px;font-size:12px;display:grid}.ed-field input{width:110px;color:var(--text);border:1px solid var(--line);background:#ffffff0f;border-radius:10px;padding:9px 10px;font:16px/1.2 inherit}.ed-or{color:var(--muted);align-self:end;padding-bottom:12px;font-size:12px}.pano{z-index:45;background:#000;position:fixed;inset:0}.pano-cv{touch-action:none;width:100%;height:100%;display:block}.pano-top{left:14px;top:calc(14px + var(--safe-top));background:#0000008c;border-radius:12px;padding:10px 14px;position:absolute}.pano-top .name{font-weight:600}.room-label.has-photo{pointer-events:auto;cursor:pointer;border-color:#e3b46b99}.apt-360{left:50%;bottom:calc(max(16px, calc(var(--safe-bottom) + 8px)) + 100px);appearance:none;background:var(--accent);color:#1c1610;cursor:pointer;border:0;border-radius:999px;padding:11px 16px;font:600 14px/1 inherit;position:absolute;transform:translate(-50%);box-shadow:0 8px 24px #00000059}html.app-mode,html.app-mode body{overflow:hidden}.app-head .owner{white-space:nowrap;margin-left:auto}.sheet{z-index:55;background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-card{width:min(560px,100%);padding:20px 18px calc(20px + var(--safe-bottom));border:1px solid var(--line);text-align:left;background:#15171b;border-radius:22px 22px 0 0;gap:10px;display:grid}.sheet-card h2{margin:0;font-size:20px}.sheet-card p{margin:0;line-height:1.4}.sheet-card input{width:100%;color:var(--text);border:1px solid var(--line);background:#ffffff0f;border-radius:12px;padding:12px;font:15px/1.2 inherit}.sheet-card .spinner{border:2px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;margin:8px auto;animation:.9s linear infinite spin}.sheet-card .cam-actions .btn{width:100%}.illus-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.illus-row figure{gap:6px;margin:0;display:grid}.illus-row figcaption{font-size:13px;font-weight:600}.illus-row figcaption.ok{color:var(--free)}.illus-row figcaption.bad{color:#ff8a80}.illus-wrap svg,svg.illus{border-radius:10px;width:100%;height:auto;display:block}.cam-card .illus-wrap{margin:4px 0 14px}.big-actions.three{grid-template-columns:1fr}.big-actions.three .tile{grid-template-rows:auto auto;grid-template-columns:36px 1fr;align-items:center;column-gap:12px}.big-actions.three .tile .ico{grid-row:1/span 2;font-size:26px}.tag.warn{color:#ffd166;background:#ffd1661f}.cam-tip.good{background:#2e7d32d9}.cam-tip.bad{background:#b71c1cd9}.cam-frame.good{box-shadow:0 0 0 100vmax #00000073,inset 0 0 0 3px #5fbf7a}.cam-frame.bad .c{border-color:#ff8a80}.cam-frame.good .c{border-color:#5fbf7a}.cam-lens{left:50%;bottom:calc(118px + var(--safe-bottom));background:#00000080;border-radius:999px;gap:6px;padding:5px;display:flex;position:absolute;transform:translate(-50%)}.cam-lens button{appearance:none;color:#fff;cursor:pointer;background:#ffffff1f;border:0;border-radius:50%;width:44px;height:44px;font:600 13px/1 inherit}.cam-lens button[aria-pressed=true]{color:#1c1610;background:#ffd166}.cam-arrow{color:#fff;background:#00000080;border:3px solid #fff;border-radius:50%;place-items:center;width:64px;height:64px;font-size:34px;font-weight:700;animation:1s ease-in-out infinite nudge;display:grid;position:absolute;top:50%;right:18px;transform:translateY(-50%)}.cam-arrow.back{color:#ff8a80;border-color:#ff8a80;animation-name:nudgeBack;left:18px;right:auto}.cam-arrow.ok{color:#5fbf7a;border-color:#5fbf7a;animation:none}@keyframes nudge{50%{transform:translate(8px,-50%)}}@keyframes nudgeBack{50%{transform:translate(-8px,-50%)}}@media (prefers-reduced-motion:reduce){.cam-arrow{animation:none}}.cam-auto{top:calc(12px + var(--safe-top));appearance:none;color:#fff;cursor:pointer;background:#0000008c;border:0;border-radius:999px;padding:9px 12px;font:600 12px/1 inherit;position:absolute;left:12px}.cam-auto[aria-pressed=true]{background:#2e7d32d9}.cam-warn{left:16px;right:16px;top:calc(16px + var(--safe-top));color:#fff;background:#b71c1ceb;border-radius:14px;gap:4px;padding:14px 16px;font-size:14px;line-height:1.35;display:grid;position:absolute}.cam-bar.three{grid-template-columns:1fr 1fr 1fr}.cam-bar.three>*{justify-self:stretch}.cam-bar.three .btn{justify-content:center}.cam-card.wide{width:min(720px,100vw - 24px)}.pano-review{background:#000;border-radius:12px;margin:6px 0 10px;overflow-x:auto}.pano-review canvas{width:auto;max-width:none;height:220px;display:block}
