:root{color-scheme:light dark;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--border: #c4c4c4;--accent: #2563eb;--ok: #166534;--err: #b91c1c;--muted: #6b7280}body{margin:0;padding:2rem 1rem;background:#f5f5f5}#app{max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.title{margin:0;font-size:1.5rem;letter-spacing:-.01em}.subtitle{margin:0;color:var(--muted);font-size:.95rem}.dropzone{display:flex;align-items:center;justify-content:center;min-height:7.5rem;padding:1.25rem;text-align:center;border:2px dotted var(--border);border-radius:12px;background:#fff;cursor:pointer;color:var(--muted);transition:border-color .12s ease,background .12s ease}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:#eff6ff;color:var(--accent)}.file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.count-wrap{display:inline-flex;align-items:center;gap:.5rem;font-size:.95rem}.count-input{width:5rem;padding:.375rem .5rem;font:inherit;border:1px solid var(--border);border-radius:6px}.generate-btn{padding:.5rem 1.25rem;font:inherit;font-weight:600;color:#fff;background:var(--accent);border:1px solid var(--accent);border-radius:6px;cursor:pointer}.generate-btn:disabled{background:#9ca3af;border-color:#9ca3af;cursor:not-allowed}.banner{padding:.75rem 1rem;border-radius:8px;border:1px solid var(--border);background:#fff;font-family:var(--mono);font-size:.875rem}.banner[data-kind=ok]{border-color:#bbf7d0;background:#f0fdf4;color:var(--ok)}.banner[data-kind=err]{border-color:#fecaca;background:#fef2f2;color:var(--err)}.status{min-height:1.25rem;font-family:var(--mono);font-size:.85rem;color:var(--muted)}.status[data-kind=ok]{color:var(--ok)}.status[data-kind=err]{color:var(--err)}.progress{height:4px;background:#e5e7eb;border-radius:9999px;overflow:hidden}.progress[hidden]{display:none}.progress-bar{height:100%;width:0%;background:var(--accent);border-radius:inherit;transition:width .12s ease}.preview-toggle{border:1px solid var(--border);border-radius:8px;background:#fff;padding:.5rem .75rem}.preview-toggle[hidden]{display:none}.preview-toggle[open]{padding-bottom:.75rem}.preview-toggle-summary{cursor:pointer;list-style:none;font-size:.9rem;font-weight:600;padding:.25rem 0;color:var(--muted);display:flex;align-items:center;gap:.5rem}.preview-toggle-summary::-webkit-details-marker{display:none}.preview-toggle-summary:before{content:"▸";color:var(--muted);font-size:.75rem;transition:transform .12s ease;display:inline-block}.preview-toggle[open]>.preview-toggle-summary:before{transform:rotate(90deg)}.preview-toggle[open]>.preview-toggle-summary{color:inherit}.preview{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.preview:empty{display:none}.preview-banner{padding:.5rem .75rem;border-radius:6px;border:1px solid var(--border);background:#fffbeb;color:#92400e;font-size:.85rem}.preview-card{border:1px solid var(--border);border-radius:8px;background:#fff;padding:.5rem .75rem}.preview-card[open]{padding-bottom:.75rem}.preview-card-header{display:flex;align-items:center;gap:.5rem;cursor:pointer;list-style:none;font-size:.9rem;font-weight:600;padding:.25rem 0}.preview-card-header::-webkit-details-marker{display:none}.preview-card-header:before{content:"▸";color:var(--muted);font-size:.75rem;transition:transform .12s ease;display:inline-block}.preview-card[open]>.preview-card-header:before{transform:rotate(90deg)}.preview-card-title{flex:0 1 auto}.cycle-badge{display:inline-block;margin-left:auto;padding:.125rem .5rem;font-size:.75rem;font-weight:600;color:#fff;background:var(--accent);border-radius:9999px;letter-spacing:.02em}.preview-sub{margin-top:.5rem}.preview-sub-header{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.preview-lines{font-family:var(--mono);font-size:.75rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:.375rem .5rem;overflow-x:auto}.gline{white-space:pre;line-height:1.4;color:#1f2937}.truncated{color:var(--muted);font-style:italic;padding:.25rem 0;border-top:1px dashed #e5e7eb;border-bottom:1px dashed #e5e7eb;margin:.25rem 0;text-align:center}
