/* =============================================================
 *  tokens.css – sistemul de design EvaluareImobil CRM.
 *  O singură sursă de adevăr pentru variabile; temele comută prin
 *  atributul data-theme pe <html> (dark implicit). Tailwind e mapat pe
 *  aceste variabile (vezi config-ul din layout).
 * ============================================================= */

:root, [data-theme="dark"] {
    --bg:#0A0D13; --bg-elev:#0E121A; --s1:#12161F; --s2:#171D28; --s3:#1E2632;
    --line:rgba(255,255,255,.07); --line-2:rgba(255,255,255,.12);
    --t1:#E9EDF4; --t2:#9AA6B8; --t3:#606B7D;
    --accent:#3E6FD6; --accent-hi:#7FA6F2; --accent-ct:#FFFFFF; --accent-soft:rgba(96,140,230,.15); --ring:rgba(120,160,240,.45);
    --new-fg:#AEB9CA; --new-bg:rgba(148,163,184,.13); --new-dot:#8794A8;
    --called-fg:#54C3BF; --called-bg:rgba(58,190,185,.13); --called-dot:#3FB6B1;
    --follow-fg:#DCA95A; --follow-bg:rgba(220,169,90,.13); --follow-dot:#CE9A44;
    --rej-fg:#E07E8A; --rej-bg:rgba(224,126,138,.13); --rej-dot:#D2687A;
    --won-fg:#5FBE86; --won-bg:rgba(95,190,134,.13); --won-dot:#4CAE73;
    --agcy-fg:#B79BF0; --agcy-bg:rgba(150,120,240,.15);
    --pos:#5FBE86; --neg:#E07E8A;
    --sh1:0 1px 2px rgba(0,0,0,.5); --sh2:0 12px 34px -14px rgba(0,0,0,.75);
    --ph1:#1a222f; --ph2:#0d1119;
    --ease-out:cubic-bezier(.22,.61,.36,1); --ease-in-out:cubic-bezier(.65,0,.35,1);
    --ease-emph:cubic-bezier(.2,0,0,1); --ease-exit:cubic-bezier(.4,0,1,1);
    --d1:120ms; --d2:200ms; --d3:320ms; --d4:480ms; --stagger:60ms;
    --r1:8px; --r2:10px; --r3:14px; --r4:18px; --r5:24px; --rp:999px;
}
[data-theme="light"] {
    --bg:#F4F6FA; --bg-elev:#EAEEF4; --s1:#FFFFFF; --s2:#F7F9FC; --s3:#EDF1F7;
    --line:rgba(16,24,40,.10); --line-2:rgba(16,24,40,.16);
    --t1:#111722; --t2:#54617A; --t3:#8A94A6;
    --accent:#2F62C4; --accent-hi:#2F62C4; --accent-ct:#FFFFFF; --accent-soft:rgba(47,98,196,.10); --ring:rgba(47,98,196,.30);
    --new-fg:#55617A; --new-bg:#EDF0F5; --new-dot:#8794A8;
    --called-fg:#0E8F8A; --called-bg:#E0F4F3; --called-dot:#12A19B;
    --follow-fg:#956412; --follow-bg:#FAF0DC; --follow-dot:#C68A2A;
    --rej-fg:#C0384A; --rej-bg:#FBE7E9; --rej-dot:#D2687A;
    --won-fg:#1F8C56; --won-bg:#E3F4EA; --won-dot:#2FA368;
    --agcy-fg:#6D3FC4; --agcy-bg:rgba(109,63,196,.10);
    --pos:#1F8C56; --neg:#C0384A;
    --sh1:0 1px 2px rgba(16,24,40,.06); --sh2:0 18px 44px -18px rgba(16,24,40,.22);
    --ph1:#e7ecf3; --ph2:#dbe2ec;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
    margin:0; background:var(--bg); color:var(--t1);
    font-family:'Geist', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
    font-variant-numeric:tabular-nums; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
    transition:background .35s ease, color .35s ease;
}
::selection { background:var(--accent-soft); color:var(--t1); }
::-webkit-scrollbar { width:11px; height:11px; }
::-webkit-scrollbar-thumb { background:var(--line-2); border-radius:99px; border:3px solid transparent; background-clip:content-box; }

/* Câmpuri: inel de focus consecvent */
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--ring); }

/* Cifre tabulare peste tot unde contează alinierea (prețuri, scoruri) */
.tnum { font-variant-numeric:tabular-nums; }

/* Badge-uri de status – corespund enum-ului new/called/followup/rejected/won */
.st-new      { background:var(--new-bg);    color:var(--new-fg); }
.st-called   { background:var(--called-bg); color:var(--called-fg); }
.st-followup { background:var(--follow-bg); color:var(--follow-fg); }
.st-rejected { background:var(--rej-bg);    color:var(--rej-fg); }
.st-won      { background:var(--won-bg);    color:var(--won-fg); }
.st-new .dot{background:var(--new-dot)} .st-called .dot{background:var(--called-dot)}
.st-followup .dot{background:var(--follow-dot)} .st-rejected .dot{background:var(--rej-dot)} .st-won .dot{background:var(--won-dot)}

/* Badge-uri tip vânzător – persoană fizică / agenție / neclasificat */
.sb-private { background:var(--won-bg);  color:var(--won-fg); }
.sb-agency  { background:var(--agcy-bg); color:var(--agcy-fg); }
.sb-unknown { background:var(--new-bg);  color:var(--new-fg); }

