/* ============ TOKENS ============ */
:root{
  --ivory:#F6F1E9; --cream:#FBF7F0; --sand:#EDE4D6; --champagne:#EBD9C2;
  /* Roz-ul cald al brandului (decizia fondatoarei): în ZI rămâne deschis și frumos pe butoanele
     generale (Adaugă, Întreabă pe Lumi, CTA-uri). Se ÎNTUNECĂ doar în NIGHT (vezi body.night), unde
     fundalul întunecat cere altă valoare. Butoanele de SIGURANȚĂ folosesc `--emerg`/`--sage-deep`
     (întunecate, ≥4,5:1) și `--*-ink` pentru text/linkuri – acelea rămân lizibile în ambele teme. */
  /* Verdele de pe butoane, în tema luminoasă. A fost întunecat cândva pentru contrast; e prea
     închis și fondatoarea l-a vrut înapoi la cel original (26 iul). Nu-l mai schimba – ca și
     roz-ul, e alegere de identitate, nu o cifră de optimizat. */
  --sage:#A9BBA3; --sage-deep:#7E9478; --sage-bg:#E8EEE3;
  --rose:#D8A7A0; --rose-deep:#C68B84; --rose-bg:#F5E9E5;
  --lav:#DAD7E0; --lav-deep:#8985A6; --lav-bg:#EDECF1;
  /* albastru pudrat, cald – DOAR pentru „băiețel" (cerință fondator); nu albastru medical */
  --boy:#A9C0D6; --boy-deep:#6F8FA9; --boy-bg:#E9F0F5;
  --text:#463E3A; --text2:#6E645C; --muted:#B6ABA1;
  --emerg:#A34A3F; --emerg-bg:#F6E4E0;
  /* Audit lansare · „cerneala" de accent (text/linkuri/borduri pe tente), SEPARAT de umplerile de mai sus:
     în zi = închisă (≥4.5:1 pe tenta deschisă); în noapte se luminează (vezi body.night), fiindcă acolo
     tentele devin întunecate iar accentul-ca-text ar deveni ilizibil. Umplerile de buton rămân închise. */
  --rose-ink:#9F5459; --sage-ink:#556A4E; --emerg-ink:#973E34;
  /* Iconițele DECORATIVE (cele care stau lângă un text care spune deja totul) primesc chiar
     roz-ul cald de pe butoane — lor nu li se cere 4,5:1, fiindcă informația nu e în culoare.
     Textul și linkurile rămân pe `--rose-ink`, care trebuie să poată fi CITIT. (fondatoarea, 25 iul) */
  --rose-icon:#C68B84;
  /* tokens de completare – nicio culoare în afara sistemului */
  --on-accent:#fff; --page:#e5ddce; --page-glow:#efe7d8; --onb-bg:#FBF6EE; --photo-veil:#241d19;
  --champagne-deep:#B18E6A; --champ2:#E7C3BB; --pro-text:#6b4a3f;
  --sand-ic-bg:#F3E8D8; --sand-ic:#A8875F; --peach-ic-bg:#F7E7DA; --peach-ic:#C08A5F;
  --line:#EFE7DB; --line2:#E6DACA;
  --serif:'Fraunces',Georgia,serif; --sans:'Nunito',system-ui,sans-serif;
  --r-s:14px; --r-m:20px; --r-l:26px; --r-xl:34px;
  --sh-1:inset 0 1px 0 rgba(255,255,255,.45),0 1px 2px rgba(120,90,70,.05),0 8px 22px rgba(120,90,70,.06);
  --sh-2:inset 0 1px 0 rgba(255,255,255,.5),0 10px 38px rgba(120,90,70,.11);
  --sh-lift:0 16px 44px rgba(120,90,70,.15);
  /* mișcarea plutește, nu sare – nimic elastic, nimic jucăuș */
  --e-out:cubic-bezier(.22,.61,.36,1); --e-soft:cubic-bezier(.33,0,.2,1); --e-spring:cubic-bezier(.3,.9,.4,1);
  /* Focusul trebuie SĂ SE VADĂ: la .55 alpha ieșea 1,36:1 – eșec WCAG 2.4.7, pe toate
     ecranele. Verde-salvie închis, 4,78:1 pe fundalurile deschise. (audit, 25 iul) */
  --focus:0 0 0 3px rgba(94,116,88,.95);
  --scrim:rgba(52,42,36,.45);
  --nav-h:88px;
}
body.night{
  --ivory:#1E1A18; --cream:#292320; --sand:#372E29; --champagne:#372E29;
  --sage-bg:#2B302A; --rose-bg:#372B28; --lav-bg:#2C2A31; --emerg-bg:#3A2A27;
  --boy-bg:#28323B; --boy-deep:#A3BDD2;
  --text:#F3EBE4; --text2:#CBC0B6; --muted:#A0958C;
  --line:#342B26; --line2:#3C322C;
  --sh-1:0 1px 2px rgba(0,0,0,.2),0 6px 18px rgba(0,0,0,.25);
  --sh-2:0 8px 34px rgba(0,0,0,.35); --sh-lift:0 16px 44px rgba(0,0,0,.4);
  --page:#151110; --page-glow:#1e1916; --champagne-deep:#D9BC9C; --champ2:#4a3a35; --pro-text:#E8D9C8;
  --sand-ic-bg:#332b22; --sand-ic:#C9A87B; --peach-ic-bg:#38291f; --peach-ic:#D9A97E;
  /* Roz-ul de buton în noapte = EXACT rozul iconițelor din bară (#E3A99F), ca totul să se lege.
     Fiind deschis, textul de pe butoane devine ÎNCHIS (--on-rose mai jos), nu alb — altfel s-ar
     șterge. Cărămiziul de dinainte (#AB5F57) o supăra pe fondul roz al identității.
     (Aleasă de fondatoare pe variante randate, 3 aug.) */
  --rose:#E3A99F; --rose-deep:#D89488;
  /* Textul de pe butoanele roz: alb ziua (pe rozul închis), ÎNCHIS noaptea (pe rozul deschis). */
  --on-rose:#2b211f;
  /* cerneala de accent se LUMINEAZĂ în noapte: tentele (`-bg`) sunt întunecate aici,
     deci accentul-ca-text trebuie deschis ca să treacă ≥4.5:1 (linkuri, callout-uri, titlul cardului roșu). */
  --rose-ink:#E3A99F; --sage-ink:#AAC1A1; --emerg-ink:#EB9086;
  /* în noapte iconițele decorative urmează cerneala deschisă – roz-ul de zi ar dispărea pe întuneric */
  --rose-icon:#E3A99F;
  /* la fel și inelul de focus: verdele închis de zi ar fi invizibil pe fundalul întunecat */
  --focus:0 0 0 3px rgba(170,193,161,.95);
}
/* ---- Text pe butoanele/pastilele ROZ, în NOAPTE ----
   În noapte `--rose` devine rozul deschis al iconițelor (#E3A99F, varianta A aleasă de fondatoare).
   Pe roz-ul deschis, textul alb (`--on-accent`) s-ar șterge, deci aici primește cerneala ÎNCHISĂ
   (`--on-rose`). Butoanele pe VERDE/LAVANDĂ/URGENȚĂ nu sunt în listă: fundalul lor rămâne închis și
   în noapte, deci textul alb e corect acolo. CSS nu poate ținti „fundalul roz", așa că lista e
   explicită – dacă adaugi un buton roz nou, adaugă-l și aici. (3 aug.) */
body.night .nav .n.center .orb,
body.night .lumi-av,
body.night .m.me,
body.night .composer button,
body.night .badge,
body.night .sticky-ask,
body.night .keybtn,
body.night .onb-cta,
body.night .anniv-note .an-close,
body.night .offer .ofb .yes,
body.night .presence-note .pn-breathe,
body.night .mm-cancel,
body.night .pr-cta,
body.night .dj-write,
body.night .alb-add,
body.night .snd button.playing,
body.night .reco-btn,
body.night .cal-d.sel,
body.night .tp-c.sel,
body.night .setup-cta,
body.night .reco2 .rk,
body.night .reco2 .rbtn,
body.night .hub-ask .ha-btn,
body.night .art-next,
body.night .he-add{color:var(--on-rose)}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:var(--sans);color:var(--text);background:var(--page);transition:background .6s var(--e-soft)}
.app{max-width:440px;height:100vh;height:100dvh;margin:0 auto;background:var(--ivory);position:relative;display:flex;flex-direction:column;overflow:hidden;transition:background .6s var(--e-soft)}
@media(min-width:460px){
  .app{box-shadow:0 0 90px rgba(120,90,70,.18)}
}
/* desktopul primește o ramă intenționată: coloana de telefon, centrată, cu colțuri moi și aer */
@media(min-width:700px){
  body{background:radial-gradient(1200px 800px at 50% -10%,var(--page-glow),var(--page))}
  .app{height:calc(100vh - 48px);height:calc(100dvh - 48px);margin:24px auto;border-radius:34px;border:1px solid rgba(120,90,70,.10)}
  .ms-cookie-banner{bottom:38px}
}

/* ============ TYPE ============ */
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.12;letter-spacing:-.015em;color:var(--text)}
.app a{color:var(--rose-ink)} /* niciun albastru „medical" – nici măcar în linkuri */
/* câmpurile de dată: selecție caldă, nu albastrul browserului */
input[type=date]{color-scheme:light;accent-color:var(--rose-ink)}
input[type=date]::-webkit-datetime-edit-month-field:focus,
input[type=date]::-webkit-datetime-edit-day-field:focus,
input[type=date]::-webkit-datetime-edit-year-field:focus{background:var(--rose-bg);color:var(--rose-ink);border-radius:4px;outline:none}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.5;filter:sepia(1) saturate(1.6) hue-rotate(-28deg)}
input[type=date]::selection{background:var(--rose-bg);color:var(--rose-ink)}
::selection{background:var(--rose-bg)}
/* `outline:2px solid transparent` în loc de `outline:none`: inelul nostru rămâne cel vizibil,
   dar în modul de contrast forțat (Windows High Contrast) sistemul îl poate colora – cu
   `none`, acolo focusul dispare complet. */
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[role=tab]:focus-visible,[role=button]:focus-visible{outline:2px solid transparent;outline-offset:2px;box-shadow:var(--focus);border-radius:12px}
/* La schimbarea de ecran, titlul (h1/h2) primește focus programatic ca o cititoare de ecran să anunțe
   noul ecran – dar are `tabindex="-1"`, deci NU e ținta tastaturii. Conturul implicit al browserului
   (pe telefon: un chenar negru în jurul titlului) n-are ce indica acolo. Îl scoatem DOAR pentru focusul
   programatic; inelul cald rămâne intact pe tot ce e navigabil cu Tab. (fondatoarea, 3 aug.) */
[tabindex="-1"]:focus{outline:none}
/* ---- Poarta desktop: MamaSpeak e phone-only (vezi scriptul din app.html <head>) ----
   Ascunsă implicit; scriptul pune `html.ms-desktop` doar pe desktop (fără touch, pointer fin),
   iar overlay-ul acoperă tot. RO implicit; `html.ms-en` comută pe engleză. */
.ms-desktop-gate{display:none}
html.ms-desktop{overflow:hidden}
/* cartea newsletter-ului (php/unsubscribe.php), reprodusă fidel: paletă FIXĂ, luminoasă,
   indiferent de tema aplicației – e o pagină de brand, nu un ecran al aplicației */
