:root{font-family:Inter,"Microsoft YaHei",system-ui,sans-serif;color:#20262c;background:#f7f8fa;font-size:14px;letter-spacing:0;--line:#e1e5e9;--green:#167a62;--muted:#6d7680}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,textarea,select{outline-offset:3px}button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:7px 12px;border:1px solid var(--line);border-radius:5px;background:white;color:inherit;cursor:pointer}button:hover{background:#f0f3f5}button:disabled{opacity:.55;cursor:wait}button.primary{background:var(--green);color:white;border-color:var(--green)}button.primary:hover{background:#11614e}svg{width:18px;height:18px;flex-shrink:0}header{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px}.brand,.header-actions{display:flex;align-items:center;gap:12px}.brand>svg{width:28px;height:28px;color:var(--green)}.brand strong{font-size:22px}.brand span{color:var(--muted);border-left:1px solid var(--line);padding-left:12px}.header-actions>span{font-size:12px;color:var(--muted)}nav{display:flex;gap:22px;padding:0 32px;background:#fff;border-bottom:1px solid var(--line);overflow-x:auto}nav button{border:0;border-radius:0;background:transparent;white-space:nowrap;min-height:52px;border-bottom:2px solid transparent;padding:0 4px;color:var(--muted)}nav button.selected{color:var(--green);border-bottom-color:var(--green)}main{max-width:1500px;margin:auto;padding:24px 32px;min-height:calc(100vh - 170px)}.metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));padding:10px 0 28px;margin-bottom:26px;border-bottom:1px solid var(--line);gap:20px}.metric{padding-left:20px;border-left:2px solid var(--line)}.metric:first-child{padding-left:0;border:0}.metric strong{display:block;font-size:27px;font-weight:600;font-variant-numeric:tabular-nums;margin-bottom:7px}.metric span,.muted{color:var(--muted);font-size:13px}.metric.warn strong{color:#b66e0b}.metric.good strong{color:var(--green)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}h1{font-size:22px;margin:0 0 5px;font-weight:600}h2{font-size:19px;margin:0}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px}.spacer{flex:1}.search{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:5px;padding-left:10px;gap:8px;margin:0}.search input{border:0;width:220px}.inline{display:flex;align-items:center;gap:10px;margin:0}input,textarea,select{background:#fff;border:1px solid #ccd3d9;border-radius:5px;padding:9px 10px;color:inherit;min-width:0}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px;flex-shrink:0}input[type=number]{width:85px}label{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.inline,.search{flex-direction:row}.inline input[type=number]{width:60px}.table-wrap{overflow:auto;background:white;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{color:var(--muted);background:#f1f4f6;font-weight:500;white-space:nowrap}td,th{padding:14px 16px;border-bottom:1px solid #edf0f2}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcfc}td small{display:block;color:var(--muted);margin-top:5px;font-size:11px;max-width:260px;overflow-wrap:anywhere}td strong{font-weight:500}td.actions{white-space:nowrap}td.actions button{padding:6px;margin:0 3px;min-width:32px;min-height:32px}td.empty{text-align:center;padding:55px 12px;color:var(--muted)}.badge{display:inline-block;padding:4px 8px;border-radius:4px;background:#eef2f4;white-space:nowrap;font-size:12px}.badge.ready,.badge.completed{background:#e5f3ed;color:#16734b}.badge.unknown,.badge.queued{background:#fff2d9;color:#9b620a}.badge.failed,.badge.expired,.badge.error{background:#fcebec;color:#b34450}.badge.processing,.badge.downloading,.badge.uploading,.badge.submitting{background:#e8f0fa;color:#326797}a{color:var(--green);text-decoration:none;display:inline-flex;align-items:center;gap:5px}code{font:12px ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.generate-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(230px,1fr);gap:36px;max-width:1000px}.two{display:flex;gap:24px}.generate-layout textarea{width:100%;resize:vertical}.generate-layout input[type=file]{max-width:100%}.generate-layout button{margin-top:24px}#notice{padding:12px 15px;border-left:3px solid var(--green);background:#e8f3ee;margin-bottom:22px;overflow-wrap:anywhere}#notice.error{border-color:#b34450;background:#fff0f1}dialog{border:1px solid var(--line);border-radius:8px;padding:26px;width:560px;max-width:calc(100vw - 32px);color:inherit;box-shadow:0 12px 70px #0002}dialog::backdrop{background:#15222d66}dialog textarea{resize:vertical;width:100%}dialog .section-head button{border:0;padding:5px}#import-result{white-space:pre-line;overflow-wrap:anywhere;font-size:13px}#login{min-height:100vh;display:grid;place-items:center}#login[hidden]{display:none}#login-form{width:360px;max-width:calc(100vw - 40px)}#login-form .brand{margin-bottom:40px}#login-form h1{margin-bottom:28px}#login-form button{width:100%}#login-error{color:#b34450}dl{max-width:950px}dt{color:var(--muted);font-size:13px;margin-top:25px}dd{margin:10px 0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}footer{padding:15px 32px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;display:flex;justify-content:space-between}[hidden]{display:none!important}.doc{max-width:900px;margin:40px auto;padding:0 24px;line-height:1.8}.doc pre{background:#edf1f4;padding:20px;overflow:auto;border-radius:5px}.doc h2{margin-top:32px}@media(max-width:700px){header{padding:0 16px;height:60px}.brand span{display:none}.header-actions>span{display:none}nav{padding:0 16px;gap:20px}main{padding:20px 16px}.metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 12px}.metric{padding-left:10px}.metric strong{font-size:24px}.section-head{align-items:flex-start}.toolbar .spacer{display:none}.search{width:100%}.search input{width:100%}.generate-layout{grid-template-columns:minmax(0,1fr);gap:12px}h1{font-size:20px}footer{padding:15px 16px}.table-wrap{max-width:100%}}
