/* Keep the same glass, aurora and moving LED, without compound GPU masks. */
.idn-safe-card{min-width:0;isolation:isolate}
.idn-safe-card>.q-surface{z-index:0;contain:none;overflow:hidden;border-radius:inherit}
.idn-safe-card>.q-surface>i{animation-name:idn-safe-aurora}
.idn-card-content{position:relative;z-index:1}
.idn-positioned-content{z-index:1}
.idn-safe-card>.idn-safe-edge{position:absolute!important;inset:0!important;width:auto!important;height:auto!important;border:0!important;padding:0!important;border-radius:inherit;z-index:2;pointer-events:none;overflow:visible!important;background:none!important;mask:none!important;-webkit-mask:none!important;transform:none!important;animation:none!important}
.idn-safe-edge::before,.idn-safe-edge::after{content:none!important}
.idn-safe-edge>svg{display:block;width:100%;height:100%;overflow:visible;pointer-events:none}
.idn-safe-edge .idn-led-path{animation:idn-safe-led 12s var(--q-delay,0s) linear infinite paused;opacity:.9}
.q-inview>.idn-safe-edge .idn-led-path{animation-play-state:running}
.idn-safe-card:is(:hover,:focus-within,.q-touch)>.idn-safe-edge{opacity:1}
.idn-replaced-before::before,.idn-replaced-after::after,.idn-safe-card.studio-light-card::after,.idn-studio-home>.idn-safe-card::after{content:none!important}
.idn-touch-layout .idn-safe-card{transform-style:flat}
.q-suspended .idn-safe-edge .idn-led-path{animation-play-state:paused!important}
@keyframes idn-safe-led{from{stroke-dashoffset:0}to{stroke-dashoffset:-100}}
@keyframes idn-safe-aurora{from{transform:translate(-5%,-3%) rotate(-8deg)}50%{transform:translate(5%,5%) rotate(7deg)}to{transform:translate(0,-4%) rotate(-4deg)}}
@media(min-width:751px) and (max-width:1100px){.ads-page .ads-plan-grid,.identity-merged .ads-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.ads-page .ads-plan-grid>.ads-plan:last-child:nth-child(odd),.identity-merged .ads-plan-grid>.ads-plan:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:calc(50% - 12px)}.ads-plan :is(p,ul,.btn){overflow-wrap:break-word}}
@media(prefers-reduced-motion:reduce){.idn-safe-edge .idn-led-path{animation:none!important}}

/* Touch GPUs: keep text out of the filtered rendering surface. The glass is
   still blurred, but only its background plane is sampled. Colours continue
   moving inside the exact card bounds, without oversized rotating textures. */
.idn-touch-layout .idn-safe-card{
 -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
 transform-style:flat!important;
}
.idn-touch-layout .idn-safe-card>.q-surface{
 -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.idn-touch-layout .idn-safe-card>.q-surface>i{
 inset:0;transform:none;will-change:auto;
 background-size:160% 160%;
 animation-name:idn-touch-aurora;
}
@keyframes idn-touch-aurora{
 0%,100%{opacity:.62}
 50%{opacity:1}
}

/* Android synthesises sticky :hover after touch. Only a deliberate press or
   keyboard focus can brighten/lift these cards; a scroll keeps their light stable. */
.idn-touch-layout .idn-safe-card:not(.q-touch):not(:focus-within)>.q-surface{opacity:.5}
.idn-touch-layout .idn-safe-card.q-pricing:not(.q-touch):not(:focus-within)>.q-surface{opacity:.88}
.idn-touch-layout .idn-safe-card.q-pricing:is(.featured,.is-featured):not(.q-touch):not(:focus-within)>.q-surface{opacity:1}
.idn-touch-layout .idn-safe-card:not(.q-touch):not(:focus-within)>.idn-safe-edge{opacity:.7}
.idn-touch-layout .idn-safe-card.glass-motion:not(.q-touch):not(:focus-within){translate:0 0}
.idn-touch-layout .idn-safe-card.glass-motion:not(.q-touch):not(:focus-within)::after{opacity:0}

/* The two bounded colour planes are painted once and cross-fade. Avoid
   repainting moving gradients into a filtered surface on every 144 Hz frame. */
.idn-touch-layout .idn-safe-card>.q-surface>i::after{
 content:'';position:absolute;inset:0;background:inherit;
 background-position:100% 0%,0% 100%,100% 100%;background-size:160% 160%;
 animation:idn-touch-colour 13s var(--q-delay,0s) ease-in-out infinite alternate paused;
}
.idn-touch-layout .q-inview>.q-surface>i::after{animation-play-state:running}
.q-suspended .idn-safe-card>.q-surface>i::after{animation-play-state:paused!important}
@keyframes idn-touch-colour{from{opacity:0}to{opacity:1}}
.idn-touch-layout .idn-safe-card:not(.q-touch):not(:focus-within){
 translate:0 0;border-color:var(--idn-idle-border,#bea0df38)!important;
 box-shadow:var(--idn-idle-shadow,inset 0 1px 0 #fff1,0 16px 45px -30px #000a);
}
@media(prefers-reduced-motion:reduce){.idn-safe-card>.q-surface>i::after{animation:none!important}}

/* Bound ambient textures to one viewport instead of the entire tall section.
   These radial gradients already fade to transparent; a second full-section
   GPU mask is redundant. Keep the same moving light within a bounded plane. */
@media(min-width:768px){
 .idn-touch-layout .idn-depth-light{
  bottom:auto;height:min(100%,100lvh);overflow:hidden;
  -webkit-mask:none;mask:none;contain:layout paint;
 }
 .idn-touch-layout .idn-depth-light::before{inset:0}
}
/* The tablet's atmosphere is already a diffuse gradient, so resampling it
   through a live backdrop on every card adds a pass without visible detail.
   The translucent glass, animated colour planes and LED outline remain. */
.idn-android-tablet .idn-safe-card>.q-surface{
 -webkit-backdrop-filter:none;backdrop-filter:none;
 background:linear-gradient(135deg,#dbc4ff08,#75cbd206);
}

.idn-tablet-card-body{position:relative;z-index:1;min-width:0;transform-origin:center center}

