:root{--bg: #f4f5f7;--card: #ffffff;--border: #e2e5ea;--text: #1f2430;--muted: #7a8494;--accent: #2f6fed;--accent-text: #ffffff;--danger: #d64545;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}.app{min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--card);border-bottom:1px solid var(--border)}.brand{font-weight:700;font-size:1.15rem;color:var(--text);text-decoration:none}.content{max-width:960px;margin:1.5rem auto;padding:0 1rem}.center-screen{min-height:100vh;display:grid;place-items:center;padding:1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1.5rem}.login-card{width:min(360px,100%);display:flex;flex-direction:column;gap:.9rem}.stack{display:flex;flex-direction:column;gap:.9rem}label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--muted)}input{padding:.55rem .7rem;border:1px solid var(--border);border-radius:7px;font-size:1rem;color:var(--text)}input:focus{outline:2px solid var(--accent);border-color:var(--accent)}button,.button{display:inline-block;padding:.55rem 1rem;border:none;border-radius:7px;background:var(--accent);color:var(--accent-text);font-size:.95rem;font-weight:600;cursor:pointer;text-decoration:none}button:disabled{opacity:.55;cursor:default}button.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}button.danger{color:var(--danger);border-color:#f0c2c2}button.small,.small{padding:.3rem .6rem;font-size:.85rem}button.link{background:none;color:var(--muted);padding:0;font-weight:500}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.space-between{justify-content:space-between}.error{color:var(--danger);font-size:.9rem;margin:0}.muted{color:var(--muted)}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}table.jobs{width:100%;border-collapse:collapse;margin-top:1rem}table.jobs th,table.jobs td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--border);font-size:.92rem;vertical-align:top}table.jobs th{color:var(--muted);font-weight:600}.cell-details{max-width:340px}.details-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;word-break:break-word}.col-actions,.cell-actions{text-align:right;white-space:nowrap}.cell-actions{display:flex;gap:.5rem;justify-content:flex-end;align-items:center}code{font-size:.82rem}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600}.badge-queued{background:#eef1f6;color:#5a6478}.badge-running{background:#e5efff;color:#2f6fed}.badge-succeeded{background:#e6f6ec;color:#1f9d55}.badge-incomplete{background:#fff4e0;color:#b7791f}.badge-failed{background:#fde8e8;color:var(--danger)}.badge-cancelled{background:#eef1f6;color:#5a6478}.navlink{color:var(--muted);text-decoration:none;font-size:.92rem}.navlink:hover{color:var(--text)}.subtle{color:var(--muted);font-size:1rem;margin-top:.25rem}.warning{background:#fff4e0;border:1px solid #f0d9a8;color:#8a5a12;padding:.7rem .9rem;border-radius:8px;font-size:.9rem}.success-msg{color:#1f9d55;font-size:.9rem;margin:0}.disclaimer{border:1px solid var(--border);border-radius:8px;padding:1rem;background:#fafbfc;font-size:.88rem;max-height:320px;overflow-y:auto}.disclaimer h3{margin-top:0}.disclaimer ul{margin:.5rem 0;padding-left:1.2rem}.disclaimer li{margin-bottom:.3rem}.checkbox-row{flex-direction:row;align-items:flex-start;gap:.6rem;color:var(--text);margin-top:.75rem}.checkbox-row input{margin-top:.2rem;width:auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182180;display:grid;place-items:center;padding:1rem;z-index:50}.modal{background:var(--card);border-radius:12px;width:min(640px,100%);max-height:88vh;padding:1.5rem;display:flex;flex-direction:column;gap:.75rem;box-shadow:0 12px 40px #00000040}.modal h2{margin:0}.modal-body{overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:1rem;background:#fafbfc;font-size:.9rem}.modal-body ul{margin:.5rem 0;padding-left:1.2rem}.modal-body li{margin-bottom:.3rem}.hint{color:#b7791f;font-size:.85rem;margin:0}.modal-actions{margin-top:.25rem}@media (max-width: 720px){.content{margin:1rem auto}.card{padding:1rem}.topbar{padding:.65rem 1rem}table.jobs,table.jobs tbody,table.jobs tr,table.jobs td{display:block;width:100%}table.jobs thead{display:none}table.jobs{margin-top:.5rem}table.jobs tr{border:1px solid var(--border);border-radius:10px;padding:.25rem .85rem;margin-bottom:.85rem}table.jobs td{border-bottom:none;padding:.5rem 0;display:flex;gap:1rem;justify-content:space-between;align-items:flex-start}table.jobs td+td{border-top:1px solid var(--border)}table.jobs td:before{content:attr(data-label);font-weight:600;color:var(--muted);flex:0 0 8rem}.cell-details,.cell-actions{flex-direction:column;max-width:none}.cell-details:before,.cell-actions:before{flex:none;margin-bottom:.35rem}.cell-actions{align-items:flex-start;justify-content:flex-start}.details-text{-webkit-line-clamp:8}}
