@import url("./tokens.css");

/* Canonical density authority — exactly two reusable modes, never page-specific. */
.density-standard {
  --density-control-height: var(--control-height-standard);
  --density-icon-size: var(--icon-control-standard);
  --density-row-height: var(--table-row-height-standard);
  --density-badge-height: var(--badge-height-standard);
  --density-card-padding: var(--space-5);
  --density-gap: var(--space-4);
  --density-section-gap: var(--space-5);
  --density-font-size: var(--font-md);
}
.density-compact {
  --density-control-height: var(--control-height-compact);
  --density-icon-size: var(--icon-control-compact);
  --density-row-height: var(--table-row-height-compact);
  --density-badge-height: var(--badge-height-compact);
  --density-card-padding: var(--space-4);
  --density-gap: var(--space-2);
  --density-section-gap: var(--space-3);
  --density-font-size: var(--font-xs);
}
*{box-sizing: border-box;}
html{scroll-behavior: smooth; scroll-padding-top: 92px; /* exception: sticky header height (64px) + comfortable clearance, not a spacing-scale value */
  min-height: 100%;
  margin: 0;
  color: var(--color-ink);
  background: var(--color-canvas);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Arial, sans-serif}
body{min-height: 100%;
  margin: 0;
  color: var(--color-ink);
  background: var(--color-canvas);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: var(--font-lg);}
a{color: var(--color-brand);}
/* Layout primitives */
.ui-header,
.top{position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  min-height: var(--header-height);
  gap: var(--space-4);
  padding-inline:max(var(--page-padding),calc((100vw - var(--page-max-width)) / 2));
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);}
.shell{width:100%;max-width:var(--page-max-width);margin:var(--space-6) auto;padding:0 var(--page-padding) var(--page-padding);}
.grid.two{display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap:var(--workspace-panel-gap);}
.view{display:none;}
.view.active{display:block;}
/* Branding and navigation */
.brand{display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 190px;color: inherit; text-decoration: none}
.mark{display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-lg);
  color: var(--color-surface);
  background: linear-gradient(135deg, var(--color-brand), var(--color-brand-strong));
  font-weight: 800;}
.brand strong{display: block;}
.brand small{display: block;color: var(--color-muted); font-size: var(--font-2xs)}
.top nav{display: flex; flex: 1; gap: var(--space-1);}
.account{display: flex; align-items: center; gap: var(--space-3); font-size: var(--font-sm);}
.nav,
.top nav a{display: inline-flex;
  align-items: center;
  height: var(--navigation-item-height);
  padding: 0 var(--space-3);
  border-radius: var(--radius-md);
  color: var(--color-muted);
  background: transparent;
  text-decoration: none;}
.nav:hover,
.top nav a:hover,
.top nav a:focus-visible{color: var(--color-brand-strong);
  background: var(--color-brand-soft);}
/* Reusable card */
.ui-card,
.panel{min-width: 0;
  padding: var(--density-card-padding);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-subtle);}
.ui-card__header,
.panel-head{display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-4);}
.panel h1,
.panel h2{margin: 0 0 var(--space-1); font-size: var(--font-3xl);}
.panel p{margin: 0; color: var(--color-muted);}
/* Reusable form controls */
.ui-field{display: block;
  margin-bottom: var(--space-3);
  font-size: var(--font-sm);
  font-weight: 650;}
label{display: block;
  margin-bottom: var(--space-3);
  font-size: var(--font-sm);
  font-weight: 700;}
input:focus,
select:focus,
textarea:focus{border-color: var(--color-brand);
  box-shadow: var(--focus-ring);}
input:disabled,
select:disabled,
textarea:disabled{color:var(--color-disabled-text);background:var(--color-disabled-surface);border-color:var(--color-disabled-border);cursor:not-allowed;opacity:1;}
.fields{display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 var(--space-3);}
.span2{grid-column: 1 / -1;}
.consent{display: flex; align-items: flex-start; gap: var(--space-2); font-weight: 500;}
.consent input{width: var(--space-4); height: var(--space-4); margin: 1px 0 0; accent-color: var(--color-ink); flex: 0 0 auto;}
.password{position: relative;}
.password input{padding-right: 58px;}
.password-toggle.ui-button{position:absolute;top:50%;right:6px;transform:translateY(-50%);border:1px solid transparent;background:transparent;color:var(--color-muted);min-width:0;max-width:none;padding-inline:var(--space-2);}
.password-toggle.ui-button:hover:not(:disabled){border-color:transparent;background:transparent;color:var(--color-ink);}
.password-toggle.ui-button:focus-visible{outline:var(--focus-outline-width) solid var(--color-brand);outline-offset:2px;}
.password-toggle.ui-button.is-revealed{color:var(--color-ink);}
.error{min-height:2.8em;max-height:2.8em;margin: var(--space-1) 0;color:var(--color-danger);font-size:var(--font-xs);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
/* Canonical button geometry — height is intentionally NOT declared here.
   Height is pinned independently per site (Web User / Admin / Public) to that
   site's own input field height — see the site-scoped block below. This block
   only carries the properties shared regardless of height (padding, width
   bounds, border, color, typography). */
.ui-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  min-width:var(--button-standard-min-width);
  max-width:var(--button-standard-max-width);
  padding: 0 var(--space-4);
  gap: var(--space-2);
  color:var(--color-ink);
  background:var(--color-surface);
  border:1px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  font-size:var(--font-sm);
  font-weight:600;
  line-height:1;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
  box-sizing:border-box;
  cursor:pointer;
  transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);
}
.ui-button.compact{
  min-width:var(--button-compact-min-width);
  max-width:var(--button-compact-max-width);
  padding: 0 var(--space-3);
  font-size:var(--font-xs);
}
/* Button height per site — each site's button height is pinned independently
   to that site's own input field height (see --control-height-standard /
   --control-height-compact as consumed by .density-standard / .density-compact
   for inputs). Deliberately separate declarations, not derived from one
   another. Admin's own height rule lives further down, merged into its
   existing body.admin-portal .ui-button block rather than duplicated here. */
body.density-standard .ui-button{height:40px;min-height:40px;}
body.public-body .ui-button{height:32px;min-height:32px;}
.ui-button:hover:not(:disabled){border-color:var(--color-brand);}
.ui-button:focus-visible{outline:var(--focus-outline-width) solid var(--color-brand);outline-offset:var(--focus-outline-offset);box-shadow:var(--focus-ring);}
.ui-button.ghost{background:transparent;border-color:transparent;}
.ui-button:disabled{color:var(--color-disabled-text);background:var(--color-disabled-surface);border-color:var(--color-disabled-border);opacity:1;cursor:not-allowed;box-shadow:none;}
.ui-button.full,.full{width:100%;max-width:none;}
.ui-actions,.actions{display:flex;align-items:center;gap: var(--space-2);flex-wrap:nowrap;min-width:0;}
.ui-actions.equal-buttons>.ui-button,.actions.equal-buttons>.ui-button{flex:1 1 0;min-width:0;max-width:none;}


/* Canonical semantic actions and interaction states. One class owns each action meaning. */
.ui-button.primary,
.ui-action-primary{color:var(--color-surface);background:var(--color-brand);border-color:var(--color-brand);}
.ui-button.primary:hover:not(:disabled),
.ui-action-primary:hover:not(:disabled){color:var(--color-surface);background:var(--color-brand-strong);border-color:var(--color-brand-strong);}
.ui-button.secondary,
.ui-action-secondary{color:var(--color-brand-strong);background:var(--color-info-soft);border-color:var(--color-info-border);}
.ui-button.secondary:hover:not(:disabled),
.ui-action-secondary:hover:not(:disabled){color:var(--color-brand-strong);background:var(--color-brand-soft);border-color:var(--color-brand);}
.ui-button.destructive,
.ui-action-destructive{color:var(--color-danger);background:var(--color-danger-soft);border-color:var(--color-danger-border);}
.ui-button.destructive:hover:not(:disabled),
.ui-action-destructive:hover:not(:disabled){color:var(--color-danger-strong);background:var(--color-danger-hover-soft);border-color:var(--color-danger);}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:var(--focus-outline-width) solid var(--color-brand);outline-offset:var(--focus-outline-offset);box-shadow:var(--focus-ring);}
:where(input,select,textarea)[aria-invalid="true"],
:where(input,select,textarea).is-invalid{border-color:var(--color-danger);box-shadow:0 0 0 1px var(--color-danger);}
.ui-validation-error{color:var(--color-danger);}
.ui-status.neutral,.badge.neutral{color:var(--color-neutral);background:var(--color-neutral-soft);}
.ui-status.info,.badge.info{color:var(--color-info);background:var(--color-info-soft);}
.ui-status.success,.ui-status.ok,.badge.success,.badge.ok{color:var(--color-success);background:var(--color-success-soft);}
.ui-status.warning,.ui-status.warn,.badge.warning,.badge.warn{color:var(--color-warning);background:var(--color-warning-soft);}
.ui-status.failure,.ui-status.bad,.badge.failure,.badge.bad{color:var(--color-danger);background:var(--color-danger-soft);}
.ui-loading,[aria-busy="true"]{cursor:progress;}
.ui-loading::before{width:var(--space-4);height:var(--space-4);border:var(--border-strong) solid var(--color-loading-track);border-top-color:var(--color-brand);border-radius:var(--radius-pill);content:"";animation:ui-spin 800ms linear infinite;}
@keyframes ui-spin{to{transform:rotate(360deg)}}

