/* Fix Pallini — Custom override layer.
 * Put only small final tweaks here. Do not duplicate the design system.
 */

/* Batch 86-90: Custom CSS layer preserved for parallel clean role profiles.
   Keep role-specific tweaks here, after the shared core and surface overrides.
   Examples:
   .fp-role-municipal-service { }
   .fp-role-field-staff { }
   .fp-role-contractor { }
   .fp-role-executive { }
*/

/* Batch 91-95: Role profile open-preview custom slots.
   Keep this layer for small cosmetic fixes only. Core layout stays in fp-ui-core.css. */
[data-role-portal="technical-service-clean"][data-fp-role-profile-open-preview="1"] {
  --fp-role-preview-border: rgba(37, 99, 235, .18);
  --fp-role-preview-bg: rgba(239, 246, 255, .72);
}

[data-role-portal="technical-service-clean"][data-fp-role-profile-open-preview="1"] .lpm-role-portal-open-preview-banner {
  border: 1px dashed var(--fp-role-preview-border);
  background: var(--fp-role-preview-bg);
}

/* Per-role custom slots. Use these for final small spacing/color fixes after visual review. */
.fp-custom-role-admin {}
.fp-custom-role-municipal-service {}
.fp-custom-role-field-staff {}
.fp-custom-role-contractor {}
.fp-custom-role-executive {}
.fp-custom-role-citizen-private {}
.fp-custom-role-public-guest {}
.fp-custom-role-unknown {}

/* Batch 96-100 — Role layout blueprint / open preview surface slots.
   Keep this file as the final custom layer. Do not duplicate core layout rules here. */
.fp-role-profile-shell.fp-open-preview,
[data-fp-role-layout-ready="1"] {
  --fp-role-preview-outline: rgba(37, 99, 235, .18);
}

[data-fp-admin-source-layout-mode="open_preview"] .fp-role-layout-shell,
[data-fp-admin-source-layout-mode="open_preview"] .fp-panel,
[data-fp-admin-source-layout-mode="open_preview"] .fp-card {
  box-sizing: border-box;
}

[data-fp-admin-source-layout-mode="open_preview"] [data-fp-command-state="restricted"],
[data-fp-admin-source-layout-mode="open_preview"] [data-fp-ui-state="restricted"] {
  opacity: .92;
}

.fp-custom-role-admin,
.fp-custom-role-municipal-service,
.fp-custom-role-field-staff,
.fp-custom-role-contractor,
.fp-custom-role-executive,
.fp-custom-role-citizen-private,
.fp-custom-role-public-guest,
.fp-custom-role-unknown {
  /* Role-specific tweaks go here only after layout review. */
}

/* Batch 101-110 — Role Portal Render Contract / Open Preview layout wiring.
   Custom layer only. Shared core remains the main CSS source. */
.fp-role-render-contract-ready {
  --fp-role-slot-gap: 14px;
  --fp-role-slot-radius: 18px;
}

.fp-role-render-contract-ready .fp-role-slot,
.fp-role-profile-shell .fp-role-slot {
  box-sizing: border-box;
}

.fp-role-render-contract-ready [data-fp-render-slot],
.fp-role-profile-shell [data-fp-render-slot] {
  position: relative;
}

.fp-open-preview .fp-open-preview-restricted,
.fp-open-preview [data-fp-command-restricted="1"] {
  outline: 1px dashed currentColor;
  outline-offset: 2px;
}

.fp-open-preview .fp-role-command-bar,
.fp-role-profile-shell .fp-role-command-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.fp-role-slot-map-table-grid-available .fp-role-layout-grid,
.fp-role-profile-shell .fp-role-layout-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
  gap: var(--fp-role-slot-gap);
  align-items: start;
}

@media (max-width: 900px) {
  .fp-role-slot-map-table-grid-available .fp-role-layout-grid,
  .fp-role-profile-shell .fp-role-layout-grid {
    grid-template-columns: 1fr;
  }
}

/* Batch 111-115: open preview visual layout inspector hooks.
   These hooks are intentionally non-destructive. They help us tune layout/CSS
   before enabling role restrictions. */
.fp-role-layout-inspector.fp-layout-css-review-open {
  --fp-preview-gap: 14px;
  --fp-preview-radius: 18px;
}

.fp-role-layout-inspector .fp-role-slot,
.fp-role-layout-inspector [data-fp-render-slot] {
  position: relative;
}

