/* The confirmed closeout layout is scoped to the formal shell. Demo/auth stay
   on their existing styles; module fields and permission visibility are reused. */
/* Batch 02 extends the same shell and forms, with adjacent object details. */
.batch02-directory { min-width:0; }
.batch02-toolbar,.batch02-actions { display:flex; flex-wrap:wrap; align-items:end; gap:var(--sp-3); }
.batch02-toolbar { margin:var(--sp-4) 0; }
.batch02-toolbar label { display:flex; flex-direction:column; gap:var(--sp-2); min-width:0; }
.batch02-row { padding:var(--sp-4) 0; border-bottom:1px solid var(--line); min-width:0; }
.batch02-row .panel-heading { align-items:start; margin:0; }
.batch02-row h3,.batch02-row p,.batch02-detail p { overflow-wrap:anywhere; }
.batch02-detail { border-top:1px solid var(--line); padding:var(--sp-4) 0 var(--sp-1); margin-top:var(--sp-3); min-width:0; }
.batch02-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-4); margin:var(--sp-4) 0 var(--sp-6); }
.batch02-form label { display:flex; flex-direction:column; gap:var(--sp-2); min-width:0; color:var(--text-soft); }
.batch02-form input:not([type=checkbox]),.batch02-form select,.batch02-toolbar input,.batch02-toolbar select { width:100%; min-width:0; min-height:44px; padding:var(--sp-3) var(--sp-3); border:1px solid var(--border-control); border-radius:var(--radius-control); background:var(--bg-input); font:inherit; color:var(--text); box-sizing:border-box; }
.batch02-form textarea { min-width:0; min-height:88px; padding:var(--sp-3) var(--sp-3); border:1px solid var(--border-control); border-radius:var(--radius-control); font:inherit; color:var(--text); resize:vertical; }
.batch02-wide { grid-column:1/-1; }
.batch02-form fieldset { min-width:0; border:1px solid var(--line); border-radius:var(--radius-control); padding:var(--sp-3); }
.batch02-form .batch02-field-group { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-4); padding:var(--sp-4); }
.batch02-field-group legend { padding:0 var(--sp-2); font-weight:600; color:var(--text); }
.batch02-checks { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-2); }
.batch02-form .batch02-check,.batch02-checks label { display:flex; flex-direction:row; align-items:center; min-height:44px; gap:var(--sp-3); }
.batch02-check input,.batch02-checks input { flex:none; width:22px; height:22px; accent-color:var(--ui-green); }
.batch02-contact { margin:var(--sp-3) 0; padding:0 var(--sp-3); border:1px solid var(--line); border-radius:var(--radius-control); }
.batch02-detail summary { min-height:44px; padding:var(--sp-3) 0; cursor:pointer; box-sizing:border-box; }
.batch02-detail h3 { margin:var(--sp-5) 0 var(--sp-2); }
.batch02-detail .button,.batch02-directory .button,.batch02-source .button { min-height:44px; }
.batch02-detail [role=status]:not(:empty) { color:var(--text-soft); }
.batch02-detail [role=status][data-tone=success] { color:var(--ui-green); }
.batch02-detail [role=status][data-tone=attention],.batch02-attention { color:var(--warning); }
.batch02-directory .button--primary,.batch02-detail .button--primary { background:var(--ui-green); border-color:var(--ui-green); color:var(--primary-contrast); }
.batch02-detail [role=status]:empty { display:none; }
.batch02-source { overflow-wrap:anywhere; }
@media(max-width:1023px) {
  .batch02-form .batch02-field-group { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:600px) {
  .batch02-form { grid-template-columns:minmax(0,1fr); gap:var(--sp-4); }
  .batch02-form .batch02-field-group { grid-template-columns:minmax(0,1fr); gap:var(--sp-4); padding:var(--sp-4); }
  .batch02-row>.panel-heading,.batch02-detail>.panel-heading { flex-direction:column; align-items:stretch; gap:var(--sp-3); }
  .batch02-toolbar label { width:100%; }
  .batch02-actions { align-items:stretch; }
  .batch02-actions .button { flex:1 1 auto; }
  .batch02-checks { grid-template-columns:minmax(0,1fr); }
}
#formalShell[data-ui-navigation] { --ui-green:var(--primary); background:var(--bg-page, var(--page)); }
#formalShell[data-ui-navigation] [hidden] { display:none!important; }
#formalShell[data-ui-navigation] .formal-shell__sidebar { width:var(--sidebar-width, 240px); padding:var(--space-5) var(--space-4); background:var(--sidebar-bg, var(--surface)); color:var(--sidebar-text, var(--text)); border-right:1px solid var(--sidebar-border, var(--line)); }
#formalShell[data-ui-navigation] .formal-shell__sidebar .formal-auth-brand { padding:0 var(--space-2) var(--sp-5); }
#formalShell[data-ui-navigation] .formal-shell__main { margin-left:var(--sidebar-width, 240px); background:var(--bg-page, var(--page)); }
#formalShell[data-ui-navigation] .formal-business-navigation { display:grid; gap:var(--space-1); overflow-y:auto; }
#formalShell[data-ui-navigation] .formal-business-navigation button { min-height:44px; padding:var(--space-3) var(--space-4); border:0; border-radius:var(--radius-md); background:transparent; color:var(--sidebar-text); font:inherit; font-size:var(--fs-md); text-align:left; cursor:pointer; }
#formalShell[data-ui-navigation] .formal-business-navigation button:hover { background:var(--sidebar-hover-bg, var(--surface-subtle)); }
#formalShell[data-ui-navigation] .formal-business-navigation button.is-active { background:var(--sidebar-active-bg, var(--surface)); color:var(--sidebar-active-text, var(--primary)); font-weight:600; box-shadow:var(--sidebar-active-shadow, none); }
.formal-password-mobile { display: none; }
.formal-topbar { display:none; }
#formalShell[data-ui-navigation] .formal-topbar { display:flex; min-height:64px; align-items:center; justify-content:space-between; gap:var(--space-4); padding:var(--space-2) var(--space-6); background:var(--topbar-bg, var(--surface)); border-bottom:1px solid var(--topbar-border, var(--line)); }
#formalShell[data-ui-navigation] .formal-topbar__identity { display:flex; align-items:center; gap:var(--space-4); color:var(--text-soft); font-size:var(--fs-md); }
#formalShell[data-ui-navigation] #formalLocationLabel { color:var(--text-soft); font-size:var(--fs-md); }
#formalShell[data-ui-navigation] #formalRoleMenu { position:relative; }
#formalShell[data-ui-navigation] #formalRoleMenu summary { display:flex; align-items:center; gap:var(--sp-5); min-height:44px; padding:var(--space-2) var(--space-3); border:1px solid var(--border-control); border-radius:var(--radius-small); cursor:pointer; list-style:none; }
#formalShell[data-ui-navigation] #formalRoleMenu summary::-webkit-details-marker { display:none; }
#formalShell[data-ui-navigation] #formalRoleNavigation { position:absolute; z-index:30; top:100%; right:0; min-width:180px; padding:var(--space-2); border:1px solid var(--border, var(--line)); border-radius:var(--radius-small); background:var(--bg-surface, var(--surface)); box-shadow:var(--shadow-card, none); }
#formalShell[data-ui-navigation] #formalRoleNavigation button { min-height:44px; }
#formalShell[data-ui-navigation] .formal-workspace { width:calc(100% - 60px); max-width:1280px; padding:var(--space-5) 0 calc(var(--space-1) * 14); }
#formalShell[data-ui-navigation] .formal-workspace__heading { margin-bottom:var(--space-5); }
#formalShell[data-ui-navigation] .formal-workspace__heading h1 { font-size:var(--fs-2xl); font-weight:800; letter-spacing:var(--title-tracking); }
#formalShell[data-ui-navigation] .formal-workspace__heading p { margin-top:var(--space-2); font-size:var(--fs-md); }
#formalShell[data-ui-navigation] .formal-business-tabs:not(.formal-expense-navigation) { display:none; }
#formalShell[data-ui-navigation] .formal-expense-navigation { position:static; margin-bottom:var(--sp-4); }
#formalShell[data-ui-navigation] #formalReimbursementBusiness[data-ui-destination=projects] .role-workspace-grid,
#formalShell[data-ui-navigation] #formalReimbursementBusiness[data-ui-destination=costs] .role-workspace-grid,
#formalShell[data-ui-navigation] #formalReimbursementBusiness[data-ui-destination=funds] .role-workspace-grid { grid-template-columns:minmax(0,1fr); }
#formalShell[data-ui-navigation] [data-ui-view=projects] { min-width:0; }
#formalShell[data-ui-navigation] [data-ui-view=projects] .role-workspace-metrics { display:none; }
#formalShell[data-ui-navigation] .formal-home-layout,
#formalShell[data-ui-navigation] #formalHomeLayout { display:grid; grid-template-columns:minmax(0,1fr) 248px; gap:var(--sp-5); align-items:start; }
#formalShell[data-ui-navigation] #formalHomePrimary,
#formalShell[data-ui-navigation] #formalBusinessWorkbench { display:contents; }
#formalShell[data-ui-navigation] .formal-workbench-summary { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--space-4); }
#formalShell[data-ui-navigation] .formal-workbench-summary button { display:grid; justify-items:start; gap:var(--space-2); min-width:0; padding:var(--sp-5); border:1px solid var(--border-control); border-radius:var(--radius-medium); background:var(--bg-surface, var(--surface)); color:var(--text-soft); text-align:left; font:inherit; cursor:pointer; box-shadow:var(--shadow-card, none); }
#formalShell[data-ui-navigation] .formal-workbench-summary strong { color:var(--text); font-size:var(--fs-kpi); line-height:1.1; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
#formalShell[data-ui-navigation] .formal-workbench-summary small { color:var(--text-faint); font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-workbench-panel { grid-column:1; min-width:0; border:1px solid var(--card-border, var(--line)); border-radius:var(--radius-medium); background:var(--bg-surface, var(--surface)); overflow:hidden; box-shadow:var(--shadow-card, none); }
#formalShell[data-ui-navigation] .formal-workbench-panel > .panel-heading { padding:var(--space-4) var(--sp-5); margin:0; border-bottom:1px solid var(--line); align-items:center; flex-direction:row; }
#formalShell[data-ui-navigation] .formal-workbench-panel > .panel-heading > .button { width:auto; flex:none; }
#formalShell[data-ui-navigation] .formal-workbench-panel h2 { font-size:var(--fs-lg); }
#formalShell[data-ui-navigation] .formal-workbench-panel p { margin:var(--space-1) 0 0; font-size:var(--fs-sm); line-height:1.6; color:var(--text-soft); }
#formalShell[data-ui-navigation] .formal-workbench-panel > [role=status]:not([hidden]) { margin:var(--space-3) var(--sp-5); color:var(--warning); }
#formalShell[data-ui-navigation] .batch-workbench-tabs { display:flex; flex-wrap:nowrap; gap:var(--sp-5); padding:0 var(--sp-5); overflow-x:auto; border-bottom:1px solid var(--line); }
#formalShell[data-ui-navigation] .batch-workbench-tabs button { flex:none; min-height:48px; border:0; border-bottom:2px solid transparent; background:transparent; padding:var(--space-2) 0; color:var(--text-soft); font:inherit; font-size:var(--fs-sm); cursor:pointer; }
#formalShell[data-ui-navigation] .batch-workbench-tabs button[aria-pressed=true] { color:var(--ui-green); border-bottom-color:var(--ui-green); font-weight:600; }
#formalShell[data-ui-navigation] .formal-workbench-search { display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-2); padding:var(--space-3) var(--sp-5); border-bottom:1px solid var(--line); font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-workbench-search input { width:min(100%,240px); min-height:44px; border:1px solid var(--border-control); border-radius:var(--radius-small); padding:var(--space-2) var(--space-3); background:var(--bg-input, var(--bg-surface)); font:inherit; }
#formalShell[data-ui-navigation] .formal-workbench-search small { color:var(--text-faint); font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-workbench-panel .batch-row { margin:0; padding:var(--space-4) var(--sp-5); border:0; border-bottom:1px solid var(--row-border, var(--line)); border-radius:0; background:var(--bg-surface, var(--surface)); }
#formalShell[data-ui-navigation] .formal-workbench-panel .batch-row > .panel-heading { margin:0; gap:var(--space-4); align-items:center; }
#formalShell[data-ui-navigation] .formal-workbench-panel .batch-row h3 { margin:0; font-size:var(--fs-md); line-height:1.5; overflow-wrap:anywhere; }
#formalShell[data-ui-navigation] .formal-workbench-panel .batch-row .button { flex-shrink:0; font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-workbench-empty,
#formalShell[data-ui-navigation] [data-batch-search-empty] { padding:var(--sp-5); }
#formalShell[data-ui-navigation] .formal-workbench-pagination { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:var(--space-3); padding:var(--space-3) var(--sp-5); color:var(--text-faint); font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-workbench-pagination > div { display:flex; gap:var(--space-2); }
#formalShell[data-ui-navigation] .formal-home-shortcuts { grid-column:2; grid-row:2; padding:var(--sp-5); border:1px solid var(--card-border, var(--line)); border-radius:var(--radius-medium); background:var(--bg-surface, var(--surface)); box-shadow:var(--shadow-card, none); }
#formalShell[data-ui-navigation] .formal-home-shortcuts h2 { margin:0 0 var(--space-4); font-size:var(--fs-lg); }
#formalShell[data-ui-navigation] .formal-home-shortcuts > div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-2); }
#formalShell[data-ui-navigation] .formal-home-shortcuts button { padding:var(--space-3) var(--space-2); min-height:64px; white-space:normal; text-align:center; font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] .formal-home-shortcuts p { margin:var(--space-4) 0 0; color:var(--text-faint); font-size:var(--fs-sm); line-height:1.8; }
#formalShell[data-ui-navigation] .formal-menu-backdrop { position:fixed; inset:0; z-index:39; border:0; background:#122b2350; }
#formalShell[data-ui-navigation] .formal-shell__main > #projectView[data-formal-project-detail=true] { display:block; width:calc(100% - 60px); max-width:1280px; padding:var(--space-5) 0 calc(var(--space-1) * 14); }
#formalShell[data-ui-navigation] #projectView .ui-project-section-inactive { display:none!important; }
#formalShell[data-ui-navigation] #projectView .project-identity { padding:var(--sp-5); border:1px solid var(--card-border, var(--line)); border-radius:var(--radius-medium); background:var(--bg-surface, var(--surface)); }
#formalShell[data-ui-navigation] #projectView .project-shell-tools { display:flex; flex-direction:column; align-items:stretch; gap:var(--space-2); position:sticky; top:0; z-index:15; padding:var(--space-2) 0; margin-bottom:var(--space-4); background:var(--bg-page, var(--page)); }
#formalShell[data-ui-navigation] #projectView #backToWorkbench { min-height:44px; width:auto; align-self:flex-start; order:0; }
#formalShell[data-ui-navigation] .formal-project-groups { display:flex; gap:var(--space-4); overflow-x:auto; order:1; width:100%; border-bottom:1px solid var(--line); }
#formalShell[data-ui-navigation] .formal-project-groups button { flex:none; min-height:44px; border:0; border-bottom:2px solid transparent; padding:var(--space-2) var(--space-1); background:transparent; font:inherit; font-size:var(--fs-md); color:var(--text-soft); cursor:pointer; }
#formalShell[data-ui-navigation] .formal-project-groups button.is-active { color:var(--ui-green); font-weight:600; border-bottom-color:var(--ui-green); }
#formalShell[data-ui-navigation] #projectView #projectSectionNavigation { position:static; width:100%; margin-left:0; order:2; }
#formalShell[data-ui-navigation] #projectView #projectSectionNavigationList { display:flex; flex-wrap:wrap; gap:var(--space-2); }
#formalShell[data-ui-navigation] #projectView #projectSectionNavigationList button { min-height:44px; padding:var(--space-2) var(--space-3); font-size:var(--fs-sm); }
#formalShell[data-ui-navigation] #projectView #projectSectionNavigationList [aria-current=location] { background:var(--sidebar-active-bg); color:var(--sidebar-active-text); }
@media(min-width:1024px) {
  #formalShell[data-ui-navigation] #projectView #projectSectionNavigation > summary { display:none; }
}
#formalShell[data-ui-navigation] :is(button,summary,a,select,input,textarea):focus-visible { outline:2px solid var(--ui-green); outline-offset:3px; }
#formalShell[data-ui-navigation] :is(.formal-admin-project-row,.formal-project-row,.batch-row,.panel-heading) > div { min-width:0; }
#formalShell[data-ui-navigation] :is(h1,h2,h3,strong,p,dd,.formal-admin-project-row__identity) { overflow-wrap:anywhere; }
@media(max-width:1199px) {
  #formalShell[data-ui-navigation] #formalHomeLayout { grid-template-columns:minmax(0,1fr); }
  #formalShell[data-ui-navigation] .formal-home-shortcuts { grid-column:1; grid-row:auto; }
  #formalShell[data-ui-navigation] .formal-home-shortcuts > div { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media(max-width:1023px) {
  #formalShell[data-ui-navigation] .formal-shell__main { margin-left:0; }
  #formalShell[data-ui-navigation] .formal-topbar { display:none; }
  #formalShell[data-ui-navigation] .formal-mobile-header { min-height:64px; padding:var(--space-2) var(--space-3); gap:var(--space-2); }
  #formalShell[data-ui-navigation] .formal-workspace { width:calc(100% - 32px); padding:var(--space-5) 0 calc(var(--space-1) * 12); }
  #formalShell[data-ui-navigation] .formal-shell__sidebar { display:none; }
  #formalShell[data-ui-navigation][data-mobile-menu=true] .formal-shell__sidebar { display:flex; z-index:40; width:min(280px,calc(100% - 64px)); }
  #formalShell[data-ui-navigation] .formal-shell__main > #projectView[data-formal-project-detail=true] { width:calc(100% - 32px); padding:var(--sp-5) 0 calc(var(--space-1) * 12); }
}
@media(max-width:600px) {
  #formalShell[data-ui-navigation] .formal-workspace { padding-top:var(--space-4); }
  #formalShell[data-ui-navigation] .formal-workspace__heading { margin-bottom:var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workspace__heading h1 { font-size:var(--fs-2xl); }
  #formalShell[data-ui-navigation] .formal-workbench-summary { grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-2); }
  #formalShell[data-ui-navigation] .formal-workbench-summary button { grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:var(--space-1); min-height:60px; padding:var(--space-3) var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workbench-summary span { font-size:var(--fs-sm); }
  #formalShell[data-ui-navigation] .formal-workbench-summary strong { font-size:var(--fs-xl); }
  #formalShell[data-ui-navigation] .formal-workbench-summary small { display:none; }
  #formalShell[data-ui-navigation] .formal-workbench-panel > .panel-heading { padding:var(--space-3) var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workbench-panel > .panel-heading p { display:none; }
  #formalShell[data-ui-navigation] .formal-workbench-panel > .panel-heading,
  #formalShell[data-ui-navigation] .formal-workbench-panel .batch-row { padding:var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workbench-panel .batch-row > .panel-heading { display:flex; flex-direction:row; align-items:flex-start; flex-wrap:wrap; gap:var(--space-2); }
  #formalShell[data-ui-navigation] .formal-workbench-panel .batch-row > .panel-heading > div { flex:1 1 190px; }
  #formalShell[data-ui-navigation] .formal-workbench-search { display:grid; grid-template-columns:auto minmax(0,1fr); gap:var(--space-1) var(--space-2); padding:var(--space-2) var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workbench-search > span { width:auto; }
  #formalShell[data-ui-navigation] .formal-workbench-search input { width:100%; }
  #formalShell[data-ui-navigation] .formal-workbench-search small { grid-column:1/-1; }
  #formalShell[data-ui-navigation] .batch-workbench-tabs { gap:var(--space-4); padding:0 var(--space-3); }
  #formalShell[data-ui-navigation] .formal-workbench-pagination { padding:var(--space-3) var(--space-3); }
  #formalShell[data-ui-navigation] .formal-home-shortcuts { padding:var(--space-4); }
  #formalShell[data-ui-navigation] .formal-home-shortcuts > div { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #formalShell[data-ui-navigation] #projectView .project-identity { padding:var(--space-4); }
  #formalShell[data-ui-navigation] #projectView #projectSectionNavigation { width:100%; margin-left:0; }
  #formalShell[data-ui-navigation] #projectView #projectSectionNavigationList { flex-wrap:nowrap; overflow-x:auto; }
  #formalShell[data-ui-navigation] #projectView #projectSectionNavigationList button { flex:none; }
}

/* Phase 3b C density (>=1024px, finance/admin only).
   Role hooks come from formalNavigation.js; module hooks exclude project detail,
   account maintenance and employee/boss views. No change to hidden state.
   Containers keep their font-size so headings (h3/h4) and emphasised amounts (<b>)
   keep their existing size; 13px applies to body-text descendants only. */
@media (min-width:1024px) {
  :is(
    #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-person,
    #formalShell[data-ui-role="finance"] .role-workspace--finance .formal-payment-history__item,
    #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-card,
    #formalShell[data-ui-role="finance"] #formalCustomerFunds .b3-receipt-card,
    #formalShell:is([data-ui-role="finance"], [data-ui-role="admin"]) #formalSupplierFunds .b5-row,
    #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row,
    #formalShell[data-ui-role="admin"] .formal-admin-project-list .formal-admin-project-row
  ) {
    line-height: var(--dense-lh);
    min-width: 0;
    overflow-wrap: anywhere;
  }

  :is(
    #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-person,
    #formalShell[data-ui-role="finance"] .role-workspace--finance .formal-payment-history__item,
    #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-card,
    #formalShell[data-ui-role="finance"] #formalCustomerFunds .b3-receipt-card,
    #formalShell:is([data-ui-role="finance"], [data-ui-role="admin"]) #formalSupplierFunds .b5-row,
    #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row,
    #formalShell[data-ui-role="admin"] .formal-admin-project-list .formal-admin-project-row
  ) :is(p, span, small, strong, dt, dd, li, label, button, summary, input, select, textarea, header) {
    font-size: var(--dense-font);
    line-height: var(--dense-lh);
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  :is(
    #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-person,
    #formalShell[data-ui-role="finance"] .role-workspace--finance .formal-payment-history__item,
    #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-card,
    #formalShell[data-ui-role="finance"] #formalCustomerFunds .b3-receipt-card,
    #formalShell:is([data-ui-role="finance"], [data-ui-role="admin"]) #formalSupplierFunds .b5-row,
    #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row,
    #formalShell[data-ui-role="admin"] .formal-admin-project-list .formal-admin-project-row
  ) :is(button, summary, input, select) {
    min-height: var(--control-height-touch);
    max-width: 100%;
  }

  #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-person {
    min-height: var(--dense-row-min-h);
  }

  #formalShell[data-ui-role="finance"] #formalReimbursementBusiness .formal-finance-review .formal-person-summary {
    min-height: var(--dense-row-min-h);
    padding: var(--dense-row-py) 0;
    flex-wrap: wrap;
  }

  #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-batch,
  #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-card,
  #formalShell[data-ui-role="finance"] #formalCustomerFunds .b3-receipt-card {
    padding: var(--dense-card-p);
  }

  #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-item {
    padding: var(--dense-row-py) var(--dense-card-p);
  }

  #formalShell[data-ui-role="finance"] .role-workspace--finance .formal-payment-history__item,
  #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-history-row,
  #formalShell:is([data-ui-role="finance"], [data-ui-role="admin"]) #formalSupplierFunds :is(.b5-row, .b5-history-row),
  #formalShell[data-ui-role="admin"] .formal-admin-project-list .formal-admin-project-row {
    padding-block: var(--dense-row-py);
  }

  #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row {
    padding: var(--dense-row-py) var(--dense-card-p);
  }

  #formalShell[data-ui-role="finance"] .formal-finance-review :is(.formal-finance-item__heading, .formal-finance-batch > header),
  #formalShell[data-ui-role="admin"] [data-b2-admin] :is(.b2-card-heading, .b2-detail-heading, .b2-history-row > div),
  #formalShell:is([data-ui-role="finance"], [data-ui-role="admin"]) #formalSupplierFunds .b5-row > .panel-heading,
  #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row > .panel-heading {
    flex-wrap: wrap;
  }

  #formalShell[data-ui-role="finance"] .formal-finance-review .formal-finance-item__heading > div,
  #formalShell[data-ui-role="admin"] [data-b2-admin] .b2-card-heading > div,
  #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-row > .panel-heading > div {
    min-width: 0;
    flex: 1 1 12rem;
  }

  #formalShell[data-ui-role="admin"] .formal-admin-project-list .formal-admin-project-row > dl > div {
    min-width: 0;
  }

  #formalShell[data-ui-role="finance"] #formalBusinessWorkbench .batch-reimbursement-summary li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--sp-2);
    padding-block: var(--dense-row-py);
  }
}

