/* T7: management and public page adaptations. Surface values belong to T2. */
.admin-workspace {
    color: var(--c-fg-default);
    font-family: var(--font-sans);
}
.admin-workspace :where(main, section, article, form, fieldset, header, nav, label, details) {
    min-inline-size: 0;
    box-sizing: border-box;
}
.admin-workspace :where(h1, h2, h3, p, label, legend, dt, dd, summary, code) {
    overflow-wrap: anywhere;
}
.admin-workspace :where(.portal-hero, .page-header, .wl-page-header, .s4-header, .oo-admin-header, .pay-admin-header, .pay-detail-header, .loc-header, .wgt-header) {
    flex-wrap: wrap;
    gap: 1rem;
}
.admin-workspace :where(.portal-hero, .page-header, .wl-page-header, .s4-header, .oo-admin-header) > * {
    min-inline-size: 0;
    max-inline-size: 100%;
}
.admin-workspace .admin-surface {
    min-inline-size: 0;
    box-sizing: border-box;
    background: var(--glass-surface);
    border: 1px solid var(--glass-line);
    border-radius: var(--glass-radius);
    box-shadow: var(--glass-reflection);
}
/* Embedded previews, signed text and papers retain an opaque reading surface. */
.admin-workspace :where(.admin-document, .contract-render, .clib-paper, .wl-card-preview) {
    background: var(--c-surface-raised);
    color: var(--c-fg-default);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}
.admin-workspace :where(.form-grid, .add-user-form, .user-edit-form, .wsadmin__settings, .tip-controls, .wgt-form, .pay-refund-form) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
}
.admin-workspace :where(.clib-grid, .sitemap-grid, .ta-kpis, .ta-grid, .perf-stats) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}
.admin-workspace :where(.form-grid, .grid, .wl-grid-two, .wl-setup-layout, .tip-tables, .loy-grid, .ob-form-row) > * {
    min-inline-size: 0;
}
.admin-workspace :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="range"]):not([type="color"]), select, textarea) {
    min-inline-size: 0;
    max-inline-size: 100%;
    box-sizing: border-box;
    min-block-size: 2.75rem;
    border: 1px solid var(--c-border-default);
    border-radius: .85rem;
    background-color: var(--c-surface-raised);
    color: var(--c-fg-default);
    font: inherit;
}
.admin-workspace :where(textarea) { resize: vertical; }
.admin-workspace :where(input, select, textarea)[aria-invalid="true"] { border-color: var(--c-danger); }
.admin-workspace :where(.glass-button, .ob-btn, .pay-btn, .perf-btn, .loc-btn, .tip-btn, .wgt-btn, .coach-btn, .pulse-submit) {
    border-radius: var(--glass-control-radius);
    min-block-size: 2.75rem;
    max-inline-size: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.45;
}
.admin-workspace :where(.ob-btn--primary, .pay-btn--primary, .perf-btn--primary, .loc-btn--primary, .tip-btn--primary, .wgt-btn--primary, .coach-btn) {
    background: var(--c-brand-accent);
    border-color: var(--c-brand-accent);
    color: var(--c-brand-accent-fg);
}
.admin-workspace .glass-tab.tab-active {
    background: var(--c-brand-accent-soft);
    color: var(--c-fg-default);
    border-color: var(--c-border-default);
}
.admin-workspace :where(.glass-tabs, .wl-subnav) { flex-wrap: wrap; }
.admin-workspace .admin-table-scroll {
    margin-block: .75rem 1rem;
    border: 1px solid var(--glass-line);
    border-radius: 1rem;
    background: var(--c-surface-raised);
}
.admin-workspace .admin-table-scroll > table {
    margin: 0;
    min-inline-size: 100%;
    background: var(--c-surface-raised);
    color: var(--c-fg-default);
    box-shadow: none;
}
.admin-workspace .admin-table-scroll :where(th, td, code) {
    overflow-wrap: normal;
    word-break: normal;
}
.admin-workspace .admin-users-table { min-inline-size: 58rem; }
.admin-workspace .admin-user-email { white-space: nowrap; }
.admin-workspace td.admin-user-actions {
    display: table-cell;
    min-inline-size: 14rem;
}
.admin-workspace .admin-table-scroll th {
    background: var(--c-surface-sunken);
    color: var(--c-fg-muted);
}
.admin-workspace :where(.pay-filters, .pay-refund-form, .coach-controls, .tip-controls, .support-diagnostics, .problem-reference, .ob-magic-box, .wgt-snippet) {
    background: var(--c-surface-sunken);
    color: var(--c-fg-default);
}
.admin-workspace :where(.pay-status--paid, .pay-status--won, .pay-status--closed, .loc-status--on, .loc-alert--success, .wgt-alert, .tip-ok, .ob-step.is-done) {
    background: var(--c-success-soft);
    color: var(--c-success-fg);
}
.admin-workspace :where(.pay-status--failed, .pay-status--lost, .coach-error) {
    background: var(--c-danger-soft);
    color: var(--c-danger-fg);
}
.admin-workspace :where(.pay-status--pending, .pay-status--opened, .pay-status--under_review, .loc-alert--warn, .coach-warn, .tip-commit, .pcard__tag--out) {
    background: var(--c-warning-soft);
    color: var(--c-warning-fg);
}
.admin-workspace :where(.pay-status--refunded, .loc-row--active) {
    background: var(--c-info-soft);
    color: var(--c-info-fg);
}
.admin-workspace .pay-status--cancelled { background: var(--c-surface-sunken); color: var(--c-fg-muted); }
.admin-workspace .enc-welcome { border: 1px solid var(--c-border-default); }
.admin-workspace :where(.s4-modal-panel, .fp-modal-panel, .oo-modal-panel) {
    max-inline-size: calc(100vw - 2rem);
    max-block-size: calc(100dvh - 2rem);
    overflow-y: auto;
    border-radius: var(--glass-radius);
    background: var(--c-surface-raised);
}
.admin-workspace :where(.ob-wrap, .coach-shell, .tip-shell, .perf-shell, .perf-detail, .loc-admin, .loy-admin, .pay-admin, .pay-detail, .wgt-admin) { min-inline-size: 0; }