html.ms-desktop .ms-desktop-gate{display:grid;position:fixed;inset:0;z-index:2147483000;place-items:center;padding:28px;background:#F6F1E9;color:#463E3A;text-align:center;line-height:1.7}
.ms-desktop-gate .msdg-card{max-width:480px;width:100%;background:radial-gradient(60% 50% at 100% 0%,rgba(216,167,160,.16),transparent 70%),#FBF7F0;border:1px solid #EAE0D2;border-radius:28px;padding:46px 42px;box-shadow:0 30px 70px -34px rgba(120,90,70,.4)}
.ms-desktop-gate .msdg-logo{width:190px;height:auto;margin:0 auto 8px;display:block}
.ms-desktop-gate h1{font-family:var(--serif);font-weight:400;font-size:29px;line-height:1.15;letter-spacing:0;margin:14px 0 6px;color:#463E3A}
.ms-desktop-gate .msdg-script{font-family:'Caveat',cursive;font-size:22px;color:#C68B84;transform:rotate(-1.5deg)}
.ms-desktop-gate .msdg-hdiv{display:flex;align-items:center;gap:10px;width:130px;margin:16px auto;color:#D8A7A0}
.ms-desktop-gate .msdg-hdiv span{flex:1;height:1px;background:rgba(198,139,132,.4)}
.ms-desktop-gate p{font-size:14.5px;color:#8A7F77;margin:10px 0}
.ms-desktop-gate p b{color:#463E3A}
.ms-desktop-gate .msdg-in{margin-top:22px;background:#C68B84;color:#fff;border:none;border-radius:999px;padding:15px 26px;font-family:inherit;font-weight:700;font-size:15px;cursor:pointer;width:100%}
.ms-desktop-gate .msdg-in:focus-visible{outline:3px solid #7E9478;outline-offset:3px}
.ms-desktop-gate .msdg-tip{margin-top:12px;font-size:12.5px;color:#8A7F77;line-height:1.55}
/* butonul isi arata textul potrivit prin acelasi mecanism [lang] ca restul zidului */
.ms-desktop-gate .msdg-in span{display:none}
.ms-desktop-gate .msdg-in span[lang="ro"]{display:inline}
html.ms-en .ms-desktop-gate .msdg-in span[lang="ro"]{display:none}
html.ms-en .ms-desktop-gate .msdg-in span[lang="en"]{display:inline}
.ms-desktop-gate [lang="en"]{display:none}
html.ms-en .ms-desktop-gate [lang="ro"]{display:none}
html.ms-en .ms-desktop-gate [lang="en"]{display:block}
/* shared shell for Today's gentle notes (presence · anniversary · sleep · care support) */
.moment{display:none;margin:18px 0 2px;border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);animation:reveal .9s var(--e-out) forwards}
.moment.show{display:block}

/* ============ SCREENS + TRANSITIONS ============ */
.screen{display:none;flex:1;flex-direction:column;min-height:0;padding-bottom:var(--nav-h)}
.screen.active{display:flex;animation:screenIn .7s var(--e-soft)}
@keyframes screenIn{from{opacity:0;transform:translateY(14px) scale(.995)}to{opacity:1;transform:none}}
.scroll{flex:1;min-height:0;overflow-y:auto;padding:0 26px;-webkit-overflow-scrolling:touch}
.scroll::-webkit-scrollbar{width:0}
.statusbar{display:flex;justify-content:space-between;align-items:center;padding:16px 26px 4px;font-size:13px;color:var(--text2)}
.statusbar .ic{display:flex;gap:7px;font-size:15px}
/* ora simulată eliminată din bara de sus (dispozitivul arată ora reală); bara rămâne doar ca spațiator */
.statusbar span{display:none}
.reveal{opacity:0;transform:translateY(12px);animation:reveal .95s var(--e-soft) forwards}
.reveal.d1{animation-delay:.08s}.reveal.d2{animation-delay:.18s}.reveal.d3{animation-delay:.28s}.reveal.d4{animation-delay:.38s}.reveal.d5{animation-delay:.48s}
@keyframes reveal{to{opacity:1;transform:none}}

/* ============ TODAY ============ */
.top-actions{display:flex;gap:9px}
.icon-btn{width:40px;height:40px;border-radius:50%;background:var(--cream);border:1px solid var(--line);display:grid;place-items:center;color:var(--text2);cursor:pointer;transition:.2s var(--e-out)}
.icon-btn:hover{background:var(--sand)}.icon-btn:active{transform:scale(.92)}
.icon-btn:focus-visible{outline:none;box-shadow:var(--focus)}
.kicker{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text2);letter-spacing:.4px;margin-top:8px}
.greet{font-family:var(--serif);font-size:36px;margin:12px 0 4px;line-height:1.08;letter-spacing:-.02em}
.greet-sub{font-size:15.5px;color:var(--text2)}

.card{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);transition:.3s var(--e-out)}
.card.tap{cursor:pointer}.card.tap:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}.card.tap:active{transform:scale(.985)}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}

.sect{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--text2);font-weight:800;margin:36px 2px 16px}

/* ============ NAV ============ */
.nav{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-around;align-items:flex-end;background:color-mix(in srgb,var(--cream) 88%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--line);padding:12px 12px calc(16px + env(safe-area-inset-bottom));z-index:20}
.nav .n{flex:1;text-align:center;color:var(--text2);font-size:11px;cursor:pointer;font-weight:700;transition:.25s var(--e-out);background:none;border:none;font-family:var(--sans)} /* navigația e funcțională, nu decor – contrast mai bun decât --muted */
.nav .n i{font-size:24px;display:block;margin-bottom:3px;transition:.3s var(--e-spring)}
.nav .n.on{color:var(--rose-ink)}.nav .n.on i{transform:translateY(-2px)}
.nav .n:focus-visible{outline:none}.nav .n:focus-visible i{box-shadow:var(--focus);border-radius:12px}
.nav .n.center{margin-top:-28px}
.nav .n.center .orb{width:60px;height:60px;border-radius:50%;background:var(--rose);display:grid;place-items:center;margin:0 auto 4px;border:4px solid var(--ivory);color:var(--on-accent);transition:.3s var(--e-spring);box-shadow:0 8px 22px rgba(198,139,132,.45)}
.nav .n.center .orb i{font-size:28px;margin:0}
.nav .n.center:active .orb{transform:scale(.93)}
/* pulsează de 3 ori la deschidere ca să se vadă butonul „+", apoi tace – niciun element nu sare la infinit (Presence Design) */
/* CENTRAREA (fondatoarea, 5 aug: „pulsul nu e chiar pe buton"): inelul era absolut FĂRĂ ancoră
   (left/top), iar orb-ul fără position:relative – deci se poziționa față de alt strămoș și
   pulsa într-o parte. Acum: orb-ul e reperul, inelul e prins de centrul lui cu margini negative
   (transform-ul rămâne liber pentru animația de scale). */
.nav .n.center .orb{position:relative}
.nav .n.center .orb::after{content:"";position:absolute;left:50%;top:50%;margin:-30px 0 0 -30px;width:60px;height:60px;border-radius:50%;border:2px solid var(--rose);opacity:0;animation:pulse 3.5s var(--e-out) infinite}
@keyframes pulse{0%{transform:scale(1);opacity:.5}70%{transform:scale(1.5);opacity:0}100%{opacity:0}}

/* ============ LUMI ============ */
.lumi-head{display:flex;align-items:center;gap:13px;padding:8px 24px 12px}
/* Lumi e „glowy" (fondatoarea, 5 aug): o aureolă caldă care RESPIRĂ lent în jurul avatarului –
   plutește, nu clipește (mișcarea casei). Culoarea vine printr-o variabilă, ca noaptea să-și ia
   rozul ei de icoană; cu reduced-motion, aureola rămâne, respirația se oprește. */
.lumi-av{--glow:216,167,160;width:48px;height:48px;border-radius:50%;background:var(--rose);display:grid;place-items:center;color:var(--on-accent);flex-shrink:0;box-shadow:0 0 0 5px rgba(var(--glow),.22),0 0 22px rgba(var(--glow),.7);animation:lumiglow 3.4s var(--e-soft) infinite}
body.night .lumi-av{--glow:227,169,159}
@keyframes lumiglow{0%,100%{box-shadow:0 0 0 5px rgba(var(--glow),.22),0 0 16px rgba(var(--glow),.55)}50%{box-shadow:0 0 0 8px rgba(var(--glow),.3),0 0 34px rgba(var(--glow),.95)}}
/* cursorul blând cât timp răspunsul „se scrie" (bubbleLive) */
/* cursorul ▍ de „mașină de scris" a fost SCOS (fondatoarea, 5 aug) – starea „scrie" o spune
   respirația aureolei bulei, nu o tastă care clipește */
@media (prefers-reduced-motion: reduce){.lumi-av{animation:none}}
.lumi-av i{font-size:25px}
.lumi-head h2{font-size:20px}.lumi-head p{font-size:12.5px;color:var(--text2);display:flex;align-items:center;gap:5px}
.mem{margin-left:24px;margin-bottom:8px;display:inline-flex;align-items:center;gap:7px;background:var(--sage-bg);color:var(--sage-ink);font-size:12px;font-weight:700;padding:7px 13px;border-radius:14px;align-self:flex-start}
.msgs{flex:1;overflow-y:auto;padding:4px 24px 8px;display:flex;flex-direction:column;gap:14px}
.msgs::-webkit-scrollbar{width:0}
.m{max-width:86%;padding:15px 18px;font-size:15px;line-height:1.56;animation:msgIn .4s var(--e-out)}
@keyframes msgIn{from{opacity:0;transform:translateY(9px) scale(.98)}to{opacity:1;transform:none}}
/* Bula lui Lumi e GLOWY (fondatoarea, 5 aug): aureolă caldă permanentă în jurul răspunsului ei,
   mai vie cât timp „scrie". Bordura ia o tentă din aureolă; rozurile brandului rămân neatinse. */
.m.bot{--glow:216,167,160;background:var(--cream);border:1px solid rgba(var(--glow),.5);border-radius:22px 22px 22px 7px;align-self:flex-start;font-family:var(--serif);font-size:15.5px;color:var(--text);box-shadow:0 0 0 1px rgba(var(--glow),.14),0 3px 18px rgba(var(--glow),.42),var(--sh-1)}
body.night .m.bot{--glow:227,169,159}
.m.bot.scrie{animation:bulaglow 2.2s var(--e-soft) infinite}
@keyframes bulaglow{0%,100%{box-shadow:0 0 0 1px rgba(var(--glow),.14),0 3px 14px rgba(var(--glow),.34),var(--sh-1)}50%{box-shadow:0 0 0 2px rgba(var(--glow),.3),0 5px 28px rgba(var(--glow),.7),var(--sh-1)}}
/* Cuvintele ÎNFLORESC din lumină (fondatoarea, 5 aug: „poveste, liniștit, glowy – nu bătut la
   mașină"): fiecare intră cu blur fin + un halou roz pe litere care se stinge pe măsură ce se
   limpezește. Durata lungă (1.1s) + intervalul scurt dintre cuvinte fac fade-urile să se
   SUPRAPUNĂ – un val calm de lumină, nu taste. */
/* v3 (fondatoarea: blurul pe cerneala închisă ieșea „alb-negru, fum"). FĂRĂ blur: cuvântul
   SOSEȘTE ca lumină roz-AURIE — colorat cald, cu halou dublu (rozul aureolei + auriu de
   șampanie) — și se așază în cerneala textului pe măsură ce lumina se stinge. */
.m.bot .cuv{opacity:0;display:inline-block;position:relative;animation:cuvin 1.05s var(--e-soft) forwards}
@keyframes cuvin{
  0%{opacity:0;color:#DEA88C;text-shadow:0 0 10px rgba(var(--glow),.95),0 0 20px rgba(222,178,120,.75)}
  45%{opacity:1;color:#DEA88C;text-shadow:0 0 7px rgba(var(--glow),.55),0 0 14px rgba(222,178,120,.45)}
  100%{opacity:1;text-shadow:0 0 0 rgba(var(--glow),0),0 0 0 rgba(222,178,120,0)}
}
/* particule: fiecare al treilea cuvânt eliberează o scânteie aurie care urcă și se stinge */
.m.bot .cuv:nth-of-type(3n)::after{content:'';position:absolute;left:50%;top:-3px;width:3px;height:3px;border-radius:50%;background:rgba(232,190,122,.95);box-shadow:0 0 7px rgba(232,190,122,.95);opacity:0;pointer-events:none;animation:scanteie 1.05s var(--e-soft) forwards}
@keyframes scanteie{0%{opacity:0;transform:translate(-50%,3px) scale(.5)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,-11px) scale(1)}}
@media (prefers-reduced-motion: reduce){.m.bot.scrie{animation:none}.m.bot .cuv{animation:none;opacity:1}.m.bot .cuv::after{animation:none;opacity:0}}
.m.me{background:var(--rose);color:var(--on-accent);border-radius:22px 22px 7px 22px;align-self:flex-end;font-weight:600}
.m.bot ul{margin:9px 0 0 18px;display:flex;flex-direction:column;gap:6px;font-family:var(--sans)}
.m.bot b{color:var(--rose-ink)}
.m .route{display:block;margin-top:12px;padding-top:11px;border-top:1px dashed var(--line2);font-family:var(--sans);font-size:12px;color:var(--text2);font-weight:700}
.m .route a{color:var(--rose-ink);font-weight:800;text-decoration:none}
.typing{align-self:flex-start;display:flex;gap:6px;padding:16px 19px;background:var(--cream);border:1px solid var(--line);border-radius:22px 22px 22px 7px;box-shadow:var(--sh-1)}
.typing span{width:8px;height:8px;border-radius:50%;background:var(--rose);animation:breathe-dot 4s ease-in-out infinite}
.typing span:nth-child(2){animation-delay:.35s}.typing span:nth-child(3){animation-delay:.7s}
@keyframes breathe-dot{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.05)}}
.chips{display:flex;gap:9px;overflow-x:auto;padding:10px 24px 6px}
.chips::-webkit-scrollbar{height:0}
.chip{white-space:nowrap;background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:10px 15px;font-size:13px;font-weight:700;color:var(--text2);cursor:pointer;flex-shrink:0;transition:.2s var(--e-out)}
.chip:hover{background:var(--rose-bg);color:var(--rose-ink)}.chip:active{transform:scale(.95)}
.composer{display:flex;gap:10px;padding:13px 24px 9px;border-top:1px solid var(--line);background:var(--ivory)}
/* „Sunt un asistent AI. Pot să greșesc" – stă lipit de câmpul de scris, unde mama e pe punctul să
   aibă încredere. Nu e un banner care sperie: e o linie liniștită, mereu acolo (Never-Does #73/#74).
   Contrastul: --text2 pe --ivory = 5,13:1, deci trece AA și la 11,5px. Padding-ul de jos preia
   safe-area de la composer, ca linia să nu ajungă sub bara de gesturi pe iPhone. */
.ai-note{margin:0;background:var(--ivory);padding:0 24px calc(13px + env(safe-area-inset-bottom));font-size:12px;line-height:1.45;font-weight:600;color:var(--text2);text-align:center}
.composer input{flex:1;border:1px solid var(--line2);border-radius:20px;padding:14px 18px;font-family:var(--sans);font-size:15px;font-weight:600;color:var(--text);background:var(--cream);outline:none;transition:.2s var(--e-out)}
.composer input:focus{border-color:var(--sage);box-shadow:var(--focus)}
.composer button{width:52px;border:none;border-radius:20px;background:var(--rose);color:var(--on-accent);font-size:20px;cursor:pointer;transition:.2s var(--e-out)}
.composer button:active{transform:scale(.92)}

/* ============ LEARN ============ */
.hero{font-family:var(--serif);font-size:34px;margin:14px 0 7px;line-height:1.08;letter-spacing:-.02em}
.hero-sub{font-size:16px;color:var(--text2);line-height:1.55;margin-bottom:10px}
.feature{margin-top:16px;border-radius:var(--r-l);padding:22px;background:var(--lav-bg);border:1px solid var(--line);position:relative;overflow:hidden;cursor:pointer;box-shadow:var(--sh-1);transition:.3s var(--e-out)}
.feature:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.feature .fl{font-size:11.5px;font-weight:800;letter-spacing:.6px;color:var(--lav-deep)}
.feature h2{font-size:22px;margin-top:8px;max-width:80%}
.feature p{font-size:14px;color:var(--text2);margin-top:6px;max-width:80%}
.feature .fic{position:absolute;right:-6px;bottom:-6px;font-size:88px;color:var(--lav);opacity:.5}
.hub{display:flex;align-items:center;gap:15px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:16px;margin-top:13px;cursor:pointer;transition:.3s var(--e-out);box-shadow:var(--sh-1)}
.hub:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}.hub:active{transform:scale(.98)}
.hub .hi{width:52px;height:52px;border-radius:17px;display:grid;place-items:center;flex-shrink:0;font-size:25px}
.hub .hn{font-family:var(--serif);font-size:18.5px}
.hub .hs{font-size:13px;color:var(--text2);margin-top:2px}
.hub .ha{margin-left:auto;color:var(--muted);font-size:20px;transition:.25s var(--e-out)}
.hub:hover .ha{transform:translateX(3px);color:var(--rose-ink)}
.hub.star{background:var(--rose-bg);border-color:var(--line2)}
.badge{display:inline-block;background:var(--rose);color:var(--on-accent);font-size:10px;font-weight:800;padding:3px 9px;border-radius:11px;margin-left:8px;vertical-align:middle;letter-spacing:.3px}
.badge.sage{background:var(--sage-deep)}.badge.soft{background:var(--sage-bg);color:var(--sage-ink)}

.backrow{display:flex;align-items:center;gap:8px;padding:10px 24px 6px;color:var(--text2);font-weight:800;font-size:14px;cursor:pointer;background:none;border:none;font-family:var(--sans)}
.backrow i{font-size:20px}.backrow:active{transform:translateX(-2px)}
/* rândul „Înapoi" poartă și căutarea + clopoțelul – aceleași acțiuni pe fiecare ecran, ca pe Acasă */
.subhead{display:flex;align-items:center;justify-content:space-between;padding-right:18px}
.subhead .ah-right{padding-top:4px}
.sub{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:16px;margin-top:11px;cursor:pointer;display:flex;align-items:center;gap:13px;transition:.28s var(--e-out);box-shadow:var(--sh-1)}
.sub:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}.sub:active{transform:scale(.98)}
.sub .si{color:var(--sage-ink);font-size:20px;width:24px;text-align:center}
.sub .st{font-size:15px;font-weight:700;color:var(--text);flex:1}
.sub .sdot{width:8px;height:8px;border-radius:50%;background:var(--sage);flex-shrink:0}
.sub .sa{color:var(--muted);font-size:18px}

/* ============ ARTICLE ============ */
.progress-top{position:absolute;top:0;left:0;height:4px;background:var(--rose);width:0;z-index:30;transition:width .15s linear;border-radius:0 3px 3px 0}
.art-hero{height:168px;border-radius:var(--r-l);margin-top:8px;display:grid;place-items:center;background:var(--sage-bg);color:var(--sage-ink);position:relative;overflow:hidden}
.art-hero i{font-size:56px;position:relative;z-index:1}
.art-hero::before{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.25);top:-90px;right:-70px}
.badges{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;padding:6px 12px;border-radius:13px}
.pill.rev{background:var(--sage-bg);color:var(--sage-ink)}
.pill.time{background:var(--sand);color:var(--text2)}
.art h1{font-size:28px;margin:16px 0 4px;line-height:1.1}
.art-body{font-size:16.5px;line-height:1.75;color:var(--text)}
.art-body ul{margin:13px 0 13px 20px;display:flex;flex-direction:column;gap:9px}
.art-body b{color:var(--rose-ink)}
/* Gardă de siguranță medicală — callout blând de închidere (sage = calm, nu alarmant). */
.art-guard{display:flex;flex-direction:column;gap:7px;background:var(--sage-bg);border:1px solid var(--sage-deep);border-radius:var(--r-m);padding:15px 16px;margin-top:22px}
.art-guard p{margin:0;font-family:var(--serif);font-size:14.5px;line-height:1.55;color:var(--text)}
.art-guard .ag-title{font-family:var(--sans);font-weight:800;font-size:14.5px;color:var(--sage-ink);letter-spacing:.01em}
/* varianta „mamă": card de grijă „A gentle reminder" – ton cald rose */
.art-guard.mom{background:var(--rose-bg);border-color:var(--rose-icon)}
.art-guard.mom .ag-title{color:var(--rose-ink)}
/* header de secțiune în corp (📖 Ce este bine să știi) */
.art-h{font-family:var(--sans);font-weight:800;font-size:15px;color:var(--text);margin:22px 0 2px}
/* sub-etichetă în corp (ex. grupe de vârstă: 0–3 luni) – mai mică decât art-h, scanabilă pe telefon */
.art-sub{font-family:var(--sans);font-weight:800;font-size:12.5px;letter-spacing:.03em;color:var(--rose-ink);margin:15px 0 1px}
/* Cardurile Formulei MamaSpeak */
.art-tldr{background:var(--sand);border-radius:var(--r-m);padding:14px 16px;margin:14px 0 4px}
.art-tldr .at-t{font-family:var(--sans);font-weight:800;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);margin-bottom:9px}
.art-tldr ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.art-tldr li{position:relative;padding-left:24px;font-size:15px;line-height:1.5;color:var(--text)}
.art-tldr li::before{content:"✓";position:absolute;left:0;top:0;color:var(--sage-ink);font-weight:800}
.art-card{border-radius:var(--r-m);padding:15px 16px;margin-top:20px}
.art-card .ac-t{font-family:var(--sans);font-weight:800;font-size:14px;margin-bottom:5px}
.art-card p{margin:0;font-family:var(--serif);font-size:14.5px;line-height:1.55;color:var(--text)}
.art-card.dyk{background:var(--sage-bg)}
.art-card.dyk .ac-t{color:var(--sage-ink)}
.art-card.lumisays{background:var(--lav-bg);border:1px solid var(--lav)}
.art-card.lumisays .ac-t{color:var(--lav-deep)}
.art-card.myth{background:var(--sand)}
.art-card.myth .ac-t{color:var(--text2)}
.art-card.myth .myth-line{margin-top:9px;font-family:var(--serif);font-size:14.5px;line-height:1.55}
.art-card.myth .myth-m{color:var(--text2)}
.art-card.myth .myth-f{color:var(--text)}
.art-card.myth b{font-family:var(--sans);font-weight:800;font-size:13.5px}
.art-closer{background:var(--rose-bg);border:1px solid var(--rose-deep);border-radius:var(--r-m);padding:16px 18px;margin:20px 0 2px}
.art-closer .acl-t{font-family:var(--sans);font-weight:800;font-size:14.5px;color:var(--rose-ink);margin-bottom:7px;letter-spacing:.01em}
.art-closer p{margin:0;font-family:var(--serif);font-size:15px;line-height:1.6;color:var(--text);font-style:italic}
.art-avoid{background:var(--sand);border-radius:var(--r-m);padding:15px 16px;margin-top:20px}
.art-avoid .ac-t{font-family:var(--sans);font-weight:800;font-size:14px;color:var(--text);margin-bottom:8px}
.art-avoid .av-lead{margin:10px 0 6px;font-family:var(--serif);font-size:14.5px;line-height:1.5;color:var(--text)}
.art-avoid .av-lead:first-of-type{margin-top:0}
.art-avoid ul{margin:0 0 2px;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.art-avoid li{position:relative;padding-left:22px;font-size:14.5px;line-height:1.45;color:var(--text)}
.art-avoid li::before{content:"✕";position:absolute;left:2px;top:0;color:var(--rose-icon);font-weight:800}
.art-avoid .av-foot{margin:11px 0 0;font-family:var(--serif);font-size:14px;line-height:1.5;color:var(--text2)}
/* tabel de conținut (ex. durate de păstrare a laptelui) – hairline neutru, merge pe temă clară și întunecată */
.art-body table{width:100%;border-collapse:collapse;margin:12px 0 4px;font-size:14px}
.art-body table th,.art-body table td{text-align:left;padding:9px 11px;border-bottom:1px solid rgba(128,128,128,.28);vertical-align:top;line-height:1.4}
.art-body table th{font-family:var(--sans);font-weight:800;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--text2)}
.art-body table td:last-child{font-weight:700;color:var(--text);white-space:normal}
.art-body>small,.art-body small{display:block;margin:2px 0 0;font-size:12.5px;color:var(--text2);line-height:1.4}
.art-card.lumisays p{font-style:italic}
/* 🚨 Când este o urgență? — alertă clară, non-panicoasă */
.art-urgent{background:var(--emerg-bg);border:1px solid var(--emerg-ink);border-radius:var(--r-m);padding:15px 16px;margin-top:20px}
.art-urgent .ac-t{font-family:var(--sans);font-weight:800;font-size:14px;color:var(--emerg-ink);margin-bottom:10px}
.art-urgent ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.art-urgent li{position:relative;padding-left:20px;font-size:14.5px;line-height:1.45;color:var(--text)}
.art-urgent li::before{content:"•";position:absolute;left:2px;top:-1px;color:var(--emerg-ink);font-weight:800;font-size:17px}
.art-urgent .au-route{margin:12px 0 0;font-family:var(--sans);font-weight:700;font-size:14px;color:var(--text)}
.art-urgent .au-route a{color:var(--emerg-ink);font-weight:800}
.art-urgent .au-hint{margin:6px 0 0;font-family:var(--sans);font-size:13px;color:var(--text2);line-height:1.5}
/* ⚠️ Când este bine să vorbești cu medicul? — atenție AMBRU, non-urgent, rutat la medic (nu 112) */
.art-seek{background:var(--champagne);border:1px solid var(--rose-deep);border-radius:var(--r-m);padding:15px 16px;margin-top:20px}
.art-seek .ac-t{font-family:var(--sans);font-weight:800;font-size:14px;color:var(--text);margin-bottom:8px}
.art-seek .as-lead{margin:0 0 9px;font-family:var(--serif);font-size:14.5px;line-height:1.5;color:var(--text)}
.art-seek ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.art-seek li{position:relative;padding-left:20px;font-size:14.5px;line-height:1.45;color:var(--text)}
.art-seek li::before{content:"•";position:absolute;left:2px;top:-1px;color:var(--rose-icon);font-weight:800;font-size:17px}
.art-seek .as-foot{margin:10px 0 0;font-family:var(--serif);font-size:14px;line-height:1.5;color:var(--text2)}
.art-seek .as-emerg{margin:12px 0 0;padding-top:11px;border-top:1px solid var(--rose-ink);font-family:var(--sans);font-weight:800;font-size:14px;line-height:1.45;color:var(--emerg-ink)}
.callout{border-radius:var(--r-m);padding:16px 18px;margin:18px 0;font-size:14.5px;font-weight:600;display:flex;align-items:flex-start;gap:12px;line-height:1.5}
.callout i{font-size:21px;flex-shrink:0;margin-top:1px}
.callout.warn{background:var(--emerg-bg);color:var(--emerg-ink)}
.callout.info{background:var(--sage-bg);color:var(--sage-ink)}
.callout a{color:inherit;font-weight:800}
.sticky-ask{position:sticky;bottom:14px;margin:20px 0 6px;display:flex;align-items:center;justify-content:center;gap:9px;background:var(--rose);color:var(--on-accent);border:none;border-radius:var(--r-m);padding:16px;width:100%;font-family:var(--sans);font-size:15px;font-weight:800;cursor:pointer;box-shadow:0 10px 30px rgba(198,139,132,.4);transition:.2s var(--e-out)}
.sticky-ask:active{transform:scale(.98)}
/* Audit UX F5 / Medical F6: spațiu în josul derulării articolului, ca butonul lipicios „Întreab-o pe
   Lumi" să nu acopere niciodată ultima linie de conținut (card urgent, „Continuă cu"). */
