/* Shared interaction and layout primitives. Existing semantic theme tokens remain authoritative. */
:root{--ui-radius:12px;--ui-gap:12px;--ui-control:38px}
.main{padding-bottom:96px}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent)!important;outline-offset:3px}
.tb-action,.tb-sel,.back-btn-dark,.ms-select{min-height:var(--ui-control);border-radius:8px}
.page-title{font-size:clamp(20px,2vw,26px);line-height:1.3}
.page-sub,.cc-meta,.gc-sub,.inv-muted,.md8-status{font-size:13px;line-height:1.5}
.toolbar,.inv-toolbar,.bb-actions{gap:8px;flex-wrap:wrap}
.back-bar{gap:12px;flex-wrap:wrap}
.gc,.call-card,.pharm-card,.inv-card{border-radius:var(--ui-radius)}
.gc-title{letter-spacing:0;line-height:1.45}
.nav-item{min-height:42px}
.ui-topbar{display:flex;align-items:center;gap:10px;padding:10px 24px;border-bottom:1px solid var(--border);background:var(--bg2);flex-wrap:wrap}
.ui-topbar .ui-search-button{flex:1;text-align:left;color:var(--text2);max-width:560px}
.ui-topbar kbd{float:right;opacity:.7;font-size:12px}
.ui-route-label{color:var(--text2);font-size:13px;min-width:110px}
.ui-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ui-panel{padding:16px;border:1px solid var(--border);border-radius:var(--ui-radius);background:var(--bg2);color:var(--text);margin:12px 0}
.ui-description{color:var(--text3);font-size:13px;line-height:1.6;margin:6px 0 12px}
.ui-dialog{border:1px solid var(--border2);border-radius:16px;background:var(--bg2);color:var(--text);padding:20px;width:min(650px,calc(100vw - 24px));max-height:85dvh;overflow:auto;box-shadow:0 20px 70px #0007}
.ui-dialog::backdrop{background:#0008}
.ui-dialog h2{font-size:20px;margin:0 0 10px;line-height:1.4}
.ui-dialog label{display:block;margin:12px 0 6px;line-height:1.5}
.ui-dialog input:not([type=checkbox]),.ui-dialog select{width:100%;padding:10px;background:var(--bg);color:var(--text);border:1px solid var(--border2);border-radius:8px}
.ui-dialog .ui-row label{margin:0}
.ui-dialog-close{float:right}
.ui-search-results{display:grid;gap:6px;margin-top:12px}
.ui-result{display:block;width:100%;text-align:left;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--bg);color:var(--text);cursor:pointer}
.ui-result:hover{border-color:var(--accent)}
.ui-result small{display:block;color:var(--text3);margin-top:4px}
.ui-field-error{color:var(--txt-red,var(--red));font-size:13px;line-height:1.4;margin:4px 0 8px}
[aria-invalid=true]{border-color:var(--red)!important}
.ui-form-index{display:flex;gap:6px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--bg2)}
.ui-form-index button{font-size:13px;min-height:34px}
.ui-form-progress{margin:8px 16px;color:var(--text3);font-size:13px}
.ui-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 0;color:var(--text2);font-size:13px}
.ui-table-tools{display:flex;gap:8px;flex-wrap:wrap;padding:10px 0;align-items:center}
.ui-table-shell{overflow:auto;max-width:100%;max-height:65dvh;border:1px solid var(--border);border-radius:10px}
.ui-table-shell table{width:100%;border-collapse:collapse}
.ui-table-shell th{position:sticky;top:0;background:var(--bg2);z-index:1}
.ui-table-shell th,.ui-table-shell td{padding:11px;border-bottom:1px solid var(--border);text-align:left;font-size:13px}
.ui-table-shell th button{background:transparent;color:inherit;border:0;text-align:left;cursor:pointer;min-height:32px}
.ui-view-controls{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.ui-toolbar-details{border:1px solid var(--border2);border-radius:8px;background:var(--bg2)}
.ui-toolbar-details summary{padding:10px 12px;cursor:pointer;font-size:13px;min-height:40px;list-style-position:inside}
.ui-toolbar-details[open]{flex-basis:100%;order:5}
.ui-toolbar-details .ui-row{padding:0 12px 12px}
.wf-field>label,.wf-legend{font-size:13px!important;text-transform:none!important;letter-spacing:0!important;line-height:1.5}
.wf-legend{font-weight:700;font-size:14px!important}
.ui-fwin-heading{font-size:14px;font-weight:700;padding:12px 0 4px;color:var(--text)}
.ui-dashboard-tools{margin:12px 0}
.ui-quick-actions{display:flex;gap:8px;flex-wrap:wrap}
.ui-admin-help{margin:0 24px 12px}
html[data-density=comfortable]{--ui-control:42px}
html[data-density=compact] .ui-table-shell td,html[data-density=compact] .ui-table-shell th{padding:6px 10px}
html[data-density=compact] .call-card{padding:12px}
html[data-density=comfortable] .toolbar,html[data-density=comfortable] .inv-toolbar{row-gap:12px}
html[data-visual=calm] .dash-hero,html[data-visual=calm] .gc,html[data-visual=calm] .fwin{box-shadow:none;background:var(--bg2)}
html[data-visual=calm] .dash-hero::before,html[data-visual=calm] .dash-hero::after{display:none}
html[data-visual=calm] .bg-canvas{display:none}
html[data-visual=calm] .pcard,html[data-visual=calm] .tb-action.primary,html[data-visual=calm] .fwin-save{box-shadow:none}
html[data-visual=calm] .pcard{animation:none}
.ui-skip{position:fixed;top:8px;left:8px;z-index:99999;padding:12px;background:var(--bg2);color:var(--text);transform:translateY(-180%)}
.ui-skip:focus{transform:translateY(0)}
@media(max-width:800px){.ui-topbar{padding:10px 16px 10px 54px}.ui-route-label{display:none}.ui-topbar kbd{display:none}.ui-dialog{padding:16px}.back-bar .bb-actions{margin-left:0!important;width:100%}#admin-tabs,#myspace-tabs,#inv-tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap}.fwin{max-width:calc(100vw - 16px)!important;max-height:90dvh!important}.ui-admin-help{margin:12px 16px}.ui-table-shell{max-height:70dvh}}
@media(max-width:640px){button.tb-action,.tb-sel,.nav-item,.ui-result,.mstab,.atab{min-height:44px}.ui-row input,.ui-row select{max-width:100%;min-width:0}.ui-topbar .ui-search-button{flex-basis:60%}.ui-table-tools{align-items:stretch}.ui-table-tools input{flex:1;min-width:130px}.calls-grid{grid-template-columns:1fr!important}.ui-dialog{max-height:90dvh}.ui-pagination{padding:12px 8px}.ui-quick-actions>*{flex:1 1 140px}.ui-form-index{padding:8px}.ui-form-index button{min-height:40px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*{animation:none!important;transition:none!important}}
@media(max-width:640px){
  /* Put the work queue before analytical charts on a phone. */
  #dash-followups-card{order:1}#dash-escalation-card{order:2}#dash-updates-card{order:3}
  #dash-recent-card{order:4}#dash-primerx-card{order:5}#dash-starplus-card{order:6}
  #dash-trend-card{order:7}#dash-map-card{order:8}
  .hero-cities-lbl,.city-chips{display:none}
  .hero-actions #btn-import,.hero-actions [onclick="exportCsv()"]{display:none}
  #sc-dashboard .hero-pills .hero-pill:nth-child(n+3){display:none}
  .ms-more-toggle{display:inline-flex!important;align-items:center;gap:5px}
  .ms-secondary-controls{display:none!important;width:100%;flex-wrap:wrap;gap:8px}
  .ms-secondary-controls.open{display:flex!important}
}
.ms-more-toggle{display:none}
.ms-secondary-controls{display:contents}
.call-text-action{border:0;background:transparent;color:var(--txt-accent);cursor:pointer;padding:6px 4px;text-decoration:underline;text-underline-offset:2px;min-height:38px}
.call-text-action.danger{color:var(--txt-red)}
