.tl{flex-direction:column;gap:24px;display:flex}.tl-grid{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.tl-grid>*{flex:340px;min-width:0}.tl-panel{flex-direction:column;gap:18px;padding:24px;display:flex}.tl-panel h2,.tl-panel h3{margin:0;font-size:16px}.tl-stack{flex-direction:column;gap:14px;display:flex}.tl-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tl-row>.field{flex:140px;min-width:0}.tl-actions{flex-wrap:wrap;gap:8px;display:flex}.tl-fieldset{border:0;min-width:0;margin:0;padding:0}.tl-fieldset legend{margin-bottom:10px;padding:0}.tl-textarea{border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:240px;font-family:var(--font-mono);resize:vertical;tab-size:2;border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.6}.tl-textarea--prose{font-family:var(--font-sans);font-size:15px}.tl-textarea--short{min-height:120px}.tl-textarea[readonly]{background:var(--bg)}.tl-textarea.is-error{border-color:var(--danger)}.tl-status{min-height:1.5em;color:var(--text-3);margin:0;font-size:14px}.tl-status.is-error{color:var(--danger)}.tl-status.is-ok{color:var(--text-2)}.tl-pre{background:var(--code-bg);color:var(--code-text);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:12px;max-height:560px;margin:0;padding:16px;font-size:13px;line-height:1.65;overflow:auto}.tl-number{border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:44px;font-size:15px;font-family:var(--font-mono);border-radius:10px;padding:0 12px}.dropzone{border:1.5px dashed var(--dashed);background:var(--bg);text-align:center;cursor:pointer;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:160px;padding:20px;display:flex}.dropzone--compact{gap:6px;min-height:96px;padding:14px}.dropzone:focus-within,.dropzone.is-over{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.dropzone__title{font-size:15px;font-weight:600}.tl-files{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tl-file{border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:center;gap:12px;padding:10px 12px;display:flex}.tl-file__thumb{border:1px solid var(--border);object-fit:contain;border-radius:8px;flex:none;width:48px;height:48px}.tl-file__glyph{background:var(--surface-3);width:48px;height:48px;font-family:var(--font-mono);border-radius:8px;flex:none;place-items:center;font-size:12px;font-weight:600;display:grid}.tl-file__main{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.tl-file__name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.tl-file__meta{color:var(--muted);font-size:12.5px}.tl-file__meta.is-error{color:var(--danger)}.tl-file__btns{gap:4px;display:flex}.tl-file__btns .btn{min-width:36px;min-height:36px;padding:0 10px;font-size:13px}.tl-table{border-collapse:collapse;width:100%;font-size:14px}.tl-table th,.tl-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:10px 12px}.tl-table th{color:var(--text-2);font-weight:600}.tl-table td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tl-table tr:last-child th,.tl-table tr:last-child td{border-bottom:0}.tl-copyrow{align-items:center;gap:8px;display:flex}.tl-copyrow .text-input{min-width:0;font-family:var(--font-mono);flex:auto;font-size:14px}.tl-copyrow .btn{flex:none}.tl-preview{border:1px solid var(--border);border-radius:12px;place-items:center;min-height:240px;padding:16px;display:grid;overflow:hidden}.tl-preview img,.tl-preview canvas{object-fit:contain;max-width:100%;height:auto;max-height:520px}.tl-empty{background:var(--surface);color:var(--muted);border-radius:8px;margin:auto;padding:8px 12px;font-size:14px}.tl-progress{width:100%;height:8px;accent-color:var(--accent)}.tl-note{border-radius:var(--radius-m);background:var(--surface-2);color:var(--text-2);margin:0;padding:12px 14px;font-size:13.5px;line-height:1.6}@media (width<=520px){.tl-panel{padding:18px}}