/* P1-6a: assistant styles stay within the formal shell and Theme B tokens. */
#formalShell {
  --assistant-width: clamp(360px, 30vw, 440px);
}
#formalShell .formal-shell__main {
  min-width: 0;
}
#formalShell[data-assistant-open="true"][data-assistant-mode="docked"] .formal-shell__main {
  margin-right: var(--assistant-width);
}
#formalShell .assistant-trigger {
  position: relative;
  flex: none;
  min-height: 44px;
  padding: 8px 14px;
  border: 1px solid var(--primary);
  border-radius: var(--radius-pill);
  background: var(--primary-soft);
  color: var(--primary);
  white-space: nowrap;
  font-weight: 700;
}
#formalShell .assistant-trigger[aria-expanded="true"] {
  background: var(--primary);
  color: var(--primary-contrast);
}
#formalShell [data-assistant-badge] {
  position: absolute;
  top: -7px;
  right: -5px;
  min-width: 22px;
  padding: 1px 5px;
  border: 2px solid var(--bg-surface);
  border-radius: var(--radius-pill);
  background: var(--st-neutral-bg);
  color: var(--st-neutral-fg);
  font-size: var(--fs-xs);
  line-height: 18px;
}
#formalShell .assistant-panel {
  position: fixed;
  z-index: 42;
  top: var(--assistant-top, 0px);
  left: var(--assistant-left, auto);
  right: 0;
  display: flex;
  flex-direction: column;
  width: var(--assistant-width);
  max-width: var(--assistant-viewport-width, 100%);
  height: var(--assistant-viewport-height, 100dvh);
  box-sizing: border-box;
  padding-top: env(safe-area-inset-top);
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
  border-left: 1px solid var(--border);
  background: var(--bg-surface);
  color: var(--text);
  overflow-wrap: anywhere;
}
#formalShell .assistant-panel[data-mode="docked"] {
  z-index: 25;
}
#formalShell .assistant-panel[data-mode="fullscreen"] {
  width: var(--assistant-viewport-width, 100%);
}
#formalShell .assistant-panel[hidden],
#formalShell .assistant-panel__backdrop[hidden] {
  display: none;
}
#formalShell .assistant-panel__header {
  display: flex;
  flex: none;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  min-height: 64px;
  padding: var(--sp-2) var(--sp-4);
  border-bottom: 1px solid var(--border);
}
#formalShell .assistant-panel h2 {
  margin: 0;
  color: var(--primary);
  font-size: var(--fs-lg);
}
#formalShell .assistant-panel h3 {
  margin: 0 0 var(--sp-2);
  color: var(--text-muted);
  font-size: var(--fs-sm);
}
#formalShell .assistant-panel__body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--sp-4);
  background: var(--bg-subtle);
}
#formalShell .assistant-panel__section {
  margin-bottom: var(--sp-5);
}
#formalShell .assistant-panel__chips,
#formalShell .assistant-panel__feedback {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}
#formalShell .assistant-panel__chips .button {
  border-radius: var(--radius-pill);
  color: var(--primary);
  white-space: normal;
  text-align: left;
}
#formalShell .assistant-panel .button,
#formalShell .assistant-panel summary {
  min-width: 44px;
  min-height: 44px;
}
#formalShell .assistant-panel__more {
  flex-basis: 100%;
}
#formalShell .assistant-panel__more summary {
  display: flex;
  align-items: center;
  color: var(--primary);
  cursor: pointer;
}
#formalShell .assistant-panel__todo {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  margin-bottom: var(--sp-2);
  padding: var(--sp-3);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  font-size: var(--fs-md);
}
#formalShell .assistant-panel__todo .button {
  flex: none;
  color: var(--primary);
}
#formalShell .assistant-panel__question,
#formalShell .assistant-panel__answer {
  margin: var(--sp-3) 0;
  padding: var(--sp-3);
  border-radius: var(--radius-card);
  font-size: var(--fs-md);
}
#formalShell .assistant-panel__question {
  margin-left: var(--sp-6);
  background: var(--primary);
  color: var(--primary-contrast);
  white-space: pre-wrap;
}
#formalShell .assistant-panel__answer {
  border: 1px solid var(--card-border);
  background: var(--bg-surface);
}
#formalShell .assistant-panel__text {
  margin: 0 0 var(--sp-2);
  white-space: pre-wrap;
}
#formalShell .assistant-panel__feedback {
  margin-top: var(--sp-2);
}
#formalShell .assistant-panel__reason-area {
  flex-basis: 100%;
  min-width: 0;
}
#formalShell .assistant-panel__consent label {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  min-height: 44px;
  cursor: pointer;
}
#formalShell .assistant-panel__consent input {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}
#formalShell .assistant-panel__preview {
  padding: var(--sp-2);
  background: var(--surface);
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}
#formalShell .assistant-panel__preview p {
  margin: var(--sp-2) 0;
}
#formalShell .assistant-escalations li {
  margin: var(--sp-3) 0;
  overflow-wrap: anywhere;
}
#formalShell .assistant-escalations__question {
  white-space: pre-wrap;
}
#formalShell .assistant-panel__feedback > .assistant-panel__chips {
  flex-basis: 100%;
}
#formalShell .assistant-panel__intro,
#formalShell .assistant-panel__status {
  margin: var(--sp-2) 0;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}