/* Section-level action alignment: one row where space permits, equal geometry within each group. */
.campaign-actions,.admin-list-pager .ui-actions,.admin-action-card>.ui-actions{display:flex;align-items:center;gap: var(--space-2);flex-wrap:nowrap;min-width:0}
.campaign-actions>.ui-button,.download-actions>.ui-button,.admin-result-filter-actions>.ui-button{flex:1 1 0;min-width:0;max-width:none}
.admin-list-pager .ui-actions>.ui-button{min-width:var(--button-compact-min-width);max-width:var(--button-compact-max-width)}
/* Toolbars and navigation groups */
.ui-toolbar{display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;}
.result-tools input{width: 220px; margin: 0;}
.pager{justify-content: flex-end; margin-top: var(--space-4);}
/* Upload, dividers and progress */
.drop{display: flex; align-items: center; gap: var(--space-4); padding: var(--space-4); background: var(--color-surface-subtle); border: 1px dashed var(--color-info-border); border-radius: var(--radius-lg);}
.drop.drag{background: var(--color-info-soft); border-color: var(--color-brand);}
.drop div{min-width: 0;}
.drop strong{display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
.drop small{display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;margin-top: var(--space-1); color: var(--color-muted)}
.divider{display: flex; align-items: center; gap: var(--space-3); margin: var(--space-4) 0; color: var(--color-muted); font-size: var(--font-xs);}
.divider::before{flex: 1; height: 1px; content: ""; background: var(--color-border);}
.divider::after{flex: 1; height: 1px; content: ""; background: var(--color-border);}
.progress{height: var(--space-2); margin: var(--space-4) 0 12px; overflow: hidden; background: var(--color-loading-track); border-radius: var(--radius-pill);}
.progress div{width: 0; height: 100%; background: var(--color-brand); transition: width 300ms ease;}
.status-text{min-height:40px;overflow-wrap:anywhere;}
/* Reusable status */
.ui-status,
.badge{display: inline-flex; align-items: center; height: var(--density-badge-height); min-height: var(--density-badge-height); padding: 0 var(--space-2); border-radius: var(--radius-pill); font-size: var(--font-xs); font-weight: 700; white-space: nowrap;}
.finance-alert{padding: var(--space-3) var(--space-3); color: var(--color-warning); background: var(--color-warning-soft); border: 1px solid var(--color-warning-border); border-radius: var(--radius-lg);}
/* Reusable metrics */
.ui-metrics{display: grid; gap: var(--space-3); margin: var(--space-3) 0;}
.metrics{display: grid; margin: var(--space-3) 0;grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2)}
.finance-metrics{display: grid; gap: var(--space-3);grid-template-columns: repeat(6, minmax(0, 1fr)); margin: var(--space-4) 0}
.ui-metrics > div,
.metrics > div,
.finance-metrics > div{min-width: 0;
  padding: var(--space-3);
  background: var(--color-surface-subtle);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);}
.ui-metrics small,
.metrics small,
.finance-metrics small{display: block;color: var(--color-muted); font-size: var(--font-2xs)}
.ui-metrics strong,
.metrics strong,
.finance-metrics strong{display: block;margin-top: 4px; font-size: var(--font-2xl); overflow-wrap: anywhere}
/* Reusable data grid */
.ui-data-grid,
.table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);}
table{width:100%;max-width:100%;min-width:0;border-collapse:collapse;}
td{height:var(--density-row-height);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle;font-size:var(--font-sm);white-space:normal;overflow-wrap:anywhere;word-break:normal;}
th{height:var(--density-row-height);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:center;vertical-align:middle;background:var(--color-surface-subtle);font-size:var(--font-2xs);font-weight:700;text-transform:uppercase;letter-spacing:0.04em;white-space:normal;overflow-wrap:anywhere;}
td.is-numeric,td[data-type="number"]{text-align:right;font-variant-numeric:tabular-nums;}
td.is-text{ text-align:left; }
.admin-actions-column{text-align:center;}
td small{display: block; margin-top: var(--space-1); color: var(--color-muted);}
.empty{padding: var(--space-5); color: var(--color-muted); text-align: center;}
.mini-table{margin: var(--space-4) 0; overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius-lg);}
.mini-row{display: grid; grid-template-columns: 1fr auto; gap: var(--space-3); padding: var(--space-3) var(--space-3); border-bottom: 1px solid var(--color-border);}
.mini-head{display: grid; grid-template-columns: 1fr auto; gap: var(--space-3); padding: var(--space-3) var(--space-3); border-bottom: 1px solid var(--color-border);background: var(--color-surface-subtle); font-size: var(--font-xs); font-weight: 700}
.mini-row:last-child{border-bottom: 0;}
/* Profiles and activity */
.profile-empty{padding: var(--space-7); color: var(--color-muted); text-align: center;}
.profile-grid{display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4);}
.profile-card{padding: var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-lg);}
.profile-card h3{margin: 0 0 var(--space-3);}
.kv{display: grid; grid-template-columns: 150px 1fr; gap: var(--space-2); padding: 8px 0; border-bottom: 1px solid var(--color-neutral-soft);}
.kv:last-child{border-bottom: 0;}
.kv span:first-child{color: var(--color-muted);}
.activity{display: flex; flex-direction: column; gap: var(--space-2);}
.activity-item{display: grid; grid-template-columns: 160px 120px 1fr; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border); font-size: var(--font-sm);}
.activity-item time{color: var(--color-muted);}
/* Modal and toast */
.ui-modal,
.modal{position: fixed; inset: 0; z-index: 100; display: none; align-items: center; justify-content: center; padding: var(--space-5); background: var(--color-overlay); backdrop-filter: blur(var(--space-1));}
.ui-modal.open,
.modal.open{display: flex;}
.ui-modal__panel{width:min(var(--modal-width-small),100%);padding:var(--space-5); background: var(--color-surface); border-radius: var(--radius-xl); box-shadow: var(--shadow-modal);}
.login-card{box-sizing:border-box;width:var(--modal-width-small);max-width:100%;height:540px;min-height:540px;max-height:540px;padding: var(--space-7);overflow:hidden;background:var(--color-surface);border-radius: var(--radius-xl);box-shadow:var(--shadow-modal);}
.ui-modal__panel.modal-small{width:min(var(--modal-width-small),100%)}
.ui-modal__panel.modal-medium{width:min(var(--modal-width-medium),100%)}
.ui-modal__panel.modal-large{width:min(var(--modal-width-large),100%)}
.login-brand{display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 190px;margin-bottom: var(--space-5)}
.login-brand h1{margin: 0; font-size: var(--font-3xl);}
.login-brand p{margin: var(--space-1) 0 0; color: var(--color-muted);}
.legal{display: block; margin-top: var(--space-4); color: var(--color-muted); text-align: center;}
.ui-toast{position: fixed; right: var(--space-5); bottom: var(--space-5); z-index: 50; max-width: 420px; padding: var(--space-3) var(--space-4); color: var(--color-surface); background: var(--color-toast); border-radius: var(--radius-md); box-shadow: var(--shadow-subtle); opacity: 0; pointer-events: none; transform: translateY(var(--space-2)); transition: opacity 200ms ease, transform 200ms ease;}
.ui-toast.show{opacity:1;transform:none;}
/* Public information surfaces */
.site-footer{width:100%;max-width:var(--page-max-width);margin:0 auto;padding:var(--space-3) var(--page-padding) var(--space-4); color: var(--color-muted); text-align: center; font-size: var(--font-2xs);}
.site-footer nav{display: flex; justify-content: center; flex-wrap: wrap; gap: var(--space-2) 16px; margin-bottom: 8px;}
.site-footer a{color: var(--color-muted); text-decoration: none;}
.site-footer a:hover{color: var(--color-brand); text-decoration: underline;}
.site-footer small{font-size: var(--font-2xs);}
.finance-grid{align-items: start;}
.finance-grid section{min-width: 0;}
.finance-grid h2{margin: 0 0 12px; font-size: var(--font-lg);}
.finance-note{margin: var(--space-4) 0 0; color: var(--color-muted); font-size: var(--font-sm);}

