/* ============================================================================
   3SIXTY DEGREE SALON & AESTHETIC CLINIC
   Design Tokens — single source of truth
   ----------------------------------------------------------------------------
   Brand:  Black #231F20 · Gold #DBBB5F · Base/Citron #E6E560
   Voice:  Luxury, feminine, warm, "360° beauty under one roof"
   Type:   Playfair Display (display/headings) · Manrope (UI/body)
   ============================================================================ */

:root {
  /* ------------------------------------------------------------------ */
  /* 1. PRIMITIVE COLOR RAMPS  (raw values — do not reference in UI)     */
  /* ------------------------------------------------------------------ */

  /* Ink — built from brand black #231F20 (warm near-black) */
  --ink-900: #231F20;   /* brand black */
  --ink-800: #2E2A2B;
  --ink-700: #3D3839;
  --ink-600: #555051;
  --ink-500: #6E696A;
  --ink-400: #918C8D;
  --ink-300: #B8B4B5;
  --ink-200: #D9D6D7;
  --ink-100: #ECEAEB;
  --ink-50:  #F6F5F5;

  /* Gold — built from brand gold #DBBB5F (the metallic accent) */
  --gold-50:  #FBF7EC;
  --gold-100: #F5ECCF;
  --gold-200: #ECDCA3;
  --gold-300: #E2CB7E;
  --gold-400: #DBBB5F;  /* brand gold */
  --gold-500: #C9A64A;
  --gold-600: #A9863A;
  --gold-700: #86692E;
  --gold-800: #5E4A22;
  --gold-900: #3A2E16;

  /* Citron — built from website base #E6E560 (bright, energetic highlight) */
  --citron-200: #F7F6C9;
  --citron-300: #F2F1A6;
  --citron-400: #ECEB85;
  --citron-500: #E6E560;  /* website base */
  --citron-600: #CFCE45;
  --citron-700: #A8A732;

  /* Warm neutrals — paper / canvas surfaces */
  --cream-50:  #FFFFFF;
  --cream-100: #FCFBF7;
  --cream-200: #FAF8F1;  /* default page canvas */
  --cream-300: #F3F0E6;
  --cream-400: #E9E5D6;

  /* Metallic gradient stops (for gilded text / borders / the logo feel) */
  --gold-grad-light: #F1DE9C;
  --gold-grad-mid:   #DBBB5F;
  --gold-grad-dark:  #A9863A;

  /* Support — used sparingly, kept on-brand and muted */
  --success: #6F8F5E;
  --warning: #C99A3A;
  --error:   #B4503F;
  --info:    --ink-600;

  /* ------------------------------------------------------------------ */
  /* 2. SEMANTIC COLOR TOKENS  (use THESE in components)                 */
  /* ------------------------------------------------------------------ */

  /* Brand */
  --color-brand:           var(--gold-400);
  --color-brand-strong:    var(--gold-600);
  --color-brand-soft:      var(--gold-100);
  --color-accent:          var(--citron-500);
  --color-ink:             var(--ink-900);

  /* === LOCKED CORE TRIAD ============================================
     The site is built on three locked colors. Everything else in this
     file is supporting tone — these three carry the brand:
       • Gold  --gold-400  #DBBB5F  → accent, CTAs, active state
       • Ink   --ink-900   #231F20  → text, dark sections, footer
       • Cream --cream-300 #F3F0E6  → page canvas / base surface
     ================================================================= */

  /* Surfaces */
  --surface-canvas:        var(--cream-300);   /* LOCKED page background */
  --surface-default:       var(--cream-50);    /* cards, sheets */
  --surface-raised:        #FFFFFF;
  --surface-sunken:        var(--cream-400);
  --surface-inverse:       var(--ink-900);     /* dark sections / hero */
  --surface-inverse-soft:  var(--ink-800);
  --surface-brand:         var(--gold-400);
  --surface-accent:        var(--citron-500);

  /* Text */
  --text-primary:          var(--ink-900);
  --text-secondary:        var(--ink-600);
  --text-muted:            var(--ink-400);
  --text-on-brand:         var(--ink-900);     /* dark text on gold/citron */
  --text-on-inverse:       var(--cream-100);   /* light text on black */
  --text-on-inverse-muted: var(--ink-300);
  --text-brand:            var(--gold-600);    /* gold text on light bg (AA-safe) */
  --text-link:             var(--gold-700);

  /* Borders & dividers */
  --border-subtle:         var(--ink-100);
  --border-default:        var(--ink-200);
  --border-strong:         var(--ink-300);
  --border-brand:          var(--gold-400);
  --border-on-inverse:     rgba(219, 187, 95, 0.30);

  /* Focus ring */
  --focus-ring:            var(--gold-500);
  --focus-ring-offset:     var(--surface-canvas);

  /* ------------------------------------------------------------------ */
  /* 3. TYPOGRAPHY                                                       */
  /* ------------------------------------------------------------------ */

  --font-display: "Playfair Display", "Georgia", "Times New Roman", serif;
  --font-sans:    "Manrope", "Segoe UI", system-ui, -apple-system, sans-serif;

  /* Font weights */
  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  /* Fluid type scale — clamp(mobile, fluid, desktop)
     Mobile & desktop endpoints come straight from the PRD scale. */
  --fs-display: clamp(2.625rem, 1.50rem + 5.6vw, 4rem);     /* 42 → 64  H1 */
  --fs-h1:      clamp(2.625rem, 1.50rem + 5.6vw, 4rem);     /* 42 → 64  */
  --fs-h2:      clamp(2.00rem,  1.30rem + 3.5vw, 3rem);     /* 32 → 48  */
  --fs-h3:      clamp(1.625rem, 1.20rem + 2.1vw, 2.25rem);  /* 26 → 36  */
  --fs-subhead: clamp(1.125rem, 1.05rem + 0.4vw, 1.25rem);  /* 18 → 20  */
  --fs-body-lg: 1.125rem;   /* 18 */
  --fs-body:    1rem;       /* 16 */
  --fs-small:   0.875rem;   /* 14 */
  --fs-caption: 0.75rem;    /* 12 */

  /* Line heights */
  --lh-tight:   1.1;    /* display headings */
  --lh-snug:    1.25;   /* H2 / H3 */
  --lh-normal:  1.5;    /* body */
  --lh-relaxed: 1.7;    /* long-form body */

  /* Letter spacing */
  --tracking-tight:  -0.02em;  /* large Playfair headings */
  --tracking-normal: 0;
  --tracking-wide:   0.04em;   /* Manrope eyebrows / labels */
  --tracking-wider:  0.18em;   /* uppercase micro-labels (logo feel) */

  /* ------------------------------------------------------------------ */
  /* 4. SPACING  (4px base grid)                                         */
  /* ------------------------------------------------------------------ */
  --space-0:   0;
  --space-1:   0.25rem;   /*  4 */
  --space-2:   0.5rem;    /*  8 */
  --space-3:   0.75rem;   /* 12 */
  --space-4:   1rem;      /* 16 */
  --space-5:   1.25rem;   /* 20 */
  --space-6:   1.5rem;    /* 24 */
  --space-8:   2rem;      /* 32 */
  --space-10:  2.5rem;    /* 40 */
  --space-12:  3rem;      /* 48 */
  --space-16:  4rem;      /* 64 */
  --space-20:  5rem;      /* 80 */
  --space-24:  6rem;      /* 96 */
  --space-32:  8rem;      /* 128 */

  /* Semantic spacing */
  --gap-inline:       var(--space-2);
  --gap-stack:        var(--space-4);
  --padding-card:     var(--space-6);
  --padding-card-lg:  var(--space-8);
  --section-y:        clamp(var(--space-16), 8vw, var(--space-32)); /* vertical section rhythm */
  --container-px:     clamp(var(--space-4), 5vw, var(--space-12));  /* page side padding */
  --container-max:    1200px;
  --container-narrow: 760px;

  /* ------------------------------------------------------------------ */
  /* 4b. BREAKPOINTS  (mobile-first)                                     */
  /*    CSS vars can't be used inside @media — these are reference       */
  /*    tokens for JS / container logic. Use the literal px values in    */
  /*    media queries (see breakpoints.css). Min-width, mobile-first.    */
  /* ------------------------------------------------------------------ */
  --bp-xs:  320px;   /* small phones (base, no query needed) */
  --bp-sm:  375px;   /* standard phones */
  --bp-md:  768px;   /* tablets */
  --bp-lg:  1024px;  /* small laptops */
  --bp-xl:  1280px;  /* desktops */
  --bp-2xl: 1536px;  /* large / wide screens */

  /* ------------------------------------------------------------------ */
  /* 5. RADIUS                                                           */
  /* ------------------------------------------------------------------ */
  --radius-xs:   2px;
  --radius-sm:   4px;
  --radius-md:   8px;
  --radius-lg:   16px;
  --radius-xl:   24px;
  --radius-2xl:  32px;
  --radius-pill: 999px;
  --radius-card: var(--radius-lg);

  /* ------------------------------------------------------------------ */
  /* 6. ELEVATION / SHADOWS  (warm-tinted, soft — luxury feel)           */
  /* ------------------------------------------------------------------ */
  --shadow-xs:  0 1px 2px rgba(35, 31, 32, 0.06);
  --shadow-sm:  0 2px 6px rgba(35, 31, 32, 0.07);
  --shadow-md:  0 8px 24px rgba(35, 31, 32, 0.10);
  --shadow-lg:  0 16px 40px rgba(35, 31, 32, 0.14);
  --shadow-xl:  0 28px 60px rgba(35, 31, 32, 0.18);
  --shadow-gold: 0 10px 30px rgba(169, 134, 58, 0.28);   /* gold glow for primary CTAs */
  --shadow-inset-line: inset 0 0 0 1px var(--border-on-inverse); /* gilded hairline */

  /* ------------------------------------------------------------------ */
  /* 7. MOTION                                                          */
  /* ------------------------------------------------------------------ */
  --duration-instant: 80ms;
  --duration-fast:    150ms;
  --duration-base:    250ms;
  --duration-slow:    400ms;
  --duration-slower:  600ms;

  --ease-standard: cubic-bezier(0.4, 0.0, 0.2, 1);   /* most UI transitions */
  --ease-out:      cubic-bezier(0.0, 0.0, 0.2, 1);   /* enter / reveal */
  --ease-in:       cubic-bezier(0.4, 0.0, 1, 1);     /* exit */
  --ease-emphasis: cubic-bezier(0.2, 0.8, 0.2, 1);   /* luxe, slightly springy */

  /* ------------------------------------------------------------------ */
  /* 8. Z-INDEX                                                         */
  /* ------------------------------------------------------------------ */
  --z-base:     0;
  --z-raised:   10;
  --z-sticky:   100;
  --z-overlay:  1000;
  --z-modal:    1100;
  --z-toast:    1200;
}

/* Honor user reduced-motion preference everywhere */
@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-instant: 0ms;
    --duration-fast:    0ms;
    --duration-base:    0ms;
    --duration-slow:    0ms;
    --duration-slower:  0ms;
  }
}