.fp-role-layout-inspector .fp-role-slot-actions,
.fp-role-layout-inspector .fp-command-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.fp-role-layout-inspector .fp-command-group-restricted-preview {
  opacity: .78;
}

.fp-role-layout-inspector .fp-command-group-restricted-preview::before {
  content: "preview";
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  border: 1px solid currentColor;
  border-radius: 999px;
  padding: 2px 7px;
}

.fp-role-layout-inspector .fp-role-slot-map-table-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
  gap: var(--fp-preview-gap);
  align-items: start;
}

@media (max-width: 900px) {
  .fp-role-layout-inspector .fp-role-slot-map-table-grid {
    grid-template-columns: 1fr;
  }
}

.fp-custom-role-admin,
.fp-custom-role-municipal-service,
.fp-custom-role-field-staff,
.fp-custom-role-contractor,
.fp-custom-role-executive,
.fp-custom-role-citizen-private,
.fp-custom-role-public-guest,
.fp-custom-role-unknown {
  /* Custom role slot preserved. Put only micro-overrides here. */
}

/* Batch 116-120 — Command surface open preview / one-place admin editing hooks.
   Keep this as custom layer only: shared structure comes from fp-ui-core.css. */
.fp-command-surface-open-preview .fp-role-command-toolbar,
.fp-command-admin-source-ready .fp-role-command-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
}

.fp-command-surface-open-preview .fp-command-group,
.fp-command-admin-source-ready .fp-command-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.fp-command-surface-open-preview .fp-command-item,
.fp-command-admin-source-ready .fp-command-item {
  position: relative;
}

.fp-command-surface-open-preview .fp-command-restricted-preview,
.fp-command-admin-source-ready .fp-command-restricted-preview {
  outline: 1px dashed currentColor;
  outline-offset: 2px;
}