#formalShell .assistant-panel__footer {
  flex: none;
  max-height: calc(var(--assistant-viewport-height, 100dvh) - 64px);
  overflow-y: auto;
  padding: var(--sp-3);
  padding-bottom: max(var(--sp-3), env(safe-area-inset-bottom));
  border-top: 1px solid var(--border);
  background: var(--bg-surface);
}
#formalShell .assistant-panel__form {
  display: flex;
  align-items: flex-end;
  gap: var(--sp-2);
}
#formalShell .assistant-panel textarea {
  flex: 1;
  min-width: 0;
  min-height: 44px;
  max-height: min(144px, 20vh);
  resize: vertical;
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--border-control);
  border-radius: var(--radius-control);
  background: var(--bg-input);
  color: var(--text);
  font: inherit;
  font-size: 16px;
}
#formalShell .assistant-panel__footnote {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  color: var(--text-faint);
  font-size: var(--fs-xs);
}
#formalShell .assistant-panel__budget {
  margin: 0 0 var(--sp-3);
  padding: var(--sp-3);
  border: 1px solid var(--st-warning-bd);
  border-radius: var(--radius-md);
  background: var(--st-warning-bg);
  color: var(--st-warning-fg);
}
#formalShell .assistant-panel__backdrop {
  position: fixed;
  z-index: 41;
  inset: 0;
  border: 0;
  background: var(--text);
  opacity: .3;
}
@media (max-width: 599px) {
  #formalShell .assistant-panel {
    width: var(--assistant-viewport-width, 100%);
    border-left: 0;
  }
  #formalShell[data-ui-navigation] .formal-mobile-header {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    column-gap: var(--space-2);
  }
  #formalShell .formal-mobile-header__actions {
    display: contents;
  }
  #formalShell #formalMobileMenuButton {
    grid-column: 1;
    grid-row: 1;
  }
  #formalShell .formal-mobile-header label {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
  }
  #formalShell .formal-mobile-header select {
    width: 100%;
    max-width: none;
  }
  #formalShell .formal-mobile-header [data-assistant-toggle] {
    grid-column: 3;
    grid-row: 1;
    justify-self: end;
  }
}
.formal-password-mobile { min-height: 44px; }
#formalShell[data-ui-navigation] .formal-topbar__identity {
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--space-2);
}
#formalChangePassword { min-height: 44px; white-space: nowrap; }
@media (max-width: 1023px) {
  .formal-password-mobile { display: block; margin-top: auto; }
  .formal-password-mobile + .formal-shell__logout { margin-top: var(--space-2); }
}

