:root{--ink: #0B3A7E;--ink-deep: #072A5C;--paper: #F4F6FA;--surface: #FFFFFF;--text: #1B2433;--muted: #5C677A;--line: #D5DCE8;--found: #2F7D5B;--found-soft: #DCEFE6;--borrowed: #7FA7D6;--empty: #B7791F;--empty-soft: #FBF1DE;--error: #A33A2B;--gap: #A33A2B;--gap-soft: #FBEAE7;--void: #6E1F18;--void-soft: #F0C9C2;--radius-card: 14px;--radius-cell: 3px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--text);font:17px/1.55 PT Sans,Segoe UI,system-ui,sans-serif}main{max-width:920px;margin:0 auto;padding:48px 20px 80px}h1,h2{font-family:"PT Serif",Georgia,serif;font-weight:700;color:var(--ink-deep)}h1{font-size:2.1rem;line-height:1.2;margin:0 0 10px}h2{font-size:1.35rem;margin:0 0 14px}.lead{color:var(--muted);max-width:62ch;margin:0 0 24px}:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.brand{margin:0 0 32px;padding-bottom:24px;border-bottom:1px solid var(--line)}.brand .eyebrow{margin:0 0 12px;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}.brand-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 12px}.brand-top h1{margin:0;font-size:2.5rem;letter-spacing:-.015em}.brand-top h1 .accent{color:var(--ink)}.lang{display:flex;gap:2px;padding:3px;background:#eef3fb;border:1px solid var(--line);border-radius:999px}.lang button{border:0;background:none;cursor:pointer;border-radius:999px;padding:5px 13px;font:700 .85rem PT Sans,sans-serif;color:var(--muted);letter-spacing:.03em;transition:background .15s,color .15s}.lang button:hover{color:var(--ink-deep)}.lang button[aria-pressed=true]{background:var(--surface);color:var(--ink-deep);box-shadow:0 1px 2px #0b3a7e1f}.brand .tagline{margin:0;max-width:60ch;font-size:1.05rem;color:var(--text)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none}.chips li{font-size:.83rem;color:var(--ink-deep);background:#eef3fb;border:1px solid var(--line);border-radius:999px;padding:4px 13px}@media (max-width: 560px){.brand-top h1{font-size:1.9rem}.brand .tagline{font-size:1rem}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:28px}.drop{border:2px dashed var(--line);border-radius:10px;padding:26px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.drop:hover,.drop.over{border-color:var(--ink);background:#eef3fb}.drop strong{color:var(--ink)}.drop .file{margin-top:8px;color:var(--text);font-weight:700}.drop input{display:none}.fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.fields.hidden{display:none}label{display:block;font-size:.92rem;color:var(--muted);margin-bottom:4px}input[type=text]{width:100%;padding:9px 11px;font:inherit;border:1px solid var(--line);border-radius:8px}.hint{font-size:.9rem;color:var(--muted);margin:10px 0 0}.toggle{background:none;border:0;padding:0;color:var(--ink);font:inherit;font-size:.95rem;cursor:pointer;text-decoration:underline;margin-top:14px}.actions{display:flex;gap:12px;align-items:center;margin-top:20px;flex-wrap:wrap}button.primary,a.primary{background:var(--ink);color:#fff;border:0;border-radius:8px;padding:11px 22px;font:700 1rem PT Sans,sans-serif;cursor:pointer;text-decoration:none;display:inline-block}button.primary:hover,a.primary:hover{background:var(--ink-deep)}button.primary:disabled{background:#9aa8bf;cursor:not-allowed}button.secondary:disabled{opacity:.5;cursor:not-allowed}label.mark{display:inline-flex;align-items:center;gap:8px;margin:0;color:var(--text);font-size:.95rem;cursor:pointer}label.mark input{width:18px;height:18px;accent-color:var(--ink)}.mark-hint{font-size:.9rem;color:var(--muted);margin:8px 0 0}button.secondary{background:var(--surface);color:var(--ink);border:1px solid var(--ink);border-radius:8px;padding:10px 18px;font:700 .95rem PT Sans,sans-serif;cursor:pointer}.message{margin-top:14px;padding:12px 14px;border-radius:8px;display:none}.message.show{display:block}.message.error{background:#f8e6e3;color:var(--error)}section.job{margin-top:40px}.job-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.percent{font-family:"PT Serif",Georgia,serif;font-size:3.2rem;line-height:1;color:var(--ink-deep)}.stage{color:var(--muted);margin:6px 0 16px;min-height:1.5em}.bar{height:8px;background:var(--line);border-radius:4px;overflow:hidden}.bar>div{height:100%;width:0;background:var(--ink);transition:width .6s ease}.job.done .bar>div{background:var(--found)}.job.error .bar>div{background:var(--error)}.summary{margin:18px 0 0}.grid-wrap{margin-top:28px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:18px 18px 8px}.sheet-tabs{display:flex;gap:6px;margin-bottom:12px}.sheet-tabs button{background:none;border:1px solid var(--line);border-radius:999px;padding:4px 14px;font:inherit;font-size:.92rem;cursor:pointer;color:var(--muted)}.sheet-tabs button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}table{width:100%;border-collapse:collapse}th{font-weight:400;font-size:.8rem;color:var(--muted);text-align:center;padding:0 2px 6px;line-height:1.2}th.name{text-align:left}td{padding:3px 2px;border-top:1px solid #EDF0F5;vertical-align:middle}td.n{width:2.2em;color:var(--muted);font-size:.85rem}td.name{font-size:.95rem;padding-right:10px}tr.pending td.name{color:#9aa3b2}tr.current td.name{color:var(--ink);font-weight:700}td.cell{width:46px;text-align:center}.dot{display:inline-block;width:34px;height:22px;line-height:22px;border-radius:var(--radius-cell);font-size:.8rem;font-weight:700}.dot.wait{background:#f0f2f6}.dot.found{background:var(--found-soft);color:var(--found)}.dot.borrowed{background:#e6eef8;color:var(--ink);box-shadow:inset 0 0 0 1px var(--borrowed)}.dot.empty{background:var(--empty-soft);color:var(--empty)}.grid-options{display:flex;flex-wrap:wrap;gap:20px;margin:0 0 14px;padding:0 0 14px;border-bottom:1px solid var(--line)}.grid-options label.mark{font-size:.9rem}tr.gap td{background:var(--gap-soft)}tr.gap td.name{color:var(--gap);font-weight:700}tr.gap td.n{color:var(--gap)}.swatch{display:inline-block;width:22px;height:14px;border-radius:var(--radius-cell);vertical-align:-2px;margin-right:6px}.swatch.gap{background:var(--gap-soft);box-shadow:inset 0 0 0 1px var(--gap)}.swatch.void{background:var(--void-soft);box-shadow:inset 0 0 0 1px var(--void)}tr.void td{background:var(--void-soft)}tr.void td.name{color:var(--void);font-weight:700}tr.void td.n{color:var(--void)}.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:.85rem;color:var(--muted);margin:12px 0 8px}.legend .dot{width:22px;height:14px;vertical-align:-2px;margin-right:6px}details.log{margin-top:18px}details.log summary{cursor:pointer;color:var(--ink)}details.log pre{max-height:340px;overflow:auto;background:#0f1c33;color:#d8e1f0;padding:14px;border-radius:10px;font-size:.8rem;line-height:1.45;white-space:pre-wrap}section.history{margin-top:48px}.history ul{list-style:none;padding:0 0 6px;margin:0}.history li{display:flex;justify-content:space-between;gap:12px;padding:9px 0 9px 20px;flex-wrap:wrap}.history li+li{border-top:1px solid var(--line)}.history li button{background:none;border:0;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left}.history .when{color:var(--muted);font-size:.9rem}.run-group{border-top:1px solid var(--line)}.run-group>summary{display:flex;align-items:center;gap:10px;padding:13px 2px;cursor:pointer;list-style:none;font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);transition:color .15s ease}.run-group>summary::-webkit-details-marker{display:none}.run-group>summary:before{content:"";flex:none;width:6px;height:6px;margin:-2px 2px 0 1px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .18s ease}.run-group[open]>summary:before{transform:rotate(45deg);margin-top:-4px}.run-group>summary:hover{color:var(--ink-deep)}.run-group>summary:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.run-group-title{flex:1}.run-group-count{min-width:20px;padding:1px 7px;border-radius:999px;background:#eef3fb;color:var(--ink);font-size:.72rem;font-weight:700;text-align:center}.status-done{color:var(--found)}.status-error{color:var(--error)}.status-running,.status-queued{color:var(--ink)}.status-interrupted,.status-cancelled{color:var(--empty)}@media (max-width: 640px){main{padding-top:28px}.card{padding:22px 18px 20px}.fields{grid-template-columns:1fr}td.cell{width:30px}.dot{width:26px}th .long{display:none}}@media (prefers-reduced-motion: reduce){.bar>div,.drop{transition:none}}.grid-hint{margin:10px 0 0;font-size:.82rem;color:var(--muted)}tbody tr{cursor:pointer}tbody tr:hover td{background:#eef2f8}tbody tr.gap:hover td{background:#f6dfda}tbody tr.void:hover td{background:#e8bdb5}.preview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#072a5c59}.preview[hidden]{display:none}.preview-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:0 24px 60px #072a5c47;width:min(820px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column}.preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 26px 16px;border-bottom:1px solid var(--line)}.preview-head h2{margin:0;font-size:1.3rem}.preview-eyebrow{margin:0 0 6px;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}.preview-close{border:0;background:none;font-size:1.9rem;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px;border-radius:var(--radius-cell)}.preview-close:hover{color:var(--ink-deep)}.preview-tabs{margin:0;padding:14px 26px 0}.preview-body{overflow-y:auto;padding:14px 26px 26px}.preview-cell{padding:16px 0;border-bottom:1px solid var(--line)}.preview-cell:last-child{border-bottom:0}.preview-cell h3{margin:0 0 4px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;font-family:inherit}.preview-tags{margin:0 0 10px;font-size:.78rem;color:var(--muted)}.preview-tags .tag{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:999px;background:#e6eef8;color:var(--ink)}.preview-book{white-space:pre-wrap;font:13px/1.5 Consolas,SFMono-Regular,ui-monospace,monospace;background:var(--paper);border-left:3px solid var(--line);border-radius:0 var(--radius-cell) var(--radius-cell) 0;padding:9px 12px;margin:0 0 7px;overflow-wrap:anywhere}.preview-book:last-child{margin-bottom:0}.preview-book.auto{background:var(--found-soft);border-left-color:var(--found)}.preview-book.unknown{background:var(--empty-soft);border-left-color:var(--empty)}.preview-empty{margin:0;color:var(--empty);font-size:.9rem}.preview-note{margin:14px 0 0;padding:10px 12px;border-radius:var(--radius-cell);background:var(--empty-soft);color:var(--empty);font-size:.85rem}.preview-status{margin:24px 0;text-align:center;color:var(--muted)}@media (max-width: 640px){.preview{padding:0}.preview-card{max-height:100vh;border-radius:0;width:100%}.preview-head,.preview-body,.preview-tabs{padding-left:18px;padding-right:18px}}.preview-legend{display:flex;flex-wrap:wrap;gap:18px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}.preview-legend span{display:inline-flex;align-items:center;gap:7px}.preview-legend .preview-book{width:22px;height:14px;padding:0;margin:0;border-radius:var(--radius-cell)}
