/* ============================================================
   DiffViewer – GitHub-style Diff-Ansicht
   oo-diff
   ============================================================ */

.oo-diff {
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
    font-size: 0.8125rem;
    line-height: 1.5;
    border: var(--oo-border-width) solid var(--oo-color-border);
    border-radius: var(--oo-border-radius);
    overflow: hidden;
    background: var(--oo-color-background);
}

/* ── Container-Modi ── */

.oo-diff__container--side-by-side {
    display: grid;
    grid-template-columns: 1fr 1fr;
    overflow-x: auto;
}

/* ── Kopfzeilen ── */

.oo-diff__header--alt,
.oo-diff__header--neu {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.25rem var(--oo-space-3);
    font-family: var(--oo-font-family);
    font-size: var(--oo-font-size-sm);
    font-weight: 600;
    background: var(--oo-color-surface);
    border-bottom: var(--oo-border-width) solid var(--oo-color-border);
    color: var(--oo-color-text-secondary);
    position: sticky;
    top: 0;
    z-index: 1;
}

.oo-diff__header--alt {
    border-right: var(--oo-border-width) solid var(--oo-color-border);
}

/* ── Toolbar-Leiste (immer sichtbar, zwischen Statistik und Inhalt) ── */

.oo-diff__toolbar-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.2rem var(--oo-space-3);
    background: var(--oo-color-surface);
    border-bottom: var(--oo-border-width) solid var(--oo-color-border);
    gap: var(--oo-space-2);
    flex-wrap: wrap;
}

/* ── Toolbar (Button-Gruppe) ── */

.oo-diff__toolbar {
    display: flex;
    align-items: center;
    gap: var(--oo-space-1);
}

/* ── Statistik-Leiste ── */

.oo-diff__statistik {
    display: flex;
    align-items: center;
    gap: var(--oo-space-3);
    padding: 0.3rem var(--oo-space-3);
    font-family: var(--oo-font-family);
    font-size: var(--oo-font-size-sm);
    background: var(--oo-color-surface);
    border-bottom: var(--oo-border-width) solid var(--oo-color-border);
    flex-wrap: wrap;
}

.oo-diff__stat {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    font-weight: 600;
}

.oo-diff__stat .oo-icon {
    font-size: 0.9rem;
    line-height: 1;
}

.oo-diff__stat--hinzugefuegt { color: var(--oo-success-dark); }
.oo-diff__stat--geloescht    { color: var(--oo-danger-dark);  }
.oo-diff__stat--gleich       { color: var(--oo-color-text-secondary); font-weight: 400; }

/* ── Collapse-Block ── */

.oo-diff__collapse {
    display: flex;
    align-items: center;
    gap: var(--oo-space-2);
    padding: 0.25rem var(--oo-space-3);
    font-family: var(--oo-font-family);
    font-size: var(--oo-font-size-sm);
    color: var(--oo-color-text-secondary);
    background: color-mix(in oklch, var(--oo-color-border) 20%, var(--oo-color-background));
    border-top: var(--oo-border-width) dashed var(--oo-color-border);
    border-bottom: var(--oo-border-width) dashed var(--oo-color-border);
    cursor: pointer;
    user-select: none;
    transition: background 0.15s;
}

.oo-diff__collapse:hover {
    background: color-mix(in oklch, var(--oo-primary) 8%, var(--oo-color-background));
    color: var(--oo-color-text);
}

.oo-diff__collapse .oo-icon {
    font-size: 1rem;
    line-height: 1;
}

.oo-diff__collapse--rechts {
    border-left: var(--oo-border-width) solid var(--oo-color-border);
    cursor: default;
}

.oo-diff__collapse--rechts:hover {
    background: color-mix(in oklch, var(--oo-color-border) 20%, var(--oo-color-background));
}

/* ── Zeilen ── */

.oo-diff__zeile {
    display: flex;
    align-items: baseline;
    min-height: 1.5em;
    padding: 0 var(--oo-space-2);
    white-space: pre;
    background: var(--oo-color-background);
    border-bottom: 1px solid transparent;
}

.oo-diff__container--side-by-side .oo-diff__zeile:nth-child(odd) {
    border-right: var(--oo-border-width) solid var(--oo-color-border);
}

.oo-diff__zeile--hinzugefuegt {
    background: color-mix(in oklch, var(--oo-success) 12%, transparent);
}

