:root{--bg:#f5f2ec;--surface:#fff;--surface2:#faf8f4;--surface3:#f1ede5;--ink:#15201a;--ink2:#2c3a32;--muted:#59645c;--faint:#7d867f;--line:#e5dfd3;--line2:#cdc5b5;--acc:#1c6b49;--acc-d:#14533a;--acc-soft:#e1f0e8;--warn:#8a5a00;--warn-soft:#fdf2d8;--bad:#a3322c;--bad-soft:#fbe5e3;--ok:#1c6b49;--r:14px;--sh:0 1px 2px rgba(21,32,26,.06),0 8px 24px rgba(21,32,26,.06)}
@media (prefers-color-scheme:dark){:root{--bg:#0f1311;--surface:#171c19;--surface2:#1b211e;--surface3:#222a26;--ink:#eef2ee;--ink2:#cfd8d1;--muted:#98a39b;--faint:#74807a;--line:#2a332e;--line2:#3a453f;--acc:#3fa273;--acc-d:#34885f;--acc-soft:#17291f;--warn:#e9b44c;--warn-soft:#2c2411;--bad:#ef8a82;--bad-soft:#2d1816;--ok:#6dcf9c;--sh:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35)}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
.wrap{max-width:960px;margin:0 auto;padding:18px 16px 60px}
header.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px}
.brand img{width:34px;height:34px;border-radius:10px}.brand small{font-weight:500;color:var(--muted);font-size:13px}
.spacer{flex:1}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 12px;font-size:13px;color:var(--muted)}
.nav{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.nav button{border:1px solid var(--line2);background:var(--surface);border-radius:999px;padding:7px 16px;font-weight:600;cursor:pointer;color:var(--ink)}
.nav button[aria-selected=true]{background:var(--acc);border-color:var(--acc);color:#fff}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:16px;margin-bottom:12px}
.card h3{margin:0 0 8px;font-size:15px}
.muted{color:var(--muted);font-size:13px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:640px){.grid3{grid-template-columns:1fr}}
label.chk{display:flex;gap:8px;align-items:center;cursor:pointer}
input[type=checkbox]{width:18px;height:18px;accent-color:var(--acc)}
input[type=text],input[type=password],input[type=url],select,textarea{width:100%;background:var(--surface);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
textarea{resize:vertical;min-height:110px}
select:disabled{opacity:.55}
.btn{border:1px solid var(--line2);background:var(--surface2);border-radius:10px;padding:8px 14px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--surface3)}.btn:disabled{opacity:.5;cursor:default}
.btn.pri{background:var(--acc);border-color:var(--acc);color:#fff}.btn.pri:hover{background:var(--acc-d)}
.btn.run{background:var(--acc);border-color:var(--acc);color:#fff;font-size:16px;padding:13px 18px;flex:3}
.btn.run:hover{background:var(--acc-d)}
.btn.ghost{background:transparent}.btn.bad{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}
.btn.sm{padding:5px 10px;font-size:13px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.tab{border:1px solid var(--line2);background:var(--surface);border-radius:999px;padding:6px 14px;font-weight:600;cursor:pointer;font-size:14px}
.tab[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.tab .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--acc);margin-left:6px}
.bar{height:12px;border-radius:7px;background:var(--surface3);overflow:hidden;border:1px solid var(--line)}
.bar>i{display:block;height:100%;width:0;background:var(--acc);transition:width .4s}
.console{background:#0c0f0d;color:#c9d3cc;border-radius:12px;padding:10px 12px;font:12.5px/1.55 ui-monospace,Menlo,Consolas,monospace;height:240px;overflow:auto;white-space:pre-wrap;word-break:break-word}
.console .bad{color:#ff9a92}.console .warn{color:#ffc24d}.console .ok{color:#7fdcab}
.hint{background:var(--acc-soft);border:1px solid var(--line);border-radius:12px;padding:10px 12px;color:var(--ink2)}
.notice{border-radius:12px;padding:10px 12px;margin:8px 0}
.notice.warn{background:var(--warn-soft);color:var(--warn)}.notice.bad{background:var(--bad-soft);color:var(--bad)}.notice.ok{background:var(--acc-soft);color:var(--ok)}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
th{color:var(--muted);font-weight:600;font-size:12.5px}
.tag{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}
.tag.on{background:var(--acc-soft);color:var(--ok)}.tag.off{background:var(--bad-soft);color:var(--bad)}
.thumb{width:52px;height:52px;object-fit:cover;border-radius:10px;border:1px solid var(--line2)}
.sitepick{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px;margin-top:8px;max-height:200px;overflow:auto}
.sitepick label{border:1px solid var(--line);border-radius:10px;padding:6px 10px;background:var(--surface2);font-size:13px;word-break:break-all}
dialog{border:1px solid var(--line2);border-radius:16px;background:var(--surface);color:var(--ink);padding:18px;max-width:480px;width:calc(100% - 32px);box-shadow:var(--sh)}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog form{display:grid;gap:10px}
.field{display:grid;gap:4px}.field>span{font-weight:600;font-size:13px}
.login{max-width:380px;margin:12vh auto 0}
.login .card{padding:22px}
.err{color:var(--bad);min-height:20px;font-size:14px}
.hide{display:none!important}
.login .brand{justify-content:center;margin-bottom:14px}.login .field+.field{margin-top:10px}.login .btn{width:100%;padding:12px}
.gap{margin-top:10px}.grow{flex:1}.tall{min-height:190px}.auto{width:auto}
.st-warn{color:var(--warn)}.st-ok{color:var(--ok)}
.tag{border:0;cursor:pointer}.tag:disabled{cursor:default}
.tablewrap{overflow-x:auto;margin-top:8px}
.wm{height:44px;width:auto;background:var(--surface3);border:1px solid var(--line2);border-radius:8px;padding:4px}
.tall-pick{max-height:320px;grid-template-columns:1fr;margin:8px 0}
