/* ════════════════════════════════════════════════════════════
   TEXT DIFF CHECKER - Tool Styles
   ChrysoKit · v20260427
   Full light + dark mode via [data-theme] on <html>
════════════════════════════════════════════════════════════ */

/* ────────────────────────────────────────────
   LIGHT THEME  (default)
──────────────────────────────────────────── */
:root,
[data-theme="light"] {
  --td-bg:              #f5f0e8;
  --td-surface:         #ffffff;
  --td-surface-alt:     #f8f5f0;
  --td-surface-hover:   #f0ebe0;
  --td-border:          #e2d9cc;
  --td-text:            #1a1410;
  --td-text-muted:      #6b6156;
  --td-text-faint:      #b5a898;

  --td-accent:          #D4A373;
  --td-accent-hover:    #c4936a;
  --td-accent-glow:     rgba(212,163,115,0.25);
  --td-accent-subtle:   rgba(212,163,115,0.12);
  --td-accent-text:     #2d1a0a;

  /* diff colours - light */
  --td-add-bg:          #edfaef;
  --td-add-gutter-bg:   #c8f0d0;
  --td-add-gutter-text: #1a7a4a;
  --td-add-inline:      rgba(30,160,80,0.20);
  --td-del-bg:          #fdf0ee;
  --td-del-gutter-bg:   #facfc9;
  --td-del-gutter-text: #c0392b;
  --td-del-inline:      rgba(192,57,43,0.18);

  --td-success:         #1a7a4a;
  --td-danger:          #c0392b;
  --td-warning:         #b7791f;

  --td-shadow-sm:       0 1px 3px rgba(0,0,0,0.07), 0 1px 2px rgba(0,0,0,0.04);
  --td-shadow-md:       0 4px 14px rgba(0,0,0,0.09), 0 2px 4px rgba(0,0,0,0.05);
  --td-shadow-accent:   0 4px 16px rgba(212,163,115,0.28);

  --td-radius-sm:       7px;
  --td-radius-md:       12px;
  --td-mono:            'Menlo', 'Consolas', 'Liberation Mono', monospace;
  --td-transition:      0.18s ease;
}

/* ────────────────────────────────────────────
   DARK THEME
──────────────────────────────────────────── */
[data-theme="dark"] {
  --td-bg:              #0d1117;
  --td-surface:         #161b22;
  --td-surface-alt:     #1c2230;
  --td-surface-hover:   #1f2838;
  --td-border:          #2d3340;
  --td-text:            #e6edf3;
  --td-text-muted:      #8b949e;
  --td-text-faint:      #444d58;

  --td-accent:          #D4A373;
  --td-accent-hover:    #c4936a;
  --td-accent-glow:     rgba(212,163,115,0.20);
  --td-accent-subtle:   rgba(212,163,115,0.10);
  --td-accent-text:     #1a0e00;

  /* diff colours - dark */
  --td-add-bg:          rgba(63,185,80,0.09);
  --td-add-gutter-bg:   rgba(63,185,80,0.18);
  --td-add-gutter-text: #3fb950;
  --td-add-inline:      rgba(63,185,80,0.28);
  --td-del-bg:          rgba(248,81,73,0.09);
  --td-del-gutter-bg:   rgba(248,81,73,0.18);
  --td-del-gutter-text: #f85149;
  --td-del-inline:      rgba(248,81,73,0.28);

  --td-success:         #3fb950;
  --td-danger:          #f85149;
  --td-warning:         #e3b341;

  --td-shadow-sm:       0 1px 3px rgba(0,0,0,0.40);
  --td-shadow-md:       0 4px 14px rgba(0,0,0,0.55);
  --td-shadow-accent:   0 4px 20px rgba(212,163,115,0.18);

  --td-radius-sm:       7px;
  --td-radius-md:       12px;
  --td-mono:            'Menlo', 'Consolas', 'Liberation Mono', monospace;
  --td-transition:      0.18s ease;
}

/* ════════════════════════════════════════════
   OPTIONS BAR
════════════════════════════════════════════ */
.td-options {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 1.125rem;
  padding: 0.65rem 1rem;
  background: var(--td-surface);
  border: 1.5px solid var(--td-border);
  border-radius: var(--td-radius-md);
  box-shadow: var(--td-shadow-sm);
}

.td-opt-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.td-opt-label {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--td-text-muted);
  white-space: nowrap;
  letter-spacing: 0.01em;
}

/* ── Segmented toggle (Line / Word / Char) ── */
.td-toggle {
  display: flex;
  background: var(--td-surface-alt);
  border: 1.5px solid var(--td-border);
  border-radius: var(--td-radius-sm);
  overflow: hidden;
  padding: 2px;
  gap: 2px;
}