#artScroll{padding-bottom:76px}
.art-save{display:flex;align-items:center;justify-content:center;gap:9px;background:var(--cream);border:1px solid var(--line2);color:var(--text);border-radius:var(--r-m);padding:15px;width:100%;font-family:var(--sans);font-size:15px;font-weight:800;cursor:pointer;transition:.2s var(--e-out)}
.art-save.saved{background:var(--rose-bg);color:var(--rose-ink);border-color:transparent}
.related{margin-top:26px}

/* skeleton */
.skel{background:linear-gradient(90deg,var(--sand) 25%,var(--cream) 50%,var(--sand) 75%);background-size:200% 100%;animation:shimmer 1.3s infinite;border-radius:10px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ============ SEARCH ============ */
.search-field{display:flex;align-items:center;gap:11px;background:var(--cream);border:1px solid var(--line2);border-radius:var(--r-m);padding:14px 17px;margin-top:6px;box-shadow:var(--sh-1)}
.search-field i{font-size:21px;color:var(--muted)}
.search-field input{flex:1;border:none;background:none;outline:none;font-family:var(--sans);font-size:16px;font-weight:600;color:var(--text)}
.tagcloud{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.tagcloud .tg{background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:9px 14px;font-size:13px;font-weight:700;color:var(--text2);cursor:pointer;transition:.2s var(--e-out)}
.tagcloud .tg:hover{background:var(--sage-bg);color:var(--sage-ink)}
/* răspunsul de criză în ecranul de Căutare: are FORMA unei bule de la Lumi, nu a unui rezultat.
   Cine a scris acolo ce a scris nu a căutat un articol – a vorbit cu cineva. Aceeași casetă ca
   `.m.bot` din chat, ca să se simtă la fel: serif, cald, cu ruta spre oameni reali dedesubt. */
/* trimiterile către alte articole, din interiorul textului: se văd ca o legătură, nu ca un buton –
   nu întrerup cititul. Culoarea e --rose-ink, cea deja folosită pentru legături în corpul textului. */
.art-xref{color:var(--rose-ink);font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.art-xref:focus-visible{outline:2px solid var(--rose-ink);outline-offset:2px;border-radius:3px}
.res-care{background:var(--cream);border:1px solid var(--line);border-radius:22px 22px 22px 7px;box-shadow:var(--sh-1);padding:17px 19px;margin-top:14px;font-family:var(--serif);font-size:15.5px;line-height:1.56;color:var(--text)}
.res-care b{color:var(--rose-ink)}
.res-care a{color:var(--rose-ink);font-weight:800;text-decoration:none}
.res-care .route{display:block;margin-top:12px;padding-top:11px;border-top:1px dashed var(--line2);font-family:var(--sans);font-size:12px;color:var(--text2);font-weight:700}
.res{display:flex;align-items:center;gap:12px;padding:14px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.res i{color:var(--sage-ink);font-size:20px}.res .rt{font-weight:700;font-size:15px}.res .rh{font-size:12px;color:var(--text2)}

/* ============ TIMELINE ============ */
.tl{position:relative;margin:14px 0 0 8px;padding-left:26px}
.tl::before{content:"";position:absolute;left:5px;top:6px;bottom:10px;width:2px;background:var(--line2)}
.tl-item{position:relative;margin-bottom:22px}
.tl-item::before{content:"";position:absolute;left:-25px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--sage);border:3px solid var(--ivory);box-shadow:0 0 0 1px var(--sage)}
.tl-item.rose::before{background:var(--rose);box-shadow:0 0 0 1px var(--rose)}
.tl-item.up::before{background:var(--ivory);box-shadow:0 0 0 2px var(--muted)}
.tl-when{font-size:12px;font-weight:800;color:var(--text2);letter-spacing:.3px}
.tl-card{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:15px 16px;margin-top:7px;box-shadow:var(--sh-1)}
.tl-card h3{font-size:16px}.tl-card p{font-size:13.5px;color:var(--text2);margin-top:4px;line-height:1.5}
.tl-card .tl-ic{float:right;font-size:22px;color:var(--sage-ink)}
.tl-card.mem{background:var(--rose-bg);border-color:var(--line2)}.tl-card.mem .tl-ic{color:var(--rose-icon)}

/* ============ CARE ============ */
.care-hero{border-radius:var(--r-l);padding:24px;background:var(--sage-bg);margin-top:12px;position:relative;overflow:hidden}
.care-hero h2{font-size:22px;max-width:82%}.care-hero p{font-size:14px;color:var(--sage-ink);margin-top:6px;max-width:82%}
.care-hero .cbtn{margin-top:16px;display:inline-flex;align-items:center;gap:8px;background:var(--sage-deep);color:var(--on-accent);border:none;border-radius:16px;padding:12px 18px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer}
.care-hero .cic{position:absolute;right:-8px;bottom:-14px;font-size:96px;color:var(--sage);opacity:.4}
.affirm{margin-top:14px;border-radius:var(--r-m);padding:20px;background:var(--rose-bg);border:1px solid var(--line2);text-align:center}
.affirm .aq{font-family:var(--serif);font-size:19px;line-height:1.4;color:var(--text)}
.affirm .al{font-size:12px;color:var(--rose-ink);font-weight:800;letter-spacing:.4px;margin-top:10px;text-transform:uppercase}
.tile{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:18px;margin-top:12px;cursor:pointer;transition:.28s var(--e-out);box-shadow:var(--sh-1);display:flex;align-items:center;gap:14px}
.tile:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}.tile:active{transform:scale(.985)}
.tile .tic{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;flex-shrink:0;font-size:23px;background:var(--sage-bg);color:var(--sage-ink)}
.tile.rose .tic{background:var(--rose-bg);color:var(--rose-ink)}
.tile.lav .tic{background:var(--lav-bg);color:var(--lav-deep)}
.tile h3{font-size:16.5px}.tile p{font-size:13.5px;color:var(--text2);line-height:1.45;margin-top:2px}

/* ============ PROFILE ============ */
.prof-head{display:flex;align-items:center;gap:15px;margin-top:8px;padding:20px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1)}
.prof-av{width:60px;height:60px;border-radius:50%;background:var(--champagne);display:grid;place-items:center;color:var(--champagne-deep);flex-shrink:0}
.prof-av i{font-size:29px}
/* TEXTUL DIN BUTOANE (auditul SEO, 5 aug): standardul HTML nu permite <div> în interiorul unui
   <button> – 25 de locuri erau invalide, iar cititoarele de ecran se pot încurca la un bloc
   într-un control. Acum e <span class="btx">, dar cu `display:block`, deci se poartă EXACT ca
   div-ul de dinainte: în butoanele flex era oricum blocuit, în cele bloc rămâne bloc. */
.btx{display:block}
.row-set{display:flex;align-items:center;gap:13px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:17px 18px;margin-top:10px;cursor:pointer;transition:.3s var(--e-out)}
/* rândurile legale din Profil sunt ancore adevărate (deschid paginile legale) — fără albastru de link */
a.row-set{color:inherit;text-decoration:none}
.row-set:hover{background:var(--sand)}.row-set:active{transform:scale(.99)}
.row-set>i:first-child{font-size:19px;color:var(--muted)}
/* `min-width:0` nu e cosmetic: un element flex cu `flex:1` refuză implicit să coboare sub
   lățimea conținutului său, așa că eticheta rândului nu se micșora deloc. Pe un ecran de 320px
   (iPhone SE, telefoane mici mai vechi), când mama alegea „Text mare" sau „Foarte mare",
   rândul „MamaSpeak Premium" ieșea din ecran: pastila „7 zile gratuit" are 102px și
   `white-space:nowrap`, iar săgeata ajungea la 354px. Profilul căpăta derulare orizontală.
   Cu `min-width:0` eticheta se poate rupe pe două rânduri și tot rândul încape.
   Nu se schimbă nicio culoare și nimic la lățimile obișnuite – acolo eticheta oricum încape. */
.row-set .rt{flex:1;min-width:0;font-weight:700;font-size:14.5px;overflow-wrap:anywhere}
.row-set .rv{color:var(--text2);font-size:13px;font-weight:700;margin-right:4px} /* „pornit/oprit" e informație, nu decor */
.row-set .ra{color:var(--muted);font-size:18px}
.keyin{width:100%;border:1px solid var(--line2);border-radius:var(--r-s);padding:13px 15px;font-family:var(--sans);font-weight:600;font-size:14px;color:var(--text);background:var(--ivory);margin-top:10px;outline:none}
.keyin:focus{border-color:var(--sage);box-shadow:var(--focus)}
.keybtn{margin-top:11px;background:var(--rose);color:var(--on-accent);border:none;border-radius:var(--r-s);padding:13px 22px;font-weight:800;font-family:var(--sans);cursor:pointer;transition:.2s var(--e-out)}
.keybtn:active{transform:scale(.97)}
.disc{text-align:center;color:var(--text2);font-size:12px;margin:24px 0 8px;line-height:1.6}

/* ============ CALM / EMERGENCY ============ */
.overlay{position:absolute;inset:0;z-index:40;background:var(--ivory);display:none;flex-direction:column;padding:24px;animation:screenIn .45s var(--e-out)}
.overlay.show{display:flex}
.overlay .ox{align-self:flex-end;width:42px;height:42px;border-radius:50%;background:var(--cream);border:1px solid var(--line);display:grid;place-items:center;color:var(--text2);font-size:22px;cursor:pointer}
.calm h1{font-size:27px;text-align:center;margin-top:8px}
.calm .lead{text-align:center;color:var(--text2);font-size:15px;margin-top:10px;line-height:1.55}
.breath{width:200px;height:200px;border-radius:50%;display:grid;place-items:center;margin:24px auto;color:var(--rose-ink);font-family:var(--serif);font-size:18px;background:var(--rose-bg);animation:breathe 9s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:scale(.72);background:var(--rose-bg)}50%{transform:scale(1);background:var(--sage-bg)}}
.breath span{grid-column:1;grid-row:1}
.b-in{animation:bIn 9s ease-in-out infinite}
.b-out{animation:bOut 9s ease-in-out infinite}
@keyframes bIn{0%,44%{opacity:1}56%,100%{opacity:0}}
@keyframes bOut{0%,44%{opacity:0}56%,100%{opacity:1}}
@media(prefers-reduced-motion:reduce){.b-out{display:none}.b-in{opacity:1}}
.eq-choices{display:flex;flex-direction:column;gap:11px;margin-top:22px}
.eq-choice{display:flex;align-items:center;gap:13px;background:var(--cream);border:1px solid var(--line2);border-radius:var(--r-m);padding:17px;font-size:15.5px;font-weight:700;color:var(--text);cursor:pointer;font-family:var(--sans);text-align:left;transition:.2s var(--e-out)}
.eq-choice:hover{background:var(--sand)}.eq-choice:active{transform:scale(.98)}
.eq-choice i{font-size:22px;color:var(--rose-icon)}
.calm-actions{margin-top:auto;display:flex;flex-direction:column;gap:11px}
.call{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:var(--r-m);padding:18px;font-family:var(--sans);font-size:16px;font-weight:800;text-decoration:none;border:none;cursor:pointer;transition:.2s var(--e-out)}
.call:active{transform:scale(.98)}
.call.ped{background:var(--sage-deep);color:var(--on-accent)}.call.sos{background:var(--emerg);color:var(--on-accent)}
.call.talk{background:var(--cream);border:1px solid var(--line2);color:var(--text)}
.call i{font-size:21px}
/* fără număr real (generic/EN): instrucțiune urgentă, NU buton care sună. Notă cu chenar, non-tappabilă. */
.call.nodial{cursor:default}
.call.nodial:active{transform:none}
/* Aceeași regulă și pentru elementele STATICE din HTML marcate `data-ctry-tel`, cărora
   applyCountry() le scoate `href` când ediția nu are numere verificate. Fără asta rămâneau
   colorate ca linkuri – un „Sună acum" care nu sună. Acum arată ca text, fiindcă text sunt. */
a.nodial,a[data-ctry-tel][role="note"]{cursor:default;text-decoration:none}
a.nodial:active,a[data-ctry-tel][role="note"]:active{transform:none}
.call.sos.nodial{background:var(--emerg-bg);color:var(--emerg-ink);border:1.5px solid var(--emerg)}
.call.ped.nodial{background:var(--sage-bg);color:var(--sage-ink);border:1.5px solid var(--sage-deep)}

/* one-handed night SOS */
/* mai jos și mai spre dreapta — cerința fondatoarei de pe telefon, ziua lansării */
.night-sos{position:absolute;right:12px;bottom:calc(var(--nav-h) + 4px);width:60px;height:60px;border-radius:50%;background:var(--emerg);color:var(--on-accent);display:none;place-items:center;font-size:24px;z-index:25;box-shadow:0 10px 26px rgba(201,106,94,.5);cursor:pointer;border:none}
body.night .night-sos{display:grid}
/* TOASTUL NU ACOPERĂ BUTONUL DE URGENȚĂ (auditul maxim, 5 aug): pe un telefon de 375px, un
   mesaj mai lung ajungea peste butonul roșu de noapte — și e DEASUPRA lui (z-index 95 față de
   25), deci șase secunde în care butonul de urgență nu se putea apăsa. În tema de noapte,
   unde butonul există, toastul urcă deasupra lui. Textul rămâne întreg, nu se strânge. */
body.night .toast{bottom:calc(var(--nav-h) + 96px)}   /* 4 (marginea butonului) + 60 (înălțimea lui)
   + 20 (coborârea din animația de apariție) + 12 de respiro — măsurat, nu ghicit */


