:root{font-family:"Segoe UI","Microsoft YaHei",sans-serif;color:#202d3c;background:#f4f6fa;font-size:14px;line-height:1.65;--accent:#325ce5}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}aside{position:fixed;inset:0 auto 0 0;width:232px;background:#111e32;color:#e4eafa;padding:32px 22px;display:flex;flex-direction:column}.brand{font-size:26px;font-weight:700;color:white;letter-spacing:1px}.brand small{display:block;font-size:11px;letter-spacing:3px;margin-left:28px}.muted{color:#6b7b8f}aside .muted{font-size:10px;color:#99a9c2;margin:28px 0 16px}nav{display:grid;gap:5px}nav a{padding:10px 15px;border-radius:7px;color:#b7c6dc}nav a:hover,nav a.active{background:#28417a;color:#fff}.sidebar-bottom{margin-top:auto;font-size:12px;color:#a7b6cb}.sidebar-bottom form{margin-top:18px}.dot{display:inline-block;background:#f9b35c;width:7px;height:7px;border-radius:50%;margin-right:6px}main{margin-left:232px;max-width:1600px;padding:36px 40px}.auth{margin:40px auto;max-width:650px}header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:28px}h1{font-size:27px;margin:4px 0;font-weight:650}h2{font-size:18px;margin:0 0 14px}.eyebrow{font-size:10px;letter-spacing:2px;color:#75869e;margin:0}.pill{display:inline-block;padding:5px 10px;border-radius:6px;background:#edf1f8;color:#506581;font-size:11px;white-space:nowrap}.card{background:white;border:1px solid #e1e7f0;border-radius:12px;padding:25px;margin-bottom:22px;box-shadow:0 3px 12px #142b4d04}.notice{padding:20px 24px;border-radius:10px;border:1px solid #d7e1ff;background:#edf2ff;color:#354b7b;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.notice strong{color:#1f386e}.notice span{flex:1}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.stats b{display:block;font-size:34px;line-height:1.4;color:#233c70}.stats p{color:#637389;margin:0 0 8px}.stats small{color:#8a97a8}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.two-col .card{min-width:0}label{display:block;font-size:12px;font-weight:600;margin:14px 0}input,textarea,select{display:block;width:100%;border:1px solid #cdd6e3;border-radius:6px;padding:10px 12px;margin-top:6px;font:inherit;background:#fff;color:#24354c}input:focus,textarea:focus,select:focus{outline:2px solid #96b3ff;outline-offset:1px}textarea{resize:vertical}button,.button{display:inline-block;border:none;background:var(--accent);color:#fff;border-radius:6px;padding:10px 17px;font:inherit;cursor:pointer}button:hover,.button:hover{background:#244ac7}.secondary{background:#eaf0f8;color:#3d5372}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;background:#f7f9fc;color:#6f7c91;font-weight:600}td,th{padding:14px 12px;border-bottom:1px solid #edf0f5;overflow-wrap:anywhere}td{max-width:320px}.table-wrap{overflow-x:auto}.empty{text-align:center;padding:50px 20px;color:#75849a}.logo{font-size:38px;color:#5579ed;margin-bottom:15px}.warn{color:#a66a10}.warning{padding:14px;background:#fff1ed;border:1px solid #f2c9bd;color:#9c3d28;border-radius:7px}.approval{border-top:1px solid #e4eaf2;padding:20px 0}.approval>div{display:flex;justify-content:space-between;gap:20px}.preserve{white-space:pre-wrap;overflow-wrap:anywhere}.check{display:flex;align-items:center;gap:10px}.check input{width:auto;margin:0}small{font-size:11px}footer{font-size:11px;color:#96a1af;margin:32px 0}code{background:#eef2f8;padding:2px 6px;border-radius:4px}@media(max-width:950px){aside{width:180px;padding:24px 14px}main{margin-left:180px;padding:25px 20px}.two-col,.stats{grid-template-columns:1fr}header{align-items:flex-start;flex-direction:column}}@media(max-width:600px){aside{position:static;width:100%;padding:15px}nav{grid-template-columns:repeat(3,1fr);gap:2px}.brand{font-size:20px}.brand small,aside .muted,.sidebar-bottom{display:none}nav a{padding:6px;font-size:12px}main{margin-left:0;padding:20px 12px}.auth{margin:0 auto}.card{padding:18px}h1{font-size:23px}}

button:disabled{background:#c5cfdf;color:#4f6078;cursor:not-allowed}
.photo{margin:0;min-width:90px;max-width:180px}.photo figcaption{font-size:11px;color:#637389;white-space:normal;max-width:180px}.image-button{display:block;padding:0;border:1px solid #dce4ef;background:#f6f8fb;overflow:hidden}.image-button:hover{background:#edf2ff}.photo img{display:block;width:86px;height:86px;object-fit:contain}.photo-large img{width:180px;height:180px}.photo-placeholder,.image-failure{display:flex;align-items:center;justify-content:center;min-height:86px;min-width:86px;max-width:180px;padding:10px;background:#f1f4f8;color:#6b7b8f;white-space:normal;font-size:12px}[hidden]{display:none!important}.image-gallery{display:flex;flex-wrap:wrap;gap:18px;margin:18px 0}.image-dialog{border:1px solid #ccd8ea;border-radius:12px;max-width:92vw;max-height:92vh;padding:16px}.image-dialog::backdrop{background:#0d1c38b8}.image-dialog img{display:block;max-width:85vw;max-height:76vh;object-fit:contain;margin-top:12px}.safe-description{white-space:pre-wrap;overflow-wrap:anywhere}.facts{display:grid;grid-template-columns:minmax(130px,180px) 1fr;gap:10px}.facts dt{color:#637389}.facts dd{margin:0;overflow-wrap:anywhere}.model-card,.order-item{display:flex;align-items:flex-start;gap:24px;padding:20px 0;border-top:1px solid #e4eaf2}.model-card h3,.order-item h3{margin-top:0}fieldset{border:1px solid #dce4ef;border-radius:8px;margin:16px 0}.actions{display:flex;flex-wrap:wrap;gap:15px;margin-top:22px}.draft-diff{min-width:620px}.draft-diff td{max-width:400px;vertical-align:top}@media(max-width:650px){.model-card,.order-item{flex-direction:column}.facts{grid-template-columns:1fr}.facts dd{margin-bottom:12px}}
@media(max-width:600px){.sidebar-bottom{display:block;margin-top:12px}.sidebar-bottom form{margin-top:8px}}

/* Read-only snapshots contain long IDs and nested detail tables. Preserve
   readable fields in narrow local browser panels and use horizontal scrolling. */
.table-wrap:has(details)::before{content:"可左右滚动查看完整字段与明细";display:block;color:#6b7b8f;font-size:12px;margin-bottom:10px}
.table-wrap:has(details)>table{min-width:1080px}
.table-wrap:has(details) td,.table-wrap:has(details) th{white-space:nowrap;overflow-wrap:normal;max-width:none}
.table-wrap details>table{min-width:540px;margin-top:10px}
