:root{--bg: #f6f7fb;--panel: #fff;--text: #182033;--muted: #6b7280;--line: #e5e7eb;--brand: #4f46e5;--brand2: #eef2ff;--green: #15803d;--greenbg: #ecfdf5;--amber: #b45309;--amberbg: #fffbeb;--red: #b91c1c;--redbg: #fef2f2;--shadow: 0 10px 30px rgba(24, 32, 51, .07)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}aside{background:#111827;color:#fff;padding:22px 14px;position:sticky;top:0;height:100vh}.logo{font-size:20px;font-weight:800;padding:0 10px 20px}.logo span{color:#a5b4fc}.nav a{display:block;border:0;background:transparent;color:#cbd5e1;text-align:left;padding:11px 12px;border-radius:9px;margin:3px 0;cursor:pointer;text-decoration:none}.nav a.active,.nav a:hover{background:#1f2937;color:#fff}main{padding:26px}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.crumb{color:var(--muted);font-size:14px}h1{font-size:26px;margin:4px 0 0}h2{font-size:18px;margin:0 0 14px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.muted{color:var(--muted);font-size:13px}.btn{border:1px solid var(--line);background:#fff;padding:9px 12px;border-radius:9px;cursor:pointer}.btn:hover:not(:disabled){background:#f9fafb}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.danger{background:#fff;color:var(--red);border-color:#fecaca}.btn.success{background:var(--green);border-color:var(--green);color:#fff}.field{display:flex;flex-direction:column;gap:6px;margin:12px 0}label{font-size:12px;font-weight:700;color:#374151}input,select,textarea{border:1px solid #d1d5db;border-radius:9px;padding:10px;background:#fff}textarea{min-height:220px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}table{width:100%;border-collapse:collapse}th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{color:#6b7280;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:12px;font-weight:700}.pending{background:#f3f4f6;color:#4b5563}.processing{background:var(--brand2);color:var(--brand)}.generated{background:var(--greenbg);color:var(--green)}.failed{background:var(--redbg);color:var(--red)}.review{background:var(--amberbg);color:var(--amber)}.approved{background:var(--greenbg);color:var(--green)}.paused{background:#ede9fe;color:#6d28d9}.metric{font-size:30px;font-weight:800;margin-top:6px}.metric-label{color:var(--muted);font-size:13px}.book{display:block;border:1px solid var(--line);border-radius:10px;padding:12px;margin:10px 0;color:inherit;text-decoration:none}.book.selectable{cursor:pointer}.book.selectable:hover{background:#f9fafb}.book.current{border-color:var(--brand);background:var(--brand2)}.progress{height:8px;background:#eef2f7;border-radius:999px;overflow:hidden}.progress>div{height:100%;background:var(--brand)}.editor-tabs button{border:0;background:transparent;padding:8px 10px;cursor:pointer;color:var(--muted)}.editor-tabs button.active{color:var(--brand);font-weight:800;border-bottom:2px solid var(--brand)}.preview{border:1px solid var(--line);border-radius:10px;padding:18px;min-height:220px;background:#fff}.preview table{margin:10px 0}.toast{position:fixed;right:20px;bottom:20px;background:#111827;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);z-index:50}.mini{font-size:12px}.notice{border-radius:10px;padding:12px 14px;font-size:13px;margin-bottom:16px;border:1px solid}.notice.warn{background:var(--amberbg);border-color:#fde68a;color:var(--amber)}.notice.error{background:var(--redbg);border-color:#fecaca;color:var(--red)}.notice.info{background:var(--brand2);border-color:#c7d2fe;color:var(--brand)}.stack{display:flex;flex-direction:column;gap:4px}@media(max-width:900px){.app{grid-template-columns:1fr}aside{position:relative;height:auto}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8,.span-12{grid-column:span 12}}.status-dot{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;white-space:nowrap}.status-dot:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.status-dot.is-pending{color:#6b7280}.status-dot.is-active{color:var(--brand)}.status-dot.is-done{color:var(--green)}.status-dot.is-failed{color:var(--red)}.status-dot.is-review{color:var(--amber)}.status-dot.is-paused{color:#6d28d9}.status-dot.is-active:before{animation:queue-pulse 1.6s ease-in-out infinite}@keyframes queue-pulse{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.status-dot.is-active:before{animation:none}}.queue-stats{display:flex;flex-wrap:wrap;gap:28px;align-items:baseline}.queue-stat-value{font-size:22px;font-weight:700;line-height:1.1}.queue-stat-label{font-size:12px;color:var(--muted);margin-left:6px}.queue-usage{font-size:13px;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap}.queue-progress{height:6px;border-radius:999px;background:var(--line);overflow:hidden;margin-top:14px}.queue-progress>span{display:block;height:100%;border-radius:999px;background:var(--green);transition:width .24s ease}.queue-progress.has-failures>span{background:var(--red)}.queue-list{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel)}.queue-row{display:flex;align-items:center;gap:16px;padding:14px 16px;border-top:1px solid var(--line);cursor:pointer;background:none;width:100%;text-align:left;font:inherit;color:inherit}.queue-row:first-child{border-top:none}.queue-row:hover{background:#fafbfe}.queue-row.is-expanded{background:#f8f9ff}.queue-row-main{flex:1;min-width:0}.queue-row-title{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-row-meta{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-row-right{display:flex;align-items:center;gap:16px;flex:none}.queue-detail{padding:4px 16px 18px;background:#f8f9ff;border-top:1px solid var(--line)}.queue-group-head{display:flex;align-items:baseline;gap:10px;margin:14px 0 6px}.queue-group-head h4{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.queue-job{display:flex;align-items:center;gap:12px;padding:7px 10px;border-radius:8px;font-size:13.5px}.queue-job:hover{background:#fff}.queue-job-target{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-job-figures{color:var(--muted);font-size:12.5px;white-space:nowrap;flex:none}.queue-job-actions{display:flex;gap:4px;flex:none}@media(max-width:820px){.queue-stats{gap:18px}.queue-row{flex-wrap:wrap;gap:8px}.queue-row-right{width:100%;justify-content:space-between}.queue-job{flex-wrap:wrap;gap:4px 10px}.queue-job-target{flex:1 1 100%}.queue-job-figures{flex:1 1 auto;order:1}.queue-job-actions{order:2;margin-left:auto}.hide-narrow{display:none}}
