:root{--ink:#17332e;--ink-soft:#526a65;--green:#176b5b;--green-dark:#0f4f43;--green-light:#e7f3ef;--cream:#f6f5ef;--line:#dfe6e2;--paper:#fff;--shadow:0 18px 50px #20453c17}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:var(--cream);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}.eyebrow{color:var(--green);letter-spacing:.13em;text-transform:uppercase;margin:0 0 6px;font-size:12px;font-weight:800}.eyebrow.light{color:#b8e4d5}.muted{color:var(--ink-soft)}.login-page{background:#f7f6f1;grid-template-columns:minmax(440px,1.08fr) minmax(440px,.92fr);min-height:100vh;display:grid}.login-brand-panel{color:#fff;background:radial-gradient(circle at 84% 18%,#eec26747,#0000 21%),linear-gradient(145deg,#0e4038,#176b5b 58%,#287e68);flex-direction:column;justify-content:center;padding:clamp(56px,8vw,120px);display:flex;position:relative;overflow:hidden}.login-brand-panel:before,.login-brand-panel:after{content:"";border:1px solid #ffffff1c;border-radius:50%;width:360px;height:360px;position:absolute}.login-brand-panel:before{top:16%;right:-170px}.login-brand-panel:after{width:520px;height:520px;bottom:-260px;right:-60px}.login-brand-mark{background:#ffffff1a;border:1px solid #ffffff3d;border-radius:17px;place-items:center;width:56px;height:56px;margin-bottom:36px;font-size:27px;display:grid}.login-brand-panel h1{letter-spacing:-.045em;max-width:690px;margin:0;font-size:clamp(38px,4.5vw,72px);line-height:1.08}.login-lead{color:#ffffffc7;max-width:620px;margin:28px 0 42px;font-size:17px;line-height:1.8}.login-assurances{color:#d7eee6;flex-wrap:wrap;gap:14px 24px;display:flex}.login-assurances span{align-items:center;gap:8px;display:flex}.login-form-panel{place-items:center;padding:48px;display:grid}.login-form-card{width:min(420px,100%)}.login-form-card h2{letter-spacing:-.035em;margin:4px 0 8px;font-size:36px}.login-form{gap:12px;margin-top:30px;display:grid}.login-form label{font-size:13px;font-weight:700}.password-field,.inline-search,.map-search{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:10px;height:48px;padding:0 15px;transition:border-color .2s,box-shadow .2s;display:flex}.password-field:focus-within,.inline-search:focus-within,.map-search:focus-within{border-color:var(--green);box-shadow:0 0 0 3px #176b5b1a}.password-field input,.inline-search input,.map-search input{background:0 0;border:0;outline:0;width:100%}.primary-button{color:#fff;background:var(--green);cursor:pointer;border:0;border-radius:10px;min-height:48px;font-weight:800;box-shadow:0 10px 24px #176b5b33}.primary-button:hover{background:var(--green-dark)}.primary-button:disabled{opacity:.55;cursor:not-allowed}.primary-button.small{min-height:40px;padding:0 17px}.primary-button .anticon{margin-right:7px}.login-footnote{color:#82908c;text-align:center;margin-top:20px;font-size:12px}.form-alert{color:#8c3131;background:#fff2f2;border:1px solid #efcccc;border-radius:9px;margin:18px 0 0;padding:12px 14px;font-size:13px}.sensor-stage-pill{color:var(--green);background:#eef7f3;border:1px solid #cfe1da;border-radius:999px;align-items:center;gap:8px;padding:10px 14px;font-size:12px;font-weight:800;display:inline-flex}.sensor-boundary-grid,.sensor-result-head{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px;display:grid}.sensor-boundary-grid article,.sensor-result-head>div{border:1px solid var(--line);background:#fff;border-radius:13px;padding:20px;box-shadow:0 10px 30px #20453c0d}.sensor-boundary-grid article>.anticon{color:var(--green);font-size:20px}.sensor-boundary-grid strong,.sensor-boundary-grid span,.sensor-result-head small,.sensor-result-head strong,.sensor-result-head span{display:block}.sensor-boundary-grid strong{margin:12px 0 5px;font-size:15px}.sensor-boundary-grid span,.sensor-result-head span{color:var(--ink-soft);font-size:12px}.sensor-import-panel>p{color:var(--ink-soft);line-height:1.7}.sensor-import-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.sensor-file-button{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.sensor-file-button input{display:none}.secondary-button{min-height:40px;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #cfdbd7;border-radius:9px;padding:0 15px;font-weight:700}.secondary-button:hover{border-color:var(--green);color:var(--green)}.sensor-privacy-paths{color:#8c3131;margin-top:12px;font-size:12px}.sensor-result-head>div{min-height:118px}.sensor-result-head small{color:var(--ink-soft);font-size:11px}.sensor-result-head strong{margin:9px 0;font-size:24px}.sensor-result-head strong.ready{color:#187b61}.sensor-result-head strong.review{color:#9a6a12}.sensor-result-head strong.unusable{color:#a13f3f}.sensor-table td:first-child{min-width:240px}.sensor-table td strong,.sensor-table td small{display:block}.sensor-table td small{max-width:330px;color:var(--ink-soft);margin-top:5px}.sensor-quality{border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;display:inline-flex}.sensor-quality.good{color:#176b5b;background:#e5f4ee}.sensor-quality.warning{color:#8a620e;background:#fff2cf}.sensor-quality.poor,.sensor-quality.unavailable{color:#9a3939;background:#fde8e8}.sensor-review-panel{color:#1f6f5d;background:#eef8f4;border:1px solid #cfe5dc;border-radius:12px;gap:13px;margin-top:18px;padding:18px 20px;display:flex}.sensor-review-panel .anticon{margin-top:3px;font-size:18px}.sensor-review-panel strong{display:block}.sensor-review-panel p{color:#53746b;margin:5px 0 0;line-height:1.65}.sensor-empty-state{text-align:center;padding:70px 24px}.sensor-empty-state>.anticon{color:#9db5ad;font-size:42px}.sensor-empty-state h2{margin:18px 0 8px}.sensor-empty-state p{color:var(--ink-soft)}@media (max-width:900px){.sensor-boundary-grid,.sensor-result-head{grid-template-columns:1fr}}.console-layout{background:var(--cream);min-height:100vh}.console-sider{z-index:10;border-right:1px solid var(--line);inset:0 auto 0 0;position:fixed!important}.console-sider+.ant-layout{margin-left:248px}.console-sider .ant-layout-sider-children{flex-direction:column;display:flex}.console-brand{border-bottom:1px solid var(--line);align-items:center;gap:12px;height:80px;padding:0 24px;display:flex}.console-brand-icon{color:#fff;background:var(--green);border-radius:12px;place-items:center;width:40px;height:40px;font-size:20px;display:grid}.console-brand strong,.console-brand small{display:block}.console-brand strong{font-size:16px}.console-brand small{color:#7b8b87;letter-spacing:.12em;margin-top:2px;font-size:11px}.venue-chip{color:var(--green);background:var(--green-light);border:1px solid #d6e7e1;border-radius:11px;align-items:center;gap:11px;margin:20px 16px 12px;padding:13px 14px;display:flex}.venue-chip small,.venue-chip strong{display:block}.venue-chip small{color:#6f8a82;font-size:10px}.venue-chip strong{color:var(--ink);margin-top:2px;font-size:13px}.console-menu{padding:6px 9px;border-inline-end:0!important}.console-menu .ant-menu-item{height:44px;margin-block:4px;font-weight:650}.sider-footer{border-top:1px solid var(--line);margin-top:auto;padding:16px}.local-status{color:#71817d;text-align:center;margin-bottom:10px;font-size:11px}.local-status span,.header-state span{background:#37a777;border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block;box-shadow:0 0 0 4px #37a7771c}.console-header{z-index:8;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffe0;justify-content:space-between;align-items:center;height:64px;padding:0 28px;display:flex;position:sticky;top:0}.header-search{color:#61736e;align-items:center;gap:9px;font-size:13px;display:flex}.header-state{color:#61736e;font-size:12px}.mobile-brand,.mobile-nav{display:none}.console-content{background:var(--cream);padding:30px}.qr-heading-actions{align-items:center;gap:10px;display:flex}.qr-download-link{justify-content:center;align-items:center;padding:0 17px;text-decoration:none;display:inline-flex}.qr-metric-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px;display:grid}.qr-metric-grid article{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:13px;padding:20px}.qr-metric-grid small,.qr-metric-grid strong,.qr-metric-grid span{display:block}.qr-metric-grid small{color:var(--ink-soft);font-size:11px;font-weight:750}.qr-metric-grid strong{color:var(--green);margin:7px 0 5px;font-size:30px}.qr-metric-grid span{color:#82908c;font-size:10px}.qr-generator-panel,.qr-active-panel{margin-bottom:18px}.qr-panel-help{color:var(--ink-soft);margin:-4px 0 16px;font-size:12px;line-height:1.7}.qr-candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;max-height:360px;padding:2px;display:grid;overflow-y:auto}.qr-candidate-grid label{border:1px solid var(--line);cursor:pointer;background:#fbfcfb;border-radius:10px;align-items:center;gap:10px;min-width:0;padding:12px;transition:border-color .2s,background .2s;display:flex}.qr-candidate-grid label:hover{border-color:#98bbb0}.qr-candidate-grid label.selected{border-color:var(--green);background:var(--green-light)}.qr-candidate-grid label.unavailable{opacity:.62;cursor:not-allowed}.qr-candidate-grid label>span{flex:1;min-width:0}.qr-candidate-grid strong,.qr-candidate-grid small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.qr-candidate-grid strong{font-size:12px}.qr-candidate-grid small{color:#72837e;margin-top:3px;font-size:9px}.qr-candidate-grid em{color:var(--green);white-space:nowrap;font-size:8px;font-style:normal;font-weight:800}.qr-generate-actions{align-items:center;gap:14px;margin-top:16px;display:flex}.qr-generate-actions span{color:#82908c;font-size:10px}.qr-notice{color:var(--green);background:#eaf5f1;border:1px solid #cae3da;border-radius:10px;align-items:center;gap:8px;margin:0 0 18px;padding:12px 14px;font-size:12px;display:flex}.qr-card-grid{grid-template-columns:repeat(3,minmax(230px,1fr));gap:14px;display:grid}.qr-card{border:1px solid var(--line);background:#fbfcfb;border-radius:13px;grid-template-columns:174px minmax(0,1fr);min-width:0;display:grid;overflow:hidden}.qr-code-box{border-right:1px solid var(--line);background:#fff;place-items:center;padding:10px;display:grid}.qr-code-box .ant-qrcode{border:0;padding:0}.qr-card-copy{align-self:center;min-width:0;padding:16px 14px 8px}.qr-card-copy>span{color:var(--green);font-size:9px;font-weight:800}.qr-card-copy h3{text-overflow:ellipsis;white-space:nowrap;margin:6px 0 9px;font-size:15px;overflow:hidden}.qr-card-copy code,.data-table code{color:#788782;font-size:9px}.qr-card-actions{flex-wrap:wrap;grid-column:2;align-self:end;gap:5px;padding:4px 10px 12px;display:flex}.qr-card-actions button,.qr-card-actions a{color:#48655d;cursor:pointer;background:#fff;border:1px solid #d9e2de;border-radius:7px;padding:6px 7px;font-size:8px;text-decoration:none}.qr-card-actions button.danger{color:#974a4a;border-color:#eccdcd}.qr-card-actions button:disabled{opacity:.48;cursor:not-allowed}.qr-status{border-radius:999px;padding:4px 7px;font-size:9px;font-weight:800;display:inline-flex}.qr-status.inactive{color:#8c4c4c;background:#fff0f0}.qr-status.replaced{color:#87601f;background:#fff5dc}.qr-safety-note{margin-top:18px}.developer-heading-actions{gap:10px;display:flex}.developer-metric-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.developer-metric-grid article{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:13px;padding:20px}.developer-metric-grid small,.developer-metric-grid strong,.developer-metric-grid span{display:block}.developer-metric-grid small{color:var(--ink-soft);font-size:11px;font-weight:750}.developer-metric-grid strong{color:var(--green);margin:7px 0 5px;font-size:30px}.developer-metric-grid span{color:#82908c;font-size:10px}.developer-alert{margin-bottom:14px}.developer-workspace{grid-template-columns:290px minmax(0,1fr);align-items:start;gap:18px;display:grid}.developer-app-list{padding:20px 0;position:sticky;top:94px;overflow:hidden}.developer-app-list .panel-heading{padding:0 20px}.developer-app-list>button{width:100%;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border:0;border-top:1px solid #edf0ee;grid-template-columns:38px minmax(0,1fr) auto;align-items:start;gap:11px;padding:13px 18px;display:grid}.developer-app-list>button:hover,.developer-app-list>button.active{background:#eff7f4}.developer-app-list>button.active{box-shadow:inset 3px 0 var(--green)}.developer-app-mark{width:36px;height:36px;color:var(--green);background:var(--green-light);border-radius:10px;place-items:center;display:grid}.developer-app-mark.suspended{color:#8b5555;background:#f8eaea}.developer-app-list button strong,.developer-app-list button small,.developer-app-list button code{display:block}.developer-app-list button strong{font-size:12px}.developer-app-list button small{color:#7e8e89;margin-top:3px;font-size:9px}.developer-app-list button code{color:#8e9996;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:8px;overflow:hidden}.developer-app-list button em{color:#6f7f7a;background:#f1f4f3;border-radius:6px;padding:3px 6px;font-size:8px;font-style:normal}.developer-empty{color:#82928d;text-align:center;justify-items:center;gap:8px;padding:40px 18px;display:grid}.developer-empty>.anticon{font-size:30px}.developer-empty strong{color:var(--ink);font-size:13px}.developer-empty span{font-size:10px}.developer-detail{gap:18px;min-width:0;display:grid}.developer-detail>.panel{padding:24px}.developer-summary-head{justify-content:space-between;align-items:start;gap:18px;display:flex}.developer-summary-head h2{margin:9px 0 4px;font-size:24px}.developer-summary-head p{color:var(--ink-soft);margin:0;font-size:11px}.developer-status{border-radius:999px;align-items:center;gap:5px;padding:5px 8px;font-size:9px;font-weight:800;display:inline-flex}.developer-status.active{color:#176b5b;background:#e5f4ee}.developer-status.suspended{color:#934747;background:#fae9e9}.developer-id-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:20px;display:grid}.developer-id-grid>div{background:#f9fbfa;border:1px solid #e6ece9;border-radius:10px;padding:14px}.developer-id-grid small,.developer-id-grid code,.developer-id-grid span{display:block}.developer-id-grid small{color:#6d7f79;font-size:9px;font-weight:750}.developer-id-grid code{overflow-wrap:anywhere;color:#1c5f50;margin:7px 0;font-size:11px}.developer-id-grid span{color:#8b9894;font-size:9px}.developer-quota{margin-top:18px}.developer-quota>div{justify-content:space-between;margin-bottom:7px;font-size:10px;display:flex}.developer-quota span{color:var(--ink-soft)}.developer-form-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.developer-form-grid label,.developer-modal-grid label{align-content:start;gap:7px;display:grid}.developer-form-grid label>span,.developer-modal-grid label>span,.developer-modal-venues>span,.developer-venue-options>span,.developer-modal-field>span{color:#64756f;font-size:10px;font-weight:750}.developer-form-grid .developer-origins{grid-column:1/-1}.developer-venue-options{border:1px solid #e6ece9;border-radius:10px;gap:9px;margin-top:16px;padding:14px;display:grid}.developer-form-actions{align-items:center;gap:13px;margin-top:18px;display:flex}.developer-form-actions span{color:#82908c;font-size:9px;line-height:1.5}.developer-keys .ant-alert{margin-bottom:15px}.developer-key-table td:first-child{min-width:170px}.developer-table-actions{gap:6px;display:flex}.developer-table-actions button{color:#426259;cursor:pointer;background:#fff;border:1px solid #d4dfdb;border-radius:6px;padding:5px 8px;font-size:9px}.developer-table-actions button.danger{color:#934747;border-color:#e7c8c8}.developer-log-empty{color:var(--ink-soft);text-align:center;padding:45px 20px;font-size:11px}.developer-detail-empty{text-align:center;place-content:center;justify-items:center;min-height:420px;display:grid}.developer-detail-empty>.anticon{color:#92afa6;font-size:42px}.developer-detail-empty h2{margin:16px 0 6px}.developer-detail-empty p{color:var(--ink-soft);margin:0}.developer-modal-field{gap:8px;padding:12px 0;display:grid}.developer-modal-grid{grid-template-columns:repeat(2,1fr);gap:15px;padding-top:10px;display:grid}.developer-modal-grid .ant-select{width:100%}.developer-modal-venues{border:1px solid #e6ece9;border-radius:9px;grid-column:1/-1;gap:8px;padding:12px;display:grid}.developer-secret-box{background:#f3f8f6;border:1px solid #d7e5e0;border-radius:10px;margin-top:16px;padding:16px}.developer-secret-box small,.developer-secret-box code{display:block}.developer-secret-box small{color:#657771;font-size:10px;font-weight:750}.developer-secret-box code{overflow-wrap:anywhere;color:#165c4d;-webkit-user-select:all;user-select:all;margin-top:9px;font-size:12px;line-height:1.6}.page-heading{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px;display:flex}.page-heading.compact{align-items:center}.page-heading h1{letter-spacing:-.04em;margin:0;font-size:clamp(28px,3vw,38px);line-height:1.15}.page-heading p:last-child{color:var(--ink-soft);margin:9px 0 0}.published-pill,.unscaled-pill,.draft-pill{color:var(--green);background:var(--green-light);border:1px solid #cce4dc;border-radius:999px;padding:10px 14px;font-size:12px;font-weight:750}.unscaled-pill{color:#92601e;background:#fff7e9;border-color:#eedbbd}.draft-pill{color:#8d601f;background:#fff7e5;border-color:#ead4aa}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px;display:grid}.metric-card{border:1px solid var(--line);background:#fff;border-radius:15px;gap:15px;min-height:154px;padding:22px;display:flex;box-shadow:0 8px 28px #25443c0b}.metric-icon{border-radius:10px;flex:none;place-items:center;width:38px;height:38px;display:grid}.accent-green .metric-icon{color:#176b5b;background:#e8f4f0}.accent-blue .metric-icon{color:#356da0;background:#ebf3fa}.accent-gold .metric-icon{color:#a06821;background:#fff4dd}.accent-red .metric-icon{color:#a14a4a;background:#faecec}.metric-card small{color:#768782}.metric-card strong{letter-spacing:-.04em;margin-top:6px;font-size:31px;display:block}.metric-card p{color:#72827e;margin:7px 0 0;font-size:11px;line-height:1.5}.overview-grid{grid-template-columns:minmax(0,1.22fr) minmax(340px,.78fr);gap:20px;display:grid}.panel{border:1px solid var(--line);background:var(--paper);border-radius:15px;box-shadow:0 8px 28px #25443c0b}.overview-grid>.panel{padding:24px}.panel-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.panel-heading h2{letter-spacing:-.025em;margin:0;font-size:20px}.panel-heading>span{color:#7e8d89;font-size:12px}.map-version{background:#f0f4f2;border-radius:7px;padding:5px 9px;color:#566f68!important}.floor-readiness{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.floor-row{border:1px solid #edf0ee;border-radius:10px;align-items:center;gap:12px;padding:12px;display:flex}.floor-badge,.floor-mini{width:36px;height:36px;color:var(--green);background:var(--green-light);border-radius:8px;place-items:center;font-size:12px;font-weight:800;display:grid}.floor-row div{flex:1;min-width:0}.floor-row strong,.floor-row small{display:block}.floor-row strong{font-size:13px}.floor-row small{color:#85918e;margin-top:3px;font-size:10px}.status-dot{border-radius:50%;width:8px;height:8px}.status-dot.configured{background:#2f9a6f}.status-dot.unconfigured{background:#d0a65c}.quality-list{gap:18px;margin:0;padding:0;list-style:none;display:grid}.quality-list li{color:#2e8b68;gap:12px;display:flex}.quality-list span{color:var(--ink)}.quality-list strong,.quality-list small{display:block}.quality-list strong{font-size:13px}.quality-list small{color:#7c8986;margin-top:4px;font-size:11px;line-height:1.45}.next-action{background:#f2f6f4;border-radius:10px;margin-top:23px;padding:15px}.next-action span,.next-action strong,.next-action a{display:block}.next-action span{color:#74827e;font-size:10px}.next-action strong{margin:3px 0 8px;font-size:13px}.next-action a{color:var(--green);font-size:12px;font-weight:750;text-decoration:none}.map-workspace{border:1px solid var(--line);min-height:calc(100vh - 185px);box-shadow:var(--shadow);background:#fff;border-radius:15px;grid-template-columns:270px minmax(0,1fr);display:grid;overflow:hidden}.map-toolbar{border-right:1px solid var(--line);flex-direction:column;display:flex}.floor-tabs{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:5px;padding:14px;display:grid}.floor-tabs button{color:#647570;cursor:pointer;background:#fff;border:1px solid #e7ece9;border-radius:7px;height:35px;font-size:11px;position:relative}.floor-tabs button.active{color:#fff;border-color:var(--green);background:var(--green)}.floor-tabs button span{border-radius:50%;width:5px;height:5px;position:absolute;top:5px;right:5px}.floor-tabs button span.configured{background:#43b786}.floor-tabs button span.unconfigured{background:#d6a14c}.map-search{height:40px;margin:14px}.map-result-list{padding:0 10px 14px;overflow:auto}.result-summary{color:#7a8985;padding:7px 6px 10px;font-size:11px}.map-result-list button{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:10px;display:flex}.map-result-list button:hover,.map-result-list button.selected{color:var(--green);background:var(--green-light)}.map-result-list button span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:650;overflow:hidden}.map-result-list button small{color:#8b9894;flex:none;font-size:9px}.map-stage{background:#eef1ed;flex-direction:column;min-width:0;padding:16px;display:flex;position:relative}.map-stage-meta{color:#657771;justify-content:space-between;gap:15px;margin-bottom:11px;font-size:11px;display:flex}.navigation-chip{border-radius:6px;padding:5px 8px}.navigation-chip.configured{color:var(--green);background:#dceee8}.navigation-chip.unconfigured{color:#90621f;background:#f8e9c9}.svg-map-frame,.route-map-frame{background:#fff;border:1px solid #d8dfdb;border-radius:11px;flex:1;min-height:480px;overflow:hidden}.svg-map-frame svg,.route-map-frame svg{width:100%;height:100%;display:block}.map-edge{stroke:#0c65508f;stroke-width:2px;vector-effect:non-scaling-stroke}.map-edge.poi_link{stroke:#1e6f5b4d;stroke-dasharray:3 3}.poi-shape{fill:#ecb54414;stroke:#a16d1638;stroke-width:1px;vector-effect:non-scaling-stroke;cursor:pointer}.poi-shape:hover,.poi-shape.selected{fill:#176b5b59;stroke:#176b5b;stroke-width:2px}.map-selection-card{background:#fffffff2;border:1px solid #d8e5e0;border-radius:11px;align-items:center;gap:24px;min-width:260px;padding:13px 14px;display:flex;position:absolute;bottom:48px;left:34px;box-shadow:0 14px 36px #1b3f3629}.map-selection-card div{flex:1}.map-selection-card small,.map-selection-card strong{display:block}.map-selection-card small{color:#7d8b87;font-size:9px}.map-selection-card strong{margin-top:3px;font-size:13px}.map-selection-card>span{color:var(--green);font-size:11px}.map-selection-card button{cursor:pointer;background:0 0;border:0;font-size:18px}.map-legend{color:#667672;gap:18px;padding:11px 2px 0;font-size:10px;display:flex}.map-legend span{align-items:center;gap:6px;display:flex}.map-legend i{border-radius:2px;width:14px;height:3px;display:inline-block}.legend-route{background:#176b5b}.legend-poi{background:#d4a342}.legend-selected{background:#36a27a}.floor-summary-grid{grid-template-columns:repeat(7,1fr);gap:10px;margin-bottom:17px;display:grid}.floor-summary-grid article{border:1px solid var(--line);background:#fff;border-radius:11px;padding:14px}.floor-summary-grid span,.floor-summary-grid strong,.floor-summary-grid small{display:block}.floor-summary-grid span{color:var(--green);font-size:11px;font-weight:800}.floor-summary-grid strong{margin:6px 0 2px;font-size:22px}.floor-summary-grid small{color:#7c8b87;font-size:9px;line-height:1.4}.data-panel{overflow:hidden}.data-controls{border-bottom:1px solid var(--line);align-items:center;gap:11px;padding:16px;display:flex}.inline-search{width:min(420px,100%);height:40px}.data-controls select,.route-form select{border:1px solid var(--line);height:40px;color:var(--ink);background:#fff;border-radius:8px;padding:0 34px 0 11px}.data-count{color:#798783;margin-left:auto;font-size:11px}.table-scroll{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:12px}.data-table th{color:#73817d;text-align:left;white-space:nowrap;background:#f7f9f8;padding:11px 15px;font-size:10px}.data-table td{vertical-align:middle;white-space:nowrap;border-top:1px solid #edf0ee;padding:13px 15px}.data-table td:first-child{white-space:normal;min-width:180px}.data-table td strong,.data-table td small{display:block}.data-table td small{color:#929d9a;text-overflow:ellipsis;max-width:270px;margin-top:4px;font-size:8px;overflow:hidden}.floor-mini{width:31px;height:27px}.record-status,.version-status{border-radius:6px;align-items:center;gap:5px;padding:4px 7px;font-size:10px;display:inline-flex}.record-status.active,.version-status.published{color:#176b5b;background:#e5f3ee}.record-status.needs_review,.version-status.draft{color:#97631a;background:#fff3da}.record-status.inactive{color:#7d8986;background:#edf0ef}.version-status.superseded{color:#677773;background:#edf1ef}.route-workspace{grid-template-columns:330px minmax(0,1fr);gap:17px;min-height:calc(100vh - 185px);display:grid}.route-form{align-self:start;gap:11px;padding:22px;display:grid}.route-form label{color:#5e706a;gap:7px;font-size:11px;font-weight:750;display:grid}.route-form select{width:100%}.route-source-picker{gap:7px;display:grid}.route-source-picker>span{color:#5e706a;font-size:11px;font-weight:750}.route-source-picker>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.route-source-picker button{color:#62736e;cursor:pointer;text-align:left;background:#fff;border:1px solid #dfe6e3;border-radius:8px;gap:2px;min-height:46px;padding:7px 8px;display:grid}.route-source-picker button.active{color:#fff;border-color:var(--green);background:var(--green)}.route-source-picker button strong{font-size:10px}.route-source-picker button small{opacity:.76;font-size:8px}.swap-button{color:var(--green);cursor:pointer;background:0 0;border:0;justify-self:center;font-size:11px}.route-note{background:#f4f6f4;border-radius:9px;margin-top:9px;padding:13px}.route-note strong{font-size:11px}.route-note p{color:#778581;margin:5px 0 0;font-size:10px;line-height:1.6}.route-preview{flex-direction:column;min-width:0;padding:18px;display:flex;overflow:hidden}.route-summary{grid-template-columns:minmax(130px,1fr) 36px minmax(130px,1fr) minmax(120px,.7fr);align-items:center;gap:12px;padding:4px 5px 16px;display:grid}.route-summary div:not(.route-arrow){min-width:0}.route-summary small,.route-summary strong,.route-summary span{display:block}.route-summary small{color:#82908c;font-size:9px}.route-summary strong{text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:13px;overflow:hidden}.route-summary span{color:var(--green);margin-top:3px;font-size:9px}.route-arrow{color:#8ba19a;text-align:center}.route-stat{border-left:1px solid var(--line);padding-left:18px}.route-stat strong{font-size:22px!important}.route-source-result{color:#5c6e68;background:#edf2f0;border-radius:7px;margin:-5px 5px 10px;padding:7px 9px;font-size:9px}.route-source-result.draft{color:#875b1f;background:#fff4dc}.route-floor-tabs{align-items:center;gap:6px;margin-bottom:10px;display:flex}.route-floor-tabs button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;min-width:38px;height:29px;font-size:10px}.route-floor-tabs button.active{color:#fff;border-color:var(--green);background:var(--green)}.route-floor-tabs span{color:#71827d;margin-left:auto;font-size:10px}.route-map-frame{min-height:420px}.planned-route-shadow,.planned-route{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.planned-route-shadow{stroke:#ffffffe6;stroke-width:9px}.planned-route{stroke:#17705e;stroke-width:5px;stroke-dasharray:12 6}.route-start{fill:#2e9e73;stroke:#fff;stroke-width:3px;vector-effect:non-scaling-stroke}.route-end{fill:#cf7145;stroke:#fff;stroke-width:3px;vector-effect:non-scaling-stroke}.route-result-note{color:#6f7f7b;padding:11px 2px 0;font-size:10px}.empty-route{color:#83918d;text-align:center;place-content:center;justify-items:center;min-height:500px;display:grid}.empty-route>.anticon{color:#b1c6bf;font-size:42px}.empty-route h2{color:var(--ink);margin:15px 0 5px;font-size:19px}.empty-route p{max-width:360px;margin:0;font-size:11px;line-height:1.6}.version-explainer{border:1px solid var(--line);background:#fff;border-radius:13px;grid-template-columns:1fr 54px 1fr 54px 1fr;align-items:center;margin-bottom:17px;padding:18px 22px;display:grid}.version-explainer div{grid-template-columns:35px 1fr;column-gap:10px;display:grid}.version-explainer div>span{color:#fff;background:var(--green);border-radius:50%;grid-row:1/3;place-items:center;width:35px;height:35px;font-weight:800;display:grid}.version-explainer strong,.version-explainer small{display:block}.version-explainer strong{font-size:12px}.version-explainer small{color:#82908c;margin-top:3px;font-size:9px}.version-explainer>i{background:#d9e3df;height:1px}.version-table td{min-width:110px}.version-table td:first-child{min-width:210px}.table-action{color:#526a63;cursor:pointer;background:#fff;border:1px solid #d4dfdb;border-radius:7px;min-height:30px;padding:0 10px;font-size:10px}.table-action.publish{color:#fff;border-color:var(--green);background:var(--green)}.current-label{color:var(--green);font-size:10px;font-weight:750}.version-safety-note{color:#5f736d;background:#eef5f2;border:1px solid #d7e5df;border-radius:9px;gap:10px;margin-top:14px;padding:13px 15px;font-size:11px;display:flex}.version-heading-actions{align-items:center;gap:9px;display:flex}.primary-link{color:#fff;background:var(--green);border-radius:9px;align-items:center;min-height:38px;padding:0 14px;font-size:11px;font-weight:800;text-decoration:none;display:inline-flex}.draft-review{margin-bottom:17px;padding:20px}.draft-review-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.draft-review-grid>div{background:#f5f7f6;border-radius:10px;padding:13px}.draft-review-grid small,.draft-review-grid strong{display:block}.draft-review-grid small{color:#73827e;font-size:9px}.draft-review-grid strong{margin-top:4px;font-size:20px}.draft-review-grid strong.error{color:#a74646}.draft-review>p{color:#70807b;margin:14px 0 0;font-size:11px;line-height:1.6}.review-ready,.review-blocked{border-radius:7px;padding:6px 9px;font-weight:750}.review-ready{background:var(--green-light);color:var(--green)!important}.review-blocked{background:#f9eaea;color:#9b4545!important}.table-action:disabled{opacity:.45;cursor:not-allowed}.editor-empty{text-align:center;place-content:center;justify-items:center;min-height:450px;padding:40px;display:grid}.editor-empty-mark{color:#fff;background:var(--green);border-radius:16px;place-items:center;width:54px;height:54px;font-size:28px;display:grid}.editor-empty h2{margin:18px 0 7px}.editor-empty p{color:#72817d;max-width:480px;margin:0 0 22px;font-size:12px;line-height:1.7}.editor-empty .primary-button{padding:0 20px}.editor-page{min-width:0}.editor-heading{justify-content:space-between;align-items:center;gap:22px;margin-bottom:16px;display:flex}.editor-heading h1{letter-spacing:-.04em;margin:0;font-size:clamp(27px,3vw,38px)}.editor-heading p:last-child{color:var(--ink-soft);margin:7px 0 0;font-size:12px}.editor-heading-actions{align-items:center;gap:7px;display:flex}.save-state{white-space:nowrap;border-radius:8px;margin-right:4px;padding:7px 10px;font-size:10px;font-weight:750}.save-state.saved{color:var(--green);background:var(--green-light)}.save-state.dirty{color:#94621e;background:#fff1d5}.icon-action{border:1px solid var(--line);width:39px;height:39px;color:var(--ink);cursor:pointer;background:#fff;border-radius:9px}.icon-action:disabled{opacity:.38;cursor:not-allowed}.editor-save{min-height:40px;padding:0 16px}.editor-notice{border:1px solid;border-radius:9px;margin-bottom:13px;padding:10px 13px;font-size:11px}.editor-notice.success{color:#236a54;background:#ebf5f1;border-color:#cce3db}.editor-notice.error{color:#8d3f3f;background:#fff0f0;border-color:#eccdcd}.editor-notice.info{color:#6d5a2f;background:#fff8e8;border-color:#e9dab6}.editor-layout{grid-template-columns:178px minmax(520px,1fr) 326px;align-items:stretch;gap:13px;min-height:calc(100vh - 182px);display:grid}.editor-toolbox{align-self:start;max-height:calc(100vh - 92px);padding:10px;position:sticky;top:76px;overflow:auto}.editor-toolbox-title{color:#7a8985;letter-spacing:.08em;padding:7px 8px 10px;font-size:10px;font-weight:800}.editor-toolbox>button{color:#566a64;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:10px;width:100%;margin-bottom:5px;padding:11px 9px;display:flex}.editor-toolbox>button:hover{background:#f3f6f4}.editor-toolbox>button.active{color:var(--green);background:var(--green-light);border-color:#cce2da}.editor-toolbox>button>.anticon{width:22px;font-size:17px}.editor-toolbox button span span,.editor-toolbox button strong,.editor-toolbox button small{display:block}.editor-toolbox button strong{font-size:11px}.editor-toolbox button small{color:#85928e;margin-top:3px;font-size:8px}.editor-tool-help{color:#75837f;background:#f4f6f4;border-radius:8px;margin-top:10px;padding:11px;font-size:9px;line-height:1.55}.editor-object-search{border:1px solid var(--line);color:#81908c;border-radius:8px;align-items:center;gap:7px;height:34px;margin-top:9px;padding:0 9px;display:flex}.editor-object-search input{background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:9px}.editor-object-list{max-height:240px;margin-top:5px;overflow:auto}.editor-object-list button{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;width:100%;padding:7px 8px;display:block}.editor-object-list button:hover,.editor-object-list button.active{color:var(--green);background:var(--green-light)}.editor-object-list strong,.editor-object-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.editor-object-list strong{font-size:9px}.editor-object-list small{color:#8a9692;margin-top:2px;font-size:7px}.editor-canvas-panel{flex-direction:column;min-width:0;display:flex;overflow:hidden}.editor-floorbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:49px;padding:8px 11px;display:flex}.editor-floor-meta{align-items:center;gap:10px;display:flex}.editor-floor-meta>span{color:#7b8985;white-space:nowrap;font-size:9px}.editor-floor-tabs{gap:4px;display:flex;overflow-x:auto}.editor-floor-tabs button{color:#62736e;cursor:pointer;background:#fff;border:1px solid #e0e6e3;border-radius:7px;min-width:37px;height:30px;font-size:10px;font-weight:750}.editor-floor-tabs button.active{color:#fff;border-color:var(--green);background:var(--green)}.editor-zoom-controls{background:#fff;border:1px solid #dde5e1;border-radius:8px;align-items:center;height:30px;display:flex;overflow:hidden}.editor-zoom-controls button{color:#536760;cursor:pointer;background:#fff;border:0;border-right:1px solid #e4e9e7;min-width:30px;height:100%}.editor-zoom-controls button:hover:not(:disabled){color:var(--green);background:var(--green-light)}.editor-zoom-controls button:disabled{color:#aeb9b5;cursor:not-allowed}.editor-zoom-controls strong{color:#50635d;text-align:center;min-width:45px;font-size:9px}.editor-zoom-controls .zoom-reset{border-left:1px solid #e4e9e7;border-right:0;min-width:40px;font-size:8px}.editor-map-frame{background:#e9eeea;flex:none;height:clamp(520px,100vh - 250px,720px);min-height:520px;padding:12px;overflow:auto}.editor-map-stage{min-width:360px;margin:0 auto}.editor-map-frame svg{touch-action:none;background:#fff;border:1px solid #d4ddd9;border-radius:9px;width:100%;height:auto;display:block}.editor-map-frame.tool-add-poi svg,.editor-map-frame.tool-add-node svg{cursor:crosshair}.editor-map-frame.tool-add-edge svg{cursor:alias}.editor-edge-layer line{stroke:#12665185;stroke-width:4px;vector-effect:non-scaling-stroke;cursor:pointer;pointer-events:stroke}.editor-edge-layer line.closed{stroke:#974c4475;stroke-dasharray:5 4}.editor-edge-layer line:hover,.editor-edge-layer line.selected{stroke:#e28a34;stroke-width:6px}.editor-poi-layer rect{fill:#e0ab3f1a;stroke:#9d6c1f54;stroke-width:1.3px;vector-effect:non-scaling-stroke;cursor:pointer}.editor-poi-layer rect.needs_review{fill:#e0913f29;stroke-dasharray:4 3}.editor-poi-layer rect.inactive{fill:#69777217;stroke:#69777261}.editor-poi-layer rect:hover,.editor-poi-layer rect.selected{fill:#176b5b59;stroke:#0e5f50;stroke-width:2.5px}.editor-poi-selection-layer .poi-move-surface{fill:#176b5b14;stroke:#0e5f50;stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:all;cursor:move}.editor-poi-selection-layer circle{fill:#fff;stroke:#0e5f50;stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:all}.editor-poi-selection-layer circle[data-resize-handle=nw],.editor-poi-selection-layer circle[data-resize-handle=se]{cursor:nwse-resize}.editor-poi-selection-layer circle[data-resize-handle=ne],.editor-poi-selection-layer circle[data-resize-handle=sw]{cursor:nesw-resize}.editor-node-layer circle{fill:#f9fbfa;stroke:#176b5b;stroke-width:2px;vector-effect:non-scaling-stroke;cursor:grab}.editor-node-layer circle.poi_entrance{fill:#e8b34d;stroke:#fff}.editor-node-layer circle.vertical{fill:#7f63b5;stroke:#fff}.editor-node-layer circle.selected{fill:#ee8039;stroke:#fff;stroke-width:4px}.editor-node-layer circle.edge-start{fill:#d94747;stroke:#fff;stroke-width:4px}.editor-node-layer circle:active{cursor:grabbing}.editor-map-legend{color:#71807c;align-items:center;gap:14px;min-height:38px;padding:0 13px;font-size:9px;display:flex}.editor-map-legend span{align-items:center;gap:5px;display:flex}.editor-map-legend span:last-child{margin-left:auto}.editor-map-legend i{border-radius:3px;width:12px;height:6px;display:inline-block}.legend-editor-poi{background:#d8a440}.legend-editor-node{background:#176b5b}.legend-editor-route{background:#3d8d79;height:3px!important}.editor-inspector{align-self:start;max-height:calc(100vh - 92px);position:sticky;top:76px;overflow:auto}.inspector-heading{border-bottom:1px solid var(--line);color:#687873;letter-spacing:.06em;justify-content:space-between;align-items:center;min-height:47px;padding:0 16px;font-size:10px;font-weight:800;display:flex}.inspector-heading button{color:#6d7b77;cursor:pointer;background:0 0;border:0;font-size:20px}.inspector-form{border-bottom:1px solid var(--line);gap:10px;padding:16px;display:grid}.inspector-form h2{text-overflow:ellipsis;white-space:nowrap;margin:-4px 0 0;font-size:17px;overflow:hidden}.entity-id{color:#8d9996;text-overflow:ellipsis;white-space:nowrap;margin-top:-7px;font-size:8px;overflow:hidden}.inspector-form label{color:#60716c;gap:5px;font-size:9px;font-weight:750;display:grid}.inspector-form input:not([type=checkbox]),.inspector-form select{border:1px solid var(--line);width:100%;height:35px;color:var(--ink);background:#fff;border-radius:7px;outline:0;padding:0 9px;font-size:10px}.inspector-form input:focus,.inspector-form select:focus{border-color:var(--green);box-shadow:0 0 0 2px #176b5b17}.field-row,.coordinate-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.coordinate-grid{grid-template-columns:repeat(4,1fr)}.check-field{align-items:center;gap:8px!important;display:flex!important}.check-field input{accent-color:var(--green)}.inspector-apply{min-height:37px;margin-top:3px;font-size:10px}.danger-quiet{color:#974747;cursor:pointer;background:#fff7f7;border:1px solid #eccfcf;border-radius:7px;min-height:34px;font-size:9px}.danger-quiet:disabled{color:#8a9692;cursor:not-allowed;background:#f3f5f4;border-color:#dde4e1}.edge-endpoints{color:#788681;background:#f4f6f5;border-radius:7px;gap:4px;padding:9px;font-size:8px;display:grid}.edge-endpoints span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.edge-endpoints .anticon{color:var(--green)}.readonly-stat{color:#74827e;background:#f5f7f6;border-radius:7px;justify-content:space-between;align-items:center;padding:9px;font-size:9px;display:flex}.readonly-stat strong{color:var(--ink)}.floor-detail-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.floor-detail-grid span{color:#7d8986;background:#f4f6f5;border-radius:7px;padding:8px;font-size:8px}.floor-detail-grid strong{color:var(--ink);margin-top:3px;font-size:9px;display:block}.inspector-help{color:#7a8884;margin:0;font-size:9px;line-height:1.6}.entrance-preview{color:#48675e;background:#eef8f4;border:1px solid #cfe3dc;border-radius:8px;gap:3px;margin-top:-3px;padding:9px 10px;font-size:9px;line-height:1.5;display:grid}.entrance-preview.warning{color:#8a5c1b;background:#fff7e7;border-color:#ebd2a6}.entrance-preview strong,.entrance-preview span{display:block}.editor-validation{border-bottom:1px solid var(--line);padding:14px 16px}.validation-summary{gap:14px;display:flex}.validation-summary span{color:#71807c;font-size:9px}.validation-summary strong{color:var(--green);font-size:17px}.validation-summary strong.error{color:#ae4949}.validation-summary strong.warning{color:#b47a27}.validation-caption{color:#8b9693;margin:5px 0 9px;font-size:8px}.issue-list{gap:4px;max-height:210px;display:grid;overflow:auto}.issue-list button{color:#a47528;cursor:pointer;text-align:left;background:#fff9ec;border:0;border-radius:7px;align-items:flex-start;gap:8px;width:100%;padding:7px;display:flex}.issue-list button:has(.anticon-warning){color:#a94747;background:#fff1f1}.issue-list button span{min-width:0}.issue-list button strong,.issue-list button small{display:block}.issue-list button strong{color:var(--ink);font-size:9px}.issue-list button small{color:#899591;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:7px;overflow:hidden}.issue-more{color:#84908d;margin-top:7px;font-size:8px}.validation-clear{color:var(--green);background:var(--green-light);text-align:center;border-radius:8px;padding:12px;font-size:10px}.editor-diff{color:#72817d;gap:4px;padding:13px 16px;font-size:9px;display:grid}.editor-diff strong{color:var(--ink);font-size:13px}.editor-diff small{color:#909a97;font-size:8px}.error-state{text-align:center;place-content:center;justify-items:center;min-height:60vh;display:grid}.error-state>.anticon{color:#c48737;font-size:42px}.error-state h1{margin:16px 0 5px;font-size:26px}.error-state p{color:#6c7d78;margin:0 0 20px}@media (max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.overview-grid{grid-template-columns:1fr}.floor-summary-grid{grid-template-columns:repeat(4,1fr)}.route-workspace{grid-template-columns:280px minmax(0,1fr)}.editor-layout{grid-template-columns:160px minmax(0,1fr)}.editor-inspector{grid-column:1/-1;max-height:none;position:static}.draft-review-grid{grid-template-columns:repeat(3,1fr)}.qr-candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.qr-card-grid{grid-template-columns:repeat(2,minmax(250px,1fr))}.developer-metric-grid{grid-template-columns:repeat(2,1fr)}.developer-workspace{grid-template-columns:240px minmax(0,1fr)}.developer-form-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:850px){.login-page{grid-template-columns:1fr}.login-brand-panel{min-height:42vh;padding:48px 30px}.login-brand-panel h1{font-size:38px}.login-lead{margin:18px 0 24px}.login-form-panel{padding:42px 24px}.console-sider{display:none}.console-sider+.ant-layout{margin-left:0}.console-header{height:58px;padding:0 16px}.mobile-brand,.mobile-nav{display:flex}.mobile-brand{align-items:center;gap:8px;font-size:12px;font-weight:750}.mobile-nav{gap:2px}.mobile-nav button{color:#6f817b;background:0 0;border:0;border-radius:8px;width:34px;height:34px}.mobile-nav button.active{color:var(--green);background:var(--green-light)}.header-search,.header-state{display:none}.console-content{padding:20px 15px}.page-heading{align-items:flex-start}.map-workspace,.route-workspace{grid-template-columns:1fr;min-height:auto}.map-toolbar{border-right:0;border-bottom:1px solid var(--line);max-height:310px}.map-result-list{max-height:180px}.svg-map-frame,.route-map-frame{min-height:360px}.floor-summary-grid{grid-template-columns:repeat(3,1fr)}.editor-heading{flex-direction:column;align-items:flex-start}.editor-heading-actions{flex-wrap:wrap;width:100%}.editor-layout{grid-template-columns:1fr}.editor-toolbox{grid-template-columns:repeat(2,1fr);gap:5px;max-height:none;display:grid;position:static}.editor-toolbox-title,.editor-tool-help,.editor-object-search,.editor-object-list{grid-column:1/-1}.editor-toolbox>button{margin-bottom:0}.editor-inspector{grid-column:auto}.editor-map-frame{height:430px;min-height:430px}.developer-workspace{grid-template-columns:1fr}.developer-app-list{position:static}}@media (max-width:560px){.metric-grid{grid-template-columns:1fr}.page-heading{display:grid}.published-pill,.unscaled-pill,.draft-pill{justify-self:start}.floor-readiness{grid-template-columns:1fr}.floor-summary-grid{grid-template-columns:repeat(2,1fr)}.data-controls{flex-direction:column;align-items:stretch}.data-count{margin-left:0}.route-summary{grid-template-columns:1fr 26px 1fr}.route-stat{border-top:1px solid var(--line);border-left:0;grid-column:1/-1;padding:10px 0 0}.version-explainer{grid-template-columns:1fr;gap:14px}.version-explainer>i{display:none}.version-heading-actions{flex-direction:column;align-items:flex-start}.draft-review-grid{grid-template-columns:repeat(2,1fr)}.editor-heading-actions .save-state{text-align:center;width:100%;margin:0}.editor-save{flex:1}.editor-floorbar{flex-direction:column;align-items:flex-start}.editor-floor-meta{flex-direction:column;align-items:flex-start;width:100%}.coordinate-grid{grid-template-columns:repeat(2,1fr)}.qr-heading-actions{flex-direction:column;align-items:flex-start}.qr-metric-grid,.qr-candidate-grid,.qr-card-grid{grid-template-columns:1fr}.qr-generate-actions{flex-direction:column;align-items:flex-start}.developer-heading-actions{flex-direction:column;align-items:stretch}.developer-metric-grid,.developer-id-grid,.developer-form-grid,.developer-modal-grid{grid-template-columns:1fr}.developer-form-grid .developer-origins,.developer-modal-venues{grid-column:auto}.developer-form-actions{flex-direction:column;align-items:flex-start}}.demo-page{color:#16342e;background:radial-gradient(circle at 88% 2%,#e8bd5c38,#0000 22%),linear-gradient(#ecf5f1 0,#f7f5ef 340px 100%);width:min(560px,100%);min-height:100vh;margin:0 auto;padding-bottom:34px;box-shadow:0 0 80px #1246391a}.demo-header{justify-content:space-between;align-items:center;gap:14px;min-height:70px;padding:12px 20px;display:flex}.demo-brand{align-items:center;gap:10px;display:flex}.demo-brand>.anticon{color:#fff;background:#176b5b;border-radius:12px;place-items:center;width:38px;height:38px;font-size:18px;display:grid}.demo-brand strong,.demo-brand small{display:block}.demo-brand strong{font-size:14px}.demo-brand small{color:#718680;margin-top:2px;font-size:9px}.demo-version,.demo-status{color:#176b5b;white-space:nowrap;background:#ffffff94;border:1px solid #176b5b2e;border-radius:999px;padding:7px 10px;font-size:9px;font-weight:800}.demo-status.low_confidence,.demo-status.off_route{color:#9b5b25;background:#fff6e7;border-color:#ead3ad}.demo-status.cancelled{color:#8c4c4c;background:#fff1f1;border-color:#e5caca}.demo-hero{padding:34px 24px 28px}.demo-hero>p{color:#176b5b;letter-spacing:.12em;margin:0 0 9px;font-size:10px;font-weight:850}.demo-hero h1{letter-spacing:-.055em;margin:0;font-size:clamp(32px,8vw,46px);line-height:1.12}.demo-hero>span{color:#667b75;max-width:430px;margin-top:17px;font-size:12px;line-height:1.7;display:block}.demo-setup-card,.demo-instruction-card,.demo-correction-card{background:#fffffff0;border:1px solid #d8e2dde6;border-radius:18px;margin:0 16px;padding:20px;box-shadow:0 16px 44px #1d483d14}.demo-step-label{align-items:center;gap:8px;margin-bottom:13px;font-size:12px;font-weight:850;display:flex}.demo-step-label>span{color:#fff;background:#176b5b;border-radius:8px;place-items:center;width:24px;height:24px;font-size:10px;display:grid}.demo-field{gap:6px;display:grid}.demo-field>span{color:#6a7c77;font-size:10px;font-weight:750}.demo-field select{color:#17332e;background:#fff;border:1px solid #d9e3df;border-radius:11px;outline:none;width:100%;height:48px;padding:0 12px}.demo-field select:focus{border-color:#176b5b;box-shadow:0 0 0 3px #176b5b17}.demo-context-banner{color:#176b5b;background:#eaf5f1;border-radius:9px;align-items:center;gap:7px;margin:0 0 13px;padding:10px 12px;font-size:10px;display:flex}.demo-quick-starts{margin-top:14px}.demo-quick-starts>span{color:#788983;font-size:9px;font-weight:750}.demo-quick-starts>div{gap:7px;margin-top:7px;padding-bottom:3px;display:flex;overflow-x:auto}.demo-quick-starts button{color:#586e67;cursor:pointer;background:#f8faf9;border:1px solid #dbe4e0;border-radius:9px;flex:none;padding:7px 10px;font-size:9px}.demo-quick-starts button.active{color:#fff;background:#176b5b;border-color:#176b5b}.demo-history-start{color:#536a63;cursor:pointer;text-align:left;background:#f8fbfa;border:1px dashed #c9dad4;border-radius:11px;align-items:center;gap:11px;width:100%;margin-top:12px;padding:11px 12px;display:flex}.demo-history-start>.anticon{color:#176b5b;font-size:18px}.demo-history-start small,.demo-history-start strong{display:block}.demo-history-start small{color:#84928e;font-size:8px}.demo-history-start strong{margin-top:3px;font-size:11px}.demo-history-start.active{background:#eaf5f1;border-style:solid;border-color:#176b5b}.demo-divider{background:#e4e9e7;height:1px;margin:20px 0}.demo-source-note{color:#758680;margin-top:13px;font-size:9px}.demo-main-button,.demo-secondary-button{cursor:pointer;border:0;border-radius:11px;width:100%;min-height:48px;font-weight:850}.demo-main-button{color:#fff;background:#176b5b;margin-top:16px;box-shadow:0 12px 26px #176b5b33}.demo-main-button:hover{background:#105446}.demo-main-button:disabled,.demo-secondary-button:disabled{opacity:.48;cursor:not-allowed}.demo-main-button .anticon,.demo-secondary-button .anticon{margin-right:6px}.demo-secondary-button{color:#325b50;background:#fff;border:1px solid #cfded8;min-height:42px;margin-top:8px}.demo-secondary-button.danger{color:#9b4a4a;background:#fff8f8;border-color:#e5caca}.demo-error{color:#934545;background:#fff3f3;border:1px solid #ebcccc;border-radius:9px;align-items:flex-start;gap:7px;margin:12px 16px 0;padding:10px 12px;font-size:10px;line-height:1.5;display:flex}.demo-setup-card>.demo-error{margin-inline:0}.demo-footer,.demo-session-foot{color:#84918e;text-align:center;padding:18px 24px 0;font-size:9px;line-height:1.6}.demo-route-summary{background:#ffffffe0;border:1px solid #d8e2ddeb;border-radius:14px;grid-template-columns:1fr 26px 1fr;align-items:center;gap:7px;margin:5px 16px 13px;padding:14px 16px;display:grid}.demo-route-summary>.anticon{color:#86a199}.demo-route-summary>div{min-width:0}.demo-route-summary>div:last-child{text-align:right}.demo-route-summary small,.demo-route-summary strong,.demo-route-summary span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.demo-route-summary small{color:#84938f;font-size:8px}.demo-route-summary strong{margin:3px 0;font-size:11px}.demo-route-summary span{color:#176b5b;font-size:8px;font-weight:800}.demo-progress{background:#176b5b1f;border-radius:999px;height:4px;margin:0 20px 15px;overflow:hidden}.demo-progress span{border-radius:inherit;background:linear-gradient(90deg,#176b5b,#e1a93b);height:100%;transition:width .35s;display:block}.demo-map-card{background:#fff;border:1px solid #d9e2de;border-radius:17px;margin:0 16px 13px;overflow:hidden;box-shadow:0 16px 42px #1d483d14}.demo-map-meta{justify-content:space-between;align-items:center;height:42px;padding:0 14px;display:flex}.demo-map-meta strong{font-size:12px}.demo-map-meta span{color:#748680;font-size:9px}.demo-map-card svg{background:#eef1ef;width:100%;max-height:340px;display:block}.demo-route-shadow,.demo-route-line{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.demo-route-shadow{stroke:#fff;stroke-width:10px}.demo-route-line{stroke:#176b5b;stroke-width:5px;stroke-dasharray:11 5}.demo-start-dot{fill:#176b5b;stroke:#fff;stroke-width:4px;vector-effect:non-scaling-stroke}.demo-end-dot{fill:#e2a53c;stroke:#fff;stroke-width:4px;vector-effect:non-scaling-stroke}.demo-instruction-card{padding:18px 20px}.demo-segment-count{color:#176b5b;font-size:9px;font-weight:850}.demo-instruction-card h1{letter-spacing:-.035em;margin:8px 0 9px;font-size:clamp(21px,5vw,28px);line-height:1.28}.demo-instruction-card p{color:#6f817b;margin:0;font-size:10px;line-height:1.65}.demo-actions{margin:13px 16px 0}.demo-actions .demo-main-button{margin-top:0}.demo-control-row{justify-content:center;gap:8px;margin-top:11px;display:flex}.demo-control-row button{color:#71817c;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:7px 12px;font-size:9px}.demo-correction-card{margin-top:13px}.demo-correction-card>p{color:#70817c;margin:-4px 0 13px;font-size:10px;line-height:1.55}.demo-candidate-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.demo-candidate-grid button{color:#294b42;cursor:pointer;text-align:left;background:#f9fbfa;border:1px solid #d9e3df;border-radius:10px;min-width:0;padding:11px}.demo-candidate-grid strong,.demo-candidate-grid small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.demo-candidate-grid strong{font-size:10px}.demo-candidate-grid small{color:#81908c;margin-top:4px;font-size:8px}.demo-arrived{text-align:center;align-content:center;justify-items:center;min-height:calc(100vh - 210px);padding:36px 28px;display:grid}.demo-arrived>.anticon{color:#176b5b;font-size:62px}.demo-arrived.cancelled>.anticon{color:#9b5858}.demo-arrived h1{letter-spacing:-.04em;margin:20px 0 8px;font-size:28px}.demo-arrived p{color:#6f817b;max-width:360px;margin:0 0 12px;font-size:11px;line-height:1.7}.demo-arrived .demo-main-button{max-width:300px}.qr-landing-page{background:radial-gradient(circle at 50% 0,#dceee8,#f7f5ef 48%);place-items:center;min-height:100vh;padding:24px;display:grid}.qr-landing-card{text-align:center;background:#fff;border:1px solid #d7e3df;border-radius:22px;width:min(430px,100%);padding:30px 26px;box-shadow:0 24px 70px #194b3e1f}.qr-verified-mark{color:var(--green);background:var(--green-light);border-radius:999px;align-items:center;gap:5px;padding:6px 9px;font-size:9px;font-weight:800;display:inline-flex}.qr-landing-icon{color:var(--green);margin:24px auto 14px;font-size:54px;display:block}.qr-landing-card>p{color:#7a8985;margin:0;font-size:10px}.qr-landing-card>h1{letter-spacing:-.04em;margin:7px 0 12px;font-size:29px}.qr-location-meta{justify-content:center;gap:8px;display:flex}.qr-location-meta span{color:#4d6861;background:#fafcfb;border:1px solid #dce5e2;border-radius:8px;padding:6px 9px;font-size:9px}.qr-landing-card>small{color:#899691;margin-top:13px;font-size:8px;display:block}.qr-route-update{color:#6f5729;text-align:left;background:#fff7e7;border-radius:10px;margin-top:20px;padding:12px;font-size:10px;line-height:1.6}.qr-start-link{place-items:center;text-decoration:none;display:grid}.qr-copy-warning{color:#8b9693;margin-top:14px;font-size:8px;line-height:1.6}.qr-landing-card.invalid>.anticon{color:#a95757;font-size:54px}.qr-landing-card.invalid>p{color:#a95757;margin-top:17px;font-weight:800}.qr-landing-card.invalid>span{color:#6d7c78;font-size:10px;line-height:1.7;display:block}.qr-landing-card.invalid>a{color:var(--green);margin-top:22px;font-size:11px;font-weight:800;display:inline-block}@media (max-width:560px){.demo-page{width:100%;box-shadow:none}.demo-map-card svg{max-height:300px}}
