* {
  box-sizing: border-box;
}

html {
  min-width: 20rem;
  color: var(--ui-text);
  background: var(--ui-surface-subtle);
  font-family: var(--ui-font-family);
  font-size: 100%;
  font-synthesis: none;
  line-height: 1.55;
}

body,
button,
input,
select,
textarea {
  font-family: var(--ui-font-family);
}

body {
  color: var(--ui-text);
  background-color: var(--ui-surface-subtle);
  font-size: var(--ui-font-size-3);
  font-weight: 400;
}

h1,
h2,
h3,
h4,
h5,
h6,
strong,
th {
  font-weight: 600;
}

h1 {
  font-size: clamp(2rem, 4vw, 3rem);
  letter-spacing: -0.025em;
}

h2 {
  font-size: clamp(1.375rem, 2.5vw, 1.75rem);
}

h3 {
  font-size: var(--ui-font-size-4);
}

a {
  color: var(--ui-brand-petrol);
  font-weight: 600;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.2em;
}

a:hover {
  color: var(--ui-brand-petrol-hover);
  text-decoration-thickness: 0.14em;
}

:focus-visible {
  outline: 0.1875rem solid var(--ui-brand-petrol);
  outline-offset: 0.1875rem;
}

.site-header :focus-visible,
.portal-header :focus-visible {
  outline-color: var(--ui-surface);
}

.shell {
  width: min(calc(100% - (2 * var(--ui-gutter))), var(--ui-container-app));
}

.portal-shell {
  width: min(calc(100% - (2 * var(--ui-gutter))), var(--ui-container-content));
}

.site-header,
.portal-header {
  color: var(--ui-surface);
  background: var(--ui-brand-petrol);
  border-bottom-color: var(--ui-brand-cyan);
}

.brand,
.portal-brand {
  display: inline-flex;
  min-width: 7rem;
  align-items: center;
  color: var(--ui-surface);
  text-decoration: none;
}

.brand:hover {
  color: var(--ui-surface);
}

.brand__logo,
.portal-brand__logo {
  display: block;
  width: 7rem;
  height: auto;
  object-fit: contain;
}

button,
.button-link,
.portal-button,
.ui-button {
  min-height: var(--ui-control-height);
  padding: 0.625rem 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ui-space-2);
  color: var(--ui-surface);
  background: var(--ui-brand-petrol);
  border: 1px solid var(--ui-brand-petrol);
  border-radius: var(--ui-radius-control);
  box-shadow: none;
  font-size: var(--ui-font-size-2);
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color var(--ui-duration-fast) var(--ui-ease),
    border-color var(--ui-duration-fast) var(--ui-ease),
    box-shadow var(--ui-duration-fast) var(--ui-ease),
    transform var(--ui-duration-fast) var(--ui-ease);
}

button:hover:not(:disabled),
.button-link:hover,
.portal-button:hover:not(:disabled),
.ui-button:hover:not(:disabled) {
  color: var(--ui-surface);
  background: var(--ui-brand-petrol-hover);
  border-color: var(--ui-brand-petrol-hover);
  box-shadow: var(--ui-shadow-sm);
  transform: translateY(-1px);
}

button:active:not(:disabled),
.button-link:active,
.portal-button:active:not(:disabled),
.ui-button:active:not(:disabled) {
  background: var(--ui-brand-petrol-active);
  border-color: var(--ui-brand-petrol-active);
  box-shadow: none;
  transform: translateY(0);
}

button.button--secondary,
.button-link--secondary,
.portal-button--secondary,
.ui-button--secondary {
  color: var(--ui-brand-petrol);
  background: var(--ui-surface);
  border-color: var(--ui-brand-petrol);
}

button.button--secondary:hover:not(:disabled),
.button-link--secondary:hover,
.portal-button--secondary:hover:not(:disabled),
.ui-button--secondary:hover:not(:disabled) {
  color: var(--ui-brand-petrol-hover);
  background: var(--ui-brand-cyan-soft);
  border-color: var(--ui-brand-petrol-hover);
}

button.button--danger,
.button-link--danger,
.portal-button--danger,
.ui-button--danger {
  color: var(--ui-surface);
  background: var(--ui-danger);
  border-color: var(--ui-danger);
}