/* Standalone guests, auth and device screens must opt in without an app shell. */
body.admin-workspace--public {
    margin: 0;
    min-block-size: 100svh;
    background: var(--c-surface-base);
    background-image: radial-gradient(ellipse at 0 0, color-mix(in oklch, var(--c-brand-accent) 10%, transparent), transparent 45%);
    color: var(--c-fg-default);
}
.admin-workspace--public :where(.cust-shell, .enc-shell, .pulse-shell, .pcard, .dds-wrap, .widget) {
    min-inline-size: 0;
    max-inline-size: 100%;
    box-sizing: border-box;
}
.admin-workspace--public :where(.cust-header, .enc-hero__inner, .widget-brand) { flex-wrap: wrap; }
/* Surface headers follow the effective mode, including a system-mode change.
   Photo and permanently dark overlay headers retain their light artwork. */
.admin-workspace--public .admin-logo--light { display: block; }
.admin-workspace--public .admin-logo--dark { display: none; }
html[data-theme="dark"] .admin-workspace--public .admin-logo--light { display: none; }
html[data-theme="dark"] .admin-workspace--public .admin-logo--dark { display: block; }
.admin-workspace--public .reserve-hero__logo { margin-inline: auto; }
@media (prefers-color-scheme: dark) {
    html:not([data-theme]) .admin-workspace--public .admin-logo--light { display: none; }
    html:not([data-theme]) .admin-workspace--public .admin-logo--dark { display: block; }
}
.admin-workspace--public .login-card {
    border-radius: var(--glass-radius);
    border: 1px solid var(--glass-line);
    background: var(--glass-surface);
    box-shadow: var(--glass-reflection);
    max-inline-size: 100%;
}
.admin-workspace--public .login-card__body { background: transparent; }
.admin-workspace--public .login-card__title { overflow-wrap: anywhere; }
.admin-workspace--public .login-card__foot { flex-wrap: wrap; }
.admin-workspace--public :where(.widget, .ws-lock) {
    border-radius: var(--glass-radius);
    border: 1px solid var(--glass-line);
    background: var(--glass-surface);
    box-shadow: var(--glass-reflection);
}
.admin-workspace--public :where(.widget .row, .cust-field.ds-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.admin-workspace--public :where(.nps-group, .pulse-enps) {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
.admin-workspace--public :where(.nps-btn, .pulse-enps__opt span) { min-inline-size: 2.75rem; min-block-size: 2.75rem; }
/* Keep the ordered score axis and its endpoint labels together when scrolling. */
.admin-workspace--public .pulse-enps-scroll {
    max-inline-size: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    padding-block: .25rem;
}
.admin-workspace--public .pulse-enps-axis { min-inline-size: 34.25rem; }
.admin-workspace--public .pulse-enps {
    display: grid;
    grid-template-columns: repeat(11, minmax(2.75rem, 1fr));
    gap: .4rem;
}
.admin-workspace--public .pulse-enps__opt { position: relative; margin: 0; }
.admin-workspace--public .pulse-enps__opt span {
    display: inline-flex;
    inline-size: 100%;
    box-sizing: border-box;
    margin: 0;
}
.admin-workspace--public .pulse-enps__opt input:focus-visible + span {
    outline: 2px solid var(--c-brand-accent);
    outline-offset: -3px;
}
.admin-workspace--public .pulse-enps__ends { gap: 2rem; }
.admin-workspace--public .pulse-enps__ends > :last-child { text-align: end; }
.admin-workspace--public :where(.tip-grid, .cust-service-actions, .slot-grid) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 4.75rem), 1fr));
}
.admin-workspace--public .tip-option.is-active { color: var(--c-fg-default); }
.admin-workspace--public .tip-option { border-radius: var(--glass-control-radius); transition: background-color 160ms var(--ease-out), border-color 160ms var(--ease-out); }
.admin-workspace--public .cust-item:hover { color: var(--c-brand-accent-fg); background: var(--c-brand-accent); }
.admin-workspace--public .dds-col--ready h2,
.admin-workspace--public .dds-table--ready { color: var(--c-success-fg); }
.admin-workspace--public .dds-col--preparing h2 { color: var(--c-warning-fg); }
.admin-workspace--public .dds-col h2 { border-color: var(--c-border-default); }
.admin-workspace--public .dds-footer { color: var(--c-fg-muted); }
.admin-workspace--public .kiosk-foot {
    position: static;
    padding: 1rem;
    margin-block-start: 1rem;
}
.admin-workspace.kiosk { flex-direction: column; }
.admin-workspace.kiosk .ws-lock { flex-shrink: 0; }
.admin-workspace.kiosk .ws-pinpad__who { flex-wrap: wrap; }
.admin-workspace.kiosk .ws-pinpad__keys { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.admin-workspace.kiosk .ws-key { min-inline-size: 0; }
.admin-workspace.kiosk .ws-key--go { grid-column: 1 / -1; }
.admin-workspace.kiosk :where(.ws-person, .ws-key) { border-radius: var(--glass-control-radius); }
.admin-workspace.kiosk .ws-person { overflow-wrap: anywhere; }
.admin-workspace .wc-card.is-active { border-color: var(--c-brand-accent); }
.admin-workspace .guidance-step.is-complete { border-color: var(--c-success-fg); }
.admin-workspace .deadline-card:hover { border-color: var(--c-brand-accent); }
.admin-workspace--public .pcard__row > :first-child { min-inline-size: 0; overflow-wrap: anywhere; }
.admin-workspace--public .admin-menu-row > :first-child { min-inline-size: 0; overflow-wrap: anywhere; }
.admin-workspace--public .admin-menu-row > :last-child { flex-shrink: 0; font-variant-numeric: tabular-nums; }
.admin-workspace--public :where(.demo-header, .demo-nav, .demo-footer) {
    background: var(--c-surface-overlay);
    color: var(--c-fg-on-overlay);
}
.admin-workspace--public .demo-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; }
.admin-workspace--public .demo-nav a { color: inherit; min-block-size: 2.75rem; display: inline-flex; align-items: center; }
.admin-workspace--public .demo-intro { color: var(--c-fg-default); background: var(--c-surface-sunken); border-color: var(--c-border-default); }

