/* ===== BedReads AI Studio — extends the dreamy design system in index.html ===== */
.ai-badge{font-size:.58rem;font-weight:800;letter-spacing:.12em;vertical-align:middle;
  background:linear-gradient(135deg,var(--amber-1),var(--pink));color:#3a2300;padding:3px 7px;border-radius:50px;margin-left:6px}

/* Studio landing */
.studio-hero{margin-bottom:24px}
.studio-hero h2{font-family:'Fraunces',serif;font-weight:600;font-size:clamp(1.7rem,5vw,2.3rem)}
.studio-hero p{color:var(--ink-soft);margin-top:4px;max-width:54ch}
.gpu-pill{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-size:.82rem;font-weight:700;
  padding:8px 15px;border-radius:50px;border:1px solid var(--stroke);background:rgba(12,16,42,.6);color:var(--ink-soft)}
.gpu-pill .dot{width:9px;height:9px;border-radius:50%;background:#46d39a;box-shadow:0 0 10px #46d39a}
.gpu-pill .dot.off{background:#7b80b5;box-shadow:none}
.gpu-pill b{color:var(--amber-1)}

/* Create-a-story card */
.creator{background:var(--glass);border:1px solid var(--stroke);border-radius:var(--radius-lg);backdrop-filter:blur(18px);
  padding:clamp(20px,3.5vw,30px);box-shadow:var(--shadow);position:relative;overflow:hidden;margin-bottom:26px}
.creator::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(70% 50% at 100% 0,rgba(246,166,230,.16),transparent 60%)}
.creator h3{font-family:'Fraunces',serif;font-weight:600;font-size:1.35rem;margin-bottom:4px;position:relative}
.creator .sub{color:var(--ink-mute);font-size:.9rem;margin-bottom:20px;position:relative}
.field{margin-bottom:16px;position:relative}
.field label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px}
.field input[type=text],.field input[type=number]{width:100%;background:rgba(10,13,34,.5);border:1px solid var(--stroke);color:var(--ink);
  border-radius:14px;padding:13px 16px;font-family:inherit;font-size:1rem;outline:none;transition:.2s}
.field input:focus{border-color:rgba(255,210,122,.55);background:rgba(10,13,34,.7)}
.opt-row{display:flex;flex-wrap:wrap;gap:9px}
.opt{cursor:pointer;border:1px solid var(--stroke);background:rgba(12,16,42,.5);color:var(--ink-soft);padding:9px 15px;border-radius:50px;
  font-family:inherit;font-weight:600;font-size:.9rem;transition:.2s}
.opt:hover{color:var(--ink);transform:translateY(-2px)}
.opt.sel{background:linear-gradient(135deg,rgba(255,210,122,.22),rgba(246,166,230,.18));border-color:rgba(255,210,122,.5);color:var(--amber-1)}
.creator .go-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:8px;position:relative}
.gen-btn{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,var(--amber-1),var(--amber-2));border:0;color:#3a2300;
  font-family:inherit;font-weight:800;font-size:1.02rem;padding:15px 26px;border-radius:50px;cursor:pointer;box-shadow:0 12px 32px -8px var(--amber-glow);transition:.25s}
.gen-btn:hover{transform:translateY(-2px) scale(1.02)}
.gen-btn:disabled{opacity:.6;cursor:wait;transform:none}
.gen-note{color:var(--ink-mute);font-size:.82rem}

/* Feature tiles */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.feat{position:relative;text-align:left;cursor:pointer;border:1px solid var(--stroke);border-radius:var(--radius);
  padding:20px;background:var(--glass);backdrop-filter:blur(14px);color:var(--ink);font-family:inherit;transition:.3s;overflow:hidden}
