:root{
    --bg:#eef2fb;
    --paper:#fcfdff;
    --line:#d8e1f0;
    --ink:#1d2a44;
    --ink-soft:#496182;
    --primary:#5b6f99;
    --primary-strong:#465b85;
    --success:#5e7d6a;
    --warning:#b4824e;
    --danger:#9e5d67;
    --queued:#c7d6ee;
    --running:#dae5f7;
    --done:#d9eadf;
    --stopped:#f1dde1;
}
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--ink)}
a{color:inherit}
button,input,select{font:inherit}
.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#edf2fb,#dde7f7)}
.login-wrap{width:100%;max-width:430px;padding:20px}
.login-card{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 12px 40px rgba(91,111,153,.12)}
.brand-mark,.logo-box{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#7187b5,#5b6f99);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:1px}
.login-card h1{margin:14px 0 6px;font-size:28px}
.muted{color:var(--ink-soft);line-height:1.5}
.login-form{display:grid;gap:10px;margin-top:16px}
.login-form label,.form-grid label{font-size:13px;font-weight:700;color:var(--ink)}
input,select{width:100%;padding:11px 12px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink)}
input:focus,select:focus{outline:none;border-color:#98add6;box-shadow:0 0 0 4px rgba(91,111,153,.12)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 14px;border-radius:12px;border:1px solid transparent;text-decoration:none;cursor:pointer;font-weight:700}
.btn-block{width:100%}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-strong));color:#fff}
.btn-soft{background:#f4f7fd;color:var(--ink);border-color:var(--line)}
.btn-warn{background:#fff7ef;color:#8b6a42;border-color:#e7d3ba}
.btn-sm{padding:7px 10px;border-radius:10px;font-size:12px}
.app-shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}
.sidebar{background:var(--paper);border-right:1px solid var(--line);padding:22px;display:flex;flex-direction:column;justify-content:space-between;gap:20px}
.sidebar h2{margin:12px 0 8px}
.side-nav{display:grid;gap:8px}
.side-link{padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:#f7f9fe;color:var(--ink);text-align:left;cursor:pointer;font-weight:700}
.side-link.active{background:linear-gradient(135deg,#e1e9f8,#eef3fc);border-color:#b9c8e3}
.sidebar-footer{display:grid;gap:10px}
.user-pill{padding:10px 12px;border-radius:12px;background:#f4f7fd;border:1px solid var(--line);font-weight:700}
.main-content{padding:24px}
.page-header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:16px;flex-wrap:wrap}
.page-header h1{margin:0 0 6px}
.top-actions{display:flex;gap:10px;flex-wrap:wrap}
.card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:16px;box-shadow:0 8px 25px rgba(73,97,130,.06)}
.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.helper-box{margin-top:12px;padding:12px;border-radius:12px;background:#f6f9ff;border:1px dashed #c9d5ea;color:var(--ink-soft)}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.summary-item{padding:14px;border-radius:16px;background:#f7fafe;border:1px solid var(--line)}
.summary-title{font-size:12px;color:var(--ink-soft);margin-bottom:6px}
.summary-value{font-size:28px;font-weight:800}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{padding:12px 10px;border-bottom:1px solid #e7edf7;text-align:left;font-size:14px;vertical-align:top}
th{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft)}
.badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}
.badge-queued{background:var(--queued);color:#56709c}
.badge-running{background:var(--running);color:#536b97}
.badge-done{background:var(--done);color:#4f725b}
.badge-stopped{background:var(--stopped);color:#8e5b66}
.action-stack{display:flex;flex-wrap:wrap;gap:8px}
.muted-inline{color:var(--ink-soft)}
.detail-box{display:grid;gap:10px}
.detail-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px dashed #e2e8f5}
.detail-row span{color:var(--ink-soft)}
.log-box{background:#eaf0fb;border:1px solid #d3ddef;border-radius:14px;min-height:280px;max-height:400px;overflow:auto;padding:14px;white-space:pre-wrap;font-family:Consolas,monospace;color:#324a72}
.alert{padding:12px 14px;border-radius:12px;margin-bottom:14px;font-weight:700}
.alert-success{background:#e8f1fb;border:1px solid #c8d8ef;color:#496182}
.alert-danger{background:#f6e8eb;border:1px solid #e7cbd1;color:#8d5a65}
.tab-pane{display:none}
.tab-pane.active{display:block}
@media (max-width: 1100px){
    .grid-2{grid-template-columns:1fr}
    .form-grid{grid-template-columns:repeat(2,1fr)}
    .summary-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 860px){
    .app-shell{grid-template-columns:1fr}
    .sidebar{border-right:none;border-bottom:1px solid var(--line)}
}
@media (max-width: 680px){
    .form-grid{grid-template-columns:1fr}
    .summary-grid{grid-template-columns:1fr}
}

.inline-group{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.inline-group .btn{white-space:nowrap}
