:root{color:#17211c;background:#f6f5ef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:1180px;min-height:100vh;background:#f6f5ef}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{display:grid;grid-template-columns:260px minmax(900px,1fr);min-height:100vh}.sidebar{border-right:1px solid #ddd8cc;background:#fdfbf4;padding:22px 18px}.brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brand h1{margin:0;font-size:18px;font-weight:700}.brand span{display:block;margin-top:4px;color:#6f766f;font-size:12px}.primary-action,.nav button,.icon-button{border:1px solid #d6d1c6;background:#fff;color:#17211c}.primary-action{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:42px;border-radius:6px;background:#1f3b2f;color:#fff;border-color:#1f3b2f}.primary-action.inline{width:auto;min-width:132px;padding:0 14px}.nav{display:grid;gap:8px;margin-top:22px}.nav button{display:flex;align-items:center;gap:8px;height:38px;border-radius:6px;text-align:left;padding:0 12px}.nav button.active{background:#e7efe7;border-color:#b9cdbb}.workspace{padding:24px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.topbar h2,.detail-head h3{margin:0}.topbar p,.detail-head p{margin:6px 0 0;color:#6c756f}.icon-button{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:6px}.icon-button.compact{width:30px;height:30px}.metric-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric{border-top:1px solid #ddd8cc;padding:14px 2px}.metric span{display:block;color:#6f766f;font-size:13px}.metric strong{display:block;margin-top:6px;font-size:28px}.metric.ok strong{color:#2a6c45}.metric.warn strong{color:#a15d1d}.content-grid{display:grid;grid-template-columns:minmax(620px,1fr) 430px;gap:18px;align-items:start}.list-pane,.detail-pane{min-height:680px}.filters{display:grid;grid-template-columns:1fr 140px 140px;gap:10px;margin-bottom:12px}.filters.slim{grid-template-columns:180px}.upload-row{display:grid;grid-template-columns:minmax(240px,1fr) 170px 150px 150px auto;gap:12px;align-items:center;margin-bottom:14px}.below-row{margin-bottom:14px}.upload-row input[type=file]{height:40px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;padding:8px 10px}.upload-row input[type=text],.upload-row input:not([type]){height:40px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;padding:0 10px}.assets-upload{grid-template-columns:minmax(240px,1fr) 180px 180px auto}.check-row{display:flex;align-items:center;gap:8px;color:#4d5961;font-size:13px}.search-box{display:flex;align-items:center;gap:8px;height:40px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;padding:0 10px}.search-box input{width:100%;border:0;outline:0}select{height:40px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;padding:0 10px}.table-wrap{overflow:auto;border:1px solid #ddd8cc;border-radius:8px;background:#fff;max-height:640px}table{width:100%;border-collapse:collapse}th,td{padding:11px 12px;border-bottom:1px solid #ece7dc;text-align:left;white-space:nowrap;font-size:13px}th{position:sticky;top:0;background:#fbfaf5;color:#5f6a63;font-weight:600}tbody tr.selected{background:#f0f6ee}.status-pill,.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 9px;font-size:12px}.status-pill.active,.badge.ok{background:#e4f1e6;color:#245f3d}.status-pill.draft{background:#eef0f2;color:#4d5961}.status-pill.reviewing,.status-pill.ready_to_publish,.badge.warn{background:#fff2dc;color:#895219}.status-pill.published,.status-pill.uploaded{background:#e4f1e6;color:#245f3d}.status-pill.rejected,.status-pill.failed{background:#f2e5e1;color:#7d3528}.status-pill.local_draft,.status-pill.parsed{background:#eef0f2;color:#4d5961}.status-pill.retired{background:#f2e5e1;color:#7d3528}.detail-pane{border-left:1px solid #ddd8cc;padding-left:18px}.detail-pane.empty{display:grid;place-items:center;color:#6f766f}.detail-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:18px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px}.fields div{border-top:1px solid #ddd8cc;padding-top:10px}dt{color:#6f766f;font-size:12px}dd{margin:4px 0 0;font-weight:600}.plain-section{border-top:1px solid #ddd8cc;padding-top:14px;margin-top:16px}.plain-section h4{margin:0 0 9px;font-size:14px}.plain-section p{margin:0;line-height:1.7;color:#26322c}.followup-grid{display:grid;gap:8px}.branch-list{display:grid;gap:10px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;min-height:28px;border:1px solid #d6d1c6;border-radius:999px;background:#fff;padding:0 10px;color:#4d5961;font-size:12px}.action-row{display:flex;align-items:center;gap:8px}.action-row button,.action-row a,td>button{min-height:30px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;color:#17211c;padding:0 9px;text-decoration:none;font-size:12px}.table-actions{display:flex;flex-wrap:wrap;gap:8px}.table-actions button{min-height:30px;border:1px solid #d6d1c6;border-radius:6px;background:#fff;color:#17211c;padding:0 9px;font-size:12px}.toast{position:fixed;right:24px;top:18px;z-index:20;min-width:220px;border-radius:8px;padding:10px 12px;box-shadow:0 8px 24px #181d1a24;font-size:13px}.toast.ok{background:#e4f1e6;color:#245f3d}.toast.error{background:#f7e7e2;color:#7d3528}.branch-item{border:1px solid #ddd8cc;border-radius:8px;background:#fff;padding:11px}.branch-item strong,.branch-item span{display:block}.branch-item span{margin-top:4px;color:#68736d;font-size:12px}.branch-item p{margin-top:8px}.error-line,.loading-line{margin-bottom:10px;padding:9px 10px;border-radius:6px}.error-line{background:#f7e7e2;color:#7d3528}.loading-line{background:#eef0f2;color:#4d5961}.validation-line+.validation-line{margin-top:6px}.spin{animation:spin .9s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