button.button--danger:hover:not(:disabled),
.button-link--danger:hover,
.portal-button--danger:hover:not(:disabled),
.ui-button--danger:hover:not(:disabled) {
  color: var(--ui-surface);
  background: var(--ui-danger-hover);
  border-color: var(--ui-danger-hover);
}

button.button--danger:active:not(:disabled),
.button-link--danger:active,
.portal-button--danger:active:not(:disabled),
.ui-button--danger:active:not(:disabled) {
  background: var(--ui-danger-active);
  border-color: var(--ui-danger-active);
}

.portal-button--text,
.ui-button--ghost {
  color: var(--ui-brand-petrol);
  background: transparent;
  border-color: transparent;
  box-shadow: none;
}

.portal-button--text:hover:not(:disabled),
.ui-button--ghost:hover:not(:disabled) {
  color: var(--ui-brand-petrol-hover);
  background: var(--ui-brand-cyan-soft);
  border-color: transparent;
  box-shadow: none;
}

button:disabled,
button[aria-disabled="true"],
.button-link[aria-disabled="true"],
.portal-button:disabled,
.portal-button[aria-disabled="true"],
.ui-button:disabled,
.ui-button[aria-disabled="true"] {
  color: var(--ui-text-disabled);
  background: var(--ui-surface-strong);
  border-color: var(--ui-border);
  box-shadow: none;
  cursor: not-allowed;
  opacity: 1;
  pointer-events: none;
  transform: none;
}

button[aria-busy="true"],
.button-link[aria-busy="true"],
.portal-button[aria-busy="true"],
.ui-button[aria-busy="true"] {
  position: relative;
  color: transparent !important;
  pointer-events: none;
}

button[aria-busy="true"]::after,
.button-link[aria-busy="true"]::after,
.portal-button[aria-busy="true"]::after,
.ui-button[aria-busy="true"]::after,
.ui-spinner {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  border: 0.125rem solid currentcolor;
  border-right-color: transparent;
  border-radius: var(--ui-radius-pill);
  animation: ui-spin 700ms linear infinite;
}

button[aria-busy="true"]::after,
.button-link[aria-busy="true"]::after,
.portal-button[aria-busy="true"]::after,
.ui-button[aria-busy="true"]::after {
  position: absolute;
  color: var(--ui-surface);
  content: "";
}

button.button--secondary[aria-busy="true"]::after,
.button-link--secondary[aria-busy="true"]::after,
.portal-button--secondary[aria-busy="true"]::after,
.portal-button--text[aria-busy="true"]::after,
.ui-button--secondary[aria-busy="true"]::after,
.ui-button--ghost[aria-busy="true"]::after,
button:disabled[aria-busy="true"]::after {
  color: var(--ui-brand-petrol);
}

.ui-spinner {
  color: var(--ui-brand-petrol);
}

.button--small,
.ui-button--small {
  min-height: var(--ui-control-height);
  padding: 0.4rem 0.75rem;
  font-size: var(--ui-font-size-1);
}

button[type],
.button-link.button-link,
.portal-button.portal-button,
.ui-button.ui-button,
select:not([multiple]) {
  min-height: var(--ui-control-height);
}