/* ============ ONBOARDING ============ */
.onb{position:absolute;inset:0;z-index:60;background:var(--ivory);display:none;flex-direction:column;padding:32px 26px calc(28px + env(safe-area-inset-bottom))}
.onb.show{display:flex}
.onb-step{flex:1;display:none;flex-direction:column;min-height:0;overflow-y:auto;animation:screenIn .5s var(--e-out)}
.onb-step::-webkit-scrollbar{width:0}
.onb-step.active{display:flex}
.onb-dots{display:flex;gap:7px;justify-content:center;margin-bottom:26px}
.onb-dots i{width:7px;height:7px;border-radius:50%;background:var(--line2);transition:.3s var(--e-out)}
.onb-dots i.on{background:var(--rose);width:22px;border-radius:4px}
.onb-ill{width:120px;height:120px;border-radius:50%;background:var(--rose-bg);display:grid;place-items:center;color:var(--rose-icon);margin:20px auto 8px;font-size:56px;animation:float 5s ease-in-out infinite}
.onb h1{font-size:29px;text-align:center;margin-top:14px;line-height:1.12}
.onb .osub{text-align:center;color:var(--text2);font-size:15.5px;margin-top:12px;line-height:1.55}
.onb-opts{display:flex;flex-direction:column;gap:11px;margin-top:26px}
.opt{display:flex;align-items:center;gap:13px;background:var(--cream);border:1.5px solid var(--line2);border-radius:var(--r-m);padding:17px;font-size:15.5px;font-weight:700;color:var(--text);cursor:pointer;transition:.2s var(--e-out);font-family:var(--sans)}
.opt i{font-size:22px;color:var(--sage-ink)}
.opt.on{border-color:var(--rose);background:var(--rose-bg)}.opt.on i{color:var(--rose-icon)}
.opt:active{transform:scale(.98)}
.onb-in{width:100%;border:1.5px solid var(--line2);border-radius:var(--r-m);padding:16px 18px;font-family:var(--sans);font-weight:700;font-size:16px;color:var(--text);background:var(--cream);margin-top:16px;outline:none;text-align:center}
.onb-in:focus{border-color:var(--sage);box-shadow:var(--focus)}
.onb-cta{background:var(--rose);color:var(--on-accent);border:none;border-radius:var(--r-m);padding:17px;font-family:var(--sans);font-size:16px;font-weight:800;cursor:pointer;margin-top:18px;transition:.2s var(--e-out)}
.onb-cta:active{transform:scale(.98)}
.onb-skip{background:none;border:none;color:var(--text2);font-family:var(--sans);font-weight:700;font-size:14px;margin-top:14px;cursor:pointer}
.onb-legal{margin:16px 4px 0;font-size:11.5px;line-height:1.55;color:var(--text2);text-align:center}
.onb-legal a{color:var(--rose-ink);font-weight:700}
/* Poarta de limbă — prima rulare, o singură dată, înaintea a orice. Auto-detectat pre-selectează,
   dar alegerea rămâne la mamă. Bilingv: neutru de limbă, ca să fie clar în ambele. */
.langgate{position:absolute;inset:0;z-index:70;background:var(--ivory);display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px 26px calc(28px + env(safe-area-inset-bottom))}
.langgate.show{display:flex;animation:screenIn .5s var(--e-out)}
.lg-logo{width:88px;height:88px;border-radius:24px;object-fit:cover}
.lg-heart{color:var(--rose-ink);font-size:20px;margin:15px 0 4px}
.lg-sub{font-family:var(--serif);font-size:21px;color:var(--text);line-height:1.35;margin-bottom:30px}
.lg-sub span{display:inline-block;color:var(--text2);font-size:16px;margin-top:2px}
.lg-opts{display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px}
.lg-opt{background:var(--cream);border:1.5px solid var(--line2);border-radius:var(--r-m);padding:18px;font-family:var(--sans);font-size:17px;font-weight:800;color:var(--text);cursor:pointer;transition:.2s var(--e-out);min-height:56px}
.lg-opt.on{border-color:var(--rose);background:var(--rose-bg)}
.lg-opt:focus-visible{outline:none;box-shadow:var(--focus)}
.lg-opt:active{transform:scale(.98)}

/* toast */
/* z-index 95: DEASUPRA onboarding-ului (.onb, 60) și a foilor de jos (.qa-sheet, 80).
   La 50 stătea sub ele, așa că TOATE mesajele de validare erau invizibile – „Continuă" din
   onboarding cu numele gol părea un buton mort. (audit de lansare, 25 iul) */
/* `left:50%` fără lățime explicită lasă mesajul să se întindă doar pe jumătatea dreaptă a
   ecranului – propozițiile mai lungi cădeau pe trei rânduri degeaba. `max-content` îl lasă
   să-și ia lățimea de care are nevoie, iar `max-width` îl ține în ramă. */
.toast{position:absolute;left:50%;transform:translateX(-50%) translateY(20px);bottom:calc(var(--nav-h) + 16px);width:max-content;max-width:calc(100% - 32px);background:var(--text);color:var(--ivory);padding:13px 20px;border-radius:18px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:9px;opacity:0;z-index:95;box-shadow:var(--sh-lift);pointer-events:none}
/* Cât timp o cerere e pe drum, butonul se retrage vizibil – să se vadă că lucrează, nu că
   s-a stricat. Niciun buton din aplicație nu folosea `disabled` până acum, deci regula asta
   nu atinge nimic existent. */
button[disabled]{opacity:.55;cursor:default;pointer-events:none}
.toast.show{animation:toastIn 2.6s var(--e-out)}
@keyframes toastIn{0%{opacity:0;transform:translateX(-50%) translateY(20px)}12%{opacity:1;transform:translateX(-50%) translateY(0)}85%{opacity:1}100%{opacity:0;transform:translateX(-50%) translateY(-8px)}}
.toast i{color:var(--rose)}
/* Varianta cu „Anulează": stă mai mult (6s, ca să apuce s-o atingă cu o mână ocupată) și
   primește pointer-events, fiindcă mesajul obișnuit e doar de citit. Intrarea rămâne la fel
   de promptă – de-aia are propriile procente, nu aceleași întinse pe mai mult timp. */
.toast.undo{pointer-events:auto}
.toast.undo.show{animation:toastUndoIn 6s var(--e-out)}
@keyframes toastUndoIn{0%{opacity:0;transform:translateX(-50%) translateY(20px)}5%{opacity:1;transform:translateX(-50%) translateY(0)}93%{opacity:1}100%{opacity:0;transform:translateX(-50%) translateY(-8px)}}
.toast-undo{background:none;border:none;font:inherit;font-weight:800;color:var(--rose);cursor:pointer;padding:6px 2px;margin-left:2px;text-decoration:underline;text-underline-offset:3px;flex-shrink:0}
.toast-undo:focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px}

/* ---- Care notices HER (Signature Moment 04) ---- */
.checkin{margin-top:18px}
.checkin h3{font-size:18px;margin-bottom:12px}
.her-moods{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.her-moods button{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:15px 12px;font-family:var(--sans);font-weight:700;font-size:14px;color:var(--text);cursor:pointer;display:flex;align-items:center;gap:10px;transition:.2s var(--e-out)}
.her-moods button i{font-size:20px;color:var(--sage-ink)}
.her-moods button.on{background:var(--sage-bg);border-color:transparent}
.her-moods button:active{transform:scale(.97)}
.her-ack{margin-top:13px;font-family:var(--serif);font-size:15.5px;color:var(--text2);line-height:1.5}
.her-ack .rlink{display:inline-block;margin-top:6px;color:var(--rose-ink);font-weight:800;font-family:var(--sans);font-size:13.5px;cursor:pointer}
.her-support{background:var(--sage-bg);padding:22px;margin-top:16px}
.her-support h3{font-family:var(--serif);font-size:19px;color:var(--text)}
.her-support p{font-size:14.5px;color:var(--text2);line-height:1.55;margin-top:8px}
.her-support .hs-list{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.her-support .hs-list a{display:flex;align-items:center;gap:11px;background:var(--cream);border:1px solid var(--line2);border-radius:14px;padding:13px 15px;text-decoration:none;color:var(--text);font-weight:700;font-size:14px}
.her-support .hs-list a i{font-size:20px;color:var(--sage-ink)}
.her-support .hs-list a .num{margin-left:auto;color:var(--sage-ink);font-weight:800}
/* generic (fără număr): notă informativă, nu link care sună – text estompat, non-tappabil */
.her-support .hs-list .hs-note{display:flex;align-items:center;gap:11px;background:var(--cream);border:1px solid var(--line2);border-radius:14px;padding:13px 15px;color:var(--text2);font-weight:700;font-size:14px}
.her-support .hs-list .hs-note i{font-size:20px;color:var(--sage-ink)}
.her-support .hs-close{margin-top:16px;background:none;border:none;color:var(--text2);font-family:var(--sans);font-weight:700;font-size:13.5px;cursor:pointer}

/* ---- 30 Days Together (Signature Moment 01) ---- */
.anniv-note{background:var(--rose-bg);border-color:var(--line2);padding:26px 22px;text-align:center}
.anniv-note .an-orb{width:64px;height:64px;border-radius:50%;background:var(--cream);display:grid;place-items:center;color:var(--rose-icon);font-size:26px;margin:0 auto 15px}
.anniv-note .an-body{font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--text)}
.anniv-note .an-mem{display:block;margin-top:12px;font-size:13.5px;font-family:var(--sans);color:var(--rose-ink);font-weight:800;cursor:pointer}
.anniv-note .an-close{margin-top:20px;background:var(--rose);color:var(--on-accent);border:none;border-radius:16px;padding:12px 22px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer;transition:.2s var(--e-out)}
.anniv-note .an-close:active{transform:scale(.97)}

/* ---- First Memory Card (Signature Moment 02) ---- */
.offer{background:var(--rose-bg);border:1px solid var(--line2);border-radius:22px 22px 22px 7px;align-self:flex-start;padding:16px 18px;max-width:88%;box-shadow:var(--sh-1);animation:msgIn .4s var(--e-out)}
.offer .ofq{font-family:var(--serif);font-size:15.5px;color:var(--text);line-height:1.5}
.offer .ofb{display:flex;gap:9px;margin-top:14px}
.offer .ofb button,.sleep-note .sn-actions button{border:none;font-family:var(--sans);font-weight:800;font-size:13.5px;border-radius:15px;padding:11px 16px;cursor:pointer;transition:.2s var(--e-out)}
.offer .ofb .yes{background:var(--rose);color:var(--on-accent)}
.offer .ofb .no{background:var(--cream);border:1px solid var(--line2);color:var(--text2)}
.offer .ofb button:active{transform:scale(.96)}
.memcard{align-self:flex-start;max-width:80%;border-radius:20px;padding:22px;text-align:center;border:1px solid var(--line2);box-shadow:var(--sh-2);background:radial-gradient(130px 100px at 24% 18%,rgba(216,167,160,.5),transparent 70%),radial-gradient(150px 110px at 82% 82%,rgba(169,187,163,.45),transparent 70%),radial-gradient(120px 90px at 72% 14%,rgba(235,217,194,.55),transparent 70%),var(--cream)}
.memcard.developing{animation:develop 1.6s var(--e-out) both}
@keyframes develop{0%{filter:blur(9px) saturate(.55);opacity:0;transform:scale(.94)}100%{filter:blur(0) saturate(1);opacity:1;transform:none}}
.memcard .mc-ic{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.6);display:grid;place-items:center;color:var(--rose-icon);font-size:28px;margin:0 auto 12px}
body.night .memcard .mc-ic{background:rgba(255,255,255,.14)}
.memcard .mc-t{font-family:var(--serif);font-size:19px;color:var(--text)}
.memcard .mc-d{font-size:12px;color:var(--text2);font-weight:700;margin-top:5px;letter-spacing:.4px}
.memcard .mc-link{display:inline-block;margin-top:14px;color:var(--rose-ink);font-weight:800;font-size:13px;cursor:pointer}
.tl-card .tl-del{float:right;background:none;border:none;color:var(--text2);font-size:16px;cursor:pointer;margin:-6px -6px 0 8px;padding:10px;border-radius:10px}

/* ---- Sleep-regression anticipatory reassurance ---- */
.sleep-note{background:var(--lav-bg);padding:22px}
.sleep-note .sn-h{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:18px;color:var(--text);line-height:1.3}
.sleep-note .sn-h i{color:var(--lav-deep);font-size:22px;flex-shrink:0}
.sleep-note p{font-size:14px;color:var(--text2);line-height:1.5;margin-top:9px}
.sleep-note .sn-actions{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap}
.sleep-note .sn-go{background:var(--lav-deep);color:var(--on-accent)}
.sleep-note .sn-close{background:var(--cream);border:1px solid var(--line2);color:var(--text2)}
.sleep-note .sn-actions button:active{transform:scale(.97)}

/* ---- 3 A.M. Presence ---- */
.presence-note{background:var(--lav-bg);padding:24px 20px;text-align:center}
.presence-note .pn-orb{width:76px;height:76px;border-radius:50%;background:var(--rose-bg);margin:0 auto 16px;display:grid;place-items:center;color:var(--rose-icon);font-size:29px;animation:breathe 9s ease-in-out infinite}
.presence-note h3{font-size:22px}
.presence-note p{font-size:15px;color:var(--text2);margin-top:7px}
.presence-note .pn-actions{display:flex;gap:10px;justify-content:center;margin-top:20px}
.presence-note .pn-actions button{border:none;font-family:var(--sans);font-weight:800;font-size:14px;border-radius:16px;padding:13px 20px;cursor:pointer;transition:.2s var(--e-out)}
.presence-note .pn-breathe{background:var(--rose);color:var(--on-accent)}
.presence-note .pn-close{background:var(--cream);border:1px solid var(--line2);color:var(--text2)}
.presence-note .pn-actions button:active{transform:scale(.97)}
body.deepnight{--ivory:#191412;--cream:#231D1A}
body.deepnight .greet{font-size:36px}
body.deepnight .m,body.deepnight .art-body{font-size:16.5px}

/* ---- Medicație (memory aid) ---- */
.med-safe{display:flex;gap:12px;background:var(--rose-bg);border:1px solid var(--line2);border-radius:var(--r-m);padding:16px;margin-top:8px;font-size:13.5px;color:var(--text);line-height:1.5}
.med-safe i{font-size:22px;color:var(--rose-icon);flex-shrink:0}
.med-safe a{color:var(--rose-ink);font-weight:800}
.med-form{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:16px;margin-top:14px;box-shadow:var(--sh-1)}
.med-form input{width:100%;border:1px solid var(--line2);border-radius:14px;padding:12px 14px;font-family:var(--sans);font-weight:600;font-size:14px;color:var(--text);background:var(--ivory);margin-bottom:10px;outline:none}
.med-form input:focus{border-color:var(--sage);box-shadow:var(--focus)}
.med-warn{display:none;background:var(--emerg-bg);color:var(--emerg-ink);border-radius:12px;padding:11px 13px;font-size:13px;font-weight:700;margin-bottom:10px;line-height:1.45}
.med-warn.show{display:block}
.med-warn a{color:var(--emerg-ink);font-weight:800}
.med-add{width:100%;background:var(--sage-deep);color:var(--on-accent);border:none;border-radius:14px;padding:13px;font-family:var(--sans);font-weight:800;font-size:14.5px;cursor:pointer}
.med-add:active{transform:scale(.98)}
.med-rem-set{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:16px;margin-top:14px}
.med-rem-set label{font-size:13.5px;font-weight:700;color:var(--text2);display:block;margin-bottom:10px}
.med-rem-set input{border:1px solid var(--line2);border-radius:12px;padding:10px 12px;font-family:var(--sans);font-weight:700;color:var(--text);background:var(--ivory)}
.med-rem-set button{background:var(--lav-deep);color:var(--on-accent);border:none;border-radius:12px;padding:11px 18px;font-weight:800;font-family:var(--sans);cursor:pointer}
.med-rem-status{font-size:13px;color:var(--sage-ink);font-weight:700;margin-top:12px}
.med-row{display:flex;align-items:center;gap:12px;background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:13px 14px;margin-top:10px;box-shadow:var(--sh-1)}
.med-row .mr-ic{width:40px;height:40px;border-radius:12px;background:var(--sage-bg);display:grid;place-items:center;color:var(--sage-ink);flex-shrink:0}
.med-row .mr-name{font-weight:800;font-size:14.5px;color:var(--text)}
.med-row .mr-note{font-size:12.5px;color:var(--text2);margin-top:1px}
.med-row .mr-time{font-size:12px;color:var(--text2);font-weight:700;margin-top:2px} /* ora administrării e informație medicală */
.med-row .mr-del{background:none;border:none;color:var(--text2);font-size:18px;cursor:pointer;margin:-5px -8px -5px auto;padding:11px;border-radius:12px;display:grid;place-items:center}
/* Butonul de doză de pe rândurile de tratament de pe Acasă. Acțiunea trebuie SĂ SE VADĂ:
   un rând cu chevron promite navigare, deci ascunsă în spatele lui, mama nu o găsește (founder). */
/* min-height 40: e o acțiune medicală apăsată de o mamă epuizată – ținta de atingere nu are voie
   să fie o pastilă mică de 32px (WCAG 2.5.8 e minimul, nu ținta noastră) */
.med-row .mr-dose{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 13px;min-height:40px;border-radius:30px;background:var(--rose-bg);border:1px solid var(--rose);color:var(--rose-ink);font-weight:800;font-size:12.5px;line-height:1;cursor:pointer;font-family:inherit;transition:.2s}
.med-row .mr-dose:active{transform:scale(.96)}
.med-row .mr-dose i{font-size:14px}
/* „bifat azi" – confirmarea verde, calmă, că doza de azi e notată (nu o alarmă) */
.med-row .mr-dose.done{background:var(--sage-bg);border-color:var(--sage-ink);color:var(--sage-ink)}
.med-plan{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);padding:20px;margin-top:12px;box-shadow:var(--sh-1)}
.med-plan .mp-top{display:flex;align-items:center;gap:10px}
.med-plan .mp-name{font-family:var(--serif);font-weight:500;font-size:21px;color:var(--text);flex:1;letter-spacing:-.01em}
.med-plan .mp-done{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--sage-ink);background:var(--sage-bg);padding:4px 11px;border-radius:12px;margin-top:10px}
.med-plan .mp-next{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--text2);background:var(--sand);padding:4px 11px;border-radius:12px;margin-top:10px}
.med-plan .mp-int{font-size:12px;color:var(--lav-deep);font-weight:800;background:var(--lav-bg);padding:3px 9px;border-radius:10px;white-space:nowrap}
.med-plan .mp-del{background:none;border:none;color:var(--text2);font-size:17px;cursor:pointer;padding:10px;margin:-8px -6px -8px 0;border-radius:12px}
.med-plan .mp-status{font-size:12.5px;color:var(--sage-ink);font-weight:700;margin-top:9px;line-height:1.4}
.med-plan .mp-status.early{color:var(--emerg-ink)}
.med-plan .mp-status b{color:var(--text)}
.med-plan .mp-give{margin-top:11px;width:100%;background:var(--sage-deep);color:var(--on-accent);border:none;border-radius:12px;padding:11px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer}
.med-plan .mp-give:active{transform:scale(.98)}
/* „La altă oră" (14 aug): rând discret sub butonul de doză – drumul de o atingere rămâne rege,
   corectarea orei e la un pas, nu în față */