.oo-diff__zeile--geloescht {
    background: color-mix(in oklch, var(--oo-danger) 12%, transparent);
}

.oo-diff__zeile--geaendert {
    background: color-mix(in oklch, var(--oo-warning) 12%, transparent);
}

.oo-diff__zeile--leer {
    background: color-mix(in oklch, var(--oo-color-border) 30%, transparent);
}

/* ── Zeilennummer – subtil, schmal ── */

.oo-diff__zeilennr {
    display: inline-block;
    min-width: 1.75rem;
    padding-right: var(--oo-space-2);
    text-align: right;
    color: color-mix(in oklch, var(--oo-color-text-secondary) 50%, transparent);
    font-size: 0.7rem;
    user-select: none;
    flex-shrink: 0;
}

/* ── +/- Prefix ── */

.oo-diff__prefix {
    display: inline-block;
    width: 1rem;
    flex-shrink: 0;
    color: var(--oo-color-text-secondary);
    user-select: none;
}

.oo-diff__zeile--hinzugefuegt .oo-diff__prefix { color: var(--oo-success-dark); }
.oo-diff__zeile--geloescht   .oo-diff__prefix { color: var(--oo-danger-dark);   }

/* ── Inhalt ── */

.oo-diff__inhalt {
    flex: 1;
    word-break: break-all;
    white-space: pre-wrap;
}

/* ── Sub-Wort-Highlighting ── */

.oo-diff__wort--hinzugefuegt {
    background: color-mix(in oklch, var(--oo-success) 35%, transparent);
    border-radius: 2px;
}

.oo-diff__wort--geloescht {
    background: color-mix(in oklch, var(--oo-danger) 35%, transparent);
    border-radius: 2px;
    text-decoration: line-through;
    text-decoration-color: var(--oo-danger-dark);
}

/* ── Gerenderte Ansicht ── */

.oo-diff__container--rendered-sbs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    overflow-x: auto;
}

.oo-diff__rendered {
    padding: var(--oo-space-4) var(--oo-space-5);
    font-family: var(--oo-font-family);
    font-size: var(--oo-font-size-base);
    line-height: 1.7;
    color: var(--oo-color-text);
}

.oo-diff__rendered--alt {
    border-right: var(--oo-border-width) solid var(--oo-color-border);
}

/* Typografie im gerenderten Bereich */
.oo-diff__rendered h1,
.oo-diff__rendered h2,
.oo-diff__rendered h3,
.oo-diff__rendered h4,
.oo-diff__rendered h5,
.oo-diff__rendered h6 {
    margin: 1rem 0 0.5rem;
    font-weight: 700;
    line-height: 1.3;
}
.oo-diff__rendered h1 { font-size: 1.75rem; }
.oo-diff__rendered h2 { font-size: 1.4rem; }
.oo-diff__rendered h3 { font-size: 1.15rem; }

.oo-diff__rendered p  { margin: 0.5rem 0; }
.oo-diff__rendered ul,
.oo-diff__rendered ol { margin: 0.5rem 0 0.5rem 1.5rem; padding: 0; }
.oo-diff__rendered li { margin: 0.2rem 0; }
.oo-diff__rendered blockquote {
    border-left: 3px solid var(--oo-color-border);
    padding-left: var(--oo-space-3);
    color: var(--oo-color-text-secondary);
    margin: 0.5rem 0;
}
.oo-diff__rendered table {
    border-collapse: collapse;
    width: 100%;
    margin: 0.5rem 0;
}
.oo-diff__rendered th,
.oo-diff__rendered td {
    border: var(--oo-border-width) solid var(--oo-color-border);
    padding: 0.3rem var(--oo-space-2);
}
.oo-diff__rendered th { background: var(--oo-color-surface); font-weight: 600; }

/* ins / del Markierungen */
.oo-diff__rendered-ins {
    background: color-mix(in oklch, var(--oo-success) 22%, transparent);
    color: var(--oo-success-dark);
    border-radius: 2px;
    padding: 0 2px;
    text-decoration: none;
}

.oo-diff__rendered-del {
    background: color-mix(in oklch, var(--oo-danger) 18%, transparent);
    color: var(--oo-danger-dark);
    border-radius: 2px;
    padding: 0 2px;
    text-decoration: line-through;
    text-decoration-color: var(--oo-danger-dark);
}
