/* Canonical Ceangal action button. Consumers opt in with .ceangal-button. */
.ceangal-button,
.outline-button,
.carousel-next,
.hero-actions a,
.contact-modal button[type="submit"] {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: inline-flex;
  min-height: var(--ceangal-control-height, 46px);
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 0 22px;
  border: 1px solid transparent !important;
  border-radius: 999px;
  background: var(--ceangal-button-color, var(--ceangal-accent, #32ccc4)) !important;
  box-shadow:
    0 0 0 1px var(--ceangal-button-ring, rgba(50, 204, 196, .7)),
    0 16px 34px var(--ceangal-button-shadow, rgba(50, 204, 196, .2));
  color: var(--ceangal-white, #fff) !important;
  font: inherit;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  --button-glow-x: 50%;
  --button-glow-y: 50%;
  will-change: box-shadow, scale, translate, border-color;
}

/* Semantic variants only change color. Geometry and behavior stay canonical. */
.ceangal-button--primary {
  --ceangal-button-color: var(--ceangal-accent, #32ccc4);
  --ceangal-button-ring: rgba(50, 204, 196, .7);
  --ceangal-button-ring-hover: rgba(50, 204, 196, .86);
  --ceangal-button-shadow: rgba(50, 204, 196, .2);
  --ceangal-button-shadow-hover: rgba(50, 204, 196, .28);
  --ceangal-button-halo: rgba(50, 204, 196, .24);
}

.ceangal-button--standard {
  --ceangal-button-color: var(--ceangal-primary, #005f81);
  --ceangal-button-ring: rgba(0, 95, 129, .7);
  --ceangal-button-ring-hover: rgba(0, 95, 129, .86);
  --ceangal-button-shadow: rgba(0, 95, 129, .2);
  --ceangal-button-shadow-hover: rgba(0, 95, 129, .28);
  --ceangal-button-halo: rgba(0, 95, 129, .24);
}

.ceangal-button--danger {
  --ceangal-button-color: var(--ceangal-danger, #c7372f);
  --ceangal-button-ring: rgba(199, 55, 47, .7);
  --ceangal-button-ring-hover: rgba(199, 55, 47, .86);
  --ceangal-button-shadow: rgba(199, 55, 47, .2);
  --ceangal-button-shadow-hover: rgba(199, 55, 47, .28);
  --ceangal-button-halo: rgba(199, 55, 47, .24);
}

.ceangal-button > *,
.outline-button > *,
.carousel-next > *,
.hero-actions a > *,
.contact-modal button[type="submit"] > * {
  position: relative;
  z-index: 2;
}

.ceangal-button::before,
.outline-button::before,
.carousel-next::before,
.hero-actions a::before,
.contact-modal button[type="submit"]::before {
  position: absolute;
  left: var(--button-glow-x);
  top: var(--button-glow-y);
  width: 190%;
  height: 190%;
  z-index: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.42) 0%, rgba(255,255,255,.28) 18%, rgba(255,255,255,.12) 38%, transparent 64%);
  content: "";
  opacity: 0;
  pointer-events: none;
  filter: blur(10px);
  transform: translate(-50%, -50%);
  transition: opacity var(--ceangal-motion-standard, 220ms) ease, filter var(--ceangal-motion-standard, 220ms) ease, transform 80ms linear;
}

.ceangal-button::after,
.outline-button::after,
.carousel-next::after,
.hero-actions a::after,
.contact-modal button[type="submit"]::after {
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0)), var(--ceangal-button-color, var(--ceangal-accent, #32ccc4));
  content: "";
  pointer-events: none;
  transition: background var(--ceangal-motion-fast, 180ms) ease, box-shadow var(--ceangal-motion-fast, 180ms) ease;
}

.ceangal-button:hover,
.ceangal-button:focus-visible,
.outline-button:hover,
.outline-button:focus-visible,
.carousel-next:hover,
.carousel-next:focus-visible,
.hero-actions a:hover,
.hero-actions a:focus-visible,
.contact-modal button[type="submit"]:hover,
.contact-modal button[type="submit"]:focus-visible {
  border-color: transparent !important;
  background: var(--ceangal-button-color, var(--ceangal-accent, #32ccc4)) !important;
  color: var(--ceangal-white, #fff) !important;
  box-shadow: 0 0 0 1px var(--ceangal-button-ring-hover, rgba(50,204,196,.86)), 0 18px 38px var(--ceangal-button-shadow-hover, rgba(50,204,196,.28)), 0 0 56px var(--ceangal-button-halo, rgba(50,204,196,.24));
}

.ceangal-button:hover::before,
.ceangal-button:focus-visible::before,
.outline-button:hover::before,
.outline-button:focus-visible::before,
.carousel-next:hover::before,
.carousel-next:focus-visible::before,
.hero-actions a:hover::before,
.hero-actions a:focus-visible::before,
.contact-modal button[type="submit"]:hover::before,
.contact-modal button[type="submit"]:focus-visible::before { opacity: .95; filter: blur(8px); }

.ceangal-button:hover::after,
.ceangal-button:focus-visible::after,
.outline-button:hover::after,
.outline-button:focus-visible::after,
.carousel-next:hover::after,
.carousel-next:focus-visible::after,
.hero-actions a:hover::after,
.hero-actions a:focus-visible::after,
.contact-modal button[type="submit"]:hover::after,
.contact-modal button[type="submit"]:focus-visible::after {
  background: linear-gradient(180deg, rgba(255,255,255,.2), rgba(255,255,255,0)), var(--ceangal-button-color, var(--ceangal-accent, #32ccc4));
  box-shadow: inset 0 0 24px rgba(0,95,129,.14), inset 0 1px 0 rgba(255,255,255,.28);
}

.ceangal-button:focus-visible { outline: 3px solid var(--ceangal-button-halo, rgba(0,95,129,.28)); outline-offset: 3px; }
.ceangal-button:active,
.outline-button:active,
.carousel-next:active,
.hero-actions a:active,
.contact-modal button[type="submit"]:active { translate: 0 1px; scale: .985; }

.ceangal-button:disabled,
.ceangal-button[aria-disabled="true"] {
  background: #dbe4e7 !important;
  color: #6f7f85 !important;
  box-shadow: none;
  cursor: not-allowed;
}
.ceangal-button:disabled::before,
.ceangal-button[aria-disabled="true"]::before { display: none; }
.ceangal-button:disabled::after,
.ceangal-button[aria-disabled="true"]::after { background: #dbe4e7; box-shadow: none; }

@media (prefers-reduced-motion: reduce) {
  .ceangal-button,
  .outline-button,
  .carousel-next,
  .hero-actions a,
  .contact-modal button[type="submit"] { transition: none; }
  .ceangal-button::before,
  .outline-button::before,
  .carousel-next::before,
  .hero-actions a::before,
  .contact-modal button[type="submit"]::before { transition: none; }
}

@media (forced-colors: active) {
  .ceangal-button { border: 1px solid ButtonText !important; }
}

