:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#18222c;background:#f5f7f9;line-height:1.45;--blue:#1769e0;--blue-dark:#1158c2;--ink:#18222c;--muted:#6e7b87;--faint:#8a959f;--line:#dde3e8;--line-soft:#e5eaee;--card:#fff;--radius:8px;--shadow:0 1px 2px #15202b0a}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}
button{font:inherit}input,select,textarea{font:inherit}

/* ===== 顶栏 ===== */
.bar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:28px;position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:10px;min-width:172px}
.brand span{width:30px;height:30px;display:grid;place-items:center;background:linear-gradient(135deg,#2b7bff,#1158c2);color:#fff;border-radius:8px;font-size:12px;font-weight:800;letter-spacing:.02em}
.brand strong{font-size:15px;white-space:nowrap}
.bar nav{display:flex;height:100%;gap:2px}
.nav{border:0;background:none;padding:0 15px;color:#64717e;font-weight:600;font-size:14px;cursor:pointer;position:relative;transition:color .15s}
.nav:hover{color:var(--blue)}
.nav.active{color:var(--blue)}
.nav.active::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:2px;border-radius:2px;background:var(--blue)}
.nav:disabled{opacity:.45;cursor:default}
.user{margin-left:auto;display:flex;align-items:center;gap:4px;font-size:13px;color:#53606d;white-space:nowrap}

/* ===== 主容器 ===== */
.shell{max-width:1240px;margin:auto;padding:30px 28px 60px}
.view{display:none}
.view.active{display:block;animation:fadeIn .18s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ===== 页头 ===== */
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.page-head h1{font-size:25px;margin:0;letter-spacing:-.01em}
.page-head p{margin:6px 0 0;color:var(--muted);font-size:14px}

/* ===== 按钮 ===== */
.primary,.secondary{border-radius:8px;padding:9px 16px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .05s;line-height:1.4}
.primary{background:var(--blue);color:#fff;border:1px solid transparent}
.primary:hover{background:var(--blue-dark)}
.primary:active{transform:translateY(1px)}
.secondary{background:#fff;color:#31404e;border:1px solid #cfd7df}
.secondary:hover{background:#f4f7fa;border-color:#b8c3cc}
.secondary:active{transform:translateY(1px)}
.primary:disabled,.secondary:disabled{opacity:.55;cursor:default;transform:none}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #8ab4f8;outline-offset:1px}
.icon{border:0;background:none;font-size:22px;line-height:1;width:32px;height:32px;border-radius:6px;color:#6e7b87;cursor:pointer;transition:background .15s,color .15s}
.icon:hover{background:#eef2f6;color:var(--ink)}

/* ===== 链接按钮 ===== */
.link{display:inline-block;border:0;background:none;padding:4px 2px;color:var(--blue);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:color .15s}
.link:hover{color:var(--blue-dark);text-decoration:underline;text-underline-offset:3px}
.link.danger{color:#c0392b}
.link.danger:hover{color:#a93226}
.link.inline{display:inline;margin-left:12px;font-size:13px}
.row-actions{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:nowrap}
.row-status{display:flex;flex-direction:column;align-items:flex-start}

/* ===== 统计卡 ===== */
.summary{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);margin:24px 0 20px;border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}
.summary div{padding:15px 20px;border-right:1px solid var(--line-soft)}
.summary div:last-child{border:0}
.summary span{display:block;color:#75828e;font-size:12px;font-weight:600;letter-spacing:.03em}
.summary b{font-size:24px;letter-spacing:-.02em;color:var(--ink)}

/* ===== 表格卡片 ===== */
.table-wrap{background:#fff;border:1px solid var(--line);margin-top:20px;border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}
.table-tools{padding:14px 16px;display:flex;gap:10px;border-bottom:1px solid var(--line-soft);background:#fafbfc}
.table-tools input{min-width:260px}
.table-tools input,.table-tools select,label input,label select,label textarea{border:1px solid #cfd7df;border-radius:7px;padding:9px 11px;background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.table-tools input:focus,.table-tools select:focus,label input:focus,label select:focus,label textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1769e018;outline:none}

/* ===== 机器人行 ===== */
.robot-row{display:grid;grid-template-columns:44px minmax(210px,1.4fr) minmax(110px,.6fr) minmax(160px,1fr) minmax(130px,.7fr) minmax(120px,.8fr);align-items:center;gap:18px;padding:16px 18px;border-bottom:1px solid var(--line-soft);transition:background .12s}
.robot-row:hover{background:#fafcfe}
.robot-row:last-child,.simple-row:last-child{border:0}
.avatar{width:40px;height:40px;display:grid;place-items:center;border-radius:9px;background:linear-gradient(135deg,#2b7bff,#1158c2);color:#fff;font-weight:800;font-size:15px;box-shadow:0 2px 6px #1769e033}
.avatar.codex{background:linear-gradient(135deg,#8b5cf6,#6c4acb);box-shadow:0 2px 6px #6c4acb33}
.identity strong,.identity span,.identity code,.robot-row div>b,.robot-row div>span{display:block}
.identity strong{font-size:15px}
.identity span,.robot-row div>span{font-size:12px;color:#6e7b87;margin-top:3px}
.identity code{font-size:11px;color:var(--faint);margin-top:4px}
.robot-row small{display:block;color:#75828e;font-size:12px;margin-bottom:3px}
.robot-row div>b{font-size:13px;font-weight:600}
.badge{display:inline-block;padding:4px 9px;border-radius:99px;font-size:11px;font-weight:700;background:#e9edf0;color:#4b5a68;white-space:nowrap}
.badge.running,.badge.online{background:#dcf3e6;color:#187346}
.badge.pending{background:#fff1ce;color:#8b6200}
.badge.draft{background:#e8eef9;color:#48617b}
.badge.stopped,.badge.error{background:#fde7e5;color:#b3402f}

/* ===== 空态 ===== */
.empty{padding:52px 20px;text-align:center}
.empty b{font-size:15px;display:block}
.empty span{display:block;color:#71808e;margin-top:5px;font-size:13px}

/* ===== 通用列表行 ===== */
.simple-list{min-height:120px}
.simple-row{display:grid;grid-template-columns:minmax(200px,1.2fr) minmax(120px,.7fr) minmax(170px,1fr) minmax(160px,1fr);gap:18px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line-soft);transition:background .12s}
.simple-row:hover{background:#fafcfe}
.simple-row strong,.simple-row span,.simple-row small,.simple-row b{display:block}
.simple-row strong{font-size:14px}
.simple-row span,.simple-row small{font-size:12px;color:#71808e}
.simple-row b{font-size:13px;font-weight:600;margin-top:3px}

/* ===== 弹窗 ===== */
dialog{width:min(680px,calc(100% - 28px));border:0;border-radius:12px;padding:0;box-shadow:0 24px 64px #15202b45;color:var(--ink)}
dialog[open]{animation:dialogIn .18s ease}
@keyframes dialogIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
dialog::backdrop{background:#18222c70;backdrop-filter:blur(2px)}
dialog header,dialog footer{padding:17px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line-soft)}
dialog footer{border:0;border-top:1px solid var(--line-soft);justify-content:flex-end;gap:10px}
dialog h2{margin:0;font-size:20px}
dialog header p{margin:3px 0 0;color:#71808e;font-size:12px}
.form-grid{padding:22px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{font-size:13px;font-weight:600}
label input,label select,label textarea{display:block;width:100%;margin-top:6px;font-weight:400}
.wide{grid-column:1/-1}
.toggle{display:flex;gap:10px;align-items:flex-start;padding:11px;border:1px solid #e0e5e9;border-radius:8px;background:#fbfcfd;cursor:pointer;transition:border-color .15s}
.toggle:hover{border-color:#c3cfe0}
.toggle input{width:auto;margin:3px 0;accent-color:var(--blue)}
.toggle b,.toggle small{display:block}
.toggle small{color:#72808c;font-weight:400;margin-top:2px}
.pairing{background:#eef5ff;border:1px solid #bdd5f8;border-radius:8px;padding:18px;text-align:center}
.pairing span,.pairing small{display:block;color:#58708a}
.pairing strong{display:block;font-size:28px;letter-spacing:.12em;margin:5px 0;color:#174f98}

/* ===== Toast ===== */
.toast{position:fixed;right:20px;bottom:20px;background:#18222c;color:#fff;padding:11px 16px;border-radius:8px;font-size:13px;box-shadow:0 8px 24px #15202b33;z-index:100;animation:toastIn .2s ease}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ===== 登录页 ===== */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#f2f6fb,#e6edf5);padding:24px}
.login-card{width:min(380px,calc(100% - 32px));background:#fff;border:1px solid var(--line);border-radius:14px;padding:32px;box-shadow:0 16px 48px #15202b1c}
.login-card h2{margin:0 0 4px;text-align:center;font-size:22px}
.login-hint{text-align:center;color:#71808e;font-size:13px;margin:0 0 22px}
.login-card label{display:block;margin-bottom:15px}
.login-card input{width:100%}
.login-btn{width:100%;margin-top:4px;padding:11px 16px}
.login-error{margin-top:14px;background:#fdecec;border:1px solid #f5c6c4;color:#b63a34;border-radius:8px;padding:9px 12px;font-size:13px}

/* ===== 详情页 ===== */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}
.detail-card{padding:18px 20px}
.detail-card h3{margin:0 0 14px;font-size:15px}
.detail-card.wide{grid-column:1/-1}
.kv{display:flex;flex-direction:column}
.kv-row{display:flex;gap:14px;padding:8px 0;border-bottom:1px solid #eef1f3;font-size:13px}
.kv-row:last-child{border:0}
.kv-row>span{flex:0 0 110px;color:#71808e}
.kv-row>div{flex:1;color:#18222c;word-break:break-all}
.pre-wrap{white-space:pre-wrap;font-family:inherit;margin:0}
.detail-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:15px;align-items:center}
.settings-card{padding:22px;margin-top:22px}
.settings-card h3{margin:0 0 16px;font-size:16px}

@media(max-width:850px){.detail-grid{grid-template-columns:1fr}.detail-card.wide{grid-column:auto}}
@media(max-width:850px){.bar{padding:0 14px;gap:10px}.brand{min-width:auto}.bar nav{overflow-x:auto}.nav{padding:0 9px;font-size:12px}.user{display:none}.shell{padding:20px 14px}.summary{grid-template-columns:1fr 1fr}.summary div:nth-child(2){border-right:0}.summary div:nth-child(-n+2){border-bottom:1px solid var(--line-soft)}.robot-row{grid-template-columns:44px 1fr}.robot-row>div:nth-child(n+3){grid-column:2}.simple-row{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.table-tools input{min-width:0;flex:1}.row-actions{flex-wrap:wrap;gap:8px 14px}}
