@keyframes tm-json-done{0%,62%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.08)}74%,90%{opacity:1;transform:scale(1)}95%,to{opacity:0;transform:scale(.6)}}@keyframes tm-json-draw{0%,64%{stroke-dashoffset:14px}74%,to{stroke-dashoffset:0}}.tm--csv{--tm-cycle:7s}.tm-csv-key,.tm-csv-comma{fill:var(--text-subtle)}.tm-csv-head{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1px;animation:tm-csv-head var(--tm-cycle) var(--ease) infinite}@keyframes tm-csv-head{0%,24%{opacity:0}30%,90%{opacity:1}95%,to{opacity:0}}.tm-csv-row{animation:tm-csv-row var(--tm-cycle) var(--ease) infinite backwards}.tm-csv-row--2{animation-delay:60ms}.tm-csv-row--3{animation-delay:.12s}.tm-csv-row--4{animation-delay:.18s}.tm-csv-row--5{animation-delay:.24s}@keyframes tm-csv-row{0%,3%{opacity:0;transform:translate(-6px)}13%,90%{opacity:1;transform:none}95%,to{opacity:0;transform:translate(-6px)}}.tm-csv-scan{fill:var(--accent);opacity:0;animation:tm-csv-scan var(--tm-cycle) var(--ease) infinite}@keyframes tm-csv-scan{0%,24%{opacity:0;transform:translateY(0)}29%{opacity:1;transform:translateY(4px)}40%{opacity:1;transform:translateY(148px)}44%,to{opacity:0;transform:translateY(148px)}}.tm-csv-card{animation:tm-csv-card var(--tm-cycle) var(--ease) infinite}@keyframes tm-csv-card{0%,46%{opacity:0;transform:translate(9px)scale(.96)}54%,90%{opacity:1;transform:none}95%,to{opacity:0;transform:translate(9px)scale(.96)}}.tm-csv-out{animation:tm-csv-out var(--tm-cycle) var(--ease) infinite backwards}.tm-csv-out--2{animation-delay:60ms}.tm-csv-out--3{animation-delay:.12s}.tm-csv-out--4{animation-delay:.18s}.tm-csv-out--5{animation-delay:.24s}@keyframes tm-csv-out{0%,52%{opacity:0;transform:translate(7px)}60%,90%{opacity:1;transform:none}95%,to{opacity:0;transform:translate(7px)}}.tm--csv .tm-done{animation:tm-json-done var(--tm-cycle) var(--ease) infinite}.tm--csv .tm-tick{animation:tm-json-draw var(--tm-cycle) var(--ease) infinite}.csv{flex-direction:column;gap:10px;display:flex;container-type:inline-size}.csv__bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.csv__spacer{flex:1}.csv__field{color:var(--text-muted);align-items:center;gap:7px;font-size:.8125rem;display:inline-flex}.csv__panes{gap:10px;min-height:0;display:grid}@container (width>=740px){.csv__panes{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.csv__pane{flex-direction:column;gap:6px;min-width:0;min-height:0;display:flex}.csv__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;min-height:30px;display:flex}.csv__title{font-family:var(--font);color:var(--text-muted);margin:0;font-size:.8125rem;font-weight:600}.csv__head-actions{align-items:center;gap:4px;display:flex}.csv__head-actions .btn{height:26px;padding:0 8px;font-size:.75rem}.csv__head-actions .segmented{padding:1px}.csv__head-actions .segmented button{padding:3px 9px;font-size:.75rem}.csv__head-actions input[type=file]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.csv__editor{border:1px solid var(--border-input);border-radius:var(--r-lg);background:var(--surface);min-height:0;display:flex;overflow:hidden}.csv__editor:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}.csv__editor.is-dropping{border-color:var(--accent);background:var(--accent-soft)}.csv__input{resize:none;min-width:0;min-height:240px;color:var(--text);font-family:var(--font-mono);white-space:pre;tab-size:4;background:0 0;border:0;flex:1;padding:12px;font-size:.8125rem;line-height:1.55;overflow:auto}.csv__input:focus{outline:none}.csv__input::placeholder{color:var(--text-subtle)}.csv__out{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);flex:1;min-height:240px;overflow:auto}.csv__text{font-family:var(--font-mono);white-space:pre;background:0 0;border:0;margin:0;padding:10px 12px;font-size:.8125rem;line-height:1.6}.csv__empty{font-family:var(--font);color:var(--text-subtle);margin:0;padding:16px 12px;font-size:.8125rem}.csv__table table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.78rem;line-height:1.5}.csv__table th{z-index:1;text-align:left;white-space:nowrap;background:var(--bg-subtle);border-bottom:1px solid var(--border);color:var(--text);padding:7px 10px;font-weight:600;position:sticky;top:0}.csv__table td{border-bottom:1px solid var(--border);font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:22ch;padding:5px 10px;overflow:hidden}.csv__gap{background:var(--bg-subtle)}.csv__gap:after{content:"missing";font-family:var(--font);color:var(--text-subtle);font-size:.7rem;font-style:italic}.csv__more{font-family:var(--font);color:var(--text-subtle);margin:0;padding:8px 10px;font-size:.75rem}.csv__verdict{color:var(--text-muted);margin:0;font-size:.8438rem}.csv__verdict--ok strong{color:var(--success)}.csv__verdict--bad strong{color:var(--danger)}.csv__notes{flex-direction:column;gap:8px;display:flex}.csv__notes:not(:empty){margin-top:8px}.csv__chips{flex-wrap:wrap;gap:6px;display:flex}.csv__chip{border:1px solid var(--border);border-radius:var(--r-full);background:var(--surface);align-items:baseline;gap:5px;padding:3px 9px;font-size:.75rem;display:inline-flex}.csv__chip-k{color:var(--text-subtle)}.csv__chip-v{font-family:var(--font-mono);color:var(--text);font-variant-numeric:tabular-nums}.csv__note{color:var(--text-subtle);margin:0;font-size:.8125rem}.csv__host{height:100%;min-height:420px}.csv__host>.csv{height:100%}.csv__host [data-csv=expand]{display:none}.csv__host .csv__panes,.csv__host .csv__editor,.csv__host .csv__out{flex:1;min-height:0}.csv__host .csv__input{min-height:0}
