.tx-root{position:relative;display:flex;flex-direction:column;min-height:0;height:100%;gap:var(--space-sm);container:tx-root/inline-size}.tx-canvas{flex:1 1;min-height:240px;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}.tx-side{width:340px;flex:none;overflow-y:auto;padding:var(--space-lg);background:var(--surface);border-left:1px solid var(--line)}.tx-split{display:flex;flex:1 1;min-height:0}@container tx-root (max-width: 720px){.tx-side{position:absolute;inset:0;z-index:20;width:auto;border-left:none}}.tx-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.tx-toolbar-spacer{flex:1 1}.tx-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font-size:var(--fs-sm);font-weight:500;font-family:inherit;cursor:pointer;transition:background .14s,border-color .14s,opacity .14s}.tx-btn:hover:not(:disabled){background:var(--bg-sunk)}.tx-btn:disabled{opacity:.55;cursor:default}.tx-btn--primary{background:var(--accent);border-color:transparent;color:var(--on-accent,#fff)}.tx-btn--primary:hover:not(:disabled){background:var(--accent-ink)}.tx-btn--ghost{background:none;border-color:transparent;color:var(--ink-3)}.tx-btn--ghost:hover:not(:disabled){background:var(--bg-sunk);color:var(--ink)}.tx-btn--danger{background:none;border-color:var(--danger);color:var(--danger)}.tx-btn--danger:hover:not(:disabled){background:var(--danger-soft)}.tx-linkbtn{background:none;border:none;padding:0;font:inherit;font-size:var(--fs-sm);color:var(--accent-ink);cursor:pointer;text-align:left}.tx-linkbtn:hover{text-decoration:underline}.tx-form{gap:var(--space-md)}.tx-field,.tx-form{display:flex;flex-direction:column}.tx-field{gap:5px}.tx-label{font-size:var(--fs-xs);font-weight:600;color:var(--ink-2)}.tx-required{color:var(--danger)}.tx-input,.tx-select,.tx-textarea{width:100%;padding:7px 10px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);color:var(--ink);font-size:var(--fs-sm);font-family:inherit;outline:none;transition:border-color .1s}.tx-input:focus,.tx-select:focus,.tx-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.tx-textarea{resize:vertical;min-height:80px}.tx-actions{display:flex;gap:var(--space-sm);align-items:center;padding-top:4px}.tx-hint{margin:0;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.5}.tx-error{color:var(--danger)}.tx-error,.tx-warning{margin:0;font-size:var(--fs-sm);line-height:1.5}.tx-warning{padding:var(--space-sm) var(--space-md);border-radius:var(--r-sm);background:var(--warn-soft,var(--accent-soft));color:var(--ink-2)}.tx-swatches{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tx-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;background:currentColor}.tx-swatch.is-selected{border-color:var(--ink)}.tx-swatch--auto{background:none;border:1px dashed var(--line-3);color:var(--ink-3);font-size:var(--fs-xs);width:auto;height:22px;padding:0 8px;border-radius:999px;font-family:inherit}.tx-swatch--auto.is-selected{border-style:solid;border-color:var(--ink);color:var(--ink)}.tx-tips-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:0;font:inherit;font-size:var(--fs-xs);font-weight:500;color:var(--accent-ink);cursor:pointer}.tx-tips-caret{transition:transform .15s ease}.tx-tips-caret.is-open{transform:rotate(90deg)}.tx-tips{margin-top:6px;padding:8px 10px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);font-size:var(--fs-xs);line-height:1.5;color:var(--ink)}.tx-tips p{margin:0}.tx-tip-bad,.tx-tip-good{margin-top:6px;padding:5px 8px;border-radius:5px}.tx-tip-good{background:var(--ok-soft,var(--accent-soft));color:var(--ok,var(--accent-ink))}.tx-tip-bad{background:var(--danger-soft);color:var(--danger)}.tx-modal-backdrop{position:absolute;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:var(--scrim,oklch(20% .01 80/.45))}.tx-modal{display:flex;flex-direction:column;width:100%;max-width:560px;max-height:100%;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-2);overflow:hidden}.tx-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-lg) var(--space-lg) 0}.tx-modal-title{margin:0;font-size:var(--fs-lg);font-weight:700;color:var(--ink);line-height:1.3}.tx-modal-close{flex:none;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-3);font-size:var(--fs-md);line-height:1;cursor:pointer}.tx-modal-close:hover:not(:disabled){background:var(--bg-sunk);color:var(--ink)}.tx-modal-body{flex:1 1;min-height:0;overflow-y:auto;padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.tx-modal-foot{display:flex;flex-direction:row-reverse;gap:var(--space-sm);padding:0 var(--space-lg) var(--space-lg)}.tx-lead{margin:0;font-size:var(--fs-sm);color:var(--ink);line-height:1.5}.tx-rows{flex-direction:column}.tx-row,.tx-rows{display:flex;gap:var(--space-md)}.tx-row{align-items:center;justify-content:space-between}.tx-row-name{min-width:0}.tx-row-label{font-weight:500;font-size:var(--fs-sm);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-row-count{font-size:var(--fs-xs);color:var(--ink-3)}.tx-row .tx-select{max-width:200px}.tx-summary{padding:10px 12px;border-radius:var(--r-sm);background:var(--bg-sunk);font-size:var(--fs-sm);color:var(--ink)}.tx-summary p{margin:0}.tx-summary p+p{margin-top:6px;font-size:var(--fs-xs);color:var(--ink-3)}.tx-shell{display:flex;flex-direction:column;min-height:0;height:100%;gap:var(--space-sm)}.tx-panel-close{position:absolute;top:var(--space-sm);right:var(--space-sm);z-index:1;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-3);font-size:var(--fs-md);line-height:1;cursor:pointer}.tx-panel-close:hover{background:var(--bg-sunk);color:var(--ink)}.tx-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--r-sm);background:var(--warn-soft,var(--accent-soft));color:var(--ink-2);font-size:var(--fs-sm);line-height:1.5}.tx-banner .tx-btn{flex:none}.tx-pill{display:inline-block;padding:1px 6px;border-radius:999px;background:var(--bg-sunk);color:var(--ink-3);font-size:var(--fs-xs);font-weight:500}.tx-pill--accent{background:var(--accent-soft);color:var(--accent-ink)}.tx-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.tx-option-cards{display:flex;flex-direction:column;gap:10px}.tx-option-card{display:flex;align-items:flex-start;gap:var(--space-md);width:100%;padding:var(--space-md);text-align:left;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s}.tx-option-card:hover:not(:disabled){background:var(--bg-sunk);border-color:var(--accent)}.tx-option-card:disabled{opacity:.6;cursor:default}.tx-option-card--selected{border-color:var(--accent);background:var(--accent-soft)}.tx-option-card-radio{flex:none;width:16px;height:16px;margin-top:2px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-3);border-radius:50%;background:var(--surface)}.tx-option-card--selected .tx-option-card-radio{border-color:var(--accent)}.tx-option-card-radio-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.tx-option-card-text{display:flex;flex-direction:column;gap:2px;min-width:0}.tx-option-card-label{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--fs-md);font-weight:600;color:var(--ink)}.tx-option-card-desc{line-height:1.45}.tx-option-card-desc,.tx-readonly{font-size:var(--fs-sm);color:var(--ink-3)}.tx-readonly{margin:0;padding:8px 14px;background:var(--bg-sunk);border:1px solid var(--line-2);border-radius:var(--r-sm)}