:root{--bg: #0f1419;--panel: #1a222c;--line: #2a3542;--text: #e8eef4;--muted: #93a4b5;--accent: #3d9cf0;--ok: #3ecf8e;--warn: #e6b84d;--bad: #e85d5d;font-family:Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 600px at 10% -10%,#1a2a3a,var(--bg));color:var(--text);min-height:100vh}a{color:var(--accent);text-decoration:none}.layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.nav{background:#1a222cf2;border-right:1px solid var(--line);padding:1.25rem 1rem}.nav h1{font-size:1rem;margin:0 0 1rem;letter-spacing:.04em}.nav a{display:block;padding:.55rem .7rem;border-radius:8px;color:var(--text);margin-bottom:.25rem}.nav a.active,.nav a:hover{background:#243041}.main{padding:1.5rem 2rem}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem 1.15rem;margin-bottom:1rem}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.stat .label{color:var(--muted);font-size:.85rem}.stat .value{font-size:1.6rem;font-weight:650;margin-top:.25rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.55rem .4rem;border-bottom:1px solid var(--line);font-size:.92rem}th{color:var(--muted);font-weight:560}input,select,textarea,button{font:inherit;border-radius:8px;border:1px solid var(--line);background:#121820;color:var(--text);padding:.55rem .7rem}button{background:var(--accent);border-color:transparent;color:#041018;font-weight:650;cursor:pointer}button.secondary{background:#2a3542;color:var(--text)}button.danger{background:var(--bad);color:#fff}button:disabled{background:#2a3542;color:var(--muted);border-color:var(--line);opacity:1;cursor:not-allowed}button.danger:disabled{background:#2a3542;color:var(--muted)}.form label{display:grid;gap:.35rem;color:var(--muted);font-size:.9rem}.row{display:flex;gap:.6rem;flex-wrap:wrap}.error{color:var(--bad);margin:.5rem 0}.warn-banner{color:var(--warn);margin:.5rem 0;padding:.65rem .75rem;border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);background:color-mix(in srgb,var(--warn) 12%,transparent);border-radius:6px;line-height:1.45}.ok{color:var(--ok)}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .55rem;border-radius:999px;background:#243041;font-size:.78rem;font-weight:560;line-height:1.2;vertical-align:middle;white-space:nowrap;max-width:100%}.badge.badge-wrap{white-space:normal;text-align:left;border-radius:8px;line-height:1.35}.badge.succeeded,.badge.Started{background:#1d3d30;color:var(--ok)}.badge.Starting{background:#3d341d;color:var(--warn)}.badge.Shut-down{background:#2a3542;color:var(--muted)}.badge.Expired{background:#3d1d1d;color:var(--bad)}.badge.Unknown{background:#243041;color:var(--muted)}.badge.failed_before_publish,.badge.failed_after_publish{background:#3d1d1d;color:var(--bad)}.badge.uncertain_after_publish{background:#3d341d;color:var(--warn)}.badge.cleanup_failed{background:#3d2a1d;color:var(--warn)}.badge.partial{background:#3d341d;color:var(--warn)}.badge.scheduled{background:#1d2f3d;color:#8ec8ef}.badge.queued{background:#243041;color:#c5d4e4}.badge.batch_pending{background:#2a2f3d;color:#b8c4d4}.badge.starting{background:#3d341d;color:var(--warn)}.badge.running{background:#1d3a4d;color:#7ec8f0}.badge.canceled,.badge.cancelled{background:#2a3542;color:var(--muted)}.badge.failed{background:#3d1d1d;color:var(--bad)}.form{display:grid;gap:.75rem;max-width:560px}.form.form-manager{max-width:640px}.publish-lead{max-width:640px;margin:0 0 1rem;line-height:1.45}.manager-job-summary .manager-summary-grid{margin-top:0;margin-bottom:.75rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,11.5rem),1fr))}.manager-job-summary .detail-row,.manager-job-summary .detail-value{min-width:0}.manager-job-summary .detail-value{overflow-wrap:break-word}.manager-job-summary .badge{max-width:100%;box-sizing:border-box}.manager-status-explanation{margin:0 0 .65rem;color:var(--warn);font-size:.92rem;line-height:1.4}.manager-job-summary .next-step{margin:.35rem 0 .5rem}.manager-job-summary .manager-actions{margin-top:.5rem}@media(max-width:720px){.manager-job-summary .manager-summary-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr))}}@media(max-width:480px){.manager-job-summary .manager-summary-grid{grid-template-columns:1fr}}.jobs-manager-list{display:grid;gap:.65rem}.job-card-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.85rem 1.25rem;padding:.75rem .85rem;border:1px solid var(--line);border-radius:10px;background:#151c25}.job-card-main{min-width:0;flex:1;display:grid;gap:.35rem}.job-card-title{font-weight:600;font-size:.95rem;word-break:break-word}.job-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .65rem}.job-card-times{display:flex;flex-wrap:wrap;gap:.25rem 1rem;color:var(--muted);font-size:.8rem}.job-card-error{margin:.15rem 0 0;color:var(--bad);font-size:.85rem;line-height:1.35}.job-card-link{flex-shrink:0;align-self:center;font-size:.9rem;font-weight:600}.account-picker{border:1px solid var(--line);border-radius:10px;padding:.75rem .9rem .9rem;margin:0}.account-picker-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;margin-bottom:.65rem}.account-selection-count{color:var(--text);font-size:.9rem;font-weight:560}.account-picker-toolbar .row{margin:0;gap:.4rem}.account-picker-toolbar button{font-size:.85rem;padding:.35rem .65rem}.account-picker legend{color:var(--muted);font-size:.9rem;padding:0 .35rem}.account-checklist{display:grid;gap:.4rem;max-height:280px;overflow-y:auto;padding-right:.15rem}.account-check{display:grid;grid-template-columns:1.15rem 1fr;gap:.65rem;align-items:start;margin:0;padding:.55rem .65rem;border:1px solid var(--line);border-radius:8px;background:#121820;color:var(--text);font-size:.92rem;cursor:pointer}.form label.account-check{display:grid;grid-template-columns:1.15rem 1fr;gap:.65rem;color:var(--text);font-size:.92rem}.account-check.selected{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 10%,#121820)}.account-check.disabled{opacity:.55;cursor:not-allowed}.account-check input{width:1.05rem;height:1.05rem;margin:.12rem 0 0;accent-color:var(--accent);cursor:inherit}.account-check-body{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .65rem;min-width:0}.account-check-email{word-break:break-word;line-height:1.35}.account-avail-badge{display:inline-flex;align-items:center;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:560;background:#243041;color:var(--muted)}.account-avail-badge.ok{background:#1d3d30;color:var(--ok)}.account-picker-hint{margin:0 0 .55rem}.account-device-group{display:grid;gap:.35rem;margin-bottom:.65rem}.account-device-group:last-child{margin-bottom:0}.account-device-group-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem .75rem;padding:.15rem .15rem .25rem}.account-device-name{font-weight:600;font-size:.9rem}.execution-order{margin-top:.75rem;padding-top:.55rem;border-top:1px solid var(--line)}.execution-order-title{margin:0 0 .35rem;color:var(--muted);font-size:.85rem}.execution-order ol{margin:0;padding-left:1.2rem;color:var(--text);font-size:.88rem}.execution-order li{margin:.15rem 0}.account-outcomes{display:grid;gap:.35rem;margin-top:.65rem}.account-outcome-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .65rem;font-size:.88rem}.account-outcome-mark{width:1.1rem;text-align:center;font-weight:700}.job-card-summary{color:var(--muted);font-size:.8rem}.publish-schedule-section{display:grid;gap:.65rem;margin:0;padding:.7rem .8rem .85rem;border:1px solid color-mix(in srgb,var(--line) 85%,transparent);border-radius:10px;background:color-mix(in srgb,#121820 70%,transparent)}.publish-schedule-title{margin:0;color:var(--muted);font-size:.9rem;font-weight:560}.publish-mode-options{display:grid;gap:.4rem}.form .publish-mode-option,.publish-mode-option{display:flex;align-items:center;gap:.65rem;margin:0;min-height:2.5rem;padding:.45rem .65rem;border:1px solid var(--line);border-radius:8px;background:#121820;color:var(--text);font-size:.95rem;cursor:pointer;line-height:1.3}.publish-mode-option:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.publish-mode-option.is-selected{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 10%,#121820)}.publish-mode-option:focus-within{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px}.publish-mode-option input[type=radio]{width:1.05rem;height:1.05rem;margin:0;flex-shrink:0;accent-color:var(--accent);cursor:inherit}.publish-mode-option span{color:var(--text)}.schedule-fields{display:grid;gap:.75rem;margin-top:.15rem}.schedule-field{display:grid;gap:.35rem;max-width:100%}.form .schedule-field>label,.schedule-field>label{display:block;margin:0;color:var(--muted);font-size:.85rem;font-weight:560}.schedule-field input[type=text],.schedule-field select.timezone-select{width:100%;max-width:100%}.date-input-row{position:relative;display:flex;align-items:stretch;gap:.45rem;width:100%}.date-input-row input[type=text]{flex:1;min-width:0}.date-calendar-btn{display:inline-flex;align-items:center;justify-content:center;width:2.6rem;min-width:2.6rem;height:auto;padding:0;background:#2a3542;color:var(--text);border:1px solid var(--line);border-radius:8px;flex-shrink:0}.date-calendar-btn:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent)}.date-calendar-btn:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px}.date-native-picker-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0;pointer-events:none}.timezone-select{width:100%}.timezone-current-time{margin-top:.15rem}.publish-submit-row{margin-top:.25rem}.publish-submit-btn{background:var(--accent);border-color:transparent;color:#041018}.publish-submit-btn:disabled{background:#2a3542;color:var(--muted);border-color:var(--line);cursor:not-allowed}.schedule-fieldset{border:1px solid #2a3542;border-radius:8px;padding:.75rem 1rem 1rem;margin:0}.schedule-fieldset legend{padding:0 .35rem;color:var(--muted);font-size:.9rem}.radio-row{display:flex;align-items:center;gap:.5rem;margin:.35rem 0;color:var(--text);font-size:.95rem}.form label.radio-row{display:flex}@media(max-width:560px){.publish-schedule-section{padding:.6rem .65rem .75rem}.date-calendar-btn{width:2.45rem;min-width:2.45rem}.publish-mode-option{min-height:2.35rem}}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{width:min(400px,92vw)}pre.log{background:#0b1016;border:1px solid var(--line);border-radius:8px;padding:.75rem;max-height:280px;overflow:auto;white-space:pre-wrap;font-size:.8rem}.muted{color:var(--muted)}.tiny{font-size:.75rem;margin-top:.15rem}.table-scroll{overflow-x:auto}.table-compact th,.table-compact td{font-size:.8rem;padding:.4rem .35rem;white-space:nowrap}.table-compact .error-cell{max-width:12rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--bad)}.detail-grid{display:grid;gap:.55rem 1.25rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));margin-top:.75rem}.detail-row{display:grid;gap:.15rem;min-width:0}.detail-label{color:var(--muted);font-size:.8rem}.detail-value{font-size:.92rem;word-break:break-word;min-width:0}.field-hint{display:block;margin-top:.35rem;color:var(--muted);font-size:.8rem}.info-box{background:#121820;border:1px solid var(--line);border-radius:8px;padding:.65rem .75rem;white-space:pre-wrap;color:var(--ok);font-size:.9rem}.live-log.manager-view .live-line{grid-template-columns:5.5rem 1fr}.live-log-card{padding-bottom:.75rem}.live-log-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.live-log-header h3{margin:0}.conn-state{font-size:.8rem;padding:.2rem .55rem;border-radius:999px;background:#243041;color:var(--muted)}.conn-live,.conn-completed{background:#1d3d30;color:var(--ok)}.conn-connecting,.conn-reconnecting{background:#3d341d;color:var(--warn)}.conn-polling-fallback{background:#2a3542;color:var(--accent)}.conn-disconnected{background:#3d1d1d;color:var(--bad)}.live-log-toolbar{margin-bottom:.75rem}.live-log-shell{position:relative}.live-log{background:#0b1016;border:1px solid var(--line);border-radius:8px;height:min(60vh,640px);max-height:65vh;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.78rem;line-height:1.45;scrollbar-gutter:stable}.live-log-empty{padding:1rem;color:var(--muted)}.live-log-jump{position:absolute;right:.85rem;bottom:.85rem;z-index:2;box-shadow:0 4px 16px #00000073;border:1px solid #4a9fd8;background:#1a5f96;color:#f2f8ff;font-weight:650;font-size:.82rem;padding:.45rem .75rem;max-width:calc(100% - 1.7rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-log-jump:hover{background:#2270ad}.live-line{display:grid;grid-template-columns:5.5rem 11rem 1fr;gap:.5rem;padding:.2rem .65rem;border-bottom:1px solid #141b24}.live-ts{color:var(--muted)}.live-meta{color:#7f93a8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-msg{white-space:pre-wrap;word-break:break-word}.live-line.kind-stdout .live-msg{color:#c8e6c9}.live-line.kind-stderr .live-msg{color:#ffab91}.live-line.level-error .live-msg{color:var(--bad)}.live-line.level-warning .live-msg{color:var(--warn)}.live-line.level-success .live-msg{color:var(--ok)}.live-line.level-step .live-meta{color:var(--accent)}.tabs{margin-bottom:.75rem}@media(max-width:800px){.layout{grid-template-columns:1fr}.nav{border-right:none;border-bottom:1px solid var(--line)}.live-line{grid-template-columns:1fr;gap:.1rem}.live-log{height:min(55vh,480px);max-height:60vh}.live-log-jump{left:.85rem;right:.85rem;max-width:none;white-space:normal}}
