/* Meet Nana V! floating panel (her room stays visible behind it) */
.mv-root{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));background:rgba(42,20,80,.22)}
.mv-root[hidden]{display:none}
.mv-panel{position:relative;width:min(600px,100%);max-height:min(88vh,860px);display:flex;flex-direction:column;background:#fffaf0;border-radius:28px;border:3px solid #d9c8f5;box-shadow:0 18px 50px rgba(60,20,110,.35);overflow:hidden;font-family:Poppins,system-ui,sans-serif;color:#2a2350}
@supports (height:100dvh){.mv-panel{max-height:min(88dvh,860px)}}
.mv-panel.wide{width:min(900px,100%)}
.mv-top{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;padding:10px;z-index:3;pointer-events:none}
.mv-top>*{pointer-events:auto}
.mv-icon{width:44px;height:44px;border-radius:50%;border:2px solid #d9c8f5;background:#fffaf0;display:grid;place-items:center;padding:0;cursor:pointer;box-shadow:0 2px 8px rgba(91,33,182,.12)}
.mv-icon svg{width:20px;height:20px;fill:none;stroke:#5b21b6;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.mv-icon.off{visibility:hidden}
body.mv-open #pan-ui,body.mv-open #pan-v{display:none!important}
.mv-icon:hover{background:#fff4e2}
.mv-icon:focus-visible,.mv-btn:focus-visible,.mv-card:focus-visible,.mv-word:focus-visible{outline:3px solid #1f6dff;outline-offset:3px}
.mv-body{overflow-y:auto;overscroll-behavior:contain;padding:18px 22px 24px}
.mv-sec{position:relative;text-align:center}
.mv-sec h2,.mv-end h2{margin:22px 50px 12px;font:700 clamp(24px,4.4vw,34px)/1.15 Poppins,system-ui,sans-serif;color:#5b21b6}
.mv-sec h2:focus{outline:none}
.mv-text p{margin:0 0 10px;font:600 clamp(17px,2.6vw,20px)/1.5 Poppins,system-ui,sans-serif;color:#3b3363}
.mv-you{font:800 clamp(30px,6vw,42px)/1.1 Poppins,system-ui,sans-serif!important;color:#ff4f8b!important;margin:6px 0 14px!important}
.mv-btn{display:inline-block;margin:10px auto 4px;border:2px solid #d9c8f5;border-radius:999px;background:#fffaf0;color:#4b3a8c;font:700 clamp(17px,2.6vw,20px)/1.1 Poppins,system-ui,sans-serif;padding:15px 28px;min-height:54px;cursor:pointer;box-shadow:0 3px 10px rgba(91,33,182,.16)}
.mv-btn:hover{background:#fff4e2;border-color:#c9b2f0}
.mv-btn.go{background:linear-gradient(180deg,#fff7d6,#ffeaa6);border-color:#f2cf5b;color:#5b21b6}
.mv-voice{position:absolute;right:0;top:64px}
/* twinkly stars */
.mv-twinkle{position:absolute;font-size:16px;color:#ffc61a;opacity:.0;animation:mv-tw 2.4s ease-in-out infinite;pointer-events:none}
.mv-twinkle:nth-child(3n){color:#ff7ac2}.mv-twinkle:nth-child(3n+1){color:#b06cff}
@keyframes mv-tw{0%,100%{opacity:0;transform:scale(.6)}50%{opacity:.9;transform:scale(1.1)}}
/* favorite cards */
.mv-intro p{margin-bottom:4px}
.mv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px auto 10px;max-width:640px}
.mv-card{position:relative;border:0;background:transparent;padding:0;cursor:pointer;perspective:900px;aspect-ratio:3/4.3;min-height:220px;-webkit-tap-highlight-color:transparent}
.mv-inner{position:absolute;inset:0;transition:transform .55s cubic-bezier(.3,1.3,.5,1);transform-style:preserve-3d}
.mv-card.flipped .mv-inner{transform:rotateY(180deg)}
.mv-face{position:absolute;inset:0;border-radius:20px;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px 10px;box-shadow:0 4px 12px rgba(91,33,182,.16)}
.mv-front{background:linear-gradient(180deg,var(--cc),#fffaf0 92%);border:3px solid #fff}
.mv-backside{transform:rotateY(180deg);background:#fff;border:3px solid var(--cc);justify-content:center;gap:5px;padding:10px 8px;overflow:hidden}
.mv-pic{font-size:clamp(44px,7vw,60px);line-height:1;filter:drop-shadow(0 3px 3px rgba(0,0,0,.12))}
.mv-card:not(.flipped):hover .mv-pic{animation:mv-bob .6s ease-in-out}
@keyframes mv-bob{0%,100%{transform:none}50%{transform:translateY(-6px) rotate(-4deg)}}
.mv-q{font:700 clamp(13px,1.7vw,15px)/1.3 Poppins,system-ui,sans-serif;color:#2a2350}
.mv-a{font:800 clamp(16px,2.1vw,19px)/1.15 Poppins,system-ui,sans-serif;color:#5b21b6}
.mv-t{font:600 clamp(12px,1.55vw,14px)/1.35 Poppins,system-ui,sans-serif;color:#3b3363}
.mv-spark{position:absolute;left:50%;top:50%;font-size:18px;pointer-events:none;z-index:4;animation:mv-spark .85s ease-out forwards}
@keyframes mv-spark{from{transform:translate(-50%,-50%) scale(.4);opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.2);opacity:0}}
/* Sprummer: flower and sun bounce together, the word sparkles */
.mv-duo{display:flex;gap:6px;font-size:30px;line-height:1}
.mv-card.sprummer.flipped .mv-flower{animation:mv-hop .6s ease-in-out 3}
.mv-card.sprummer.flipped .mv-sun{animation:mv-hop .6s ease-in-out .3s 3}
@keyframes mv-hop{0%,100%{transform:none}50%{transform:translateY(-10px) rotate(8deg)}}
.mv-card.sprummer .mv-a{background:linear-gradient(90deg,#ff7ac2,#ffb02e,#4cc36b);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:clamp(18px,2.4vw,22px)}
.mv-card.sprummer.flipped .mv-a{animation:mv-pop .7s cubic-bezier(.3,1.6,.5,1)}
@keyframes mv-pop{0%{transform:scale(.4)}100%{transform:scale(1)}}
.mv-card.sprummer .mv-t{font-size:clamp(11px,1.4vw,13px)}
/* silly secret */
.mv-purple{position:relative;border-radius:24px;background:linear-gradient(180deg,#8b4fe0,#6a2fc4);padding:20px 18px 18px;margin-top:40px;color:#fff;overflow:hidden}
.mv-purple h2{color:#fff;margin-top:6px}
.mv-purple .mv-text p{color:#fff}
.mv-bigq{font:800 76px/1 Poppins,system-ui,sans-serif;color:#ffd23f;text-shadow:0 4px 0 rgba(0,0,0,.18);animation:mv-bob 2.2s ease-in-out infinite}
.mv-words{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:8px 0 14px}
.mv-word{border:3px solid #fff;border-radius:18px;background:#ffd23f;color:#5b21b6;font:800 clamp(22px,4.4vw,30px)/1 Poppins,system-ui,sans-serif;padding:12px 18px;cursor:pointer;box-shadow:0 4px 0 rgba(0,0,0,.18);opacity:0;animation-fill-mode:both;animation-duration:.8s}
.mv-word.whoosh{background:#7fd3ff}.mv-word.plop{background:#ff9ccc}
.mv-word.boing{animation-name:mv-boing}.mv-word.whoosh{animation-name:mv-whoosh}.mv-word.plop{animation-name:mv-plop}
.mv-word.again.boing{animation:mv-boing .7s both}.mv-word.again.whoosh{animation:mv-whoosh .6s both}.mv-word.again.plop{animation:mv-plop .7s both}
@keyframes mv-boing{0%{opacity:0;transform:translateY(-60px) scale(.6)}40%{opacity:1;transform:translateY(0) scale(1.15,.85)}60%{transform:translateY(-18px) scale(.95,1.05)}80%{transform:translateY(0) scale(1.05,.95)}100%{opacity:1;transform:none}}
@keyframes mv-whoosh{0%{opacity:0;transform:translateX(-160px) skewX(-20deg)}70%{opacity:1;transform:translateX(12px) skewX(8deg)}100%{opacity:1;transform:none}}
@keyframes mv-plop{0%{opacity:0;transform:translateY(-80px)}55%{opacity:1;transform:translateY(0) scale(1.1,.85)}70%{transform:rotate(-5deg)}85%{transform:rotate(4deg)}100%{opacity:1;transform:none}}
.mv-end{position:relative;margin-top:22px;padding:6px 6px 4px;border-radius:24px;background:linear-gradient(180deg,#fff2c4,#fffaf0)}
.mv-sig{font-weight:800!important;color:#ff4f8b!important}
/* calm motion */
html.calm .mv-twinkle,html.calm .mv-bigq,html.calm .mv-pic,html.calm .mv-flower,html.calm .mv-sun,html.calm .mv-a{animation:none!important}
html.calm .mv-twinkle{opacity:.7}
html.calm .mv-word{animation:none!important;opacity:1}
html.calm .mv-inner{transition:none}
@media (max-width:760px){.mv-grid{grid-template-columns:repeat(2,1fr);gap:12px}.mv-card{min-height:236px}.mv-t{font-size:12.5px}}
@media (max-width:420px){.mv-body{padding:14px 14px 20px}.mv-sec h2,.mv-end h2{margin:18px 46px 10px}}

/* her illustrated flip cards (question on the front, answer on the back) */
.mv-card.mv-art{aspect-ratio:560/995;min-height:0}
.mv-art .mv-face{padding:0;background:none;border:0;box-shadow:none;overflow:visible}
.mv-art .mv-face img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 4px 8px rgba(91,33,182,.18));-webkit-user-drag:none;user-select:none}
.mv-art:not(.flipped):hover .mv-inner{transform:translateY(-4px) rotate(-1deg)}
.mv-art.flipped .mv-inner{transform:rotateY(180deg)}
.mv-one{display:flex;justify-content:center;margin:10px 0 6px}
.mv-art.big{width:min(340px,80vw)}
@media (max-width:760px){.mv-card.mv-art{min-height:0}}
