/*
 * BBS Core Universal Adaptive & Accessibility Foundation v1
 * Shared, non-destructive layout primitives. No zoom or transform scaling.
 */

:root {
  --bbs-sidebar-expanded:244px;
  --bbs-sidebar-compact:84px;
  --bbs-shell-inline-size:var(--bbs-sidebar-expanded);
  --bbs-modal-gutter:clamp(8px,2.4vw,24px);
}

html { text-size-adjust:100%;-webkit-text-size-adjust:100%;scroll-padding-block-start:6rem; }
body { min-width:0; }
body,
button,
input,
select,
textarea { font-size:var(--bbs-font-fluid-sm); }

/* App shell */
.app-shell { min-width:0;min-height:100dvh; }
.main-content { width:calc(100% - var(--bbs-shell-inline-size))!important;margin-left:var(--bbs-shell-inline-size)!important;min-width:0; }
.sidebar { width:var(--bbs-shell-inline-size)!important;max-width:100vw;height:100dvh;overscroll-behavior:contain; }
.topbar { min-width:0;padding-inline:var(--bbs-page-gutter); }
.topbar > *,
.top-actions,
.company-switcher { min-width:0; }
.view { width:100%;min-width:0;padding-inline:var(--bbs-page-gutter);container:default-view / inline-size; }
.view.active { display:block; }
.page-heading h1,
.bbs-page-header h1 { font-size:var(--bbs-font-fluid-title);line-height:1.15;text-wrap:balance; }
.page-heading p,
.bbs-page-header p { max-width:70ch;line-height:1.55; }

/* Shared component containers and reflow primitives */
.panel,
.table-panel,
.fiscal-panel,
.medical-panel,
.bbs-card { min-width:0;container-type:inline-size; }
.metric-grid,
.master-summary,
.period-grid,
.company-grid,
.settings-grid,
.hr-summary,
.fiscal-summary,
.medical-summary,
.treasury-summary,
.purchase-summary,
.bbs-kpi-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr)); }
.form-grid,
.bbs-form-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr)); }
.form-grid > .full,
.bbs-form-grid > .full { grid-column:1 / -1; }
.heading-actions,
.request-actions,
.top-actions,
.table-toolbar,
.fiscal-panel-toolbar,
.fiscal-report-toolbar,
.bbs-action-bar { display:flex;flex-wrap:wrap;gap:clamp(.5rem,1vw,.875rem);max-width:100%; }
.heading-actions > *,
.request-actions > *,
.bbs-action-bar > * { min-width:0; }

/* Accessible tabs remain reachable instead of being clipped. */
.medical-tabs,
.fiscal-tabs,
.treasury-tabs,
.treasury-subtabs,
.executive-v2-tabs,
.user-access-tabs,
.customer-profile-tabs,
[role="tablist"],
.bbs-tabs { max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin;scroll-snap-type:inline proximity; }
[role="tablist"] > *,
.bbs-tabs > * { flex:0 0 auto;scroll-snap-align:start; }

/* Tables keep critical data available via local scrolling. Priority metadata is
   available for progressive migrations without hiding information by default. */
.table-scroll,
.table-wrapper,
.fiscal-table-wrap,
.bbs-table-region { width:100%;max-width:100%;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable; }
.bbs-table-region:focus-visible { outline:3px solid var(--bbs-focus-color);outline-offset:2px; }
.bbs-responsive-table { width:100%;border-collapse:collapse; }
.bbs-responsive-table :is(th,td)[data-column-priority="primary"] { position:sticky;left:0;z-index:1;background:var(--bbs-surface-primary);box-shadow:1px 0 var(--bbs-border-subtle); }

/* Viewport-safe dialogs. Internal content scrolls; the page behind does not. */
.modal-backdrop { padding:var(--bbs-modal-gutter);overflow:auto;overscroll-behavior:contain; }
.modal-backdrop > .modal,
.modal[role="dialog"],
.bbs-dialog { width:min(var(--bbs-dialog-max,56rem),100%);max-width:100%;max-height:calc(100dvh - (2 * var(--bbs-modal-gutter)));overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable; }
.modal-header { position:sticky;top:0;z-index:2;padding-block-end:.5rem;background:inherit; }
.modal-actions { position:sticky;bottom:0;z-index:2;margin-inline:calc(-1 * clamp(0px,1.5vw,12px));padding-inline:clamp(0px,1.5vw,12px);padding-bottom:max(0px,env(safe-area-inset-bottom));background:inherit; }

/* Focus, targets and obscured-focus prevention. */
:where(button,a[href],input,select,textarea,[role="button"],[role="tab"],[tabindex]:not([tabindex="-1"])) { scroll-margin-block:6rem; }
:where(button,a[href],[role="button"],[role="tab"]) { min-block-size:min(var(--bbs-target-size),100%); }
:where(button,a[href],input,select,textarea,[role="button"],[role="tab"],[tabindex]:not([tabindex="-1"])):focus-visible { outline:3px solid var(--bbs-color-brand-500)!important;outline-offset:3px!important; }
:where([aria-invalid="true"]) { border-color:var(--bbs-color-danger-600)!important; }
:where([aria-invalid="true"]):focus-visible { outline-color:var(--bbs-color-danger-600)!important; }

