/* Shared ds-* component layer.
   core/static/core/css/design_system.css remains the PT token/base-control layer;
   this file is the single source of truth for reusable ds-* page, card, KPI, table, action and empty-state components. */
:root {
  /* UI v2 references Sneat Free Django admin visual language (MIT, ThemeSelection) without bundling Sneat assets. */
  --ds-bg: #f5f7fb;
  --ds-sneat-bg: #f5f5f9;
  --ds-sneat-menu: #ffffff;
  --ds-sneat-primary: #696cff;
  --ds-sneat-primary-soft: #e7e7ff;
  --ds-surface: #ffffff;
  --ds-surface-muted: #f8fafc;
  --ds-primary: #0b3460;
  --ds-primary-600: #0b76bc;
  --ds-text: #0f172a;
  --ds-muted: #64748b;
  --ds-border: #dbe4ef;
  --ds-border-soft: #e6edf5;
  --ds-success: #15803d;
  --ds-warning: #b45309;
  --ds-danger: #b91c1c;
  --ds-radius-sm: 10px;
  --ds-radius: 14px;
  --ds-radius-lg: 20px;
  --ds-shadow: 0 .125rem .375rem rgba(67, 89, 113, .12);
  --ds-shadow-lg: 0 .25rem 1rem rgba(67, 89, 113, .16);
  --ds-space-1: .35rem;
  --ds-space-2: .55rem;
  --ds-space-3: .85rem;
  --ds-space-4: 1rem;
  --ds-space-5: 1.25rem;
  --ds-space-6: 1.5rem;
  --ds-space-7: 2rem;
}