.fp-command-surface-open-preview .fp-command-restricted-preview::after,
.fp-command-admin-source-ready .fp-command-restricted-preview::after {
  content: "preview";
  display: inline-flex;
  margin-left: 6px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.fp-custom-role-admin .fp-command-group-destructive-available,
.fp-custom-role-municipal-service .fp-command-group-visibility-available,
.fp-custom-role-field-staff .fp-command-group-workflow-available,
.fp-custom-role-contractor .fp-command-group-workflow-available,
.fp-custom-role-executive .fp-command-group-bulk-available {
  scroll-margin-top: 90px;
}


/* Batch 121-125: Admin editable UI surfaces / one-place surface preview hooks. */
.fp-ui-surface-open-preview {
  --fp-surface-preview-gap: 14px;
  --fp-surface-preview-radius: 18px;
}
.fp-ui-surface-open-preview [data-fp-surface-preview],
.fp-ui-surface-open-preview .fp-surface-preview-card {
  border-radius: var(--fp-surface-preview-radius);
}
.fp-surface-header-available,
.fp-surface-banner-available,
.fp-surface-summary-available,
.fp-surface-filters-available,
.fp-surface-map-available,
.fp-surface-table-available,
.fp-surface-sidebar-available,
.fp-surface-actions-available,
.fp-surface-history-available,
.fp-surface-diagnostics-available {
  --fp-admin-source-surface-ready: 1;
}
.fp-slot-header-surface-ready,
.fp-slot-banner-surface-ready,
.fp-slot-summary-surface-ready,
.fp-slot-filters-surface-ready,
.fp-slot-map-surface-ready,
.fp-slot-table-surface-ready,
.fp-slot-sidebar-surface-ready,
.fp-slot-actions-surface-ready,
.fp-slot-history-surface-ready,
.fp-slot-diagnostics-surface-ready {
  --fp-role-slot-surface-ready: 1;
}
.fp-ui-surface-group-admin-only-available {
  --fp-admin-diagnostics-preview-visible: 1;
}

/* Batch 126-130 — Admin editable CSS token surface / open preview hooks */
.fp-css-token-surface {
  --fp-open-preview-outline: rgba(37, 99, 235, .18);
}

.fp-css-token-open-preview .fp-surface-actions,
.fp-css-token-open-preview .fp-surface-map,
.fp-css-token-open-preview .fp-surface-table,
.fp-css-token-open-preview .fp-surface-sidebar,
.fp-css-token-open-preview .fp-surface-banner {
  outline-offset: 2px;
}

.fp-css-token-open-preview[data-fp-css-token-surface="1"] .fp-surface-actions {
  gap: var(--fp-command-gap, 10px);
}

.fp-css-token-open-preview[data-fp-css-token-surface="1"] .fp-surface-banner {
  min-height: var(--fp-banner-height, 220px);
}

.fp-css-token-open-preview[data-fp-css-token-surface="1"] .fp-surface-map {
  min-height: var(--fp-map-height, 520px);
}

.fp-css-token-open-preview[data-fp-css-token-surface="1"] .fp-surface-table td,
.fp-css-token-open-preview[data-fp-css-token-surface="1"] .fp-surface-table th {
  padding: var(--fp-table-cell-padding, 10px 12px);
}

/* Keep role custom slots last. These are intentionally empty tuning points. */
.fp-custom-role-admin.fp-css-token-open-preview {}
.fp-custom-role-municipal-service.fp-css-token-open-preview {}
.fp-custom-role-field-staff.fp-css-token-open-preview {}
.fp-custom-role-contractor.fp-css-token-open-preview {}
.fp-custom-role-executive.fp-css-token-open-preview {}
.fp-custom-role-citizen-private.fp-css-token-open-preview {}
.fp-custom-role-public-guest.fp-css-token-open-preview {}
.fp-custom-role-unknown.fp-css-token-open-preview {}

/* Batch 131-135 — CSS variable runtime / Admin Source open preview.
   These variables are shared hooks. Admin editing will later write values from one place;
   for now they are safe defaults for visual review only. */
.fp-css-variable-runtime,
[data-fp-css-runtime="open_preview"] {
  --fp-color-primary: #2563eb;
  --fp-color-danger: #dc2626;
  --fp-color-warning: #d97706;
  --fp-color-success: #16a34a;
  --fp-surface-bg: #ffffff;
  --fp-surface-border: rgba(148,163,184,.35);
  --fp-radius-panel: 18px;
  --fp-radius-button: 12px;
  --fp-shadow-panel: 0 14px 35px rgba(15,23,42,.08);
  --fp-space-section: 18px;
  --fp-banner-height: 220px;
  --fp-map-height: 520px;
  --fp-table-cell-padding: 10px 12px;
  --fp-command-gap: 10px;
}

.fp-css-variable-runtime .fp-panel,
.fp-css-variable-runtime .fp-card,
.fp-css-variable-runtime .fp-surface-sidebar,
[data-fp-css-runtime="open_preview"] .fp-panel,
[data-fp-css-runtime="open_preview"] .fp-card,
[data-fp-css-runtime="open_preview"] .fp-surface-sidebar {
  background: var(--fp-surface-bg);
  border-color: var(--fp-surface-border);
  border-radius: var(--fp-radius-panel);
  box-shadow: var(--fp-shadow-panel);
}

.fp-css-variable-runtime .fp-btn,
.fp-css-variable-runtime .fp-command-item,
[data-fp-css-runtime="open_preview"] .fp-btn,
[data-fp-css-runtime="open_preview"] .fp-command-item {
  border-radius: var(--fp-radius-button);
}

.fp-css-variable-runtime .fp-role-command-toolbar,
.fp-css-variable-runtime .fp-command-group,
[data-fp-css-runtime="open_preview"] .fp-role-command-toolbar,
[data-fp-css-runtime="open_preview"] .fp-command-group {
  gap: var(--fp-command-gap);
}

.fp-css-variable-runtime .fp-surface-banner,
[data-fp-css-runtime="open_preview"] .fp-surface-banner {
  min-height: var(--fp-banner-height);
}

.fp-css-variable-runtime .fp-surface-map,
[data-fp-css-runtime="open_preview"] .fp-surface-map {
  min-height: var(--fp-map-height);
}

.fp-css-variable-runtime .fp-surface-table td,
.fp-css-variable-runtime .fp-surface-table th,
[data-fp-css-runtime="open_preview"] .fp-surface-table td,
[data-fp-css-runtime="open_preview"] .fp-surface-table th {
  padding: var(--fp-table-cell-padding);
}

/* Keep role custom slots last, after shared variable defaults. */
.fp-custom-role-admin.fp-css-variable-runtime {}
.fp-custom-role-municipal-service.fp-css-variable-runtime {}
.fp-custom-role-field-staff.fp-css-variable-runtime {}
.fp-custom-role-contractor.fp-css-variable-runtime {}
.fp-custom-role-executive.fp-css-variable-runtime {}
.fp-custom-role-citizen-private.fp-css-variable-runtime {}
.fp-custom-role-public-guest.fp-css-variable-runtime {}
.fp-custom-role-unknown.fp-css-variable-runtime {}

/* Batch 136-140 — Runtime binding hooks / open preview.
   Admin source hooks for surfaces + commands. No hiding, no blocking. */
[data-fp-runtime-binding="open_preview"],
.fp-css-runtime-binding-open-preview {
  --fp-runtime-binding-enabled: 1;
  --fp-runtime-binding-outline: rgba(37, 99, 235, .14);
}

.fp-admin-source-surface-bound,
[data-fp-admin-source-surface] {
  --fp-surface-bound-from-admin-source: 1;
}

.fp-admin-source-command-bound,
[data-fp-admin-source-command] {
  --fp-command-bound-from-admin-source: 1;
}

[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface="banner"],
[data-fp-runtime-binding="open_preview"] .fp-surface-banner-bound {
  min-height: var(--fp-banner-height, 220px);
}

[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface="map"],
[data-fp-runtime-binding="open_preview"] .fp-surface-map-bound {
  min-height: var(--fp-map-height, 520px);
}

[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface="table"] td,
[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface="table"] th,
[data-fp-runtime-binding="open_preview"] .fp-surface-table-bound td,
[data-fp-runtime-binding="open_preview"] .fp-surface-table-bound th {
  padding: var(--fp-table-cell-padding, 10px 12px);
}

[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface="actions"],
[data-fp-runtime-binding="open_preview"] .fp-surface-actions-bound,
[data-fp-runtime-binding="open_preview"] .fp-role-command-toolbar {
  gap: var(--fp-command-gap, 10px);
}

/* Command hooks are intentionally visual-neutral. They exist so CSS can be tuned later from one source. */
[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-command],
[data-fp-runtime-binding="open_preview"] .fp-admin-source-command-bound {
  --fp-command-open-preview-visible: 1;
}

/* Custom role slots remain last. */
.fp-custom-role-admin.fp-css-runtime-binding-open-preview {}
.fp-custom-role-municipal-service.fp-css-runtime-binding-open-preview {}
.fp-custom-role-field-staff.fp-css-runtime-binding-open-preview {}
.fp-custom-role-contractor.fp-css-runtime-binding-open-preview {}
.fp-custom-role-executive.fp-css-runtime-binding-open-preview {}
.fp-custom-role-citizen-private.fp-css-runtime-binding-open-preview {}
.fp-custom-role-public-guest.fp-css-runtime-binding-open-preview {}
.fp-custom-role-unknown.fp-css-runtime-binding-open-preview {}


/* Batch 141–145: admin editable layout controls — open preview only. */
.fp-layout-controls-open-preview {
  --fp-banner-height: var(--fp-admin-banner-height, 180px);
  --fp-map-height: var(--fp-admin-map-height, 420px);
  --fp-table-min-height: var(--fp-admin-table-min-height, 360px);
  --fp-sidebar-width: var(--fp-admin-sidebar-width, 360px);
  --fp-panel-radius: var(--fp-admin-panel-radius, 18px);
}

.fp-layout-controls-open-preview .fp-role-layout-banner,
.fp-layout-controls-open-preview [data-fp-surface-slot="banner"] {
  min-height: var(--fp-banner-height);
}

.fp-layout-controls-open-preview .fp-role-layout-map,
.fp-layout-controls-open-preview [data-fp-surface-slot="map"] {
  min-height: var(--fp-map-height);
}

.fp-layout-controls-open-preview .fp-role-layout-table,
.fp-layout-controls-open-preview [data-fp-surface-slot="table"] {
  min-height: var(--fp-table-min-height);
}

.fp-layout-controls-open-preview .fp-role-layout-sidebar,
.fp-layout-controls-open-preview [data-fp-surface-slot="sidebar"] {
  width: min(100%, var(--fp-sidebar-width));
}

.fp-layout-controls-open-preview .fp-panel,
.fp-layout-controls-open-preview .fp-card,
.fp-layout-controls-open-preview [data-fp-surface-slot] {
  border-radius: var(--fp-panel-radius);
}

.fp-layout-controls-open-preview [data-fp-layout-control-binding="open_preview"] {
  outline-offset: 2px;
}

/* B12: deleted legacy role bridge selectors. */

/* Batch 151–155 — Admin Source Control Panel / Open Preview hooks. */
.fp-admin-source-control-panel-open-preview {
  --fp-admin-source-outline: rgba(37, 99, 235, .18);
}

.fp-admin-source-control-panel-open-preview [data-fp-admin-source-section] {
  scroll-margin-top: 96px;
}

.fp-admin-source-control-panel-open-preview .fp-admin-source-section {
  position: relative;
}

.fp-admin-source-control-panel-open-preview .fp-admin-source-preview-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 800;
  background: rgba(37, 99, 235, .08);
  border: 1px solid rgba(37, 99, 235, .16);
}

