.upload-consent{display:flex;align-items:flex-start;gap:9px;text-align:left;font:12px/1.45 'DM Sans',sans-serif;color:#655579;margin:0 0 12px}.upload-consent input{width:19px;height:19px;flex-shrink:0;accent-color:#7935e8;margin-top:2px}.upload-consent a{color:#58319a;text-decoration:underline}
#generation-step{display:none;position:absolute;inset:5px 0 0;background:#faf7ff;z-index:8;overflow:hidden;color:#241b53;font-family:'DM Sans',sans-serif}body.show-generation #generation-step{display:flex;flex-direction:column}.gen-top{padding:24px 24px 18px;background:#f1eafb;z-index:2}.gen-top h2{font-size:24px;margin:0 0 12px}.gen-meta{display:flex;justify-content:space-between;font-size:14px;color:#68577d;margin-bottom:10px}.gen-track{height:7px;background:#dfd3ef;border-radius:8px;overflow:hidden}.gen-track i{display:block;height:100%;width:0;background:#8b45ed;transition:width 1s linear}.gen-stage{padding:22px;text-align:center;overflow:auto;flex:1}.gen-pair{display:flex;justify-content:center;gap:14px;margin:12px auto 20px}.gen-pair img{width:90px;height:110px;object-fit:cover;border:5px solid white;box-shadow:0 7px 25px #51357620;border-radius:14px;animation:floatPhoto 3s ease-in-out infinite}.gen-pair img:nth-child(2){animation-delay:1s}.gen-stage h3{font-size:24px;margin:12px 0}.gen-stage p{font-size:16px;color:#68577d;line-height:1.5}.song-panel{position:absolute;bottom:0;left:0;right:0;max-height:calc(100% - 145px);overflow:auto;padding:24px;background:#fffafd;border:1px solid #dfd1ee;border-radius:26px 26px 0 0;box-shadow:0 -10px 45px #39255e18;z-index:3;animation:sheetIn .4s ease-out}.song-panel[hidden]{display:none}.song-panel h3{font-size:26px;line-height:1.15;margin:20px 0 12px}.song-panel p{font-size:16px;line-height:1.45;color:#72607e}.song-panel .btn{margin-top:18px;font-size:16px;padding:16px;min-height:50px}.song-close{position:absolute;right:16px;top:12px;border:0;background:#eee7f5;border-radius:50%;width:34px;height:34px;font-size:23px;color:#604879;cursor:pointer}.song-small{border:0;background:none;color:#694d87;padding:12px;font:inherit;cursor:pointer}.song-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.song-options button{padding:12px 15px;border:1px solid #ded0ed;background:white;border-radius:13px;color:#493264;font:600 16px 'DM Sans',sans-serif;cursor:pointer}.song-options button[aria-pressed=true]{background:#e9dcfa;border-color:#8a4cdb}.song-panel input,.song-panel textarea{box-sizing:border-box;width:100%;padding:15px;border:1px solid #cbb7df;border-radius:12px;background:white;font:18px 'DM Sans',sans-serif;color:#241b53;margin-top:12px}.song-panel textarea{min-height:90px;resize:vertical}.song-error{color:#a42f45!important}.song-note{font-size:13px!important}.song-ribbon{background:#eee3fa;border:1px solid #d9c5f0;color:#57317b;border-radius:16px;padding:16px;font:600 16px 'DM Sans',sans-serif;cursor:pointer;width:100%;margin-top:20px}.gen-results{display:flex;gap:10px;overflow:auto}.gen-results img{width:44%;border-radius:14px}.record-icon{margin:6px auto 0;width:64px;height:64px;display:grid;place-items:center;border-radius:50%;background:repeating-radial-gradient(#35224d 0 4px,#4b3269 5px 6px);color:#ead6ff;font-size:30px}@keyframes floatPhoto{50%{transform:translateY(-6px) rotate(2deg)}}@keyframes sheetIn{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@media(prefers-reduced-motion:reduce){.gen-pair img,.song-panel{animation:none}}
body[data-cta-mode="ready"] .upload-footer:has(.btn:disabled){pointer-events:auto}
/* A steady studio header and a fixed-height music sheet. */
.gen-top{position:relative;padding:22px 22px 20px 94px;min-height:134px;box-sizing:border-box;background:linear-gradient(130deg,#efe3ff,#faf7ff);border-bottom:1px solid #e8dcf6}.gen-top h2{font:800 italic 23px/1.15 'Exo 2','DM Sans',sans-serif;margin:0 0 12px;max-width:260px}#gen-mascot{position:absolute;left:10px;top:20px;width:78px;height:82px}.gen-meta{font-size:12px;gap:8px}.gen-track{height:9px;background:#e3d7f0}.gen-track i{position:relative;background:linear-gradient(90deg,#b38bff,#7e30e7);border-radius:8px;overflow:hidden}.gen-track i:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,#fff9,transparent);animation:loadingSweep 2s linear infinite}.gen-stage{padding:28px 24px}.gen-pair{margin:12px auto 28px;gap:0}.gen-pair img{width:116px;height:142px;object-fit:contain;background:#e8dcf5;border-width:6px;border-radius:12px;transform:rotate(-8deg)}.gen-pair img:nth-child(2){transform:rotate(8deg);margin-left:12px}.gen-stage h3{font:800 italic 28px/1.15 'Exo 2',sans-serif}.gen-stage p{font-size:16px}.song-open .gen-stage{visibility:hidden}.song-panel{top:154px;bottom:0;height:auto;max-height:none;box-sizing:border-box;padding:28px 22px 24px;display:flex;flex-direction:column;align-items:stretch;background:linear-gradient(155deg,#fffafd 55%,#f0e6ff);border-radius:26px 26px 0 0;animation:sheetIn .35s ease-out;scrollbar-width:thin}.song-panel:before{content:'';position:absolute;top:9px;left:calc(50% - 20px);height:4px;width:40px;border-radius:4px;background:#d8cbe8}.song-panel[hidden]{display:none}.song-panel h3{font:800 italic 29px/1.12 'Exo 2',sans-serif;margin:24px 0 14px}.song-panel p{margin:4px 0 12px;font-size:16px}.song-panel .btn{margin-top:auto;flex-shrink:0;box-shadow:0 6px 20px #8a3ae721}.song-panel .song-small{flex-shrink:0;min-height:44px}.song-panel #song-back{align-self:flex-start;margin:-4px 0 0;padding:4px 0}.song-question-nav{display:flex;align-items:center;gap:16px;flex:none;padding-right:44px}
.song-panel .song-question-nav #song-back{margin:0}.song-panel .song-options{margin:8px 0 24px}.song-panel input,.song-panel textarea{margin-bottom:24px;flex-shrink:0}.song-panel .song-options.kind{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.song-options.kind button{padding:20px 6px;display:flex;flex-direction:column;align-items:center;gap:12px;border-radius:20px;background:#fff;box-shadow:0 5px 15px #57317b08}.animal-choice{font-size:42px;line-height:1.2}.song-options.style{display:grid;grid-template-columns:1fr 1fr}.song-options.style button{text-align:left;padding:13px}.song-options.style small{display:block;font-size:12px;font-weight:400;margin-top:5px;color:#786386}.record-icon{position:relative;border-radius:20px;width:140px;height:140px;margin:12px auto 4px;background:none;flex-shrink:0}.record-icon:before{content:'';position:absolute;width:120px;height:120px;right:-30px;top:10px;border-radius:50%;background:repeating-radial-gradient(#302040 0 3px,#493257 4px 5px);animation:recordSpin 9s linear infinite}.record-icon img{position:relative;width:140px;height:140px;object-fit:cover;border-radius:18px;box-shadow:0 8px 24px #30174725}.record-icon span{position:absolute;bottom:8px;right:8px;width:35px;height:35px;display:grid;place-items:center;border-radius:50%;font-size:21px;background:#f6ebff;color:#7133ab}.song-panel[data-step="-1"] h3,.song-panel[data-step="-1"] p{text-align:center}.song-panel[data-step="-1"] .song-note{display:none}.song-panel .song-error{order:2;font-size:14px;margin:5px 0}.song-panel .song-options.traits button{font-size:15px;padding:10px 12px}@keyframes loadingSweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes recordSpin{to{transform:rotate(360deg)}}@media(max-height:680px){.song-panel{top:130px;padding:22px 18px 12px}.gen-top{min-height:118px;padding-top:16px}.record-icon,.record-icon img{width:92px;height:92px}.record-icon:before{width:80px;height:80px}.song-panel h3{font-size:24px;margin:16px 0 10px}.song-panel p{font-size:14px}.song-options.kind button{padding:12px 4px}.song-panel .btn{margin-top:14px}.song-panel .song-options{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.gen-track i:after,.record-icon:before{animation:none}}
/* Full-width status, original camera mascot, and music invitation. */
.gen-top{padding:18px 22px 20px;min-height:145px}.gen-top h2{min-height:48px;display:flex;align-items:center;margin:0 0 12px 57px;max-width:none;font-size:22px}#gen-mascot{left:22px;top:14px;width:44px;height:52px;display:grid;place-items:center}#gen-mascot img{width:32px;height:44px;object-fit:contain}#gen-mascot:after{content:'';position:absolute;inset:0;border:2px solid #d6bdf0;border-bottom-color:#7c35d9;border-radius:50%;animation:recordSpin 2s linear infinite}.gen-meta{align-items:center;font-size:15px;margin-bottom:10px}#gen-clock{font-size:21px;font-weight:800;color:#54248d;min-width:47px;text-align:right}.song-panel{background:radial-gradient(ellipse at 50% 15%,#eee0ff,transparent 60%),linear-gradient(150deg,#e4cff9,#f1e8ff 65%,#dfcbf8);border-color:#c4a4e9;box-shadow:0 -12px 38px #4b267c25}.song-panel .song-options.kind{grid-template-columns:repeat(2,1fr)}.song-panel h3,.song-panel>p,.song-panel>.song-options,.song-panel>input,.song-panel>textarea{animation:songContentIn .55s ease both}.song-panel[data-step="-1"] h3{animation-delay:.25s;font-size:27px}.song-panel[data-step="-1"]>p{animation-delay:.6s}.song-panel[data-step="-1"]>.btn,.song-panel[data-step="-1"]>.song-small{animation:songContentIn .5s .95s ease both}.record-icon{animation:songContentIn .6s ease both}.music-note{position:absolute;font-style:normal;font-weight:700;color:#7b38c3;font-size:32px;pointer-events:none;animation:noteFlight 3s ease-in-out infinite}.music-note.n1{left:-25px;top:55px}.music-note.n2{right:-38px;top:30px;animation-delay:1s}.music-note.n3{left:10px;top:0;animation-delay:2s}.song-panel .song-close{background:#fff9}.song-panel .record-icon span{display:none}@keyframes noteFlight{0%{opacity:0;transform:translateY(12px) rotate(-12deg)}35%{opacity:.8}100%{opacity:0;transform:translateY(-45px) rotate(14deg)}}@keyframes songContentIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-height:680px){.gen-top{min-height:130px;padding:10px 18px}.gen-top h2{font-size:19px;margin-bottom:4px}.gen-meta{font-size:14px}.song-panel{top:140px}.song-panel[data-step="-1"] h3{font-size:23px}}@media(prefers-reduced-motion:reduce){#gen-mascot:after,.music-note,.song-panel>*{animation:none!important}}
.song-memory-accent{position:relative;display:inline-block;white-space:nowrap}
.song-memory-accent::after{
  content:'';
  position:absolute;
  inset:auto -2px -.28em;
  height:.38em;
  pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 10' preserveAspectRatio='none'%3E%3Cpath d='M3 7 C34 2 56 2 87 5 S141 9 177 3' fill='none' stroke='%23f4c542' stroke-width='3.5' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}

/* Original Flat4Pet airplane, with a musical trail. */
.song-panel .record-icon{width:240px;height:158px;margin:0 auto 4px;background:none;border-radius:0;overflow:visible;isolation:isolate}
.song-panel .record-icon:before{display:none}
.song-plane{position:absolute;inset:0;z-index:1}.song-plane svg{width:100%;height:100%}
.plane-note{position:absolute;left:65px;top:85px;font:700 28px/1 Georgia,serif;color:#7438bd;opacity:0;pointer-events:none;animation:planeMusic 4.2s linear infinite;z-index:0}
.plane-note.p2{animation-delay:1.4s}
.plane-note.p3{animation-delay:2.8s}
@keyframes planeMusic{
  0%{transform:translate(0,0);opacity:0}
  22%,68%{opacity:.85}
  100%{transform:translate(-70px,-28px);opacity:0}
}
.song-panel .song-options.traits{display:grid;grid-template-columns:1fr;gap:8px;flex-shrink:0}
.song-panel .song-options.traits button{width:100%;min-height:49px;text-align:left;padding:12px 16px;display:flex;align-items:center;border:2px solid #ded0ed;box-sizing:border-box;font-size:16px}
.song-options.traits button:after{content:'';width:19px;height:19px;border:1px solid #c5b0da;border-radius:50%;margin-left:auto;flex-shrink:0}
.song-options.traits button[aria-pressed=true]:after{content:'✓';background:#8140dc;color:white;text-align:center;line-height:19px;border-color:#8140dc}
@media(max-height:680px){.song-panel .record-icon{width:190px;height:112px}.plane-note{left:50px;top:65px;font-size:23px}}
@media(prefers-reduced-motion:reduce){.plane-note{animation:none}.plane-note.p1{transform:translate(-36px,-14px);opacity:.85}}
.song-panel .song-options.traits{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:14px}
.song-panel .song-options.traits button{min-height:44px;padding:10px 8px;font-size:14px;white-space:nowrap}
.song-options.traits button:after{width:15px;height:15px;line-height:15px}
.song-panel[data-step="2"] h3{margin:12px 0 6px;font-size:26px}
.song-panel[data-step="2"]>p{font-size:14px;margin-bottom:6px}
@media(max-height:680px){.song-panel[data-step="2"]{padding:18px 14px 12px}.song-panel[data-step="2"] h3{font-size:21px;margin:4px 0}.song-panel[data-step="2"] #song-back{min-height:30px}.song-panel .song-options.traits{gap:5px;margin:4px 0 8px}.song-panel .song-options.traits button{min-height:34px;padding:6px;font-size:12px}.song-panel[data-step="2"] .btn{min-height:42px;padding:10px;margin-top:auto}}
/* Neutral sheet and clear, stable selection states. */
.song-panel{background:#f8f7f5;border-color:#ddd9e2;box-shadow:0 -12px 38px #241b5330}
.song-panel:before{background:#cbc7d1}
.song-panel .song-close{background:#eae7ee;color:#45385c}
.song-panel p,.song-panel .song-small{color:#635b70}
.song-panel .song-options button{border:2px solid #e1dde6;color:#342b46;background:#fff;transition:background .18s,color .18s,border-color .18s;box-sizing:border-box}
.song-panel .song-options button[aria-pressed=true]{background:#32244f;color:#fff;border-color:#32244f;box-shadow:0 3px 10px #32244f18}
.song-panel .song-options button[aria-pressed=true] small{color:#e5dcef}
.song-panel .song-options.traits button[aria-pressed=true]:after{background:#fff;color:#32244f;border-color:#fff;line-height:15px}
.song-panel .song-options.style button{font-size:17px;padding:13px 12px}
.song-panel .song-options.style small{font-size:13px;color:#736a7d}
.song-panel .song-options.kind button{font-size:18px}
.song-panel .song-options.traits button{font-size:15px}
.song-panel input,.song-panel textarea{border-color:#d8d2df;font-size:18px}
@media(max-height:680px){.song-panel .song-options.traits button{font-size:12px}.song-panel .song-options.style button{font-size:15px;padding:10px}.song-panel .song-options.style small{font-size:12px}}
/* Independent generation statuses, kept above the song sheet. */
.song-progress[hidden]{display:none}
.song-progress{margin-top:16px;padding-top:14px;border-top:1px solid #dcd2e8;animation:sheetIn .3s ease-out}
.song-progress .gen-meta{margin-bottom:8px}
.gen-meta>span:first-child{font-weight:700;color:#34254f;font-size:17px}
#song-percent{font-size:21px;font-weight:800;color:#54248d;min-width:47px;text-align:right}
.song-progress .gen-track i{background:linear-gradient(90deg,#d095e5,#9654c7)}
#generation-step .song-panel{top:calc(var(--generation-header,145px) + 9px)}
@media(max-height:680px){.song-progress{margin-top:9px;padding-top:8px}.song-progress .gen-meta{margin-bottom:5px}.gen-meta>span:first-child{font-size:15px}}

.song-options.kind .animal-choice-art{display:block;width:min(100%,104px);aspect-ratio:1;object-fit:contain}

.song-panel>.song-question-intro{margin:14px 0 8px;font-size:14px;line-height:1.4}

.song-ribbon[hidden]{display:none}
.song-confirmation{
  position:fixed;
  inset:0;
  margin:auto;
  max-height:calc(100% - 32px);
  overflow:auto;
  box-sizing:border-box;
  width:min(calc(100% - 40px),360px);
  padding:26px;
  border:1px solid #e7d9f6;
  border-radius:24px;
  background:#fff;
  color:#241b53;
  text-align:center;
  box-shadow:0 18px 64px #23163a38;
}
.song-confirmation::backdrop{background:#21163959}
.song-confirmation-icon{
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  margin:0 auto 14px;
  border-radius:16px;
  background:#efe3ff;
  color:#7132cb;
  font-size:26px;
}
.song-confirmation h3{margin:0;font:800 italic 25px/1.15 'Exo 2','DM Sans',sans-serif}
.song-confirmation p{margin:12px 0 20px;color:#61566d;font:400 16px/1.5 'DM Sans',sans-serif}
.song-confirmation .btn{width:100%}

.gen-label{display:inline-flex;align-items:center;gap:8px}
.gen-label svg{width:22px;height:22px;flex:none;color:#7438bd}

.gen-title{display:grid}
.gen-title>span{grid-area:1/1}
.gen-title>span[aria-hidden="true"]{visibility:hidden}
.gen-title>span{position:relative}
.gen-title>span:has(.gen-title-typing){color:transparent}
.gen-title-typing{position:absolute;inset:0;color:#241b53}
.gen-title>span[aria-hidden="true"] .gen-title-typing{visibility:hidden}

.gen-status-message[hidden],.gen-pair:empty{display:none}
#gen-clock{font-variant-numeric:tabular-nums}
#generation-step .gen-track i{transition:width .5s ease-out}

#create-preview[aria-busy="true"]{display:flex;align-items:center;justify-content:center;gap:9px;opacity:1;cursor:wait}
.quiz-submit-spinner{width:16px;height:16px;flex:none;border:2px solid #ffffff66;border-top-color:#fff;border-radius:50%;animation:quizSubmitSpin .7s linear infinite}
@keyframes quizSubmitSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.quiz-submit-spinner{animation:none}}

/* Production defaults and a stable flow on short screens. */
body:not(.quiz-lab-enabled) .quiz-lab{display:none}
#gen-mascot img,.animal-choice-art{object-fit:contain}
#gen-mascot{pointer-events:none}
.gen-has-results .song-panel{--generation-header:0px}
#gen-mascot:has(img[hidden]),.song-ribbon[hidden],.song-panel[hidden]{display:none}
body:not(.quiz-lab-enabled) .upload-footer{visibility:visible!important}
.quiz-privacy{position:fixed;z-index:150;inset:auto 12px max(12px,env(safe-area-inset-bottom));margin:auto;width:min(400px,calc(100% - 24px));padding:14px 16px;border-radius:16px;background:#fff;color:#312251;box-shadow:0 4px 30px #21143b38;font:600 14px/1.4 'DM Sans',sans-serif}
.quiz-privacy p{margin:0 0 8px}
.quiz-privacy button,.quiz-privacy-settings{border:0;background:transparent;color:#6230a7;font:inherit;cursor:pointer;padding:8px 10px}
.quiz-privacy button:first-of-type{background:#f1e5ff;border-radius:8px}
.quiz-privacy-settings{display:block;margin:auto;font-size:12px}
.quiz-ready-email{width:min(340px,100%);margin:14px auto 0;text-align:left;color:#503580}
.quiz-ready-email[hidden]{display:none}
.quiz-ready-email summary{cursor:pointer;min-height:36px;padding:6px;text-align:center;font-size:14px;font-weight:700}
.quiz-ready-email form{display:grid;gap:10px;background:#fff;border:1px solid #e6ddf0;padding:12px;border-radius:12px}
.quiz-ready-email label{display:grid;gap:4px;font-size:13px}
.quiz-ready-email input[type=email]{padding:10px;border:1px solid #cdbdde;border-radius:8px;font:inherit;width:100%}
.quiz-ready-email .quiz-mail-optin{display:flex;align-items:center;gap:8px;font-weight:400}
.quiz-ready-email .btn{min-height:42px}
.quiz-ready-email p{margin:0;font-size:13px}