.content-area { background: var(--ds-sneat-bg, var(--ds-bg)); overflow-x:hidden; }
html, body { max-width:100%; overflow-x:clip; }
.ds-page, .ds-page-stack { display: grid; gap: var(--ds-space-6); align-content:start; min-width:0; }
.ds-page { width:min(100%, 1320px); max-width:1320px; margin-inline:auto; padding-inline:clamp(var(--ds-space-3), 3vw, var(--ds-space-7)); overflow-x:clip; box-sizing:border-box; }
.ds-page *, .ds-page *::before, .ds-page *::after { box-sizing:border-box; }
.ds-page--wide { max-width:1440px; padding-inline:clamp(var(--ds-space-4), 4vw, 3rem); }
.ds-page-stack--compact { gap: var(--ds-space-4); }
.ds-page-header { position:relative; overflow:hidden; min-height:auto; display:grid; align-items:center; background: radial-gradient(circle at top right,rgba(37,163,111,.12),transparent 30%),linear-gradient(135deg,#ffffff 0%,#f4f9ff 64%,#f8fbf9 100%); border: 1px solid var(--ds-border); border-radius: var(--ds-radius-lg); padding: clamp(var(--ds-space-4), 2vw, var(--ds-space-6)); box-shadow: var(--ds-shadow-lg); }
.ds-page-header:before { content:""; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg,var(--ds-primary-600),#25a36f); }
.ds-page-header__row, .ds-section-panel__header, .ds-filter-bar, .ds-action-group { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--ds-space-4); flex-wrap: wrap; }
.ds-page-header__row { position:relative; z-index:1; }
.ds-page-header__eyebrow { display:inline-flex; align-items:center; gap:.45rem; margin-bottom:var(--ds-space-2); }
.ds-page-header__content { max-width:820px; }
.ds-page-header__actions { align-items:center; justify-content:flex-end; }
.ds-page-header__nav { position:relative; z-index:1; margin-top:var(--ds-space-5); padding-top:var(--ds-space-4); border-top:1px solid rgba(203,213,225,.72); }
.ds-kicker, .ds-breadcrumb { margin: 0 0 var(--ds-space-1); color: var(--ds-muted); font-size: var(--pt-text-sm, .875rem); font-weight: 700; letter-spacing: .02em; }
.ds-breadcrumb strong { color: var(--ds-primary); }
.ds-title { margin: 0 0 var(--ds-space-1); color: var(--ds-primary); font-size: clamp(1.55rem, 2.2vw, 2.15rem); line-height: 1.15; }
.ds-lede { margin: 0; color: var(--ds-muted); max-width: 760px; }
.ds-muted { color: var(--ds-muted); }
.ds-section-panel { background: var(--ds-surface); border: 1px solid var(--ds-border-soft); border-radius: var(--ds-radius); padding: var(--ds-space-5); box-shadow: var(--ds-shadow); min-width: 0; }
.ds-section-panel--compact { padding: var(--ds-space-4); }
.ds-section-panel--narrow { max-width: 880px; }
.ds-section-panel__title, .ds-card-title { margin: 0 0 var(--ds-space-2); color: var(--ds-primary); font-size: 1.25rem; }
.ds-dashboard-grid { display: grid; gap: var(--ds-space-4); }
.ds-dashboard-grid--two { grid-template-columns: minmax(0,1.7fr) minmax(280px,.8fr); }
.ds-dashboard-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(300px,360px); gap:var(--ds-space-5); align-items:start; }
.ds-dashboard-layout--wide { grid-template-columns:minmax(0,1fr) minmax(320px,380px); gap:var(--ds-space-6); }
.ds-dashboard-layout__main, .ds-dashboard-layout__aside { display:grid; gap:var(--ds-space-5); min-width:0; }
.ds-dashboard-grid--three { grid-template-columns: 1.05fr 1.4fr 1fr; }
.ds-grid, .ds-card-grid { display: grid; gap: var(--ds-space-4); }
.ds-grid--two { grid-template-columns:repeat(2,minmax(min(100%, 220px),1fr)); }
.ds-grid--three { grid-template-columns:repeat(3,minmax(min(100%, 220px),1fr)); }
.ds-grid--four { grid-template-columns:repeat(4,minmax(min(100%, 200px),1fr)); }
.ds-layout-sidebar { display:grid; grid-template-columns:minmax(220px,.7fr) minmax(0,1.8fr); gap:var(--ds-space-5); align-items:start; }
.ds-grid--cards, .ds-card-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.ds-card-grid--two { grid-template-columns:repeat(2,minmax(min(100%, 240px),1fr)); }
.ds-card-grid--three { grid-template-columns:repeat(3,minmax(min(100%, 240px),1fr)); }
.ds-card-grid--four { grid-template-columns:repeat(4,minmax(min(100%, 220px),1fr)); }
.ds-card-grid--dashboard { grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); }
.ds-kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); gap: var(--ds-space-4); min-width:0; }
.ds-kpi-grid--four { grid-template-columns:repeat(4,minmax(min(100%, 190px),1fr)); }
.ds-card, .ds-kpi-card, .ds-action-card { display: block; text-decoration: none; color: inherit; background: var(--ds-surface); border: 1px solid rgba(67, 89, 113, .12); border-radius: var(--ds-radius); padding: var(--ds-space-4); box-shadow: var(--ds-shadow); min-width:0; }
.ds-card:hover, .ds-kpi-card:hover, .ds-action-card:hover, .ds-dashboard-card:hover { border-color: var(--ds-primary-600); box-shadow: 0 16px 36px rgba(11,118,188,.16); transform: translateY(-1px); }
.ds-dashboard-card { display:flex; flex-direction:column; min-height:230px; padding:var(--ds-space-5); text-decoration:none; color:inherit; background:var(--ds-surface); border:1px solid var(--ds-border-soft); border-radius:var(--ds-radius); box-shadow:0 8px 24px rgba(15,23,42,.045); }
.ds-dashboard-card__top { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--ds-space-3); margin-bottom:var(--ds-space-3); }
.ds-dashboard-card__icon { width:44px; height:44px; display:grid; place-items:center; border-radius:16px; background:#eef6ff; color:var(--ds-primary-600); font-weight:900; }
.ds-dashboard-card__body { flex:1; }
.ds-dashboard-card__title { margin:0 0 var(--ds-space-2); color:var(--ds-primary); font-size:1.15rem; }
.ds-dashboard-card__description { margin:0; color:var(--ds-muted); }
.ds-dashboard-card__meta { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:var(--ds-space-4); color:#475569; font-size:.84rem; }
.ds-dashboard-card__actions { display:flex; flex-wrap:wrap; gap:.55rem; margin-top:var(--ds-space-4); padding-top:var(--ds-space-3); border-top:1px solid var(--ds-border-soft); }
.ds-summary-panel { position:sticky; top:var(--ds-space-5); }
.ds-kpi-card { position:relative; overflow:hidden; min-height:132px; }
.ds-kpi-card:before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--ds-primary-600); opacity:.85; }
.ds-kpi-card__icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 15px; background: #eef6ff; color:var(--ds-primary-600); font-size: 1.2rem; margin-bottom: var(--ds-space-3); box-shadow:inset 0 0 0 1px rgba(11,118,188,.08); }
.ds-kpi-card__title { margin: 0; color: #475569; font-weight: 800; font-size: .82rem; }
.ds-kpi-card__value { margin: .3rem 0 .15rem; color: var(--ds-primary); font-size: 2rem; line-height: 1; font-weight: 900; }
.ds-kpi-card__note { margin: 0; color: var(--ds-muted); font-size: .76rem; }
.ds-kpi-card__status { display:inline-flex; margin-top:.55rem; border-radius:999px; padding:.2rem .5rem; background:#f1f5f9; color:#334155; font-weight:800; font-size:.72rem; }
.ds-kpi-card--orange:before,.ds-kpi-card--warning:before { background:var(--ds-warning); }
.ds-kpi-card--green:before,.ds-kpi-card--teal:before,.ds-kpi-card--success:before { background:var(--ds-success); }
.ds-kpi-card--red:before,.ds-kpi-card--danger:before { background:var(--ds-danger); }
.ds-kpi-card--purple:before { background:#7e22ce; }
.ds-filter-bar { align-items: center; background: var(--ds-surface); border: 1px solid var(--ds-border); border-radius: var(--ds-radius); padding: var(--ds-space-3) var(--ds-space-4); box-shadow: 0 8px 22px rgba(15,23,42,.045); }
.ds-filter-bar label { margin: 0; font-weight: 800; color: var(--ds-primary); }
.ds-section-spaced { margin-top: var(--ds-space-5); }
.ds-stack-sm { display: grid; gap: var(--ds-space-2); }
.ds-stack-md { display: grid; gap: var(--ds-space-3); }
.ds-filter-bar select, .ds-form input, .ds-form select, .ds-form textarea { border: 1px solid #cbd5e1; border-radius: 12px; padding: .55rem .75rem; background: #fff; color: var(--ds-text); }
.ds-table-wrap { display:block; max-width:100%; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; }
.ds-table { width: 100%; min-width:max-content; border-collapse: separate; border-spacing: 0 .5rem; }
.ds-table th { color: var(--ds-muted); font-size: .78rem; text-align: left; padding: 0 .7rem; white-space: nowrap; }
.ds-table td { background: var(--ds-surface-muted); border-top: 1px solid var(--ds-border-soft); border-bottom: 1px solid var(--ds-border-soft); padding: .72rem .7rem; vertical-align: middle; }
.ds-table td:first-child { border-left: 1px solid var(--ds-border-soft); border-radius: 14px 0 0 14px; font-weight: 800; color: var(--ds-text); }
.ds-table td:last-child { border-right: 1px solid var(--ds-border-soft); border-radius: 0 14px 14px 0; }
.ds-empty-state { display:flex; align-items:flex-start; gap:var(--ds-space-3); border: 1px dashed #cbd5e1; border-radius: var(--ds-radius); padding: var(--ds-space-4); background: linear-gradient(135deg,#fbfdff,#f8fafc); color: var(--ds-muted); }
.ds-empty-state__icon { width:34px; height:34px; border-radius:12px; display:grid; place-items:center; background:#eef6ff; color:var(--ds-primary-600); font-weight:900; flex:0 0 auto; }
.ds-empty-state__title { display:block; color:var(--ds-primary); margin-bottom:.15rem; }
.ds-empty-state p { margin:0; }
.ds-badge { display: inline-flex; align-items: center; border-radius: 999px; padding: .25rem .55rem; background: #f1f5f9; color: #334155; font-weight: 800; font-size: .78rem; }
.ds-badge--success { background: #dcfce7; color: var(--ds-success); }
.ds-badge--warning { background: #fef3c7; color: var(--ds-warning); }
.ds-badge--danger { background: #fee2e2; color: var(--ds-danger); }
.ds-alert { border: 1px solid var(--ds-border); border-left: 4px solid var(--ds-primary-600); border-radius: var(--ds-radius); background: var(--ds-surface); padding: var(--ds-space-4); }
.ds-form { display: grid; gap: var(--ds-space-3); }
@media (max-width: 1200px) { .ds-dashboard-grid--three, .ds-dashboard-grid--two, .ds-dashboard-layout:not(.ds-dashboard-layout--wide), .ds-layout-sidebar, .ds-card-grid--four, .ds-grid--four { grid-template-columns: 1fr; } .ds-summary-panel { position:static; } }
@media (max-width: 1100px) { .ds-dashboard-layout--wide { grid-template-columns:1fr; } }
@media (max-width: 1000px) { .ds-card-grid--three, .ds-kpi-grid--four { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 900px) { .ds-grid--two, .ds-grid--three, .ds-card-grid--two { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .ds-page, .ds-page--wide { padding-inline:var(--ds-space-3); } .ds-page-header, .ds-section-panel { padding: var(--ds-space-3); } .ds-page-header { min-height:auto; } .ds-kpi-grid--four, .ds-card-grid--three, .ds-card-grid--dashboard { grid-template-columns:1fr; } .ds-table { font-size: .85rem; } }
.ds-funnel-list, .ds-activity-list { display: grid; gap: .7rem; }
.ds-funnel-item { display: grid; gap: .32rem; }
.ds-funnel-meta, .ds-status-row { display: flex; justify-content: space-between; gap: .5rem; }
.ds-funnel-meta { font-size: .85rem; color: #334155; font-weight: 700; }
.ds-funnel-bar { height: 9px; border-radius: 999px; background: #e2e8f0; overflow: hidden; }
.ds-funnel-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg,#0b76bc,#25a36f); }
.ds-trend-chart { display: grid; grid-template-columns: repeat(12,1fr); gap: .45rem; align-items: center; height: 175px; padding-top: .85rem; }
.ds-trend-bar { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: .35rem; height: 100%; color: var(--ds-muted); font-size: .72rem; }
.ds-trend-bar__fill { width: 100%; min-width: 14px; border-radius: 12px 12px 5px 5px; background: linear-gradient(180deg,#0b76bc,#8bd4ff); box-shadow: inset 0 -1px 0 rgba(255,255,255,.45); }
.ds-status-row { display: grid; grid-template-columns: 1fr auto; align-items: center; padding: .43rem 0; border-bottom: 1px solid #eef2f7; }
.ds-status-row:last-child { border-bottom: 0; }
.ds-tabs { display: flex; gap: .45rem; flex-wrap: wrap; margin: .85rem 0; }
.ds-page-header__nav .ds-tabs { margin:0; }
.ds-tabs a { text-decoration: none; border: 1px solid var(--ds-border); border-radius: 999px; padding: .45rem .75rem; color: var(--ds-primary); font-weight: 800; background: #fff; }
.ds-tabs a.active { background: var(--ds-primary); color: #fff; border-color: var(--ds-primary); }
.ds-activity-item { display: grid; grid-template-columns: auto 1fr; gap: .65rem; padding: .7rem; border: 1px solid #eef2f7; border-radius: var(--ds-radius); background: #fbfdff; }
.ds-activity-dot { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 12px; background: #e7f5ff; }
.ds-action-card strong { display:block; color: var(--ds-primary); margin: .4rem 0 .25rem; }
@media (max-width:720px){ .ds-trend-chart{gap:.25rem;} }

.ds-button, .ds-button--primary, .ds-button--secondary { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; border-radius:12px; padding:.68rem 1rem; border:1px solid transparent; font-weight:800; text-decoration:none; cursor:pointer; font-size:.9rem; line-height:1.2; transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease; }
.ds-button--primary { background:linear-gradient(180deg,var(--ds-primary-600),var(--ds-primary)); color:#fff!important; box-shadow:0 8px 16px rgba(11,118,188,.16); }
.ds-button--secondary { background:#eef6ff; color:var(--ds-primary)!important; border-color:#d3e5f7; }
.ds-button:hover { transform:translateY(-1px); }
@media (max-width: 720px) { .ds-action-group, .ds-filter-bar { align-items: stretch; } .ds-button, .ds-button--primary, .ds-button--secondary { width: 100%; } .ds-filter-bar > * { min-width: 100%; } }
.ds-chart-wrap { height: 280px; min-height: 240px; min-width:0; }
.ds-chart-wrap--narrow { max-width: 360px; margin-inline: auto; }
.ds-card--primary { background: linear-gradient(180deg,var(--ds-primary-600),var(--ds-primary)); color: #fff; }
.ds-card--primary .ds-kpi-card__value { color: #fff; }
.ds-table .num { text-align: right; white-space: nowrap; }
.ds-table .highlight td { background: #e8f2ff; }
.ds-form > input, .ds-form > select, .ds-form > textarea { max-width: 36rem; }

.ds-button--danger { background:#fee2e2; color:var(--ds-danger)!important; border-color:#fecaca; }
.ds-action-group--start { justify-content:flex-start; }
.ds-form-grid { display:grid; grid-template-columns:repeat(2,minmax(220px,1fr)); gap:var(--ds-space-3); }
.ds-inline-form { display:inline; }
.ds-progress { background:#edf1f5; border-radius:999px; height:14px; overflow:hidden; }
.ds-progress__bar { height:100%; background:linear-gradient(90deg,var(--ds-primary-600),var(--ds-success)); }
.ds-progress__bar--warning { background:var(--ds-warning); }
.ds-progress__bar--danger { background:var(--ds-danger); }
@media (max-width:720px){ .ds-form-grid { grid-template-columns:1fr; } }
.ds-filter-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:var(--ds-space-3); align-items:end; }
.ds-filter-grid label { display:block; font-weight:800; color:var(--ds-primary); margin-bottom:.25rem; }
.ds-filter-grid .ds-action-row { align-self:end; }
@media (max-width:720px){ .mobile-primary { width:100%; font-size:1rem; padding:.9rem 1rem; } }
.ds-alert--danger { border-left-color:var(--ds-danger); background:#fff7f7; }
.scanner-video { display:none; width:100%; max-height:60vh; border-radius:14px; background:#111; }
.scan-box { max-width:720px; }
.ds-form input[type="checkbox"].form-check-input,
.ds-form .form-check input[type="checkbox"] {
  width: 1.1rem;
  min-width: 1.1rem;
  height: 1.1rem;
  padding: 0;
  border-radius: .35rem;
  vertical-align: middle;
}
.ds-form .form-switch-label {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--ds-primary);
}

.bulk-label-scan { margin-top: var(--ds-space-3); }
.bulk-label-scan .inventory-scanner { width: 100%; }
.bulk-label-scan .inventory-scanner__panel { margin-top: var(--ds-space-3); padding: var(--ds-space-3); }
.inventory-scanner__video, .inventory-scanner__reader { width: 100%; max-height: 46vh; border-radius: 14px; background: #111; overflow: hidden; }
.inventory-scanner__status--success { color: var(--ds-success); font-weight: 700; }
.bulk-label-current { border-color: rgba(14, 116, 144, .28); background: linear-gradient(180deg, #f0fbff, var(--ds-surface)); }
.bulk-label-current__eyebrow { margin: 0 0 var(--ds-space-3); font-weight: 700; color: var(--ds-primary); text-transform: uppercase; letter-spacing: .04em; }
.bulk-label-current__details, .bulk-label-progress__stats { display: grid; gap: var(--ds-space-3); margin: 0; }
.bulk-label-current__details div, .bulk-label-progress__stats div { display: flex; justify-content: space-between; gap: var(--ds-space-3); align-items: baseline; }
.bulk-label-current__details dt, .bulk-label-progress__stats dt { color: var(--ds-muted); font-weight: 700; }
.bulk-label-current__details dd, .bulk-label-progress__stats dd { margin: 0; font-weight: 800; color: var(--ds-primary); text-align: right; }
.bulk-label-current__details dd { font-size: 1.25rem; }
.bulk-label-progress__stats { margin-top: var(--ds-space-4); }
.bulk-label-filters summary { cursor: pointer; font-weight: 800; color: var(--ds-primary); }
.bulk-label-filters form { margin-top: var(--ds-space-4); }
.bulk-label-complete { text-align: center; }
.bulk-label-complete__icon { color: var(--ds-success); font-size: 3rem; line-height: 1; }
.bulk-label-complete h2 { color: var(--ds-success); margin-bottom: var(--ds-space-2); }
.bulk-label-complete__actions { justify-content: center; }
@media (max-width: 720px) {
  .bulk-label-scan, .bulk-label-current, .bulk-label-progress, .bulk-label-filters, .bulk-label-complete { padding: var(--ds-space-3); }
  .bulk-label-scan .ds-section-panel__title { font-size: 1.1rem; }
  .bulk-label-scan p { margin-bottom: var(--ds-space-3); }
  .bulk-label-actions { gap: var(--ds-space-2); }
  .bulk-label-manual-entry input { min-height: 48px; font-size: 1rem; }
  .inventory-scanner__video, .inventory-scanner__reader { max-height: 38vh; }
  .bulk-label-current__details div, .bulk-label-progress__stats div { align-items: flex-start; }
  .bulk-label-current__details dd { font-size: 1.1rem; }
}

/* Practice Toolbox UI v2 reusable content framework.  The existing sidebar shell is intentionally untouched. */
:root {
  --pt-dashboard-max: 1440px;
  --pt-gutter: clamp(1rem, 3vw, 2.5rem);
  --pt-accent: var(--ds-primary-600);
  --pt-accent-soft: color-mix(in srgb, var(--pt-accent) 12%, #fff);
  --pt-panel-bg: rgba(255,255,255,.92);
}
.pt-dashboard, .pt-dashboard-grid, .pt-dashboard-section, .pt-panel, .pt-action-grid { min-width:0; }
.pt-dashboard { width:min(100%, var(--pt-dashboard-max)); margin-inline:auto; padding-inline:var(--pt-gutter); display:grid; gap:var(--ds-space-6); overflow-x:clip; }
.pt-dashboard--compact { --pt-dashboard-max: 1180px; }
.pt-dashboard--wide { --pt-dashboard-max: 1520px; }
.pt-hero { position:relative; overflow:hidden; border:1px solid rgba(67,89,113,.14); border-radius:24px; padding:clamp(1.25rem,3vw,2rem); background:radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--pt-accent) 18%, transparent), transparent 32%), linear-gradient(135deg,#fff 0%,#f7f9ff 62%,var(--pt-accent-soft) 100%); box-shadow:var(--ds-shadow-lg); }
.pt-hero:before { content:""; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg,var(--pt-accent),#25a36f); }
.pt-hero__row { position:relative; display:flex; justify-content:space-between; align-items:flex-start; gap:var(--ds-space-5); flex-wrap:wrap; }
.pt-hero__content { max-width:820px; }
.pt-hero__eyebrow, .pt-panel__eyebrow, .pt-kpi__eyebrow { margin:0 0 .35rem; color:var(--ds-muted); font-size:.78rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.pt-hero__title { margin:0; color:var(--ds-primary); font-size:clamp(1.7rem,2.6vw,2.45rem); line-height:1.1; }
.pt-hero__subtitle { margin:.55rem 0 0; color:var(--ds-muted); max-width:760px; }
.pt-module-tabs { display:flex; gap:.5rem; flex-wrap:wrap; padding:.35rem; border:1px solid var(--ds-border-soft); border-radius:999px; background:rgba(255,255,255,.72); width:fit-content; max-width:100%; }
.pt-module-tabs a { text-decoration:none; border-radius:999px; padding:.5rem .85rem; color:var(--ds-primary); font-weight:850; }
.pt-module-tabs a:hover, .pt-module-tabs a.active { background:var(--pt-accent); color:#fff; }
.pt-dashboard-section { display:grid; gap:var(--ds-space-4); }
.pt-dashboard-section__header { display:flex; justify-content:space-between; gap:var(--ds-space-4); align-items:end; flex-wrap:wrap; }
.pt-dashboard-section__header h2 { margin:0; color:var(--ds-primary); font-size:1.25rem; }
.pt-dashboard-section__header p { margin:.25rem 0 0; color:var(--ds-muted); }
.pt-dashboard-grid { display:grid; gap:var(--ds-space-4); }
.pt-dashboard-grid--kpis { grid-template-columns:repeat(4,minmax(min(100%,190px),1fr)); }
.pt-dashboard-grid--two { grid-template-columns:minmax(0,1fr) minmax(300px,.42fr); }
.pt-dashboard-grid--three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.pt-dashboard-grid--actions { grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); }
.pt-kpi, .pt-panel, .pt-insight-card, .pt-action-tile { border:1px solid rgba(67,89,113,.12); border-radius:18px; box-shadow:var(--ds-shadow); min-width:0; }
.pt-kpi { position:relative; overflow:hidden; padding:var(--ds-space-5); background:linear-gradient(180deg,#fff,var(--pt-accent-soft)); }
.pt-kpi:before { content:""; position:absolute; inset:0 auto 0 0; width:4px; background:var(--pt-accent); }
.pt-kpi__header { display:flex; justify-content:space-between; align-items:flex-start; gap:var(--ds-space-3); }
.pt-kpi__title { margin:0; color:#475569; font-size:.86rem; font-weight:900; }
.pt-kpi__icon { width:42px; height:42px; display:grid; place-items:center; border-radius:15px; background:#fff; color:var(--pt-accent); box-shadow:inset 0 0 0 1px rgba(67,89,113,.10); }
.pt-kpi__value { margin:.65rem 0 .25rem; color:var(--ds-primary); font-size:clamp(1.7rem,2.5vw,2.45rem); line-height:1; font-weight:950; }
.pt-kpi__note { margin:0; color:var(--ds-muted); font-size:.86rem; }
.pt-kpi__trend { display:inline-flex; margin-top:.7rem; padding:.25rem .55rem; border-radius:999px; background:#fff; color:var(--ds-primary); font-weight:850; font-size:.76rem; }
.pt-kpi--executive { min-height:156px; }
.pt-kpi--status { background:#fff; }
.pt-kpi--success { --pt-accent:var(--ds-success); } .pt-kpi--warning { --pt-accent:var(--ds-warning); } .pt-kpi--danger { --pt-accent:var(--ds-danger); }
.pt-panel { background:var(--pt-panel-bg); padding:var(--ds-space-5); }
.pt-panel--working { background:linear-gradient(180deg,#fff,#f8fbff); border-color:#cfe0f4; }
.pt-panel--analysis, .pt-panel--chart { background:linear-gradient(180deg,#ffffff,#f7f7ff); border-color:#dfe1ff; }
.pt-panel--information, .pt-panel--table { background:#fff; }
.pt-panel__header { display:flex; justify-content:space-between; align-items:flex-start; gap:var(--ds-space-4); flex-wrap:wrap; margin-bottom:var(--ds-space-4); }
.pt-panel__title { margin:0; color:var(--ds-primary); font-size:1.15rem; }
.pt-panel__subtitle { margin:.25rem 0 0; color:var(--ds-muted); }
.pt-panel--table { overflow:hidden; }
.pt-panel--table .ds-table-wrap, .pt-table-scroll { overflow-x:auto; max-width:100%; }
.pt-chart-panel__canvas, .pt-chart-area { min-height:280px; min-width:0; }
.pt-action-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); gap:var(--ds-space-4); }
.pt-action-tile { display:flex; gap:var(--ds-space-3); align-items:flex-start; padding:var(--ds-space-4); color:inherit; text-decoration:none; background:#fff; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.pt-action-tile:hover { transform:translateY(-2px); border-color:var(--pt-accent); box-shadow:0 16px 36px rgba(11,118,188,.14); }
.pt-action-tile__icon { width:40px; height:40px; flex:0 0 auto; display:grid; place-items:center; border-radius:14px; background:var(--pt-accent-soft); color:var(--pt-accent); font-weight:900; }
.pt-action-tile strong { display:block; color:var(--ds-primary); } .pt-action-tile small { display:block; margin-top:.2rem; color:var(--ds-muted); }
.pt-insight-card { display:flex; gap:var(--ds-space-3); padding:var(--ds-space-4); background:linear-gradient(135deg,#fff,#f8fafc); }
.pt-insight-card__icon { width:38px; height:38px; display:grid; place-items:center; flex:0 0 auto; border-radius:14px; background:var(--pt-accent-soft); color:var(--pt-accent); }
.pt-insight-card h3 { margin:0 0 .25rem; color:var(--ds-primary); font-size:1rem; } .pt-insight-card p { margin:0; color:var(--ds-muted); }
.pt-insight-card--attention, .pt-insight-card--warning { --pt-accent:var(--ds-warning); background:#fffbeb; border-color:#fde68a; }
.pt-activity-feed { display:grid; gap:.75rem; }
.pt-timeline { display:grid; gap:.75rem; margin:0; padding:0; list-style:none; }
.pt-timeline__item { display:grid; grid-template-columns:auto 1fr; gap:.75rem; padding:.75rem; border:1px solid var(--ds-border-soft); border-radius:16px; background:#fff; }
.pt-timeline__dot { width:34px; height:34px; display:grid; place-items:center; border-radius:12px; background:var(--pt-accent-soft); color:var(--pt-accent); }
.pt-filter-toolbar { display:flex; align-items:end; justify-content:space-between; gap:var(--ds-space-3); flex-wrap:wrap; padding:var(--ds-space-3) var(--ds-space-4); border:1px solid var(--ds-border); border-radius:18px; background:rgba(255,255,255,.9); box-shadow:0 8px 22px rgba(15,23,42,.045); }
/* Preserve ds-* compatibility by letting existing page shell classes opt into v2 rhythm. */
.ds-page.pt-dashboard { padding-inline:var(--pt-gutter); }
.ds-page-header.pt-hero { padding:clamp(1.25rem,3vw,2rem); }
@media (max-width:1100px){ .pt-dashboard-grid--kpis, .pt-dashboard-grid--two, .pt-dashboard-grid--three { grid-template-columns:1fr 1fr; } }
@media (max-width:720px){ .pt-dashboard { padding-inline:var(--ds-space-3); } .pt-dashboard-grid--kpis, .pt-dashboard-grid--two, .pt-dashboard-grid--three { grid-template-columns:1fr; } .pt-module-tabs { border-radius:18px; width:100%; } .pt-module-tabs a { flex:1 1 auto; text-align:center; } .pt-panel, .pt-kpi { padding:var(--ds-space-4); } }

/* Finance/UI v2 hardening: keep wide content contained inside panels and normalize dense cards/forms. */
.ds-section-panel > .ds-table, .ds-card > .ds-table { display:block; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.ds-section-panel > .ds-table tbody, .ds-card > .ds-table tbody { display:table; min-width:max-content; width:100%; }
.ds-section-panel form:not(.ds-inline-form), .ds-card form:not(.ds-inline-form) { max-width:100%; }
.ds-section-panel p, .ds-card p { overflow-wrap:anywhere; }
.ds-action-card, .ds-dashboard-card, .ds-kpi-card { height:100%; }
.ds-action-card { display:flex; flex-direction:column; gap:.35rem; }
.ds-action-card .dashboard-link, .ds-action-card .ds-button { margin-top:auto; align-self:flex-start; }
@media (max-width:720px){ .ds-section-panel > .ds-table, .ds-card > .ds-table { font-size:.85rem; } }

/* Governance / Compliance UI v2 refinements */
.ds-page:has(.governance-module-tabs), .ds-page--governance { --ds-primary:#164e63; --ds-primary-600:#0e7490; }
.governance-module-tabs a { border-color:#bae6fd; background:#f0fdfa; }
.governance-module-tabs a:hover { background:#cffafe; }
.governance-summary-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr)); gap:var(--ds-space-4); min-width:0; }
.governance-summary-card, .feature-card { position:relative; overflow:hidden; background:var(--ds-surface); border:1px solid var(--ds-border-soft); border-radius:var(--ds-radius); padding:var(--ds-space-4); box-shadow:var(--ds-shadow); min-width:0; }
.governance-summary-card:before, .feature-card:before { content:""; position:absolute; inset:0 auto 0 0; width:4px; background:linear-gradient(180deg,#0e7490,#22c55e); }
.governance-summary-card--danger:before, .governance-summary-card--overdue:before { background:var(--ds-danger); }
.governance-summary-card--warning:before, .governance-summary-card--amber:before { background:var(--ds-warning); }
.governance-summary-card--success:before, .governance-summary-card--green:before { background:var(--ds-success); }
.dashboard-alert-card__label { margin:0 0 .35rem; color:var(--ds-muted); font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.dashboard-alert-card__value { margin:0; color:var(--ds-primary); font-size:clamp(1.35rem,2vw,2rem); font-weight:900; line-height:1.1; }
.governance-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:var(--ds-space-4); min-width:0; }
.governance-card { min-width:0; }
.governance-rank-list, .governance-list { list-style:none; padding:0; margin:0; display:grid; gap:.55rem; }
.governance-rank-list li, .governance-list li { padding:.65rem .75rem; border:1px solid var(--ds-border-soft); border-radius:12px; background:#fbfdff; }
.governance-pill { display:inline-flex; border-radius:999px; padding:.2rem .55rem; background:#e0f2fe; color:#075985; font-size:.78rem; }
.governance-pill--danger, .governance-pill--overdue { background:#fee2e2; color:var(--ds-danger); }
.governance-pill--warning, .governance-pill--due-soon { background:#fef3c7; color:var(--ds-warning); }
.governance-pill--success { background:#dcfce7; color:var(--ds-success); }
.dashboard-card__header { display:flex; justify-content:space-between; gap:var(--ds-space-3); align-items:flex-start; flex-wrap:wrap; margin-bottom:var(--ds-space-3); }
.dashboard-section__title { margin:0; color:var(--ds-primary); font-size:1.2rem; }
.dashboard-section__subtitle { margin:.25rem 0 0; }
.dashboard-table { width:100%; border-collapse:separate; border-spacing:0 .5rem; min-width:max-content; }
.dashboard-table th { text-align:left; color:var(--ds-muted); font-size:.78rem; padding:0 .7rem; white-space:nowrap; }
.dashboard-table td { background:var(--ds-surface-muted); border-top:1px solid var(--ds-border-soft); border-bottom:1px solid var(--ds-border-soft); padding:.72rem .7rem; }
.dashboard-table td:first-child { border-left:1px solid var(--ds-border-soft); border-radius:12px 0 0 12px; font-weight:800; }
.dashboard-table td:last-child { border-right:1px solid var(--ds-border-soft); border-radius:0 12px 12px 0; }
.cqc-quality-hero { background:radial-gradient(circle at top right,rgba(14,116,144,.16),transparent 30%),linear-gradient(135deg,#fff 0%,#f0fdfa 100%); border:1px solid var(--ds-border); border-radius:var(--ds-radius-lg); padding:var(--ds-space-6); box-shadow:var(--ds-shadow-lg); }
.cqc-quality-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr)); gap:var(--ds-space-4); }
.cqc-filter-bar { align-items:center; }
.cqc-domain-grid, .cqc-action-plan-grid, .cqc-component-list { display:grid; gap:var(--ds-space-3); }
.cqc-domain-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); }
.cqc-component-item { border:1px solid var(--ds-border-soft); border-radius:var(--ds-radius); padding:var(--ds-space-4); background:#fbfdff; min-width:0; }
.cqc-component-item--link { display:flex; justify-content:space-between; gap:var(--ds-space-3); text-decoration:none; color:inherit; }
.cqc-component-item__title { margin:0 0 .25rem; color:var(--ds-primary); font-weight:900; }
.cqc-badge { display:inline-flex; border-radius:999px; padding:.2rem .55rem; background:#e0f2fe; color:#075985; font-weight:800; font-size:.78rem; }
@media (max-width:720px){ .cqc-quality-hero{padding:var(--ds-space-4);} .cqc-component-item--link{display:block;} }

/* Practice Toolbox UI v4 content-area dashboard framework.  pt-v3-* remains the stable class API for compatibility; the rules below are the finalised UI v4 standard. */
:root {
  --pt-v3-page-max: 1760px;
  --pt-v3-gutter: clamp(1rem, 2.6vw, 3rem);
  --pt-v3-accent: #0b76bc;
  --pt-v3-accent-2: #25a36f;
  --pt-v3-accent-soft: color-mix(in srgb, var(--pt-v3-accent) 12%, #fff);
  --pt-v3-card-bg: rgba(255,255,255,.94);
  --pt-v3-radius: 22px;
  --pt-v3-shadow: 0 18px 45px rgba(15, 23, 42, .08);
}
.pt-v3-page, .pt-v3-page *, .pt-v3-page *::before, .pt-v3-page *::after { box-sizing: border-box; }
.pt-v3-page { width: min(100%, var(--pt-v3-page-max)); margin-inline: auto; padding-inline: var(--pt-v3-gutter); display: grid; gap: clamp(1rem, 2vw, 1.5rem); min-width: 0; max-width: 100%; overflow-x: clip; }
.pt-v3-page--wide { --pt-v3-page-max: 1760px; }
.pt-v3-page--standard { --pt-v3-page-max: 1700px; }
.pt-v3-page--narrow { --pt-v3-page-max: 1320px; }
.pt-v3-hero { position: relative; overflow: hidden; border: 1px solid rgba(67,89,113,.14); border-radius: 28px; padding: clamp(1.15rem, 2.35vw, 1.9rem); background: radial-gradient(circle at 88% 8%, color-mix(in srgb, var(--pt-v3-accent) 20%, transparent), transparent 34%), linear-gradient(135deg,#fff 0%,#f7f9ff 58%,color-mix(in srgb, var(--pt-v3-accent) 9%, #fff) 100%); box-shadow: var(--pt-v3-shadow); display: grid; grid-template-columns: minmax(0,1fr) minmax(260px,.45fr); gap: clamp(1rem, 3vw, 2rem); align-items: center; }
.pt-v3-hero::before { content:""; position:absolute; inset:0 0 auto; height:5px; background:linear-gradient(90deg,var(--pt-v3-accent),var(--pt-v3-accent-2)); }
.pt-v3-hero__main, .pt-v3-hero__status-grid { position:relative; z-index:1; min-width:0; }
.pt-v3-kicker { margin:0 0 .4rem; color:var(--ds-muted); font-size:.78rem; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.pt-v3-hero__title { margin:0; color:var(--ds-primary); font-size:clamp(1.75rem,2.55vw,2.45rem); line-height:1.05; letter-spacing:-.03em; }
.pt-v3-hero__subtitle { margin:.55rem 0 0; color:var(--ds-muted); max-width:780px; font-size:1rem; }
.pt-v3-hero__actions { display:flex; gap:.75rem; flex-wrap:wrap; margin-top:1rem; }
.pt-v3-button { display:inline-flex; align-items:center; justify-content:center; gap:.45rem; border-radius:14px; padding:.72rem 1rem; font-weight:900; text-decoration:none; border:1px solid transparent; }
.pt-v3-button--primary { background:linear-gradient(180deg,var(--pt-v3-accent),#0b3460); color:#fff!important; box-shadow:0 10px 22px color-mix(in srgb, var(--pt-v3-accent) 22%, transparent); }
.pt-v3-button--secondary { background:#fff; color:var(--ds-primary)!important; border-color:color-mix(in srgb, var(--pt-v3-accent) 22%, #dbe4ef); }
.pt-v3-hero__status-grid { display:grid; gap:.75rem; }
.pt-v3-hero-status { border:1px solid rgba(67,89,113,.12); border-radius:18px; padding:1rem; background:rgba(255,255,255,.78); box-shadow:0 10px 26px rgba(15,23,42,.06); }
.pt-v3-hero-status span, .pt-v3-kpi-card__label { display:block; color:#475569; font-size:.78rem; font-weight:900; text-transform:uppercase; letter-spacing:.04em; }
.pt-v3-hero-status strong { display:block; margin:.25rem 0; color:var(--ds-primary); font-size:1.65rem; line-height:1; }
.pt-v3-hero-status small, .pt-v3-kpi-card small { color:var(--ds-muted); }
.pt-v3-tabs { display:flex; gap:.5rem; flex-wrap:wrap; justify-content:flex-start; justify-self:start; padding:.4rem; border:1px solid var(--ds-border-soft); border-radius:999px; background:rgba(255,255,255,.78); width:fit-content; max-width:100%; box-shadow:0 8px 24px rgba(15,23,42,.045); overflow-x:auto; -webkit-overflow-scrolling:touch; }
.pt-v3-tabs__item { display:inline-flex; align-items:center; gap:.35rem; text-decoration:none; border-radius:999px; padding:.55rem .9rem; color:var(--ds-primary); font-weight:900; }
.pt-v3-tabs__item:hover, .pt-v3-tabs__item.is-active { background:var(--pt-v3-accent); color:#fff; }
.pt-v3-badge { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:.12rem .45rem; font-size:.72rem; font-weight:900; background:#e2e8f0; color:#334155; }
.pt-v3-badge--danger { background:#fee2e2; color:#b91c1c; }
.pt-v3-dashboard-grid { display:grid; gap:1rem; min-width:0; max-width:100%; }
.pt-v3-dashboard-grid--kpis { grid-template-columns:repeat(4,minmax(0,1fr)); }
.pt-v3-dashboard-grid--main { grid-template-columns:repeat(6,minmax(0,1fr)); align-items:stretch; }
.pt-v3-dashboard-grid--attention { grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); }
.pt-v3-card--span-full { grid-column:1/-1; } .pt-v3-card--span-half { grid-column:span 3; } .pt-v3-card--span-third { grid-column:span 2; } .pt-v3-card--span-two-thirds { grid-column:span 4; }
.pt-v3-card, .pt-v3-kpi-card, .pt-v3-action-tile, .pt-v3-section-panel { min-width:0; border:1px solid rgba(67,89,113,.12); border-radius:var(--pt-v3-radius); background:var(--pt-v3-card-bg); box-shadow:0 10px 30px rgba(15,23,42,.055); overflow-wrap:anywhere; }
.pt-v3-card { position:relative; padding:1.15rem; display:flex; flex-direction:column; gap:1rem; overflow:hidden; }
.pt-v3-card--accent::before { content:""; position:absolute; inset:0 auto 0 0; width:5px; background:linear-gradient(180deg,var(--pt-v3-accent),var(--pt-v3-accent-2)); }
.pt-v3-card__header { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; flex-wrap:wrap; }
.pt-v3-card__header h2 { margin:0; color:var(--ds-primary); font-size:1.2rem; }
.pt-v3-card__header a { color:var(--pt-v3-accent); font-weight:900; text-decoration:none; }
.pt-v3-card__footer { margin-top:auto; padding-top:1rem; border-top:1px solid var(--ds-border-soft); display:flex; gap:.6rem; flex-wrap:wrap; }
.pt-v3-kpi-card { position:relative; overflow:hidden; display:block; text-decoration:none; color:inherit; padding:1rem; background:linear-gradient(180deg,#fff,var(--pt-v3-accent-soft)); }
.pt-v3-kpi-card::before { content:""; position:absolute; inset:0 auto 0 0; width:5px; background:var(--pt-v3-accent); }
.pt-v3-kpi-card__icon { width:42px; height:42px; display:grid; place-items:center; border-radius:15px; background:#fff; color:var(--pt-v3-accent); margin-bottom:.7rem; box-shadow:inset 0 0 0 1px rgba(67,89,113,.10); }
.pt-v3-kpi-card strong { display:block; margin:.45rem 0 .25rem; color:var(--ds-primary); font-size:clamp(1.8rem,3vw,2.35rem); line-height:1; }
.pt-v3-kpi-card--green, .pt-v3-attention-card--success, .pt-v3-attention-card--positive { --pt-v3-accent:#15803d; --pt-v3-accent-soft:#f0fdf4; }
.pt-v3-kpi-card--warning, .pt-v3-attention-card--warning { --pt-v3-accent:#b45309; --pt-v3-accent-soft:#fffbeb; }
.pt-v3-kpi-card--danger, .pt-v3-attention-card--danger { --pt-v3-accent:#b91c1c; --pt-v3-accent-soft:#fff1f2; }
.pt-v3-kpi-card--blue { --pt-v3-accent:#0b76bc; --pt-v3-accent-soft:#eef6ff; }
.pt-v3-attention-card { border:1px solid color-mix(in srgb, var(--pt-v3-accent) 25%, #fff); border-left:5px solid var(--pt-v3-accent); border-radius:18px; padding:1rem; background:var(--pt-v3-accent-soft); min-width:0; }
.pt-v3-attention-card strong { display:block; color:var(--ds-primary); margin-bottom:.25rem; } .pt-v3-attention-card p { margin:0; color:var(--ds-muted); }
.pt-v3-action-tile { display:flex; align-items:flex-start; gap:.8rem; padding:1rem; text-decoration:none; color:inherit; background:#fff; }
.pt-v3-action-tile__icon { width:42px; height:42px; display:grid; place-items:center; flex:0 0 auto; border-radius:15px; background:var(--pt-v3-accent-soft); color:var(--pt-v3-accent); }
.pt-v3-action-tile strong { display:block; color:var(--ds-primary); } .pt-v3-action-tile small { color:var(--ds-muted); }
.pt-v3-section-panel { position:relative; padding:1.1rem; overflow:hidden; } .pt-v3-section-panel::before { content:""; position:absolute; inset:0 auto 0 0; width:4px; background:color-mix(in srgb, var(--pt-v3-accent) 75%, #fff); opacity:.72; } .pt-v3-section-panel > * { position:relative; z-index:1; } .pt-v3-section-panel--working { background:linear-gradient(180deg,#fff,#f8fbff); border-color:#cfe0f4; } .pt-v3-section-panel--analysis, .pt-v3-section-panel--chart { background:linear-gradient(180deg,#fff,#f7f7ff); border-color:#dfe1ff; } .pt-v3-section-panel--attention { background:linear-gradient(180deg,#fff,#fffbeb); border-color:#fde68a; } .pt-v3-section-panel--information, .pt-v3-section-panel--table { background:#fff; } .pt-v3-section-panel--executive { background:linear-gradient(180deg,#fff,var(--pt-v3-accent-soft)); }
.pt-v3-empty-state { display:flex; align-items:flex-start; gap:.75rem; padding:1rem; border:1px dashed #cbd5e1; border-radius:18px; background:linear-gradient(135deg,#fbfdff,#f8fafc); color:var(--ds-muted); }
.pt-v3-empty-state__icon, .pt-v3-activity-item__icon { width:36px; height:36px; display:grid; place-items:center; flex:0 0 auto; border-radius:13px; background:var(--pt-v3-accent-soft); color:var(--pt-v3-accent); }
.pt-v3-empty-state strong { color:var(--ds-primary); } .pt-v3-empty-state p { margin:.15rem 0 0; }
.pt-v3-activity-feed { display:grid; gap:.7rem; }
.pt-v3-activity-item { display:grid; grid-template-columns:auto minmax(0,1fr); gap:.75rem; align-items:start; padding:.75rem; border:1px solid var(--ds-border-soft); border-radius:18px; background:#fbfdff; color:inherit; text-decoration:none; min-width:0; }
.pt-v3-activity-item strong, .pt-v3-activity-item p { overflow-wrap:anywhere; } .pt-v3-activity-item strong { color:var(--ds-primary); } .pt-v3-activity-item p { margin:.15rem 0 0; color:var(--ds-muted); font-size:.88rem; }
.pt-v3-metric-list { display:grid; gap:.6rem; }
.pt-v3-metric-list div { display:flex; justify-content:space-between; gap:1rem; padding:.65rem .75rem; border:1px solid var(--ds-border-soft); border-radius:14px; background:#fbfdff; }
.pt-v3-metric-list span { color:var(--ds-muted); font-weight:800; } .pt-v3-metric-list strong { color:var(--ds-primary); }
.pt-v3-feature-callout { border-radius:18px; padding:1rem; background:linear-gradient(135deg,#eef6ff,#f0fdf4); border:1px solid #dbeafe; } .pt-v3-feature-callout strong { color:var(--ds-primary); font-size:1.15rem; } .pt-v3-feature-callout p { margin:.35rem 0 0; color:var(--ds-muted); }
.pt-v3-table-scroll { display:block; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* UI v4 module accent helpers: change accents only, not layout or component structure. */
.pt-v3-accent--finance { --pt-v3-accent:#0b76bc; --pt-v3-accent-2:#25a36f; }
.pt-v3-accent--engagement { --pt-v3-accent:#0e7490; --pt-v3-accent-2:#22c55e; }
.pt-v3-accent--workforce { --pt-v3-accent:#7c3aed; --pt-v3-accent-2:#06b6d4; }
.pt-v3-accent--operations { --pt-v3-accent:#2563eb; --pt-v3-accent-2:#14b8a6; }
.pt-v3-accent--governance { --pt-v3-accent:#164e63; --pt-v3-accent-2:#22c55e; }
.pt-v3-accent--performance, .pt-v3-accent--data { --pt-v3-accent:#4338ca; --pt-v3-accent-2:#0ea5e9; }
.pt-v3-accent--communication { --pt-v3-accent:#be185d; --pt-v3-accent-2:#f97316; }
.pt-v3-accent--administration { --pt-v3-accent:#475569; --pt-v3-accent-2:#0b76bc; }
.pt-v3-kpi-card--teal { --pt-v3-accent:#0e7490; --pt-v3-accent-soft:#f0fdfa; }
.pt-v3-action-tile:hover { transform:translateY(-2px); border-color:var(--pt-v3-accent); box-shadow:0 16px 36px color-mix(in srgb, var(--pt-v3-accent) 16%, transparent); }
.pt-v3-section-heading { margin:0 0 .75rem; color:var(--ds-primary); font-size:1.15rem; }
@media (max-width:1100px){ .pt-v3-hero { grid-template-columns:1fr; } .pt-v3-dashboard-grid--kpis { grid-template-columns:repeat(2,minmax(0,1fr)); } .pt-v3-card--span-third, .pt-v3-card--span-half, .pt-v3-card--span-two-thirds { grid-column:span 3; } }
@media (max-width:760px){ .pt-v3-page { padding-inline:var(--ds-space-3); } .pt-v3-tabs { width:100%; border-radius:20px; flex-wrap:nowrap; justify-content:flex-start; } .pt-v3-hero, .pt-v3-card, .pt-v3-section-panel { border-radius:20px; padding:1rem; } .pt-v3-tabs__item { flex:0 0 auto; justify-content:center; } .pt-v3-dashboard-grid--kpis, .pt-v3-dashboard-grid--main { grid-template-columns:1fr; } .pt-v3-card--span-third, .pt-v3-card--span-half, .pt-v3-card--span-two-thirds, .pt-v3-card--span-full { grid-column:1/-1; } .pt-v3-button { width:100%; } }

/* UI v4 authenticated rollout compatibility layer. Keeps existing markup/business logic intact while applying the approved content-area system. */
html, body, .app-shell, .main, .content-area { max-width: 100%; overflow-x: clip; }
.content-area > .ds-page,
.content-area > .dashboard-container,
.content-area > .homepage-dashboard,
.content-area > .practice-finances-dashboard,
.content-area > .data-analysis-shell {
  min-width: 0;
  max-width: 100%;
}
.ds-page,
.dashboard-container > .ds-page,
.data-analysis-shell,
.practice-finances-dashboard,
.rotorpilot-admin-v2-shell {
  width: min(100%, var(--pt-v3-page-max));
  margin-inline: auto;
  padding-inline: var(--pt-v3-gutter);
  display: grid;
  gap: clamp(1rem, 2vw, 1.5rem);
  min-width: 0;
  max-width: 100%;
  overflow-x: clip;
}
.ds-page--wide { --pt-v3-page-max: 1760px; }
.ds-page-header.pt-hero,
.data-analysis-hero,
.finance-hero,
.dashboard-hero {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(67,89,113,.14) !important;
  border-radius: 28px !important;
  padding: clamp(1.15rem, 2.35vw, 1.9rem) !important;
  background: radial-gradient(circle at 88% 8%, color-mix(in srgb, var(--pt-v3-accent) 20%, transparent), transparent 34%), linear-gradient(135deg,#fff 0%,#f7f9ff 58%,color-mix(in srgb, var(--pt-v3-accent) 9%, #fff) 100%) !important;
  box-shadow: var(--pt-v3-shadow) !important;
  text-align: left !important;
}
.ds-page-header.pt-hero::before,
.data-analysis-hero::before,
.finance-hero::before,
.dashboard-hero::before {
  content:""; position:absolute; inset:0 0 auto; height:5px; background:linear-gradient(90deg,var(--pt-v3-accent),var(--pt-v3-accent-2));
}
.ds-page-header__content,
.data-analysis-hero > *,
.finance-hero > *,
.dashboard-hero > * { position: relative; z-index: 1; min-width: 0; text-align: left; }
.ds-title,
.data-analysis-title,
.finance-title,
.dashboard-hero h1,
.sh-header-copy h1 { color: var(--ds-primary) !important; font-size: clamp(1.75rem,2.55vw,2.45rem) !important; line-height: 1.05; letter-spacing: -.03em; text-align: left; }
.ds-lede,
.data-analysis-subtitle,
.finance-subtitle,
.hero-detail,
.sh-header-copy p { color: var(--ds-muted) !important; max-width: 780px; text-align: left; }
.ds-kicker,
.data-analysis-kicker,
.finance-kicker { color: var(--ds-muted) !important; font-size:.78rem; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.pt-module-tabs,
.ds-tabs,
.ppg-tabs,
.finance-nav,
.sh-tabs,
.rp-tabs {
  display:flex; gap:.5rem; flex-wrap:wrap; justify-content:flex-start; justify-self:start; width:fit-content; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;
  padding:.4rem; border:1px solid var(--ds-border-soft); border-radius:999px; background:rgba(255,255,255,.78); box-shadow:0 8px 24px rgba(15,23,42,.045);
}
.pt-module-tabs a,
.ds-tabs a,
.ppg-tabs a,
.finance-nav a,
.sh-tab,
.rp-tabs a { border-radius:999px !important; padding:.55rem .9rem !important; color:var(--ds-primary) !important; font-weight:900 !important; text-decoration:none; background:transparent !important; border:0 !important; }
.pt-module-tabs a.active,
.pt-module-tabs a[aria-current="page"],
.ds-tabs a.active,
.ppg-tabs a.active,
.finance-nav a[aria-current="page"],
.sh-tab.is-active,
.rp-tabs a.active { background:var(--pt-v3-accent) !important; color:#fff !important; }
.ds-section-panel,
.ds-dashboard-card,
.ds-card,
.panel,
.card,
.feature-card,
.dashboard-card,
.pf-card,
.pf-filter,
.pf-actions,
.pf-help,
.sh-panel,
.sh-card,
.sh-kpi,
.sh-rag-card,
.sh-form-card {
  min-width:0; border:1px solid rgba(67,89,113,.12) !important; border-radius:var(--pt-v3-radius) !important; background:var(--pt-v3-card-bg) !important; box-shadow:0 10px 30px rgba(15,23,42,.055) !important; overflow-wrap:anywhere;
}
.ds-kpi-grid,
.ds-card-grid,
.ds-dashboard-grid,
.dashboard-grid,
.dashboard-v2-grid,
.pf-grid,
.sh-kpi-grid,
.sh-grid-2,
.sh-grid-3 { min-width:0; max-width:100%; }
.ds-table-wrap,
.sh-table-wrap,
.pf-card:has(table),
.ds-section-panel:has(table) { max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.ds-table,
.pf-table,
.sh-table,
table { max-width:100%; }
.pt-v3-accent--finance .practice-finances-dashboard, .practice-finances-dashboard { --pt-v3-accent:#0b76bc; --pt-v3-accent-2:#25a36f; }
.data-analysis-shell { --pt-v3-accent:#4338ca; --pt-v3-accent-2:#0ea5e9; }
.sh-shell { --pt-v3-accent:#6d4aff; --pt-v3-accent-2:#0f766e; --pt-v3-accent-soft:#f4f2ff; }
@media (max-width:760px){ .ds-page,.dashboard-container > .ds-page,.data-analysis-shell,.practice-finances-dashboard,.rotorpilot-admin-v2-shell{padding-inline:var(--ds-space-3)} .pt-module-tabs,.ds-tabs,.ppg-tabs,.finance-nav,.sh-tabs,.rp-tabs{width:100%;border-radius:20px;flex-wrap:nowrap} }
