/* ============================================================================
   mw-page-registry.css — the page-registry surfaces:
   · PageRegistryInspectorPage (/admin/page-registry)      prefix mw-pr-*
     MwDataGrid over the URL hierarchy + dossier detail rows in the
     edge-glow/tail-corner language (docs/plans/mitware-theme/).
   · SectionIndexPage (/admin, /dev, /booking fall-downs)  prefix mw-pr-si-*

   Rails (color = category, never decoration):
     violett = Admin · teal = Booking · amber = Dev · transparent = keine
   ============================================================================ */

.mw-pr-page {
    --mw-pr-rail-admin:   hsl(263 90% 70%);
    --mw-pr-rail-booking: hsl(172 62% 55%);
    --mw-pr-rail-dev:     hsl(38 92% 64%);
    --mw-pr-hairline: color-mix(in srgb, var(--mud-palette-lines-default) 80%, transparent);

    /* Fall-through accent: the reroute chips AND the colored tree connector between a
       container and its DefaultChildRoute target (TreeConnectorColorSelector). */
    --mw-pr-reroute: hsl(263 90% 70%);

    height: 100%;
}

/* ── Name cell (tree column) ────────────────────────────────────────────── */

.mw-pr-namecell {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.mw-pr-nameicon {
    color: var(--mud-palette-text-secondary);
    flex-shrink: 0;
}

.mw-pr-nameicon.mw-pr-rail-admin   { color: color-mix(in srgb, var(--mw-pr-rail-admin, hsl(263 90% 70%)) 70%, var(--mud-palette-text-secondary)); }
.mw-pr-nameicon.mw-pr-rail-booking { color: color-mix(in srgb, hsl(172 62% 55%) 70%, var(--mud-palette-text-secondary)); }
.mw-pr-nameicon.mw-pr-rail-dev     { color: color-mix(in srgb, hsl(38 92% 64%) 70%, var(--mud-palette-text-secondary)); }

.mw-pr-nameicon-ghost { opacity: .45; }

.mw-pr-name {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-pr-name-synthetic {
    font-weight: 400;
    font-style: italic;
    color: var(--mud-palette-text-disabled);
    font-family: var(--mud-typography-default-family, monospace);
}

/* ── URL cell — mono, parameters highlighted ────────────────────────────── */

.mw-pr-url {
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-variant-numeric: tabular-nums;
    font-size: 11px;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.mw-pr-url b {
    font-weight: 500;
    color: color-mix(in srgb, hsl(172 62% 55%) 75%, var(--mud-palette-text-secondary));
}

/* ── Access glyphs — state, never category (the only green/red on the page) */

.mw-pr-acc { vertical-align: middle; }

.mw-pr-acc-ok      { color: var(--mud-palette-success); }
.mw-pr-acc-deny    { color: var(--mud-palette-error); }
.mw-pr-acc-neutral { color: var(--mud-palette-text-disabled); }

/* ── Gate chips — Milligramm-Farbe: nur Rollen-Gates tragen Kategorie ───── */

.mw-pr-chips {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
    align-items: center;
}

.mw-pr-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 9.5px;
    letter-spacing: .03em;
    padding: 1px 7px;
    border-radius: 9px;
    border: 1px solid var(--mw-pr-hairline, var(--mud-palette-lines-default));
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    line-height: 1.6;
}

.mw-pr-chip-role-admin {
    border-color: color-mix(in srgb, hsl(263 90% 70%) 45%, transparent);
    color: color-mix(in srgb, hsl(263 90% 70%) 75%, var(--mud-palette-text-primary));
}

.mw-pr-chip-role-developer {
    border-color: color-mix(in srgb, hsl(38 92% 64%) 45%, transparent);
    color: color-mix(in srgb, hsl(38 92% 64%) 78%, var(--mud-palette-text-primary));
}

.mw-pr-chip-role-adminordeveloper {
    border-color: color-mix(in srgb, hsl(263 90% 70%) 30%, hsl(38 92% 64%));
    color: var(--mud-palette-text-secondary);
}

.mw-pr-chip-permission {
    border-color: color-mix(in srgb, var(--mud-palette-info) 40%, transparent);
    color: color-mix(in srgb, var(--mud-palette-info) 70%, var(--mud-palette-text-primary));
}

.mw-pr-chip-env {
    border-color: color-mix(in srgb, hsl(172 62% 55%) 40%, transparent);
    color: color-mix(in srgb, hsl(172 62% 55%) 72%, var(--mud-palette-text-primary));
}

.mw-pr-chip-anonymous {
    border-color: color-mix(in srgb, var(--mud-palette-success) 35%, transparent);
    color: color-mix(in srgb, var(--mud-palette-success) 68%, var(--mud-palette-text-primary));
}

.mw-pr-chip-ghost {
    border-style: dashed;
    color: var(--mud-palette-text-disabled);
}

/* Auto-reroute marker — die Kante "Container fällt auf dieses Kind" */
.mw-pr-chip-reroute {
    border-color: color-mix(in srgb, var(--mw-pr-reroute, hsl(263 90% 70%)) 55%, transparent);
    background: color-mix(in srgb, var(--mw-pr-reroute, hsl(263 90% 70%)) 8%, transparent);
    color: color-mix(in srgb, var(--mw-pr-reroute, hsl(263 90% 70%)) 80%, var(--mud-palette-text-primary));
}

/* ── View-as popover ────────────────────────────────────────────────────── */

.mw-pr-va-popover { z-index: 1400; }

.mw-pr-va {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 16px;
    width: 320px;
}

.mw-pr-va-title {
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 10px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.mw-pr-va-note {
    font-size: 11px;
    color: var(--mud-palette-text-disabled);
    line-height: 1.4;
}

/* ── Dossier — die Akte im Detail-Row ───────────────────────────────────────
   Tail Corner oben-links (zeigt zur Baumzeile darüber), Edge Glow diagonal
   unten-links in der Sektions-Farbe. 4-Layer-Rezept aus
   docs/plans/mitware-theme/edge-glow-and-tail-corner.md §2.                 */

.mw-pr-do {
    --pr-rail: transparent;

    position: relative;
    margin: 10px 14px 14px 46px;
    border-radius: 14px;
    border-top-left-radius: 4px;                 /* Tail Corner → Ursprungszeile */
    border: 1.5px solid transparent;
    background:
        linear-gradient(var(--mud-palette-surface), var(--mud-palette-surface)) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--pr-rail) 80%, transparent) 0%,
            color-mix(in srgb, var(--pr-rail) 45%, transparent) 40%,
            transparent 72%) border-box,
        linear-gradient(var(--mw-pr-hairline, var(--mud-palette-lines-default)), var(--mw-pr-hairline, var(--mud-palette-lines-default))) border-box;
    box-shadow: -3px 2px 9px -8px color-mix(in srgb, var(--pr-rail) 65%, transparent);
    padding: 18px 22px 18px;
}

