  :root{
    --ai-blue:#2979ff;
    --blue-rgb:41,121,255;

    --text:#16325c;
    --border:rgba(41,121,255,.12);
    --shadow:0 12px 32px rgba(20,58,122,.10), 0 2px 8px rgba(20,58,122,.06);
    --shadow-hover:0 22px 42px rgba(20,58,122,.16), 0 6px 18px rgba(20,58,122,.10);
  }
  .ai-trigger.ai-lg{ --ai-size:118px; }
  .ai-trigger.ai-md{ --ai-size:78px; }
  .ai-trigger.ai-sm{ --ai-size:58px; }

  .ai-trigger{
    position:relative;
    width:var(--ai-size);
    height:var(--ai-size);
    border:none;
    border-radius:calc(var(--ai-size) * .22);
    background:linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
    box-shadow:var(--shadow);
    cursor:pointer;
    transition:
      transform .28s ease,
      box-shadow .28s ease,
      border-color .28s ease;
    overflow:hidden;
    outline:none;
    border:1px solid var(--border);
    display:flex;
    align-items:center;
    justify-content:center;
    -webkit-tap-highlight-color:transparent;
  }

  .ai-trigger:hover{
    transform:translateY(-4px) scale(1.025);
    box-shadow:var(--shadow-hover);
  }

  .ai-trigger:active{
    transform:translateY(-1px) scale(.985);
  }

  .ai-trigger::before{
    content:"";
    position:absolute;
    inset:-20%;
    background:
      radial-gradient(circle at 30% 25%, rgba(255,255,255,.95), transparent 24%),
      radial-gradient(circle at 70% 80%, rgba(41,121,255,.05), transparent 30%);
    opacity:.95;
    pointer-events:none;
  }

  .ai-trigger::after{
    content:"";
    position:absolute;
    inset:0;
    border-radius:inherit;
    background:
      linear-gradient(135deg, rgba(255,255,255,.62), transparent 38%, transparent 65%, rgba(41,121,255,.04));
    pointer-events:none;
  }

  .hover-sheen{
    position:absolute;
    inset:0;
    border-radius:inherit;
    overflow:hidden;
    pointer-events:none;
    z-index:8;
  }

  .hover-sheen::before{
    content:"";
    position:absolute;
    top:-35%;
    left:-80%;
    width:58%;
    height:180%;
    transform:rotate(18deg);
    background:linear-gradient(90deg, transparent, rgba(255,255,255,.92), transparent);
    opacity:0;
  }

  .ai-trigger:hover .hover-sheen::before{
    animation:sheen 1.08s ease;
  }

  .icon-stage{
    position:relative;
    width:calc(var(--ai-size) * .68);
    height:calc(var(--ai-size) * .68);
    display:flex;
    align-items:center;
    justify-content:center;
  }

  .glow{
    position:absolute;
    width:calc(var(--ai-size) * .47);
    height:calc(var(--ai-size) * .47);
    border-radius:50%;
    background:radial-gradient(circle, rgba(var(--blue-rgb), .24) 0%, rgba(var(--blue-rgb), .10) 42%, transparent 72%);
    filter:blur(calc(var(--ai-size) * .06));
    animation:glowBreath 3.2s ease-in-out infinite;
    transition:transform .35s ease;
    z-index:0;
  }

  .ring{
    position:absolute;
    border-radius:50%;
    border:2px solid rgba(var(--blue-rgb), .26);
    transform:scale(.5);
    opacity:0;
    z-index:1;
  }

  .ring.r1{ animation:ringWave 3.4s ease-out infinite; }
  .ring.r2{ animation:ringWave 3.4s ease-out 1.1s infinite; }
  .ring.r3{ animation:ringWave 3.4s ease-out 2.2s infinite; }

  .core{
    position:absolute;
    width:calc(var(--ai-size) * .135);
    height:calc(var(--ai-size) * .135);
    border-radius:50%;
    background:var(--ai-blue);
    box-shadow:
      0 0 0 calc(var(--ai-size) * .076) rgba(var(--blue-rgb), .10),
      0 0 calc(var(--ai-size) * .20) rgba(var(--blue-rgb), .34),
      0 0 calc(var(--ai-size) * .34) rgba(var(--blue-rgb), .26);
    animation:pulse 2.4s ease-in-out infinite;
    transition:transform .35s ease;
    z-index:3;
  }

  .core::before,
  .core::after{
    content:"";
    position:absolute;
    left:50%;
    top:50%;
    border-radius:50%;
    transform:translate(-50%, -50%);
    border:1px solid rgba(var(--blue-rgb), .28);
  }

  .core::before{
    width:calc(var(--ai-size) * .24);
    height:calc(var(--ai-size) * .24);
    animation:innerHalo 2.9s ease-in-out infinite;
  }

  .core::after{
    width:calc(var(--ai-size) * .34);
    height:calc(var(--ai-size) * .34);
    animation:innerHalo 3.6s ease-in-out infinite reverse;
  }

  .orbital{
    position:absolute;
    inset:0;
    animation:spin 6.8s linear infinite;
    z-index:4;
  }

  .spark{
    position:absolute;
    border-radius:50%;
    background:#ffffff;
    box-shadow:
      0 0 0 2px rgba(var(--blue-rgb), .14),
      0 0 14px rgba(var(--blue-rgb), .28);
    transition:transform .35s ease;
  }

  .spark.s1{
    width:calc(var(--ai-size) * .050);
    height:calc(var(--ai-size) * .050);
    top:calc(var(--ai-size) * .068);
    left:50%;
    transform:translateX(-50%);
  }

  .spark.s2{
    width:calc(var(--ai-size) * .042);
    height:calc(var(--ai-size) * .042);
    right:calc(var(--ai-size) * .085);
    top:50%;
    transform:translateY(-50%);
    opacity:.92;
  }

  .spark.s3{
    width:calc(var(--ai-size) * .034);
    height:calc(var(--ai-size) * .034);
    bottom:calc(var(--ai-size) * .076);
    left:calc(var(--ai-size) * .152);
    opacity:.8;
  }

  .ai-trigger:hover .glow{
    transform:scale(1.08);
  }

  .label{
    font-size:13px;
    color:#4f6d9f;
    user-select:none;
  }

  @keyframes pulse{
    0%,100%{ transform:scale(1); }
    50%{ transform:scale(1.22); }
  }

  @keyframes innerHalo{
    0%,100%{
      opacity:.34;
      transform:translate(-50%, -50%) scale(1);
    }
    50%{
      opacity:.9;
      transform:translate(-50%, -50%) scale(1.08);
    }
  }

  @keyframes ringWave{
    0%{
      width:calc(var(--ai-size) * .19);
      height:calc(var(--ai-size) * .19);
      opacity:0;
      transform:scale(.72);
    }
    18%{
      opacity:.62;
    }
    100%{
      width:calc(var(--ai-size) * .66);
      height:calc(var(--ai-size) * .66);
      opacity:0;
      transform:scale(1.06);
    }
  }

  @keyframes spin{
    from{ transform:rotate(0deg); }
    to{ transform:rotate(360deg); }
  }

  @keyframes glowBreath{
    0%,100%{
      transform:scale(1);
      opacity:.72;
    }
    50%{
      transform:scale(1.12);
      opacity:1;
    }
  }

  @keyframes sheen{
    0%{
      left:-80%;
      opacity:0;
    }
    20%{
      opacity:.78;
    }
    100%{
      left:130%;
      opacity:0;
    }
  }