.med-plan .mp-other{display:block;width:100%;margin-top:4px;background:none;border:none;padding:8px;font-family:var(--sans);font-weight:700;font-size:12.5px;color:var(--text2);opacity:.8;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.med-plan .mp-other:active{opacity:1}
/* câmpul de oră din foaia de doză */
.dose-when{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:10px 12px;background:var(--bg2,rgba(0,0,0,.03));border:1px solid var(--line2);border-radius:12px;font-family:var(--sans);font-weight:700;font-size:13.5px;color:var(--text2)}
.dose-when input[type="time"]{border:none;background:none;font-family:var(--sans);font-weight:800;font-size:15px;color:var(--text);padding:2px 4px}
/* corectura orei ultimei doze – gest de contabilitate, nu de medicație: discret, sub buton */
.dose-fix{display:block;width:100%;margin-top:6px;background:none;border:none;padding:9px;font-family:var(--sans);font-weight:700;font-size:13px;color:var(--text2);opacity:.85;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.dose-fix:active{opacity:1}
/* separator de zi în jurnalul de doze – ruda compactă a lui .dj-day */
.med-day{font-family:var(--serif);font-size:12.5px;color:var(--text2);text-align:center;margin:20px 0 2px;letter-spacing:.02em}
.med-day::after{content:'';display:block;width:44px;height:1px;background:var(--line2);margin:6px auto 0}
#medLog .med-day:first-child{margin-top:8px}
.trk-state{font-size:13.5px;color:var(--sage-ink);font-weight:700;margin:6px 0 12px}
.trk-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.trk-b{flex:1;min-width:92px;background:var(--cream);border:1px solid var(--line2);border-radius:14px;padding:14px 10px;font-family:var(--sans);font-weight:800;font-size:13.5px;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px}
.trk-b:active{transform:scale(.97)}
.trk-b i{font-size:17px;color:var(--sage-ink)}
/* somnul rămas pornit: o întrebare blândă, nu o alertă – lavanda somnului, două răspunsuri mari */
.trk-ask{display:flex;flex-direction:column;gap:10px;background:var(--lav-bg);border:1px solid var(--line);border-radius:var(--r-m);padding:15px 16px;margin:6px 0 12px;font-size:13.5px;line-height:1.5;color:var(--text)}
.trk-ask b{font-family:var(--serif);font-weight:500;font-size:15.5px}
.trk-ask .ta-b{display:flex;gap:9px;flex-wrap:wrap}
.trk-ask button{border:none;font-family:var(--sans);font-weight:800;font-size:13px;border-radius:14px;padding:11px 15px;cursor:pointer;transition:.2s var(--e-out)}
.trk-ask .ta-yes{background:var(--lav-deep);color:var(--on-accent)}
.trk-ask .ta-no{background:var(--cream);border:1px solid var(--line2);color:var(--text2)}
.trk-ask button:active{transform:scale(.97)}
.med-modal{position:absolute;inset:0;z-index:70;background:var(--scrim);display:none;align-items:center;justify-content:center;padding:24px}
.med-modal.show{display:flex}
.mm-card{background:var(--cream);border-radius:var(--r-l);padding:26px 22px;max-width:340px;width:100%;text-align:center;box-shadow:var(--sh-lift)}
.mm-icon{width:60px;height:60px;border-radius:50%;background:var(--emerg-bg);color:var(--emerg-ink);display:grid;place-items:center;font-size:28px;margin:0 auto 14px}
.mm-card h3{font-family:var(--serif);font-size:20px;color:var(--text);line-height:1.2}
.mm-card p{font-size:14px;color:var(--text2);line-height:1.5;margin-top:9px}
.mm-call{display:flex;align-items:center;justify-content:center;gap:9px;background:var(--sage-deep);color:var(--on-accent);border-radius:14px;padding:13px;text-decoration:none;font-weight:800;font-size:14px;margin-top:18px}
.mm-cancel{width:100%;background:var(--rose);color:var(--on-accent);border:none;border-radius:14px;padding:14px;font-family:var(--sans);font-weight:800;font-size:15px;cursor:pointer;margin-top:10px}
.mm-cancel:active{transform:scale(.98)}
.mm-proceed{background:none;border:none;color:var(--text2);font-family:var(--sans);font-weight:700;font-size:13px;cursor:pointer;margin-top:14px;text-decoration:underline}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;transition-duration:.001ms !important}
  /* EXCEPȚIE, și e o excepție de siguranță, nu de estetică. Mesajele își trăiesc TOATĂ viața
     într-o animație: apar, stau, dispar. Strivită la 0,001ms, animația trece instantaneu prin
     toate cadrele și `.toast` se întoarce la `opacity:0` – deci mama care are „mișcare redusă"
     pornită (o setare de accesibilitate, adesea din cauza migrenelor sau a răului de mișcare)
     nu vedea NICIUN mesaj: nici „memoria telefonului e plină", nici butonul „Anulează" de după
     ștergerea unui medicament. Plasa de siguranță exista, dar era invizibilă exact pentru ea.
     Le lăsăm durata întreagă și le scoatem MIȘCAREA – rămâne doar estomparea, care e tocmai
     ce cere setarea. (Găsit la auditul de lansare, 26 iul.) */
  .toast.show{animation-duration:2.6s !important}
  .toast.undo.show{animation-duration:6s !important}
  /* fără alunecarea de 20px: rămâne pe locul lui, doar apare și dispare */
  .toast{transform:translateX(-50%) !important}
  @keyframes toastIn{0%{opacity:0}12%{opacity:1}85%{opacity:1}100%{opacity:0}}
  @keyframes toastUndoIn{0%{opacity:0}5%{opacity:1}93%{opacity:1}100%{opacity:0}}
}

/* telefoane foarte înguste (320px): grilele respiră pe mai puține coloane */
@media(max-width:345px){
  .exp-grid{grid-template-columns:repeat(2,1fr)}
  .cats{grid-template-columns:repeat(2,1fr)}
  .callrow{grid-template-columns:1fr} /* butoanele de urgență devin rânduri late, ușor de nimerit */
  .gr-form{grid-template-columns:1fr 1fr}
  .gr-form button{grid-column:1/-1}
  .greet-ill{width:104px;height:104px}
}

/* ============ V2 · copii multipli, album, sunete, vaccinuri, aspect ============ */
.kids{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.kid{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 15px;min-height:40px;border-radius:30px;background:var(--cream);border:1px solid var(--line);font-weight:700;font-size:13px;cursor:pointer;transition:.25s var(--e-out);font-family:var(--sans);color:var(--text)}
.kid.on{background:var(--rose-bg);border-color:var(--rose);color:var(--rose-ink)}
.kid.add{color:var(--text2);border-style:dashed}
.kid i{font-size:14px}
/* onestitatea funcției AI, la locul unde se pornește (vezi .ai-note din chat) */
.ai-warn{margin:12px 0 0;font-size:12.5px;line-height:1.5;font-weight:700;color:var(--text2);border-left:3px solid var(--line2);padding-left:11px}
.pill-pro{font-size:10px;font-weight:800;letter-spacing:.07em;background:linear-gradient(120deg,var(--champagne),var(--champ2));color:var(--pro-text);padding:3px 8px;border-radius:12px;margin-left:8px;text-transform:uppercase;white-space:nowrap}
/* Premium ACTIV (body.premium, pus în renderAccount): plachetele „PREMIUM" de pe rândurile de
   funcții dispar – pentru cine a plătit nu mai sunt promisiuni, sunt pur și simplu funcțiile
   ei. Rămâne doar eticheta de stare de pe rândul „MamaSpeak Premium" („activ" / „X zile"). */
body.premium .pill-pro{display:none}
body.premium #premiumPill{display:inline-block}
/* ---- Ecranul MamaSpeak Premium ---- */
.pr-hero{text-align:center;padding:6px 0 2px}
.pr-badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(120deg,var(--champagne),var(--champ2));color:var(--pro-text);padding:4px 12px;border-radius:999px;margin-bottom:12px}
.pr-list{display:flex;flex-direction:column;gap:11px;margin:20px 0}
.pr-item{display:flex;gap:13px;align-items:flex-start;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;box-shadow:var(--sh-1)}
.pr-item>i{font-size:22px;color:var(--rose-icon);flex-shrink:0;margin-top:1px}
.pr-item b{display:block;font-size:14.5px;color:var(--text);margin-bottom:2px}
.pr-item span{font-size:12.5px;color:var(--text2);line-height:1.45}
.pr-plans{display:flex;gap:11px;margin:22px 0 6px}
.pr-plan{flex:1;position:relative;background:var(--cream);border:2px solid var(--line);border-radius:var(--r-l);padding:17px 12px 14px;text-align:center;cursor:pointer;font-family:inherit;transition:.2s var(--e-out)}
.pr-plan.sel{border-color:var(--rose-ink);box-shadow:0 6px 20px rgba(198,139,132,.18)}
.pr-plan-tag{position:absolute;top:-10px;left:50%;transform:translateX(-50%);font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:var(--rose-deep);color:var(--cream);padding:3px 10px;border-radius:999px;white-space:nowrap}
/* „Planul tău" – insigna abonamentului EI (renderPremium, starea activă): conturul verde-salvie
   spune „al meu", distinct de rozul de vânzare; „Recomandat" tace pe cardul ei. */
.pr-plan.mine{border-color:var(--sage-deep)}
.pr-plan.mine .pr-plan-tag:not(.pr-mine){display:none}
.pr-plan-tag.pr-mine{background:var(--sage-deep);color:#fff}
.pr-plan-t{font-size:13px;font-weight:700;color:var(--text2)}
.pr-plan-p{font-family:var(--serif);font-size:25px;color:var(--text);margin:5px 0 2px}
.pr-plan-p span{font-size:13px;color:var(--text2)}
.pr-plan-s{font-size:11.5px;color:var(--text2)}
.pr-cta{width:100%;background:var(--rose-deep);color:var(--on-accent);border:none;border-radius:999px;padding:16px;font-size:15.5px;font-weight:700;font-family:inherit;cursor:pointer;margin-top:12px;box-shadow:0 6px 18px rgba(198,139,132,.28);transition:.2s var(--e-out)}
/* CTA-ul SECUNDAR de pe ecranul Premium (vizibil doar în trial, prin renderPremium): un link
   liniștit, nu un al doilea buton plin – trialul rămâne vedeta, abonarea timpurie e o ușă. */
.pr-cta2{display:block;width:100%;background:none;border:none;color:var(--rose-ink);font-family:inherit;font-size:13.5px;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:10px;margin-top:2px}
.pr-cta:active{transform:scale(.98)}
.pr-fine{text-align:center;font-size:12px;color:var(--text2);margin:12px 6px 0;line-height:1.5}
.pr-free{background:rgba(169,187,163,.15);border-radius:var(--r-m);padding:15px 16px;margin-top:22px;font-size:13px;color:var(--text2);line-height:1.55}
/* album */
.alb-grid{display:grid;grid-template-columns:1fr;gap:26px;margin-top:18px}
.alb-item{display:flex;flex-direction:column;gap:8px;max-width:340px;margin:0 auto;width:100%}
.alb-book{width:150px;height:150px;border-radius:50%;background-size:cover;background-position:center;margin:14px auto 4px;border:1px solid var(--line);box-shadow:var(--sh-1)}

/* ============ V6 · jurnalul ei (editorial) ============ */
.dj-head{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.dj-write{display:inline-flex;align-items:center;gap:6px;background:var(--rose);color:var(--on-accent);border:none;border-radius:30px;padding:10px 18px;font-family:var(--sans);font-weight:800;font-size:13.5px;cursor:pointer;box-shadow:var(--sh-1)}
.dj-write:active{transform:scale(.97)}
.dj-day{font-family:var(--serif);font-size:22px;text-align:center;margin:34px 0 6px}
.dj-day:first-child{margin-top:22px}
.dj-sep{width:56px;height:1px;background:var(--line2);margin:0 auto 8px}
.dj-entry{text-align:center;padding:26px 10px 8px}
.dj-entry .dj-ic{font-size:20px;color:var(--rose-icon);display:block;margin-bottom:16px}
.dj-entry .dj-ic.sage{color:var(--sage-ink)}
.dj-entry p{font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--text);max-width:300px;margin:0 auto;white-space:pre-wrap}
.dj-entry time{display:block;margin-top:16px;font-size:12px;color:var(--text2);letter-spacing:.5px}
.dj-del{background:none;border:none;color:var(--line2);font-size:15px;cursor:pointer;padding:13px}
.dj-del:hover{color:var(--muted)}
/* inimioara notiței + rândul de acțiuni – discrete, sub fiecare gând */
.dj-acts{display:flex;gap:2px;justify-content:center;margin-top:2px}
.dj-fav{background:none;border:none;color:var(--line2);font-size:15px;cursor:pointer;padding:13px;transition:.2s var(--e-out)}
.dj-fav:hover{color:var(--rose)}
.dj-fav.on{color:var(--rose-ink)}
/* îndemnul + perechea de butoane de la finalul jurnalului */
.dj-note{text-align:center;font-size:13px;color:var(--text2);line-height:1.6;margin:26px 0 12px}
.dj-ctas{display:flex;flex-direction:column;gap:9px;align-items:center;margin-bottom:8px}
.dj-ctas .dj-write{width:min(100%,340px);justify-content:center;padding:14px}
.dj-dl{display:flex;align-items:center;justify-content:center;gap:8px;width:min(100%,340px);background:var(--cream);border:1px solid var(--line2);color:var(--text);border-radius:30px;padding:13px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer;transition:.2s var(--e-out)}
.dj-dl:active{transform:scale(.98)}
/* butonul „albumul întreg" – fratele conturat al lui .alb-add */
.alb-dl{display:flex;align-items:center;justify-content:center;gap:8px;width:min(100%,340px);margin:10px auto 0;background:var(--cream);border:1px solid var(--line2);color:var(--text);border-radius:30px;padding:13px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer;transition:.2s var(--e-out)}
.alb-dl:active{transform:scale(.98)}
/* starea goală – O SINGURĂ voce în toată aplicația: frunză + serif + invitație caldă */
.empty,.dj-empty,.alb-empty,.vax-empty{text-align:center;color:var(--text2);font-size:15px;line-height:1.75;padding:38px 24px;margin-top:10px;font-family:var(--serif)}
/* floarea blanda din starea goala a menstruatiei - soptita, calda, niciodata stridenta */
.cy-bloom{display:block;height:auto;margin:0 auto 14px;color:var(--rose-ink);opacity:.5}
.empty::before,.dj-empty::before,.alb-empty::before,.vax-empty::before{content:"";display:block;width:24px;height:24px;margin:0 auto 14px;opacity:.55;background:no-repeat center/contain url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23B6ABA1" stroke-width="1.8" stroke-linecap="round"><path d="M5 21c8 0 14-6 14-14V5h-2C9 5 3 11 3 19v2h2Z"/><path d="M5 21C5 13 11 7 19 7"/></svg>')}
.dj-ta{width:100%;border:1px solid var(--line2);border-radius:14px;padding:14px;font-family:var(--serif);font-size:16.5px;line-height:1.5;color:var(--text);background:var(--cream);margin-top:9px;outline:none;resize:vertical;min-height:120px}
.dj-ta:focus{border-color:var(--sage);box-shadow:var(--focus)}

/* ============ V6 · creștere (statistici mari, editorial) ============ */
.gr-stat{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);padding:18px 20px;margin-top:12px;box-shadow:var(--sh-1)}
.gr-stat .gr-lbl{display:block;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text2);font-weight:800}
.gr-stat b{display:block;font-family:var(--serif);font-weight:500;font-size:34px;margin-top:4px;letter-spacing:-.01em}
.gr-delta{display:block;font-size:13px;color:var(--sage-ink);margin-top:6px;font-weight:700}
.gr-delta.down{color:var(--text2)}
.gr-evo{font-family:var(--serif);font-size:17.5px;text-align:center;color:var(--text);margin:20px 12px 6px;line-height:1.5}
/* — sparkline în card + istoric editorial (doar afișare, tokens only) — */
.gr-stat .gr-top{display:flex;align-items:flex-end;justify-content:space-between;gap:14px}
.gr-spark{width:96px;height:38px;flex-shrink:0;margin-bottom:8px}
.gr-alt{display:block;font-size:12px;color:var(--text2);margin-top:4px}
.gr-hcols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:0 15px;margin-top:8px}
.gr-hcols span{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text2)}
.gr-hrow{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:12px 14px 14px;margin-top:10px;box-shadow:var(--sh-1)}
.gr-hhead{display:flex;align-items:center;gap:10px}
.gr-hdate{font-family:var(--serif);font-size:13.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text)}
.gr-hage{font-size:11.5px;color:var(--text2);flex:1}
.gr-hdel{width:40px;height:40px;margin:-8px -10px -8px 0;display:grid;place-items:center;background:none;border:none;color:var(--text2);cursor:pointer;font-size:15px;border-radius:12px;flex-shrink:0;transition:.2s var(--e-out)}
.gr-hdel:hover{color:var(--emerg-ink)}
.gr-hcells{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
.gr-hcell b{font-family:var(--serif);font-weight:500;font-size:18px;letter-spacing:-.01em}
.gr-hcell .gr-hu{font-size:11px;font-weight:700;color:var(--text2);margin-left:3px}
.gr-hcell-empty{color:var(--muted);font-size:14px;padding-top:4px}
.gr-chip{display:inline-block;font-size:11px;font-weight:800;background:var(--sage-bg);color:var(--sage-ink);border-radius:20px;padding:2.5px 8px;margin-top:6px;white-space:nowrap}
.gr-chip.flat{background:var(--sand);color:var(--text2)}

/* ============ V6 · povestea zilei (moment de seară) ============ */
.story-note{background:linear-gradient(160deg,var(--champagne),var(--cream));padding:30px 26px 22px;text-align:center}
.story-note .st-kicker{font-size:11.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--rose-ink);font-weight:800}
.story-note .st-date{font-size:12px;color:var(--text2);margin-top:5px}
.story-note p{font-family:var(--serif);font-size:18.5px;line-height:1.6;color:var(--text);margin:18px auto 0;max-width:300px}
.story-note .st-close{display:block;margin:22px auto 0;background:none;border:1px solid var(--line2);border-radius:30px;padding:10px 22px;font-family:var(--sans);font-weight:800;font-size:13px;color:var(--text2);cursor:pointer;transition:.3s var(--e-out)}
.story-note .st-close:hover{background:var(--cream)}
.alb-year{display:flex;align-items:center;gap:14px;margin:22px 0 2px}
.alb-year i{flex:1;height:1px;background:var(--line2)}
.alb-year span{font-family:var(--serif);font-size:17px;letter-spacing:3px;color:var(--muted)}
.alb-add{display:flex;align-items:center;justify-content:center;gap:8px;width:min(100%,340px);margin:22px auto 0;background:var(--rose);color:var(--on-accent);border:none;border-radius:30px;padding:14px;font-family:var(--sans);font-weight:800;font-size:14.5px;cursor:pointer;box-shadow:var(--sh-1)}
.alb-add:active{transform:scale(.98)}
.alb-card{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh-1);background:var(--cream)}
.alb-card canvas{width:100%;height:auto;display:block}
.alb-count{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;gap:4px;background:rgba(30,24,20,.5);color:#FBF7F0;border-radius:20px;padding:5px 10px;font-size:12px;font-weight:800;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);pointer-events:none}
.alb-count i{font-size:13px}
.alb-actions{display:flex;gap:6px;justify-content:center}
.alb-actions button{flex:1;border:1px solid var(--line);background:var(--cream);border-radius:12px;padding:7px 4px;font-size:14px;color:var(--text2);cursor:pointer;transition:.2s var(--e-out)}
.alb-actions button:hover{color:var(--rose-ink);border-color:var(--rose)}
/* sunete */
.snd{display:flex;align-items:center;gap:14px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:15px 16px;margin-top:12px;box-shadow:var(--sh-1)}
.snd .si{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;font-size:22px;background:var(--lav-bg);color:var(--lav-deep);flex-shrink:0}
.snd b{font-family:var(--serif);font-weight:500;font-size:16.5px;display:block}
.snd p{font-size:12.5px;color:var(--text2);margin-top:1px}
.snd button{margin-left:auto;width:46px;height:46px;border-radius:50%;border:none;background:var(--rose-bg);color:var(--rose-ink);font-size:18px;cursor:pointer;transition:.25s var(--e-out);flex-shrink:0}
.snd button.playing{background:var(--rose-deep);color:var(--on-accent);animation:sndpulse 2.4s ease-in-out infinite}
@keyframes sndpulse{0%,100%{box-shadow:0 0 0 0 rgba(198,139,132,.35)}50%{box-shadow:0 0 0 9px rgba(198,139,132,0)}}
.snd-vol{width:100%;accent-color:var(--rose-ink);margin-top:16px}
.snd-note{display:flex;gap:11px;font-size:12.5px;color:var(--text2);background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:13px 15px;margin-top:14px;line-height:1.55}
.snd-note i{color:var(--sage-ink);font-size:18px;flex-shrink:0;margin-top:1px}
/* vaccinuri */
.vax-note{display:flex;gap:12px;background:var(--sage-bg);border:1px solid var(--line);border-radius:var(--r-m);padding:15px;font-size:13px;line-height:1.6;color:var(--text);margin-top:10px}
.vax-note i{color:var(--sage-ink);font-size:21px;flex-shrink:0;margin-top:2px}
.vax-item{display:flex;align-items:center;gap:12px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;margin-top:10px;box-shadow:var(--sh-1)}
.vax-item>i{color:var(--sage-ink);font-size:21px;flex-shrink:0}
.vax-item b{font-size:14.5px;display:block}
.vax-item span{font-size:12.5px;color:var(--text2)}
.vax-item button{margin-left:auto;background:none;border:none;color:var(--text2);cursor:pointer;font-size:16px;padding:12px;margin-right:-6px;border-radius:12px}
.vax-item button:hover{color:var(--emerg-ink)}
/* apeluri rapide */
.callrow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px}
.callrow a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:13px 6px;border-radius:16px;font-weight:800;font-size:11px;text-decoration:none;border:1px solid var(--line);text-align:center;line-height:1.25}
.callrow .c-ped{background:var(--sage-bg);color:var(--sage-ink)}
.callrow .c-mam{background:var(--rose-bg);color:var(--rose-ink)}
.callrow .c-sos{background:var(--emerg-bg);color:var(--emerg-ink)}
.callrow i{font-size:20px}
/* teme de font & mărimea textului */
body.f2{--serif:'Nunito',system-ui,sans-serif}
body.f3{--serif:Georgia,'Times New Roman',serif;--sans:Georgia,'Times New Roman',serif}
/* ascuns vizual, dar citit de screen reader (pentru titluri de structură) */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.t2{font-size:17px}
body.t3{font-size:19px}
/* „Text mai mare" trebuie să se simtă peste tot unde se CITEȘTE, nu doar în chat */
body.t2 .m.bot,body.t2 .hub .hs,body.t2 .tile p,body.t2 .art-body,body.t2 .hero-sub,body.t2 .jh-card b,body.t2 .jh-card small,body.t2 .mr-name,body.t2 .mr-note,body.t2 .mr-time,body.t2 .dj-entry p,body.t2 .qa-sub,body.t2 .row-set .rt,body.t2 .tl-card p,body.t2 .jr-card p,body.t2 .jr-day p,body.t2 .tg-row b,body.t2 .tg-row small,body.t2 .gr-hcell b,body.t2 .gr-hage,body.t2 .gr-alt,body.t2 .med-day,body.t2 .hp-row .rt,body.t2 .hp-row .rv,body.t2 .qa-it b,body.t2 .kr-born{font-size:1.06em}
body.t3 .m.bot,body.t3 .hub .hs,body.t3 .tile p,body.t3 .art-body,body.t3 .hero-sub,body.t3 .jh-card b,body.t3 .jh-card small,body.t3 .mr-name,body.t3 .mr-note,body.t3 .mr-time,body.t3 .dj-entry p,body.t3 .qa-sub,body.t3 .row-set .rt,body.t3 .tl-card p,body.t3 .jr-card p,body.t3 .jr-day p,body.t3 .tg-row b,body.t3 .tg-row small,body.t3 .gr-hcell b,body.t3 .gr-hage,body.t3 .gr-alt,body.t3 .med-day,body.t3 .hp-row .rt,body.t3 .hp-row .rv,body.t3 .qa-it b,body.t3 .kr-born{font-size:1.14em}
/* CRUCIAL: exact textul de SIGURANȚĂ trebuie să se poată mări – nu are voie să rămână mic
   când mama alege „Foarte mare" (notele „sună la medic", callout-urile de urgență, stările goale) */