.td-toggle button {
  font-family: inherit;
  font-size: 0.7875rem;
  font-weight: 600;
  padding: 0.275rem 0.7rem;
  border: none;
  border-radius: calc(var(--td-radius-sm) - 2px);
  background: transparent;
  color: var(--td-text-muted);
  cursor: pointer;
  outline: none;
  letter-spacing: 0.01em;
  transition: background var(--td-transition), color var(--td-transition),
              box-shadow var(--td-transition);
}

.td-toggle button.active {
  background: var(--td-accent);
  color: var(--td-accent-text);
  box-shadow: 0 1px 4px rgba(212,163,115,0.30);
}

.td-toggle button:hover:not(.active) {
  background: var(--td-surface-hover);
  color: var(--td-text);
}

.td-toggle button:focus-visible {
  box-shadow: 0 0 0 2px var(--td-accent-glow);
}

/* ── Checkboxes ── */
.td-check {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--td-text-muted);
  cursor: pointer;
  user-select: none;
  transition: color var(--td-transition);
}

.td-check:hover { color: var(--td-text); }

.td-check input[type="checkbox"] {
  accent-color: var(--td-accent);
  width: 14px;
  height: 14px;
  cursor: pointer;
  flex-shrink: 0;
}

/* ════════════════════════════════════════════
   INPUT PANELS
════════════════════════════════════════════ */
.td-inputs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

@media (max-width: 660px) {
  .td-inputs { grid-template-columns: 1fr; }
}

.td-panel-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--td-text-muted);
  margin-bottom: 0.45rem;
  display: flex;
  align-items: center;
  gap: 0.45rem;
}

/* ── Coloured pills ── */
.td-pill {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.1rem 0.5rem;
  border-radius: 99px;
}

/* Light mode pill colours */
[data-theme="light"] .td-pill-orig {
  background: rgba(192,57,43,0.12);
  color: #c0392b;
}
[data-theme="light"] .td-pill-new {
  background: rgba(26,122,74,0.12);
  color: #1a7a4a;
}

/* Dark mode pill colours */
[data-theme="dark"] .td-pill-orig,
:root .td-pill-orig {
  background: rgba(248,81,73,0.14);
  color: #f85149;
}
[data-theme="dark"] .td-pill-new,
:root .td-pill-new {
  background: rgba(63,185,80,0.14);
  color: #3fb950;
}

.td-textarea {
  width: 100%;
  min-height: 220px;
  resize: vertical;
  font-family: var(--td-mono);
  font-size: 0.875rem;
  line-height: 1.7;
  padding: 0.875rem 1rem;
  border-radius: var(--td-radius-md);
  border: 1.5px solid var(--td-border);
  background: var(--td-surface);
  color: var(--td-text);
  box-sizing: border-box;
  outline: none;
  box-shadow: var(--td-shadow-sm);
  transition: border-color var(--td-transition), box-shadow var(--td-transition);
}

.td-textarea::placeholder { color: var(--td-text-faint); }

.td-textarea:hover { border-color: var(--td-accent); }

.td-textarea:focus {
  border-color: var(--td-accent);
  box-shadow: 0 0 0 3px var(--td-accent-glow), var(--td-shadow-sm);
}

.td-char-count {
  font-size: 0.73rem;
  color: var(--td-text-faint);
  text-align: right;
  margin-top: 0.3rem;
  font-variant-numeric: tabular-nums;
}

/* ════════════════════════════════════════════
   COMPARE / ACTION ROW
════════════════════════════════════════════ */
.td-compare-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  margin: 1.25rem 0;
  flex-wrap: wrap;
}

.td-btn-compare {
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 700;
  padding: 0.7rem 2.25rem;
  border-radius: var(--td-radius-md);
  border: none;
  background: var(--td-accent);
  color: var(--td-accent-text);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  box-shadow: var(--td-shadow-accent);
  outline: none;
  letter-spacing: 0.015em;
  transition: background var(--td-transition), box-shadow var(--td-transition),
              transform 0.12s ease;
}

.td-btn-compare:hover {
  background: var(--td-accent-hover);
  box-shadow: var(--td-shadow-accent), 0 2px 10px rgba(212,163,115,0.25);
  transform: translateY(-1px);
}

.td-btn-compare:active { transform: scale(0.97); }

.td-btn-compare:focus-visible {
  box-shadow: 0 0 0 3px var(--td-accent-glow);
}

