:root{--bg: #f3efe6;--panel: #fffcf8;--ink: #1c1915;--muted: #746b60;--line: #e6dfd2;--accent: #1f6b5a;--accent-deep: #143f36;--accent-2: #e7f3ef;--danger: #9a3b3b;--ok: #1a7a48;--warn: #8a5a12;--sidebar: #fffcf8;--sidebar-ink: #3a342c;--gold: #a67c52;--shadow: 0 1px 2px rgba(36, 28, 18, .04), 0 12px 32px rgba(36, 28, 18, .06);--radius: 16px;font-family:Segoe UI,Microsoft YaHei UI,Microsoft YaHei,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(720px 280px at 100% 0%,rgba(166,124,82,.12),transparent 60%),var(--bg)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}.boot,.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.boot{color:var(--muted);letter-spacing:.04em}.login-wrap{background:radial-gradient(480px 280px at 80% 0%,rgba(166,124,82,.35),transparent 55%),linear-gradient(165deg,#2a241e,#1c1915 55%,#143f36)}.login-stage{width:min(760px,100%);display:grid;grid-template-columns:1fr 360px;gap:36px;align-items:center}.login-aside{color:#f6efe4;display:flex;flex-direction:column;gap:10px}.login-aside strong{font-size:40px;letter-spacing:-.04em;font-weight:650}.login-aside span{color:#f6efe4b8;font-size:15px}.login-card{width:100%;background:#fffcf8;border:0;border-radius:22px;padding:28px 26px 24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 24px 60px #00000047}.login-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(160deg,#1a8f84,#0c534c);color:#f6efe4;font-weight:700;box-shadow:inset 0 0 0 1px #ffffff2e}.login-card h1{font-size:24px;font-weight:650;letter-spacing:-.02em}.login-card button.primary{width:100%;padding:10px 12px;margin-top:4px}.gate-page{min-height:100vh;padding:56px 20px 72px}.gate{width:min(980px,100%);margin:0 auto}.gate h1{font-size:34px;margin:14px 0 8px;letter-spacing:-.03em}.gate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin:22px 0 16px}.gate a{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;padding:18px}.gate a b{font-size:17px}.gate a .port{color:var(--accent);font-size:12px;font-weight:650;letter-spacing:.04em}.gate a span{color:var(--muted);font-size:13px;line-height:1.45}.gate a:hover{border-color:#b7d4ce;transform:translateY(-2px)}.shell{display:grid;grid-template-columns:228px 1fr;min-height:100vh;background:var(--bg)}.side{background:var(--sidebar);color:var(--sidebar-ink);padding:18px 12px 14px;display:flex;flex-direction:column;gap:2px;overflow:auto;max-height:100vh;position:sticky;top:0;border-right:1px solid var(--line)}.side::-webkit-scrollbar{width:8px}.side::-webkit-scrollbar-thumb{background:#1c191526;border-radius:8px}.nav-label{margin-top:18px;padding:4px 12px 6px;font-size:11px;letter-spacing:.16em;color:#a3988c}.side button.sub{padding:6px 10px 6px 18px;font-size:13px}.brand{display:flex;gap:10px;align-items:center;padding:2px 8px 18px}.brand i{width:36px;height:36px;flex:none;border-radius:11px;display:grid;place-items:center;background:linear-gradient(160deg,#1a8f84,#0c534c);color:#f6efe4;font-style:normal;font-weight:700;box-shadow:inset 0 0 0 1px #ffffff29}.brand strong{display:block;font-size:15px;letter-spacing:.02em;color:var(--ink)}.brand span{color:var(--muted);font-size:12px}.side button{position:relative;text-align:left;border:0;background:transparent;color:var(--sidebar-ink);padding:9px 12px;border-radius:10px}.side button:hover{background:#f3efe6}.side button.active{background:var(--accent);color:#fff}.side button.active:before{display:none}.side .spacer{flex:1;min-height:16px}.who{margin-top:8px;padding:12px;border-radius:12px;background:#f6f1e8;display:flex;flex-direction:column;gap:2px}.who b{font-size:13px;color:var(--ink);font-weight:650}.who span,.who{font-size:12px;color:var(--muted)}.side button.logout{color:var(--muted);margin-top:4px}.side button.logout:before{display:none}.main{padding:28px 36px 56px;min-width:0}.principle{max-width:760px;line-height:1.6;margin-bottom:8px}.step-note{margin-top:12px;background:#fffcf8;border-color:var(--line);border-left:3px solid var(--gold)}.step-note h2{font-size:16px}.step-note p{margin-top:6px;line-height:1.65;color:var(--muted)}.job-checks{margin:8px 0 0;padding-left:18px;line-height:1.7}.job-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.job-grid div{background:#faf6f0;border-radius:10px;padding:8px 10px}.job-grid b{display:block;font-size:12px;color:var(--muted)}.job-grid span{display:block;margin-top:4px;font-size:13px}.flow-map{display:flex;flex-direction:column;gap:8px}.flow-lane h3{margin:4px 0 8px;font-size:13px;color:var(--muted);font-weight:650}.arch-band{margin-top:14px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px 16px 16px 18px;box-shadow:var(--shadow);display:grid;grid-template-columns:108px 1fr;gap:8px 16px;align-items:start}.arch-band h2{font-size:15px;margin:8px 0 0;letter-spacing:.01em;color:var(--ink);line-height:1.35}.arch-band h2:before{display:none}.arch-lines{display:grid;grid-template-columns:1fr 1fr;gap:16px}.arch-steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-top:0}.arch-step{width:auto;text-align:left;background:#f7f3eb;border:1px solid transparent;border-radius:14px;padding:12px 12px 13px;box-shadow:none;transition:background .15s ease,border-color .15s ease}.arch-step:hover:not(:disabled){background:#fff;border-color:#ddd4c6}.arch-step em{display:inline-flex;min-width:28px;height:22px;padding:0 7px;align-items:center;justify-content:center;border-radius:999px;background:var(--accent-2);color:var(--accent);font-style:normal;font-size:12px;font-weight:700}.arch-step b{display:block;margin-top:8px;font-size:15px;font-weight:650}.arch-step span{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}.arch-step:disabled{opacity:.48}.page-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:18px}.page-head h1{font-size:28px;font-weight:650;letter-spacing:-.03em}.page-head p,.muted{color:var(--muted);font-size:13px;line-height:1.6}.grid{display:grid;gap:14px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card h2,.card h3{font-size:15px;margin-bottom:8px}.stat{position:relative;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#1a8f84,#d4b483)}.stat b{display:block;font-size:28px;font-weight:650;letter-spacing:-.03em;color:var(--accent-deep);font-variant-numeric:tabular-nums}.stat span{color:var(--muted);font-size:12px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px}.field span{color:var(--muted)}input,select,textarea{border:1px solid #d5e0db;background:#fff;padding:9px 11px;border-radius:10px;width:100%;transition:border-color .15s ease,box-shadow .15s ease}textarea{min-height:72px;resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0c6e6624}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}button.primary,button.ghost,button.danger{border-radius:10px;padding:8px 14px;border:1px solid transparent}button.primary{background:var(--accent);color:#fff;box-shadow:none}button.primary:hover{filter:brightness(1.05)}button.ghost{background:#fff;color:var(--accent);border-color:#c9ddd8}button.ghost:hover{background:var(--accent-2)}button.danger{background:#fff;color:var(--danger);border-color:#e7cfcf}button.danger:hover{background:#fdf6f6}button:disabled{opacity:.45;cursor:not-allowed}.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:14px;width:fit-content;max-width:100%;padding:4px;background:#fff;border:1px solid var(--line);border-radius:14px}.tabs button{border:0;background:transparent;border-radius:10px;padding:7px 12px;font-size:13px;color:var(--muted)}.tabs button:hover{color:var(--ink);background:#f6f1e8}.tabs button.on{background:var(--ink);color:#fff;box-shadow:none}.table-wrap{overflow:auto;border:1px solid var(--line);background:#fff;border-radius:14px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:11px 14px;border-bottom:1px solid #eef3f1;text-align:left;vertical-align:top;white-space:nowrap}th{background:#faf6f0;font-weight:650;position:sticky;top:0;color:#5c5348;font-size:12px}tr.clickable{cursor:pointer}tr.clickable:hover,tr.active-row{background:#faf6f0}tr.ready td{background:#e8f7ee}.empty-row td{color:var(--muted);text-align:center;padding:28px 14px;white-space:normal}.detail-cell{white-space:normal;min-width:160px;max-width:280px;line-height:1.45;color:var(--muted)}.banner{padding:11px 14px;border:1px solid var(--line);background:#fff;font-size:14px;border-radius:12px}.banner.ok{border-color:#b7dfc6;background:#f3fbf6}.banner.warn{border-color:#ead7b0;background:#fff8ec}.banner.bad{border-color:#e7c4c4;background:#fdf4f4;color:var(--danger)}.tag{display:inline-block;padding:2px 8px;border-radius:999px;background:#e7eeeb;font-size:12px}.tag.ok{background:#d9f3e4;color:var(--ok)}.tag.warn{background:#f8ecd4;color:var(--warn)}.tag.bad{background:#f8e4e4;color:var(--danger)}.chips{display:flex;gap:6px;flex-wrap:wrap}.channel{text-align:left;border:1px solid var(--line);background:#fff;padding:10px 12px;border-radius:12px;min-width:180px}.channel.on{border-color:var(--accent);background:var(--accent-2)}.channel b{display:block}.plate{display:grid;gap:8px;background:#fff;border:1px dashed #8aa39c;border-radius:12px;padding:12px}.cell{border:1px solid #222;min-height:132px;padding:8px;position:relative;font-size:12px;line-height:1.45}.cell .marks:before,.cell .marks:after{content:"";position:absolute;width:10px;height:10px;border-color:#111;border-style:solid}.cell .marks:before{top:2px;left:2px;border-width:1px 0 0 1px}.cell .marks:after{bottom:2px;right:2px;border-width:0 1px 1px 0}.plate-code{font-family:Consolas,monospace;letter-spacing:1px;font-size:13px}.scan-box{display:flex;gap:10px;align-items:end;margin-top:8px}.scan-box label{flex:1;display:grid;gap:6px;font-size:13px}.scan-box input{height:46px;font-size:20px;letter-spacing:1px;font-family:Consolas,monospace}.code-mark{display:inline-grid;gap:2px}.code-mark .bars{display:flex;align-items:end;height:28px;gap:1px}.code-mark .bars i{display:block;height:28px;background:#1c1915}.code-mark b{font-family:Consolas,monospace;font-size:13px;letter-spacing:1px}.code-btn{background:transparent;border:0;padding:0;text-align:left;cursor:pointer}.code-legend{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}.code-card{text-align:left;background:#fffdf8;border:1px dashed var(--line);border-radius:12px;padding:12px}.code-card em{font-style:normal;font-family:Consolas,monospace;font-size:18px}.code-card b,.code-card span{display:block}.code-card span{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}.code-card:disabled{opacity:.48}.slip{width:260px;border:1px solid #222;padding:10px;background:#fff;font-size:13px;line-height:1.5}.sheet{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;max-width:820px;box-shadow:var(--shadow)}.sheet h2{font-size:20px}.mode-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.mode-row b{display:block}.mode-row span{display:block;color:var(--muted);font-size:13px;margin-top:4px}.switch{position:relative;min-width:64px;height:32px;border:0;border-radius:99px;background:#d9d0c3;color:#5c5348;padding:0 12px 0 28px}.switch i{position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff}.switch.on{background:var(--accent);color:#fff;padding:0 28px 0 12px}.switch.on i{left:auto;right:4px}.pay-qr{width:220px;height:220px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px}.pay-qr img{width:100%;height:100%}.quote-line{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line)}.timeline{display:flex;flex-direction:column;gap:8px}.timeline div{display:grid;grid-template-columns:88px 1fr;gap:8px;font-size:13px;padding:8px 0;border-bottom:1px dashed var(--line)}.board{display:grid;grid-template-columns:96px 210px 1fr;gap:12px;min-height:420px}.col{border:1px solid var(--line);background:#fff;overflow:auto;border-radius:14px;box-shadow:var(--shadow)}.col button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #eef3f1;border-radius:0;background:#fff;padding:10px 12px}.col button.on{background:var(--accent-2);color:var(--accent-deep);font-weight:650}.seq{border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px;background:#fff}.seq.ready{background:#e8f7ee;border-color:#8dccaa}.thumb{width:168px;height:112px;display:grid;place-items:center;text-align:center;font-size:12px;border:1px solid #c9c2b2;border-radius:8px;padding:8px}.flow-line{display:flex;flex-wrap:wrap;gap:8px}.flow-step{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;min-width:128px}.flow-step b{display:block;font-size:13px}.module-block{border-top:1px solid var(--line);padding-top:10px}.module-block h3{margin-bottom:8px}.chat{display:flex;flex-direction:column;gap:10px;max-width:760px}.bubble{white-space:pre-wrap;border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px 14px;line-height:1.6;box-shadow:0 1px 2px #10211d08}.bubble.me{background:var(--accent-2);border-color:#cfe4df}.chat form{display:flex;gap:8px}.chat form input{flex:1}.form-block{margin-top:16px}.form-block h3{font-size:13px;letter-spacing:.08em;color:var(--accent);margin-bottom:8px}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.product-card{display:flex;flex-direction:column;gap:6px;padding:12px}.product-photo{width:100%;height:168px;object-fit:cover;border-radius:12px;background:#eef3f1}.product-photo.empty{display:grid;place-items:center;color:var(--muted);font-size:13px;border:1px dashed #c9d6d1}.product-side{display:grid;grid-template-columns:180px 1fr;gap:14px;align-items:start;margin-top:12px}.product-side .product-photo{height:140px}.preview-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.preview-grid figure{width:112px;margin:0;display:flex;flex-direction:column;gap:4px}.preview-grid img,.preview-file{width:112px;height:84px;object-fit:cover;border-radius:10px;background:#f6f1e8;border:1px solid var(--line)}.preview-file{display:grid;place-items:center;color:var(--muted);font-size:12px}.preview-grid figcaption{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-grid .ghost{padding:2px 8px;font-size:12px}.file-cell{display:flex;gap:8px;align-items:center}.shot{width:72px;height:54px;object-fit:cover;border-radius:8px;background:#f6f1e8;display:block}.shot.large{width:100%;height:160px}.photo-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px}.photo-card{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden}.photo-card figcaption{padding:10px 12px 12px;display:flex;flex-direction:column;gap:4px}.photo-card b{font-size:14px}.photo-card span{color:var(--muted);font-size:12px}.shot.empty{display:inline-block}.spec-line{font-size:13px;line-height:1.55;color:var(--ink)}@media(max-width:980px){.shell{grid-template-columns:1fr}.side{position:sticky;top:0;z-index:5;max-height:none;flex-direction:row;flex-wrap:nowrap;align-items:center;padding:10px 12px;overflow:auto}.nav-label,.spacer,.who{display:none}.brand{padding:0 10px 0 0}.side button{white-space:nowrap;padding:8px 10px}.main{padding:18px 14px 32px}.login-stage,.login-card,.grid-4,.grid-3,.grid-2,.job-grid,.arch-lines,.arch-band,.fields,.board,.code-legend,.scan-box{grid-template-columns:1fr}.span-2{grid-column:auto}.arch-steps,.product-side{grid-template-columns:1fr}.login-aside strong{font-size:28px}}@media print{.side,.page-head,.no-print,.tabs,.actions{display:none!important}.shell{display:block}.main{padding:0}body{background:#fff}.card,.table-wrap,.sheet,.arch-step{box-shadow:none}}