label,
legend,
.ui-field__label {
  color: var(--ui-text);
  font-size: var(--ui-font-size-2);
  font-weight: 600;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
select,
textarea,
.ui-field__control {
  width: 100%;
  min-height: var(--ui-control-height);
  padding: 0.625rem 0.75rem;
  color: var(--ui-text);
  background: var(--ui-surface);
  border: 1px solid var(--ui-border-control);
  border-radius: var(--ui-radius-control);
  box-shadow: none;
  font: inherit;
  transition:
    background-color var(--ui-duration-fast) var(--ui-ease),
    border-color var(--ui-duration-fast) var(--ui-ease),
    box-shadow var(--ui-duration-fast) var(--ui-ease);
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):hover,
select:hover,
textarea:hover,
.ui-field__control:hover {
  border-color: var(--ui-brand-petrol);
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):focus,
select:focus,
textarea:focus,
.ui-field__control:focus {
  border-color: var(--ui-brand-petrol);
  box-shadow: var(--ui-focus-ring);
}

input[aria-invalid="true"],
select[aria-invalid="true"],
textarea[aria-invalid="true"],
.ui-field--error .ui-field__control {
  border-color: var(--ui-danger);
  box-shadow: var(--ui-danger-ring);
}

input:disabled,
select:disabled,
textarea:disabled,
.ui-field__control:disabled {
  color: var(--ui-text-disabled);
  background: var(--ui-surface-strong);
  border-color: var(--ui-border);
  cursor: not-allowed;
}

input[readonly],
textarea[readonly] {
  background: var(--ui-brand-cyan-soft);
  border-color: var(--ui-border);
}

input[type="checkbox"],
input[type="radio"] {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: var(--ui-brand-petrol);
}

::placeholder {
  color: var(--ui-text-disabled);
  opacity: 1;
}

.field-error,
.field-errors,
.portal-error,
.ui-field__error {
  color: var(--ui-danger);
  font-size: var(--ui-font-size-2);
  font-weight: 600;
}

.helptext,
.portal-help,
.ui-field__help {
  max-width: var(--ui-text-measure);
  color: var(--ui-text-muted);
  font-size: var(--ui-font-size-2);
  font-weight: 400;
}

.filters,
.dossiers,
.work-queue,
.login-panel,
.portal-card,
.portal-progress,
.ui-card {
  background: var(--ui-surface);
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius-card);
  box-shadow: var(--ui-shadow-sm);
}

.ui-card--interactive {
  transition:
    border-color var(--ui-duration-fast) var(--ui-ease),
    box-shadow var(--ui-duration-fast) var(--ui-ease),
    transform var(--ui-duration-fast) var(--ui-ease);
}

.ui-card--interactive:hover,
.ui-card--interactive:focus-within {
  border-color: var(--ui-brand-cyan);
  box-shadow: var(--ui-shadow-panel);
  transform: translateY(-1px);
}

.message,
.portal-alert,
.portal-error-summary,
.form-errors,
.notifications,
.ui-alert {
  padding: var(--ui-space-4) var(--ui-space-5);
  color: var(--ui-info);
  background: var(--ui-info-soft);
  border: 1px solid var(--ui-brand-cyan);
  border-left: 0.25rem solid var(--ui-info);
  border-radius: var(--ui-radius-control);
}

.message--success,
.portal-alert--success,
.ui-alert--success {
  color: var(--ui-success);
  background: var(--ui-success-soft);
  border-color: var(--ui-success);
}

.message--warning,
.portal-alert--warning,
.notifications,
.ui-alert--warning {
  color: var(--ui-warning);
  background: var(--ui-warning-soft);
  border-color: var(--ui-warning);
}

.message--error,
.portal-alert--error,
.portal-error-summary,
.form-errors,
.ui-alert--error {
  color: var(--ui-danger);
  background: var(--ui-danger-soft);
  border-color: var(--ui-danger);
}

.table-wrap,
.ui-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius-control);
  scrollbar-gutter: stable;
}

table,
.ui-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--ui-surface);
}

th,
td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--ui-border);
}

thead th {
  color: var(--ui-text-muted);
  background: var(--ui-surface-strong);
  font-size: var(--ui-font-size-1);
  font-weight: 700;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}

tbody td,
tbody th {
  color: var(--ui-text);
  font-size: var(--ui-font-size-2);
}

tbody tr:hover > * {
  background: var(--ui-brand-cyan-soft);
}

.table-wrap th:first-child,
.table-wrap td:first-child,
.ui-table--sticky-first th:first-child,
.ui-table--sticky-first td:first-child {
  position: sticky;
  z-index: 1;
  left: 0;
  background: var(--ui-surface);
  border-right: 1px solid var(--ui-border);
}

.table-wrap thead th:first-child,
.ui-table--sticky-first thead th:first-child {
  z-index: 2;
  background: var(--ui-surface-strong);
}

.table-wrap tbody tr:hover > :first-child,
.ui-table--sticky-first tbody tr:hover > :first-child {
  background: var(--ui-brand-cyan-soft);
}

.status,
.portal-repeatable__status,
.ui-badge {
  display: inline-flex;
  padding: 0.25rem 0.5rem;
  align-items: center;
  color: var(--ui-text-muted);
  background: var(--ui-surface-strong);
  border-radius: var(--ui-radius-pill);
  font-size: var(--ui-font-size-1);
  font-weight: 700;
}