/* `.ai-note` / `.ai-warn` („Sunt un asistent AI. Pot să greșesc") intră în ACEEAȘI listă:
   e text de siguranță, nu o notă de subsol decorativă. Dacă mama a cerut „Foarte mare", exact
   propoziția care spune cât de mult se poate baza pe răspuns nu are voie să rămână cea mai mică
   de pe ecran. `.res-care` e răspunsul de criză din Căutare – același motiv, cu atât mai mult. */
body.t2 .med-safe div,body.t2 .callout,body.t2 .disc,body.t2 .empty,body.t2 .vax-note,body.t2 .snd-note,body.t2 .ai-note,body.t2 .ai-warn,body.t2 .res-care{font-size:1.06em}
body.t3 .med-safe div,body.t3 .callout,body.t3 .disc,body.t3 .empty,body.t3 .vax-note,body.t3 .snd-note,body.t3 .ai-note,body.t3 .ai-warn,body.t3 .res-care{font-size:1.14em}


/* ============ V3 · călătoria pe zile + creștere ============ */
.jr-card{background:linear-gradient(150deg,var(--rose-bg),var(--cream));border:1px solid var(--line2);border-radius:var(--r-m);padding:18px;margin-top:14px;box-shadow:var(--sh-1)}
.jr-eyebrow{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--rose-ink)}
.jr-card h3{font-family:var(--serif);font-size:19px;margin-top:8px}
.jr-card p{font-size:13.5px;color:var(--text2);line-height:1.55;margin-top:5px}
.jr-more{margin-top:12px;background:none;border:none;color:var(--rose-ink);font-weight:800;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);padding:0}
.jr-day{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:15px 16px;margin-top:10px;box-shadow:var(--sh-1)}
.jr-day.today{background:var(--rose-bg);border-color:var(--rose)}
.jr-day.future{opacity:.55}
.jr-day .jr-d{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--rose-ink)}
.jr-day b{display:block;font-family:var(--serif);font-weight:500;font-size:16px;margin-top:4px}
.jr-day p{font-size:13px;color:var(--text2);line-height:1.55;margin-top:3px}
.gr-tabs{display:flex;gap:8px;margin-top:12px}
.gr-tabs .kid.on{background:var(--sage-bg);border-color:var(--sage);color:var(--sage-ink)}
.gr-chart{width:100%;border:1px solid var(--line);border-radius:var(--r-m);margin-top:12px;box-shadow:var(--sh-1)}
.gr-form{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-top:12px}
.gr-form input{border:1px solid var(--line);border-radius:14px;padding:12px;font-family:var(--sans);font-size:14px;color:var(--text);background:var(--cream);min-width:0}
.gr-form button{background:var(--sage-deep);color:var(--on-accent);border:none;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer;font-family:var(--sans)}
/* ============ V4 · onboarding refăcut ============ */
.onb-fields{padding:2px 2px 8px;text-align:left} /* pasul derulează întreg – fără scroll interior dublu */
.onb-label{display:block;text-align:left;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text2);margin:16px 2px 6px}
.onb-fields .onb-in{margin-top:0;text-align:left}
.onb-kid{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:10px;margin-top:10px}
.onb-krow{display:flex;gap:8px;align-items:center}
.onb-krow+.onb-krow{margin-top:8px}
.onb-krow .k-age{flex:1}
.onb-krow .k-unit{flex:1.2}
.onb-kdel{flex-shrink:0;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:none;color:var(--text2);cursor:pointer}
.onb-addkid{width:100%;margin-top:10px;background:none;border:1.5px dashed var(--line2);border-radius:var(--r-m);padding:13px;font-family:var(--sans);font-weight:800;font-size:14px;color:var(--text2);cursor:pointer}
.onb-addkid:hover{color:var(--rose-ink);border-color:var(--rose)}
/* ============ V4 · bara de cookie, compactă pentru aplicație ============ */
.ms-cookie-banner{left:50%;right:auto;bottom:14px;width:min(92vw,392px);transform:translateX(-50%);padding:20px 22px;border-radius:24px}
.ms-cookie-banner.hidden{transform:translateX(-50%) translateY(calc(100% + 40px))}
.ms-cookie-inner{display:flex;flex-direction:column;gap:12px}
.ms-ck-bisc{display:none}
.ms-cookie-text h2{font-size:17.5px;margin-bottom:5px}
.ms-cookie-text p{font-size:12px;line-height:1.55}
.ms-cookie-buttons{min-width:0;gap:8px}
.ms-cookie-fab{bottom:92px;left:16px;width:44px;height:44px}
@media(min-width:460px){.ms-cookie-fab{left:calc(50% - 204px)}} /* pe ecrane late, butonul de cookie stă lângă aplicație, nu în colțul ferestrei */
/* ============ V5 · acasă în stilul mockup ============ */
.apphead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:4px}
.applogo{height:44px;width:auto}
.ah-right{display:flex;gap:8px}
.greet-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.greet-row .greet{font-size:29px}
.greet-ill{width:132px;height:132px;object-fit:cover;object-position:38% 30%;border-radius:26px;flex-shrink:0;
  -webkit-mask-image:radial-gradient(105% 105% at 50% 45%,#000 62%,transparent 100%);mask-image:radial-gradient(105% 105% at 50% 45%,#000 62%,transparent 100%)}
.sechead{display:flex;align-items:center;gap:9px;margin:26px 0 4px}
.sec-leaf{color:var(--sage-ink);display:inline-flex}
.sechead h2{font-family:var(--serif);font-weight:500;font-size:20px;flex:1}
/* „Vezi tot" / „Vezi jurnal" aveau 18px înălțime și 14–16px până la butonul vecin: sub minimul
   de 24×24 din WCAG 2.5.8, fără să se încadreze nici în excepția de spațiere. Pe telefon, cu o
   mână, e o țintă pe care o ratezi. Creștem suprafața de atins cu padding și o compensăm cu
   margin negativ egal: aria de atingere ajunge la 24px, iar pe ecran NU se mișcă niciun pixel. */
.sechead button{background:none;border:none;color:var(--rose-ink);font-family:var(--sans);font-weight:800;font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:3px;padding:6px 4px;margin:-6px -4px}
.reco{display:flex;gap:14px;background:var(--rose-bg);border:1px solid var(--line2);border-radius:var(--r-m);padding:14px;margin-top:12px;cursor:pointer;box-shadow:var(--sh-1);transition:.3s var(--e-out)}
.reco:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.reco img{width:104px;height:118px;object-fit:cover;border-radius:16px;flex-shrink:0}
.reco-k{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--rose-ink)}
.reco-b h3{font-family:var(--serif);font-size:17.5px;line-height:1.2;margin-top:5px}
.reco-b p{font-size:12px;color:var(--text2);margin-top:4px;line-height:1.45}
.reco-btn{display:inline-flex;align-items:center;gap:6px;background:var(--rose-deep);color:var(--on-accent);font-size:12px;font-weight:800;padding:8px 14px;border-radius:30px;margin-top:9px}
.exp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:12px}
.exp{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;background:var(--cream);border:1px solid var(--line);border-radius:18px;padding:14px 6px;cursor:pointer;font-family:var(--sans);color:var(--text);transition:.25s var(--e-out);box-shadow:var(--sh-1)}
.exp:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.exp b{font-family:var(--serif);font-weight:500;font-size:13.5px;margin-top:6px}
.exp small{font-size:10.5px;color:var(--text2);line-height:1.25;font-weight:700}
.xi{width:46px;height:46px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.xi.rose{background:var(--rose-bg);color:var(--rose-ink)}
.xi.sage{background:var(--sage-bg);color:var(--sage-ink)}
.xi.sand{background:var(--sand-ic-bg);color:var(--sand-ic)}
.xi.peach{background:var(--peach-ic-bg);color:var(--peach-ic)}
.xi.lav{background:var(--lav-bg);color:var(--lav-deep)} /* lavanda somnului – aceleași tokens ca icoana din jurnal */
.med-plan .xi{width:42px;height:42px;font-size:19px} /* medalionul de pe cardul de tratament */
.jh-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
/* FLEX-COLUMN obligatoriu (fondatoarea, pe telefon, ziua lansării): un <button> își centrează
   VERTICAL conținutul din oficiu, iar grila întinde cardurile din același rând la înălțime egală —
   deci în cardul cu text mai scurt poza cobora și deasupra ei rămânea o fâșie de fundal (9-18px).
   Apărea și dispărea după limbă, fiindcă textele înfășoară diferit. Flex pe coloană o țintuiește sus. */
.jh-card{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);padding:0 0 13px;cursor:pointer;text-align:left;font-family:var(--sans);color:var(--text);overflow:hidden;box-shadow:var(--sh-1);transition:.25s var(--e-out)}
.jh-card:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.jh-card:active{transform:scale(.97)}
.jh-card .jh-img{display:block;height:98px;background-size:cover;background-position:center;margin-bottom:10px;border-bottom:1px solid var(--line)}
.jh-card b{display:block;font-size:14.5px;padding:0 13px}
.jh-card b i{font-size:14px;color:var(--rose-ink);margin-right:2px}
.jh-card small{display:block;font-size:11.5px;color:var(--text2);padding:2px 13px 0}
.jprev{display:flex;align-items:center;gap:12px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;margin-top:12px;cursor:pointer;box-shadow:var(--sh-1)}
.jprev b{font-family:var(--serif);font-weight:500;font-size:15.5px;display:block}
.jprev small{font-size:11.5px;color:var(--text2)}
.jprev>div{flex:1}
.jp-a{color:var(--muted)}
/* ============ V14 · Astăzi, dintr-o privire (Acasă) ============ */
.today-card{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;margin-top:12px;box-shadow:var(--sh-1);cursor:pointer;transition:.2s var(--e-out)}
.today-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.today-card:active{transform:scale(.985)}
.tg-head{display:flex;align-items:center;justify-content:space-between}
.tg-k{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--sage-ink)}
.tg-a{color:var(--muted);font-size:15px}
.tg-row{display:flex;align-items:center;gap:12px;margin-top:11px}
.tg-row .xi{width:38px;height:38px;font-size:17px}
.tg-row b{font-family:var(--serif);font-weight:500;font-size:15px;display:block}
.tg-row small{font-size:12px;color:var(--text2)}
/* foaia „Adaugă" */
.qa-sheet{position:fixed;inset:0;background:var(--scrim);z-index:80;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .35s var(--e-out)}
.qa-sheet.show{opacity:1;pointer-events:auto}
.qa-box{width:min(94vw,410px);background:var(--ivory);border-radius:26px 26px 0 0;padding:14px 18px calc(26px + env(safe-area-inset-bottom));max-height:90vh;max-height:90dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;transform:translateY(30px);transition:transform .35s var(--e-out)}
.qa-box::-webkit-scrollbar{width:0;height:0;display:none}
.qa-sheet.show .qa-box{transform:none}
.qa-grab{width:44px;height:5px;border-radius:3px;background:var(--line2);margin:0 auto 12px}
.qa-box h3{font-family:var(--serif);font-weight:500;font-size:19px;text-align:center;margin-bottom:10px}
.qa-it{display:flex;align-items:center;gap:12px;width:100%;background:var(--cream);border:1px solid var(--line);border-radius:16px;padding:9px 13px;margin-top:7px;cursor:pointer;font-family:var(--sans);color:var(--text);text-align:left;transition:.2s var(--e-out)}
.qa-it:hover{border-color:var(--rose)}
.qa-it b{font-size:14.5px;display:block}
.qa-it small{font-size:11.5px;color:var(--text2)}
/* Meniul „Adaugă" (multe iteme): o linie/item, fără subtitlu, ca să încapă pe telefon fără swipe (decizie fondatoare) */
#qaSheet .qa-it small{display:none}
#qaSheet .qa-it{padding:6px 13px;margin-top:5px}
#qaSheet .qa-it .xi{width:29px;height:29px;font-size:14px}
#qaSheet .qa-box{padding:8px 18px 10px}
#qaSheet .qa-box h3{margin-bottom:4px;font-size:18px}
.qa-sub{font-size:13.5px;color:var(--text2);text-align:center;line-height:1.5;margin:-2px 6px 12px}
/* „nu mai devreme de…" în foaia dozei rapide – aceeași culoare ca pe cardul din ecran */
.qa-sub.early{color:var(--emerg-ink)}
.qa-box input,.qa-box select{width:100%;border:1px solid var(--line2);border-radius:14px;padding:12px 14px;font-family:var(--sans);font-weight:600;font-size:14px;color:var(--text);background:var(--cream);margin-top:9px;outline:none}
.qa-box input:focus,.qa-box select:focus{border-color:var(--sage);box-shadow:var(--focus)}
.qa-row{display:flex;gap:8px}
.qa-row input{flex:1;min-width:0}
.qa-row select{flex-basis:46%;width:auto}
.qa-hint{font-size:11.5px;color:var(--text2);line-height:1.5;margin:8px 4px 0}
.qa-cancel{width:100%;background:none;border:none;color:var(--text2);font-family:var(--sans);font-weight:700;font-size:13.5px;padding:12px;cursor:pointer;margin-top:2px}
/* ============ V6 · galerie mood din colaje ============ */
.mood{display:flex;gap:10px;overflow-x:auto;margin-top:12px;padding:2px 2px 8px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.mood::-webkit-scrollbar{display:none}
.mtile{flex:0 0 auto;width:118px;height:148px;border-radius:20px;background-size:cover;background-position:center;border:1px solid var(--line);box-shadow:var(--sh-1);scroll-snap-align:start;transition:transform .3s var(--e-out)}
.mtile:first-child{margin-left:0}
.mtile:active{transform:scale(.97)}
/* ============ V7 · foto tematica din colaje ============ */
.hub .hi{background-size:cover;background-position:center;color:var(--on-accent)}
.hub .hi i{text-shadow:0 1px 6px rgba(70,50,40,.55);font-size:22px}
.hub-hero{height:150px;border-radius:var(--r-l);background-size:cover;background-position:center;margin-top:6px;box-shadow:var(--sh-1);border:1px solid var(--line)}
.art-hero{background-size:cover;background-position:center}
.art-hero #artIcon{width:64px;height:64px;border-radius:50%;background:rgba(251,247,240,.9);backdrop-filter:blur(4px);display:grid;place-items:center;font-size:30px;color:var(--rose-ink);box-shadow:0 8px 22px -10px rgba(70,50,40,.5)}
.art-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(70,50,40,.05),rgba(70,50,40,.18))}
.art-hero #artIcon{position:relative;z-index:1}
.onb-ill.photo{background-size:cover;background-position:center;font-size:0}

