.tool-page {
width: min(1200px, 100%);
margin: 0 auto;
}

.tool-header {
margin-bottom: 2rem;
}

.tool-category {
margin: 0 0 0.5rem;
color: var(--main);
font-size: 0.8rem;
font-weight: 800;
letter-spacing: 0.12em;
}

.tool-header h1 {
margin: 0 0 0.75rem;
font-size: clamp(2rem, 5vw, 3rem);
line-height: 1.05;
}

.tool-description {
max-width: 760px;
margin: 0;
color: var(--text-muted);
font-size: 1.05rem;
line-height: 1.6;
}

.tool-panel {
padding: 1.5rem;
background: var(--panel-background);
border: 1px solid var(--border);
border-radius: 8px;
}

.diff-inputs {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}

.tool-field {
min-width: 0;
}

.tool-field label {
display: block;
margin-bottom: 0.5rem;
color: var(--text);
font-weight: 700;
}

.tool-field textarea {
box-sizing: border-box;
display: block;
width: 100%;
min-height: 300px;
padding: 1rem;
resize: vertical;
background: var(--surface-background);
border: 2px solid var(--border);
border-radius: 5px;
color: var(--text-dark);
font: 0.9rem/1.5 monospace;
}

.tool-field textarea:focus {
outline: none;
border-color: var(--main);
}

.tool-actions {
display: flex;
gap: 0.75rem;
margin-top: 1rem;
}

.button {
padding: 0.7rem 1.1rem;
border: 2px solid transparent;
border-radius: 4px;
cursor: pointer;
font: inherit;
font-weight: 800;
}

.button-primary {
background: var(--main);
border-color: var(--main);
color: var(--text-dark);
}

.button-primary:hover {
background: var(--main-hover);
border-color: var(--main-hover);
}

.button-secondary {
background: transparent;
border-color: var(--border);
color: var(--text);
}

.button-secondary:hover {
border-color: var(--main);
color: var(--main);
}

.diff-status {
margin-top: 1rem;
padding: 0.85rem 1rem;
background: var(--success);
border-radius: 4px;
color: var(--text-dark);
font-weight: 700;
}

.diff-status.error {
background: var(--error);
}

.diff-summary {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 0.75rem;
margin-top: 1.5rem;
}

.diff-stat {
padding: 1rem;
background: var(--surface-background);
border-radius: 5px;
color: var(--text-dark);
text-align: center;
}

.diff-stat-label {
display: block;
margin-bottom: 0.35rem;
font-size: 0.8rem;
font-weight: 800;
text-transform: uppercase;
}

.diff-stat-value {
display: block;
font-size: 1.6rem;
font-weight: 900;
}

.diff-output {
margin-top: 1.5rem;
}

.diff-output-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin-bottom: 1rem;
}

.diff-output-header h2 {
margin: 0;
font-size: 1.35rem;
}

.diff-output-actions {
display: flex;
gap: 0.5rem;
}

.diff-table {
box-sizing: border-box;
overflow-x: auto;
border: 1px solid var(--border);
border-radius: 5px;
}

.diff-table,
.diff-table *,
.diff-table *::before,
.diff-table *::after {
box-sizing: border-box;
}

.diff-table-header,
.diff-row {
display: grid;
grid-template-columns: 70px minmax(250px, 1fr) 70px minmax(250px, 1fr);
min-width: 800px;
}

.diff-table-header {
background: var(--surface-background);
color: var(--text-dark);
font-size: 0.8rem;
font-weight: 900;
text-transform: uppercase;
}

.diff-table-header > div {
min-width: 0;
padding: 0.7rem 0.75rem;
border-right: 1px solid var(--border);
overflow-wrap: anywhere;
}

.diff-table-header > div:last-child {
border-right: 0;
}

.diff-header-number {
text-align: right;
}

.diff-row {
min-height: 2rem;
border-top: 1px solid var(--border);
font: 0.88rem/1.5 monospace;
}

.diff-line-number,
.diff-line-content {
padding: 0.4rem 0.75rem;
}

.diff-line-number {
border-right: 1px solid var(--border);
color: var(--text-muted-dark);
text-align: right;
user-select: none;
}

.diff-line-content {
min-width: 0;
border-right: 1px solid var(--border);
white-space: pre-wrap;
overflow-wrap: anywhere;
}

.diff-line-content:last-child {
border-right: 0;
}

.diff-row.added {
background: rgba(168, 220, 35, 0.16);
}

.diff-row.added .modified-content::before {
content: "+ ";
color: var(--success);
font-weight: 900;
}

.diff-row.removed {
background: rgba(233, 66, 32, 0.16);
}

.diff-row.removed .original-content::before {
content: "- ";
color: var(--error);
font-weight: 900;
}

.diff-row.changed {
background: rgba(249, 214, 44, 0.12);
}

.diff-row.changed .original-content::before {
content: "- ";
color: var(--error);
font-weight: 900;
}

.diff-row.changed .modified-content::before {
content: "+ ";
color: var(--success);
font-weight: 900;
}

.diff-row.unchanged {
background: var(--panel-background);
}

.value-analysis {
margin-top: 2rem;
}

.analysis-header {
margin-bottom: 1rem;
}