/* Unified Workspace shell, controls and export actions */
#workspaceAppHeader.workspace-header{display:block;min-height:0;height:auto;padding: 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}
.workspace-header-inner{width:100%;max-width:var(--page-max-width);margin:0 auto;padding-inline:var(--page-padding);display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand spacer account" "nav nav nav";align-items:center;column-gap: var(--space-4);row-gap:var(--space-1);padding-block:var(--space-2) var(--space-3)}
.workspace-header-inner>.brand{grid-area:brand;min-width:0}
.workspace-header-inner>.account{grid-area:account;justify-self:end;min-width:0}
.workspace-header-inner>.workspace-nav{grid-area:nav;display:flex;align-items:center;justify-content:flex-start;gap: var(--space-2);min-width:0;overflow-x:auto;scrollbar-width:thin;padding-top: 1px}
.workspace-header-inner>.workspace-nav .nav{flex:0 0 auto;min-width:0;max-width:none;height:var(--navigation-item-height);padding: 0 var(--space-3);border-color:transparent;background:transparent;color:var(--color-muted);font-weight:600;}
.workspace-header-inner>.workspace-nav .nav.active,
.workspace-header-inner>.workspace-nav .nav[aria-current="page"]{background:var(--color-brand-soft);color:var(--color-brand-strong);border-color:var(--color-info-border);font-weight:700;}
.workspace-header-inner>.workspace-nav .nav:hover:not(:disabled),.workspace-header-inner>.workspace-nav .nav:focus-visible{background:var(--color-brand-soft);border-color:var(--color-brand)}
#workspaceAppHeader .account{gap: var(--space-2)}
#workspaceAppHeader .account #userLabel{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
input::placeholder,textarea::placeholder{color:var(--color-disabled-text);font-weight:400;opacity:1}
#chooseFile{flex:0 0 auto;min-width:170px}
.campaign-actions{margin-top: var(--space-3)}
.download-actions{display:flex;align-items:center;justify-content:center;gap: var(--space-2);flex-wrap:nowrap;min-width:0;margin-top: var(--space-3)}
.download-actions .ui-button{width:100%;max-width:180px}
.result-tools{justify-content:flex-end}
.result-tools .ui-button{min-width:150px}
@media (max-width:600px){
  .workspace-header-inner{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand account" "nav nav"}
  .workspace-header-inner>.account #userLabel{max-width:100px}
  .campaign-actions,.download-actions{grid-template-columns:1fr}
  .result-tools .ui-button{width:100%}
}
@media (max-width: 1050px) {
  .finance-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .ui-header, .top { min-height: var(--header-height); height: auto; flex-wrap: wrap; padding: var(--space-3) var(--space-5); }
  .top nav { order: 3; width: 100%; overflow: auto; }
  .grid.two, .profile-grid { grid-template-columns: 1fr; }
  .account { margin-left: auto; }
}
@media (max-width: 700px) {
  html { scroll-padding-top: 145px; }
}
@media (max-width: 650px) {
  .finance-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .fields { grid-template-columns: 1fr; }
  .span2 { grid-column: auto; }
  .ui-actions, .actions, .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ui-card__header, .panel-head { flex-direction: column; }
  .result-tools { width: 100%; flex-direction: column; align-items: stretch; }
  .result-tools input { width: 100%; }
  .activity-item { grid-template-columns: 1fr; }
  .top .brand { min-width: 0; }
}

@media (min-width: 1440px) {
  .shell,.workspace-header-inner,.admin-shell,.public-layout-container,.site-footer{padding-left:var(--page-padding-large);padding-right:var(--page-padding-large)}
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto; transition-duration: 0.01ms; animation-duration: 0.01ms; animation-iteration-count: 1; }
}
/* Canonical public information system — compact newspaper/legal-document theme */
.public-body{display:flex;flex-direction:column;min-height:100vh;background:var(--color-surface-subtle);color:var(--color-ink);font-size:var(--font-md);line-height:1.42}
.public-layout-container{width:100%;max-width:var(--public-reading-max);margin-inline:auto;padding-inline:var(--page-padding)}
.public-site-header{position:sticky;top:0;z-index:40;width:100%;background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-subtle)}
.public-header-inner{display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(190px,1fr);align-items:center;gap: var(--space-4);min-height:58px;padding-block:var(--space-2)}
.public-brand{display:flex;align-items:center;gap: var(--space-2);color:var(--color-brand-strong);text-decoration:none;min-width:0}
.public-brand .mark{flex:0 0 auto}
.public-brand span:last-child{display:grid;line-height:1.12}
.public-brand strong{font-size:var(--font-lg);letter-spacing:.02em}
.public-brand small{color:var(--color-muted);font-size:var(--font-2xs)}
.public-group-nav{display:flex;align-items:center;justify-content:center;gap: var(--space-1)}
.public-nav-group{position:relative}
.public-nav-group summary{min-width:78px;padding: var(--space-2) var(--space-3);border:1px solid transparent;border-radius: var(--radius-sm);background:transparent;color:var(--color-brand-strong);font-size:var(--font-sm);font-weight:750;text-align:left;cursor:pointer;list-style:none;transition:background-color .14s ease,border-color .14s ease,color .14s ease}
.public-nav-group summary::-webkit-details-marker{display:none}
.public-nav-group summary::after{content:'▾';display:inline-block;margin-left: 8px;font-size:var(--font-2xs);transition:transform .14s ease}
.public-nav-group[open] summary::after{transform:rotate(180deg)}
.public-nav-group summary:hover,.public-nav-group summary:focus-visible,.public-nav-group[open] summary{background:var(--color-brand-soft);border-color:var(--color-info-border);color:var(--color-brand-strong)}
.public-nav-menu{position:absolute;top:calc(100% + var(--space-1));left:0;display:grid;min-width:235px;padding: 4px;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius: var(--radius-sm);box-shadow:var(--shadow-subtle);opacity:1;transform:translateY(0);transition:opacity var(--transition-fast) ease,transform var(--transition-fast) ease,display var(--transition-fast) allow-discrete;}
@keyframes public-nav-menu-open{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
.public-nav-group[open] .public-nav-menu{animation:public-nav-menu-open var(--transition-fast) ease;}
.public-nav-group:not([open]) .public-nav-menu{display:none;opacity:0;transform:translateY(-6px);}
.public-nav-menu a{padding: 8px 8px;border-radius: var(--radius-sm);color:var(--color-ink);font-size:var(--font-sm);line-height:1.25;text-decoration:none;text-align:left}
.public-nav-menu a:hover,.public-nav-menu a:focus-visible{background:var(--color-brand-soft);color:var(--color-brand-strong)}
.public-workspace-link{justify-self:end;font-size:var(--font-xs)}
.ui-button.public-workspace-link{max-width:none;white-space:nowrap}
.public-page-shell{flex:1;margin-top: var(--space-4);margin-bottom: 32px}
.public-page-title{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap: var(--space-4);padding: 0 0 13px;border-bottom:2px solid var(--color-brand-strong)}
.public-page-title h1{grid-column:1/10;max-width:none;margin: 0 0 4px;font-family:Georgia,'Times New Roman',serif;font-size:var(--font-display);font-weight:700;line-height:1.08;letter-spacing:-.012em}
.public-page-title p{grid-column:1/10;max-width:none;margin: 0;color:var(--color-muted);font-size:var(--font-md);line-height:1.4}
.public-document{padding: 0}
.public-document>div{display:block}
.public-document-section{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap: var(--space-4);row-gap: var(--space-2);padding: 16px 0;border-bottom:1px solid var(--color-border)}
.public-document-section:last-child{border-bottom:0}
.public-document-section>div:first-child{grid-column:1/4}
.public-document-section>div:last-child{grid-column:4/13}
.public-document-section>article:only-child,.public-document-section>.public-document-block{grid-column:1/13}
.public-document-section>div:only-child{grid-column:1/13}
.public-document-section>div:first-child>p:first-child:not(:only-child){margin-top: 1px;color:var(--color-muted);font-size:var(--font-2xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.public-document-block{max-width:none;padding: 2px 0}
.public-document h2{max-width:none;margin: 2px 0 8px;font-family:Georgia,'Times New Roman',serif;font-size:var(--font-xl);line-height:1.22}
.public-document h3{max-width:none;margin: 12px 0 4px;font-size:var(--font-lg);line-height:1.3}
.public-document p{max-width:none;margin: var(--space-1) 0;line-height:1.44}
.public-document li{max-width:none;line-height:1.42}
.public-document a{color:var(--color-brand);text-underline-offset:2px}
.public-list{margin: var(--space-1) 0;padding-left: 24px}
.public-list li{margin:var(--space-1) 0;padding-left: var(--border-strong)}
.public-disclosure{max-width:none;margin: var(--space-1) 0;border:1px solid var(--color-border-strong);border-radius: var(--radius-sm);background:var(--color-surface)}
.public-disclosure summary{padding: var(--space-2) var(--space-3);font-size:var(--font-md);font-weight:750;cursor:pointer}
.public-disclosure summary:hover,.public-disclosure summary:focus-visible{background:var(--color-brand-soft)}
.public-disclosure> :not(summary){margin-left: 12px;margin-right: 12px}
.public-disclosure[open]{padding-bottom:4px}
.public-table{width:100%;min-width:680px;border-collapse:collapse;table-layout:fixed;font-size:var(--font-sm)}
.public-table th,.public-table td{height:var(--density-row-height);padding:var(--space-2) var(--space-3);border:1px solid var(--color-neutral-border);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.public-table thead th{background:var(--color-neutral-soft);color:var(--color-brand-strong);font-size:var(--font-xs);letter-spacing:.025em;text-transform:uppercase}
.public-document div:has(>.public-table){max-width:100%;overflow:auto;grid-column:1/13}
.public-filter-form{max-width:none;padding:var(--space-3);border:1px solid var(--color-neutral-border);border-radius: var(--radius-sm);background:var(--color-disabled-surface)}
.public-filter-form div{display:flex;gap: var(--space-2)}
.public-filter-form input{flex:1;min-height:var(--density-control-height);height:var(--density-control-height);padding-inline:var(--space-3)}
.public-index-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap: 0;padding: 16px 0;border-top:1px solid var(--color-border)}
.public-index-item{grid-column:span 6;padding: var(--space-3) 16px 12px 0;border:0;border-bottom:1px solid var(--color-disabled-border);border-radius: 0;background:transparent}
.public-index-item:nth-child(even){padding-left: 16px;border-left:1px solid var(--color-disabled-border)}
.public-index-item h2{margin: 0 0 4px;font-family:Georgia,'Times New Roman',serif;font-size:var(--font-lg)}
.public-index-item p{max-width:none;margin: 0;color:var(--color-muted);font-size:var(--font-sm);line-height:1.42}
.public-index-item a{color:var(--color-brand-strong)}
.public-site-footer{width:100%;background:var(--color-surface);border-top:2px solid var(--color-brand-strong)}
.public-footer-inner{padding-top: var(--space-4);padding-bottom: 12px}
.public-footer-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap: var(--space-4)}
.public-footer-grid section{grid-column:span 3;display:flex;flex-direction:column;align-items:flex-start;gap: var(--space-1)}
.public-footer-grid section:last-child{grid-column:span 4}
.public-footer-grid h2{margin:0 0 4px;color:var(--color-brand-strong);font-size:var(--font-xs);letter-spacing:.065em;text-transform:uppercase}
.public-footer-grid a,.public-footer-meta a{color:var(--color-muted);font-size:var(--font-xs);line-height:1.32;text-decoration:none}
.public-footer-grid a:hover,.public-footer-grid a:focus-visible,.public-footer-meta a:hover,.public-footer-meta a:focus-visible{color:var(--color-brand);text-decoration:underline}
.public-footer-meta{display:flex;justify-content:flex-start;align-items:center;gap: var(--space-4);margin-top: 11px;padding-top: 8px;border-top:1px solid var(--color-border);color:var(--color-muted);font-size:var(--font-2xs)}
.public-not-found{text-align:left;padding-top: 32px}
.public-not-found .public-page-title,.public-not-found .public-document-block{margin-inline:0}
.error-code{margin:0;color:var(--color-brand);font-size:var(--font-display);font-weight:800}
@media(max-width:1050px){.public-header-inner{grid-template-columns:minmax(165px,1fr) auto minmax(165px,1fr)}.public-page-title h1,.public-page-title p{grid-column:1/12}.public-document-section>div:first-child{grid-column:1/5}.public-document-section>div:last-child{grid-column:5/13}}
@media(max-width:820px){.public-header-inner{grid-template-columns:1fr auto;gap: var(--space-2)}.public-group-nav{grid-column:1/-1;grid-row:2;justify-content:flex-start;border-top:1px solid var(--color-border);padding-top: 4px}.public-nav-group summary{min-width:0}.public-nav-menu{position:fixed;top:104px;left:var(--space-4);right:var(--space-4);min-width:0}.public-page-title{column-gap: var(--space-3)}.public-document-section{column-gap:12px}.public-document-section>div:first-child,.public-document-section>div:last-child{grid-column:1/13}.public-index-item{grid-column:1/13;padding: var(--space-3) 0;border-left:0}.public-footer-grid section,.public-footer-grid section:last-child{grid-column:span 4}}
@media(max-width:560px){.public-body{font-size:var(--font-sm)}.public-header-inner{min-height:52px;padding-block:var(--space-2)}.public-brand small{display:none}.public-workspace-link{font-size:var(--font-xs)}.public-group-nav{gap: var(--space-1)}.public-nav-group{flex:1}.public-nav-group summary{width:100%;padding: 8px 4px;text-align:center}.public-nav-menu{top:99px;left:14px;right:14px}.public-page-shell{margin-top: 13px}.public-page-title h1,.public-page-title p{grid-column:1/13}.public-document-section{padding:13px 0}.public-footer-grid{gap:12px}.public-footer-grid section,.public-footer-grid section:last-child{grid-column:1/13}.public-footer-meta{align-items:flex-start;flex-direction:column;gap: var(--space-1)}.public-filter-form div{display:grid}.public-table{min-width:600px}}
/* Admin operational control center — one authoritative compact system */
body.admin-portal>.ui-header{min-height:var(--header-height);padding-inline:var(--space-5);gap: var(--space-3)}
body.admin-portal>.ui-header .brand{min-width:0}
body.admin-portal>.ui-header .account{gap:var(--space-2);min-width:0}
body.admin-portal>.ui-header .account>span{max-width:22ch;overflow:hidden;text-overflow:ellipsis}
body.admin-portal .ui-button{white-space:nowrap;height:32px;min-height:32px;}
body.admin-portal .ui-button.ghost{padding-inline:12px}
body.admin-portal input,
body.admin-portal select{height:var(--density-control-height);min-height:var(--density-control-height);padding-inline:var(--space-3)}
body.admin-portal textarea{padding:var(--space-3);resize:vertical}
body.admin-portal .ui-field{gap: var(--space-1);font-size:var(--font-xs)}
.admin-shell{width:100%;max-width:var(--page-max-width);margin:0 auto;padding:var(--page-padding);min-width:0}









.admin-workspace{display:grid;min-width:0;max-width:100%;align-content:start;gap: var(--grid-gap-standard);overflow:clip}
.admin-module{display:grid;min-width:0;gap: var(--grid-gap-standard)}
.admin-operational-stack{display:grid;grid-template-columns:minmax(0,1fr);gap: var(--grid-gap-standard);min-width:0;width:100%}
.admin-operational-stack>.admin-data-card{min-width:0;width:100%}
.admin-operational-stack>.admin-operational-stack{min-width:0;width:100%}
.admin-data-card{min-width:0;padding:var(--density-card-padding);border-radius:var(--radius-lg);box-shadow:var(--shadow-none)}
.admin-data-card>.ui-card__header{min-height:32px;margin-bottom: 8px;padding-bottom: 8px;border-bottom:1px solid var(--color-border)}
.admin-data-card h2{margin: 0;font-size:var(--font-lg);line-height:1.35}
.admin-data-card pre{max-height:28rem;margin: 0;overflow:auto;padding: 8px;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-surface-subtle);border:1px solid var(--color-border);border-radius: var(--radius-lg);font-size:var(--font-xs)}
.ui-data-grid.table-wrap{max-width:100%;overflow:auto;border-radius: var(--radius-lg);overscroll-behavior-inline:contain}
.admin-table{width:100%;border-collapse:collapse;font-size:var(--font-xs)}
.admin-table td{height:var(--density-row-height);padding:var(--space-2) var(--space-3);vertical-align:top;text-align:left;border-bottom:1px solid var(--color-border);line-height:1.35;overflow-wrap:anywhere;word-break:normal}
.admin-table th{height:var(--density-row-height);padding:var(--space-2) var(--space-3);vertical-align:top;text-align:left;border-bottom:1px solid var(--color-border);line-height:1.35;overflow-wrap:anywhere;word-break:normal;position:sticky;top:0;z-index:1;color:var(--color-brand-strong);background:var(--color-surface-subtle);font-size:var(--font-2xs);letter-spacing:.02em;white-space:nowrap}
.admin-table tbody tr:last-child td{border-bottom:0}
.admin-table tbody tr:hover{background:var(--color-brand-soft)}
.admin-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap: var(--space-2);min-width:0;margin-bottom: 8px}
.admin-metric{min-width:0;padding:var(--space-3);border:1px solid var(--color-border);border-radius: var(--radius-lg);background:var(--color-surface)}
.admin-metric small{display:block;color:var(--color-muted);font-size:var(--font-2xs);line-height:1.3}
.admin-metric strong{display:block;margin-top: var(--space-1);font-size:var(--font-lg);line-height:1.35;overflow-wrap:anywhere}
.admin-detail-record{display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr);margin: 0;border:1px solid var(--color-border);border-radius: var(--radius-lg);overflow:hidden}
.admin-detail-record dt{min-width:0;margin: 0;padding: var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);line-height:1.4;color:var(--color-muted);background:var(--color-surface-subtle);font-size:var(--font-2xs);font-weight:700}
.admin-detail-record dd{min-width:0;margin: 0;padding: var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);line-height:1.4;font-size:var(--font-xs);overflow-wrap:anywhere}
.admin-detail-record dt:last-of-type{border-bottom:0}
.admin-detail-record dd:last-of-type{border-bottom:0}
.admin-disclosure{border:1px solid var(--color-border);border-radius: var(--radius-lg);background:var(--color-surface);overflow:hidden}
.admin-disclosure>summary{display:flex;align-items:center;min-height:40px;gap: var(--space-2);padding: var(--space-2) var(--space-3);cursor:pointer;font-size:var(--font-xs);font-weight:700;list-style:none;outline:0}
.admin-disclosure>summary::-webkit-details-marker{display:none}
.admin-disclosure>summary::after{content:"+";margin-left: auto;flex:0 0 auto;color:var(--color-muted);font-size:var(--font-lg)}
.admin-disclosure[open]>summary{border-bottom:1px solid var(--color-border);background:var(--color-surface-subtle)}
.admin-disclosure[open]>summary::after{content:"−"}
.admin-disclosure__body{padding: var(--space-3);min-width:0}
.admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap: var(--space-3)}
.admin-action-card{width:min(880px,calc(100vw - 24px));max-height:90vh;overflow:auto;padding: 16px}
.admin-approval{padding:var(--space-3);border:1px solid var(--color-border);border-radius: var(--radius-lg)}
.admin-row-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap: var(--space-2)}
.admin-row-actions .ui-button{min-width:var(--button-compact-min-width);max-width:var(--button-compact-max-width);padding-inline:12px;font-size:var(--font-xs);white-space:nowrap}
.admin-module .ui-toolbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));align-items:end;gap: var(--space-2)}
.admin-module .ui-toolbar>.ui-button{align-self:end}
.admin-module .profile-empty{min-height:72px;margin: 0;padding: 24px 12px;color:var(--color-muted);text-align:center}
body.admin-portal .ui-status{height:var(--density-badge-height);min-height:var(--density-badge-height);padding-inline:var(--space-2);font-size:var(--font-2xs)}
body.admin-portal .ui-toast{right:var(--space-5);bottom:var(--space-5);max-width:min(420px,calc(100vw - 20px));padding: var(--space-2) var(--space-3)}
body.admin-portal .ui-modal{padding:var(--space-3)}
@media(max-width:760px){.admin-form-grid{grid-template-columns:1fr}.admin-detail-record{grid-template-columns:1fr}.admin-detail-record dt{border-bottom:0;padding-bottom:2px}.admin-detail-record dd{padding-top:2px}.admin-module .ui-toolbar{grid-template-columns:1fr 1fr}}
@media(max-width:480px){body.admin-portal>.ui-header{align-items:flex-start;flex-direction:column}.admin-module .ui-toolbar{grid-template-columns:1fr}.admin-data-card{padding:var(--space-3)}}
/* Design-system validation: canonical Admin presentation components */
.admin-list-component{display:grid;gap: var(--space-3);min-width:0;width:100%}
.admin-detail-component{display:grid;gap: var(--space-3);min-width:0;width:100%}
.admin-list-controls{display:flex;align-items:end;gap: var(--space-2);flex-wrap:wrap;min-width:0}
.admin-list-filter{flex:1 1 260px;max-width:520px}
.admin-list-sort{flex:0 1 220px}
.admin-list-pager{display:flex;align-items:center;justify-content:space-between;gap: var(--space-3);flex-wrap:wrap;color:var(--color-muted);font-size:var(--font-xs)}
.admin-list-detail{display:grid;gap: var(--grid-gap-standard);min-width:0}
.admin-list-detail:empty{display:none}
.admin-value-link{display:inline-block;max-width:100%;overflow-wrap:anywhere;word-break:break-word}
.admin-detail-component>.admin-disclosure+.admin-disclosure{margin-top: var(--space-2)}
@media(max-width:760px){.admin-list-controls{align-items:stretch;flex-direction:column}.admin-list-filter,.admin-list-sort{width:100%;max-width:none;flex-basis:auto}.admin-list-pager{align-items:flex-start;flex-direction:column}}
/* authoritative Customer Results investigation interface */
.admin-result-filterbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));align-items:end;gap: var(--space-2);min-width:0}
.admin-result-filterbar>.ui-field{min-width:0}
.admin-result-filterbar input{width:100%;min-width:0}
.admin-result-filterbar select{width:100%;min-width:0}
.admin-result-filter-actions{display:flex;align-items:center;flex-wrap:nowrap;gap: var(--space-2);min-width:0}
.admin-result-pager{display:flex;align-items:center;justify-content:space-between;gap: var(--space-3);flex-wrap:wrap;margin-top: var(--space-3);color:var(--color-muted);font-size:var(--font-xs)}
.admin-result-links{display:grid;gap: var(--space-2);margin-top: var(--space-3)}
.admin-result-links a{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
.admin-table tbody tr.is-selected{background:var(--color-brand-soft);box-shadow:inset var(--border-strong) 0 0 var(--color-brand)}
#resultDetail{scroll-margin-top: calc(var(--header-height) + 12px)}
@media(max-width:900px){.admin-result-filterbar{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-result-filter-actions{grid-column:1/-1}}
@media(max-width:560px){.admin-result-filterbar{grid-template-columns:minmax(0,1fr)}.admin-result-filter-actions{grid-column:auto}.admin-result-pager{align-items:flex-start;flex-direction:column}}
/* authoritative single-column customer detail record */
.admin-customer-record{display:grid;gap: 0;margin: 0;border:1px solid var(--color-border);border-radius: var(--radius-lg);overflow:hidden;min-width:0}
.admin-customer-record__row{display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr);min-width:0;border-bottom:1px solid var(--color-border)}
.admin-customer-record__row:last-child{border-bottom:0}
.admin-customer-record__row dt{margin: 0;min-width:0;padding: var(--space-2) var(--space-3);line-height:1.4;font-size:var(--font-2xs);font-weight:700;color:var(--color-muted);background:var(--color-surface-subtle)}
.admin-customer-record__row dd{margin: 0;min-width:0;padding: var(--space-2) var(--space-3);line-height:1.4;font-size:var(--font-xs);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.admin-customer-record__row.is-wide{grid-template-columns:1fr}
.admin-customer-record__row.is-wide dt{border-bottom:1px solid var(--color-border)}
.admin-customer-summary{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));border:0;gap: var(--space-2);overflow:visible}
.admin-customer-summary .admin-customer-record__row{display:block;border:1px solid var(--color-border);border-radius: var(--radius-lg);overflow:hidden}
.admin-customer-summary .admin-customer-record__row dt{border-bottom:1px solid var(--color-border)}
.admin-normalized-record{display:grid;gap: var(--space-3);min-width:0}
.admin-normalized-field{display:grid;gap: var(--space-2);min-width:0}
.admin-normalized-field h4{margin: 0;font-size:var(--font-xs)}
@media(max-width:760px){.admin-customer-record__row{grid-template-columns:1fr}.admin-customer-record__row dt{border-bottom:1px solid var(--color-border)}.admin-customer-summary{grid-template-columns:1fr}}
/* accessible collapsible customer technical lineage */
.admin-primary-section{min-width:0;scroll-margin-top: calc(var(--header-height) + 12px)}
.admin-lineage-section{min-width:0;scroll-margin-top: calc(var(--header-height) + 12px)}
.admin-disclosure>summary:focus-visible{background:var(--color-brand-soft)}
.admin-disclosure>summary>span:first-child{min-width:0;overflow-wrap:anywhere}
.admin-disclosure-alert{margin-left: auto;padding: 2px var(--space-2);border-radius: var(--radius-pill);background:var(--color-danger-soft);color:var(--color-danger);font-size:var(--font-2xs);font-weight:700;white-space:nowrap}
.admin-disclosure.has-alert>summary{color:var(--color-danger)}
.admin-lineage-alert{margin: 0;min-height:20px;line-height:1.4}
.admin-detail-downloads{margin-top: var(--space-2)}
@media(max-width:560px){.admin-disclosure-alert{white-space:normal;text-align:right}.admin-disclosure>summary{align-items:flex-start}}
/* Admin overflow containment and readable long values */
html:has(body.admin-portal){max-width:100%;overflow-x:hidden}
body.admin-portal{overflow-x:hidden;max-width:100%}
body.admin-portal *{box-sizing:border-box}
body.admin-portal .admin-shell{min-width:0;max-width:100%}
body.admin-portal .admin-workspace{display:grid;gap:var(--grid-gap-standard);min-width:0;max-width:100%;width:100%}
body.admin-portal .admin-module{min-width:0;max-width:100%}
body.admin-portal .admin-operational-stack{min-width:0;max-width:100%}
body.admin-portal .admin-data-card{min-width:0;max-width:100%}
body.admin-portal .admin-list-component{min-width:0;max-width:100%}
body.admin-portal .admin-detail-component{min-width:0;max-width:100%}
body.admin-portal .admin-disclosure{min-width:0;max-width:100%}
body.admin-portal .admin-disclosure__body{min-width:0;max-width:100%}
body.admin-portal .ui-data-grid.table-wrap.admin-primary-table-region{max-width:100%;overflow-x:visible;overflow-y:visible}
body.admin-portal .admin-table td{word-break:break-word;}
body.admin-portal .admin-table th{word-break:break-word;}
body.admin-portal .admin-table .admin-actions-column{width:9.5rem;max-width:9.5rem}
body.admin-portal .admin-row-actions{min-width:0;max-width:100%}
body.admin-portal .admin-row-actions .ui-button{white-space:nowrap}
body.admin-portal .admin-value-link{display:inline;max-width:100%;overflow-wrap:anywhere;word-break:break-word;text-underline-offset:2px}
body.admin-portal .admin-detail-record dd{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
body.admin-portal .admin-lineage-alert{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
body.admin-portal .field-note{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
body.admin-portal .admin-secondary-records{display:grid;min-width:0;max-width:100%;gap: var(--space-2)}
body.admin-portal .admin-technical-overflow{min-width:0;max-width:100%;border:1px solid var(--color-border);border-radius: var(--radius-lg);overflow:hidden;background:var(--color-surface-subtle)}
body.admin-portal .admin-technical-overflow__label{padding: 8px 8px;border-bottom:1px solid var(--color-border);font-size:var(--font-2xs);font-weight:700;color:var(--color-muted)}
body.admin-portal .admin-technical-overflow pre{max-width:100%;margin: 0;overflow-x:auto;overflow-y:auto;white-space:pre;overflow-wrap:normal;word-break:normal;overscroll-behavior-inline:contain;scrollbar-gutter:stable}
@media(max-width:1100px){body.admin-portal .admin-table .admin-actions-column{width:8rem;max-width:8rem}body.admin-portal .admin-table th,body.admin-portal .admin-table td{padding-inline:var(--space-2);font-size:var(--font-2xs)}}
/* — authoritative vertical 17-column export row */
.admin-final-export{display:block;min-width:0;max-width:100%}
.admin-final-export .admin-customer-record__row dd{min-height:40px}
.admin-export-links{display:grid;gap: var(--space-2);min-width:0;max-width:100%}
.admin-export-links .admin-value-link{display:block;min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word}
.admin-empty-value{color:var(--color-muted)}
/* — compact Admin accessibility and usability validation */
.skip-link{position:fixed;left:12px;top:8px;z-index:10000;transform:translateY(-160%);padding: var(--space-2) var(--space-3);border:2px solid var(--color-brand);border-radius: var(--radius-lg);background:var(--color-surface);color:var(--color-brand-strong);font-weight:700;text-decoration:none}
.skip-link:focus{transform:translateY(0)}
button{font: inherit}
input,
select{font: inherit;font-weight:400;width: 100%;
  margin-top: var(--space-2);
  padding: 0 var(--space-3);
  color: var(--color-ink);
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  outline: none;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);height:var(--density-control-height);min-height:var(--density-control-height)}
textarea{font: inherit;font-weight:400;width: 100%;
  margin-top: var(--space-2);
  padding: 0 var(--space-3);
  color: var(--color-ink);
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  outline: none;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);min-height: 96px; /* exception: intrinsic component size for ~3 visible lines of input, not a spacing-scale value */
  padding-top: 12px; resize: vertical}

body.admin-portal .admin-table tbody tr[aria-selected="true"]{background:var(--color-brand-soft);box-shadow:inset var(--border-strong) 0 0 var(--color-brand)}
body.admin-portal .admin-table tbody tr[aria-selected="true"] td:first-child::before{content:"Selected: ";position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
body.admin-portal .admin-loading-state{min-height:72px;display:grid;place-items:center;margin: 0;padding: 16px 12px;color:var(--color-muted);text-align:center}
body.admin-portal .profile-empty{max-width:100%;overflow-wrap:anywhere}
body.admin-portal .error{min-height:2.8em;max-height:2.8em;margin: var(--space-1) 0;color:var(--color-danger);font-size:var(--font-xs);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}
body.admin-portal 
body.admin-portal .admin-list-detail:focus{outline:0}
/* Reduced-motion handling for Admin is covered by the global prefers-reduced-motion rule above (applies to *, including body.admin-portal descendants) — no separate rule needed here. */
@media (forced-colors:active){body.admin-portal .admin-key-button[aria-current="page"],body.admin-portal .admin-table tbody tr[aria-selected="true"]{outline:2px solid CanvasText;outline-offset:-2px}body.admin-portal .admin-disclosure-alert{border:1px solid CanvasText}}
/* Consolidated inline authoritative values */
.admin-inline-value{max-width:100%;min-width:0}
.admin-inline-value>summary{cursor:pointer;font-weight:600;overflow-wrap:anywhere}
.admin-inline-value__body{margin-top: var(--space-2);min-width:0;max-width:100%;overflow-wrap:anywhere}

/* Native hidden state must win over all component display rules. */
html [hidden]{display:none}
/* One authoritative portal-state boundary: exactly one surface is visible. */
body.login-only{min-height:100vh;background:var(--color-canvas)}
body.login-only > :is(.skip-link,#workspaceAppHeader,#workspaceAppMain,#workspaceAppFooter,#adminAppHeader,#adminAppMain,#actionModal,#toast){display:none}
body.login-only > #loginModal{display:flex;background:var(--color-canvas);backdrop-filter:none}
body.is-authenticated > #loginModal{display:none}
body.is-authenticated > :is(#workspaceAppHeader,#workspaceAppMain,#workspaceAppFooter,#adminAppHeader,#adminAppMain){display:revert}
#toast[hidden],#actionModal[hidden]{display:none}
.login-card .ui-field>small{font-weight:400;color:var(--color-muted)}


/* Canonical authentication geometry: Admin and Workspace login surfaces are identical. */
body.admin-portal #loginModal .ui-field{
  gap: initial;
  font-size:var(--font-sm);
}
body.admin-portal #loginModal input{
  height:var(--control-height-standard);
  min-height:var(--control-height-standard);
  padding: 0 var(--space-3);
}
body.admin-portal #loginModal .ui-button{
  font-size:var(--font-sm);
  height:var(--control-height-standard);
  min-height:var(--control-height-standard);
}


/* Canonical component geometry utilities. */
.ui-input-standard,.ui-select-standard{height:var(--control-height-standard);min-height:var(--control-height-standard)}
.ui-input-compact,.ui-select-compact{height:var(--control-height-compact);min-height:var(--control-height-compact)}
.ui-card.card-standard{padding:var(--space-5)}
.ui-card.card-compact{padding:var(--space-4)}
.ui-nav-item{height:var(--navigation-item-height);min-height:var(--navigation-item-height)}
.ui-table-standard tr{height:var(--table-row-height-standard)}
.ui-table-compact tr{height:var(--table-row-height-compact)}
.ui-badge-standard{height:var(--badge-height-standard);min-height:var(--badge-height-standard)}
.ui-badge-compact{height:var(--badge-height-compact);min-height:var(--badge-height-compact)}
.ui-icon-control-standard{width:var(--icon-control-standard);height:var(--icon-control-standard)}
.ui-icon-control-compact{width:var(--icon-control-compact);height:var(--icon-control-compact)}


/* Semantic styling canonical navigation, modal and icon semantics. */
:where(.nav,.ui-nav-item,.public-nav-menu a)[aria-current="page"],
:where(.nav,.ui-nav-item).active{color:var(--color-brand-strong);background:var(--color-brand-soft);border-color:var(--color-info-border);font-weight:700;}

:where(.ui-modal__panel,.login-card,.admin-action-card){border:var(--border-thin) solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-modal);}
:where(.ui-icon-control-standard,.ui-icon-control-compact){display:inline-grid;place-items:center;flex:0 0 auto;line-height:1;}
.ui-toast.success{background:var(--color-success);}
.ui-toast.warning{color:var(--color-ink);background:var(--color-warning-soft);border:var(--border-thin) solid var(--color-warning-border);}
.ui-toast.failure,.ui-toast.error{background:var(--color-danger);}
@media (prefers-reduced-motion:reduce){.ui-loading::before{animation:none}}

