/* Добро.Карта: только движение. Подключается после исходных стилей карточки. */
.dc.dc-motion { isolation:isolate; }
.dc.dc-motion::before {
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:#fff;
  pointer-events:none;
  z-index:-1;
  opacity:0;
  animation:dc-gradient-arrive 1500ms cubic-bezier(.25,.65,.3,1) backwards;
}

/* Постоянный слой с исходным градиентом плавно проявляется в обе стороны.
   Он не исчезает скачком, когда details теряет атрибут open. */
.dc.dc-motion #dc-launch .dc-details>summary {
  position:relative;
  isolation:isolate;
  background:#fff;
  border-left-color:#aa82bb;
  transition:border-left-color 950ms cubic-bezier(.4,0,.6,1);
}
.dc.dc-motion #dc-launch .dc-details:nth-child(even)>summary { border-left-color:#ffae80; }
.dc.dc-motion #dc-launch .dc-details.dc-motion-open>summary {
  border-left-color:#550577;
  transition-duration:1100ms;
}
.dc.dc-motion #dc-launch .dc-details>summary::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(110deg,#e8d6f1 0,#f6edf9 45%,#ffe6d5 100%);
  pointer-events:none;
  opacity:0;
  transition:opacity 950ms cubic-bezier(.4,0,.6,1);
}
.dc.dc-motion #dc-launch .dc-details.dc-motion-open>summary::before {
  opacity:1;
  transition-duration:1100ms;
}
.dc.dc-motion .dc-details>summary .dc-toggle::after {
  transition:transform 320ms cubic-bezier(.22,1,.36,1);
}
.dc.dc-motion #dc-launch .dc-details>summary .dc-toggle::after {
  transition-duration:600ms;
  transition-timing-function:cubic-bezier(.4,0,.6,1);
}
/* Прямой родитель важен: открытый внешний блок не меняет вложенный плюс. */
.dc.dc-motion .dc-details:not(.dc-motion-open)>summary .dc-toggle::after { transform:rotate(90deg); }
.dc.dc-motion .dc-details.dc-motion-open>summary .dc-toggle::after { transform:rotate(0); }
.dc.dc-motion .dc-details>summary .dc-summary-symbol,
.dc.dc-motion .dc-details>summary .dc-toggle {
  transition:transform 240ms cubic-bezier(.22,1,.36,1);
}
@media (hover:hover) and (pointer:fine) {
  .dc.dc-motion .dc-details>summary:hover .dc-summary-symbol { transform:translateY(-1px); }
  .dc.dc-motion .dc-details>summary:hover .dc-toggle { transform:scale(1.06); }
}
.dc.dc-motion .dc-details>summary:active .dc-toggle { transform:scale(.94); }
@keyframes dc-gradient-arrive { from { opacity:1; } to { opacity:0; } }

/* Keep the whole title visible even if print/media changes before JS settles. */
@media (prefers-reduced-motion:reduce), print {
  .dc #dc-title.dc-title-reveal {
    transform:none!important;
    opacity:1!important;
  }
}

@media (prefers-reduced-motion:reduce) {
  .dc.dc-motion::before { animation:none; opacity:0; }
  .dc.dc-motion #dc-launch .dc-details>summary::before { display:none; }
  .dc.dc-motion .dc-details>summary :is(.dc-toggle,.dc-summary-symbol) { transition:none; transform:none; }
}
@media print {
  .dc.dc-motion::before,
  .dc.dc-motion #dc-launch .dc-details>summary::before { display:none!important; }
  .dc.dc-motion, .dc.dc-motion * { animation:none!important; transition:none!important; }
}
