/* GreenLight icon roles and optical brand corrections.
   UI geometry stays in the local Lucide sprite; components only choose a role. */
:root {
  --gl-icon-compact: 16px;
  --gl-icon-default: 20px;
  --gl-icon-large: 24px;

  /* Filled brand marks need less painted area than neighbouring Lucide outlines. */
  --gl-brand-apple-scale: .85;
  --gl-brand-android-scale: .85;
  --gl-brand-telegram-scale: .88;

  /* Application marks have different intrinsic padding. Their outer slot stays
     component-owned; these values only normalize the rendered inner mark. */
  --gl-app-brand-incy-scale: 1;
  --gl-app-brand-happ-scale: .82;
  --gl-app-brand-v2raytun-scale: 1.48;
  --gl-app-brand-amnezia-scale: .86;
}

.gl-icon,
.gl-brand-icon {
  display: block;
  width: var(--gl-icon-default);
  height: var(--gl-icon-default);
  flex: 0 0 auto;
  overflow: visible;
  vertical-align: middle;
}

.gl-icon-compact,
.gl-brand-icon-compact {
  width: var(--gl-icon-compact);
  height: var(--gl-icon-compact);
}

.gl-icon-lg,
.gl-brand-icon-lg {
  width: var(--gl-icon-large);
  height: var(--gl-icon-large);
}

.gl-brand-icon {
  transform: scale(var(--gl-brand-scale, 1));
  transform-origin: center;
}

.gl-brand-icon-apple { --gl-brand-scale: var(--gl-brand-apple-scale); }
.gl-brand-icon-android { --gl-brand-scale: var(--gl-brand-android-scale); }
.gl-brand-icon-telegram { --gl-brand-scale: var(--gl-brand-telegram-scale); }

.gl-app-brand-incy { --gl-app-brand-scale: var(--gl-app-brand-incy-scale); }
.gl-app-brand-happ { --gl-app-brand-scale: var(--gl-app-brand-happ-scale); }
.gl-app-brand-v2raytun { --gl-app-brand-scale: var(--gl-app-brand-v2raytun-scale); }
.gl-app-brand-amnezia { --gl-app-brand-scale: var(--gl-app-brand-amnezia-scale); }