.status--ready,
.status--validated,
.ui-badge--success {
  color: var(--ui-success);
  background: var(--ui-success-soft);
}

.status--collecting,
.status--review,
.ui-badge--info {
  color: var(--ui-info);
  background: var(--ui-info-soft);
}

.status--changes_requested,
.ui-badge--warning {
  color: var(--ui-warning);
  background: var(--ui-warning-soft);
}

.workspace-tools a,
.workspace-mobile-navigation nav,
.ui-menu {
  color: var(--ui-text);
  background: var(--ui-surface);
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius-control);
  box-shadow: var(--ui-shadow-panel);
}

.ui-menu a,
.workspace-tools a {
  min-height: var(--ui-control-height);
  display: flex;
  align-items: center;
}

.ui-menu a:hover,
.ui-menu a[aria-current="page"] {
  color: var(--ui-brand-petrol);
  background: var(--ui-brand-cyan-soft);
  box-shadow: inset 0.1875rem 0 0 var(--ui-brand-cyan);
}

.material-detail-backdrop,
.ui-dialog-backdrop {
  background: rgb(38 42 43 / 55%);
  backdrop-filter: blur(1px);
}

.material-detail-drawer,
.ui-dialog,
.ui-drawer {
  color: var(--ui-text);
  background: var(--ui-surface);
  border: 1px solid var(--ui-border);
  box-shadow: var(--ui-shadow-overlay);
}

.ui-dialog {
  width: min(42rem, calc(100vw - (2 * var(--ui-gutter))));
  border-radius: var(--ui-radius-overlay);
}

.material-detail-drawer,
.ui-drawer {
  width: min(48rem, calc(100vw - (2 * var(--ui-gutter))));
}

.pagination,
.portal-actions,
.ui-actions {
  gap: var(--ui-space-3);
}

.pagination,
.ui-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.pagination a,
.pagination [aria-current="page"],
.pagination__disabled,
.ui-pagination__item {
  min-height: var(--ui-control-height);
  padding: 0.5rem 0.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: var(--ui-radius-control);
  font-size: var(--ui-font-size-2);
  text-decoration: none;
}

.pagination a:hover,
.ui-pagination__item:hover {
  background: var(--ui-brand-cyan-soft);
  border-color: var(--ui-brand-cyan);
}

.pagination [aria-current="page"],
.ui-pagination__item[aria-current="page"] {
  color: var(--ui-surface);
  background: var(--ui-brand-petrol);
  border-color: var(--ui-brand-petrol);
}

.pagination__disabled,
.ui-pagination__item[aria-disabled="true"] {
  color: var(--ui-text-disabled);
  background: var(--ui-surface-strong);
  border-color: var(--ui-border);
}

progress,
.ui-progress {
  width: 100%;
  height: 0.75rem;
  overflow: hidden;
  accent-color: var(--ui-brand-petrol);
  background: var(--ui-surface-strong);
  border: 0;
  border-radius: var(--ui-radius-pill);
}

progress::-moz-progress-bar {
  background: var(--ui-brand-petrol);
  border-radius: var(--ui-radius-pill);
}

.empty-state,
.ui-empty-state {
  padding: clamp(2.5rem, 7vw, 5rem) var(--ui-space-4);
  color: var(--ui-text-muted);
  text-align: center;
  border: 1px dashed var(--ui-border-control);
  border-radius: var(--ui-radius-card);
}

.ui-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

@keyframes ui-spin {
  to {
    transform: rotate(1turn);
  }
}

@media (max-width: 64rem) {
  .summary-grid,
  .portal-summary,
  .portal-answer-list,
  .ui-grid--three {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 48rem) {
  .summary-grid,
  .portal-summary,
  .portal-answer-list,
  .portal-form-fields,
  .portal-form-section__fields,
  .ui-grid--three,
  .ui-grid--two {
    grid-template-columns: minmax(0, 1fr);
  }

  .material-detail-drawer,
  .ui-dialog,
  .ui-drawer {
    width: 100vw;
    max-width: none;
    border-radius: 0;
  }
}

@media (max-width: 30rem) {
  .portal-actions,
  .ui-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .portal-actions > .portal-button,
  .ui-actions > .ui-button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
