:root{color-scheme:light;--ink:#172943;--teal:#23776d;--line:#dfe7ed;--pale:#f5f8fa}*{box-sizing:border-box}body{margin:0;background:var(--pale);font-family:system-ui,'Segoe UI',sans-serif;color:#213448}header{background:#15273e;color:white;display:flex;align-items:center;gap:22px;padding:14px 24px;justify-content:space-between}header form{margin:0}nav{display:flex;flex-wrap:wrap;background:white;border-bottom:1px solid var(--line);padding:14px 22px;gap:18px}nav a{color:#195b56;text-decoration:none;font-weight:600;font-size:13px}main{margin:24px auto;max-width:1420px;padding:0 22px 60px}h1{font-size:26px}h2{font-size:18px}h3{font-size:15px;margin-top:25px}.muted{color:#617486;font-size:13px}section,.tiles>div{background:white;border:1px solid var(--line);border-radius:12px;padding:18px;margin:20px 0;box-shadow:0 1px 3px #142b3910}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.tiles>div{margin:0}.tiles small{color:#728295}.tiles h2{font-size:32px;margin:5px 0;color:var(--teal)}table{width:100%;border-collapse:collapse;font-size:13px}td,th{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left}th{background:#ecf5f4}td{vertical-align:middle}.tablewrap{overflow-x:auto}input,select,button{font:inherit;border:1px solid #b9cbd0;border-radius:6px;padding:8px 9px;margin:4px 5px 4px 0}label{display:inline-flex;flex-direction:column;font-size:13px;font-weight:600;margin:5px 10px 8px 0}button{background:var(--teal);color:white;border:0;cursor:pointer;padding:9px 14px;font-weight:600}button:hover{background:#12584f}button.small{font-size:12px;padding:6px 8px}.mono{font-family:Consolas,monospace;font-size:12px}.tag{background:#e4f4ef;padding:4px 7px;border-radius:20px}.actions{display:flex;gap:8px}.actions form{white-space:nowrap;display:flex}.actions input[type=time]{width:96px}.checks{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.scrollchecks{max-height:235px;overflow:auto;border:1px solid var(--line);padding:12px;border-radius:8px}.check{display:flex;flex-direction:row;align-items:center;font-weight:400;gap:8px;padding:4px}.check input{margin:0}.alert,.notice{padding:13px;border-radius:7px;margin:12px 0}.alert{color:#942f26;background:#ffeae8}.notice{background:#e6f5e9;color:#166a38}.loginbody{height:100vh;display:flex;align-items:center;justify-content:center}.loginbox{background:white;padding:32px;border-radius:14px;width:min(420px,94vw);border:1px solid var(--line)}.loginbox h1{color:#1f756e}.loginbox input{display:block;width:100%;margin:7px 0 14px}.loginbox label{display:block}.loginbox button{width:100%}@media(max-width:800px){.tiles{grid-template-columns:repeat(2,1fr)}.checks{grid-template-columns:1fr}nav{gap:8px}main{padding:0 12px}.actions{flex-direction:column}}

/* V1.0.4 - antrean tunggal/identitas staff/notifikasi */
button:disabled{background:#a3b5b4;color:#f4f8f7;cursor:not-allowed;opacity:.85}
.job-lock{display:inline-block;padding:6px 8px;border-radius:6px;background:#fff0cc;color:#76500a;font-size:11px;font-weight:700;white-space:nowrap}
.job-info{padding:12px 14px;border:1px solid #c9e4ff;background:#eef6ff;color:#174f7c;border-radius:9px;margin:10px 0}
.job-alert{padding:12px 14px;border:1px solid #ffcbc6;background:#fff1ef;color:#9c2f25;border-radius:9px;margin:10px 0}
.job-state{font-size:11px;font-weight:750;border-radius:18px;display:inline-block;padding:6px 10px;white-space:nowrap}
.state-queued{color:#7a5000;background:#fff1cb}
.state-processing{color:#164f91;background:#e6f0ff}
.state-done{color:#176b48;background:#dbf6e8}
.state-failed{color:#9f251b;background:#ffe2df}
.job-failed{background:#fff7f6}
.job-done{background:#f9fffb}
.jobs-table td{vertical-align:top}
.jobs-table td small{display:block;font-size:11px;color:#6c7f91;margin-top:5px;line-height:1.5}
.jobs-table td .fail-line{font-size:12px;color:#9e2d23;overflow-wrap:anywhere}
.jobs-table td .ok-line{color:#166e4b;font-weight:700}
.jobs-table th{white-space:nowrap}


/* FP REELS WEB PANEL V1.0.5 — lightweight, spacious jobs view */
.jobs-view{--j-ink:#142c40;--j-muted:#63778a;--j-border:#e3ebf1;--j-accent:#1e7d73;color:var(--j-ink)}
.jobs-view .jobs-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:3px 0 23px}
.jobs-view .jobs-heading h1{font-size:clamp(24px,2.7vw,32px);line-height:1.2;margin:3px 0 9px;letter-spacing:-.7px}
.jobs-eyebrow{margin:0;color:#28756d;font-size:11px;font-weight:800;letter-spacing:1.3px}
.jobs-subtitle{font-size:13px;line-height:1.65;color:var(--j-muted);margin:0}
.jobs-heading-side{display:flex;align-items:flex-end;flex-direction:column;gap:8px;text-align:right;flex-shrink:0}
.jobs-refresh-indicator{padding:9px 12px;font-size:12px;background:#e5f5ef;border:1px solid #cde9df;color:#236e52;border-radius:40px;font-weight:750}
.jobs-subhint{font-size:11px;color:var(--j-muted)}
.jobs-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:0 0 20px}
.jobs-stat{min-width:0;background:#fff;border:1px solid var(--j-border);border-radius:14px;padding:19px 21px;box-shadow:0 2px 11px rgba(15,36,53,.035);display:flex;flex-direction:column;gap:4px}
.jobs-stat-label{color:#617586;font-size:12px;font-weight:700}
.jobs-stat strong{font-size:30px;font-weight:800;letter-spacing:-1px;color:#153647;font-variant-numeric:tabular-nums;line-height:1.25}
.jobs-stat-foot{font-size:11px;color:#8c9aa7}
.jobs-notice,.jobs-warning{padding:11px 15px;border-radius:9px;margin:10px 0 14px;font-size:12px;line-height:1.6}
.jobs-notice{color:#24577e;border:1px solid #cbe1f4;background:#f0f7fe}
.jobs-warning{color:#974327;border:1px solid #f3d2bc;background:#fff5eb}
.jobs-view section.jobs-panel{padding:0;margin:0;background:#fff;box-shadow:0 3px 15px rgba(15,36,53,.035);border:1px solid var(--j-border);border-radius:15px;overflow:hidden}
.jobs-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px 12px}
.jobs-panel-head h2{font-size:17px;margin:0 0 5px;letter-spacing:-.2px}
.jobs-panel-head p{color:var(--j-muted);font-size:12px;margin:0}
.jobs-total{font-size:11px;border:1px solid #d7e5e4;border-radius:100px;background:#f0f8f6;color:#27756b;font-weight:700;white-space:nowrap;padding:6px 11px}
.jobs-filters{display:flex;align-items:end;gap:12px;padding:6px 24px 20px;flex-wrap:wrap}
.jobs-filters label{font-size:11px;color:#65798a;font-weight:650;margin:0;gap:5px}
.jobs-filters input,.jobs-filters select{border:1px solid #d6e2e9;background:#fff;border-radius:9px;font-size:12px;min-height:37px;padding:7px 11px;margin:0;color:#19384c}
.jobs-search-label{flex:1;min-width:190px}.jobs-search-label input{width:100%}.jobs-filter-label{min-width:145px}.jobs-filter-label select{width:100%}
.jobs-refresh-link{text-decoration:none;padding:10px 12px;border:1px solid #d7e4e8;border-radius:9px;font-size:12px;font-weight:750;color:#2a6964;white-space:nowrap;line-height:17px}
.jobs-refresh-link:hover{background:#f1f8f6}
.jobs-scroll{overflow-x:auto}
.jobs-modern{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;min-width:940px;table-layout:fixed}
.jobs-modern th{background:#f2f7f8;font-size:10px;color:#617987;font-weight:800;letter-spacing:.45px;padding:13px 15px;text-align:left;border-bottom:1px solid #e4ebf0}
.jobs-modern th:nth-child(1){width:13%}.jobs-modern th:nth-child(2){width:17%}.jobs-modern th:nth-child(3){width:17%}.jobs-modern th:nth-child(4){width:22%}.jobs-modern th:nth-child(5){width:13%}.jobs-modern th:nth-child(6){width:18%}
.jobs-modern td{padding:17px 15px;vertical-align:middle;border-bottom:1px solid #edf1f5;overflow-wrap:anywhere}
.jobs-modern tr:last-child td{border-bottom:0}.jobs-modern .jobs-item:hover td{background:#fbfdfe}
.jobs-id{font-variant-numeric:tabular-nums}.jobs-id strong{display:block;font-size:13px;color:#254e5b}.jobs-id span{display:block;color:#8797a5;font-size:10px;margin-top:5px;white-space:normal}
.jobs-fp strong{display:block;color:#173e4b;font-size:12px;line-height:1.45}.jobs-fp span{font-size:10px;color:#6c8991;display:block;margin-top:5px}
.jobs-actor{display:flex;align-items:center;gap:9px;min-width:0}.jobs-avatar{display:grid;place-items:center;flex:0 0 29px;height:29px;border-radius:9px;background:#dceeea;color:#1e756b;font-size:12px;font-weight:800}
.jobs-actor strong{display:block;font-size:12px;line-height:1.3}.jobs-actor div>span{display:block;color:#74889a;font-size:10px;margin-top:5px}
.jobs-action strong{display:block;font-size:12px;color:#294c5a;font-weight:700;margin-bottom:6px}.jobs-change{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.jobs-old{color:#657b8a;font-variant-numeric:tabular-nums;font-size:11px}.jobs-new{font-size:12px;font-weight:800;color:#147a65;border-radius:6px;background:#e5f5ef;padding:4px 7px;font-variant-numeric:tabular-nums}
.jobs-arrow{font-size:15px;color:#8e9dab}.jobs-file{font-size:11px;color:#5d7a8c;display:block;overflow-wrap:anywhere;max-height:3.4em;overflow:hidden;line-height:1.7}
.jobs-muted{display:block;color:#8496a5;font-size:11px}.jobs-badge{white-space:nowrap;display:inline-flex;align-items:center;border:1px solid transparent;border-radius:50px;padding:6px 10px;font-size:10px;font-weight:800;letter-spacing:.15px}
.jobs-badge-queued{background:#fff5d9;color:#906214;border-color:#f4e4b3}.jobs-badge-processing{background:#e7f1ff;color:#2360a6;border-color:#cfe2ff}.jobs-badge-done{background:#e2f6ec;color:#168054;border-color:#c5e8d7}.jobs-badge-failed{background:#ffebea;color:#b94039;border-color:#f5d0cc}.jobs-badge-cancelled{background:#eff2f6;color:#677383;border-color:#dee3e9}
.jobs-note-text{color:#60798b;font-size:11px;line-height:1.55;display:block}.jobs-details{margin-top:8px}.jobs-details summary{cursor:pointer;color:#18766b;font-size:11px;font-weight:750;user-select:none;list-style-position:inside}
.jobs-details[open]{min-width:210px}.jobs-detail-body{display:flex;flex-direction:column;gap:8px;margin-top:10px;padding:12px;background:#f5f8fb;border-radius:9px;color:#5f7384;font-size:11px;line-height:1.65}
.jobs-detail-body span{display:block}.jobs-detail-body b{display:block;margin-bottom:2px;color:#284a58}.jobs-raw{overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:10px}
.jobs-empty{padding:30px;color:#657b8a;text-align:center;font-size:13px}.jobs-empty[hidden]{display:none}
@media(max-width:980px){.jobs-modern{min-width:910px}.jobs-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.jobs-view .jobs-heading{align-items:flex-start}}
@media(max-width:600px){.jobs-view .jobs-heading{flex-direction:column}.jobs-heading-side{align-items:flex-start;text-align:left}.jobs-stats{gap:9px}.jobs-stat{padding:14px}.jobs-stat strong{font-size:24px}.jobs-panel-head{padding:19px 16px 12px}.jobs-filters{padding:5px 16px 17px;gap:9px}.jobs-search-label{flex:1 1 100%}.jobs-filter-label{flex:1;min-width:110px}.jobs-refresh-link{flex:1;text-align:center}}