/* ============ V6 · coperta onboarding (fundal foto, editorial) ============ */
.onb.cover{background:var(--onb-bg) url(../assets/onboarding/onboarding1.webp) center bottom/cover no-repeat}
.onb-logo{display:block;width:158px;margin:20px auto 0;filter:drop-shadow(0 10px 24px rgba(120,90,70,.14));animation:logoPulse 4.5s var(--e-soft) infinite}
@keyframes logoPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@media(prefers-reduced-motion:reduce){.onb-logo{animation:none}}
.onb-cover-title{font-size:38px;line-height:1.16;letter-spacing:-.02em;margin-top:24px}
.onb-cover-title span{color:var(--rose-ink)}
.onb-heart{text-align:center;color:var(--rose-ink);font-size:16px;margin-top:16px}
.onb.cover .osub{font-size:16.5px;margin-top:16px}
.onb-cta.cover-cta{border-radius:36px;padding:19px;font-family:var(--serif);font-weight:500;font-size:19px;letter-spacing:.01em;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:0 14px 34px rgba(198,139,132,.38)}
.onb-cta.cover-cta i{font-size:19px}
.onb-skip.cover-skip{color:var(--rose-ink);font-size:14.5px;text-decoration:underline;text-underline-offset:5px;text-decoration-color:rgba(198,139,132,.5)}

/* ============ V6 · onboarding pasul 2 (etapa, editorial) ============ */
.onb.cover2{background:var(--onb-bg) url(../assets/onboarding/onboarding2.webp?v=2) center top/cover no-repeat;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
.onb-bgspace{height:64px;flex-shrink:0} /* aer deasupra titlului – tăcerea face parte din interfață */
.onb.cover2 .onb-cover-title{margin-top:14px}

/* ============ V6 · onboarding pasul 3 (numele, editorial) ============ */
.onb.cover3{background:var(--onb-bg) url(../assets/onboarding/onboarding3.webp) center top/cover no-repeat}
.onb-div{display:flex;align-items:center;gap:10px;justify-content:center;margin-top:12px}
.onb-div i{width:34px;height:1px;background:var(--line2)}
.onb-div span{color:var(--rose-ink);font-size:13px}
.oin{position:relative}
.oin>i{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rose-ink);font-size:19px;pointer-events:none}
.oin .onb-in{padding-left:46px;text-align:left;background:rgba(255,253,249,.92)}
.oin.k-agew{flex:1}
.oin.k-unitw{flex:1.2}
.onb.cover3 .onb-kid{background:none;border:none;padding:0;margin-top:10px}
.onb.cover3 .onb-addkid{background:rgba(255,253,249,.75)}
.onb-rose{font-family:var(--serif);font-size:21px;line-height:1.28;color:var(--rose-ink);text-align:center;margin-top:6px;letter-spacing:-.01em}
.osub-serif{font-family:var(--serif);font-size:15.5px;line-height:1.5;color:var(--text);margin-top:8px}
.onb.cover2 .onb-heart{margin-top:8px}
.onb.cover2 .onb-opts{gap:9px;margin-top:18px}
.onb.cover2 .onb-cta{margin-top:14px;padding:16px}
.opt.onb-choice{background:rgba(255,253,249,.94);border-radius:22px;padding:10px;gap:11px;box-shadow:var(--sh-1);align-items:center}
.opt.onb-choice.on{background:#fff;border-color:var(--rose)}
.onb-choice .oc-ic{width:54px;height:54px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:23px}
.onb-choice .oc-ic.sage{background:var(--sage-bg);color:var(--sage-ink)}
.onb-choice .oc-ic.rose{background:var(--rose-bg);color:var(--rose-ink)}
.onb-choice .oc-tx{flex:1;min-width:0;text-align:left}
.onb-choice .oc-tx b{display:block;font-size:15.5px}
.onb-choice .oc-tx small{display:block;font-size:12px;color:var(--text2);line-height:1.4;margin-top:2px;font-weight:600}
.onb-choice .oc-ph{width:62px;height:62px;border-radius:14px;background-size:cover;background-position:center;flex-shrink:0;border:1px solid var(--line)}
.onb-choice .oc-ar{color:var(--rose-ink);font-size:17px;flex-shrink:0}
.care-hero{background-size:cover;background-position:center}
.care-hero .ch-veil{position:absolute;inset:0;background:linear-gradient(120deg,rgba(232,238,227,.92),rgba(232,238,227,.68))}
.care-hero>*{position:relative;z-index:1}

/* ============ V8 · onboarding unificat + gestionarea copiilor ============ */
/* Un singur cadru editorial pentru TOȚI pașii: același set de fotografii calde,
   același văl subtil de lizibilitate, aceleași titluri, butoane și spațieri. */
.onb-dots{position:relative;z-index:1}
.onb-step{position:relative;z-index:1}
.onb[class*="cover"]::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(251,246,238,0) 0%,rgba(251,246,238,.20) 44%,rgba(251,246,238,.70) 82%,rgba(251,246,238,.94) 100%)}
/* pașii 4–6: fundaluri DISTINCTE din aceeași familie vizuală – nimic nu se repetă.
   Obiective → acuarela calmă din secțiuni; notificări → ursulețul de pe 404; Lumi → mama cu bebe din hero. */
.onb.cover4{background:var(--onb-bg) url(../assets/sectiune2.webp) 12% center/cover no-repeat}
.onb.cover5{background:var(--onb-bg) url(../assets/404.webp) 74% center/cover no-repeat}
.onb.cover6{background:var(--onb-bg) url(../assets/hero.webp) 82% center/cover no-repeat}
/* la ursuleț și la mama cu bebe, subiectul stă chiar sub text – vălul urcă mai sus,
   textul respiră, iar subiectul rămâne o prezență caldă, nu un zgomot */
.onb.cover5::before,.onb.cover6::before{background:linear-gradient(180deg,rgba(251,246,238,.86) 0%,rgba(251,246,238,.80) 40%,rgba(251,246,238,.55) 58%,rgba(251,246,238,.38) 72%,rgba(251,246,238,.90) 100%)}
.onb.cover4 .onb-choice,.onb.cover6 .onb-choice{background:rgba(255,253,249,.94)}
.onb-goal{gap:13px}
.onb-goal .oc-ic{width:48px;height:48px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:21px}
.onb-lumi-orb{width:104px;height:104px;border-radius:50%;background:rgba(255,253,249,.86);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:grid;place-items:center;color:var(--rose-ink);font-size:44px;margin:6px auto 0;box-shadow:var(--sh-1)}
/* Noaptea, onboarding-ul rămâne în lumina lui caldă de zi: copertele sunt fotografii luminoase,
   iar tokenii de noapte (text aproape alb) le-ar face ilizibile. Redeclarăm valorile de ZI
   scoped pe .onb (literale intenționat – NU var(), ca să nu creăm referințe circulare)
   și domolim totul o idee, ca intrarea la 3 dimineața să nu orbească. */
body.night .onb{--ivory:#F6F1E9;--cream:#FBF7F0;--sand:#EDE4D6;--champagne:#EBD9C2;--sage-bg:#E8EEE3;--rose-bg:#F5E9E5;--lav-bg:#EDECF1;--emerg-bg:#F6E4E0;--boy-bg:#E9F0F5;--boy-deep:#6F8FA9;--text:#463E3A;--text2:#6E645C;--muted:#B6ABA1;--line:#EFE7DB;--line2:#E6DACA;--champagne-deep:#B18E6A;--champ2:#E7C3BB;--pro-text:#6b4a3f;--sand-ic-bg:#F3E8D8;--sand-ic:#A8875F;--peach-ic-bg:#F7E7DA;--peach-ic:#C08A5F;--sh-1:inset 0 1px 0 rgba(255,255,255,.45),0 1px 2px rgba(120,90,70,.05),0 8px 22px rgba(120,90,70,.06);--sh-2:inset 0 1px 0 rgba(255,255,255,.5),0 10px 38px rgba(120,90,70,.11);filter:brightness(.94)}

/* Gestionarea copiilor în Profil – rânduri accesibile (44px), nu pastile înghesuite.
   Comută la un copil sau scoate-l, cu confirmare. */
.kidrow{display:flex;align-items:center;gap:12px;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:11px 13px;margin-top:10px;box-shadow:var(--sh-1)}
.kidrow.on{background:var(--rose-bg);border-color:var(--line2)}
.kidrow .kr-ic{width:42px;height:42px;border-radius:13px;background:var(--sage-bg);color:var(--sage-ink);display:grid;place-items:center;flex-shrink:0;font-size:21px}
.kidrow.on .kr-ic{background:var(--cream);color:var(--rose-ink)}
.kidrow .kr-b{flex:1;min-width:0;text-align:left;background:none;border:none;font-family:var(--sans);color:var(--text);cursor:pointer;padding:3px 0}
.kidrow .kr-name{display:block;font-weight:800;font-size:14.5px}
.kidrow .kr-age{display:block;font-size:12.5px;color:var(--text2);margin-top:1px}
.kidrow .kr-now{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;color:var(--rose-ink);margin-top:3px}
.kidrow .kr-del,.kidrow .kr-edit{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:none;color:var(--muted);cursor:pointer;flex-shrink:0;display:grid;place-items:center;font-size:18px;transition:.2s var(--e-out)}
.kidrow .kr-del:hover{color:var(--emerg-ink);border-color:var(--emerg-ink);background:var(--emerg-bg)}
.kidrow .kr-edit:hover{color:var(--rose-ink);border-color:var(--rose);background:var(--rose-bg)}
.kid-add{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:10px;background:none;border:1.5px dashed var(--line2);border-radius:var(--r-m);padding:13px;font-family:var(--sans);font-weight:800;font-size:14px;color:var(--text2);cursor:pointer;transition:.2s var(--e-out)}
.kid-add:hover{color:var(--rose-ink);border-color:var(--rose)}
/* ieșirea blândă din sarcină (audit 7.1): un rând discret sub listă, nu un buton mare – e un pas
   greu, nu o acțiune de administrare; fără chenar, fără roșu, fără dramatism */
.kid-nopreg{display:block;width:100%;margin-top:6px;background:none;border:none;padding:9px;font-family:var(--sans);font-weight:700;font-size:13px;color:var(--text2);opacity:.75;cursor:pointer;text-decoration:underline;text-underline-offset:3px;transition:.2s var(--e-out)}
.kid-nopreg:hover{opacity:1;color:var(--rose-ink)}

/* ---- Băiețel / fetiță – ales o dată, folosit peste tot (curbele OMS sunt pe sex) ----
   Selectat: băiețel = albastru pudrat, fetiță = roz – diferență vizibilă dintr-o privire. */
.k-sex{flex:1;justify-content:center;padding:13px;background:rgba(255,253,249,.92)}
.opt.k-sex[data-v="b"].on{background:var(--boy-bg);border-color:var(--boy)}
.opt.k-sex[data-v="b"].on i{color:var(--boy-deep)}
.kid[data-v="b"].on{background:var(--boy-bg);border-color:var(--boy);color:var(--boy-deep)}
.kid[data-v="b"].on i{color:var(--boy-deep)}
.gr-sexnote{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--muted);padding:4px 2px}
.gr-sexnote button{background:none;border:none;color:var(--rose-ink);font-weight:800;font-family:var(--sans);font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:4px}

/* ---- Calendar blând (selector de dată propriu – fără albastrul de sistem) ---- */
.cal-open{cursor:pointer;caret-color:transparent}
.cal-open::selection{background:transparent}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.cal-title{font-family:var(--serif);font-size:18.5px;color:var(--text);text-transform:capitalize}
.cal-nav{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--cream);color:var(--text2);font-size:18px;cursor:pointer;display:grid;place-items:center;transition:.2s var(--e-out)}
.cal-nav:hover{background:var(--sand)}
.cal-nav:disabled{opacity:.3;cursor:default}
.cal-years{display:flex;gap:7px;overflow-x:auto;padding:10px 2px 2px;-webkit-overflow-scrolling:touch}
.cal-years::-webkit-scrollbar{display:none}
.cal-year{flex-shrink:0;border:1px solid var(--line);background:var(--cream);color:var(--text2);border-radius:16px;padding:9px 14px;font-family:var(--sans);font-weight:800;font-size:13px;cursor:pointer;transition:.2s var(--e-out)}
.cal-year.on{background:var(--rose-bg);border-color:var(--rose);color:var(--rose-ink)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:10px}
.cal-dow{text-align:center;font-size:10.5px;font-weight:800;letter-spacing:.4px;color:var(--text2);padding:6px 0;text-transform:uppercase}
.cal-d{aspect-ratio:1;border:none;background:none;border-radius:50%;font-family:var(--sans);font-weight:700;font-size:14.5px;color:var(--text);cursor:pointer;display:grid;place-items:center;transition:.15s var(--e-out)}
.cal-d:hover{background:var(--sand)}
.cal-d:disabled{color:var(--muted);opacity:.6;font-weight:600;cursor:default;background:none}
.cal-d.today{box-shadow:inset 0 0 0 1.5px var(--line2)}
.cal-d.sel{background:var(--rose);color:var(--on-accent);box-shadow:0 6px 16px rgba(198,139,132,.4)}
/* selector de oră propriu – cald, în stilul calendarului (fără albastrul de sistem) */
.tp-preview{font-family:var(--serif);font-size:34px;color:var(--rose-ink);text-align:center;margin:8px 0 2px;letter-spacing:.02em}
.tp-sect{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:14px 2px 8px}
.tp-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.tp-c{aspect-ratio:1;border:1px solid var(--line);background:var(--cream);border-radius:50%;font-family:var(--sans);font-weight:700;font-size:14px;color:var(--text);cursor:pointer;display:grid;place-items:center;transition:.15s var(--e-out)}
.tp-c:hover{background:var(--sand)}
.tp-c.sel{background:var(--rose);color:var(--on-accent);border-color:var(--rose);box-shadow:0 6px 16px rgba(198,139,132,.4)}