.feat:hover{transform:translateY(-5px);border-color:rgba(255,255,255,.25);background:var(--glass-2)}
.feat .fic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.5rem;margin-bottom:14px;
  background:var(--ft,linear-gradient(135deg,#6ee7d3,#5b8cff));box-shadow:0 10px 24px -10px rgba(91,140,255,.7)}
.feat h4{font-weight:700;font-size:1.05rem;margin-bottom:4px}
.feat p{color:var(--ink-soft);font-size:.86rem}
.feat .stat{margin-top:12px;display:inline-flex;align-items:center;gap:7px;font-size:.72rem;font-weight:700;letter-spacing:.04em}
.stat .led{width:8px;height:8px;border-radius:50%}
.stat.live{color:#7ce7b8}.stat.live .led{background:#46d39a;box-shadow:0 0 8px #46d39a}
.stat.gpu{color:#7ce7b8}.stat.gpu .led{background:#46d39a;box-shadow:0 0 8px #46d39a}
.stat.soon{color:var(--ink-mute)}.stat.soon .led{background:#6b6f9e}
.sec-sub{font-size:.82rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-mute);margin:26px 0 14px;padding-left:2px}

/* Reader AI toolbar */
.reader-tools{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:18px;position:relative}
.rtool{display:inline-flex;align-items:center;gap:8px;background:rgba(12,16,42,.55);border:1px solid var(--stroke);color:var(--ink-soft);
  padding:9px 15px;border-radius:50px;cursor:pointer;font-family:inherit;font-weight:600;font-size:.86rem;transition:.2s}
.rtool:hover{background:rgba(20,26,60,.8);color:var(--ink)}
.rtool.on{background:linear-gradient(135deg,rgba(255,210,122,.22),rgba(249,168,38,.16));border-color:rgba(255,210,122,.5);color:var(--amber-1)}
.rtool select{appearance:none;background:transparent;border:0;color:inherit;font-family:inherit;font-weight:600;font-size:.86rem;cursor:pointer;outline:none}
.rtool select option{background:#161a3c;color:#fff}
.voice-warn{align-self:center;max-width:260px;color:var(--amber-1);font-size:.78rem;font-weight:700;line-height:1.25}
.voice-warn:empty{display:none}
.node-illo{width:100%;aspect-ratio:1/1;border-radius:18px;overflow:hidden;margin-bottom:18px;border:1px solid var(--stroke);box-shadow:var(--shadow);position:relative;display:none;background:rgba(10,13,34,.5)}
.node-illo.show{display:block;animation:fadeText .6s ease}
.node-illo img,.node-illo svg{display:block;width:100%;height:100%;object-fit:cover;background:rgba(10,13,34,.35);animation:illoFade .55s ease}
@keyframes illoFade{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}
.node-illo .illo-tag{position:absolute;left:12px;bottom:12px;font-size:.66rem;font-weight:700;letter-spacing:.06em;
  background:rgba(8,11,31,.78);color:#fff;padding:4px 10px;border-radius:50px;backdrop-filter:blur(6px)}
.illo-sample{position:relative;margin:16px 0 0;border-radius:18px;overflow:hidden;border:1px solid var(--stroke);box-shadow:var(--shadow);background:rgba(10,13,34,.45);aspect-ratio:1/1}
.illo-sample img{display:block;width:100%;height:100%;object-fit:cover}
.illo-sample figcaption{position:absolute;left:12px;bottom:12px;font-size:.66rem;font-weight:700;letter-spacing:.06em;
  background:rgba(8,11,31,.64);color:var(--ink-soft);padding:4px 10px;border-radius:50px;backdrop-filter:blur(6px)}

/* Generic studio panel (friend / coach / voice) */
.panel{background:var(--glass);border:1px solid var(--stroke);border-radius:var(--radius-lg);backdrop-filter:blur(18px);
  padding:clamp(20px,3.5vw,30px);box-shadow:var(--shadow);position:relative;overflow:hidden}
.panel-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.panel-head .pic{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-size:1.7rem;flex:none;box-shadow:var(--shadow)}
.panel-head h3{font-family:'Fraunces',serif;font-weight:600;font-size:1.4rem}
.panel-head p{color:var(--ink-mute);font-size:.86rem}

/* Talking friend chat */
.chat{display:flex;flex-direction:column;gap:12px;max-height:46vh;overflow-y:auto;padding:4px 2px;margin-bottom:16px}
.bubble{max-width:82%;padding:13px 17px;border-radius:20px;font-size:1rem;line-height:1.5;animation:fadeText .35s ease}
.bubble.them{align-self:flex-start;background:rgba(185,167,255,.16);border:1px solid rgba(185,167,255,.28);border-bottom-left-radius:6px}
.bubble.me{align-self:flex-end;background:linear-gradient(135deg,rgba(255,210,122,.22),rgba(249,168,38,.14));border:1px solid rgba(255,210,122,.4);border-bottom-right-radius:6px}
.chat-input{display:flex;gap:10px;align-items:center}
.chat-input input{flex:1;background:rgba(10,13,34,.5);border:1px solid var(--stroke);color:var(--ink);border-radius:50px;padding:13px 18px;font-family:inherit;font-size:1rem;outline:none}
.mic-btn{width:50px;height:50px;flex:none;border-radius:50%;border:1px solid var(--stroke);background:var(--glass);color:var(--ink);cursor:pointer;font-size:1.2rem;display:grid;place-items:center;transition:.2s}
.mic-btn:hover{background:var(--glass-2)}
.mic-btn.rec{background:linear-gradient(135deg,#fb7185,#ef4444);border-color:transparent;color:#fff;animation:beat 1.3s infinite}
.send-btn{width:50px;height:50px;flex:none;border-radius:50%;border:0;background:linear-gradient(135deg,var(--amber-1),var(--amber-2));color:#3a2300;cursor:pointer;font-size:1.1rem;display:grid;place-items:center;box-shadow:0 8px 22px -6px var(--amber-glow)}

/* Reading coach */
.coach-text{font-size:clamp(1.3rem,4vw,1.7rem);line-height:1.7;font-family:'Fraunces',serif;margin:6px 0 20px}
.coach-text .w{transition:.25s;padding:0 2px;border-radius:6px}
.coach-text .w.ok{color:#7ce7b8}
.coach-text .w.miss{color:#fca5a5;text-decoration:underline wavy rgba(252,165,165,.6)}
.coach-text .w.cur{background:rgba(255,210,122,.22);color:var(--amber-1)}
.coach-score{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:6px}
.score-ring{font-family:'Fraunces',serif;font-weight:700;font-size:2rem;color:var(--amber-1)}
.heard{color:var(--ink-mute);font-size:.86rem;min-height:1.2em}

.note-banner{background:rgba(12,16,42,.55);border:1px dashed var(--stroke);border-radius:16px;padding:14px 18px;color:var(--ink-soft);font-size:.88rem;margin-top:16px}
.note-banner b{color:var(--amber-1)}
.api-endpoints{background:rgba(10,13,34,.6);border:1px solid var(--stroke);border-radius:14px;padding:16px;overflow-wrap:anywhere;
  white-space:pre-wrap;color:#cfe3ff;font-size:.82rem;line-height:1.6;max-width:100%}
.center-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}

/* Sleep mode overlay */
#sleepOverlay{position:fixed;inset:0;z-index:60;background:rgba(4,6,18,0);pointer-events:none;transition:background 2s linear}
#sleepOverlay.on{background:rgba(4,6,18,.55);pointer-events:none}
#sleepOverlay .sleep-ui{position:absolute;left:50%;bottom:40px;transform:translateX(-50%);display:flex;gap:12px;align-items:center;
  background:rgba(12,16,42,.7);border:1px solid var(--stroke);border-radius:50px;padding:10px 18px;backdrop-filter:blur(14px);color:var(--ink-soft);font-weight:600;font-size:.9rem;pointer-events:auto}
#sleepOverlay .sleep-ui button{background:linear-gradient(135deg,var(--amber-1),var(--amber-2));border:0;color:#3a2300;border-radius:50px;padding:9px 18px;font-family:inherit;font-weight:700;cursor:pointer}

.spin{display:inline-block;width:16px;height:16px;border:2px solid rgba(58,35,0,.35);border-top-color:#3a2300;border-radius:50%;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}

/* "generating narration…" state on the Read-aloud button while GPU TTS is in flight */
.rtool.loading{color:var(--amber-1);border-color:rgba(255,210,122,.5)}
.rtool.loading::after{content:'';width:11px;height:11px;margin-left:6px;border:2px solid rgba(255,210,122,.35);border-top-color:var(--amber-1);border-radius:50%;display:inline-block;vertical-align:-1px;animation:rot .7s linear infinite}
/* answer-with-voice */
#tSpeak.on{color:var(--amber-1);border-color:rgba(255,210,122,.55);background:rgba(249,168,38,.16)}
#tSpeak.on::before{content:'';display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#ff6b6b;vertical-align:0;animation:vapulse 1.1s ease-in-out infinite}
@keyframes vapulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
#vaHint{color:var(--amber-1)}
.choice.voice-picked{outline:2px solid var(--amber-2,#f9a826);box-shadow:0 0 0 5px rgba(249,168,38,.22);transform:translateY(-1px);transition:.2s}
/* ===== magical story-generation overlay ===== */
#genMagic{position:fixed;inset:0;z-index:300;display:grid;place-items:center;opacity:0;transition:opacity .42s ease;
  background:radial-gradient(900px 650px at 50% 32%, rgba(52,40,110,.78), rgba(8,11,31,.94))}
#genMagic.show{opacity:1}
#genMagic .gm-card{text-align:center;padding:36px 28px;max-width:440px;animation:gmrise .6s ease}
@keyframes gmrise{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
#genMagic .gm-orb{width:118px;height:118px;margin:0 auto;position:relative;border-radius:50%;
  background:radial-gradient(circle at 35% 32%,#fffdf3,#fdeecb 45%,#f3d9a0 75%,#e6c483);
  box-shadow:0 0 64px 18px rgba(255,234,186,.45);animation:gmfloat 3.4s ease-in-out infinite}
#genMagic .gm-orb span{position:absolute;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;animation:gmspark 2.6s ease-in-out infinite}
#genMagic .gm-orb span:nth-child(1){width:8px;height:8px;top:-8px;left:28%}
#genMagic .gm-orb span:nth-child(2){width:6px;height:6px;top:42%;right:-12px;animation-delay:.8s}
#genMagic .gm-orb span:nth-child(3){width:7px;height:7px;bottom:-6px;left:56%;animation-delay:1.5s}
@keyframes gmfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-13px)}}
@keyframes gmspark{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.25)}}
#genMagic .gm-title{font-family:'Fraunces',serif;font-weight:600;font-size:1.45rem;color:var(--ink);margin:28px 0 10px}
#genMagic .gm-beat{color:var(--amber-1);font-size:1.06rem;min-height:1.5em;transition:opacity .25s ease}
#genMagic .gm-bar{width:210px;height:4px;margin:26px auto 0;background:rgba(255,255,255,.12);border-radius:4px;overflow:hidden}
#genMagic .gm-bar i{display:block;height:100%;width:42%;border-radius:4px;background:linear-gradient(90deg,var(--amber-1),var(--amber-2));animation:gmbar 1.7s ease-in-out infinite}
@keyframes gmbar{0%{margin-left:-42%}100%{margin-left:100%}}
@media (prefers-reduced-motion:reduce){#genMagic .gm-orb,#genMagic .gm-orb span,#genMagic .gm-bar i{animation:none}}
/* ===== saved story library ===== */
.lib-hint{font-weight:500;color:var(--ink-mute);font-size:.82rem}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:14px;margin:14px 0 6px}
.lib-card{position:relative;text-align:left;border:1px solid var(--stroke);border-radius:18px;overflow:hidden;background:var(--glass);cursor:pointer;padding:0;color:var(--ink);transition:transform .2s,border-color .2s,box-shadow .2s}
.lib-card:hover{transform:translateY(-3px);border-color:var(--stroke-soft);box-shadow:var(--shadow)}
.lib-cv{display:grid;place-items:center;height:88px;background-size:cover;background-position:center}
.lib-emoji{font-size:2rem;filter:drop-shadow(0 4px 10px rgba(0,0,0,.4))}
.lib-meta{display:block;padding:11px 13px 13px}
.lib-meta strong{display:block;font-family:'Fraunces',serif;font-size:.97rem;line-height:1.22;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.lib-meta em{font-style:normal;font-size:.77rem;color:var(--ink-mute)}
.lib-del{position:absolute;top:7px;right:8px;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:rgba(8,11,31,.6);color:#fff;font-size:1.05rem;line-height:1;opacity:0;transition:opacity .18s}
.lib-card:hover .lib-del,.lib-del:focus{opacity:1}