.mw-pr-do.mw-pr-rail-admin   { --pr-rail: hsl(263 90% 70%); }
.mw-pr-do.mw-pr-rail-booking { --pr-rail: hsl(172 62% 55%); }
.mw-pr-do.mw-pr-rail-dev     { --pr-rail: hsl(38 92% 64%); }

.mw-pr-do-synthetic {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--mud-palette-text-disabled);
    font-size: 13px;
    font-style: italic;
}

.mw-pr-do-head {
    display: flex;
    align-items: center;
    gap: 12px;
}

.mw-pr-do-icon {
    color: color-mix(in srgb, var(--pr-rail) 60%, var(--mud-palette-text-secondary));
}

.mw-pr-do-name {
    font-size: 17px;
    font-weight: 600;
    letter-spacing: .01em;
}

.mw-pr-do-verdict {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 10.5px;
    padding: 3px 10px;
    border-radius: 8px;
    border: 1px solid var(--mw-pr-hairline, var(--mud-palette-lines-default));
}

.mw-pr-do-verdict.ok   { border-color: color-mix(in srgb, var(--mud-palette-success) 40%, transparent); color: var(--mud-palette-success); }
.mw-pr-do-verdict.deny { border-color: color-mix(in srgb, var(--mud-palette-error) 40%, transparent);   color: var(--mud-palette-error); }