.fp-admin-source-control-panel-open-preview .fp-admin-source-panel-debug {
  border: 1px dashed var(--fp-admin-source-outline);
  border-radius: var(--fp-panel-radius, 18px);
}

/* Batch 156–160 — Admin Source Control Panel visual preview (open preview / read-only). */
.lpm-fp-admin-page .fp-asc-panel {
  --fp-asc-border: rgba(31, 41, 55, .10);
  --fp-asc-soft: rgba(15, 23, 42, .045);
  --fp-asc-strong: #111827;
  margin-top: 18px;
}
.lpm-fp-admin-page .fp-asc-head h3 { margin: 0; }
.lpm-fp-admin-page .fp-asc-head p { max-width: 860px; }
.lpm-fp-admin-page .fp-asc-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 10px;
}
.lpm-fp-admin-page .fp-asc-toolbar span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--fp-asc-border);
  background: #fff;
  border-radius: 999px;
  padding: 7px 10px;
  font-size: 12px;
}
.lpm-fp-admin-page .fp-asc-notice {
  border: 1px dashed rgba(37, 99, 235, .30);
  background: rgba(37, 99, 235, .055);
  border-radius: 16px;
  padding: 12px 14px;
  margin: 12px 0 14px;
  color: #1f2937;
}
.lpm-fp-admin-page .fp-asc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(255px, 1fr));
  gap: 12px;
}
.lpm-fp-admin-page .fp-asc-card {
  border: 1px solid var(--fp-asc-border);
  border-radius: 18px;
  background: #fff;
  padding: 14px;
  min-height: 160px;
  box-shadow: 0 10px 28px rgba(15, 23, 42, .055);
}
.lpm-fp-admin-page .fp-asc-card-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.lpm-fp-admin-page .fp-asc-card h4 {
  margin: 0 0 5px;
  color: var(--fp-asc-strong);
  font-size: 15px;
}
.lpm-fp-admin-page .fp-asc-card p {
  margin: 0;
  color: #64748b;
  font-size: 12px;
  line-height: 1.45;
}
.lpm-fp-admin-page .fp-asc-count {
  min-width: 34px;
  text-align: center;
  border-radius: 12px;
  background: var(--fp-asc-soft);
  padding: 6px 8px;
  font-weight: 800;
  color: #111827;
}
.lpm-fp-admin-page .fp-asc-badge {
  display: inline-flex;
  margin: 10px 0 8px;
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 11px;
  font-weight: 800;
  background: rgba(124, 58, 237, .09);
  color: #5b21b6;
}
.lpm-fp-admin-page .fp-asc-mini-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-height: 110px;
  overflow: auto;
  padding-top: 4px;
}
.lpm-fp-admin-page .fp-asc-mini-list code {
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 999px;
  background: #f8fafc;
  padding: 4px 7px;
  font-size: 11px;
  color: #334155;
}
.lpm-fp-admin-page .fp-asc-empty {
  margin-top: 12px;
  color: #94a3b8;
  font-size: 12px;
}
.lpm-fp-admin-page .fp-asc-details {
  margin-top: 14px;
  border: 1px solid var(--fp-asc-border);
  border-radius: 16px;
  background: #fff;
  padding: 10px 12px;
}
.lpm-fp-admin-page .fp-asc-details summary {
  cursor: pointer;
  font-weight: 800;
}
.lpm-fp-admin-page .fp-asc-details pre {
  margin: 10px 0 0;
  max-height: 280px;
  overflow: auto;
  background: #0f172a;
  color: #e5e7eb;
  border-radius: 12px;
  padding: 12px;
  font-size: 11px;
}
.lpm-fp-admin-page .fp-asc-nav b { text-transform: uppercase; }

