/* Unghii cu suflet — stari de componente care nu se exprima curat in utilitare.
   Culorile vin din tokenii temei (theme.css), deci merg in ambele variante. */
.pearl-line{background:linear-gradient(90deg,#F2DCD3 0%,#E8D6EA 33%,#D5E6E3 66%,#F3E9DC 100%)}
html{-webkit-tap-highlight-color:transparent;background:rgb(var(--c-surface))}
body{min-height:100dvh;overscroll-behavior-y:none}
.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{scrollbar-width:none}
.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.pt-safe{padding-top:env(safe-area-inset-top,0px)}
.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;display:inline-block;line-height:1}
.fill-1{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}
/* tab bar: pagina curenta */
.tabbar a[aria-current="page"]{color:rgb(var(--c-primary));font-weight:500}
/* inapoi la site (conventia demo-urilor), ridicat deasupra barelor */
.bdit-back{position:fixed;left:16px;bottom:16px;z-index:2147483000;display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:9999px;background:rgba(20,20,20,.96);color:#fff;font-family:Jost,'DM Sans',system-ui,sans-serif;font-size:13px;font-weight:500;letter-spacing:.02em;line-height:1;text-decoration:none;box-shadow:0 6px 24px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.14);transition:transform .2s ease}
.bdit-back:hover{transform:translateY(-2px)}.bdit-back svg{width:16px;height:16px;flex:none}
body.has-tabbar .bdit-back{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
/* pe pasii de rezervare: tab bar (64px) + foaia lipicioasa deasupra lui */
.sheet{bottom:calc(64px + env(safe-area-inset-bottom,0px))}
body.has-sheet .bdit-back{bottom:calc(226px + env(safe-area-inset-bottom,0px))}
body.has-bar .bdit-back{bottom:calc(192px + env(safe-area-inset-bottom,0px))}
/* servicii: rand selectabil */
.svc{transition:background-color .15s ease,box-shadow .15s ease}
.svc.is-on{background:rgb(var(--c-surface-container));box-shadow:0 2px 8px rgba(137,77,81,.08),0 0 0 1px rgb(var(--c-secondary) / .5)}
.svc.is-on .svc-price{color:rgb(var(--c-secondary))}
.svc-check{width:24px;height:24px;border-radius:9999px;background:rgb(var(--c-surface-container-high));display:flex;align-items:center;justify-content:center;flex:none;margin-top:2px;transition:background-color .15s ease}
.svc-check .material-symbols-outlined{font-size:16px;color:transparent}
.svc-check.is-on{background:rgb(var(--c-secondary))}.svc-check.is-on .material-symbols-outlined{color:rgb(var(--c-on-secondary))}
.svc-btn{width:36px;height:36px;border-radius:9999px;background:rgb(var(--c-surface-container-low));color:rgb(var(--c-on-surface));display:flex;align-items:center;justify-content:center;flex:none;transition:transform .15s ease,background-color .15s ease}
.svc-btn[aria-pressed="true"]{background:rgb(var(--c-primary));color:rgb(var(--c-on-primary))}
.svc-btn:active{transform:scale(.9)}
/* bara sticky de total (meniu + pasul 1) */
[data-sum-bar]{transition:transform .25s ease}
[data-sum-bar].is-hidden{transform:translateY(110%)}
/* chips de categorie / galerie */
.chip{height:36px;padding:0 16px;border-radius:9999px;background:rgb(var(--c-surface-container-lowest));color:rgb(var(--c-on-surface-variant));box-shadow:0 1px 3px rgba(30,23,25,.04);white-space:nowrap;flex:none}
.chip.is-on{background:rgb(var(--c-primary));color:rgb(var(--c-on-primary));box-shadow:0 1px 3px rgba(0,0,0,.12)}
/* specialista */
.spec-card{position:relative;background:rgb(var(--c-surface-container-lowest));box-shadow:0 1px 4px rgba(30,23,25,.04);transition:background-color .15s ease}
.spec-card.is-on{background:rgb(var(--c-surface-container));box-shadow:0 2px 8px rgba(137,77,81,.08)}
.spec-card .sel{display:none;position:absolute;top:-10px;right:-8px;width:24px;height:24px;border-radius:9999px;background:rgb(var(--c-secondary));color:rgb(var(--c-on-secondary));align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.spec-card.is-on .sel{display:flex}
/* calendar */
.cal-day{width:36px;height:36px;border-radius:9999px;background:rgb(var(--c-surface-container-low));color:rgb(var(--c-on-surface));font-size:13px;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
.cal-day.is-today{box-shadow:inset 0 0 0 1px rgb(var(--c-on-tertiary-container))}
.cal-day.is-on{background:linear-gradient(90deg,#F2DCD3,#E8D6EA,#D5E6E3,#F3E9DC);color:#1E1719;font-weight:600;transform:scale(1.05);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.cal-off{color:rgb(var(--c-outline-variant));text-decoration:line-through;padding:8px 0;font-size:13px;text-align:center}
.slot-group{display:flex;align-items:center;gap:8px;margin:10px 0 2px}
.slot{height:44px;width:100%;border-radius:9999px;background:rgb(var(--c-surface-container-lowest));box-shadow:0 1px 3px rgba(30,23,25,.05);display:flex;align-items:center;justify-content:center;color:rgb(var(--c-on-surface));font-size:13.5px;font-variant-numeric:tabular-nums}
.slot.is-taken{background:rgb(var(--c-surface-container-high));color:rgb(var(--c-outline));text-decoration:line-through;box-shadow:none;cursor:not-allowed}
.slot.is-on{background:linear-gradient(90deg,#F2DCD3,#E8D6EA,#D5E6E3,#F3E9DC);color:#1E1719;font-weight:600}
.slot-last{position:absolute;top:-6px;right:-4px;padding:2px 6px;border-radius:9999px;background:rgb(var(--c-secondary));color:rgb(var(--c-on-secondary));font-size:8px;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 1px 3px rgba(0,0,0,.15)}
/* formular: control segmentat + bife */
.seg{flex:1;text-align:center;padding:10px 0;border-radius:9999px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:rgb(var(--c-on-surface-variant))}
.seg.is-on{background:rgb(var(--c-surface-container-lowest));color:rgb(var(--c-primary));box-shadow:0 1px 4px rgba(30,23,25,.06)}
.chk{width:20px;height:20px;border-radius:8px;background:rgb(var(--c-surface-container-high));color:transparent;display:flex;align-items:center;justify-content:center;flex:none}
.chk.is-on{background:rgb(var(--c-secondary));color:rgb(var(--c-on-secondary))}
.field{width:100%;background:transparent;border:0;border-bottom:1px solid rgb(var(--c-on-surface) / .15);padding:6px 0;font-family:'EB Garamond',Georgia,serif;font-size:20px;color:rgb(var(--c-on-surface));border-radius:0}
.field:focus{outline:none;border-bottom-color:rgb(var(--c-secondary))}
.field::placeholder{font-style:italic;color:rgb(var(--c-on-surface-variant) / .5)}
/* galerie: masonry pe doua coloane + lightbox */
.masonry{column-count:2;column-gap:10px}.masonry figure{break-inside:avoid;margin:0 0 10px}
.masonry img{display:block;width:100%;height:auto;border-radius:16px}
#lightbox[hidden]{display:none}
#lightbox{position:fixed;inset:0;z-index:80;background:rgba(21,16,14,.92);display:flex;align-items:center;justify-content:center;padding:24px}
#lightbox img{max-width:100%;max-height:100%;border-radius:18px}
/* fara blur: glow-urile sunt gradiente radiale */
.glow{background:radial-gradient(closest-side,rgb(var(--c-secondary) / .18),transparent)}

/* ===================== STRATUL DE LUMINA =====================
   Aur lustruit, perle, scantei. Totul pe gradiente + transform/opacity:
   zero blur, zero filtre — compozitorul de pe iPhone ramane rece. */
[data-theme="portelan"]{
  --cta-top:#F7DF9B;--cta-mid:#DDB258;--cta-deep:#A2731F;--cta-ink:#231604;--cta-glow:rgba(169,120,42,.38);
  --lux-a:#7A5A14;--lux-b:#D9A83F;--lux-c:#A8781F;--lux-d:#E8C568;--spark:#D9AE4F;
  --halo:rgba(233,201,127,.26);
}
[data-theme="fucsia"]{
  --cta-top:#EC86AC;--cta-mid:#C73F70;--cta-deep:#7E1D42;--cta-ink:#FFF6F2;--cta-glow:rgba(178,58,99,.30);
  --lux-a:#9C6B1F;--lux-b:#F0D08A;--lux-c:#C9A24C;--lux-d:#FBE9BC;--spark:#F0D08A;
  --halo:rgba(240,208,138,.22);
}
.logo-mark{height:46px;width:auto;flex:none;filter:none}
.logo-sm{height:36px}
/* --- butoanele pastila devin metal lustruit, cu luciu care trece periodic --- */
a.bg-primary.rounded-full,button.bg-primary.rounded-full{
  background-image:linear-gradient(180deg,var(--cta-top),var(--cta-mid) 46%,var(--cta-deep));
  color:var(--cta-ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 6px rgba(0,0,0,.22),0 12px 28px var(--cta-glow);
  position:relative;overflow:hidden;isolation:isolate;border:0;
}
a.bg-primary.rounded-full::after,button.bg-primary.rounded-full::after{
  content:"";position:absolute;top:-30%;bottom:-30%;left:0;width:44%;z-index:1;pointer-events:none;
  background:linear-gradient(105deg,transparent 8%,rgba(255,255,255,.6) 50%,transparent 92%);
  transform:translateX(-240%) skewX(-18deg);
}
/* --- titluri cu aur lichid --- */
.text-lux{background-image:linear-gradient(100deg,var(--lux-a) 0%,var(--lux-b) 38%,var(--lux-c) 62%,var(--lux-d) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
/* pe fundal intunecat (CTA final, biletul de confirmare) aurul devine sampanie luminoasa */
.bg-primary-container .text-lux,.bg-candle .text-lux{background-image:linear-gradient(100deg,#D8AF5E 0%,#FBE9BC 40%,#E7C873 62%,#FFF3D6 100%)}
/* --- rama de bijuterie pentru fotografia principala --- */
.frame-lux{position:relative;border-radius:28px;padding:9px;
  background:linear-gradient(135deg,#F7E8C8 0%,#E9C97F 26%,#A8782A 52%,#F3E3B5 74%,#C89A45 100%);
  box-shadow:0 26px 60px rgba(70,45,10,.28),inset 0 1px 0 rgba(255,255,255,.65)}
.frame-lux .ph{position:relative;border-radius:20px;overflow:hidden;background:rgb(var(--c-surface-container-high))}
.frame-lux .ph::after{content:"";position:absolute;inset:0;border-radius:20px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -70px 70px -40px rgba(30,15,0,.38)}
.frame-lux .corner{position:absolute;width:26px;height:26px;border:2px solid rgba(255,251,240,.9);z-index:2;pointer-events:none}
.frame-lux .corner.tl{top:18px;left:18px;border-right:0;border-bottom:0;border-top-left-radius:12px}
.frame-lux .corner.br{bottom:18px;right:18px;border-left:0;border-top:0;border-bottom-right-radius:12px}
/* --- scantei (diamante mici care clipesc) --- */
.spark{position:absolute;color:var(--spark);line-height:1;pointer-events:none;z-index:3;
  text-shadow:0 0 6px rgba(255,240,200,.9),0 0 14px rgba(233,201,127,.55)}
/* --- separatoare cu diamant --- */
.div-lux{display:flex;align-items:center;gap:12px;color:var(--lux-c)}
.div-lux::before,.div-lux::after{content:"";height:1px;flex:1;
  background:linear-gradient(90deg,transparent,var(--lux-b) 40%,var(--lux-c) 60%,transparent)}
/* --- halou de lumina in sectiunile cheie (gradient radial, nu blur) --- */
.hero-zone{background-image:radial-gradient(130% 70% at 50% -12%,var(--halo),transparent 62%)}
.lux-section{position:relative;background-image:
  radial-gradient(120% 80% at 110% 0%,var(--halo),transparent 55%),
  radial-gradient(100% 70% at -15% 100%,rgba(232,207,196,.35),transparent 60%)}
/* --- inainte / dupa --- */
.ba{position:relative;border-radius:22px;overflow:hidden;aspect-ratio:4/5;max-width:100%;
  box-shadow:0 20px 48px rgba(60,40,10,.22);touch-action:pan-y}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:100%}
.ba .after{clip-path:inset(0 0 0 var(--cut,50%))}
.ba .bar{position:absolute;top:0;bottom:0;left:var(--cut,50%);width:2px;margin-left:-1px;z-index:2;
  background:linear-gradient(180deg,var(--lux-d),var(--lux-c) 50%,var(--lux-d));box-shadow:0 0 12px rgba(0,0,0,.35)}
.ba .knob{position:absolute;top:50%;left:var(--cut,50%);transform:translate(-50%,-50%);z-index:3;
  width:46px;height:46px;border-radius:9999px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,var(--cta-top),var(--cta-mid) 55%,var(--cta-deep));color:var(--cta-ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 8px 20px rgba(0,0,0,.35);font-size:18px;letter-spacing:-1px}
.ba input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;z-index:4;margin:0}
.ba .tag{position:absolute;top:12px;z-index:2;padding:5px 11px;border-radius:9999px;font-size:9.5px;
  letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:#fff;background:rgba(20,14,8,.55)}
.ba .tag.b{left:12px}.ba .tag.a{right:12px;background:linear-gradient(180deg,var(--cta-top),var(--cta-deep));color:var(--cta-ink)}
/* --- banda care curge cu serviciile (marquee) --- */
.marquee{overflow:hidden;position:relative}
.marquee .mq{display:flex;gap:28px;width:max-content;white-space:nowrap;
  font-family:'EB Garamond',Georgia,serif;font-style:italic;font-size:19px;color:var(--lux-c)}
.marquee .mq span::after{content:"✦";margin-left:28px;font-style:normal;font-size:12px;color:var(--lux-b)}
/* --- carduri cu muchie aurie discreta --- */
.card-lux{box-shadow:inset 0 0 0 1px rgba(201,162,76,.35),0 10px 26px rgba(70,45,10,.10)}
/* --- stari selectate: perla cu inel de aur --- */
.slot.is-on,.cal-day.is-on{box-shadow:inset 0 0 0 1px var(--lux-c),0 6px 16px rgba(169,120,42,.3)}
/* --- miscari (doar daca utilizatorul nu a cerut miscare redusa) --- */
@media (prefers-reduced-motion:no-preference){
  a.bg-primary.rounded-full::after,button.bg-primary.rounded-full::after{animation:sheen 3.6s ease-in-out infinite}
  @keyframes sheen{0%,58%{transform:translateX(-240%) skewX(-18deg)}88%,100%{transform:translateX(340%) skewX(-18deg)}}
  .spark{animation:twinkle 2.6s ease-in-out infinite}
  @keyframes twinkle{0%,100%{opacity:.25;transform:scale(.72) rotate(0deg)}50%{opacity:1;transform:scale(1.12) rotate(18deg)}}
  .marquee .mq{animation:mq 26s linear infinite}
  @keyframes mq{to{transform:translateX(-50%)}}
  html.js [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
  html.js [data-reveal].in{opacity:1;transform:none}
}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