/* Staff feedback stays in the existing docked/overlay/fullscreen panel. */
.assistant-panel__tabs { display: flex; gap: 8px; padding: 8px 16px; border-bottom: 1px solid var(--border); }
.assistant-panel__tabs [aria-selected="true"] { color: var(--primary); border-color: currentColor; font-weight: 700; }
.staff-feedback { flex: 1; min-height: 0; min-width: 0; overflow: auto; padding: 16px; }
.staff-feedback__form { display: grid; gap: 12px; }
.staff-feedback p { margin: 0; overflow-wrap: anywhere; }
.staff-feedback__notice, .staff-feedback__context { font-size: 13px; line-height: 1.6; }
.staff-feedback fieldset { margin: 0; padding: 8px 0; border: 0; display: flex; gap: 20px; }
.staff-feedback fieldset label { display: flex; gap: 6px; align-items: center; min-height: 44px; flex: none; white-space: nowrap; }
.staff-feedback input[type="radio"] { width: 20px; height: 20px; min-height: 20px; margin: 0; flex: none; }
.staff-feedback textarea { width: 100%; box-sizing: border-box; resize: vertical; min-height: 120px; }
.staff-feedback label { min-width: 0; }
.staff-feedback button, .staff-feedback select, .staff-feedback input[type="date"] { min-height: 44px; max-width: 100%; }
.staff-feedback textarea, .staff-feedback select, .staff-feedback input[type="date"] {
  font: inherit; color: inherit; background: var(--bg-surface); border: 1px solid var(--border); border-radius: 8px;
}
.staff-feedback textarea { padding: 10px; }
.staff-feedback__counter { font-size: 12px; text-align: right; }
.staff-feedback__thumbnails { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.staff-feedback__thumbnail { position: relative; width: 88px; }
.staff-feedback__thumbnail img, .staff-feedback__thumbnails > button img {
  width: 88px; height: 72px; object-fit: contain; display: block;
}
.staff-feedback__thumbnail button { position: absolute; right: 0; top: 0; width: 44px; padding: 0; }
.staff-feedback__controls { display: flex; flex-wrap: wrap; gap: 8px; }
.staff-feedback__review { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--line, #d8e2de); }
.staff-feedback summary { cursor: pointer; min-height: 44px; overflow-wrap: anywhere; }
.staff-feedback__filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; margin: 12px 0; }
.staff-feedback__filters label { display: grid; gap: 4px; font-size: 13px; }
.staff-feedback__filters select, .staff-feedback__filters input { width: 100%; min-width: 0; box-sizing: border-box; }
.staff-feedback__item { padding: 16px 0; border-bottom: 1px solid var(--line, #d8e2de); display: grid; gap: 8px; }
.staff-feedback__text { white-space: pre-wrap; }
.staff-feedback__viewer { margin-top: 12px; }
.staff-feedback__viewer img { display: block; max-width: 100%; height: auto; margin-top: 8px; }
.staff-feedback :focus-visible { outline: 2px solid var(--accent, #26725a); outline-offset: 2px; }
/* 负责人 2026-10-29：费用归属页内的「待归属/待确认/历史」「已处理」是页内列表切换，不是被左侧菜单取代的旧页签；管理员要从「历史」找到统筹标的公司日常来撤销。 */
#formalShell[data-ui-navigation] .b2-workspace > .formal-business-tabs { display:flex; }

/* claim-simplify PR1: recognition flags shown to finance */
.formal-payment-flags { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-left: 6px; }
.formal-payment-flag { font-weight: 600; font-size: 12px; padding: 1px 6px; border-radius: 4px; background: #fff4e5; color: #8a4b00; border: 1px solid #f0c48a; }

/* V0.2-37: iOS 日期输入不能撑宽表单；原凭证操作留在拇指可达位置。 */
.formal-expense-form label { min-width:0; }
.formal-expense-form input[type="date"] { width:100%; max-width:100%; min-width:0; box-sizing:border-box; -webkit-appearance:none; appearance:none; }
.formal-private-preview { box-sizing:border-box; }
.formal-private-preview__heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.formal-private-preview__heading button { min-width:44px; min-height:44px; }
.formal-private-preview__back { display:block; width:100%; margin-top:12px; position:sticky; bottom:0; }
