:root{--ink:#0F2233;--ink-2:#1C3346;--steel:#5A6B7B;--steel-2:#8A98A6;--line:#DCE2E8;--line-2:#EAEEF2;--bg:#E7EBEF;--surface:#F6FAFC;--brand:#007DDA;--brand-deep:#005A9E;--brand-light:#3DA7EE;--brand-soft:#E4F2FD;--brand-dim:#A9D3F0;--molten:#00739F;--molten-deep:#005677;--molten-soft:#E6F1F5;--blueprint:#137E8C;--blueprint-soft:#E3F1F2;--ok:#1F9D62;--ok-soft:#E4F3EB;--radius:16px;--shadow:0 1px 2px rgba(15,34,51,.04), 0 8px 24px rgba(15,34,51,.06);--shadow-lg:0 12px 40px rgba(15,34,51,.16);--sans:-apple-system,system-ui,"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--disp:var(--sans)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{font-family:var(--sans);background:radial-gradient(1200px 600px at 50% -10%,#F3F6F8 0%,var(--bg) 55%) fixed;color:var(--ink);-webkit-font-smoothing:antialiased;display:flex;justify-content:center}.phone{width:100%;max-width:440px;min-height:100vh;background:var(--bg);position:relative;padding-bottom:32px;overflow-x:hidden}@media (min-width:480px){body{padding:24px 0}.phone{min-height:auto;border-radius:32px;box-shadow:var(--shadow-lg);overflow:hidden;border:1px solid #fff}}.appbar{position:sticky;top:0;z-index:40;background:#007ddaf0;backdrop-filter:saturate(140%) blur(12px);color:#fff;padding:14px 18px 13px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.1)}.appbar .logo{width:34px;height:34px;border-radius:9px;flex:0 0 auto;background:linear-gradient(135deg,#ffffff42,#ffffff1a);border:1px solid rgba(255,255,255,.22);display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:17px;color:#fff;box-shadow:inset 0 1px #ffffff4d,0 2px 8px #005a9e73}.appbar .logo--img{padding:3px;background:#ffffffeb}.appbar .logo--img img{width:100%;height:100%;object-fit:contain;display:block}.appbar .brand{line-height:1.2;flex:1;min-width:0}.appbar .brand b{font-size:14.5px;font-weight:700;display:block;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar .brand span{font-size:11px;color:#b3dbf5;font-family:var(--mono);letter-spacing:.4px}.appbar .scan{width:36px;height:36px;border-radius:10px;flex:0 0 auto;cursor:pointer;background:#ffffff1a;border:1px solid rgba(255,255,255,.16);display:grid;place-items:center;color:#dff0fc}.appbar .scan svg{width:19px;height:19px}.hero{padding:20px 16px 4px}.plate{position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(157deg,var(--brand-light) 0%,var(--brand) 48%,var(--brand-deep) 100%);color:#eef7fd;box-shadow:0 12px 40px #007dda47,inset 0 1px #ffffff24,inset 0 0 0 1px #ffffff0f;padding:20px 20px 18px}.plate:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:22px 22px;mask:linear-gradient(160deg,#000,transparent 80%)}.plate:after{content:"";position:absolute;top:-40%;right:-20%;width:70%;height:180%;background:radial-gradient(closest-side,rgba(150,205,255,.3),transparent);pointer-events:none}.rivet{position:absolute;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffffffe6,#ffffff47 70%);box-shadow:inset 0 0 0 1px #00000024,0 1px 2px #0000002e}.rivet.rv-tl{top:9px;left:9px}.rivet.rv-tr{top:9px;right:9px}.rivet.rv-bl{bottom:9px;left:9px}.rivet.rv-br{bottom:9px;right:9px}.plate .vname{position:relative;margin-top:2px;display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}.plate .vname h1{font-family:var(--sans);font-weight:900;font-size:25px;letter-spacing:1px}.plate .vname .en{font-family:var(--disp);font-weight:600;font-size:11px;letter-spacing:2px;color:var(--brand-dim);text-transform:uppercase}.plate .idcode{position:relative;margin-top:13px;display:flex;align-items:center;gap:10px}.plate .idcode .lab{font-size:10px;color:var(--brand-dim);letter-spacing:.5px;writing-mode:vertical-lr;line-height:1.1}.plate .idcode .val{font-family:var(--mono);font-weight:700;font-size:23px;letter-spacing:1.2px;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.5);word-break:break-all;background:linear-gradient(180deg,#fff,#dceefb);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.specrow{position:relative;margin-top:16px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.14);padding-top:13px;gap:2px}.specrow .s{text-align:left;min-width:0}.specrow .s .k{font-size:9.5px;color:var(--brand-dim);letter-spacing:.6px;text-transform:uppercase;font-family:var(--disp);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.specrow .s .v{font-family:var(--mono);font-weight:500;font-size:14.5px;margin-top:3px;color:#eef7fd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.statusbar{position:relative;margin-top:15px;display:flex;gap:8px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;padding:5px 9px;border-radius:20px;letter-spacing:.3px}.pill svg{width:12px;height:12px}.pill.ok{background:#1f9d6229;color:#7be0ab;border:1px solid rgba(31,157,98,.3)}.pill.trace{background:#137e8c2e;color:#79cdd8;border:1px solid rgba(19,126,140,.32)}.pill.trace .num{font-family:var(--mono);font-weight:700;color:#a9e2ea}.pill.warn{background:#e0561f29;color:#f5b497;border:1px solid rgba(224,86,31,.3)}.lifecycle{padding:18px 16px 6px}.lc-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:13px}.lc-head .t{font-size:13px;font-weight:700;letter-spacing:.3px}.lc-head .t span{color:var(--brand)}.lc-head .sub{font-family:var(--mono);font-size:10px;color:var(--steel-2);letter-spacing:.5px}.track{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}.track::-webkit-scrollbar{display:none}.steps{display:flex;min-width:max-content;position:relative}.steps:before{content:"";position:absolute;top:13px;left:18px;right:18px;height:2px;background:var(--line);border-radius:2px}.step{position:relative;display:flex;flex-direction:column;align-items:center;width:62px;flex:0 0 auto;z-index:1}.step .dot{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:2px solid var(--line);color:var(--steel-2);transition:.3s}.step .dot svg{width:13px;height:13px}.step.done .dot{background:var(--ok);border-color:var(--ok);color:#fff;box-shadow:0 3px 8px #1f9d624d}.step.curr .dot{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 0 0 4px var(--brand-soft),0 4px 10px #007dda59;animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 4px var(--brand-soft),0 4px 10px #007dda59}50%{box-shadow:0 0 0 7px #007dda14,0 4px 10px #007dda40}}.step .lab{font-size:10.5px;margin-top:7px;color:var(--steel);font-weight:500;white-space:nowrap}.step.curr .lab{color:var(--brand);font-weight:700}.step .date{font-family:var(--mono);font-size:8.5px;color:var(--steel-2);margin-top:2px}.tabs{position:sticky;top:62px;z-index:30;background:var(--bg);padding:8px 16px 9px;margin-top:6px}.tabs .row{display:flex;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:4px;box-shadow:var(--shadow);overflow-x:auto;scrollbar-width:none}.tabs .row::-webkit-scrollbar{display:none}.tab{flex:1 0 auto;border:none;background:none;font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--steel);padding:8px 11px;border-radius:9px;white-space:nowrap;cursor:pointer;transition:.2s;position:relative}.tab.active{background:linear-gradient(135deg,var(--brand-light),var(--brand));color:#fff;box-shadow:0 4px 10px #007dda47}.content{padding:6px 16px 0}.panel{display:none;animation:fade .4s ease both}.panel.active{display:block}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}.card-h{display:flex;align-items:center;gap:9px;padding:14px 16px 12px;border-bottom:1px solid var(--line-2)}.card-h .ic{width:30px;height:30px;border-radius:9px;flex:0 0 auto;display:grid;place-items:center}.card-h .ic svg{width:16px;height:16px}.card-h.blue .ic{background:var(--blueprint-soft);color:var(--blueprint)}.card-h.orange .ic{background:var(--molten-soft);color:var(--molten)}.card-h.green .ic{background:var(--ok-soft);color:var(--ok)}.card-h.ink .ic{background:#e8edf1;color:var(--ink)}.card-h .tt{flex:1;min-width:0}.card-h .tt b{font-size:14px;font-weight:700;letter-spacing:.2px}.card-h .tt span{display:block;font-family:var(--mono);font-size:9.5px;color:var(--steel-2);letter-spacing:.6px;margin-top:1px;text-transform:uppercase}.kv{padding:5px 16px 9px}.kv .item{display:flex;align-items:flex-start;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line-2)}.kv .item:last-child{border-bottom:none}.kv .item .k{flex:0 0 92px;font-size:12.5px;color:var(--steel);padding-top:1px}.kv .item .v{flex:1;font-size:13.5px;font-weight:500;color:var(--ink);text-align:right;word-break:break-word;line-height:1.45}.kv .item .v.mono{font-family:var(--mono);font-weight:500;letter-spacing:.3px;font-size:13px}.kv .item .v.empty{color:var(--steel-2);font-weight:400}.spec-desc{margin:0 16px 14px;background:#f7f9fb;border:1px solid var(--line-2);border-left:3px solid var(--blueprint);border-radius:10px;padding:11px 13px}.spec-desc .lab{font-size:10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:1px;color:var(--blueprint);margin-bottom:5px}.spec-desc .txt{font-family:var(--mono);font-size:11.5px;line-height:1.7;color:var(--ink-2);word-break:break-word}.checklist{padding:6px 16px 12px;display:grid;gap:8px}.cl{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line-2);border-radius:11px;background:#f7f9fb}.cl .n{width:24px;height:24px;border-radius:7px;flex:0 0 auto;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:12px}.cl .ct{flex:1;font-size:13.5px;font-weight:500}.cl .ca{font-size:11px;color:var(--blueprint);font-family:var(--mono)}.media{padding:6px 16px 12px;display:grid;gap:9px}.mr{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line-2);border-radius:11px;background:#fff;text-decoration:none;color:inherit}.mr .mi{width:42px;height:42px;border-radius:10px;flex:0 0 auto;display:grid;place-items:center;color:#fff}.mr .mi.pdf{background:linear-gradient(135deg,#e0561f,#b8410f)}.mr .mi.vid{background:linear-gradient(135deg,#137e8c,#0c5b66)}.mr .mi.img{background:linear-gradient(135deg,#5a6b7b,#3d4c5a)}.mr .mi svg{width:20px;height:20px}.mr .mt{flex:1;min-width:0}.mr .mt b{font-size:13.5px;font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mr .mt span{font-size:11px;color:var(--steel-2);font-family:var(--mono)}.mr .go{width:30px;height:30px;border-radius:50%;background:#f0f4f7;display:grid;place-items:center;color:var(--steel);flex:0 0 auto}.mr .go svg{width:15px;height:15px}.photos{padding:6px 16px 14px;display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.photos a{display:block;border-radius:11px;overflow:hidden;border:1px solid var(--line-2);background:#f7f9fb}.photos img{width:100%;height:120px;object-fit:cover;display:block}.timeline{padding:10px 16px 14px;position:relative}.tl{position:relative;padding:0 0 18px 26px}.tl:last-child{padding-bottom:2px}.tl:before{content:"";position:absolute;left:6px;top:4px;bottom:-4px;width:2px;background:var(--line)}.tl:last-child:before{display:none}.tl .node{position:absolute;left:0;top:3px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--blueprint);box-shadow:0 0 0 3px var(--blueprint-soft)}.tl.fix .node{border-color:var(--molten);box-shadow:0 0 0 3px var(--molten-soft)}.tl .when{font-family:var(--mono);font-size:10.5px;color:var(--steel-2);letter-spacing:.3px}.tl .body{margin-top:5px;background:#f7f9fb;border:1px solid var(--line-2);border-radius:11px;padding:11px 13px}.tl .body .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;gap:8px}.tl .body .item{font-size:13.5px;font-weight:700}.tl .body .stat{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:20px;flex:0 0 auto}.tl .body .stat.ok{background:var(--ok-soft);color:var(--ok)}.tl .body .stat.fix{background:var(--molten-soft);color:var(--molten-deep)}.tl .body .desc{font-size:12px;color:var(--steel);line-height:1.5}.tl .photos{padding:8px 0 0;grid-template-columns:repeat(3,1fr)}.tl .photos img{height:76px}.empty-state{padding:26px 16px;text-align:center;color:var(--steel-2)}.empty-state svg{width:34px;height:34px;opacity:.4;margin-bottom:8px}.empty-state p{font-size:12.5px}.section-label{font-size:11px;font-family:var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--steel-2);margin:4px 4px 10px;display:flex;align-items:center;gap:8px}.section-label:after{content:"";flex:1;height:1px;background:var(--line)}.foot{text-align:center;padding:16px 16px 8px;font-size:10px;color:var(--steel-2);font-family:var(--mono);letter-spacing:.4px}.state-page{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;text-align:center}.state-page .icon{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);color:var(--steel);margin-bottom:18px}.state-page .icon svg{width:30px;height:30px}.state-page h2{font-size:17px;font-weight:800;letter-spacing:.3px;margin-bottom:8px}.state-page p{font-size:12.5px;color:var(--steel);line-height:1.6;max-width:280px}.state-page .retry{margin-top:20px;display:flex;gap:8px;width:100%;max-width:300px}.state-page .retry input{flex:1;min-width:0;border:1px solid var(--line);border-radius:11px;padding:11px 13px;font-family:var(--mono);font-size:14px;background:var(--surface);color:var(--ink);outline:none}.state-page .retry input:focus{border-color:var(--blueprint)}.state-page .retry button{flex:0 0 auto;border:none;border-radius:11px;padding:11px 18px;cursor:pointer;background:linear-gradient(135deg,var(--brand-light),var(--brand));color:#fff;font-family:var(--sans);font-weight:700;font-size:13.5px;box-shadow:0 6px 18px #007dda5c}.scan-open-btn{margin-top:20px;display:flex;align-items:center;gap:8px;border:none;border-radius:11px;padding:12px 20px;cursor:pointer;background:var(--ink);color:#fff;font-family:var(--sans);font-weight:700;font-size:13.5px;box-shadow:0 6px 18px #0f22333d}.scan-open-btn svg{width:17px;height:17px}.spinner{width:38px;height:38px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .9s linear infinite;margin-bottom:18px}@keyframes spin{to{transform:rotate(360deg)}}.field-fab{position:fixed;right:max(18px,calc(50vw - 202px));bottom:22px;z-index:40;display:flex;align-items:center;gap:8px;border:none;border-radius:999px;cursor:pointer;padding:13px 18px 13px 15px;background:linear-gradient(135deg,var(--brand-light),var(--brand));color:#fff;font-family:var(--sans);font-weight:700;font-size:13.5px;box-shadow:0 10px 28px #007dda66}.field-fab svg{width:18px;height:18px;flex:0 0 auto}.field-overlay{position:fixed;inset:0;z-index:50;background:#0f223380;display:flex;align-items:flex-end;justify-content:center;animation:field-fade .15s ease-out}@keyframes field-fade{0%{opacity:0}to{opacity:1}}.field-modal{width:100%;max-width:440px;max-height:88vh;overflow-y:auto;background:var(--surface);border-radius:20px 20px 0 0;box-shadow:var(--shadow-lg)}.field-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line-2);position:sticky;top:0;background:var(--surface)}.field-modal-head b{font-size:15px;font-weight:800}.field-close{border:none;background:none;cursor:pointer;color:var(--steel-2);padding:4px}.field-close svg{width:20px;height:20px}.field-modal-body{padding:16px 18px 24px;display:flex;flex-direction:column;gap:10px}.field-success{padding:28px 0;text-align:center;color:var(--ok)}.field-success svg{width:36px;height:36px}.field-success p{margin-top:8px;font-size:14px;font-weight:700;color:var(--ink)}.field-hint{font-size:12px;color:var(--steel-2);line-height:1.5}.field-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.field-input,.field-select,.field-textarea{width:100%;border:1px solid var(--line);border-radius:11px;padding:10px 13px;font-family:var(--sans);font-size:14px;background:var(--surface);color:var(--ink);outline:none}.field-select{width:auto;flex:0 0 auto}.field-textarea{resize:vertical;font-family:var(--sans)}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--blueprint)}.field-btn{border:none;border-radius:11px;padding:11px 18px;cursor:pointer;flex:0 0 auto;background:linear-gradient(135deg,var(--brand-light),var(--brand));color:#fff;font-family:var(--sans);font-weight:700;font-size:13.5px;box-shadow:0 6px 18px #007dda47}.field-btn:disabled{opacity:.6;cursor:default;box-shadow:none}.field-link{border:none;background:none;cursor:pointer;color:var(--steel-2);font-family:var(--sans);font-size:12.5px;text-decoration:underline}.field-photo-btn{display:flex;align-items:center;gap:6px;cursor:pointer;flex:1;min-width:0;border:1px dashed var(--line);border-radius:11px;padding:10px 13px;color:var(--steel);font-size:13px}.field-photo-btn svg{width:16px;height:16px;flex:0 0 auto}.field-photo-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-err{font-size:12px;color:var(--molten-deep);min-height:1em;line-height:1.4}.scan-overlay{align-items:center}.scan-modal{width:100%;max-width:440px;background:#0b1621;border-radius:20px;overflow:hidden;box-shadow:var(--shadow-lg)}.scan-modal .field-modal-head{background:#0b1621;color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}.scan-modal .field-close{color:#cfe0ea}.scan-viewport{position:relative;aspect-ratio:1/1;background:#000;overflow:hidden}.scan-video{width:100%;height:100%;object-fit:cover;display:block}.scan-frame{position:absolute;inset:14% 16%;border:2.5px solid rgba(255,255,255,.85);border-radius:16px;box-shadow:0 0 0 999px #00000059;pointer-events:none}.scan-hint{padding:14px 18px 4px;text-align:center;font-size:12.5px;color:#b9c7d2;line-height:1.5}.scan-manual{padding:14px 18px 20px;border-top:1px solid rgba(255,255,255,.08);margin-top:10px}.scan-manual-label{font-size:11px;color:#8399a8;text-align:center;margin-bottom:10px;letter-spacing:.3px}.scan-manual-row{display:flex;gap:8px}.scan-manual-row input{flex:1;min-width:0;border:1px solid rgba(255,255,255,.16);border-radius:11px;padding:11px 13px;font-family:var(--mono);font-size:14px;background:#ffffff0f;color:#fff;outline:none}.scan-manual-row input::placeholder{color:#6f8694}.scan-manual-row input:focus{border-color:var(--brand-light)}.scan-manual-row button{flex:0 0 auto;border:none;border-radius:11px;padding:11px 18px;cursor:pointer;background:linear-gradient(135deg,var(--brand-light),var(--brand));color:#fff;font-family:var(--sans);font-weight:700;font-size:13.5px}
