/* Record component (shared by every screen that mounts mountRecorder). */
.rec{display:flex;flex-direction:column;align-items:center;gap:.2rem;width:100%;max-width:38rem;margin:0 auto;text-align:center}
.rec-q{margin:0 0 1.1rem;font-size:clamp(1.25rem,4.6vw,1.9rem);line-height:1.25;text-shadow:0 2px 12px rgba(0,0,0,.9),0 0 3px rgba(0,0,0,.8)}
.rec-btn{position:relative;width:clamp(128px,36vw,168px);aspect-ratio:1;border-radius:50%;border:0;padding:0;cursor:pointer;color:#fff;background:#2a2566;
  box-shadow:0 0 0 3px rgba(255,236,180,.45),0 0 34px 8px rgba(255,190,90,.45),0 0 90px 26px rgba(160,90,255,.3);
  animation:rec-breathe 3.2s ease-in-out infinite;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.rec-globe{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;pointer-events:none;user-select:none;animation:rec-drift 14s ease-in-out infinite}
@keyframes rec-drift{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.rec-btn::before,.rec-btn::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,220,160,.7);animation:rec-ring 3.2s ease-out infinite;pointer-events:none}
.rec-btn::after{animation-delay:1.6s}
.rec-orb{position:relative;display:flex;align-items:center;justify-content:center}
.rec-orb .rec-btn{z-index:1}
.rec-halo{position:absolute;inset:-18%;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,rgba(255,214,90,.0),rgba(255,214,90,.45),rgba(180,110,255,.5),rgba(80,140,255,.4),rgba(255,90,70,.45),rgba(255,214,90,0));
  filter:blur(14px);animation:rec-spin 9s linear infinite}
