/* tokens.css — Dental Concept Studio
 * Sursa unică de adevăr pentru culoare, tipografie, spacing, umbre (CLAUDE.md §3, §8).
 * Paleta e măsurată pe fotografiile clinicii (k-means, 05.10.2026), nu luată din memorie.
 * Niciun hex hardcodat în componente (checklist §19).
 */

/* ============================================================================
   1. FONTURI — servite local (§12), doar subseturile latin + latin-ext.
   Testul de diacritice (§13): trecut la 150 px, roman și italic — ș/ț cu virgulă.
   ========================================================================= */
@font-face { font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('assets/fonts/BodoniModa-normal-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('assets/fonts/BodoniModa-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 700; font-display: swap;
  src: url('assets/fonts/BodoniModa-italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 700; font-display: swap;
  src: url('assets/fonts/BodoniModa-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400 600; font-display: swap;
  src: url('assets/fonts/HankenGrotesk-normal-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Hanken Grotesk'; font-style: normal; font-weight: 400 600; font-display: swap;
  src: url('assets/fonts/HankenGrotesk-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Geist Mono'; font-style: normal; font-weight: 400 500; font-display: swap;
  src: url('assets/fonts/GeistMono-normal-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Geist Mono'; font-style: normal; font-weight: 400 500; font-display: swap;
  src: url('assets/fonts/GeistMono-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  /* ==========================================================================
     2. PALETA — măsurată, cu sursa fiecărei valori
     ========================================================================= */
  --c-negru:     #040303;  /* fundalul fotografiilor macro ale dr. Săndulescu (58% din pixeli).
                              Secțiunile întunecate au EXACT negrul ăsta, ca fotografiile să
                              se topească în pagină, fără ramă. Nu se „îmbunătățește". */
  --c-ceramica:  #E7E7E9;  /* luminile ceramicii pe negru (L 220–245) */
  --c-umbra:     #AAA59F;  /* tonul median al ceramicii (L 150–190) */
  --c-portelan:  #EDECEA;  /* peretele alb al clinicii, încălzit spre ceramică */
  --c-portelan-2:#E2E0DC;  /* porțelanul, cu o treaptă mai adânc — secțiunea medicilor */
  --c-cerneala:  #141010;  /* text pe porțelan */
  --c-malva:     #6B5456;  /* umbrele de buze și gingie din fotografii */
  --c-malva-inc: #5B4F4E;
  --c-gingie:    #867375;  /* tonul de buze și gingie din fotografiile pe negru (k-means) */  /* malva, închisă pentru text */
  --c-lac:       #903A2D;  /* roșul scaunelor din cabinet (mediana pixelilor saturați) */

  /* roluri */
  --fundal-intunecat: var(--c-negru);
  --fundal-deschis:   var(--c-portelan);
  --text-pe-intunecat:        var(--c-ceramica);
  --text-pe-intunecat-2:      var(--c-umbra);
  --text-pe-deschis:          var(--c-cerneala);
  --text-pe-deschis-2:        var(--c-malva-inc);
  --linie-pe-intunecat:       color-mix(in srgb, var(--c-malva) 55%, var(--c-negru));
  --linie-pe-deschis:         color-mix(in srgb, var(--c-malva) 28%, var(--c-portelan));
  --accent:                   var(--c-lac);

  /* PERECHI DE CONTRAST — măsurate (WCAG), nu estimate
       ceramică  / negru        16,68 ✓
       umbra     / negru         8,43 ✓
       cerneală  / porțelan     16,01 ✓
       malva-inc / porțelan      6,65 ✓   / porțelan-2  5,96 ✓
       lac       / porțelan      6,29 ✓   / porțelan-2  5,63 ✓   — poate fi text pe deschis
       lac       / negru         2,77 ✗   NU ca text. Doar punctul „deschis acum", linii.
       malva     / negru         2,97 ✗   NU ca text. Doar linii fine.
     Text peste fotografie: doar pe plăcuța de legendă (--placuta), niciodată direct. */
  --placuta: color-mix(in srgb, var(--c-negru) 86%, transparent);

  /* ==========================================================================
     3. TIPOGRAFIE
     Bodoni Moda doar ≥ 40 px: firele subțiri dispar mai jos. Sub, Hanken Grotesk.
     ========================================================================= */
  --font-display: 'Bodoni Moda', 'Didot', 'Bodoni 72', Georgia, serif;
  --font-text:    'Hanken Grotesk', 'Segoe UI', system-ui, sans-serif;
  --font-mono:    'Geist Mono', ui-monospace, 'Cascadia Mono', Menlo, monospace;

  --step--2: clamp(0.75rem, 0.73rem + 0.08vw, 0.8rem);       /* 12–13  legende mono */
  --step--1: clamp(0.875rem, 0.85rem + 0.12vw, 0.94rem);     /* 14–15  note */
  --step-0:  clamp(1.0625rem, 1.03rem + 0.16vw, 1.125rem);   /* 17–18  TEXT DE BAZĂ */
  --step-1:  clamp(1.25rem, 1.18rem + 0.3vw, 1.4rem);        /* 20–22  introduceri */
  --step-2:  clamp(1.6rem, 1.35rem + 1vw, 2.2rem);           /* 26–35 */
  --step-3:  clamp(2.5rem, 1.9rem + 2.4vw, 4rem);            /* 40–64  Bodoni de la pragul ăsta */
  --step-4:  clamp(3rem, 2rem + 4vw, 5.5rem);                /* 48–88  titluri de secțiune */
  /* două trepte editoriale, câte una pe ecran (§6) */
  --step-6:  clamp(3.6rem, 1.8rem + 8vw, 9.5rem);            /* 58–152 */
  --step-7:  clamp(4.2rem, 1.4rem + 11.5vw, 11.5rem);        /* 67–184 deschiderea */

  --lh-gigant: 0.88;
  --lh-titlu: 0.98;
  --lh-text: 1.62;
  --ls-gigant: -0.035em;
  --ls-titlu: -0.02em;
  --ls-eticheta: 0.16em;
  /* 05.10, după prima privire: Niki — „zonele subțiri din scris sunt prea subțiri".
     Axa optică coborâtă de la 96 la 28 îngroașă firele de ~3 ori, grosimea urcă la 500.
     La titlurile mai mici (≤ 64 px), opsz 16: firele rămân vizibile și la corp mic. */
  --opsz-display: 28;
  --opsz-mic: 16;
  --greutate-display: 500;

  /* ==========================================================================
     4. SPAȚIU, RAZE, LĂȚIMI
     ========================================================================= */
  --sp-1: 0.25rem; --sp-2: 0.5rem; --sp-3: 0.75rem; --sp-4: 1rem; --sp-6: 1.5rem;
  --sp-8: 2rem; --sp-12: 3rem; --sp-16: 4rem; --sp-24: 6rem; --sp-32: 8rem;
  --sp-sectiune: clamp(5rem, 3rem + 8vw, 11rem);
  --gutter: clamp(1rem, 0.4rem + 2.6vw, 3rem);
  --container: 88rem;
  --masura: 60ch;
  --raza: 2px;              /* atlas: muchii aproape drepte, nu carduri rotunjite */

  /* ==========================================================================
     5. LUMINĂ ȘI UMBRE — o singură sursă: de sus, ca lampa de studio din
        fotografiile pe negru (luminile stau pe muchia de sus a ceramicii).
        Umbra cade drept în jos, colorată cu malva, nu negru la 20% (§8).
     ========================================================================= */
  --umbra-mica: 0 2px 6px rgb(37 24 26 / 0.10);
  --umbra-mare: 0 28px 60px -24px rgb(37 24 26 / 0.38), 0 8px 18px -8px rgb(37 24 26 / 0.18);
  /* pe negru, umbra malva nu se vede: o fotografie peste alta se desparte prin negru adânc */
  --umbra-pe-negru: 0 30px 60px -20px rgb(0 0 0 / 0.8);

  /* ==========================================================================
     6. MIȘCARE (§21, „specializat / tehnic"): exactă, nu moale
     ========================================================================= */
  --ease-exact: cubic-bezier(0.215, 0.61, 0.355, 1);   /* power3.out */
  --durata: 0.7s;
  --bara-mobil: 64px;
  --antet: 64px;            /* antetul fix; scena fixată îl ține minte */
}
