:root{--charcoal: #1a2018;--slate: #4e4a46;--forest: #405746;--line: #a8a29e;--paper: #f0f0e8;--surface: #f5f4ec;--ok: #405746;--danger: #8a3e36;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Inter,sans-serif;color:var(--charcoal);background:var(--paper)}h1,h2,h3{margin:0;font-family:Newsreader,serif;font-weight:600;letter-spacing:-.015em;color:var(--charcoal)}p{margin:0}.shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr}.sidebar{border-right:1px solid var(--line);background:var(--surface);padding:var(--space-7) var(--space-6);display:grid;grid-template-rows:auto 1fr auto;gap:var(--space-6)}.sidebar-eyebrow,.page-eyebrow,.metric-label,th{font-family:Inter,sans-serif;font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}.sidebar-title{margin-top:var(--space-2);font-size:1.9rem;line-height:.98}.sidebar-user{margin-top:var(--space-2);color:var(--slate);font-size:.92rem}.sidebar-nav{display:grid;gap:var(--space-2);align-content:start}.sidebar-logout{align-self:end}.sidebar-nav-link{border:1px solid transparent;color:var(--charcoal);text-decoration:none;padding:10px 12px;font-size:.9rem;transition:transform .14s ease,border-color .14s ease,background-color .14s ease,opacity .14s ease}.sidebar-nav-link:hover{transform:translateY(-1px);border-color:var(--line);background:#4057460d}.sidebar-nav-link-active{border-color:var(--forest);background:#4057461a;color:var(--charcoal)}.shell-content{position:relative;background:linear-gradient(to right,rgba(168,162,158,.3) 1px,transparent 1px),linear-gradient(to bottom,rgba(168,162,158,.3) 1px,transparent 1px);background-size:40px 40px}.page-content{position:relative;z-index:1;padding:var(--space-7);display:grid;gap:var(--space-4)}.page-header,.panel,.metric-card,.login-card{border:1px solid var(--line);background:var(--surface)}.page-header{padding:var(--space-5);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-4)}.page-header h2{margin-top:var(--space-2);font-size:clamp(1.5rem,1.15rem + 1.2vw,2.2rem)}.page-subtitle,.page-meta,.panel-meta,.muted-text,.meta-list span,.config-field small{color:var(--slate);overflow-wrap:anywhere}.page-meta{display:grid;gap:var(--space-2);justify-items:end;align-content:start;font-size:.88rem}.cards-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-3)}.metric-card{padding:var(--space-4);transition:transform .14s ease,opacity .14s ease}.metric-card:hover{transform:translateY(-1px)}.metric-value{margin-top:var(--space-2);font-size:1.7rem;line-height:1}.panel{padding:var(--space-5)}.split-panel{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.split-panel h3{margin-bottom:var(--space-3);font-size:1.2rem}.meta-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}.meta-list li{display:grid;grid-template-columns:1fr auto;gap:var(--space-3);border:1px solid var(--line);padding:var(--space-2) var(--space-3);align-items:center}.table-panel{padding:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:840px}th,td{border:1px solid var(--line);padding:10px;text-align:left;vertical-align:top}th{background:#a8a29e2e}td{font-size:.9rem}.status-tag{border:1px solid var(--line);padding:2px 8px;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--charcoal);background:#a8a29e1f}.status-live,.status-running,.status-completed{border-color:var(--forest);color:var(--forest);background:#4057461a}.status-failed{border-color:var(--danger);color:var(--danger);background:#8a3e3614}.config-form{display:grid;gap:var(--space-4)}.config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);align-items:start}.config-field{display:grid;gap:var(--space-2)}input{width:100%;border:1px solid var(--line);background:#fff;color:var(--charcoal);font:inherit;padding:10px}input:focus{outline:none;border-color:var(--forest);box-shadow:0 0 0 1px var(--forest)}.button{border:1px solid var(--forest);background:var(--forest);color:var(--paper);padding:10px 14px;font:600 .84rem/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:transform .12s ease,opacity .12s ease,background-color .12s ease}.button:hover{transform:translateY(-1px);opacity:.94}.button:disabled{opacity:.45;cursor:not-allowed;transform:none}.button-secondary{border-color:var(--line);background:transparent;color:var(--charcoal)}.login-page{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:linear-gradient(to right,rgba(168,162,158,.25) 1px,transparent 1px),linear-gradient(to bottom,rgba(168,162,158,.25) 1px,transparent 1px),var(--paper);background-size:44px 44px,44px 44px,auto}.login-glow{display:none}.login-card{width:min(500px,100%);padding:var(--space-6);display:grid;gap:var(--space-4)}.login-card h1{font-size:clamp(1.8rem,1.35rem + 1.5vw,2.5rem);line-height:.98}.login-subtitle{color:var(--slate)}.login-form{display:grid;gap:var(--space-2)}.centered-state,.centered-panel{min-height:220px;display:grid;place-items:center;text-align:center}.spinner{width:24px;height:24px;border-radius:50%;border:2px solid rgba(64,87,70,.2);border-top-color:var(--forest);animation:spin .9s linear infinite}.ok-text{color:var(--ok)}.error-text{color:var(--danger)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.cards-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:980px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);grid-template-rows:auto auto auto;gap:var(--space-4)}.sidebar-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.page-content{padding:var(--space-5)}.page-header{grid-template-columns:1fr}.page-meta{justify-items:start}.cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-panel,.config-grid{grid-template-columns:1fr}}@media(max-width:640px){.sidebar-nav,.cards-grid{grid-template-columns:1fr}.panel,.page-header,.login-card{padding:var(--space-4)}}