/* Small mic badge on the globe; becomes a stop square while recording */
.rec-icon{position:absolute;right:-2%;bottom:-2%;width:30%;height:30%;display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#ffe59a,#f0603a 70%);border:2px solid rgba(255,255,255,.85);box-shadow:0 3px 12px rgba(0,0,0,.55)}
.rec-icon svg{width:58%;height:58%;filter:drop-shadow(0 1px 2px rgba(80,10,40,.6))}
.rec-btn:hover{filter:brightness(1.08)}
.rec-btn:focus-visible{outline:3px solid #fff;outline-offset:6px}
.rec-btn.recording{box-shadow:0 0 0 4px rgba(255,110,110,.8),0 0 40px 12px rgba(232,56,74,.6),0 0 100px 30px rgba(232,56,74,.3);animation:rec-breathe 1.2s ease-in-out infinite}
.rec-btn.recording .rec-icon{background:radial-gradient(circle at 35% 30%,#ff9d8a,#e8384a 70%)}
.rec-btn.recording .rec-icon svg{width:44%;height:44%}
.rec-btn.recording::before,.rec-btn.recording::after{animation-duration:1.4s;border-color:rgba(255,120,120,.8)}
.rec-btn.recording::after{animation-delay:.7s}
@keyframes rec-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes rec-ring{0%{transform:scale(1);opacity:.85}100%{transform:scale(1.65);opacity:0}}
@keyframes rec-spin{to{transform:rotate(360deg)}}
.rec-label{margin:1.7rem 0 0;padding:.3rem 1rem;border-radius:999px;background:rgba(11,11,30,.55);font-size:1.1rem;letter-spacing:.02em;text-shadow:0 1px 4px #000;min-height:1.4em}
.rec-dot{display:inline-block;width:.6em;height:.6em;border-radius:50%;background:#ff4d5e;margin-right:.3em;animation:rec-blink 1s steps(2) infinite;vertical-align:.05em}
@keyframes rec-blink{50%{opacity:.2}}
.rec-live{margin-top:.8rem;width:100%;max-height:26vh;overflow:auto;box-sizing:border-box;padding:.7rem 1rem;border-radius:14px;background:rgba(11,11,30,.72);border:1px solid rgba(243,240,255,.18);font-size:1.05rem;line-height:1.45;text-align:left}
.rec-live .int{opacity:.55}
.rec-live:empty{display:none}
.rec-type{margin-top:.7rem;background:rgba(11,11,30,.55);border:1px solid rgba(243,240,255,.35);color:#f3f0ff;border-radius:999px;padding:.4rem 1rem;font:inherit;font-size:.9rem;cursor:pointer}
.rec-type:hover{background:rgba(11,11,30,.8)}

/* Sheet: typed / edited text and the painted results */
body.rec-open{overflow:hidden}
.rec-sheet{position:fixed;inset:0;z-index:50;background:rgba(6,6,20,.62);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;justify-content:center;align-items:flex-end;animation:rec-fade .25s ease}
.rec-sheet[hidden]{display:none}
@keyframes rec-fade{from{opacity:0}}
.rec-panel{position:relative;width:100%;max-width:62rem;max-height:92vh;max-height:92dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;box-sizing:border-box;padding:1.4rem 1.1rem calc(1.6rem + env(safe-area-inset-bottom));background:rgba(14,13,34,.94);border:1px solid rgba(243,240,255,.16);border-bottom:0;border-radius:20px 20px 0 0;box-shadow:0 -10px 50px rgba(0,0,0,.6);text-align:center;animation:rec-up .35s cubic-bezier(.2,.8,.2,1)}
@keyframes rec-up{from{transform:translateY(40px);opacity:0}}
@media (min-width:700px){.rec-sheet{align-items:center}.rec-panel{border-radius:20px;border-bottom:1px solid rgba(243,240,255,.16);max-height:88vh;padding:1.8rem 2rem 2rem;width:calc(100% - 3rem)}}
.rec-panel h2{font-weight:normal;margin:.2rem 2.2rem .5rem;font-size:1.45rem}
.rec-close{position:absolute;top:.6rem;right:.7rem;width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid rgba(243,240,255,.3);background:rgba(11,11,30,.7);color:#f3f0ff;font-size:1.6rem;line-height:1;cursor:pointer;z-index:2}
.rec-note{margin:0 auto .9rem;max-width:34rem;opacity:.8;line-height:1.45}
.rec-edit{max-width:36rem;margin:0 auto}
.rec-edit textarea{width:100%;box-sizing:border-box;min-height:9.5rem;padding:.8rem;border-radius:12px;border:1px solid #555a7a;background:#15152e;color:#f3f0ff;font:inherit;font-size:1.05rem;line-height:1.5;resize:vertical}
.rec-row{min-height:1.2em;text-align:right;font-size:.8rem;opacity:.6;margin:.2rem 0 .4rem}
.rec-cta{display:inline-block;padding:.75rem 1.6rem;border-radius:999px;border:0;background:linear-gradient(135deg,#ffd36e,#f07a4a);color:#1a0f1e;font:inherit;font-size:1.05rem;text-decoration:none;cursor:pointer;box-shadow:0 4px 18px rgba(240,122,74,.35)}
.rec-cta:disabled{opacity:.55;cursor:wait}
.rec-cta.ghost{background:transparent;color:#f3f0ff;border:1px solid rgba(243,240,255,.55);box-shadow:none}
.rec-err{color:#ff9a9a;min-height:1.2em;margin:.7rem 0 0}
.rec-link{background:none;border:0;color:#c9b8ff;text-decoration:underline;font:inherit;font-size:.95rem;cursor:pointer;padding:.6rem}
.rec-quote{font-style:italic;opacity:.8;max-width:40rem;margin:0 auto .6rem;line-height:1.45}
.rec-status{font-size:.9rem;opacity:.75;margin:.2rem auto 1rem;max-width:36rem;min-height:1.2em}
.rec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem;text-align:left}
@media (min-width:700px){.rec-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1.1rem}}
.rec-tile{margin:0;animation:rec-tilein .5s ease both;animation-delay:calc(var(--i) * 60ms)}
@keyframes rec-tilein{from{opacity:0;transform:translateY(12px)}}
.rec-img{position:relative;display:block;width:100%;aspect-ratio:1;padding:0;border:1px solid rgba(243,240,255,.15);border-radius:12px;overflow:hidden;cursor:zoom-in;background:#1b1a33}
.rec-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.1s ease}
.rec-tile.ready img{opacity:1}
.rec-ph{position:absolute;inset:0;background:linear-gradient(160deg,#2b2a3e 0%,#3b3950 45%,#2a2238 100%)}
.rec-ph .moon{position:absolute;top:14%;left:16%;width:26%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff4c2,#e9c86a 60%,rgba(233,200,106,0) 72%);opacity:.35}
.rec-tile.loading .rec-ph::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.13) 50%,transparent 70%);background-size:250% 100%;animation:rec-shimmer 1.6s linear infinite}
@keyframes rec-shimmer{from{background-position:130% 0}to{background-position:-130% 0}}
.rec-tile.failed .rec-img{cursor:pointer}
.rec-tile.failed .rec-ph::before{content:"Tap to try again";position:absolute;left:0;right:0;bottom:12%;text-align:center;font-size:.85rem;opacity:.7}
.rec-tile.failed .rec-ph{background:radial-gradient(circle at 70% 75%,rgba(240,96,58,.35),transparent 40%),radial-gradient(circle at 25% 80%,rgba(140,90,255,.35),transparent 45%),linear-gradient(160deg,#34334a,#23213a)}
.rec-tile.noimg .rec-img{cursor:default}
.rec-tile.noimg .rec-ph{background:radial-gradient(circle at 70% 75%,rgba(240,96,58,.35),transparent 40%),radial-gradient(circle at 25% 80%,rgba(140,90,255,.35),transparent 45%),linear-gradient(160deg,#34334a,#23213a)}
.rec-tile figcaption{margin:.45rem .15rem 0;font-size:.9rem;line-height:1.35;font-style:italic;opacity:.88}
.rec-save{margin:1.6rem auto .4rem;max-width:34rem}
.rec-small{font-size:.9rem;opacity:.75;margin:.7rem 0 0;line-height:1.4}
.rec-small a{color:#c9b8ff}
.rec-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;align-items:center;margin-top:.6rem}
.rec-lightbox{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.9);display:flex;align-items:center;justify-content:center;padding:1rem;box-sizing:border-box}
.rec-lightbox[hidden]{display:none}
.rec-lightbox figure{margin:0;max-width:min(92vw,86vh);text-align:center}
.rec-lightbox img{width:100%;height:auto;border-radius:10px;display:block}
.rec-lightbox figcaption{margin-top:.8rem;font-style:italic;font-size:1.05rem}
@media (prefers-reduced-motion:reduce){.rec-btn,.rec-btn::before,.rec-btn::after,.rec-halo,.rec-globe{animation:none}}
