/* Shared workspace contract. Page modules retain domain-specific geometry. */
:root {
  --ui-reading-width: 76ch;
  --ui-form-width: 880px;
  --ui-row-height: 3rem;
}
.app-shell .app-main { min-width: 0; }
.app-shell .app-content { max-width: 1488px; padding-block: 1.25rem 2rem; }
.app-shell .app-content > :is(.container, .container-fluid, .accounting-shell) { padding-inline: 0; }
.app-shell :is(.ui-page-title, .accounting-header h1, .pickup-hero-title, .value-pickup-hero h1) {
  font-size: clamp(1.5rem, 1.1rem + 1vw, 2rem);
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.2;
}
.app-shell .ui-page-subtitle { max-width: var(--ui-reading-width); line-height: 1.6; }
.app-shell :is(.ui-page-header, .accounting-header) { align-items: flex-start; gap: 1rem; margin-bottom: 1.25rem; }
.app-shell :is(.ui-page-actions, .accounting-header-actions) { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.app-shell :is(.ui-page-actions, .accounting-header-actions) .btn { min-height: 2.5rem; }
.app-shell .ui-eyebrow { margin-bottom: .35rem; font-size: .72rem; letter-spacing: .055em; color: var(--ui-muted); }
.app-shell .app-wordmark { text-decoration: none; }
.app-shell :is(.batch-overview-hero, .pickup-hero, .value-pickup-hero) {
  padding: 0 0 1.25rem;
  margin: 0 0 1.25rem;
  border: 0;
  border-bottom: 1px solid var(--ui-border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--ui-text);
  overflow: visible;
}
.app-shell :is(.batch-overview-hero, .pickup-hero, .value-pickup-hero)::after,
.app-shell :is(.batch-overview-hero, .pickup-hero, .value-pickup-hero)::before { display: none; }
.app-shell :is(.batch-overview-hero, .pickup-hero, .value-pickup-hero) :is(h1,p) { color: inherit; }
.app-shell :is(.batch-overview-hero, .pickup-hero, .value-pickup-hero) p { color: var(--ui-muted); max-width: var(--ui-reading-width); }
.app-shell :is(.batch-overview-eyebrow, .pickup-eyebrow, .value-pickup-eyebrow) { color: var(--ui-muted); }
.app-shell .batch-overview-eyebrow::before { display: none; }
.app-shell :is(.ui-surface, .accounting-panel, .card) { border-color: var(--ui-border); box-shadow: none; }
.app-shell :is(.ui-surface, .accounting-panel) :is(.ui-surface, .accounting-panel) { box-shadow: none; }
.app-shell :is(.ui-surface-body, .accounting-panel) { padding: 1.15rem; }
.app-shell .card-header { border-color: var(--ui-border); background: transparent; }
.app-shell :is(.ui-surface-elevated, .shadow, .shadow-sm) { box-shadow: none !important; }
.app-shell .ui-table-wrap { border: 1px solid var(--ui-border); border-radius: var(--ui-radius); }
.app-shell table { font-size: .875rem; }
.app-shell table :is(th,td) { vertical-align: middle; border-color: var(--ui-border); }
.app-shell table th { font-size: .75rem; letter-spacing: .015em; text-transform: none; }
.app-shell table td { padding-block: .7rem; }
.app-shell .table :is(.text-end, .ui-cell-number) { font-variant-numeric: tabular-nums; }
.app-shell .table a:not(.btn) { text-underline-offset: .18em; }
.app-shell :is(.ui-filter-bar, .ui-filter-panel) { margin-bottom: 1rem; }
.app-shell .ui-filter-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; justify-content: space-between; padding-top: .65rem; }
.app-shell .ui-active-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.app-shell .ui-filter-chip { display: inline-flex; align-items: center; gap: .35rem; max-width: 100%; overflow-wrap: anywhere; }
.app-shell .ui-filter-chip a { color: inherit; }
.app-shell .ui-object-header { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: flex-start; margin-bottom: 1.25rem; }
.app-shell .ui-object-identity { min-width: 0; flex: 1 1 20rem; }
.app-shell .ui-object-title { margin: .35rem 0; font-size: clamp(1.5rem, 1rem + 1vw, 2rem); font-weight: 700; overflow-wrap: anywhere; }
.app-shell .ui-object-meta { display: flex; flex-wrap: wrap; gap: .4rem 1rem; color: var(--ui-muted); }
.app-shell .ui-object-status { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .65rem; }
.app-shell .ui-view-nav { display: flex; flex-wrap: wrap; gap: .25rem; margin: 0 0 1.25rem; padding: 0 0 .5rem; border-bottom: 1px solid var(--ui-border); }
.app-shell .ui-view-nav a { display: inline-flex; align-items: center; min-height: 2.5rem; padding: .5rem .85rem; border-radius: var(--ui-radius-sm); color: var(--ui-muted); font-weight: 600; text-decoration: none; }
.app-shell .ui-view-nav a:hover { background: var(--ui-surface); color: var(--ui-text); }
.app-shell .ui-view-nav a[aria-current="page"] { color: var(--ui-accent-link); background: color-mix(in srgb, var(--ui-accent) 10%, var(--ui-surface)); }
.app-shell [data-ui-view-panel][hidden] { display: none !important; }
.app-shell .ui-section-heading { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 1rem; margin-bottom: .85rem; }
.app-shell .ui-section-heading h2 { font-size: 1.1rem; margin: 0; }
.app-shell .ui-pagination { display: flex; align-items: center; flex-wrap: wrap; justify-content: space-between; gap: .65rem; padding-block: 1rem; font-size: .85rem; }
.app-shell .ui-pagination-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
.app-shell .ui-selection-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .65rem; padding: .75rem 1rem; margin-bottom: 1rem; border-radius: var(--ui-radius); border: 1px solid var(--ui-border); background: var(--ui-surface); }
.app-shell .ui-selection-bar[hidden] { display: none; }
.app-shell .ui-form-layout { width: min(100%, var(--ui-form-width)); margin-inline: auto; }
.app-shell .ui-form-group { border: 0; border-bottom: 1px solid var(--ui-border); padding: 0 0 1.25rem; margin: 0 0 1.25rem; }
.app-shell .ui-form-group legend { font-size: 1.05rem; font-weight: 650; }
.app-shell .ui-form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .65rem; margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--ui-border); }
.app-shell .ui-form-actions .btn { min-height: 2.75rem; }
.app-shell .ui-document { max-width: 960px; margin-inline: auto; }
.app-shell .ui-document pre { max-width: 100%; overflow: auto; white-space: pre; padding: 1rem; border: 1px solid var(--ui-border); border-radius: var(--ui-radius-sm); }
.app-shell .ui-reading { max-width: var(--ui-reading-width); }
.app-shell .ui-split-workspace { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.app-shell .ui-methodology { margin-top: 1rem; padding-block: .75rem; border-top: 1px solid var(--ui-border); color: var(--ui-muted); font-size: .85rem; }
.app-shell .ui-methodology summary { color: var(--ui-text); font-weight: 600; }
.app-shell .ui-methodology[open] summary { margin-bottom: .75rem; }
.app-shell :is(.ui-object-meta,.ui-filter-meta,.ui-pagination,.ui-card-identity) code { overflow-wrap: anywhere; }
.app-shell .ui-card-identity { display: flex; align-items: center; gap: .75rem; min-width: 0; }
.app-shell .ui-card-identity-copy { min-width: 0; }
.app-shell .ui-card-identity-copy > :first-child { display: block; font-weight: 600; }
.app-shell .ui-card-identity-copy small { display: block; color: var(--ui-muted); }
.app-shell .ui-location { font-weight: 650; font-variant-numeric: tabular-nums; }
.app-shell .ui-breadcrumb { margin-bottom: .85rem; font-size: .825rem; }
.app-shell .ui-breadcrumb ol { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; list-style: none; }
.app-shell .ui-breadcrumb li + li::before { content: '/'; display: inline-block; padding-right: .4rem; color: var(--ui-muted); }
.app-shell :is(input,select,textarea) { max-width: 100%; }
.app-shell :is(img,svg,canvas,iframe) { max-width: 100%; }
.app-shell .app-main :is(.row, .d-flex, .container, .container-fluid) > * { min-width: 0; }
.app-shell .btn { overflow-wrap: anywhere; }
.app-shell .table-responsive { max-width: 100%; overscroll-behavior-inline: contain; }
.app-shell :is(.alert, .ui-state, .ui-form-errors, .dropdown-menu, .modal-content) { overflow-wrap: anywhere; }
.app-shell .stats-grid.ui-secondary-metrics { gap: .65rem; }
.app-shell .stats-grid.ui-secondary-metrics .stats-card { padding: .8rem 1rem; box-shadow: none; background: var(--ui-surface); border-radius: var(--ui-radius-sm); }
.app-shell .stats-grid.ui-secondary-metrics .stats-value { font-size: 1.35rem; }
.app-shell .batch-overview-hero .stats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.app-shell .batch-overview-hero .stats-note { font-size: .75rem; }
.app-shell .pickup-session-bar summary { padding: .75rem 1rem; }
.app-shell .pickup-import-panel { margin-bottom: 1rem; }
.app-shell .pickup-hero-steps { display: flex; flex-wrap: wrap; gap: .75rem; color: var(--ui-muted); }
.app-shell .landing-hero { padding-block: clamp(2rem, 5vw, 4rem); }
.app-shell .landing-hero h1 { max-width: 18ch; text-wrap: balance; }
.app-shell .landing-hero .lead { max-width: 58ch; }
.app-shell .app-public-bar { padding-inline: max(1rem, calc((100vw - 1320px) / 2)); }
@media (max-width: 991.98px) {
  .app-shell .ui-split-workspace { grid-template-columns: minmax(0, 1fr); }
  .app-shell .ui-view-nav { gap: .2rem; }
}
@media (max-width: 767.98px) {
  .app-shell .app-content { padding: 1rem 1rem 1.5rem; }
  .app-shell :is(.ui-page-header, .accounting-header, .ui-object-header) { gap: .85rem; }
  .app-shell :is(.ui-page-actions,.accounting-header-actions) { width: 100%; }
  .app-shell :is(.ui-page-actions,.accounting-header-actions) .btn { min-height: 2.75rem; flex: 0 1 auto; }
  .app-shell .ui-view-nav a { min-height: 2.75rem; padding-inline: .65rem; font-size: .85rem; }
  .app-shell .batch-overview-hero .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .app-shell :is(.ui-surface-body,.accounting-panel) { padding: 1rem; }
  .app-shell :is(input,select,textarea):not([type="checkbox"]):not([type="radio"]) { font-size: 1rem; }
  .app-shell .app-main .btn:not(.btn-link) { min-height: 2.75rem; }
  .app-shell .ui-pagination { align-items: flex-start; }
  .app-shell .ui-pagination-actions { width: 100%; justify-content: space-between; }
  .app-shell .app-public-bar { flex-wrap: wrap; padding-inline: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
  .app-shell *, .app-shell *::before, .app-shell *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

.app-sidebar-footer-links { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .25rem; margin-bottom: .65rem; }
.app-sidebar-footer-links a { display: flex; gap: .4rem; align-items: center; padding: .4rem .5rem; border-radius: var(--ui-radius-sm); color: var(--ui-muted); font-size: .8rem; text-decoration: none; }
.app-sidebar-footer-links a:hover { background: var(--ui-canvas); color: var(--ui-text); }
.app-sidebar-collapsed .app-sidebar-footer-links { grid-template-columns: minmax(0,1fr); }

/* Consent remains fully explicit while taking less of a small screen. */
.app-shell .cookie-banner { background: var(--ui-surface); backdrop-filter: none; max-height: calc(100dvh - 2rem); overflow-y: auto; border-color: var(--ui-border); box-shadow: var(--ui-shadow-md); }
.app-shell .cookie-banner__shape, .app-shell .cookie-banner__eyebrow { display: none; }
.app-shell .cookie-banner__content { padding: 1rem; }
.app-shell .cookie-banner__text { font-size: .85rem; line-height: 1.5; }
.app-shell .cookie-banner__controls { flex-wrap: wrap; gap: .5rem 1rem; }
.app-shell .cookie-banner__actions { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .4rem; }
.app-shell .cookie-banner__actions .btn { width: auto; min-width: 0; margin: 0; padding-inline: .4rem; font-size: .8rem; }

.batch-create-page[data-ui-views-ready] .batch-create-menu { display: block; }
.batch-create-page[data-ui-views-ready] .batch-create-alternatives { display: block; }
.batch-import-choice:has([aria-current="page"]) { border-color: var(--ui-accent); }
.ui-process-steps { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; padding: 0 0 1rem; margin: 0 0 1rem; list-style: none; border-bottom: 1px solid var(--ui-border); color: var(--ui-muted); font-size: .875rem; }
.ui-process-steps [aria-current="step"] { color: var(--ui-accent-link); font-weight: 650; }
.app-shell .ui-language-choice { min-width: 3.5rem; min-height: 2.75rem; padding: .5rem; }

.app-shell .batch-create-page .batch-import-choices { display: flex; gap: .25rem; grid-template-columns: none; }
.app-shell .batch-create-page .batch-import-choices a { flex: 0 1 auto; }

/* One actionable reminder outside the tax workspace. */
.ui-deadline-summary { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.35rem 1rem; align-items:center; padding:.65rem .85rem; margin-bottom:1rem; border:1px solid var(--bs-border-color); border-left:3px solid var(--bs-warning); border-radius:.5rem; font-size:.875rem; }
.ui-deadline-summary a { font-weight:600; }
.ui-form-wide { width:100%; max-width:880px; }
.ui-form-narrow { width:100%; max-width:520px; }
@media(max-width:600px) {
  .app-shell .fd-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .app-shell .fd-filters > div { min-width:0; }
  .app-shell .fd-filters input,.app-shell .fd-filters select { min-width:0; width:100%; max-width:100%; }
}
@media(max-width:360px) { .app-shell .fd-filters { grid-template-columns:minmax(0,1fr); } }
.app-shell .ui-page-actions { min-width:0; max-width:100%; }
.app-shell .ui-page-actions > :is(.btn, details) { max-width:100%; }
/* Keep absolute accessible labels inside the horizontally scrolling table. */
.app-shell .ui-table-wrap { position:relative; }
@media(max-width:767.98px) {
  .app-shell .batch-catalog-card { grid-template-columns:minmax(0,1fr); }
  .app-shell .batch-card-primary-meta,.app-shell .batch-inline-update-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .app-shell .batch-card-name-link { overflow-wrap:anywhere; }
  .app-shell .batch-catalog-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .app-shell .batch-catalog-actions .btn { min-height:44px; white-space:normal; }
}