/* Unified table alignment — Workspace, Admin and public website */
:where(.ui-data-grid,.table-wrap,.public-document div:has(>table)){
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-inline:contain;
}
:where(table,.ui-aligned-table){
  direction:ltr;
  width:100%;
  max-width:100%;
  min-width:0;
  table-layout:fixed;
  border-collapse:collapse;
}
:where(table,.ui-aligned-table) :where(th,td){
  min-width:0;
  max-width:0;
  vertical-align:middle;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
  hyphens:auto;
}
:where(table,.ui-aligned-table) thead th,
:where(table,.ui-aligned-table) th.is-heading{
  text-align:center;
  vertical-align:middle;
  font-weight:700;
}
:where(table,.ui-aligned-table) tbody :where(td,th[scope="row"]){text-align:left;}
:where(table,.ui-aligned-table) td.is-numeric,
:where(table,.ui-aligned-table) td[data-type="number"]{
  text-align:right;
  font-variant-numeric:tabular-nums lining-nums;
}
:where(table,.ui-aligned-table) td.is-action,
:where(table,.ui-aligned-table) td.admin-actions-column{text-align:center;}
:where(table,.ui-aligned-table) td.is-action > :where(div,.ui-actions,.admin-row-actions){
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:var(--space-2);
  min-width:0;
  max-width:100%;
}
:where(table,.ui-aligned-table) td.is-action .ui-button,
:where(table,.ui-aligned-table) .admin-row-actions .ui-button{
  flex:0 1 auto;
  min-width:var(--button-compact-min-width);
  max-width:100%;
  white-space:normal;
  height:auto;
  min-height:var(--control-height-compact);
  overflow-wrap:anywhere;
}
:where(.public-table){max-width:100%;}
:where(.public-table) :where(th,td){vertical-align:middle;}
:where(.public-table) thead th{text-align:center;font-weight:700;}
:where(.public-table) tbody :where(th[scope="row"],td){text-align:left;}
:where(.public-table) tbody td.is-numeric{text-align:right;}
body.admin-portal :where(.ui-data-grid.table-wrap.admin-primary-table-region){overflow-x:auto;overflow-y:hidden;}
@media(max-width:760px){
  :where(table,.ui-aligned-table) :where(th,td){padding-inline:var(--space-2);font-size:var(--font-2xs);}
}
/* Desktop-only access gate.
   Threshold intentionally matches --page-min-width (1024px) in tokens.css —
   media queries cannot reference custom properties, so the value is
   duplicated here; keep both in sync if the minimum ever changes. */