/* Animații */
@keyframes fadeUp   { from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
@keyframes gTextIn  { from{ opacity:0; transform:translateY(12px); filter:blur(6px); } to{ opacity:1; transform:none; filter:blur(0); } }
@keyframes gOut     { 0%,58%{ opacity:1; } 100%{ opacity:0; transform:translateY(-10px); filter:blur(5px); visibility:hidden; } }
@keyframes panelIn  { from{ opacity:0; transform:scale(.985) translateY(8px); } to{ opacity:1; transform:none; } }
@keyframes pageIn   { from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
@keyframes shimmer  { 0%{ background-position:180% 0; } 100%{ background-position:-180% 0; } }
@keyframes livedot  { 0%,100%{ opacity:1; } 50%{ opacity:.35; } }

/* Intrare eșalonată: pune style="--i:N" pe element */
.enter { opacity:0; animation:fadeUp var(--d3) var(--ease-out) both; animation-delay:calc(var(--stagger) * var(--i, 0)); }
.page-enter { animation:pageIn var(--d3) var(--ease-out) both; }
.live-dot { display:inline-block; width:7px; height:7px; border-radius:9999px; background:var(--pos); box-shadow:0 0 0 3px color-mix(in srgb, var(--pos) 22%, transparent); animation:livedot 1.6s var(--ease-in-out) infinite; }

/* Skeleton la încărcare */
.skeleton {
    background:linear-gradient(100deg, var(--ph2) 30%, var(--ph1) 50%, var(--ph2) 70%);
    background-size:200% 100%; animation:shimmer 1.3s linear infinite; border-radius:var(--r2);
}

/* Ecranul de Salut (overlay peste dashboard, se stinge singur) */
.greet-overlay {
    position:fixed; inset:0; z-index:50; display:flex; flex-direction:column; align-items:center; justify-content:center;
    background:radial-gradient(72% 60% at 50% 42%, var(--accent-soft), transparent 70%), var(--bg);
    animation:gOut 1.8s var(--ease-in-out) forwards; pointer-events:none;
}

/* =============================================================
 *  Lightbox galerie (/anunt/{id}) – vanilla JS, fără dependințe.
 * ============================================================= */
/* Blochează scroll-ul paginii cît timp lightbox-ul e deschis (iOS-safe). */
body.lb-lock { position:fixed; left:0; right:0; width:100%; overflow:hidden; }

.lb {
    position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center;
    background:rgba(6,8,12,.86); backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px);
    opacity:0; transition:opacity var(--d3) var(--ease-out);
    touch-action:none; user-select:none; -webkit-user-select:none;
}
.lb.is-open { opacity:1; }
.lb.is-closing { opacity:0; }

/* Banda cu toate imaginile; se translatează pe orizontală (deget/săgeți). */
.lb-track { position:absolute; inset:0; display:flex; will-change:transform; }
.lb-track.animate { transition:transform var(--d3) var(--ease-out); }
.lb-slide { flex:0 0 100%; height:100%; display:flex; align-items:center; justify-content:center; padding:clamp(8px,3vw,40px); box-sizing:border-box; }
.lb-slide img {
    max-width:100%; max-height:100%; object-fit:contain; border-radius:var(--r2);
    box-shadow:0 24px 70px -20px rgba(0,0,0,.8); will-change:transform;
    -webkit-user-drag:none; user-drag:none;
}
.lb-slide img.zoomed { cursor:grab; }

/* Butoane (X + săgeți) */
.lb-btn {
    position:absolute; z-index:2; display:grid; place-items:center; color:var(--t1);
    background:rgba(20,26,36,.55); border:1px solid var(--line-2); border-radius:var(--rp);
    cursor:pointer; transition:background var(--d2) var(--ease-out), transform var(--d2) var(--ease-out), opacity var(--d2) var(--ease-out);
    backdrop-filter:blur(4px);
}
.lb-btn:hover { background:rgba(40,50,66,.75); }
.lb-btn:active { transform:scale(.92); }
.lb-btn:focus-visible { outline:none; box-shadow:0 0 0 3px var(--ring); }
.lb-close { top:14px; right:14px; width:44px; height:44px; }
.lb-nav { top:50%; margin-top:-26px; width:52px; height:52px; }
.lb-prev { left:16px; } .lb-next { right:16px; }
.lb-nav svg, .lb-close svg { width:24px; height:24px; }
.lb-btn[hidden] { display:none; }

/* Contor + puncte */
.lb-bar { position:absolute; left:0; right:0; bottom:max(16px, env(safe-area-inset-bottom)); z-index:2; display:flex; flex-direction:column; align-items:center; gap:9px; pointer-events:none; }
.lb-counter { font-size:12.5px; font-weight:600; color:var(--t1); background:rgba(20,26,36,.55); border:1px solid var(--line-2); border-radius:var(--rp); padding:4px 11px; backdrop-filter:blur(4px); font-variant-numeric:tabular-nums; }
.lb-dots { display:flex; gap:7px; pointer-events:auto; }
.lb-dot { width:7px; height:7px; border-radius:var(--rp); background:var(--line-2); border:0; padding:0; cursor:pointer; transition:background var(--d2) var(--ease-out), transform var(--d2) var(--ease-out); }
.lb-dot.on { background:var(--accent-hi); transform:scale(1.3); }

/* Pe mobil: săgeți discrete (contorul rămîne clar). */
@media (max-width: 640px) {
    .lb-nav { width:40px; height:40px; margin-top:-20px; opacity:.4; background:rgba(20,26,36,.4); }
    .lb-nav svg { width:20px; height:20px; }
    .lb-prev { left:6px; } .lb-next { right:6px; }
}

/* Respectă prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
    .enter { opacity:1; }
    .greet-overlay { display:none !important; }
}