/* R6/P098 (WF) — glass-hefboom. Dit bestand wordt door 169 templates geladen,
   waaronder schermen van andere sporen en de standalone `--public`-pagina's
   (login, kiosk, klantportaal, enquête). Daarom precies twee additieve regels,
   allebei presentatie, allebei vóór/ná vergeleken op zes schermen buiten de
   groepen van WF:

   1. `.card` krijgt de glaslijn. Gemeten vóór/ná op zes schermen buiten deze
      groepen: de rand bestond al (`body.ui-v2 .card`, components.css:1331,
      `1px solid var(--c-border-default)`); wat verandert is uitsluitend de
      KLEUR, naar `--glass-line`. Breedte, stijl, ronding, padding en de
      gemeten kaartafmetingen blijven gelijk. Dit is letterlijk dezelfde regel
      die WH in ronde 5 voor de finance-familie zette
      (`finance-portal-workspace.css:242`) en die sinds 1.10.12 live staat —
      daarmee is het één familie in plaats van twee.
      Specificiteit (0,3,0) tegen (0,2,1): wint ongeacht laadvolgorde.
   2. De kopregel van `.portal-hero` (160 templates) staat te ruim: 48 px bij
      32 px letter. `line-height: 1.25` maakt er 40 px van — exact de waarde
      die `finance-portal-workspace.css:246` en `rm-glass.css:44` al gebruiken.
      De grootte blijft het token. Bewust met `body.ui-v2` ervoor: zónder dat
      voorvoegsel is de specificiteit gelijk aan die van components.css:1523 en
      beslist de laadvolgorde van twee stylesheets — dat is geen besluit.

   `--public` is uitgezonderd: die pagina's hebben hun eigen kaartlook
   (`.login-card`, `.cust-card`, `.widget`) en horen niet bij de app-chroom. */
