.permission-page-head {
    align-items: flex-end;
}

.permission-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}

.permission-summary article {
    display: flex;
    align-items: center;
    gap: .8rem;
    min-height: 5.8rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--card) 88%, transparent);
    box-shadow: var(--shadow-sm);
}

.permission-summary article > span:last-child,
.permission-user-identity > span:last-child,
.permission-group header > span:first-child,
.permission-copy {
    display: grid;
    gap: .2rem;
}

.permission-summary strong {
    color: var(--ink);
    font-size: 1.25rem;
}

.permission-summary small,
.permission-user-identity small,
.permission-user-meta,
.permission-group header > span:last-child,
.permission-group header small,
.permission-copy small,
.permission-status {
    color: var(--muted-foreground);
    font-size: .74rem;
    font-weight: 700;
}

.permission-summary-note small {
    line-height: 1.35;
}

.permission-summary-icon {
    display: grid;
    width: 2.7rem;
    height: 2.7rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: .85rem;
    color: var(--primary);
    background: color-mix(in srgb, var(--primary) 13%, transparent);
}

.permission-summary-icon.is-blue {
    color: var(--info);
    background: color-mix(in srgb, var(--info) 10%, var(--card));
}

.permission-summary-icon.is-green {
    color: var(--success);
    background: color-mix(in srgb, var(--success) 10%, var(--card));
}

.permission-directory {
    display: grid;
    gap: 1rem;
}

.permission-user {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--card) 92%, transparent);
    box-shadow: var(--shadow-sm);
}

.permission-user > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.15rem;
    color: var(--ink);
    cursor: pointer;
    list-style: none;
}

.permission-user > summary::-webkit-details-marker {
    display: none;
}

.permission-user[open] > summary {
    border-bottom: 1px solid var(--line);
}

.permission-user-summary:hover,
.permission-user[open] > .permission-user-summary {
    background: color-mix(in srgb, var(--primary) 5%, var(--card));
}

.permission-user-identity,
.permission-user-meta {
    display: flex;
    align-items: center;
    gap: .7rem;
}

.permission-chevron {
    color: var(--primary);
    font-size: 1.25rem;
    line-height: 1;
    transition: transform .18s ease;
}

.permission-user[open] .permission-chevron {
    transform: rotate(180deg);
}

.permission-user-body {
    padding: 1rem 1.15rem 1.15rem;
}

.permission-callout {
    display: flex;
    align-items: flex-start;
    gap: .65rem;
    margin-bottom: 1rem;
    padding: .8rem .9rem;
    border: 1px solid color-mix(in srgb, var(--primary) 22%, var(--line));
    border-radius: .75rem;
    color: var(--primary);
    background: color-mix(in srgb, var(--primary) 8%, var(--card));
    font-size: .86rem;
    font-weight: 700;
    line-height: 1.4;
}

.permission-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .8rem;
}

.permission-group {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: .85rem;
    background: color-mix(in srgb, var(--card) 65%, transparent);
}

.permission-group header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .75rem .85rem;
    border-bottom: 1px solid var(--line);
}

.permission-group header small {
    font-size: .72rem;
}

.permission-list {
    display: grid;
    gap: .45rem;
    padding: .6rem;
}

.permission-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .55rem;
    padding: .6rem .65rem;
    border: 1px solid transparent;
    border-radius: .65rem;
    background: color-mix(in srgb, var(--card) 78%, transparent);
    cursor: pointer;
}

.permission-item:hover {
    border-color: color-mix(in srgb, var(--primary) 25%, var(--line));
}

.permission-item.is-granted {
    background: color-mix(in srgb, var(--chart-2) 8%, var(--card));
}

.permission-item.is-missing {
    background: color-mix(in srgb, var(--muted) 45%, var(--card));
}

.permission-item.is-locked {
    cursor: default;
    opacity: .78;
}

.permission-item input {
    width: 1rem;
    height: 1rem;
    accent-color: var(--primary);
}

.permission-copy {
    min-width: 0;
}

.permission-copy strong,
.permission-copy small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.permission-copy strong {
    color: var(--ink);
    font-size: .82rem;
}

.permission-copy small {
    font-size: .68rem;
}

.permission-status {
    white-space: nowrap;
}

.permission-item.is-granted .permission-status {
    color: var(--success);
}

.permission-form-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--line);
}

html.dark .permission-summary article,
html.dark .permission-user,
html.dark .permission-group {
    border-color: var(--border-color);
    background: var(--card);
    color: var(--foreground);
}

html.dark .permission-user[open] > summary,
html.dark .permission-group header,
html.dark .permission-form-actions {
    border-color: var(--border-color);
}

html.dark .permission-user-summary:hover,
html.dark .permission-user[open] > .permission-user-summary,
html.dark .permission-item.is-granted {
    background: color-mix(in srgb, var(--primary) 14%, var(--card));
}

html.dark .permission-item,
html.dark .permission-item.is-missing {
    background: color-mix(in srgb, var(--muted) 55%, var(--card));
}

html.dark .permission-summary strong,
html.dark .permission-copy strong,
html.dark .permission-user > summary {
    color: var(--foreground);
}

html.dark .permission-summary small,
html.dark .permission-user-identity small,
html.dark .permission-user-meta,
html.dark .permission-group header > span:last-child,
html.dark .permission-group header small,
html.dark .permission-copy small,
html.dark .permission-status {
    color: var(--muted-foreground);
}

@media (max-width: 900px) {
    .permission-summary,
    .permission-groups {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .permission-page-head,
    .permission-user-summary,
    .permission-form-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .permission-user-meta {
        justify-content: space-between;
    }

    .permission-item {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .permission-status {
        grid-column: 2;
    }
}