/* ── Secondary buttons ── */
.td-btn-secondary {
  font-family: inherit;
  font-size: 0.8125rem;
  font-weight: 600;
  padding: 0.5rem 1rem;
  border-radius: var(--td-radius-sm);
  border: 1.5px solid var(--td-border);
  background: var(--td-surface);
  color: var(--td-text);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  outline: none;
  transition: background var(--td-transition), border-color var(--td-transition),
              color var(--td-transition), transform 0.1s ease, box-shadow var(--td-transition);
}

.td-btn-secondary:hover {
  background: var(--td-surface-hover);
  border-color: var(--td-accent);
  color: var(--td-accent);
}

.td-btn-secondary:active { transform: scale(0.96); }

.td-btn-secondary:focus-visible {
  box-shadow: 0 0 0 3px var(--td-accent-glow);
  border-color: var(--td-accent);
}

/* ════════════════════════════════════════════
   RESULT AREA
════════════════════════════════════════════ */
.td-result-area {
  display: none;
  border: 1.5px solid var(--td-border);
  border-radius: var(--td-radius-md);
  overflow: hidden;
  margin-top: 0.25rem;
  box-shadow: var(--td-shadow-md);
}

.td-result-area.visible {
  display: block;
  animation: td-fadein 0.22s ease;
}