.admin-workspace:not(.admin-workspace--public) .card {
    border: 1px solid var(--glass-line);
}
body.ui-v2 .admin-workspace .portal-hero h1,
body.ui-v2.admin-workspace .portal-hero h1 { line-height: 1.25; }

@media (max-width: 700px) {
    .admin-workspace :where(.ob-wrap, .coach-shell, .tip-shell, .perf-shell, .perf-detail, .loc-admin, .loy-admin, .pay-admin, .pay-detail, .wgt-admin) { padding-inline: 0; }
    .admin-workspace .ob-wrap { margin-block: 1rem; }
    .admin-workspace :where(.ob-card, .cust-card, .coach-report) { padding: 1rem; }
    .admin-workspace :where(.loy-grid, .tip-tables, .ob-form-row, .dds-cols, .cust-field.ds-grid, .widget .row, .wl-grid-two, .wl-setup-layout) { grid-template-columns: minmax(0, 1fr); }
    .admin-workspace :where(.ob-summary, .support-kv, .support-diagnostics dl) { grid-template-columns: minmax(0, 1fr); }
    .admin-workspace :where(.ob-summary dd, .support-kv dd, .support-diagnostics dd) { margin-inline-start: 0; }
    .admin-workspace :where(.cust-shell, .enc-shell, .pulse-shell) { padding-inline: 1rem; }
    .admin-workspace .ds-showcase-container { grid-template-columns: minmax(0, 1fr); }
    .admin-workspace .ds-showcase-nav { position: static; height: auto; }
    .admin-workspace .ds-showcase-main { padding: 1rem; }
    .admin-workspace .ds-type-row { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .admin-workspace :where(.glass-button, .tip-option, .sitemap-card, .cust-item, .slot-btn) { transition: none; transform: none; }
}
@media (prefers-reduced-transparency: reduce), (forced-colors: active) {
    body.admin-workspace--public { background-image: none; }
}
@media (forced-colors: active) {
    body.admin-workspace--public { background: Canvas; color: CanvasText; }
}
@media print {
    body.admin-workspace, body.admin-workspace--public { background: Canvas; color: CanvasText; }
    body.admin-workspace.admin-workspace--public .admin-logo--light { display: block; }
    body.admin-workspace.admin-workspace--public .admin-logo--dark { display: none; }
    .admin-workspace :where(.admin-surface, .card, .ds-card, .cust-card, .widget, .contract-render, .clib-paper, .admin-table-scroll, table, th, td) {
        background: Canvas;
        color: CanvasText;
        box-shadow: none;
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
    }
    .admin-workspace .admin-table-scroll { overflow: visible; border: 0; }
    .admin-workspace .admin-table-scroll > table { min-inline-size: 0; inline-size: 100%; }
}