/* MD and LG: compact navigation leaves more room for work surfaces. */
@media (min-width:768px) and (max-width:1279px) {
  :root { --bbs-shell-inline-size:var(--bbs-sidebar-compact); }
  .sidebar,
  body.sidebar-collapsed .sidebar { width:var(--bbs-sidebar-compact)!important;padding-inline:12px!important;transform:none!important; }
  .main-content,
  body.sidebar-collapsed .main-content { width:calc(100% - var(--bbs-sidebar-compact))!important;margin-left:var(--bbs-sidebar-compact)!important; }
  .sidebar .brand { width:48px!important;margin-inline:auto!important;overflow:hidden!important; }
  .sidebar .brand-logo { width:150px!important;max-width:none!important;object-position:left center!important; }
  .sidebar .bbs-domain-nav-item { grid-template-columns:34px;justify-content:center;padding-inline:7px; }
  .sidebar .bbs-domain-nav-item strong,
  .sidebar .bbs-domain-nav-item b,
  .sidebar .collapse-label { display:none; }
  .sidebar .bbs-domain-nav-item b { position:absolute;inset:3px 3px auto auto; }
  .topbar { padding-block:8px; }
}

/* XS and SM: drawer navigation and touch-friendly, single-column reflow. */
@media (max-width:767px) {
  :root { --bbs-shell-inline-size:0px;--bbs-modal-gutter:8px; }
  .sidebar,
  body.sidebar-collapsed .sidebar { width:min(88vw,320px)!important;padding-inline:14px!important;transform:translateX(-105%)!important; }
  .sidebar.open,
  body.sidebar-collapsed .sidebar.open { transform:translateX(0)!important; }
  .sidebar .brand { width:auto!important;margin-inline:8px!important;overflow:visible!important; }
  .sidebar .brand-logo { width:164px!important;max-width:100%!important; }
  .sidebar .bbs-domain-nav-item { grid-template-columns:34px minmax(0,1fr) auto;justify-content:stretch;padding-inline:12px; }
  .sidebar .bbs-domain-nav-item strong,
  .sidebar .bbs-domain-nav-item b { display:initial; }
  .main-content,
  body.sidebar-collapsed .main-content { width:100%!important;margin-left:0!important; }
  .topbar { min-height:64px;flex-wrap:wrap;padding:8px var(--bbs-page-gutter); }
  .view { padding-block:clamp(1rem,4vw,1.5rem) 3rem; }
  .page-heading { align-items:stretch; }
  .page-heading > *,
  .heading-actions,
  .heading-actions > *,
  .modal-actions > * { width:100%; }
  .form-grid > .full,
  .bbs-form-grid > .full { grid-column:auto; }
  .modal-backdrop { align-items:flex-end; }
  .modal-backdrop > .modal,
  .modal[role="dialog"],
  .bbs-dialog { max-height:calc(100dvh - 16px);border-radius:16px 16px 10px 10px; }
}

@media (min-width:1280px) {
  :root { --bbs-shell-inline-size:var(--bbs-sidebar-expanded); }
  body.sidebar-collapsed { --bbs-shell-inline-size:var(--bbs-sidebar-compact); }
  .sidebar { width:var(--bbs-shell-inline-size)!important; }
  .main-content { width:calc(100% - var(--bbs-shell-inline-size))!important;margin-left:var(--bbs-shell-inline-size)!important; }
}

@media (min-width:1600px) {
  .view { max-width:min(100%,110rem);margin-inline:auto; }
}

/* Component-level reflow works inside drawers and split panes, not just viewport. */
@container (max-width:640px) {
  .bbs-kpi-grid,
  .bbs-form-grid { grid-template-columns:1fr; }
  .bbs-action-bar { align-items:stretch;flex-direction:column; }
  .bbs-action-bar > * { width:100%; }
}

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

@media (prefers-contrast:more) {
  :root { --bbs-border-subtle:var(--bbs-color-gray-500);--bbs-border-default:var(--bbs-color-gray-700);--bbs-focus-color:currentColor; }
  .panel,.bbs-card,.modal,input,select,textarea,button { box-shadow:none!important; }
}

@media (forced-colors:active) {
  * { forced-color-adjust:auto; }
  :where(button,a[href],input,select,textarea,[role="button"],[role="tab"]):focus-visible { outline:3px solid Highlight!important; }
  .bbs-status-badge,.bbs-count-badge,.pill,.status-pill { border:1px solid CanvasText!important; }
}

@media print {
  .sidebar,.topbar,.bbs-breadcrumb,.heading-actions,.bbs-action-bar { display:none!important; }
  .main-content { width:100%!important;margin:0!important; }
  .view { max-width:none!important;padding:0!important; }
}