/* Batch 161–170 — Admin Source Panel Expansion / Open Preview tables. */
.lpm-fp-admin-page .fp-asc-expanded {
  margin-top: 16px;
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(248,250,252,.95), rgba(255,255,255,.98));
  padding: 14px;
}
.lpm-fp-admin-page .fp-asc-expanded-title,
.lpm-fp-admin-page .fp-asc-expanded-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.lpm-fp-admin-page .fp-asc-expanded-title h3,
.lpm-fp-admin-page .fp-asc-expanded-table h4 {
  margin: 0 0 6px;
  color: #0f172a;
}
.lpm-fp-admin-page .fp-asc-expanded-title p {
  margin: 0;
  color: #64748b;
  max-width: 900px;
}
.lpm-fp-admin-page .fp-asc-expanded-title span,
.lpm-fp-admin-page .fp-asc-expanded-head span {
  display: inline-flex;
  border-radius: 999px;
  padding: 5px 9px;
  background: rgba(37, 99, 235, .08);
  color: #1d4ed8;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}
.lpm-fp-admin-page .fp-asc-expanded-table {
  margin-top: 12px;
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 18px;
  background: #fff;
  padding: 12px;
  box-shadow: 0 8px 24px rgba(15,23,42,.045);
}
.lpm-fp-admin-page .fp-asc-expanded-two {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 12px;
}
.lpm-fp-admin-page .fp-asc-table-scroll {
  width: 100%;
  overflow: auto;
  border-radius: 14px;
  border: 1px solid rgba(15,23,42,.07);
}
.lpm-fp-admin-page .fp-asc-expanded-table table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  font-size: 12px;
}
.lpm-fp-admin-page .fp-asc-expanded-table th,
.lpm-fp-admin-page .fp-asc-expanded-table td {
  padding: 8px 10px;
  border-bottom: 1px solid rgba(15,23,42,.06);
  text-align: left;
  vertical-align: top;
}
.lpm-fp-admin-page .fp-asc-expanded-table th {
  background: #f8fafc;
  color: #334155;
  font-weight: 900;
  position: sticky;
  top: 0;
  z-index: 1;
}
.lpm-fp-admin-page .fp-asc-expanded-table tr:last-child td { border-bottom: 0; }
.lpm-fp-admin-page .fp-asc-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  color: #334155;
}
.lpm-fp-admin-page .fp-asc-more {
  margin: 8px 0 0;
  color: #64748b;
  font-size: 12px;
}

