:root{color:#1a1d21;background:#d7dde3;font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;max-height:100%;overflow:hidden;overscroll-behavior:none;touch-action:manipulation}body{min-width:320px;position:relative}button,input,textarea,select{font:inherit}button{border:0;-moz-appearance:none;appearance:none;-webkit-appearance:none}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.app{position:relative;display:flex;flex-direction:column;height:100%;max-height:100dvh;overflow:hidden;background:#d7dde3}.map-wrap{position:relative;flex:1;min-height:0;touch-action:manipulation}.map-canvas{width:100%;height:100%;touch-action:manipulation}.map-canvas .amap-controlbar,.map-canvas .amap-luopan,.map-canvas [class*=amap-controlbar],.map-canvas [class*=amap-luopan]{pointer-events:none!important}.hud-top{position:absolute;top:0;left:0;right:0;z-index:5;padding:max(10px,env(safe-area-inset-top)) 12px 0;pointer-events:none}.hud-top>*{pointer-events:auto}.search-pill{display:flex;align-items:stretch;min-height:48px;border-radius:999px;background:#fffffff5;box-shadow:0 6px 24px #0f172029;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-pill-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:0 4px 0 16px;border:0;background:transparent;color:#868e96;text-align:left;cursor:pointer}.search-pill-main span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:500}.search-pill-main span.has-query{color:#212529}.search-pill-icon{flex-shrink:0;color:#495057}.search-pill-add{width:52px;flex-shrink:0;display:grid;place-items:center;border:0;border-left:1px solid #edf0f2;background:transparent;color:#1c7ed6;cursor:pointer}.search-pill-clear{width:40px;flex-shrink:0;display:grid;place-items:center;border:0;background:transparent;color:#868e96;cursor:pointer}.search-pill-clear:active{color:#495057}.search-pill-roads{width:44px;flex-shrink:0;display:grid;place-items:center;border:0;border-left:1px solid #edf0f2;background:transparent;color:#495057;cursor:pointer}.search-pill-roads:active{color:#1c7ed6;background:#f1f3f5}.search-pill-plates{width:44px;flex-shrink:0;display:grid;place-items:center;border:0;border-left:1px solid #edf0f2;background:transparent;color:#495057;cursor:pointer}.search-pill-plates:active{color:#1c7ed6;background:#f1f3f5}.search-pill-pdf{width:44px;flex-shrink:0;display:grid;place-items:center;border:0;border-left:1px solid #edf0f2;background:transparent;color:#495057;cursor:pointer}.search-pill-pdf:active{color:#1c7ed6;background:#f1f3f5}.search-pill-pdf:disabled{opacity:.4;cursor:not-allowed}.search-pill-export{width:44px;flex-shrink:0;display:grid;place-items:center;border:0;border-left:1px solid #edf0f2;background:transparent;color:#495057;cursor:pointer}.search-pill-export:active{color:#1c7ed6;background:#f1f3f5}.search-pill-export:disabled{opacity:.4;cursor:not-allowed}.search-pill-add.active{color:#e03131;background:#fff5f5}.status-filter-bar{margin-top:8px;padding:0;background:transparent;border:0;display:flex;flex-direction:column;gap:6px}.status-filter-row{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.status-filter-row::-webkit-scrollbar{display:none}.status-chip{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;box-sizing:border-box;height:30px;min-height:30px;border-radius:999px;padding:0 11px;font-size:.72rem;font-weight:650;line-height:1;border:0;background:#ffffffeb;color:#495057;box-shadow:0 2px 10px #0f17201a;cursor:pointer}.status-chip i{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0;opacity:.4}.status-chip svg{flex-shrink:0;display:block;opacity:.45}.status-chip.on{color:#212529;background:#fff}.status-chip.on i,.status-chip.on svg{opacity:1}.status-chip.off{opacity:.55}.map-hint{position:absolute;left:50%;top:calc(160px + env(safe-area-inset-top));transform:translate(-50%);z-index:4;max-width:calc(100% - 96px);padding:8px 12px;border-radius:999px;background:#101820e0;color:#fff;font-size:.78rem;text-align:center;pointer-events:none}.map-toast{position:absolute;top:calc(160px + env(safe-area-inset-top));left:12px;right:72px;z-index:4;padding:10px 12px;border-radius:12px;background:#fff;box-shadow:0 4px 16px #0000001f;font-size:.85rem}.map-toast.error{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff5f5;color:#c92a2a}.first-visit-tip{position:absolute;left:12px;right:12px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:5;display:flex;align-items:center;gap:10px;padding:12px 12px 12px 16px;border-radius:14px;background:#ffffffb8;color:#212529;border:1px solid rgba(255,255,255,.55);box-shadow:0 8px 28px #0f172024;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:first-visit-tip-in .35s ease-out}.first-visit-tip p{margin:0;flex:1;font-size:.86rem;font-weight:600;line-height:1.4}.first-visit-tip-close{flex-shrink:0;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:#495057;cursor:pointer}.first-visit-tip-close:active{background:#0f172014}@keyframes first-visit-tip-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.form-error{margin:0 0 8px;color:#c92a2a;font-size:.85rem}.fab-rail{position:absolute;top:calc(152px + env(safe-area-inset-top));right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:4;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.fab-rail>*{pointer-events:auto}.fab-stack{position:relative;top:auto;right:auto;bottom:auto;z-index:auto;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;flex-direction:column;gap:8px;align-items:flex-end}.fab-stack::-webkit-scrollbar{display:none}.fab-locate{flex:none}@media (max-width: 480px){.fab-rail{top:calc(148px + env(safe-area-inset-top));gap:6px}.fab-stack{gap:6px}.fab-label-max-kicker{display:none}.fab-icon,.fab-zoom,.fab-zoom .fab-icon{width:40px}.fab-icon,.fab-zoom .fab-icon{height:40px}}.fab-zoom{display:flex;flex-direction:column;width:44px;border-radius:12px;overflow:hidden}.fab-zoom .fab-icon{box-shadow:none;border-radius:0;width:44px;flex:none}.fab-zoom .fab-icon+.fab-icon{border-top:1px solid #edf0f2}.fab-label-max{display:flex;flex-direction:column;align-items:center;min-width:52px;padding:7px 4px 0;border-radius:12px;background:#fffffff5;color:#212529}.fab-label-max.is-on{color:#1c7ed6;background:#e7f5ff}.fab-label-max-kicker{font-size:10px;font-weight:700;color:#868e96;line-height:1.2}.fab-label-max.is-on .fab-label-max-kicker{color:#4dabf7}.fab-label-max-value{font-size:16px;font-weight:800;line-height:1.25;font-variant-numeric:tabular-nums}.fab-label-max-view{font-size:10px;color:#868e96;line-height:1.2;font-variant-numeric:tabular-nums}.fab-label-max-btns{display:flex;width:100%;margin-top:6px;border-top:1px solid #edf0f2}.fab-label-max.is-on .fab-label-max-btns{border-top-color:#d0ebff}.fab-label-max-btns button{flex:1;height:28px;border:0;background:transparent;color:inherit;font-size:16px;font-weight:700;line-height:1;cursor:pointer}.fab-label-max-btns button+button{border-left:1px solid #edf0f2}.fab-label-max.is-on .fab-label-max-btns button+button{border-left-color:#d0ebff}.fab-label-max-btns button:disabled{opacity:.35;cursor:not-allowed}.fab-icon{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:12px;background:#fffffff5;color:#212529;cursor:pointer}.fab-icon:disabled{opacity:.45;cursor:not-allowed}.fab-status-badge.is-on{color:#1c7ed6;background:#e7f5ff}.fab-revise.is-on{color:#e67700;background:#fff4e6}.fab-ranging.is-on,.fab-capture.is-on{color:#1c7ed6;background:#e7f5ff}.fab-more-toggle{border-radius:50%}.fab-more-toggle.is-on{color:#1c7ed6;background:#e7f5ff}.fab-more-menu{z-index:1100;width:min(188px,calc(100vw - 24px));padding:6px;border-radius:16px;background:#fffffff5;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 8px 28px #0f17202e;outline:none;display:grid;gap:4px}.fab-more-item{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:12px;padding:10px 12px;background:transparent;color:#212529;font-size:.88rem;font-weight:650;text-align:left;cursor:pointer}.fab-more-item:active,.fab-more-item:hover{background:#f1f3f5}.fab-more-item.is-on{color:#1c7ed6;background:#e7f5ff}.fab-more-item:disabled{opacity:.45;cursor:not-allowed}.fab-more-menu-arrow{fill:#fffffff5}.map-protractor{position:absolute;z-index:3;margin:0;padding:0;border:0;background:transparent;transform:translate(-50%,-50%);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.map-protractor.is-dragging{cursor:grabbing}.map-protractor-close{position:absolute;left:50%;bottom:-22px;transform:translate(-50%);z-index:1;padding:2px 8px;border:0;border-radius:999px;background:#ffffffeb;color:#16324a;font-size:11px;font-weight:700;line-height:1.4;box-shadow:0 1px 4px #00000038;cursor:pointer}html.is-capturing-map .map-protractor-close{visibility:hidden!important}html.is-capturing-map .hud-top,html.is-capturing-map .fab-rail,html.is-capturing-map .fab-stack,html.is-capturing-map .fab-more-menu,html.is-capturing-map .map-hint,html.is-capturing-map .map-toast,html.is-capturing-map .first-visit-tip,html.is-capturing-map .amap-logo,html.is-capturing-map .amap-copyright,html.is-capturing-map .amap-control,html.is-capturing-map .amap-controls,html.is-capturing-map .amap-controlbar,html.is-capturing-map .amap-luopan,html.is-capturing-map [class*=amap-controlbar],html.is-capturing-map [class*=amap-luopan]{visibility:hidden!important;pointer-events:none!important}html.is-map-focus .hud-top,html.is-map-focus .fab-stack,html.is-map-focus .fab-locate,html.is-map-focus .map-hint,html.is-map-focus .map-toast,html.is-map-focus .first-visit-tip,html.is-map-focus .amap-logo,html.is-map-focus .amap-copyright,html.is-map-focus .amap-control,html.is-map-focus .amap-controls,html.is-map-focus .amap-controlbar,html.is-map-focus .amap-luopan,html.is-map-focus [class*=amap-controlbar],html.is-map-focus [class*=amap-luopan]{display:none!important}html.is-map-focus .fab-rail{top:auto;bottom:calc(16px + env(safe-area-inset-bottom));height:auto}.camera-shutter{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;pointer-events:none;overflow:hidden}.camera-shutter-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:#fff;animation:camera-flash .42s ease-out forwards}.camera-shutter-blade{position:absolute;left:0;right:0;z-index:1;height:50%;background:#111315;animation-duration:.42s;animation-timing-function:cubic-bezier(.18,.9,.22,1);animation-fill-mode:forwards}.camera-shutter-blade--top{top:0;box-shadow:0 8px 24px #00000059;animation-name:camera-shutter-top}.camera-shutter-blade--bottom{bottom:0;box-shadow:0 -8px 24px #00000059;animation-name:camera-shutter-bottom}@keyframes camera-shutter-top{0%{transform:translateY(-101%)}20%{transform:translateY(0)}36%{transform:translateY(0)}to{transform:translateY(-101%)}}@keyframes camera-shutter-bottom{0%{transform:translateY(101%)}20%{transform:translateY(0)}36%{transform:translateY(0)}to{transform:translateY(101%)}}@keyframes camera-flash{0%,16%{opacity:0}22%{opacity:.95}40%{opacity:.28}to{opacity:0}}@media (prefers-reduced-motion: reduce){.camera-shutter-blade{display:none}.camera-shutter-flash{animation-duration:.18s}}.map-hint--revise{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;pointer-events:auto}.map-hint-action{border:0;border-radius:999px;padding:4px 8px;background:#ffffff2e;color:#fff;font-size:.75rem;font-weight:650;cursor:pointer}.map-hint-action.is-on{background:#fff;color:#1a1a1a}.map-hint-icon{width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:10px;background:#ffffff2e;color:#fff;cursor:pointer}.map-hint-icon:disabled{opacity:.35;cursor:not-allowed}.sheet-actions{display:grid;gap:8px}.sheet-actions--row{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.sheet-actions--row-single{grid-template-columns:1fr}.sheet-actions--row .primary-btn,.sheet-actions--row .danger-btn,.sheet-actions--row .secondary-btn{width:100%;margin:0;padding:12px 8px;font-size:.9rem}.sheet-actions .danger-btn{margin-top:0}.search-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:.82rem;color:#495057;font-weight:600}.search-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:14px;padding:4px;border-radius:12px;background:#f1f3f5}.search-mode-tab{min-height:36px;border:0;border-radius:10px;background:transparent;color:#868e96;font-size:.9rem;font-weight:650;cursor:pointer}.search-mode-tab.is-active{background:#fff;color:#1a1d21;box-shadow:0 1px 4px #0f17201a}.search-mode-tab:active:not(.is-active){color:#495057}.search-input-wrap{position:relative}.search-input-wrap input{padding-right:40px}.search-input-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:#868e96;font-size:1.25rem;line-height:1;cursor:pointer}.filter-block{margin-bottom:12px}.filter-block-head .text-btn:disabled{opacity:.35;cursor:default}.filter-block-head{display:flex;align-items:center;justify-content:space-between;min-height:28px;margin-bottom:8px;font-size:.82rem;font-weight:600;color:#495057}.filter-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.filter-chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;height:36px;min-height:36px;border:1px solid #ced4da;background:#fff;color:#343a40;border-radius:999px;padding:0 12px;font-size:.8rem;font-weight:600;line-height:1;vertical-align:middle}.filter-chip i{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.filter-chip svg{flex-shrink:0;display:block}.filter-chip.on{color:#fff;border-color:currentColor}.filter-advanced{margin:4px 0 14px;border:1px solid #edf0f2;border-radius:12px;background:#f8f9fa;padding:0 12px 10px}.filter-advanced>summary{list-style:none;cursor:pointer;min-height:40px;display:flex;align-items:center;font-size:.82rem;font-weight:700;color:#495057}.filter-advanced>summary::-webkit-details-marker{display:none}.filter-advanced>summary:before{content:"";width:0;height:0;margin-right:8px;border-left:5px solid #868e96;border-top:4px solid transparent;border-bottom:4px solid transparent}.filter-advanced[open]>summary:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #868e96;border-bottom:0}.filter-advanced .search-field{margin-bottom:8px}.filter-advanced-hint{margin:-4px 0 10px;font-size:.75rem;font-weight:500;color:#868e96}.filter-chip.exclude-on{color:#c92a2a;background:#fff5f5;border-color:#ffa8a8}.filter-chip-count{font-size:.7rem;font-weight:600;opacity:.7}.filter-advanced .filter-chips{max-height:168px;overflow-y:auto}.search-count{margin:0 0 8px;font-size:.78rem;color:#868e96}.search-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.search-empty{padding:24px 8px;text-align:center;color:#868e96;font-size:.9rem}.search-item{width:100%;display:flex;gap:10px;align-items:flex-start;text-align:left;border:1px solid #edf0f2;border-radius:12px;padding:12px;background:#fff;cursor:pointer}.search-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex-shrink:0}.search-item-body{display:flex;flex-direction:column;gap:2px;min-width:0}.search-item-body strong{font-size:.95rem;color:#212529}.search-item-body small{font-size:.75rem;color:#868e96}.search-item-body em{font-style:normal;font-size:.8rem;color:#495057;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.primary-btn,.danger-btn,.secondary-btn,.text-btn,.filter-chip,.search-item,.status-chip,.fab-icon,.search-pill-main,.search-pill-add,.search-pill-clear,.fab-label-max-btns button{cursor:pointer}.primary-btn{width:100%;border:0;border-radius:12px;padding:12px 16px;background:#1c7ed6;color:#fff;font-weight:650}.primary-btn.compact{width:auto;white-space:nowrap;padding:10px 14px;border-radius:10px;font-size:.9rem}.primary-btn.active{background:#495057}.primary-btn:disabled{opacity:.45;cursor:not-allowed}.danger-btn{width:100%;margin-top:8px;border:0;border-radius:12px;padding:12px 16px;background:#fff5f5;color:#c92a2a;font-weight:650}.secondary-btn{width:100%;border:0;border-radius:12px;padding:12px 16px;background:#f1f3f5;color:#212529;font-weight:650}.secondary-btn:disabled{opacity:.45;cursor:not-allowed}.text-btn{border:0;background:transparent;color:#1c7ed6;padding:4px 0;font-weight:600}.key-panel{margin:auto;width:min(420px,calc(100% - 28px));padding:20px 18px;border-radius:16px;background:#fff;box-shadow:0 10px 40px #0000001f}.key-panel h2{margin:0 0 8px;font-size:1.15rem}.key-panel p{margin:0 0 14px;color:#5c6b7a;font-size:.9rem;line-height:1.45}.key-panel .hint{margin-top:12px;margin-bottom:0;font-size:.8rem}.key-panel a{color:#1c7ed6}label{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:.82rem;color:#495057;font-weight:600}.direction-field{margin:0 0 12px;padding:0;border:0;min-width:0}.direction-field legend{padding:0;margin-bottom:8px;font-size:.82rem;color:#495057;font-weight:600}.direction-group-label{margin:0 0 6px;font-size:.72rem;font-weight:650;color:#868e96}.direction-group-label+.direction-grid+.direction-group-label{margin-top:10px}.direction-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.direction-chip{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:6px 8px;border:1px solid #ced4da;border-radius:10px;background:#fff;color:#1a1d21;cursor:pointer}.direction-chip.is-on{border-color:#1c7ed6;background:#e7f5ff;color:#1864ab}.direction-mark{display:inline-flex;align-items:center;gap:4px;font-size:.92rem;font-weight:700;line-height:1}.direction-mark-arrow{display:inline-flex;align-items:center}.direction-mark-arrow svg{display:block}input,textarea,select{width:100%;border:1px solid #ced4da;border-radius:10px;padding:10px 12px;background:#fff;color:#1a1d21;font-weight:400;font-size:16px}textarea{resize:vertical}input.is-invalid,textarea.is-invalid,select.is-invalid{border-color:#fa5252;background:#fff5f5;box-shadow:0 0 0 3px #fa525226}.drawer-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;overscroll-behavior:none}.drawer-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border:0;padding:0;background:#0a0e1473;touch-action:none;cursor:pointer}.drawer-content{position:relative;z-index:1;display:flex;flex-direction:column;width:100%;max-width:560px;margin:0 auto;max-height:90svh;outline:none;border-radius:18px 18px 0 0;background:#fff;box-shadow:0 -8px 30px #0000002e}.drawer-content--search{max-height:92svh}.drawer-content--audit{max-height:88svh}.audit-lead{margin:0 0 14px;font-size:.85rem;color:#868e96;line-height:1.4}.audit-ok{margin:0 0 14px;padding:10px 12px;border-radius:12px;background:#ebfbee;color:#2b8a3e;font-size:.92rem;font-weight:600}.audit-section{margin-bottom:18px}.audit-section-title{margin:0;display:flex;align-items:center;gap:8px;font-size:.98rem;font-weight:700;color:#1a1d21}.audit-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#fff4e6;color:#e67700;font-size:.78rem;font-weight:700}.audit-section-hint{margin:4px 0 10px;font-size:.8rem;color:#868e96}.audit-empty{margin:0;font-size:.9rem;color:#adb5bd}.audit-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;max-height:28vh;overflow:auto}.audit-list li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:#f8f9fa}.audit-list strong{font-size:.92rem;font-weight:650;color:#212529}.audit-list span{flex-shrink:0;font-size:.8rem;color:#868e96}.drawer-handle{width:36px;height:4px;margin:10px auto 2px;flex-shrink:0;border-radius:999px;background:#dee2e6}.drawer-title{margin:0;font-size:1.05rem;font-weight:650;color:#1a1d21}.drawer-body{flex:1;min-height:0;overflow:auto;padding:4px 16px 16px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.drawer-footer{flex-shrink:0;padding:10px 16px;border-top:1px solid #edf0f2;background:#fff}.drawer-footer .primary-btn{margin-top:0}.drawer-footer .form-error{margin-bottom:8px}.sheet-form{display:flex;flex-direction:column;gap:0;padding-bottom:8px}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;margin:0;padding:4px 16px 8px}.sheet-head h2{margin:0;font-size:1.05rem}.sheet-close{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:10px;background:#f1f3f5;color:#495057;cursor:pointer}.sheet-close:active{background:#e9ecef;color:#212529}.coord{margin:0 0 14px;font-size:.78rem;color:#868e96}.coord--with-action{display:flex;align-items:center;justify-content:space-between;gap:8px}.coord-move{flex-shrink:0;font-size:.82rem;font-weight:650}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail-list{margin:0 0 8px}.detail-list>div{display:grid;grid-template-columns:72px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid #edf0f2;font-size:.9rem}.detail-list dt{margin:0;color:#868e96}.detail-list dd{margin:0;color:#212529;white-space:pre-wrap;word-break:break-word}.photo-field{margin-bottom:14px}.photo-field-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:.82rem;font-weight:600;color:#495057}.photo-field-head small{font-weight:500;color:#868e96}.photo-grid{display:flex;flex-wrap:wrap;gap:8px}.photo-thumb,.photo-add,.detail-photo{position:relative;width:84px;height:84px;border-radius:12px;overflow:hidden;border:0;padding:0;background:#f1f3f5}.photo-thumb img,.detail-photo img{width:100%;height:100%;object-fit:cover;display:block}.photo-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;border:0;border-radius:50%;background:#0000008c;color:#fff;font-size:14px;line-height:1;cursor:pointer}.photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px dashed #ced4da;background:#fff;color:#868e96;cursor:pointer}.photo-add:disabled,.photo-add.is-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.photo-add input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;border:0;padding:0;opacity:0;cursor:pointer;font-size:16px}.photo-add span{font-size:1.4rem;line-height:1;color:#1c7ed6}.photo-add small{font-size:.65rem}.detail-photo-row{display:flex;flex-wrap:wrap;gap:8px}.detail-photo{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lightbox-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#060a10d1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:auto;touch-action:none}.lightbox-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2001;display:flex;align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top)) 14px max(12px,env(safe-area-inset-bottom));background:#00000003;outline:none;pointer-events:auto}.lightbox{width:min(560px,100%);max-height:min(90dvh,820px);display:flex;flex-direction:column;border-radius:18px;background:linear-gradient(180deg,#1a2230,#111827);color:#fff;overflow:hidden;box-shadow:0 24px 64px #00000073,0 0 0 1px #ffffff0f;touch-action:manipulation}.lightbox-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 10px}.lightbox-title-wrap{min-width:0;display:flex;flex-direction:column;gap:2px}.lightbox-title{font-size:.95rem;font-weight:650;letter-spacing:.02em}.lightbox-subtitle{font-size:.75rem;color:#ffffff8c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lightbox-close{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:10px;background:#ffffff1a;color:#fff;cursor:pointer}.lightbox-close:active{background:#ffffff2e}.lightbox-body{flex:1;min-height:min(68dvh,640px);height:min(68dvh,640px);display:grid;place-items:center;padding:4px 14px 8px;overflow:hidden}.lightbox-body img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;background:#00000040;box-shadow:0 8px 28px #00000059;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.lightbox-foot{flex-shrink:0;min-height:56px;padding:10px 14px 16px;display:flex;align-items:center;justify-content:center}.lightbox-action{border:0;border-radius:999px;padding:10px 20px;background:#1c7ed6;color:#fff;font-weight:650;font-size:.9rem;cursor:pointer;box-shadow:0 6px 18px #1c7ed659}.lightbox-action.is-spent{visibility:hidden;pointer-events:none}.lightbox-action:active:not(:disabled){filter:brightness(.95)}.lightbox-action[hidden]{display:inline-block!important;visibility:hidden;pointer-events:none}.lightbox-note{font-size:.8rem;color:#ffffff80}.ghost-btn-light{border:1px solid rgba(255,255,255,.28);background:transparent;color:#fff;font-weight:650;border-radius:10px;padding:10px 14px;cursor:pointer}.ghost-btn-light.compact{font-size:.9rem}.app.is-adding .map-canvas,.app.is-moving .map-canvas{cursor:crosshair}.app.is-sheet-open .map-wrap,.app.is-sheet-open .map-wrap .amap-container{pointer-events:none!important}.roads-page{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;background:#f1f3f5;padding-bottom:env(safe-area-inset-bottom)}.roads-page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(12px,env(safe-area-inset-top)) 12px 10px;background:#fff;border-bottom:1px solid #e9ecef}.roads-page-head h1{margin:0;font-size:1.1rem;font-weight:700}.roads-page .icon-btn{width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:#495057;cursor:pointer}.roads-add{display:flex;gap:8px;padding:12px;background:#fff;border-bottom:1px solid #e9ecef}.roads-add input{flex:1;min-width:0;border:1px solid #dee2e6;border-radius:10px;padding:10px 12px;background:#fff}.roads-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px 0}.roads-search{flex:1;min-width:0;border:1px solid #dee2e6;border-radius:10px;padding:8px 12px;background:#fff}.roads-count{flex-shrink:0;font-size:.85rem;color:#868e96}.roads-error{margin:8px 12px 0}.roads-list{list-style:none;margin:10px 0 0;padding:0 12px 24px;overflow:auto;flex:1;min-height:0}.roads-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;margin-bottom:8px;background:#fff;border-radius:12px;border:1px solid #e9ecef}.roads-name{flex:1;min-width:0;font-weight:600;word-break:break-all}.roads-item-actions{display:flex;gap:4px;flex-shrink:0}.roads-edit-row{display:flex;align-items:center;gap:8px;width:100%}.roads-edit-row input{flex:1;min-width:0;border:1px solid #dee2e6;border-radius:8px;padding:8px 10px}.roads-empty{padding:28px 12px;text-align:center;color:#868e96}.danger-text{color:#e03131!important}.searchable-select{position:relative;width:100%}.searchable-select-native{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.searchable-select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:10px 12px;border:1px solid #dee2e6;border-radius:10px;background:#fff;color:#1a1d21;font-size:16px;text-align:left;cursor:pointer}.searchable-select-trigger:disabled{opacity:.5;cursor:not-allowed}.searchable-select-trigger.is-placeholder{color:#868e96}.searchable-select-trigger.is-invalid{border-color:#fa5252;background:#fff5f5;box-shadow:0 0 0 3px #fa525226}.searchable-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.searchable-select-caret{flex-shrink:0;color:#868e96}.searchable-select-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1500;background:#0a0e1473;pointer-events:auto}.searchable-select-sheet{position:fixed;left:0;right:0;bottom:0;z-index:1501;display:flex;flex-direction:column;width:100%;max-width:560px;margin:0 auto;max-height:min(72dvh,36rem);outline:none;border-radius:18px 18px 0 0;background:#fff;box-shadow:0 -8px 30px #0000002e;pointer-events:auto}.searchable-select-handle{width:36px;height:4px;margin:10px auto 2px;flex-shrink:0;border-radius:999px;background:#dee2e6}.searchable-select-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding:4px 16px 10px}.searchable-select-title{margin:0;font-size:1.05rem;font-weight:650;color:#1a1d21}.searchable-select-search{position:relative;flex-shrink:0;padding:0 16px 12px;border-bottom:1px solid #edf0f2}.searchable-select-search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:#868e96;pointer-events:none}.searchable-select-search input{width:100%;min-height:44px;padding:10px 12px 10px 40px;border:1px solid #dee2e6;border-radius:10px;background:#f8f9fa;color:#1a1d21;font-size:16px}.searchable-select-list{list-style:none;margin:0;padding:8px 8px max(12px,env(safe-area-inset-bottom));overflow:auto;flex:1;min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.searchable-select-empty{padding:36px 12px;text-align:center;color:#868e96;font-size:.95rem}.searchable-select-option{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 12px;border:0;border-radius:12px;background:transparent;color:#1a1d21;font-size:16px;text-align:left;cursor:pointer}.searchable-select-option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.searchable-select-option.is-active{background:#e7f5ff;color:#1864ab;font-weight:600}.searchable-select-option:active{background:#f1f3f5}.searchable-select-option.is-active:active{background:#d0ebff}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1600;background:#0a0e1480;pointer-events:auto}.confirm-dialog{position:fixed;left:50%;top:50%;z-index:1601;width:min(92vw,22rem);transform:translate(-50%,-50%);outline:none;border-radius:16px;background:#fff;box-shadow:0 20px 50px #0f172047;pointer-events:auto;overflow:hidden}.confirm-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 0}.confirm-title{margin:0;font-size:1.05rem;font-weight:700;color:#1a1d21}.confirm-body{padding:10px 16px 4px;color:#495057;font-size:.95rem;line-height:1.5}.confirm-body strong{color:#1a1d21;font-weight:650}.confirm-actions{display:flex;gap:10px;padding:14px 16px 16px}.confirm-btn{flex:1;min-height:44px;border:0;border-radius:12px;font-weight:650;font-size:.95rem;cursor:pointer}.confirm-btn:disabled{opacity:.55;cursor:not-allowed}.confirm-btn--ghost{background:#f1f3f5;color:#495057}.confirm-btn--ghost:active:not(:disabled){background:#e9ecef}.confirm-btn--primary{background:#1c7ed6;color:#fff}.confirm-btn--danger{background:#e03131;color:#fff}.confirm-btn--danger:active:not(:disabled){filter:brightness(.95)}.nav-popover{z-index:1100;width:min(200px,calc(100vw - 24px));padding:6px;border-radius:12px;background:#fff;box-shadow:0 8px 28px #0f17202e;outline:none;display:grid;gap:4px}.nav-popover-item{width:100%;border:0;border-radius:10px;padding:11px 12px;background:transparent;color:#212529;font-size:.92rem;font-weight:650;text-align:center;cursor:pointer}.nav-popover-item:active,.nav-popover-item:hover{background:#f1f3f5}.nav-popover-arrow{fill:#fff}.login-page{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(ellipse at 30% 20%,rgba(47,158,68,.12),transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(28,126,214,.12),transparent 45%),#d7dde3}.login-card{width:min(100%,22rem);display:flex;flex-direction:column;gap:12px;padding:22px 20px 20px;border-radius:16px;background:#fffffff5;box-shadow:0 12px 40px #0f172024}.login-card h1{margin:0;font-size:1.25rem;font-weight:700}.login-muted{margin:0;font-size:.88rem;color:#868e96;line-height:1.4}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:600;color:#495057}.login-card input{min-height:44px;padding:10px 12px;border:1px solid #dee2e6;border-radius:12px;font-size:16px;background:#fff}.login-actions{display:grid;gap:8px;margin-top:4px}.plates-page{height:100%;overflow:auto;overscroll-behavior:contain;background:#e8edf2;padding:0 12px max(20px,env(safe-area-inset-bottom))}.plates-head{position:sticky;top:0;z-index:2;margin:0 -12px;padding:max(12px,env(safe-area-inset-top)) 12px 12px;background:#e8edf2}.plates-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:0 0 10px}.plates-back{flex-shrink:0;width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:12px;background:#fff;color:#1c7ed6;box-shadow:0 2px 10px #0f172014;cursor:pointer}.plates-back:active{background:#f1f3f5;color:#1864ab}.plates-head h1{margin:0;flex:1;min-width:0;font-size:1.28rem;font-weight:800;color:#1a1d21;line-height:1.2}.plates-total{margin:0;flex-shrink:0;font-size:.88rem;font-weight:650;color:#868e96}.plates-export{flex-shrink:0;height:44px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border:0;border-radius:12px;background:#fff;color:#1c7ed6;font-size:.88rem;font-weight:700;box-shadow:0 2px 10px #0f172014;cursor:pointer}.plates-export:disabled{opacity:.45;cursor:default}.plates-export:not(:disabled):active{background:#f1f3f5;color:#1864ab}.plates-search{position:relative;display:flex;align-items:center;margin:0}.plates-search-icon{position:absolute;left:12px;color:#868e96;pointer-events:none}.plates-search input{width:100%;height:44px;padding:0 40px;border:0;border-radius:12px;background:#fff;font-size:16px;box-shadow:0 2px 10px #0f172014}.plates-search-clear{position:absolute;right:6px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:#868e96;cursor:pointer}.plates-error,.plates-empty{margin:24px 8px;text-align:center;color:#868e96}.plates-section{margin:0 0 8px}.plates-section+.plates-section{margin-top:16px}.plates-section-title{margin:0 2px 10px;font-size:.82rem;font-weight:750;letter-spacing:.06em;color:#5c6570}.plates-section-count{font-weight:650;letter-spacing:0;color:#868e96}.plates-grid{list-style:none;margin:0;padding:0 0 12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media (min-width: 720px){.plates-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.plates-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1400px){.plates-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.plates-item{width:100%;padding:0;border:0;background:transparent;cursor:pointer;text-align:left}.sign-plate{position:relative;box-sizing:border-box;width:100%;padding:18px 16px 16px;border-radius:6px;color:#fff;box-shadow:0 6px 18px #0f17202e}.sign-plate-badge{position:absolute;top:-6px;right:-6px;z-index:2;line-height:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.28))}.sign-plate-count{position:absolute;top:6px;left:8px;z-index:1;padding:1px 5px;border-radius:4px;background:#00000047;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;line-height:1.35;pointer-events:none}.sign-plate.is-large .sign-plate-count{top:10px;left:12px;padding:2px 8px;font-size:.95rem}.sign-plate--ew{background:#1b3fa0}.sign-plate--ns{background:#1c7a3d}.sign-plate-name{margin:0 0 14px;text-align:center;font-size:1.45rem;font-weight:800;letter-spacing:.28em;line-height:1.2;text-indent:.28em}.sign-plate-dir{display:flex;align-items:center;gap:8px;color:#f1d48a}.sign-plate-end{flex-shrink:0;font-size:1.05rem;font-weight:700}.sign-plate-arrow{position:relative;flex:1;height:28px;color:#fff}.sign-plate-arrow svg{display:block;width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.sign-plate-dist{position:absolute;left:50%;top:1px;transform:translate(-50%);padding:0 5px;font-style:normal;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:#fff;line-height:1;pointer-events:none}.sign-plate-dist.is-pinyin{max-width:calc(100% - 12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;letter-spacing:.04em}.sign-plate--ew .sign-plate-dist{background:#1b3fa0}.sign-plate--ns .sign-plate-dist{background:#1c7a3d}.sign-plate.is-large{width:min(92vw,560px);padding:28px 22px 24px;border-radius:8px}.sign-plate.is-large .sign-plate-name{font-size:2rem;margin-bottom:22px}.sign-plate.is-large .sign-plate-end{font-size:1.35rem}.sign-plate.is-large .sign-plate-arrow{height:36px}.sign-plate.is-large .sign-plate-dist{font-size:.92rem;top:2px}.sign-plate.is-large .sign-plate-dist.is-pinyin{font-size:.82rem}.plates-preview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center}.plates-preview-mask{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#0c10169e;cursor:pointer}.plates-preview-body{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:14px;padding:16px}.plates-preview-close{border:0;border-radius:999px;padding:8px 16px;background:#fff;color:#212529;font-weight:650;cursor:pointer}