.device-gate{display:none;position:fixed;inset:0;z-index:10001;align-items:center;justify-content:center;padding:var(--page-padding);background:var(--color-canvas);text-align:center;}
.device-gate__panel{width:min(420px,100%);padding:var(--space-7) var(--space-6);background:var(--color-surface);border:var(--border-thin) solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-modal);}
.device-gate__mark{display:grid;place-items:center;width:40px;height:40px;margin:0 auto var(--space-4);border-radius:var(--radius-lg);color:var(--color-surface);background:linear-gradient(135deg,var(--color-brand),var(--color-brand-strong));font-weight:800;}
.device-gate__panel h1{margin:0 0 var(--space-2);font-size:var(--font-2xl);color:var(--color-ink);}
.device-gate__panel p{margin:0;color:var(--color-muted);font-size:var(--font-md);line-height:1.5;}
@media (max-width:1023px),(pointer:coarse){
  .device-gate{display:flex;}
  body{overflow:hidden;}
  body>*:not(.device-gate){display:none;}
}

/* Admin adaptive command console — 2026-08-06 */
body.admin-portal .admin-console-shell{display:block;width:100%;max-width:var(--page-max-width);margin:0 auto;padding:var(--page-padding);min-width:0}
body.admin-portal .admin-command-deck{position:sticky;top:var(--header-height);z-index:30;display:grid;gap:var(--space-2);min-width:0;padding:var(--space-2) 0;background:color-mix(in srgb,var(--color-canvas) 94%,transparent);backdrop-filter:blur(12px)}
body.admin-portal .admin-command-deck__primary{display:flex;align-items:stretch;justify-content:space-between;gap:var(--space-2);min-width:0;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-subtle)}
body.admin-portal .admin-icon-rail{display:flex;align-items:stretch;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:thin}
body.admin-portal .admin-command-tools{display:flex;align-items:stretch;gap:6px;flex:0 0 auto;padding-left:var(--space-2);border-left:1px solid var(--color-border)}
body.admin-portal .admin-key-button{position:relative;display:grid;grid-template-rows:22px auto;place-items:center;align-content:center;gap:2px;min-width:58px;max-width:none;height:48px;padding:4px 8px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font:inherit;cursor:pointer;box-shadow:0 1px 0 color-mix(in srgb,var(--color-border) 75%,transparent);transition:background .14s ease,border-color .14s ease,transform .08s ease,color .14s ease}
body.admin-portal .admin-key-button:hover{background:var(--color-brand-soft);border-color:var(--color-info-border)}
body.admin-portal .admin-key-button:active{transform:translateY(1px);box-shadow:none}
body.admin-portal .admin-key-button:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px}
body.admin-portal .admin-key-button.active,body.admin-portal .admin-key-button[aria-current="page"]{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-surface)}
body.admin-portal .admin-key-icon{display:grid;place-items:center;width:22px;height:22px}
body.admin-portal .admin-key-label{max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-2xs);font-weight:750;line-height:1.1}
body.admin-portal .admin-command-search{grid-template-columns:22px auto;grid-template-rows:1fr;min-width:98px;padding-inline:10px}
body.admin-portal .admin-command-search .admin-key-label{font-size:var(--font-xs)}
body.admin-portal .admin-command-search kbd{position:absolute;right:5px;bottom:3px;padding:1px 3px;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-muted);background:var(--color-canvas);font-size:var(--font-2xs);font-family:inherit}
body.admin-portal .admin-more-modules{position:absolute;right:0;top:calc(100% - 2px);width:min(560px,calc(100vw - (2 * var(--page-padding))));padding:var(--space-3);box-shadow:var(--shadow-modal);z-index:35}
body.admin-portal .admin-more-modules nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-2)}
body.admin-portal .admin-more-modules .admin-key-button{width:100%;height:58px}
body.admin-portal .admin-command-palette__panel{width:min(680px,calc(100vw - 48px));max-height:min(76vh,720px);overflow:auto}
body.admin-portal .admin-command-results{display:grid;gap:var(--space-2);margin-top:var(--space-3)}
body.admin-portal .admin-command-result{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);text-align:left;cursor:pointer}
body.admin-portal .admin-command-result:hover,body.admin-portal .admin-command-result:focus-visible{background:var(--color-brand-soft);border-color:var(--color-info-border);outline:none}
body.admin-portal .admin-command-result span:last-child{display:grid;gap:2px;min-width:0}
body.admin-portal .admin-command-result strong{font-size:var(--font-sm)}
body.admin-portal .admin-command-result small{color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:1180px){body.admin-portal .admin-key-button{min-width:52px;padding-inline:6px}body.admin-portal .admin-key-label{font-size:var(--font-2xs)}body.admin-portal .admin-command-search{min-width:54px;grid-template-columns:1fr}.admin-command-search .admin-key-label,body.admin-portal .admin-command-search kbd{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}}
@media(max-width:900px){body.admin-portal .admin-more-modules nav{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){body.admin-portal .admin-console-shell{padding:var(--space-3)}body.admin-portal .admin-command-deck{position:static}body.admin-portal .admin-command-deck__primary{align-items:flex-start}body.admin-portal .admin-command-tools{border-left:0;padding-left:0}body.admin-portal .admin-more-modules{position:static;width:100%}}
@media(prefers-reduced-motion:reduce){body.admin-portal .admin-key-button{transition:none}}
/* Phase: complete adaptive Admin operating console */
body.admin-portal .admin-contextbar{position:sticky;top:calc(var(--header-height) + 72px);z-index:22;display:grid;grid-template-columns:minmax(180px,.75fr) minmax(300px,1.5fr) auto;align-items:center;gap:var(--space-3);min-height:52px;padding:8px var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-subtle)}
body.admin-portal .admin-contextbar__identity{min-width:0}
body.admin-portal .admin-contextbar__identity h1{margin:0;font-size:var(--font-lg);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.admin-portal .admin-contextbar__identity p{margin:2px 0 0;color:var(--color-muted);font-size:var(--font-2xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.admin-portal .admin-contextbar__filters,body.admin-portal .admin-contextbar__actions{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}
#adminContextBar .admin-contextbar__actions{justify-content:flex-end}
body.admin-portal .admin-context-filter.is-active{background:var(--color-brand-soft);border-color:var(--color-info-border);color:var(--color-brand)}
body.admin-portal .admin-nav-badge{position:absolute;top:3px;right:4px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:var(--radius-pill);background:var(--color-danger);color:var(--color-surface);font-size:var(--font-2xs);font-weight:700;line-height:1}
body.admin-portal.is-admin-scrolled .admin-command-deck__primary{padding:4px 8px}
body.admin-portal.is-admin-scrolled .admin-key-button{height:40px;min-width:44px;grid-template-rows:1fr;padding:4px 6px}
body.admin-portal.is-admin-scrolled .admin-module-key:not(.active) .admin-key-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
body.admin-portal.is-admin-scrolled .admin-module-key.active{min-width:94px;grid-template-columns:20px auto;grid-template-rows:1fr}
body.admin-portal.is-admin-scrolled .admin-module-key.active .admin-key-label{font-size:var(--font-xs)}
body.admin-portal.is-admin-scrolled .admin-contextbar{top:calc(var(--header-height) + 56px)}
.admin-owner-briefing{display:grid;gap:1px;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-border)}
.admin-owner-briefing__row{display:grid;grid-template-columns:160px minmax(0,1fr) auto;align-items:center;gap:var(--space-3);min-height:42px;padding:8px var(--space-3);background:var(--color-surface)}
.admin-owner-briefing__row strong{font-size:var(--font-sm)}
.admin-owner-briefing__value{font-size:var(--font-sm);font-weight:600}
.admin-attention-list{display:grid;border-top:1px solid var(--color-border)}
.admin-attention-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3);width:100%;min-height:44px;padding:8px var(--space-3);border:0;border-bottom:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);text-align:left;cursor:pointer}
.admin-attention-item:hover,.admin-attention-item:focus-visible{background:var(--color-brand-soft);outline:none}
.admin-attention-item:last-child{border-bottom:0}
.admin-attention-severity{font-size:var(--font-2xs);font-weight:700;text-transform:uppercase}
.admin-attention-severity[data-severity="critical"]{color:var(--color-danger)}.admin-attention-severity[data-severity="warning"]{color:var(--color-warning)}
.admin-row-actions .ui-button[disabled],.admin-row-actions a[aria-disabled="true"]{opacity:.45;pointer-events:none}
@media(max-width:1100px){body.admin-portal .admin-contextbar{grid-template-columns:minmax(160px,.7fr) minmax(240px,1fr);}.admin-contextbar>.admin-contextbar__actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:760px){body.admin-portal .admin-contextbar{position:static;grid-template-columns:1fr}.admin-owner-briefing__row{grid-template-columns:1fr}}

