:root{--teal: #0fa8b9;--teal-dark: #07879a;--teal-light: #35cfdd;--ink: #16262e;--ink-2: #4d6470;--muted: #93a6ae;--line: #e7eff2;--bg: #f2f6f8;--card: #ffffff;--danger: #e5484d;--ok: #12a35c;--warn: #d97706;--radius: 16px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}button{cursor:pointer}#app{min-height:100vh}.page{padding-bottom:calc(86px + env(safe-area-inset-bottom))}.hero{position:relative;overflow:hidden;padding:calc(14px + env(safe-area-inset-top)) 18px 20px;background:linear-gradient(150deg,#0a3944,#0d5561 52%,#0e7c8b);color:#eafcff;border-radius:0 0 22px 22px}.hero:before{content:"";position:absolute;right:-70px;top:-90px;width:230px;height:230px;border-radius:50%;background:radial-gradient(circle,#4adfe759,#4adfe700 68%);pointer-events:none}.hero:after{content:"";position:absolute;left:-60px;bottom:-110px;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle,#2fb0ff38,#2fb0ff00 70%);pointer-events:none}.hero-bar{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}.hero-brand{display:flex;align-items:center;gap:7px;font-size:12.5px;letter-spacing:1.2px;color:#e2faffc7}.pulse{width:7px;height:7px;border-radius:50%;background:#4adfe7;box-shadow:0 0 #4adfe799;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #4adfe78c}70%{box-shadow:0 0 0 8px #4adfe700}to{box-shadow:0 0 #4adfe700}}.hero-exit{border:1px solid rgba(226,250,255,.28);background:#ffffff14;color:#e2faffdb;font-size:12px;height:28px;padding:0 12px;border-radius:14px}.hero h1{position:relative;z-index:1;margin:16px 0 0;font-size:21px;line-height:1.34;font-weight:700;letter-spacing:.3px;color:#fff}.hero-chips{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.chip{height:24px;line-height:24px;padding:0 10px;border-radius:12px;background:#ffffff21;border:1px solid rgba(255,255,255,.14);font-size:11.5px;color:#ebfdffeb}.hero-progress{position:relative;z-index:1;display:flex;align-items:center;gap:10px;margin-top:16px}.hero-progress .track{flex:1;height:5px;border-radius:3px;background:#ffffff2b;overflow:hidden}.hero-progress .track i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#4adfe7,#9df6fb);transition:width .35s ease}.hero-progress .pct{font-size:11.5px;color:#e2faffd9;font-variant-numeric:tabular-nums;min-width:34px;text-align:right}.draft-tip{display:flex;align-items:center;gap:8px;margin:12px 16px 0;padding:10px 12px;border-radius:12px;background:#fff8e8;border:1px solid #ffe2b0;font-size:12.5px;color:#a15c07}.draft-tip span{flex:1}.draft-tip button{border:none;background:#f0a020;color:#fff;height:26px;padding:0 12px;border-radius:8px;font-size:12px}.draft-tip button.ghost{background:transparent;color:#a15c07;border:1px solid #f0d3a0}main{padding:14px 16px 0}.card{background:var(--card);border-radius:var(--radius);margin-bottom:14px;box-shadow:0 1px 2px #102c380a,0 8px 20px -14px #102c3829;overflow:hidden}.sec-head{display:flex;align-items:center;gap:9px;padding:16px 16px 0}.sec-head .idx{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:linear-gradient(140deg,#0fa8b9,#35cfdd);color:#fff;font-size:11px;font-weight:700;letter-spacing:.2px;flex:0 0 24px}.sec-head b{font-size:16px;font-weight:700;color:var(--ink);letter-spacing:.2px}.sec-head em{margin-left:auto;font-style:normal;font-size:11px;color:#b9c8ce;background:#f4f8f9;padding:3px 8px;border-radius:7px}.card-body{padding:6px 16px 18px}.field{padding-top:16px;border-radius:10px}.field-error .label,.field-error .label .req{color:var(--danger)}.field-error input,.field-error select,.field-error textarea{border-color:var(--danger)!important;background:#fff7f7!important}.label{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#2c3f48;margin-bottom:9px}.label .req{color:var(--danger);font-weight:700}.label .count{margin-left:auto;font-size:11.5px;font-weight:400;color:var(--muted)}.hint{margin:-4px 0 9px;font-size:12px;line-height:1.6;color:var(--muted)}input[type=text],input[type=tel],input[type=password],select,textarea{width:100%;height:46px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:#f7fafb;color:var(--ink);font-size:15px;outline:none;transition:border-color .15s,background .15s,box-shadow .15s;-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea{height:auto;min-height:84px;padding:12px 14px;line-height:1.6;resize:vertical}input::placeholder,textarea::placeholder{color:#b3c2c9}input:focus,select:focus,textarea:focus{border-color:var(--teal);background:#fff;box-shadow:0 0 0 3px #0fa8b91a}input:disabled,select:disabled{opacity:.55;background:#f2f6f7}select.placeholder{color:#b3c2c9}.sub-input{margin-top:10px}.area-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.select-wrap{position:relative}.select-wrap select{padding-right:26px;font-size:14px}.select-wrap .chev{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#9db0b8;pointer-events:none}.select-wrap:not(:has(select:disabled)) .chev{color:#6d858f}.opt-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;max-height:214px;overflow-y:auto;padding:2px;-webkit-overflow-scrolling:touch}.opt{height:40px;border:1px solid transparent;border-radius:10px;background:#f4f8f9;color:#48606b;font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:1px;transition:all .12s}.opt i{font-style:normal;font-size:10.5px;font-weight:400;opacity:.72}.opt:active{transform:scale(.96)}.opt.active{background:linear-gradient(140deg,#0fa8b9,#35cfdd);color:#fff;border-color:transparent;box-shadow:0 3px 10px -3px #0fa8b973}.opt.active i{opacity:.9}.scan-card{width:100%;display:flex;align-items:center;gap:12px;padding:14px;border:1.5px dashed #b9dfe4;border-radius:14px;background:linear-gradient(180deg,#f8fdfe,#f1fafb);text-align:left;transition:all .15s}.scan-card:active{transform:scale(.99)}.scan-card.done{border-style:solid;border-color:#a7e6c4;background:linear-gradient(180deg,#f4fdf8,#ecfaf2)}.scan-ico{width:42px;height:42px;flex:0 0 42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(140deg,#0fa8b9,#35cfdd);color:#fff;box-shadow:0 4px 12px -4px #0fa8b98c}.scan-card.done .scan-ico{background:linear-gradient(140deg,#12a35c,#35d18a);box-shadow:0 4px 12px -4px #12a35c80}.scan-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.scan-main b{font-size:15px;font-weight:700;color:#143039;letter-spacing:.3px;word-break:break-all}.scan-main em{font-style:normal;font-size:11.5px;color:var(--muted)}.scan-arrow{flex:0 0 auto;color:#9fb6be;font-size:22px;line-height:1;padding-right:2px}.device-card{margin-top:12px;padding:12px 13px;border-radius:12px;font-size:12.5px;line-height:1.6}.device-card.ok{background:#f1fbf5;border:1px solid #c4ecd6}.device-card.warn{background:#fff9ee;border:1px solid #ffe0b2}.dc-head{display:flex;align-items:center;gap:6px;font-weight:600;color:#1c5340;margin-bottom:6px}.device-card.warn .dc-head{color:#8a5307}.dc-dot{width:6px;height:6px;border-radius:50%;background:var(--ok)}.device-card.warn .dc-dot{background:#e8a020}.dc-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}.dc-grid>div{display:flex;gap:6px}.dc-grid>div.full{grid-column:1 / -1}.dc-grid span{color:#7b949d;flex:0 0 auto}.dc-grid b{color:#24424c;font-weight:600;word-break:break-all}.device-card p{margin:0;color:#8a5307}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.photo,.add-photo{position:relative;aspect-ratio:1 / 1;border-radius:12px;overflow:hidden}.photo img{width:100%;height:100%;object-fit:cover;display:block}.photo .rm{position:absolute;top:5px;right:5px;width:22px;height:22px;border:none;border-radius:50%;background:#0c1a2099;color:#fff;font-size:15px;line-height:1;display:grid;place-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.photo .mask{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a222a8f;color:#fff;font-size:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.photo .mask.err{background:#b42d2db8;font-size:12px;font-weight:600}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.add-photo{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1.5px dashed #cfe2e7;background:#f8fbfc;color:#9fb2ba;font-size:11.5px}.loc-card{display:flex;align-items:center;gap:10px;padding:12px 13px;border-radius:12px;background:#f5f9fa;border:1px solid #e9f1f4}.loc-card.empty b{color:#93a6ae;font-weight:500}.loc-ico{width:30px;height:30px;flex:0 0 30px;border-radius:9px;background:#e4f6f8;color:var(--teal-dark);display:grid;place-items:center}.loc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.loc-main b{font-size:13px;font-weight:600;color:#26404a;line-height:1.5;word-break:break-all}.loc-main em{font-style:normal;font-size:11px;color:var(--muted)}.loc-btn{flex:0 0 auto;height:30px;padding:0 11px;border-radius:9px;border:1px solid #cfe9ee;background:#fff;color:var(--teal-dark);font-size:12px;font-weight:600}.warn-line{margin:8px 0 0;font-size:11.5px;line-height:1.6;color:#b57a12}.link-btn{display:inline-block;border:none;background:none;color:#8aa0a9;font-size:12.5px;text-decoration:underline;text-underline-offset:3px;padding:10px 0 0}.submit-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fffffff0;border-top:1px solid #eef4f6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.draft-btn{flex:0 0 96px;height:48px;border-radius:14px;border:1px solid #d9e6eb;background:#fff;color:#5b737e;font-size:14.5px;font-weight:600}.submit-btn{flex:1;height:48px;border:none;border-radius:14px;background:linear-gradient(120deg,#0a94a6,#23c3d2);color:#fff;font-size:16px;font-weight:700;letter-spacing:2px;box-shadow:0 8px 18px -8px #0a94a699}.submit-btn:disabled{opacity:.55;box-shadow:none}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#09192080;display:flex;align-items:flex-end;justify-content:center;animation:fade .18s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:560px;max-height:92vh;background:#fff;border-radius:20px 20px 0 0;overflow:hidden;display:flex;flex-direction:column;animation:slideUp .22s ease}@keyframes slideUp{0%{transform:translateY(28px)}}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:15px 16px;border-bottom:1px solid #eef4f6;font-weight:700;font-size:15.5px;flex:0 0 auto}.sheet-head button{border:none;background:none;color:#93a3ab;font-size:14px}.sheet-body{padding:14px 16px calc(16px + env(safe-area-inset-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch}.map-tip{font-size:12.5px;color:#93a3ab;line-height:1.6;margin:10px 0 12px}.perm-hint{margin:8px 0 10px;font-size:12.5px;line-height:1.7;color:#b4680a;background:#fff8ec;border:1px solid #ffe3b8;border-radius:10px;padding:9px 11px}.guide-list{margin:0 0 12px;padding-left:20px;font-size:12.5px;line-height:1.9;color:#5c737d}.primary-btn{width:100%;height:46px;border:none;border-radius:12px;background:linear-gradient(90deg,#0a94a6,#2ec9d6);color:#fff;font-size:15.5px;font-weight:700}.primary-btn:disabled{opacity:.55}.ghost-btn{width:100%;height:44px;border-radius:12px;border:1px solid #cfe9ee;background:linear-gradient(180deg,#f8fdfe,#f0fafc);color:#0f9dab;font-size:14.5px;font-weight:600}.ghost-btn:disabled{opacity:.55}.map-empty{height:min(40vh,220px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:12px;background:#f4f8fa;color:#9db0b8;font-size:12.5px;text-align:center;padding:0 24px;line-height:1.6}#map-box{width:100%;height:min(52vh,340px);border-radius:14px;overflow:hidden;background:#eef4f7;position:relative}.success-sheet{border-radius:22px 22px 0 0}.success{text-align:center;padding:30px 24px calc(26px + env(safe-area-inset-bottom))}.success .ok-icon{width:64px;height:64px;border-radius:50%;margin:0 auto 16px;background:linear-gradient(135deg,#12a35c,#3ed48c);display:grid;place-items:center;box-shadow:0 10px 24px -8px #12a35c8c}.success h3{margin:0 0 8px;font-size:19px;color:#16323c}.success p{margin:0 0 22px;font-size:13px;line-height:1.7;color:#8199a3}.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:200;max-width:80vw;padding:10px 16px;border-radius:20px;background:#0e2028e0;color:#fff;font-size:13px;line-height:1.5;text-align:center;animation:fade .2s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.auth-page{min-height:100vh;background:linear-gradient(165deg,#08333d,#0c5966 58%,#0e7c8b);padding:calc(56px + env(safe-area-inset-top)) 22px calc(30px + env(safe-area-inset-bottom));display:flex;flex-direction:column;position:relative;overflow:hidden}.auth-page:before{content:"";position:absolute;right:-90px;top:-80px;width:280px;height:280px;border-radius:50%;background:radial-gradient(circle,#4adfe747,#4adfe700 70%)}.auth-hero{position:relative;z-index:1;color:#eafcff}.auth-logo{width:44px;height:44px;border-radius:13px;background:#ffffff24;border:1px solid rgba(255,255,255,.2);display:grid;place-items:center;margin-bottom:20px}.auth-hero h1{margin:0;font-size:26px;line-height:1.32;font-weight:700;letter-spacing:1px;color:#fff}.auth-hero p{margin:12px 0 0;font-size:13px;color:#e2faffad;line-height:1.6}.auth-card{position:relative;z-index:1;margin-top:34px;background:#fff;border-radius:20px;padding:22px 18px 20px;box-shadow:0 18px 40px -18px #00000073}.auth-field{margin-bottom:14px}.auth-field label{display:block;font-size:12.5px;font-weight:600;color:#5e7782;margin-bottom:7px}.auth-field input{height:48px;background:#f6fafb}.auth-error{margin:2px 0 10px;padding:9px 12px;border-radius:10px;background:#fff2f2;border:1px solid #ffd6d6;color:#cf3b3b;font-size:12.5px;line-height:1.5}.auth-btn{width:100%;height:48px;margin-top:8px;border:none;border-radius:13px;background:linear-gradient(120deg,#0a94a6,#2ac8d6);color:#fff;font-size:16px;font-weight:700;letter-spacing:2px;box-shadow:0 10px 22px -10px #0a94a6b3}.auth-btn:disabled{opacity:.6}.auth-tip{margin:18px 0 0;text-align:center;font-size:11.5px;line-height:1.8;color:#a3b4bc}.scan-sheet{max-height:94vh}.scan-stage{position:relative;flex:0 0 auto;width:100%;height:min(46vh,340px);min-height:220px;background:#0b1a20;overflow:hidden}.scan-video{width:100%;height:100%;object-fit:cover;display:block;background:#0b1a20}.scan-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#6d8c96;font-size:13px;letter-spacing:.5px}.scan-viewport{position:absolute;left:50%;top:50%;width:min(66%,250px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:12px;box-shadow:0 0 0 999px #0412186b;pointer-events:none}.scan-viewport .corner{position:absolute;width:24px;height:24px;border:3px solid #4adfe7;border-radius:3px}.scan-viewport .corner.tl{top:-2px;left:-2px;border-right:none;border-bottom:none}.scan-viewport .corner.tr{top:-2px;right:-2px;border-left:none;border-bottom:none}.scan-viewport .corner.bl{bottom:-2px;left:-2px;border-right:none;border-top:none}.scan-viewport .corner.br{bottom:-2px;right:-2px;border-left:none;border-top:none}.scan-beam{position:absolute;left:6%;right:6%;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,#63eef4,transparent);box-shadow:0 0 12px #63eef4d9;animation:scan 2.1s ease-in-out infinite}@keyframes scan{0%,to{top:12%}50%{top:86%}}.scan-hud{position:absolute;left:10px;bottom:10px;display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;background:#06161c9e;color:#dcf5f8;font-size:11.5px;line-height:1.2;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);max-width:68%}.hud-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#7c929a}.hud-dot.on{background:#4adfe7;box-shadow:0 0 6px #4adfe7;animation:pulse 1.6s ease-in-out infinite}.hud-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.torch-btn{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:4px;height:28px;padding:0 10px;border-radius:20px;border:1px solid rgba(120,200,210,.5);background:#06161c9e;color:#dcf5f8;font-size:11.5px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.torch-btn.on{border-color:#4adfe7;color:#4adfe7}.scan-msg{margin:2px 0 12px;font-size:13px;line-height:1.6;color:#5d7c86}.scan-msg.error{color:#c2681c}.scan-actions{display:flex;gap:10px}.scan-btn{flex:1 1 0;height:44px;border-radius:12px;border:1px solid #cde9ee;background:linear-gradient(180deg,#f8fdfe,#f0fafc);color:#128d9c;font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 8px}.scan-btn:disabled{opacity:.55}.scan-btn:active{background:#e8f8fb}.scan-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:10px}.meta-tag{padding:3px 8px;border-radius:5px;background:#eefafc;border:1px solid #d8f0f4;color:#128d9c;font-size:11px;line-height:1.4}.meta-link{border:none;background:none;color:#128d9c;font-size:11.5px;text-decoration:underline;padding:3px 2px}.manual-box{margin-top:12px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;opacity:0}