/* Batch 171–180 — Command Editor Preview / open preview only */
.fp-asc-command-editor{
  margin-top:18px;
  padding:18px;
  border:1px solid rgba(148,163,184,.32);
  border-radius:18px;
  background:rgba(255,255,255,.92);
}
.fp-asc-command-groups{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:10px 0 14px;
}
.fp-asc-command-group-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 10px;
  border:1px solid rgba(148,163,184,.35);
  border-radius:999px;
  background:#f8fafc;
  font-size:12px;
}
.fp-asc-command-group-pill em{
  color:#64748b;
  font-style:normal;
}
.fp-asc-command-table td small{
  display:block;
  margin-top:4px;
  color:#64748b;
  line-height:1.35;
}
.fp-asc-tone{
  display:inline-flex;
  align-items:center;
  padding:4px 8px;
  border-radius:999px;
  background:#f1f5f9;
  font-size:12px;
  font-weight:700;
}
.fp-asc-tone-danger{ background:#fee2e2; color:#991b1b; }
.fp-asc-tone-warning{ background:#fef3c7; color:#92400e; }
.fp-asc-tone-success{ background:#dcfce7; color:#166534; }
.fp-asc-tone-info{ background:#dbeafe; color:#1d4ed8; }
.fp-asc-tone-neutral{ background:#f1f5f9; color:#334155; }

/* Batch 181–190 — UI Surface + Layout Editor Preview / open preview only */
.fp-asc-ui-surface-editor{
  margin-top:18px;
  padding:18px;
  border:1px solid rgba(59,130,246,.22);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(239,246,255,.72),rgba(255,255,255,.94));
}
.fp-asc-surface-slots{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:10px 0 14px;
}
.fp-asc-surface-slot-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:7px 10px;
  border:1px solid rgba(59,130,246,.24);
  border-radius:999px;
  background:#eff6ff;
  color:#1e3a8a;
  font-size:12px;
}
.fp-asc-surface-slot-pill em{
  color:#64748b;
  font-style:normal;
}
.fp-asc-ui-surface-table td small{
  display:block;
  margin-top:4px;
  color:#64748b;
  line-height:1.35;
}
.fp-asc-slot{
  display:inline-flex;
  align-items:center;
  padding:4px 8px;
  border-radius:999px;
  background:#eef2ff;
  color:#3730a3;
  font-size:12px;
  font-weight:800;
}
.fp-asc-slot-banner{ background:#fef3c7; color:#92400e; }
.fp-asc-slot-map{ background:#dcfce7; color:#166534; }
.fp-asc-slot-table{ background:#e0f2fe; color:#075985; }
.fp-asc-slot-sidebar{ background:#f3e8ff; color:#6b21a8; }
.fp-asc-slot-actions{ background:#fee2e2; color:#991b1b; }
.fp-asc-slot-filters{ background:#f1f5f9; color:#334155; }

/* Batch 191–200 — Role Portal Visual Alignment Preview / open preview only */
.fp-asc-visual-alignment{
  margin-top:18px;
  padding:18px;
  border:1px solid rgba(16,185,129,.24);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(236,253,245,.76),rgba(255,255,255,.96));
}
.fp-asc-visual-surface-table td small{
  display:block;
  margin-top:4px;
  color:#64748b;
  line-height:1.35;
}
.fp-asc-role-align-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:10px;
}
.fp-asc-role-align-card{
  border:1px solid rgba(148,163,184,.28);
  border-radius:14px;
  background:#fff;
  padding:12px;
  box-shadow:0 8px 24px rgba(15,23,42,.05);
}
.fp-asc-role-align-card h4{
  margin:0 0 8px;
  font-size:14px;
}
.fp-asc-role-align-card code{
  display:block;
  margin:4px 0;
  padding:5px 7px;
  border-radius:8px;
  background:#f8fafc;
  color:#334155;
  font-size:11px;
  white-space:normal;
  word-break:break-word;
}
.fp-asc-role-align-card p{
  margin:8px 0 0;
  color:#64748b;
  font-size:12px;
}

/* Shared runtime hooks prepared for visual alignment. These are intentionally mild. */
[data-fp-runtime-binding="open_preview"] [data-fp-admin-source-surface],
[data-fp-admin-source-panel="open_preview"] [data-fp-admin-source-surface]{
  scroll-margin-top:90px;
}
[data-fp-admin-source-command]{
  --fp-command-preview-outline: rgba(59,130,246,.18);
}
.fp-source-surface{
  --fp-source-surface-gap: var(--fp-surface-gap, 14px);
}
.fp-command-group{
  gap:var(--fp-action-gap, 8px);
}

/* Batch 201–210 — CSS/Layout Alignment Pass / open preview only */
.fp-asc-css-layout-pass{
  margin-top:18px;
  padding:18px;
  border:1px solid rgba(245,158,11,.28);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,251,235,.82),rgba(255,255,255,.96));
}
.fp-asc-css-layout-table td small{
  display:block;
  margin-top:4px;
  color:#64748b;
  line-height:1.35;
}
.fp-asc-css-file-order{
  margin:12px 0 14px;
  padding:12px;
  border:1px solid rgba(148,163,184,.24);
  border-radius:14px;
  background:#fff;
}
.fp-asc-css-file-order h4{
  margin:0 0 8px;
  font-size:14px;
}
.fp-asc-css-file-order ol{
  margin:0;
  padding-left:22px;
}
.fp-asc-css-file-order li{
  margin:6px 0;
  color:#475569;
}
.fp-asc-css-file-order li code{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  margin-right:6px;
  padding:2px 6px;
  border-radius:999px;
  background:#fffbeb;
  color:#92400e;
  font-weight:800;
}
.fp-asc-css-file-order li strong{
  margin-right:8px;
  color:#111827;
}
.fp-asc-css-file-order li span{
  color:#64748b;
  font-size:12px;
}
.fp-asc-css-role-task{
  border-color:rgba(245,158,11,.28);
}
[data-fp-css-layout-alignment-pass="open_preview"]{
  --fp-alignment-preview-border: rgba(245,158,11,.28);
}
.fp-align-surface-banner,
.fp-align-surface-map,
.fp-align-surface-table,
.fp-align-surface-sidebar,
.fp-align-surface-actions{
  scroll-margin-top:90px;
}
.fp-align-command-group-case,
.fp-align-command-group-email,
.fp-align-command-group-destructive{
  gap:var(--fp-action-gap, 8px);
}

/* Batch 211–230 — Admin Save Layer Foundation preview */
.fp-asc-save-layer {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid rgba(127, 86, 217, .22);
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,255,.96));
}
.fp-asc-save-meta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 14px;
  margin: 14px 0;
}
.fp-asc-save-meta section,
.fp-asc-save-table-wrap {
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 16px;
  background: rgba(255,255,255,.9);
  padding: 14px;
}
.fp-asc-save-meta ul,
.fp-asc-save-meta ol {
  margin: 8px 0 0;
  padding-left: 18px;
}
.fp-asc-save-meta li {
  margin: 7px 0;
}
.fp-asc-save-meta li span,
.fp-asc-save-meta li small {
  display: block;
  color: #64748b;
}
.fp-asc-save-table-wrap {
  margin-top: 14px;
}
.fp-asc-save-table-wrap h4 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0 0 10px;
}
.fp-asc-save-table-wrap h4 span {
  min-width: 28px;
  padding: 2px 9px;
  border-radius: 999px;
  background: rgba(127, 86, 217, .1);
  color: #53389e;
  text-align: center;
  font-size: 12px;
}
.fp-asc-save-layer-table details pre {
  max-height: 220px;
  overflow: auto;
}
@media (max-width: 900px) {
  .fp-asc-save-meta {
    grid-template-columns: 1fr;
  }
}

/* Batch 231–250: Role Restriction Planning Preview (read-only/open mode) */
.fp-asc-restriction-plan {
  margin-top: 18px;
}
.fp-asc-restriction-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 16px;
}
.fp-asc-restriction-summary span,
.fp-asc-restriction-phases li,
.fp-asc-restriction-queue li {
  border: 1px solid rgba(148,163,184,.32);
  background: rgba(248,250,252,.86);
  border-radius: 14px;
  padding: 9px 11px;
}
.fp-asc-restriction-phases,
.fp-asc-restriction-queue {
  display: grid;
  gap: 8px;
  margin: 0;
  padding-left: 0;
  list-style: none;
}
.fp-asc-restriction-phases li,
.fp-asc-restriction-queue li {
  display: grid;
  gap: 3px;
}
.fp-asc-restriction-phases small,
.fp-asc-restriction-queue span {
  color: #64748b;
}
.fp-asc-restriction-role-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
  margin: 10px 0 16px;
}
.fp-asc-restriction-role-card {
  border: 1px solid rgba(99,102,241,.20);
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(248,250,252,.88));
  border-radius: 16px;
  padding: 12px;
}
.fp-asc-restriction-role-card h4 {
  margin: 0 0 6px;
}
.fp-asc-restriction-role-card code {
  display: inline-block;
  margin-bottom: 8px;
}
.fp-asc-restriction-role-card p {
  margin: 0 0 6px;
}
.fp-asc-restriction-role-card small,
.fp-asc-restriction-role-card em {
  display: block;
  color: #64748b;
}
.fp-asc-restriction-command-table,
.fp-asc-restriction-surface-table {
  margin-top: 12px;
}

