:root{font-family:Microsoft YaHei,PingFang SC,sans-serif;color:#1a2c3d;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1180px;background:#f4f7fb}button,input,textarea,select{font:inherit}button{cursor:pointer}.shell{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr);transition:grid-template-columns .2s ease}.sidebar{min-width:0;overflow:hidden;background:linear-gradient(180deg,#0d3d68,#062647);color:#fff;padding:24px 12px;display:flex;flex-direction:column}.brand{min-width:0;display:flex;align-items:center;gap:10px;padding:0 10px 28px;font-size:18px;font-weight:700;white-space:nowrap}.brand-title{overflow:hidden;text-overflow:ellipsis}.brand-mark{font-size:26px;border:1px solid #7da9d2;padding:2px 7px;border-radius:7px}nav{display:grid;gap:6px}.nav-item{width:100%;border:0;color:#dce9f5;background:transparent;border-radius:7px;padding:14px 16px;text-align:left;font-size:16px;display:flex;gap:14px;align-items:center}.nav-item:hover,.nav-item.active{background:#1c73c9;color:#fff}.nav-item span{width:20px;text-align:center}.sidebar-foot{margin-top:auto;padding:16px 10px 0;color:#9ab6d1;font-size:12px;border-top:1px solid #265477}.main{min-width:0}.topbar{height:70px;background:#fff;border-bottom:1px solid #e4eaf1;display:flex;align-items:center;gap:18px;padding:0 30px}.menu-button{border:0;background:transparent;font-size:24px;color:#1f3550}.top-title{font-size:18px;font-weight:700}.user{margin-left:auto;color:#1f5f9e;display:flex;align-items:center;gap:8px}.content{padding:30px 36px 48px;max-width:1700px;margin:auto;position:relative}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px}.page-heading h1{margin:0 0 8px;font-size:28px}.page-heading p{margin:0;color:#697b8d}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:24px}.metric-card{min-height:132px;background:#fff;border:1px solid #e0e8f0;border-radius:10px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 5px 18px #1f45680a}.metric-card span{color:#516477;font-size:16px}.metric-card strong{font-size:38px;color:#1d70bf}.metric-card.green strong{color:#2f9d63}.metric-card.purple strong{color:#7458d7}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.form-layout{align-items:start}.card{background:#fff;border:1px solid #e0e8f0;border-radius:10px;padding:20px;box-shadow:0 5px 18px #1f456809;overflow:hidden}.card h2{margin:0 0 18px;font-size:19px}.card-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.card-title h2{margin:0}.link-button{color:#1765b0;background:transparent;border:0;font-size:14px}table{width:100%;border-collapse:collapse;font-size:14px}th{background:#f4f8fc;color:#344a5f;font-weight:600}th,td{padding:13px 12px;border:1px solid #e2eaf2;text-align:left}td{color:#3c4d5e}.tag{display:inline-block;padding:4px 8px;border-radius:5px;font-size:13px;white-space:nowrap}.tag.success{color:#228b55;background:#e8f8ee}.tag.danger{color:#d44747;background:#fff0f0}.tag.warning{color:#d78316;background:#fff7e8}.tag.info{color:#1c69b2;background:#eaf4ff}.form-card{display:grid;gap:15px}.form-card label,.approval-actions label,.filters label,.confirmation-grid label{display:grid;gap:7px;color:#435466;font-size:14px}.form-card b{color:#d94848}input,textarea,select{width:100%;border:1px solid #d6e0ea;border-radius:6px;padding:10px 12px;color:#25384c;background:#fff}textarea{min-height:76px;resize:vertical}.upload{min-height:105px;border:1px dashed #b6c8d9;align-items:center;justify-content:center;text-align:center;color:#4f7da9;background:#fbfdff}.upload input{display:none}.upload span{font-size:26px}.upload small{color:#8698aa}.primary,.secondary,.success-button,.danger-button{border:0;border-radius:6px;padding:11px 22px;color:#fff;font-weight:600}.primary{background:#176fc0}.primary:hover{background:#0e5ca4}.primary:disabled{background:#9cb8d1;cursor:not-allowed}.secondary{background:#fff;color:#1765b0;border:1px solid #1765b0}.success-button{background:#29a35d}.danger-button{background:#de4b4b}.approval-detail{margin-top:20px}.timeline{margin-top:28px;display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;text-align:center}.timeline div{display:grid;justify-items:center;gap:6px}.timeline i{width:34px;height:34px;border-radius:50%;background:#1c70bf;color:#fff;font-style:normal;display:grid;place-items:center}.timeline span{height:2px;background:#81b4e1}.timeline small{color:#8494a5}.approval-panel{display:grid;grid-template-columns:1fr 1fr;gap:36px}.approval-actions{border-left:1px solid #e5edf4;padding-left:36px}.approval-actions>div,.button-row{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}.approval-actions p{color:#5e7184}dl{display:grid;grid-template-columns:100px 1fr;gap:13px 16px;font-size:14px}dt{color:#748596}dd{margin:0;color:#2e4256}.issue-grid{display:grid;grid-template-columns:1fr 1.2fr .6fr;gap:20px;margin-bottom:20px}.stock-number{background:#f0faf4;padding:12px;border-radius:6px;color:#4b6373}.stock-number strong{color:#229958;font-size:21px;margin-left:12px}.warning-text{color:#d97a10;margin:-6px 0 0}.vertical-timeline{list-style:none;margin:0;padding:0 0 0 16px;border-left:2px solid #d8e2ec;display:grid;gap:28px}.vertical-timeline li{position:relative;font-weight:700}.vertical-timeline li:before{content:"";position:absolute;left:-23px;top:2px;width:12px;height:12px;border:3px solid #ccd9e5;background:#fff;border-radius:50%}.vertical-timeline li.done:before,.vertical-timeline li.current:before{border-color:#2173c4;background:#2173c4}.vertical-timeline small{display:block;color:#8394a5;font-weight:400;margin-top:4px}.confirmation-grid{display:grid;grid-template-columns:1fr 1fr 1.3fr 1.2fr;gap:18px;align-items:end}.confirmation-grid p{margin-top:0;color:#526a82;font-size:14px}.approval-layout{align-items:start}.selected-row{background:#f0f7ff}.image-list{display:flex;flex-wrap:wrap;gap:10px}.image-list img{width:88px;height:88px;object-fit:cover;border-radius:6px;border:1px solid #dce6f0}.confirm-block{padding:10px 12px;border:1px solid #e0e8f0;border-radius:6px;margin-bottom:10px;cursor:pointer}.confirm-block.active{border-color:#1c70bf;background:#f3f9ff}.muted{color:#76899d}.permission-grid{display:grid;gap:14px;margin:8px 0 4px}.permission-grid h3{margin:0;font-size:15px;color:#31485f}.permission-help{background:#f5f9fd;border:1px solid #d7e6f3;border-radius:8px;padding:12px 14px;color:#3d556c;font-size:13px;line-height:1.55}.permission-help strong{display:block;margin-bottom:6px;color:#1f4f7a}.permission-help ul{margin:0;padding-left:18px}.permission-help li{margin:4px 0}.permission-group{display:grid;gap:8px}.permission-group h4{margin:4px 0 0;font-size:13px;color:#5a738a;font-weight:700;letter-spacing:.02em}.permission-item{display:flex;gap:10px;align-items:flex-start;border:1px solid #e2eaf2;border-radius:6px;padding:10px 12px;background:#fff}.permission-item input{width:auto;margin-top:3px}.permission-item span{display:grid;gap:3px}.permission-item b{font-size:14px;color:#2d4156}.permission-item em{font-style:normal;color:#52677c;font-size:12px;line-height:1.45}.permission-item small{color:#8aa0b4;font-size:11px}.status-legend{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:0 0 16px;padding:12px 14px;background:#f7fbff;border:1px solid #dde8f2;border-radius:8px;color:#4a6074;font-size:13px}.status-legend strong{color:#2a4560;margin-right:4px}.status-legend span{display:inline-flex;align-items:center;gap:6px}.danger-link{color:#d44747!important}.inline-search{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #d7e1eb;border-radius:6px;padding:0 10px}.inline-search input{border:0;outline:0;width:200px}.filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:end;margin-bottom:20px}.filters button{grid-column:-1;justify-self:end}.toast{position:fixed;top:85px;right:38px;z-index:10;padding:13px 16px;border-radius:7px;display:flex;align-items:center;gap:10px;max-width:min(420px,calc(100vw - 48px));box-shadow:0 10px 24px #27754324}.toast-success{background:#f0fbf4;border:1px solid #a7dfb8;color:#207744}.toast-error{background:#fff4f2;border:1px solid #f0b4ab;color:#b42318;box-shadow:0 10px 24px #b423181f}.toast-icon{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-weight:700;flex:0 0 auto}.toast-success .toast-icon{background:#d8f3e2}.toast-error .toast-icon{background:#fde2de}.toast button{border:0;background:transparent;color:inherit;font-size:20px;margin-left:8px;cursor:pointer}.upload-block{display:grid;gap:12px}.upload-hint{margin:0;font-size:13px}.attachment-preview{margin-top:2px}.preview-item{position:relative;width:88px;display:grid;gap:4px;justify-items:center}.preview-item img{width:88px;height:88px;object-fit:cover;border-radius:6px;border:1px solid #dce6f0;background:#fff}.preview-item small{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#76899d;font-size:11px}.preview-remove{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border:0;border-radius:50%;background:#de4b4b;color:#fff;font-size:14px;line-height:1;cursor:pointer}@media(max-width:1250px){body{min-width:1024px}.shell{grid-template-columns:210px 1fr}.content{padding:24px}.metric-grid{gap:12px}.two-column:not(.form-layout){grid-template-columns:1fr}.issue-grid{grid-template-columns:1fr 1fr}.issue-grid>:last-child{grid-column:span 2}.confirmation-grid{grid-template-columns:1fr 1fr}}.shell.sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar-collapsed .brand{justify-content:center;padding-left:0;padding-right:0}.sidebar-collapsed .brand-title,.sidebar-collapsed .sidebar-foot{display:none}.sidebar-collapsed .nav-item{justify-content:center;padding-left:0;padding-right:0;font-size:0}.sidebar-collapsed .nav-item span{font-size:20px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#eaf4fc,#f7fbff)}.login-card{width:min(420px,calc(100vw - 40px));padding:34px}.login-card h1{margin-top:0;color:#173a5e}.login-card form{display:grid;gap:18px;margin-top:26px}.login-card label{display:grid;gap:8px;color:#435466}.login-error{margin:0;padding:10px 12px;color:#b54708;background:#fff4e8;border:1px solid #f5c7a4;border-radius:6px;font-size:14px}
