.pageHero img { animation: kdMagicBannerDrift 18s ease-in-out infinite alternate; }
.pageHero img.kdMagicBannerSwap { animation: kdMagicBannerFade .72s ease both, kdMagicBannerDrift 18s ease-in-out infinite alternate; }
@keyframes kdMagicBannerDrift {
  from { transform:scale(1.015) translate3d(-.25%,0,0); }
  to { transform:scale(1.045) translate3d(.25%,0,0); }
}
@keyframes kdMagicBannerFade { from { opacity:.58; } to { opacity:1; } }
.kdRoseMagicLauncher {
  display:block; width:max-content; max-width:90%; margin:.45rem auto 0; padding:.1rem .25rem;
  border:0; border-bottom:1px dotted currentColor; background:transparent; color:inherit;
  opacity:.34; font:inherit; font-size:.62rem; line-height:1.3; cursor:pointer;
  transition:opacity .2s ease, color .2s ease;
}
.kdRoseMagicLauncher:hover,.kdRoseMagicLauncher:focus-visible { opacity:.95; color:#8f2947; }
.kdRoseMagicLauncher:focus-visible { outline:2px solid #8f2947; outline-offset:3px; }
.kdRoseMagicClue {
  display:inline-block; margin:.45rem .25rem 0; padding:.05rem .22rem; border-radius:50%;
  color:#7a4a50; opacity:.48; font-size:.66rem; line-height:1.25; text-decoration:none;
  cursor:pointer; transition:opacity .2s ease, transform .2s ease;
}
.kdRoseMagicClue:hover,.kdRoseMagicClue:focus-visible { opacity:1; transform:rotate(-12deg) scale(1.2); }
.kdRoseMagicDialog {
  width:min(25rem,calc(100vw - 2rem)); max-width:none; max-height:calc(100dvh - 2rem);
  padding:1.5rem; border:1px solid rgba(115,66,70,.28); border-radius:1.1rem;
  background:linear-gradient(145deg,#fffaf3,#f7eee7); color:#342a29;
  box-shadow:0 18px 65px rgba(31,18,16,.28); font:inherit;
}
.kdRoseMagicDialog::backdrop { background:rgba(34,22,24,.35); backdrop-filter:blur(2px); }
.kdRoseMagicClose { float:right; border:0; background:none; color:#65474a; font-size:1.5rem; cursor:pointer; }
.kdRoseMagicMark { color:#8f2947; font-size:1.3rem; }
.kdRoseMagicEyebrow { margin:.25rem 0; color:#855b51; font-size:.73rem; letter-spacing:.08em; text-transform:uppercase; }
.kdRoseMagicDialog h2 { margin:.25rem 0 .6rem; color:#70243d; font-size:1.55rem; }
.kdRoseMagicCopy { margin:.4rem 0 1rem; line-height:1.5; }
.kdRoseMagicForm label { display:block; margin-bottom:.35rem; font-weight:650; }
.kdRoseMagicInputRow { display:flex; gap:.45rem; }
.kdRoseMagicInputRow input { flex:1; min-width:0; padding:.65rem .7rem; border:1px solid #c9b6ad; border-radius:.5rem; background:white; color:#342a29; font:inherit; }
.kdRoseMagicInputRow button,.kdRoseMagicAction { padding:.58rem .8rem; border:1px solid #70243d; border-radius:.5rem; background:#70243d; color:white; font:inherit; cursor:pointer; }
.kdRoseMagicInputRow button:hover,.kdRoseMagicAction:hover { background:#8f2947; }
.kdRoseMagicStatus { min-height:1.5rem; margin:.65rem 0 .4rem; color:#70243d; font-weight:600; }
.kdRoseMagicActions { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.kdRoseMagicUnlocked { margin:.25rem 0; color:#66514a; font-size:.78rem; }
.kdRoseMagicFootnote { margin:.9rem 0 0; color:#796c66; font-size:.75rem; }
.kdRoseMagicToast {
  position:fixed; z-index:10002; left:50%; bottom:1rem; transform:translate(-50%,.6rem);
  max-width:calc(100vw - 2rem); padding:.6rem .85rem; border:1px solid #e5d3c2; border-radius:999px;
  background:#fffaf3; color:#563540; box-shadow:0 6px 24px rgba(0,0,0,.16);
  opacity:0; pointer-events:none; transition:opacity .2s ease, transform .2s ease; font:inherit; font-size:.88rem;
}
.kdRoseMagicToast.isVisible { opacity:1; transform:translate(-50%,0); }
.kdRoseCalmLayer { position:fixed; z-index:9998; inset:0; overflow:hidden; pointer-events:none; }
.kdRoseCalmLayer span {
  position:absolute; top:-2rem; opacity:.78; font-size:1.2rem;
  animation:kdRosePetalFall 8s linear both;
}
@keyframes kdRosePetalFall { to { transform:translate3d(var(--drift),110vh,0) rotate(460deg); opacity:.12; } }
.kdRoseSpider {
  position:fixed; z-index:10001; bottom:2.9rem; left:5%; padding:.2rem .3rem;
  border:0; border-radius:50%; background:rgba(255,250,243,.8); font-size:1.05rem;
  cursor:pointer; filter:drop-shadow(0 1px 2px rgba(0,0,0,.25)); animation:kdRoseSpiderBob .32s ease-in-out infinite alternate;
}
@keyframes kdRoseSpiderBob { to { transform:translateY(-4px) rotate(8deg); } }
.kdRosePaw,.kdRoseClickStar { position:fixed; z-index:9997; pointer-events:none; animation:kdRoseTwinkle 1s ease-out both; }
.kdRosePaw { font-size:.8rem; }
.kdRoseClickStar { color:#b78948; font-size:1.1rem; }
@keyframes kdRoseTwinkle { to { opacity:0; transform:translateY(-18px) scale(.65) rotate(35deg); } }
.kdRoseBloomLayer { position:fixed; z-index:9999; inset:0; overflow:hidden; pointer-events:none; }
.kdRoseBloomPetal {
  position:absolute; font-size:clamp(1.5rem,4vw,2.8rem);
  filter:drop-shadow(0 2px 3px rgba(80,24,42,.35));
  animation:kdRoseBloom 3.2s cubic-bezier(.18,.7,.32,1) both;
}
@keyframes kdRoseBloom {
  0% { opacity:0; transform:translateY(12px) scale(.2) rotate(-30deg); }
  28% { opacity:1; transform:translateY(-8px) scale(1.1) rotate(12deg); }
  100% { opacity:0; transform:translateY(-48px) scale(.78) rotate(38deg); }
}
@media (prefers-reduced-motion:reduce) {
  .pageHero img,.pageHero img.kdMagicBannerSwap,.kdRoseSpider,.kdRoseCalmLayer span,.kdRosePaw,.kdRoseClickStar,.kdRoseBloomPetal { animation:none!important; }
  .kdRoseMagicLauncher,.kdRoseMagicClue,.kdRoseMagicToast { transition:none; }
}
@media (max-width:540px) { .kdRoseMagicDialog { padding:1.1rem; } .kdRoseMagicInputRow button { padding:.55rem .62rem; } }