/* Batch 251–280 — disabled controls preview / review snapshot */
.fp-asc-disabled-controls,
.fp-asc-review-snapshot {
  margin-top: 18px;
}
.fp-asc-disabled-control-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px;
}
.fp-asc-disabled-control {
  display: grid;
  gap: 4px;
  font-size: 12px;
}
.fp-asc-disabled-control span {
  font-weight: 700;
}
.fp-asc-disabled-control input[disabled] {
  width: 100%;
  min-height: 34px;
  border: 1px solid rgba(148, 163, 184, .55);
  border-radius: 10px;
  background: rgba(248, 250, 252, .92);
  padding: 7px 9px;
  color: #334155;
}
.fp-asc-disabled-group h4 span {
  font-size: 12px;
  opacity: .7;
}

/* Batch 281–320 — Admin Source draft save/runtime plan preview */
.fp-asc-draft-save-plan,
.fp-asc-runtime-read-plan,
.fp-asc-milestone-snapshot {
  margin-top: 18px;
}
.fp-asc-save-plan-grid {
  margin-top: 14px;
}
.fp-asc-save-plan-card ol {
  margin: 10px 0 0;
  padding-left: 18px;
}
.fp-asc-save-plan-card li {
  margin: 6px 0;
}
.fp-asc-save-plan-card code {
  margin-right: 8px;
}
.fp-asc-save-plan-card span {
  opacity: .78;
}