/* ============ V9 · Acasă în două stări (fără cont / cu cont) ============ */
.greet-name{font-family:var(--serif);font-size:29px;font-weight:500;color:var(--rose-ink);line-height:1.12;letter-spacing:-.02em}
/* „Azi, Lumi spune:" – gândul zilei, în vocea ei, doar când ne cunoaștem */
.lumi-says{display:none;align-items:flex-start;gap:13px;background:var(--sage-bg);border:1px solid var(--line);border-radius:var(--r-l);padding:16px 17px;margin-top:16px;box-shadow:var(--sh-1)}
.lumi-says.show{display:flex}
.lumi-says .ls-ic{width:44px;height:44px;border-radius:50%;background:var(--cream);display:grid;place-items:center;color:var(--sage-ink);flex-shrink:0}
.lumi-says .ls-k{font-size:12px;font-weight:800;color:var(--sage-ink)}
.lumi-says .ls-q{font-family:var(--serif);font-style:italic;font-size:16.5px;line-height:1.45;color:var(--text);margin-top:4px}
.lumi-says .ls-save{margin-left:auto;background:none;border:none;color:var(--sage-ink);font-size:20px;cursor:pointer;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:.2s var(--e-out)}
.lumi-says .ls-save:active{transform:scale(.9)}
.lumi-says .ls-save.saved{color:var(--rose-ink)}
/* ---- Salvează un răspuns de la Lumi + cardul „Salvate" din Articole ---- */
.m.bot .msg-actions{margin-top:9px}
.m.bot .msg-save{display:inline-flex;align-items:center;gap:5px;background:none;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12.5px;color:var(--text2);cursor:pointer;font-family:inherit;transition:.2s var(--e-out)}
.m.bot .msg-save i{font-size:15px}
.m.bot .msg-save:active{transform:scale(.96)}
.m.bot .msg-save.on{color:var(--sage-ink);border-color:var(--sage-ink)}
.lrn-saved{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);padding:13px 15px;margin-top:14px;box-shadow:var(--sh-1);cursor:pointer;font-family:inherit;transition:.2s var(--e-out)}
.lrn-saved:active{transform:scale(.99)}
.lrn-saved .lsv-b{flex:1;min-width:0}
.lrn-saved .lsv-t{font-weight:800;font-size:15px;color:var(--text)}
.lrn-saved .lsv-s{font-size:12.5px;color:var(--text2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrn-saved .lsv-a{color:var(--muted);font-size:20px;flex-shrink:0}
#savedNoteBody{max-height:46vh;overflow-y:auto;font-size:15px;line-height:1.62;color:var(--text);margin:2px 0 10px}
#savedNoteSheet .sn-note{font-size:12px;color:var(--text2);margin-bottom:14px;line-height:1.5}
#savedNoteSheet .sn-del{color:var(--text2)}
/* invitația de profil – doar când nu ne cunoaștem încă */
.setup-card{display:none;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-l);padding:20px;margin-top:16px;box-shadow:var(--sh-1)}
.setup-card.show{display:block}
.setup-top{display:flex;gap:15px;align-items:flex-start}
.setup-av{width:64px;height:64px;border-radius:50%;background:var(--rose-bg);display:grid;place-items:center;color:var(--rose-ink);font-size:28px;flex-shrink:0}
.setup-card h3{font-family:var(--serif);font-weight:500;font-size:20px}
.setup-card p{font-size:13.5px;color:var(--text2);line-height:1.5;margin-top:5px}
.setup-cta{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin-top:16px;background:var(--rose);color:var(--on-accent);border:none;border-radius:30px;padding:15px;font-family:var(--sans);font-size:15px;font-weight:800;cursor:pointer;box-shadow:0 10px 26px rgba(198,139,132,.35);transition:.2s var(--e-out)}
.setup-cta:active{transform:scale(.98)}
/* nota caldă de la finalul paginii – diferită după stare */
.home-note{display:flex;align-items:center;gap:14px;margin:8px 2px 6px}
.home-note .hn-ic{width:52px;height:52px;border-radius:50%;background:var(--rose-bg);color:var(--rose-ink);display:grid;place-items:center;font-size:22px;flex-shrink:0}
.home-note.sage .hn-ic{background:var(--sage-bg);color:var(--sage-ink)}
.home-note b{font-family:var(--serif);font-weight:500;font-size:17.5px;display:block}
.home-note small{font-size:12.5px;color:var(--text2);line-height:1.45;display:block;margin-top:2px}
/* fără profil real (body.noprof): Profil = doar setările aplicației, Jurnal = invitație.
   Tot ce ține de copil poartă clasa .rp (requires profile) – nu ne prefacem că știm. */
body.noprof .rp{display:none}
body.solo .rp{display:none}
body.solo .rp.rmine{display:flex}
/* Salvate e și al ei, nu doar al copilului: pe „doar eu" colecția rămâne întreagă –
   acolo stau răspunsurile de la Lumi despre EA. Fără excepțiile astea, rândul de pe
   Articole se vedea (JS îi dă display inline, care bate CSS-ul), dar ecranul deschis
   era gol până la ultimul rând – nici măcar titlurile secțiunilor. Regula generală
   de mai sus le-ar face flex; astea sunt blocuri, deci primesc regula lor. */
body.solo .sect.rp.rmine{display:block}
body.solo #bmContinue.rmine,body.solo #bmSaved.rmine{display:block}
/* vizibil DOAR în „Sunt doar eu" – ex. rândul „Adaugă un copil" (secțiunea Copiii tăi e ascunsă în solo) */
.solo-only{display:none}
body.solo .sect.solo-only{display:block}
body.solo .row-set.solo-only{display:flex}
/* „S-a născut" pe sarcina din lista de copii – momentul trecerii din burtică în lume */
.kr-born{flex-shrink:0;border:1px solid var(--rose);background:var(--rose-bg);color:var(--rose-ink);border-radius:999px;padding:6px 12px;font-family:var(--sans);font-weight:700;font-size:12px;cursor:pointer;white-space:nowrap;transition:.2s var(--e-out)}
.kr-born:hover{background:var(--rose);color:var(--cream)}
body.noprof #jhGrid{display:none}
body.noprof #youConnect,body.noprof #jhConnect,body.noprof #bmConnect,body.noprof #drumConnect{display:block}

/* ============ V10 · ARTICOLE (redesign editorial, fotografii reale) ============ */
.lrn-search{display:flex;align-items:center;gap:11px;width:100%;background:var(--cream);border:1px solid var(--line2);border-radius:var(--r-m);padding:14px 17px;margin:4px 0 2px;box-shadow:var(--sh-1);cursor:pointer;font-family:var(--sans);color:var(--text2);font-size:15px;font-weight:600;text-align:left;transition:.2s var(--e-out)}
.lrn-search:hover{border-color:var(--sage)}
.lrn-search i{font-size:20px;color:var(--muted)}
/* toate categoriile vizibile dintr-o privire – grilă, nu carusel */
.cats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:6px 0 4px}
.cat{background:var(--cream);border:1px solid var(--line);border-radius:20px;padding:13px 6px 11px;text-align:center;cursor:pointer;box-shadow:var(--sh-1);transition:.25s var(--e-out);font-family:var(--sans);color:var(--text)}
.cat:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.cat:active{transform:scale(.97)}
.cat .ci{width:46px;height:46px;border-radius:50%;margin:0 auto 8px;display:grid;place-items:center;font-size:21px}
.cat b{display:block;font-size:12.5px;font-weight:800;line-height:1.15;min-height:2.3em;display:flex;align-items:center;justify-content:center}
.cat small{display:block;font-size:10.5px;color:var(--text2);margin-top:2px;font-weight:700}
.reco2{border-radius:var(--r-l);overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh-1);cursor:pointer;background:var(--cream);transition:.3s var(--e-out);margin-top:4px}
.reco2:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.reco2 img{width:100%;height:185px;object-fit:cover;display:block}
.reco2-b{padding:15px 17px 17px;position:relative}
.reco2 .rk{position:absolute;top:-14px;left:15px;background:var(--rose);color:var(--on-accent);font-size:10px;font-weight:800;letter-spacing:.08em;padding:6px 12px;border-radius:14px;text-transform:uppercase}
.reco2 h3{font-family:var(--serif);font-weight:500;font-size:20px;line-height:1.2;margin-top:8px}
.reco2 p{font-size:13px;color:var(--text2);line-height:1.5;margin-top:6px}
.reco2 .rbtn{display:inline-flex;align-items:center;gap:7px;background:var(--rose-deep);color:var(--on-accent);font-size:12.5px;font-weight:800;padding:10px 16px;border-radius:30px;margin-top:12px}
.pop{display:flex;align-items:center;gap:13px;padding:12px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.pop:last-child{border-bottom:none}
.pop img{width:62px;height:62px;border-radius:16px;object-fit:cover;flex-shrink:0;border:1px solid var(--line)}
.pop .pk{font-size:10px;font-weight:800;letter-spacing:.09em;color:var(--rose-ink);text-transform:uppercase}
.pop b{display:block;font-size:14.5px;line-height:1.25;margin-top:2px}
.pop small{display:block;font-size:11.5px;color:var(--text2);margin-top:3px;font-weight:700}
/* pagina de hub: erou foto + medalion, titlu centrat */
.hubhero2{height:200px;border-radius:var(--r-l);background-size:cover;background-position:center;margin-top:6px;border:1px solid var(--line);box-shadow:var(--sh-1)}
.hub-med{width:88px;height:88px;border-radius:50%;background:var(--cream);border:1px solid var(--line);display:grid;place-items:center;margin:-48px auto 0;position:relative;box-shadow:var(--sh-1);color:var(--rose-ink);font-size:36px}
.hub-title{text-align:center;margin-top:12px}
.hub-intro{text-align:center;max-width:300px;margin:6px auto 0}
.hub-ask{background:var(--rose-bg);border:1px solid var(--line2);border-radius:var(--r-l);padding:19px;margin-top:24px}
.hub-ask h3{font-family:var(--serif);font-weight:500;font-size:18.5px}
.hub-ask p{font-size:13.5px;color:var(--text2);line-height:1.5;margin-top:5px}
.hub-ask .ha-btn{display:inline-flex;align-items:center;gap:8px;background:var(--rose);color:var(--on-accent);border:none;border-radius:30px;padding:12px 18px;font-family:var(--sans);font-weight:800;font-size:13.5px;cursor:pointer;margin-top:13px;transition:.2s var(--e-out)}
.hub-ask .ha-btn:active{transform:scale(.97)}
/* rândurile de subcategorii – medalion în cerc moale, două rânduri, ca în mockup */
.sub .si2{width:44px;height:44px;border-radius:50%;background:var(--rose-bg);color:var(--rose-ink);display:grid;place-items:center;font-size:20px;flex-shrink:0}
.sub .st b{display:block;font-size:14.5px;font-weight:800;line-height:1.25}
.sub .st small{display:block;font-size:11.5px;color:var(--text2);margin-top:2px;font-weight:700}
/* articol: kicker + următorul */
/* ============ V12 · AMINTIREA ZILEI (fotografie pe tot ecranul, cu data și o frază) ============ */
.memday{position:absolute;inset:0;z-index:55;display:none;background:var(--photo-veil) center/cover no-repeat;animation:screenIn .5s var(--e-out)}
.memday.show{display:flex;flex-direction:column}
.memday::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(30,24,20,.30) 0%,rgba(30,24,20,0) 30%,rgba(30,24,20,0) 55%,rgba(30,24,20,.74) 100%)}
.memday .ox{position:relative;z-index:2;align-self:flex-end;margin:18px 18px 0;background:rgba(251,247,240,.22);border:none;color:#FBF7F0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.md-body{position:relative;z-index:2;margin-top:auto;padding:0 26px calc(30px + env(safe-area-inset-bottom));color:#FBF7F0}
.md-date{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.md-label{font-family:var(--serif);font-size:34px;line-height:1.15;margin-top:8px;letter-spacing:-.01em}
.md-line{font-family:var(--serif);font-style:italic;font-size:15.5px;opacity:.92;margin-top:10px}
.md-who{font-family:var(--sans);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-top:12px;opacity:.92}
.md-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.md-actions button{background:rgba(251,247,240,.16);border:1px solid rgba(251,247,240,.4);color:#FBF7F0;border-radius:30px;padding:11px 18px;font-family:var(--sans);font-weight:800;font-size:13px;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:.2s var(--e-out)}
.md-actions button:active{transform:scale(.96)}
.md-actions button.on{background:rgba(251,247,240,.92);color:#463E3A;border-color:transparent}
/* răsfoirea blândă între copii + familie */
.md-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.md-tabs:empty{display:none}
.md-tabs button{background:rgba(251,247,240,.14);border:1px solid rgba(251,247,240,.34);color:#FBF7F0;border-radius:30px;padding:8px 15px;font-family:var(--sans);font-weight:800;font-size:12.5px;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:.2s var(--e-out)}
.md-tabs button.on{background:rgba(251,247,240,.92);color:#463E3A;border-color:transparent}
/* galeria de poze a unei amintiri: zona mare avansează poza, punctele arată unde ești */
.md-photo-nav{position:absolute;inset:0;z-index:1;background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.md-photodots{position:absolute;top:64px;left:0;right:0;z-index:2;display:flex;gap:6px;justify-content:center;pointer-events:none}
.md-photodots i{width:7px;height:7px;border-radius:50%;background:rgba(251,247,240,.5);transition:.25s var(--e-out)}
.md-photodots i.on{background:#FBF7F0;width:18px;border-radius:4px}

/* ============ V13 · vălul de comutare – fără fulger de ecran la schimbarea copilului ============ */
#switchVeil{position:absolute;inset:0;z-index:95;background:var(--ivory);display:none;flex-direction:column;align-items:center;justify-content:center;gap:12px;opacity:1;transition:opacity .4s var(--e-soft)}
html.switching #switchVeil,html.booting #switchVeil{display:flex}
#switchVeil.off{opacity:0;pointer-events:none}
#switchVeil img{width:76px;animation:logoPulse 2.2s var(--e-soft) infinite}
#switchVeil b{font-family:var(--serif);font-weight:500;font-size:22px;color:var(--text);letter-spacing:-.01em}
#switchVeil span{font-size:13.5px;color:var(--text2)}

.art-kick{display:block;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--rose-ink);margin-top:16px}
.art-kick+h1{margin-top:6px}
.art-next{display:flex;align-items:center;justify-content:center;gap:9px;background:var(--rose);color:var(--on-accent);border:none;border-radius:var(--r-m);padding:16px;width:100%;font-family:var(--sans);font-size:15px;font-weight:800;cursor:pointer;margin-bottom:10px;box-shadow:0 10px 30px rgba(198,139,132,.4);transition:.2s var(--e-out);line-height:1.3}
.art-next:active{transform:scale(.98)}

/* ============ V15 · PERSONALIZAREA ACASĂ (liniștirea secțiunilor) ============ */
/* .hs-off are ultimul cuvânt: învinge și display-ul inline pus de renderJourneyCard pe #jrCard,
   și clasa .show a gândului zilei – alegerea ei nu poate fi suprascrisă de niciun renderer.
   E singurul !important al funcției, cu rost de garanție, nu de scurtătură. */
.hs-off{display:none !important}
/* zonele cu apăsare lungă: fără selecție de text și fără meniul nativ de apăsare lungă */
.hp-zone{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* rândurile din foaia „Personalizează Acasă" – în familia .row-set, dar butoane adevărate */
.hp-row{display:flex;align-items:center;gap:13px;width:100%;background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:11px 15px;margin-top:7px;cursor:pointer;font-family:var(--sans);color:var(--text);text-align:left;transition:.2s var(--e-out)}
.hp-row:hover{background:var(--sand)}
.hp-row:active{transform:scale(.99)}
.hp-row:focus-visible{outline:none;border-color:var(--sage);box-shadow:var(--focus)}
.hp-row .dot{width:9px;height:9px;border-radius:50%;background:var(--sage);flex-shrink:0;transition:background .3s var(--e-out)}
.hp-row.off .dot{background:var(--line2)}
.hp-row .rt{flex:1;font-weight:700;font-size:14.5px}
.hp-row .rv{color:var(--text2);font-size:13px;font-weight:700}
.hp-row.off .rt{color:var(--text2)}
/* „Gândul tău" pe Acasă – rândul ei, în serif, ca în jurnal */
.ht-card{background:var(--cream);border:1px solid var(--line);border-radius:var(--r-m);padding:16px 17px;margin-top:12px;box-shadow:var(--sh-1);cursor:pointer;transition:.2s var(--e-out)}
.ht-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.ht-card:active{transform:scale(.985)}
.ht-card p{font-family:var(--serif);font-style:italic;font-size:15.5px;line-height:1.55;color:var(--text)}
.ht-card small{display:block;margin-top:8px;font-size:12px;color:var(--text2)}
/* secțiune opțională pornită de EA dar încă goală: un loc pregătit, cu invitație și „+" */
.he-card{background:var(--cream);border:1.5px dashed var(--line2);border-radius:var(--r-m);padding:18px 16px;margin-top:12px;text-align:center}
.he-card p{font-family:var(--serif);font-size:14.5px;color:var(--text2);line-height:1.55}
.he-add{display:inline-flex;align-items:center;gap:6px;margin-top:12px;background:var(--rose);color:var(--on-accent);border:none;border-radius:30px;padding:10px 18px;font-family:var(--sans);font-weight:800;font-size:13px;cursor:pointer;transition:.2s var(--e-out)}
.he-add:active{transform:scale(.97)}

/* carnetele ei: actiunile din ecranul carnetului + lista de alegere la salvare; tile-ul de creare e o invitatie discreta (bordura punctata, ca .he-card) */
.myhub-actions{display:flex;flex-direction:column;gap:10px;margin:18px 0 8px}
#pickHubList{display:flex;flex-direction:column;gap:9px;margin-top:4px}
.cat-add{border:1.5px dashed var(--line2);background:transparent}

/* ============ BANNERUL DE COOKIE-URI, PESTE APLICAȚIE (blocant de lansare) ============
   Bannerul e `position:fixed; z-index:9000` (css/cookies.css) – adică deasupra a TOT ce are
   aplicația, inclusiv bara de navigare (`.nav`, z-20). La prima deschidere, `elementFromPoint`
   pe centrul fiecăruia dintre cele 5 taburi de jos întorcea `.ms-cookie-inner` /
   `.ms-cookie-buttons`: mama atingea „Acasă" și nu se întâmpla nimic. Nici măcar o eroare.
   `body.has-cookie-banner` e pus de cookie-banner.js exact cât timp bannerul e pe ecran,
   deci îl folosim ca ancoră și îl ridicăm DEASUPRA barei, nu peste ea.
   GDPR: bannerul nu se ascunde, nu se închide singur și nu-și pierde niciun buton – doar
   se mută cu o bară mai sus. Alegerea rămâne obligatorie.
   `padding-bottom:300px` din cookies.css e pentru landing (document care derulează);
   în aplicație body-ul nu derulează, deci nu ajuta la nimic aici. */
body.has-cookie-banner .ms-cookie-banner{bottom:calc(86px + env(safe-area-inset-bottom,0px))}
@media(max-width:760px){
  body.has-cookie-banner .ms-cookie-banner{
    bottom:calc(84px + env(safe-area-inset-bottom,0px));
    max-height:calc(100svh - 112px);
  }
}
