.monitor-view[data-v-94c015ee]{max-width:1200px;margin:0 auto;color:#333;font-size:14px}.muted[data-v-94c015ee]{color:#999;font-size:12px;font-weight:400}.progress[data-v-94c015ee]{margin-left:8px}.sm-text[data-v-94c015ee]{font-size:12px;margin-bottom:6px}.tm-card[data-v-94c015ee]{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 4px #0000000f;margin-bottom:20px}.tm-card h2[data-v-94c015ee]{font-size:16px;margin-bottom:14px}.tm-row[data-v-94c015ee]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.tm-row input[data-v-94c015ee]{flex:1;min-width:200px;padding:8px 14px;border:1px solid #ddd;border-radius:8px;font-size:14px}.tm-btn[data-v-94c015ee]{padding:8px 18px;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:13px;cursor:pointer;transition:.15s;white-space:nowrap}.tm-btn[data-v-94c015ee]:hover:not(:disabled){background:#f0f2f5}.tm-btn[data-v-94c015ee]:disabled{opacity:.5;cursor:not-allowed}.tm-btn.primary[data-v-94c015ee]{background:#4f6ef7;color:#fff;border-color:#4f6ef7}.tm-btn.primary[data-v-94c015ee]:hover:not(:disabled){background:#3b5de7}.tm-btn.green[data-v-94c015ee]{background:#22c55e;color:#fff;border-color:#22c55e}.tm-btn.green[data-v-94c015ee]:hover{background:#1eb456}.tm-btn.orange[data-v-94c015ee]{background:#e65c00;color:#fff;border-color:#e65c00}.tm-btn.orange[data-v-94c015ee]:hover{background:#cf5300}.tm-btn.danger[data-v-94c015ee]{color:#e65c00;border-color:#e65c00}.tm-btn.sm[data-v-94c015ee]{padding:4px 12px;font-size:12px}.login-warning[data-v-94c015ee]{background:#fff3cd;border:1px solid #ffc107;border-radius:8px;padding:12px 16px;margin-bottom:16px;display:flex;align-items:center;gap:10px}.login-warning .warn-icon[data-v-94c015ee]{font-size:20px}.login-warning .warn-text[data-v-94c015ee]{flex:1}.login-warning b[data-v-94c015ee]{font-size:14px;color:#856404}.login-warning p[data-v-94c015ee]{font-size:12px;color:#997404;margin:2px 0 0}.tags[data-v-94c015ee]{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.tag[data-v-94c015ee]{padding:6px 14px;border-radius:20px;font-size:14px;cursor:pointer;background:#eef1ff;color:#4f6ef7;border:2px solid transparent;transition:.15s;display:flex;align-items:center;gap:6px}.tag[data-v-94c015ee]:hover{background:#dde3ff}.tag.active[data-v-94c015ee]{background:#4f6ef7;color:#fff;border-color:#4f6ef7}.tag.queued[data-v-94c015ee]{border-color:#22c55e;box-shadow:0 0 0 1px #22c55e inset}.tag input[data-v-94c015ee]{accent-color:#22c55e}.tag small[data-v-94c015ee]{opacity:.6}.tag .del[data-v-94c015ee]{font-style:normal;font-size:18px;line-height:1;cursor:pointer;opacity:.5}.tag .del[data-v-94c015ee]:hover{opacity:1}.login-split[data-v-94c015ee]{display:flex;gap:20px;flex-wrap:wrap}.login-col[data-v-94c015ee]{flex:1;min-width:250px}.login-col.border[data-v-94c015ee]{border-left:1px solid #eee;padding-left:20px}.qr-status[data-v-94c015ee]{font-size:12px;color:#888;margin-left:8px}.qr-inline[data-v-94c015ee]{margin-top:12px;text-align:center}.qr-inline img[data-v-94c015ee]{width:300px;height:300px;object-fit:contain;border-radius:12px;border:3px solid #4f6ef7;padding:8px;background:#fff;cursor:pointer}.qr-inline p[data-v-94c015ee]{font-size:11px;color:#888;margin-top:4px}.cookie-msg[data-v-94c015ee]{font-size:12px;color:#22c55e;margin-top:8px}.running-box[data-v-94c015ee]{background:#f0f4ff;border:1px solid #4f6ef7;border-radius:8px;padding:10px 14px;margin-bottom:8px}.running-row[data-v-94c015ee]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.running-row b[data-v-94c015ee]{font-size:15px}.page-info[data-v-94c015ee]{color:#4f6ef7;white-space:nowrap}.new-count[data-v-94c015ee]{color:#22c55e}.upd-count[data-v-94c015ee]{color:#4f6ef7}.time-info[data-v-94c015ee]{font-size:11px;color:#888}.err-msg[data-v-94c015ee]{color:#e00;font-size:11px;margin-top:2px}.queue-box[data-v-94c015ee]{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px 14px;margin-top:8px}.queue-label[data-v-94c015ee]{font-size:12px;color:#92400e}.queue-item[data-v-94c015ee]{background:#fef3c7;color:#92400e;padding:1px 8px;border-radius:10px;font-size:11px;margin:2px;display:inline-block}.history[data-v-94c015ee]{margin-top:4px}.history summary[data-v-94c015ee]{cursor:pointer;font-size:12px;color:#888}.history-row[data-v-94c015ee]{display:flex;align-items:center;padding:4px 0;font-size:11px;gap:8px;flex-wrap:wrap}.history-row b[data-v-94c015ee]{min-width:60px}.history .ok[data-v-94c015ee]{color:#22c55e}.history .err[data-v-94c015ee]{color:#e00}.empty-tip[data-v-94c015ee]{font-size:13px;color:#999;padding:8px 0}.threshold[data-v-94c015ee]{font-size:12px;color:#22c55e;font-weight:400}.stats-grid[data-v-94c015ee]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}.stat[data-v-94c015ee]{text-align:center}.stat .val[data-v-94c015ee]{font-size:22px;font-weight:700;color:#4f6ef7}.stat .lbl[data-v-94c015ee]{font-size:12px;color:#999;margin-top:2px}.chart-wrap[data-v-94c015ee]{position:relative;height:320px;margin-top:10px}.table-wrap[data-v-94c015ee]{overflow-x:auto}table[data-v-94c015ee]{width:100%;border-collapse:collapse;font-size:13px}th[data-v-94c015ee],td[data-v-94c015ee]{padding:10px 12px;text-align:left;border-bottom:1px solid #f0f0f0}th[data-v-94c015ee]{color:#888;font-weight:500;font-size:12px}td a[data-v-94c015ee]{color:#4f6ef7;text-decoration:none}.title-cell[data-v-94c015ee]{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.price[data-v-94c015ee]{font-weight:600;color:#e65c00}.qty-cell[data-v-94c015ee]{font-size:11px;white-space:nowrap}.tag-cell[data-v-94c015ee]{font-size:11px}.nowrap[data-v-94c015ee]{white-space:nowrap;font-size:12px}.view-link[data-v-94c015ee]{font-weight:600}.tm-pager[data-v-94c015ee]{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:14px}.tm-pager span[data-v-94c015ee]{font-size:13px;color:#888}.empty[data-v-94c015ee]{text-align:center;color:#bbb;padding:40px 0}.note[data-v-94c015ee]{font-size:12px;color:#bbb;margin-top:20px;text-align:center}.qr-overlay[data-v-94c015ee]{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:9999;justify-content:center;align-items:center}.qr-overlay.show[data-v-94c015ee]{display:flex}.qr-box[data-v-94c015ee]{background:#fff;border-radius:16px;padding:30px;text-align:center;max-width:90vw}.qr-box img[data-v-94c015ee]{max-width:88vw;max-height:70vh;border-radius:12px}.qr-box p[data-v-94c015ee]{font-size:14px;color:#333;margin-top:8px}.qr-box .tm-btn[data-v-94c015ee]{margin-top:12px}:root{color:#1f2933;background:#f5f7f9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:#f5f7f9}button,input{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) 430px}.login-hero{min-height:100vh;padding:64px 7vw;display:flex;flex-direction:column;justify-content:center;color:#fff;background:linear-gradient(#182e41d1,#182e41d1),url(/images/login-bg-turtles.png) center / cover no-repeat}.brand-mark{width:62px;height:62px;display:grid;place-items:center;margin-bottom:28px;border:1px solid rgba(255,255,255,.38);border-radius:8px;background:#ffffff1f}.login-hero p{margin:0 0 12px;color:#9fd4bb;font-weight:800;letter-spacing:.08em}.login-hero h1{max-width:720px;margin:0;font-size:54px;line-height:1.12;letter-spacing:0}.login-hero span{max-width:560px;margin-top:22px;color:#ffffffc7;font-size:18px;line-height:1.7}.login-card{align-self:center;width:min(360px,calc(100% - 48px));margin:0 auto;padding:28px;border:1px solid #dce3ea;border-radius:8px;background:#fff;box-shadow:0 18px 45px #17283614}.login-title{display:flex;gap:12px;align-items:center;margin-bottom:24px;color:#216044}.login-title h2,.login-title p{margin:0}.login-title p{margin-top:4px;color:#64748b;font-size:13px}.login-card label{display:grid;gap:8px;margin-bottom:14px;color:#334155;font-weight:700}.login-card input,.search-row input{height:42px;min-width:0;border:1px solid #d7dee7;border-radius:6px;padding:0 12px;outline:0;color:#1f2933;background:#fff}.login-card input:focus,.search-row input:focus{border-color:#4b9b6b;box-shadow:0 0 0 3px #4b9b6b1f}.primary,.ghost,.icon-btn,.pager button,.search-row button,.logout{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:6px;min-height:40px;padding:0 14px;font-weight:750}.primary{width:100%;margin-top:8px;color:#fff;background:#2f855a}button:disabled{opacity:.58;cursor:wait}.success{display:block;margin-top:14px;color:#2f855a}.error,.notice{color:#a63d3d}.admin-shell{min-height:100vh;display:grid;grid-template-columns:236px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:20px 14px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid #dce3ea;background:#172432;color:#dce8f2}.brand{display:flex;align-items:center;gap:11px;margin-bottom:24px;padding:8px 8px 18px;border-bottom:1px solid rgba(255,255,255,.1)}.brand span{width:42px;height:42px;display:grid;place-items:center;border-radius:8px;background:#2f855a;color:#fff}.brand b,.brand small{display:block}.brand small{margin-top:3px;color:#8ba1b4}.sidebar nav{display:grid;gap:7px}.sidebar nav button,.logout{width:100%;justify-content:flex-start;color:#cbd9e4;background:transparent}.sidebar nav button.active{color:#fff;background:#24384b}.logout{color:#f1b4b4}.content{min-width:0;padding:26px 32px 40px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.topbar p,.topbar h1{margin:0}.topbar p{color:#64748b;font-size:13px;font-weight:800}.topbar h1{margin-top:4px;color:#172432;font-size:30px;letter-spacing:0}.ghost,.icon-btn,.pager button{border:1px solid #d7dee7;color:#334155;background:#fff}.notice{margin:0 0 16px;padding:10px 12px;border:1px solid #efc6c6;border-radius:6px;background:#fff4f4}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric,.panel{border:1px solid #dce3ea;border-radius:8px;background:#fff;box-shadow:0 10px 30px #1728360d}.metric{padding:18px}.metric span{color:#64748b;font-size:13px;font-weight:700}.metric b{display:block;margin-top:8px;font-size:30px;line-height:1}.metric.green b{color:#2f855a}.metric.blue b{color:#2563eb}.metric.amber b{color:#c47b17}.workspace{display:grid;grid-template-columns:minmax(360px,.92fr) minmax(0,1.08fr);gap:18px;align-items:start}.panel{min-width:0;overflow:hidden}.panel-head{min-height:70px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e6ebf0}.panel-head h2,.panel-head p{margin:0}.panel-head h2{color:#172432;font-size:18px}.panel-head p{margin-top:4px;color:#64748b;font-size:13px}.search-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;padding:14px 18px;border-bottom:1px solid #e6ebf0}.search-row button{color:#fff;background:#2f855a}.table{display:grid;max-height:calc(100vh - 330px);overflow:auto}.table button{width:100%;min-height:68px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;border:0;border-bottom:1px solid #eef2f5;padding:12px 18px;color:#334155;background:#fff;text-align:left}.species-list button{grid-template-columns:minmax(0,1fr) auto}.table button.selected,.table button:hover{background:#f1f7f4}.avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#2f855a;font-weight:800}.avatar.large{width:58px;height:58px;font-size:24px}.table b,.mini-card b{display:block;color:#172432;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table small,.table em,.mini-card span,.profile p,.latin,.empty{color:#64748b;font-size:13px;font-style:normal}.pager{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;border-top:1px solid #e6ebf0;color:#64748b;font-size:13px}.detail-panel{padding-bottom:18px}.profile{display:flex;align-items:center;gap:14px;padding:18px}.profile h3,.species-detail h3{margin:0;color:#172432;font-size:23px}.profile p{margin:4px 0 0}.kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:0;margin:0 18px 18px;border:1px solid #e6ebf0;border-radius:6px;overflow:hidden}.kv span,.kv b{min-width:0;padding:10px 12px;border-bottom:1px solid #e6ebf0;overflow-wrap:anywhere}.kv span:nth-last-child(2),.kv b:last-child{border-bottom:0}.kv span{color:#64748b;background:#f8fafc;font-weight:750}.kv b{color:#334155}.split{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 18px}.split h3,.rich-text h4{margin:0 0 10px;color:#172432}.mini-card{margin-bottom:8px;padding:10px 12px;border:1px solid #e6ebf0;border-radius:6px;background:#fbfcfd}.species-detail>h3,.species-detail>.latin,.species-detail>.image-credit,.badge-row,.rich-text{margin-left:18px;margin-right:18px}.species-image{display:block;width:calc(100% - 36px);max-height:260px;margin:18px;border-radius:8px;object-fit:cover;background:#edf2f7}.image-credit{margin-top:6px;color:#64748b;font-size:12px}.latin{margin-top:4px}.badge-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;margin-bottom:18px}.badge-row span{padding:6px 10px;border-radius:999px;color:#24543b;background:#e7f4ec;font-size:12px;font-weight:750}.badge-row.inline{margin:0 0 8px}.rich-text{display:grid;gap:10px}.rich-text p{margin:0 0 8px;color:#334155;line-height:1.72;white-space:pre-wrap}.text-section{padding:12px 14px;border:1px solid #e6ebf0;border-radius:6px;background:#fbfcfd}.text-section b{display:block;margin-bottom:7px;color:#172432}.text-section ul{margin:8px 0 0;padding-left:20px;color:#334155;line-height:1.7}.text-section a{display:block;margin-top:8px;color:#2563eb;overflow-wrap:anywhere}.source-list{display:flex;flex-wrap:wrap;gap:8px}.source-list span{padding:7px 10px;border:1px solid #d7dee7;border-radius:6px;color:#334155;background:#fff;font-size:12px;font-weight:700}@media(max-width:1100px){.workspace{grid-template-columns:1fr}.table{max-height:520px}}@media(max-width:820px){.login-page,.admin-shell,.metrics,.split{grid-template-columns:1fr}.login-hero{min-height:320px;padding:40px 24px}.login-hero h1{font-size:38px}.sidebar{position:static;height:auto}.content{padding:22px 16px 32px}.topbar{align-items:flex-start;flex-direction:column}}
