:root {
  /* region control geometry — balanced (default) baseline */  --cem-control-height: 2.5rem;
  --cem-control-height-small: 2.5rem;
  --cem-control-height-medium: 3rem;
  --cem-control-height-large: 4rem;
  --cem-control-height-x-large: 6rem;
  --cem-control-height-xx-large: 8rem;
  --cem-control-padding-x: 0.75rem;
  --cem-control-padding-y: 0.5rem;
  --cem-icon-button-size: var(--cem-coupling-zone-min);
  --cem-icon-button-icon-size: 1.25rem;
  --cem-icon-size: 2rem;
  --cem-icon-size-small: 1rem;
  --cem-icon-size-large: 3rem;
  --cem-list-row-height: 3rem;
  --cem-list-popup-rows: 8;
  --cem-menu-row-height: 3rem;
  --cem-table-row-height: 2.5rem;
  --cem-data-row-height: var(--cem-list-row-height);
  --cem-data-icon-size: var(--cem-icon-button-icon-size);

        
  /* endregion control geometry */

  /* region progress graphic geometry */  --cem-progress-spinner-size: 3rem;
  --cem-progress-track-thickness: 0.25rem;

        
  /* endregion progress graphic geometry */

  /* region slider visual geometry */  --cem-slider-track-thickness: 0.25rem;
  --cem-slider-thumb-size: 1.25rem;

        
  /* endregion slider visual geometry */
}

/* region coupling mode: forgiving — larger visual geometry */
:root[data-cem-coupling="forgiving"] {
  --cem-control-height: 2.75rem;
  --cem-control-padding-x: 1rem;
  --cem-control-padding-y: 0.625rem;
  --cem-list-row-height: 3.25rem;
  --cem-menu-row-height: 3.25rem;
}
/* endregion coupling mode: forgiving */

/* region coupling mode: compact — smaller visual geometry */
:root[data-cem-coupling="compact"] {
  --cem-control-height: 2.25rem;
  --cem-control-padding-x: 0.625rem;
  --cem-control-padding-y: 0.375rem;
  --cem-list-row-height: 2.75rem;
  --cem-menu-row-height: 2.75rem;
}
/* endregion coupling mode: compact */

/* Restore canonical density endpoints, including glyphs on every input modality. */
:root[data-cem-density="normal"], :where([data-cem-density="normal"]) {
  --cem-control-height: 2.5rem;
  --cem-control-padding-x: 0.75rem;
  --cem-control-padding-y: 0.5rem;
  --cem-icon-button-size: var(--cem-coupling-zone-min);
  --cem-icon-button-icon-size: 1.25rem;
  --cem-icon-size: 2rem;
  --cem-icon-size-small: 1rem;
  --cem-icon-size-large: 3rem;
  --cem-list-row-height: 3rem;
  --cem-menu-row-height: 3rem;
  --cem-table-row-height: 2.5rem;
  --cem-data-row-height: var(--cem-list-row-height);
  --cem-data-icon-size: var(--cem-icon-button-icon-size);
}

/* Compact glyphs follow text even while its target geometry stays input-gated. */
:where([data-cem-density="compact"]) {
  --cem-icon-button-icon-size: 1em;
  --cem-icon-size: 1em;
  --cem-icon-size-small: 1em;
  --cem-icon-size-large: 1em;
  --cem-data-icon-size: 1em;
}

/* Compact chrome retains its precise-input policy. */
@media (hover: hover) and (pointer: fine) and (not (any-pointer: coarse)) {
  :root[data-cem-density="compact"], :where([data-cem-density="compact"]) {
    --cem-control-height: 1.75rem;
    --cem-control-padding-x: 0.375rem;
    --cem-control-padding-y: 0.125rem;
    --cem-icon-button-size: 1.5rem;
    --cem-icon-button-icon-size: 1em;
    --cem-icon-size: 1em;
    --cem-icon-size-small: 1em;
    --cem-icon-size-large: 1em;
    --cem-list-row-height: 1.75rem;
    --cem-menu-row-height: 1.75rem;
    --cem-table-row-height: 1.75rem;
    --cem-data-row-height: var(--cem-list-row-height);
    --cem-data-icon-size: 1em;
  }
}

/* Explicit super-compact controls fit content on every input modality. */
:root[data-cem-density="super-compact"], :where([data-cem-density="super-compact"]) {
  --cem-control-height: 0px;
  --cem-control-padding-x: 0px;
  --cem-control-padding-y: 0px;
  --cem-icon-button-size: 1em;
  --cem-icon-button-icon-size: 1em;
  --cem-icon-size: 1em;
  --cem-icon-size-small: 1em;
  --cem-icon-size-large: 1em;
  --cem-list-row-height: 1lh;
  --cem-menu-row-height: 1lh;
  --cem-table-row-height: 1lh;
  --cem-data-row-height: 1lh;
  --cem-data-icon-size: 1em;
}

/* Optional inherited size profiles; explicit geometry wins over coupling height. */

:root[data-cem-size="small"], :where([data-cem-size="small"]) {
  --cem-control-height: var(--cem-control-height-small);
}

:root[data-cem-size="medium"], :where([data-cem-size="medium"]) {
  --cem-control-height: var(--cem-control-height-medium);
}

:root[data-cem-size="large"], :where([data-cem-size="large"]) {
  --cem-control-height: var(--cem-control-height-large);
}

:root[data-cem-size="x-large"], :where([data-cem-size="x-large"]) {
  --cem-control-height: var(--cem-control-height-x-large);
}

:root[data-cem-size="xx-large"], :where([data-cem-size="xx-large"]) {
  --cem-control-height: var(--cem-control-height-xx-large);
}
 