.analysis-header h2 {
margin: 0 0 0.4rem;
font-size: 1.35rem;
}

.analysis-header p {
margin: 0;
color: var(--text-muted);
line-height: 1.5;
}

.analysis-empty {
padding: 1rem;
background: var(--panel-background);
border: 1px solid var(--border);
border-radius: 5px;
color: var(--text-muted);
}

.analysis-table {
width: 100%;
overflow-x: auto;
border: 1px solid var(--border);
border-radius: 5px;
}

.analysis-side-header {
display: flex !important;
width: 100%;
min-width: 700px;
}

.analysis-side-title {
box-sizing: border-box;
width: 50%;
flex: 0 0 50%;
padding: 0.75rem 1rem;
font-size: 0.85rem;
font-weight: 900;
letter-spacing: 0.08em;
text-transform: uppercase;
}

.analysis-side-title.original-side {
background: rgba(233, 66, 32, 0.14);
border-right: 1px solid var(--border);
color: var(--text);
}

.analysis-side-title.modified-side {
background: rgba(168, 220, 35, 0.14);
color: var(--text);
}

/*

* Keyword Value Changes
  */

.value-change-row {
display: flex !important;
width: 100%;
min-width: 700px;
border-top: 1px solid var(--border);
}

.value-change-keyword {
padding: 0.75rem 1rem 0.25rem;
background: var(--panel-background);
border-top: 1px solid var(--border);
color: var(--main);
font: 800 0.9rem/1.4 monospace;
}

.value-change-side {
box-sizing: border-box;
width: 50%;
flex: 0 0 50%;
min-width: 0;
padding: 0.85rem 1rem;
}

.value-change-side.original-value {
background: rgba(233, 66, 32, 0.08);
border-right: 1px solid var(--border);
}

.value-change-side.modified-value {
background: rgba(168, 220, 35, 0.08);
}

.analysis-line {
margin-bottom: 0.4rem;
color: var(--text-muted-dark);
font: 0.78rem/1.4 monospace;
}

.analysis-value {
color: var(--text);
font: 0.9rem/1.5 monospace;
white-space: pre-wrap;
overflow-wrap: anywhere;
}

/*

* Duplicate Assignments
  */

.duplicate-row {
width: 100%;
min-width: 700px;
border-top: 1px solid var(--border);
}

.duplicate-keyword {
padding: 0.75rem 1rem 0.25rem;
background: var(--panel-background);
color: var(--main);
font: 800 0.9rem/1.4 monospace;
}

.duplicate-sides {
display: flex !important;
width: 100%;
}

.duplicate-side {
box-sizing: border-box;
width: 50%;
flex: 0 0 50%;
min-width: 0;
padding: 0.85rem 1rem;
}

.duplicate-side.original-duplicate {
background: rgba(233, 66, 32, 0.08);
border-right: 1px solid var(--border);
}

.duplicate-side.modified-duplicate {
background: rgba(168, 220, 35, 0.08);
}

.duplicate-lines {
margin-bottom: 0.4rem;
color: var(--text-muted-dark);
font: 0.78rem/1.4 monospace;
}

.duplicate-values {
color: var(--text);
font: 0.9rem/1.5 monospace;
white-space: pre-wrap;
overflow-wrap: anywhere;
}

.duplicate-status {
display: inline-block;
margin-top: 0.65rem;
padding: 0.2rem 0.45rem;
border-radius: 3px;
font: 800 0.7rem/1.3 sans-serif;
letter-spacing: 0.05em;
text-transform: uppercase;
}

.duplicate-status.conflict {
background: var(--error);
color: var(--text-dark);
}

.duplicate-status.duplicate {
background: var(--main);
color: var(--text-dark);
}

.duplicate-missing {
color: var(--text-muted-dark);
font: 0.85rem/1.5 monospace;
font-style: italic;
}

@media (max-width: 700px) {
.analysis-side-header,
.value-change-row,
.duplicate-row,
.duplicate-sides {
min-width: 0;
}

.analysis-side-title,
.value-change-side,
.duplicate-side {
width: 50%;
flex-basis: 50%;
}

.analysis-side-title,
.value-change-side,
.duplicate-side {
padding-left: 0.65rem;
padding-right: 0.65rem;
}
}


.tool-info {
max-width: 850px;
margin: 3rem auto 0;
}

.tool-info h2 {
margin-bottom: 0.75rem;
}

.tool-info p {
color: var(--text-muted);
line-height: 1.7;
}

.tool-info code {
padding: 0.1rem 0.3rem;
background: var(--panel-background);
border: 1px solid var(--border);
border-radius: 3px;
color: var(--main);
}

@media (max-width: 800px) {
.diff-inputs {
grid-template-columns: 1fr;
}

.diff-summary {
grid-template-columns: repeat(2, minmax(0, 1fr));
}

.diff-output-header {
align-items: flex-start;
flex-direction: column;
}
}

@media (max-width: 500px) {
.tool-panel {
padding: 1rem;
}

.tool-actions,
.diff-output-actions {
flex-wrap: wrap;
}

.diff-summary {
grid-template-columns: 1fr 1fr;
}

.button {
flex: 1 1 auto;
}
}
