.admin-body{min-height:100vh;background:linear-gradient(145deg,#070b15,#0d1324);color:#f7f9ff}
.admin-shell{width:min(1240px,calc(100% - 32px));margin:auto;padding:34px 0 70px}
.admin-card,.admin-panel,.admin-stat,.client-card{background:#0c1222;border:1px solid #202a43;border-radius:20px;box-shadow:0 24px 70px #0004}
.admin-login{max-width:460px;margin:8vh auto;padding:30px}.admin-brand{display:flex;align-items:center;gap:10px;font-weight:900;letter-spacing:.08em}
.admin-kicker,.admin-panel small,.admin-stat small,.view-heading small{font-size:.66rem;letter-spacing:.12em;color:#8693ad}
.admin-login h1,.view-heading h1{font-size:2.35rem;margin:.35em 0 .2em}.admin-login p{color:#94a0b8}.admin-form{display:grid;gap:16px;margin-top:24px}
.admin-form label{display:grid;gap:7px;font-size:.84rem;font-weight:700}.admin-form input,.admin-form select,.admin-form textarea,.admin-toolbar input,.admin-toolbar select{width:100%;padding:12px 13px;border-radius:12px;border:1px solid #25314b;background:#080d19;color:#fff;font:inherit;outline:none}
.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus,.admin-toolbar input:focus,.admin-toolbar select:focus{border-color:#7c5cff;box-shadow:0 0 0 3px #7c5cff26}
.admin-status{min-height:1.2em;color:#9de6ca;font-size:.85rem}.admin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.admin-top p{margin:4px 0 0;color:#8693ad}.admin-top-actions{display:flex;align-items:center;gap:8px}.admin-user{font-size:.8rem;color:#8c98af}
.admin-secondary,.admin-link{border:1px solid #2a3652;background:#11192c;color:#dce4f2;border-radius:11px;padding:9px 13px;font-weight:700;cursor:pointer;text-decoration:none}.admin-link{border:0;background:transparent;color:#91bdff}.danger-lite{color:#fda4af}
.admin-tabs{display:flex;gap:7px;overflow:auto;padding:5px;margin-bottom:22px;background:#090f1d;border:1px solid #1d2740;border-radius:14px}.admin-tab{border:0;background:transparent;color:#8693ad;padding:10px 14px;border-radius:10px;font-weight:750;cursor:pointer;white-space:nowrap}.admin-tab.active{background:#19213a;color:#fff}
.admin-view{display:none}.admin-view.active{display:block}.admin-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:20px}.admin-stat{padding:20px}.admin-stat strong{display:block;font-size:2rem;margin-top:5px}
.overview-grid,.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.admin-panel{padding:21px;margin-top:16px}.admin-panel-head,.view-heading{display:flex;justify-content:space-between;align-items:center}.admin-panel-head h2{margin:4px 0 12px}.view-heading{margin:12px 0 18px}
.card-list{display:grid;gap:8px}.mini-card{display:flex;justify-content:space-between;gap:14px;padding:13px;border:1px solid #1e2943;border-radius:13px;background:#090f1d}.mini-card>div{display:grid;gap:3px}.mini-card>div:last-child{text-align:right;justify-items:end}.mini-card b{font-size:.82rem}.mini-card span,.mini-card small{font-size:.72rem;color:#7f8ba4}.empty-state{color:#77849d}
.readiness-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.readiness-grid article{display:flex;gap:10px;align-items:center;padding:14px;background:#090f1d;border:1px solid #1e2943;border-radius:13px}.readiness-grid b,.readiness-grid span{display:block}.readiness-grid span{font-size:.72rem;color:#7f8ba4}.ready-dot,.todo-dot{width:10px;height:10px;border-radius:50%}.ready-dot{background:#43d6a4;box-shadow:0 0 0 6px #43d6a41a}.todo-dot{background:#f6b84b;box-shadow:0 0 0 6px #f6b84b16}
.admin-toolbar{display:flex;gap:10px;margin-bottom:14px}.admin-toolbar input{flex:1}.admin-toolbar select{width:190px}.admin-table-wrap{overflow:auto;border:1px solid #1c263d;border-radius:14px}table{width:100%;border-collapse:collapse;min-width:980px;background:#090f1d}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid #1d2740;vertical-align:top}th{font-size:.66rem;letter-spacing:.08em;color:#8491aa;background:#0b1222;position:sticky;top:0}td{font-size:.79rem;color:#d9e0ec}td a{color:#8fc7ff}.muted-cell{color:#7f8ba4;max-width:260px}.empty-row td{text-align:center;color:#7f8ba4;padding:25px}
.status,.status-button{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:.65rem;font-weight:800;border:1px solid #293551;background:#11192c;color:#b8c3d7}.status-button{cursor:pointer}.s-new,.s-paid{color:#8fc7ff;border-color:#2b5793;background:#0d203b}.s-reviewing,.s-queued,.s-follow_up{color:#f7cb76;border-color:#725724;background:#2b220e}.s-preview_sent,.s-in_progress{color:#c2a5ff;border-color:#5e439a;background:#21183f}.s-won,.s-ready,.s-delivered{color:#81dfbd;border-color:#276d59;background:#0d2d25}.s-lost,.s-refunded,.s-cancelled{color:#f6a4b3;border-color:#78374a;background:#31131d}.s-closed{color:#9ba7bd}
.client-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.client-card{padding:18px;display:grid;grid-template-columns:auto 1fr;gap:12px;position:relative}.client-avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#7759ff,#2fc9d9);font-weight:900}.client-main{display:grid;gap:3px}.client-main span,.client-main small{font-size:.74rem;color:#7f8ba4}.client-metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.client-metrics div{padding:10px;background:#090f1d;border:1px solid #1e2943;border-radius:11px}.client-metrics small,.client-metrics b{display:block}.client-metrics small{font-size:.56rem;color:#72809a}.client-statuses{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap}.client-date{grid-column:1/-1;color:#6f7c95}
.activity-list{display:grid}.activity-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:13px 3px;border-bottom:1px solid #1d2740}.activity-item>i{width:8px;height:8px;border-radius:50%;background:#7759ff;margin-top:6px}.activity-item b{font-size:.8rem}.activity-item p{margin:2px 0;color:#7f8ba4;font-size:.74rem}.activity-item>small{color:#6f7c95;font-size:.68rem}
.system-list{display:grid}.system-row{display:grid;grid-template-columns:1fr 1.5fr auto;gap:10px;padding:11px 0;border-bottom:1px solid #1d2740}.system-row span{color:#8390a9}.system-row b{font-size:.8rem;word-break:break-all}.system-row i{font-style:normal;font-size:.58rem;font-weight:900}.system-row i.ok{color:#75d9b6}.system-row i.warn{color:#f4c16d}.settings-note{color:#7f8ba4;font-size:.78rem}
.admin-dialog{width:min(520px,calc(100% - 28px));border:1px solid #27324d;border-radius:20px;padding:25px;background:#0b1222;color:#fff;box-shadow:0 35px 100px #000a}.admin-dialog::backdrop{background:#02050bbd;backdrop-filter:blur(5px)}.dialog-x{position:absolute;right:14px;top:10px;border:0;background:transparent;color:#7f8ba4;font-size:1.8rem;cursor:pointer}.admin-dialog h2{margin:.2em 0}.admin-dialog>small{color:#7c89a2;font-size:.65rem}
@media(max-width:980px){.admin-grid{grid-template-columns:repeat(2,1fr)}.overview-grid,.settings-grid,.client-grid{grid-template-columns:1fr}.readiness-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.admin-shell{width:min(100% - 20px,1240px)}.admin-top{align-items:flex-start;gap:15px}.admin-top-actions{flex-wrap:wrap;justify-content:flex-end}.admin-grid,.readiness-grid{grid-template-columns:1fr}.admin-toolbar{flex-direction:column}.admin-toolbar select{width:100%}.view-heading{align-items:flex-start}.mini-card{flex-direction:column}.mini-card>div:last-child{text-align:left;justify-items:start}}

.agent-dot.working{background:#52dfa8;box-shadow:0 0 0 4px #52dfa817}.agent-dot.error{background:#f47487}

.job-fail-reason{color:#ff9d9d;font-weight:600}

.status.s-warning{color:#ffd166;border-color:#7a5a19;background:#241b08}

/* These classes were emitted by admin.js for failures, blocked candidates and optional
   connectors but had no rules, so an error rendered in the same neutral grey as a success. */
.status.s-error,i.s-error{color:#c0392b}
.status.s-awaiting_payment{color:#8a5a12}

.admin-status.s-error{color:#c0392b}

/* A setting the environment holds shut. The checkbox used to save a value the runtime then
   overwrote, so it had to look live; now it reads as locked and names what decides it. */
.env-locked{opacity:.62}
.env-locked input:disabled,.env-locked select:disabled{cursor:not-allowed}
.env-lock-note{display:block;margin-top:.35rem;font-size:.72rem;line-height:1.35;color:#f0b429}

.derived-field input[readonly]{opacity:.6;cursor:default;background:rgba(255,255,255,.02)}
.derived-note{display:block;margin-top:.3rem;font-size:.7rem;color:#8fa3bf}