.mw-pr-do-dotted {
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 10.5px;
    color: var(--mud-palette-text-disabled);
    margin: 2px 0 14px;
}

.mw-pr-do-grid {
    display: grid;
    grid-template-columns: minmax(320px, 1.2fr) minmax(260px, 1fr);
    gap: 16px 28px;
}

@media (max-width: 900px) {
    .mw-pr-do-grid { grid-template-columns: 1fr; }
}

.mw-pr-do-label {
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 9.5px;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
    margin-bottom: 6px;
}

.mw-pr-do-routebox {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 11.5px;
    color: var(--mud-palette-text-secondary);
    background: var(--mud-palette-background-gray);
    border: 1px solid var(--mw-pr-hairline, var(--mud-palette-lines-default));
    border-radius: 8px;
    padding: 6px 10px;
}

.mw-pr-do-routebox + .mw-pr-do-routebox { margin-top: 5px; }

.mw-pr-do-routebox .tag {
    font-size: 9px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
    white-space: nowrap;
}

.mw-pr-do-routebox b {
    font-weight: 500;
    color: color-mix(in srgb, hsl(172 62% 55%) 75%, var(--mud-palette-text-secondary));
}

/* Kaskaden-Leiter — Ebene für Ebene, verbunden durch einen Faden */

.mw-pr-do-ladder { display: flex; flex-direction: column; }

.mw-pr-do-step {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    background: var(--mud-palette-background-gray);
    border: 1px solid var(--mw-pr-hairline, var(--mud-palette-lines-default));
    border-radius: 9px;
    padding: 7px 10px;
}

.mw-pr-do-step + .mw-pr-do-step { margin-top: 12px; }

.mw-pr-do-step + .mw-pr-do-step::before {
    content: "";
    position: absolute;
    left: 16px;
    top: -13px;
    height: 12px;
    border-left: 1px solid var(--mud-palette-lines-default);
}

.mw-pr-do-step.denies { border-color: color-mix(in srgb, var(--mud-palette-error) 45%, transparent); }

.mw-pr-do-step .lvl {
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 10.5px;
    color: var(--mud-palette-text-secondary);
}

.mw-pr-do-step .free {
    font-size: 11px;
    font-style: italic;
    color: var(--mud-palette-text-disabled);
}

.mw-pr-do-langs {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
}

.mw-pr-do-langs .lang {
    display: inline-block;
    min-width: 64px;
    font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    font-size: 10px;
    letter-spacing: .06em;
    color: var(--mud-palette-text-disabled);
    text-transform: uppercase;
}

.mw-pr-do-consumers {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 12.5px;
    color: var(--mud-palette-text-secondary);
}

.mw-pr-do-consumers > div {
    display: flex;
    align-items: center;
    gap: 7px;
}

.mw-pr-do-empty {
    font-size: 11.5px;
    font-style: italic;
    color: var(--mud-palette-text-disabled);
}

/* ── Section index (/admin, /dev, /booking) ─────────────────────────────── */

.mw-pr-si-root {
    max-width: 960px;
    margin: 0 auto;
    padding: 32px 16px;
}

.mw-pr-si-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 24px;
}

.mw-pr-si-empty {
    color: var(--mud-palette-text-secondary);
}

.mw-pr-si-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}

.mw-pr-si-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 16px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 10px;
    color: var(--mud-palette-text-primary);
    text-decoration: none;
    transition: background-color 120ms ease, border-color 120ms ease;
}

.mw-pr-si-card:hover {
    background: var(--mud-palette-action-default-hover);
    border-color: var(--mud-palette-primary);
}

.mw-pr-si-card-icon {
    color: var(--mud-palette-primary);
}

.mw-pr-si-card-name {
    font-weight: 600;
}

.mw-pr-si-card-route {
    font-size: 0.78rem;
    color: var(--mud-palette-text-disabled);
}