/* Workspace recharge and authoritative order workflow — 2026-08-06 */
.workspace-order-console{display:grid;gap:var(--space-4);margin:var(--space-5) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}
.workspace-order-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:var(--space-4);align-items:start}
.workspace-order-form{display:grid;gap:var(--space-3);min-width:0}
.workspace-order-form .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.workspace-order-pricing{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-canvas)}
.workspace-order-pricing dl{display:grid;gap:var(--space-2);margin:0}
.workspace-order-pricing dl>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}
.workspace-order-pricing dl>div:last-child{padding-bottom:0;border-bottom:0}
.workspace-order-pricing dt{color:var(--color-muted);font-size:var(--font-xs)}
.workspace-order-pricing dd{margin:0;font-weight:700;text-align:right}
.workspace-order-next{max-width:420px;white-space:normal;overflow-wrap:anywhere}
.admin-order-detail{margin-bottom:var(--space-3)}
@media(max-width:1100px){.workspace-order-grid{grid-template-columns:1fr}.workspace-order-form .fields{grid-template-columns:1fr 1fr}}

/* Self-service password recovery */
.auth-page-main{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);}
.auth-card.login-card{height:auto;min-height:0;max-height:none;overflow:visible;}
.auth-link{display:block;margin-top:var(--space-3);text-align:center;font-weight:700;color:var(--color-brand);text-decoration:none;}
.auth-link:hover{text-decoration:underline;}
.auth-message{min-height:40px;margin:0;padding:var(--space-2) 0;color:var(--color-muted);}
.auth-message.success{color:var(--color-success);}
.auth-message.error{color:var(--color-danger);}
