/* WooCommerce Product CSV Checker.
   Scoped to .ftb-tool-woo. Every value from a token (§4.2).

   Severity is never carried by colour alone (§9): each finding row gets a
   worded badge AND a left border AND a tint. Remove the colour entirely and
   the table still reads.

   Badge text uses --ftb-on-status, not #fff. The status tokens lighten in
   dark mode, so white on them measures 1.74:1 — that was a live bug on the
   contrast checker, fixed 2026-08-23. */

.ftb-tool-woo .ftb-woo-input{margin-bottom:var(--ftb-space-5)}
.ftb-tool-woo textarea{width:100%;min-height:11rem;font-family:var(--ftb-mono);
	font-size:var(--ftb-text-sm);line-height:var(--ftb-lh-snug);
	white-space:pre;overflow-wrap:normal;overflow-x:auto}

.ftb-tool-woo .ftb-woo-actions{display:flex;flex-wrap:wrap;
	gap:var(--ftb-space-2);margin-top:var(--ftb-space-3)}

/* The file input is visually hidden inside its label so the label itself is
   the target — keeps the control keyboard-reachable and over 24px (§9). */
.ftb-tool-woo .ftb-woo-file{position:relative;display:inline-flex;
	align-items:center;justify-content:center;cursor:pointer}
.ftb-tool-woo .ftb-woo-file input{position:absolute;inset:0;width:100%;
	height:100%;opacity:0;cursor:pointer}

.ftb-tool-woo .ftb-woo-result{min-height:12rem;margin-bottom:var(--ftb-space-4)}
.ftb-tool-woo .ftb-woo-empty{margin:0;padding:var(--ftb-space-5);
	text-align:center;color:var(--ftb-text-muted);
	border:1px dashed var(--ftb-border);border-radius:var(--ftb-radius)}

.ftb-tool-woo .ftb-woo-counts{display:flex;flex-wrap:wrap;
	align-items:baseline;gap:var(--ftb-space-2) var(--ftb-space-4);
	margin-bottom:var(--ftb-space-4);padding:var(--ftb-space-3) var(--ftb-space-4);
	border:1px solid var(--ftb-border);
	border-left:4px solid var(--ftb-border-strong);
	border-radius:var(--ftb-radius);background:var(--ftb-surface)}
.ftb-tool-woo .ftb-woo-counts[data-worst="error"]{border-left-color:var(--ftb-error)}
.ftb-tool-woo .ftb-woo-counts[data-worst="warning"]{border-left-color:var(--ftb-warning)}
.ftb-tool-woo .ftb-woo-counts[data-worst="clean"]{border-left-color:var(--ftb-success)}

.ftb-tool-woo .ftb-woo-count{font-weight:var(--ftb-fw-semi);
	font-variant-numeric:tabular-nums}
.ftb-tool-woo .ftb-woo-shape{margin-left:auto;font-size:var(--ftb-text-sm);
	color:var(--ftb-text-muted);font-variant-numeric:tabular-nums}

.ftb-tool-woo .ftb-woo-table{width:100%;border-collapse:collapse;
	font-size:var(--ftb-text-sm)}
.ftb-tool-woo .ftb-woo-table th,.ftb-tool-woo .ftb-woo-table td{
	padding:var(--ftb-space-2) var(--ftb-space-3);text-align:left;
	vertical-align:top;border-bottom:1px solid var(--ftb-border);
	line-height:var(--ftb-lh-snug)}
.ftb-tool-woo .ftb-woo-table thead th{font-size:var(--ftb-text-xs);
	font-weight:var(--ftb-fw-semi);text-transform:uppercase;letter-spacing:.04em;
	color:var(--ftb-text-muted);background:var(--ftb-surface-2);white-space:nowrap}

/* Tint + left border + worded badge. Three signals, one of them colour. */
.ftb-tool-woo .ftb-woo-table tr.is-error{background:var(--ftb-error-soft)}
.ftb-tool-woo .ftb-woo-table tr.is-warning{background:var(--ftb-warning-soft)}
.ftb-tool-woo .ftb-woo-table tr.is-error th{box-shadow:inset 3px 0 0 var(--ftb-error)}
.ftb-tool-woo .ftb-woo-table tr.is-warning th{box-shadow:inset 3px 0 0 var(--ftb-warning)}
.ftb-tool-woo .ftb-woo-table tr.is-notice th{box-shadow:inset 3px 0 0 var(--ftb-border-strong)}

.ftb-tool-woo .ftb-woo-row{font-family:var(--ftb-mono);
	font-variant-numeric:tabular-nums;font-weight:var(--ftb-fw-semi);
	white-space:nowrap;color:var(--ftb-text)}
.ftb-tool-woo .ftb-woo-col{font-family:var(--ftb-mono);
	font-size:var(--ftb-text-xs);color:var(--ftb-text);overflow-wrap:anywhere}

.ftb-tool-woo .ftb-woo-badge{display:inline-block;margin-right:var(--ftb-space-2);
	padding:1px 8px;border-radius:var(--ftb-radius-full);
	font-size:var(--ftb-text-xs);font-weight:var(--ftb-fw-bold);
	white-space:nowrap}
.ftb-tool-woo .ftb-woo-badge--error{background:var(--ftb-error);color:var(--ftb-on-status)}
.ftb-tool-woo .ftb-woo-badge--warning{background:var(--ftb-warning);color:var(--ftb-on-status)}
/* Notice is deliberately NOT a solid status fill. --ftb-on-status on
   --ftb-border-strong measures 1.49:1 light and 1.73:1 dark — it fails in both
   themes, because border-strong is a mid-grey in one and a dark slate in the
   other, so neither white nor near-black sits on it. A subdued outlined badge
   reads correctly at 5.40:1 and 6.84:1, and being visually quieter than error
   and warning is the right hierarchy anyway. */
.ftb-tool-woo .ftb-woo-badge--notice{background:var(--ftb-surface-2);
	color:var(--ftb-text-muted);border:1px solid var(--ftb-border-strong)}

@media (max-width:480px){
	.ftb-tool-woo .ftb-woo-shape{margin-left:0;flex-basis:100%}
}