@keyframes td-fadein {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Summary bar ── */
.td-summary {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 0.75rem 1.125rem;
  background: var(--td-surface-alt);
  border-bottom: 1.5px solid var(--td-border);
  font-size: 0.8125rem;
  min-height: 46px;
}

.td-summary-item {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-weight: 600;
  color: var(--td-text);
}

.td-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  border-radius: var(--td-radius-sm);
  font-size: 0.73rem;
  font-weight: 800;
  padding: 0 7px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

/* Badge light vs dark */
[data-theme="light"] .td-badge-add { background: rgba(26,122,74,0.12);  color: #1a7a4a; }
[data-theme="light"] .td-badge-del { background: rgba(192,57,43,0.12);  color: #c0392b; }
[data-theme="light"] .td-badge-eq  { background: rgba(107,97,86,0.10);  color: #6b6156; }

[data-theme="dark"]  .td-badge-add,
:root .td-badge-add { background: rgba(63,185,80,0.14);  color: #3fb950; }
[data-theme="dark"]  .td-badge-del,
:root .td-badge-del { background: rgba(248,81,73,0.14);  color: #f85149; }
[data-theme="dark"]  .td-badge-eq,
:root .td-badge-eq  { background: rgba(139,148,158,0.12); color: #8b949e; }

.td-summary-sep {
  width: 1px;
  height: 18px;
  background: var(--td-border);
  flex-shrink: 0;
}

.td-identical-msg {
  width: 100%;
  text-align: center;
  padding: 1rem;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--td-success);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}

/* ── View tabs (Unified / Split) ── */
.td-view-tabs {
  display: flex;
  background: var(--td-surface-alt);
  border-bottom: 1.5px solid var(--td-border);
}

.td-view-tab {
  font-family: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.6rem 1.1rem;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1.5px;
  background: transparent;
  cursor: pointer;
  color: var(--td-text-muted);
  display: flex;
  align-items: center;
  gap: 0.4rem;
  outline: none;
  letter-spacing: 0.01em;
  transition: color var(--td-transition), border-color var(--td-transition),
              background var(--td-transition);
}

.td-view-tab.active {
  color: var(--td-accent);
  border-bottom-color: var(--td-accent);
  background: var(--td-surface);
}

.td-view-tab:hover:not(.active) {
  color: var(--td-text);
  background: var(--td-surface-hover);
}

.td-view-tab:focus-visible {
  box-shadow: inset 0 0 0 2px var(--td-accent-glow);
}

/* ════════════════════════════════════════════
   DIFF OUTPUT (shared)
════════════════════════════════════════════ */
.td-diff-output {
  font-family: var(--td-mono);
  font-size: 0.84rem;
  line-height: 1.65;
  overflow-x: auto;
  background: var(--td-surface);
  max-height: 620px;
  overflow-y: auto;
}

/* ── Unified / Split rows - always divs ── */
.td-line {
  display: flex;
  align-items: stretch;
  min-height: 1.65em;
}

.td-line + .td-line {
  border-top: 1px solid transparent;
}

/* Line numbers (two cols in unified, one in split) */
.td-line-num {
  min-width: 42px;
  padding: 0 0.45rem;
  text-align: right;
  font-size: 0.72rem;
  color: var(--td-text-faint);
  border-right: 1px solid var(--td-border);
  user-select: none;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  background: var(--td-surface-alt);
  font-variant-numeric: tabular-nums;
}

/* +/- gutter indicator */
.td-line-gutter {
  width: 20px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  font-weight: 800;
  user-select: none;
  background: var(--td-surface-alt);
  border-right: 1px solid var(--td-border);
}

/* Content cell */
.td-line-content {
  flex: 1;
  padding: 0.1rem 0.875rem;
  white-space: pre-wrap;
  word-break: break-all;
  color: var(--td-text);
  display: flex;
  align-items: center;
}

/* ── Equal row ── */
.td-line-equal .td-line-num,
.td-line-equal .td-line-gutter {
  background: var(--td-surface-alt);
}

/* ── Added row ── */
.td-line-add {
  background: var(--td-add-bg);
}

.td-line-add .td-line-num,
.td-line-add .td-line-gutter {
  background: var(--td-add-gutter-bg);
}

.td-line-add .td-line-gutter {
  color: var(--td-add-gutter-text);
}

.td-line-add + .td-line-add {
  border-top-color: rgba(0,0,0,0.03);
}

/* ── Deleted row ── */
.td-line-del {
  background: var(--td-del-bg);
}

.td-line-del .td-line-num,
.td-line-del .td-line-gutter {
  background: var(--td-del-gutter-bg);
}

.td-line-del .td-line-gutter {
  color: var(--td-del-gutter-text);
}

.td-line-del + .td-line-del {
  border-top-color: rgba(0,0,0,0.03);
}

/* ── Hunk separator ── */
.td-hunk-sep {
  padding: 0.2rem 0.875rem;
  font-size: 0.72rem;
  color: var(--td-text-faint);
  font-style: italic;
  background: var(--td-surface-alt);
  border-top: 1px solid var(--td-border);
  border-bottom: 1px solid var(--td-border);
  user-select: none;
}

/* ── Inline char-level highlights ── */
.td-ins {
  background: var(--td-add-inline);
  border-radius: 3px;
  padding: 0 1px;
}

.td-del {
  background: var(--td-del-inline);
  border-radius: 3px;
  padding: 0 1px;
  text-decoration: line-through;
  opacity: 0.80;
}

/* ════════════════════════════════════════════
   SPLIT VIEW
════════════════════════════════════════════ */
.td-split-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

@media (max-width: 600px) {
  .td-split-wrap { grid-template-columns: 1fr; }
}

.td-split-panel {
  overflow-x: auto;
  min-width: 0;
}

.td-split-panel:first-child {
  border-right: 1.5px solid var(--td-border);
}

.td-split-header {
  padding: 0.45rem 0.875rem;
  font-size: 0.68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  background: var(--td-surface-alt);
  border-bottom: 1.5px solid var(--td-border);
  color: var(--td-text-muted);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

/* ════════════════════════════════════════════
   RESULT ACTION BAR
════════════════════════════════════════════ */
.td-result-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.65rem 1rem;
  border-top: 1.5px solid var(--td-border);
  flex-wrap: wrap;
  background: var(--td-surface-alt);
}

/* ── Jump navigation ── */
.td-jump-nav {
  display: none;          /* shown by JS when changes exist */
  align-items: center;
  gap: 0.45rem;
  margin-left: auto;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--td-text-muted);
}

.td-jump-btn {
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 700;
  width: 28px;
  height: 28px;
  border-radius: var(--td-radius-sm);
  border: 1.5px solid var(--td-border);
  background: var(--td-surface);
  color: var(--td-text);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  outline: none;
  transition: background var(--td-transition), color var(--td-transition),
              border-color var(--td-transition);
}

.td-jump-btn:hover {
  background: var(--td-accent);
  color: var(--td-accent-text);
  border-color: var(--td-accent);
}

.td-jump-btn:focus-visible {
  box-shadow: 0 0 0 3px var(--td-accent-glow);
}

.td-jump-counter {
  font-variant-numeric: tabular-nums;
  min-width: 48px;
  text-align: center;
}

/* ── Copy feedback ── */
@keyframes td-pop {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

.td-copied {
  animation: td-pop 0.26s ease;
  border-color: var(--td-success) !important;
  color: var(--td-success) !important;
}

/* ════════════════════════════════════════════
   RESPONSIVE
════════════════════════════════════════════ */
@media (max-width: 480px) {
  .td-compare-row { gap: 0.5rem; }
  .td-btn-compare { padding: 0.6rem 1.5rem; font-size: 0.875rem; }
  .td-btn-secondary { font-size: 0.775rem; padding: 0.45rem 0.75rem; }
  .td-result-actions { flex-direction: column; align-items: flex-start; }
  .td-jump-nav { margin-left: 0; }
}
