/* ============================================================
   FlamxAi — Design tokens & component layer (single source of truth)
   Light = Teal/Ink on Cream · Dark = Mist/Teal on Charcoal
   Derived 1:1 from the approved prototype + official brand guidelines.
   No hex values may appear outside this file.
   ============================================================ */

/* ---- Fonts (official brand files, self-hosted) ---- */
@font-face{font-family:'Fredoka';src:url('../fonts/Fredoka-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Fredoka';src:url('../fonts/Fredoka-Medium.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:'Fredoka';src:url('../fonts/Fredoka-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:'Baloo Bhaijaan 2';src:url('../fonts/BalooBhaijaan2-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Baloo Bhaijaan 2';src:url('../fonts/BalooBhaijaan2-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}

/* ---- Brand constants ---- */
:root{
  --teal:#17777D; --cream:#FAF7F0; --ink:#14202B;
  --mist:#EDF2F1; --charcoal:#0E1A1C; --amber:#F2A03D;

  --r-xs:8px; --r-sm:12px; --r:16px; --r-lg:22px; --r-xl:28px; --r-pill:999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);
  --dur:.42s;

  --font-en:'Fredoka',system-ui,sans-serif;
  --font-ar:'Baloo Bhaijaan 2',system-ui,sans-serif;
}

/* ---- Semantic theme: LIGHT (default) ---- */
.fx[data-theme="light"]{
  --bg:#FAF7F0;
  --bg-tint:#F2ECDF;
  --surface:#FFFFFF;
  --surface-2:#F7F3EB;
  --surface-3:#EFEADD;
  --border:#E6DECF;
  --border-soft:#EFE8DA;
  --text:#14202B;
  --text-2:#3B4A50;
  --muted:#6A7A7E;
  --primary:#17777D;
  --primary-strong:#0F5C61;
  --primary-soft:#E2EEED;
  --on-primary:#FAF7F0;
  --link:#17777D;
  --amber-ink:#14202B;
  --amber-soft:#FBE6C9;
  --ok:#1F8A5B; --warn:#C77A12; --danger:#C2453B; --info:#2A6FA8;
  --ok-soft:#DCEFE5; --warn-soft:#F7E7CC; --danger-soft:#F4DCD9; --info-soft:#DCE9F3;
  --ring:rgba(23,119,125,.28);
  --shadow-sm:0 1px 2px rgba(20,32,43,.05), 0 2px 6px rgba(20,32,43,.04);
  --shadow:0 4px 14px rgba(20,32,43,.07), 0 16px 40px -18px rgba(20,32,43,.18);
  --shadow-lg:0 12px 30px rgba(20,32,43,.10), 0 40px 70px -30px rgba(20,32,43,.30);
  --placeholder-ink:#9A8E78;
}

/* ---- Semantic theme: DARK (true treatment, not an inversion) ---- */
.fx[data-theme="dark"]{
  --bg:#0E1A1C;
  --bg-tint:#0A1416;
  --surface:#14272B;
  --surface-2:#102023;
  --surface-3:#1A3338;
  --border:#23383D;
  --border-soft:#1B2D31;
  --text:#EDF2F1;
  --text-2:#C2D2D2;
  --muted:#8AA1A4;
  --primary:#2C9097;
  --primary-strong:#3AA7AE;
  --primary-soft:#15333666;
  --on-primary:#04161A;
  --link:#4FB6BC;
  --amber-ink:#14202B;
  --amber-soft:#3a2e1a;
  --ok:#46C08A; --warn:#E2A24B; --danger:#E06B60; --info:#5FA0D6;
  --ok-soft:#15332666; --warn-soft:#33281566; --danger-soft:#33191666; --info-soft:#15273366;
  --ring:rgba(79,182,188,.40);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 8px 24px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.4);
  --shadow-lg:0 24px 60px rgba(0,0,0,.55);
  --placeholder-ink:#5C6F72;
}

*{margin:0;padding:0;box-sizing:border-box}

html.fx{height:100%}
.fx body{
  /* hidden popovers/decorations must never create horizontal page scroll */
  overflow-x:clip;
  font-family:var(--font-en);
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-weight:400;
  transition:background var(--dur) var(--ease-soft), color var(--dur) var(--ease-soft);
  min-height:100%;
  display:flex;flex-direction:column;
}
.fx main{flex:1}
.fx[dir="rtl"] body{font-family:var(--font-ar)}
.fx[dir="rtl"] .num{font-family:var(--font-en)} /* latin tabular numerals in RTL */

h1,h2,h3,h4,h5{font-weight:600;line-height:1.22;letter-spacing:-.01em;color:var(--text)}
.fx[dir="rtl"] h1,.fx[dir="rtl"] h2,.fx[dir="rtl"] h3,.fx[dir="rtl"] h4{letter-spacing:0;line-height:1.4}
a{color:var(--link);text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
img,svg{max-width:100%;display:block}
ul{list-style:none}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* theme-aware logo swap (true light/dark assets, never recolored) */
.only-dark{display:none}
.fx[data-theme="dark"] .only-dark{display:block}
.fx[data-theme="dark"] .only-light{display:none}

/* type helpers */
.eyebrow{font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}
.fx[dir="rtl"] .eyebrow{letter-spacing:.08em;text-transform:none}
.lead{font-size:20px;line-height:1.55;color:var(--text-2)}
.muted{color:var(--muted)}
.small{font-size:13px}

/* ============================ Buttons ============================ */
.btn{
  --bh:48px;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  height:var(--bh);padding:0 22px;border-radius:var(--r-pill);
  font-size:16px;font-weight:600;white-space:nowrap;text-decoration:none;
  transition:transform .14s var(--ease), background .2s, box-shadow .2s, border-color .2s, color .2s;
  border:1.5px solid transparent;user-select:none;
}
.btn:active{transform:translateY(1px) scale(.99)}
.btn .icon{flex:none}
.btn-primary{background:var(--primary);color:var(--on-primary);box-shadow:0 6px 16px -6px var(--ring)}
.btn-primary:hover{background:var(--primary-strong);box-shadow:0 10px 22px -8px var(--ring);color:var(--on-primary)}
.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}
.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}
.btn-ghost{background:transparent;color:var(--text-2)}
.btn-ghost:hover{background:var(--surface-2);color:var(--text)}
.btn-amber{background:var(--amber);color:var(--amber-ink);box-shadow:0 6px 16px -6px rgba(242,160,61,.5)}
.btn-amber:hover{filter:brightness(1.04)}
.btn-sm{--bh:38px;font-size:14px;padding:0 16px}
.btn-lg{--bh:56px;font-size:17px;padding:0 30px}
.btn-block{display:flex;width:100%}
.btn-icon{width:44px;height:44px;padding:0;border-radius:var(--r-pill)}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.55;pointer-events:none}

/* ============================ Cards ============================ */
.card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);box-shadow:var(--shadow-sm);
  transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color .2s;
}
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--border)}

/* ============================ Badges / chips ============================ */
.badge{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:var(--r-pill);font-size:12.5px;font-weight:600;line-height:1}
.badge-teal{background:var(--primary-soft);color:var(--primary)}
.badge-amber{background:var(--amber-soft);color:var(--warn)}
.badge-neutral{background:var(--surface-2);color:var(--muted);border:1px solid var(--border-soft)}
.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}

.chip{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 13px;border-radius:var(--r-pill);font-size:13px;font-weight:500;border:1px solid var(--border);background:var(--surface);color:var(--text-2);transition:.18s}
.chip[data-active="true"]{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.chip:hover:not([data-active="true"]){border-color:var(--primary);color:var(--primary)}

/* status chip — semantic color ALWAYS paired with dot + text */
.status{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 12px;border-radius:var(--r-pill);font-size:12.5px;font-weight:600}
.status .dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.status[data-kind="new"]{background:var(--info-soft);color:var(--info)}
.status[data-kind="await"]{background:var(--warn-soft);color:var(--warn)}
.status[data-kind="paid"],.status[data-kind="ok"]{background:var(--ok-soft);color:var(--ok)}
.status[data-kind="progress"]{background:var(--primary-soft);color:var(--primary)}
.status[data-kind="done"]{background:var(--surface-3);color:var(--muted)}

/* ============================ Alerts / flash ============================ */
.alert{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:var(--r-sm);font-size:14.5px;border:1px solid transparent}
.alert .icon{flex:none;margin-top:2px}
.alert-success{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 25%,transparent)}
.alert-error{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}
.alert-info{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb,var(--info) 25%,transparent)}

/* toast */
.toast-wrap{position:fixed;inset-block-end:22px;inset-inline:0;display:flex;justify-content:center;z-index:90;pointer-events:none;padding:0 16px}
.toast{display:flex;align-items:center;gap:13px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r);box-shadow:var(--shadow-lg);padding:13px 17px;max-width:380px;pointer-events:auto;
  animation:toastin .3s var(--ease)}
@keyframes toastin{from{opacity:0;transform:translateY(14px)}}
.toast .tk{width:36px;height:36px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;background:var(--ok-soft);color:var(--ok)}
.toast[data-kind="error"] .tk{background:var(--danger-soft);color:var(--danger)}
.toast[data-kind="info"] .tk{background:var(--info-soft);color:var(--info)}
.toast .tt{font-weight:600;font-size:14.5px}

/* ============================ Inputs ============================ */
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:14px;font-weight:500;color:var(--text-2)}
.input,.select,.textarea{
  width:100%;height:50px;padding:0 16px;border-radius:var(--r-sm);
  background:var(--surface);border:1.5px solid var(--border);color:var(--text);
  font-family:inherit;font-size:15px;transition:border-color .18s, box-shadow .18s;
}
.textarea{height:auto;padding:14px 16px;line-height:1.6;resize:vertical;min-height:120px}
.input::placeholder,.textarea::placeholder{color:var(--muted);opacity:.8}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px var(--ring)}
.field[data-state="error"] .input{border-color:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}
.field[data-state="ok"] .input{border-color:var(--ok)}
.hint{font-size:12.5px;color:var(--muted)}
.hint[data-state="error"]{color:var(--danger)}
.pwd-wrap{position:relative}
.pwd-wrap .input{padding-inline-end:48px}
.pwd-toggle{position:absolute;inset-inline-end:6px;inset-block-start:50%;transform:translateY(-50%);
  width:38px;height:38px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}
.pwd-toggle:hover{background:var(--surface-2);color:var(--text)}

/* consent checkbox */
.consent{display:flex;align-items:flex-start;gap:11px;font-size:13.5px;color:var(--text-2);line-height:1.5;cursor:pointer}
.consent input[type="checkbox"]{appearance:none;width:22px;height:22px;border-radius:6px;border:1.5px solid var(--border);flex:none;cursor:pointer;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);transition:.15s}
.consent input[type="checkbox"]:checked{background:var(--primary);border-color:var(--primary)}
.consent input[type="checkbox"]:checked::after{content:"";width:11px;height:6px;border:2.2px solid #fff;border-top:none;border-inline-end:none;transform:rotate(-45deg) translateY(-1px)}

/* toggle */
.toggle{width:46px;height:27px;border-radius:99px;background:var(--surface-3);position:relative;transition:.2s;flex:none;cursor:pointer;border:none}
.toggle[data-on="true"]{background:var(--primary)}
.toggle::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:.2s}
.toggle[data-on="true"]::after{inset-inline-start:22px}

/* ============================ Skeleton shimmer ============================ */
.sk{position:relative;overflow:hidden;background:var(--surface-2);border-radius:var(--r-sm)}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg, transparent 0%, color-mix(in srgb,var(--primary) 10%,transparent) 45%, color-mix(in srgb,var(--primary) 5%,transparent) 60%, transparent 100%);
  animation:sk 1.6s var(--ease-soft) infinite}
.fx[dir="rtl"] .sk::after{animation-name:sk-rtl}
@keyframes sk{100%{transform:translateX(100%)}}
@keyframes sk-rtl{100%{transform:translateX(-200%)}}
.sk-circle{border-radius:50%}
.sk-soft{background:var(--surface-3)}
@media (prefers-reduced-motion:reduce){ .sk::after{animation:none;opacity:0} }

/* ============================ Empty state ============================ */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:38px 20px}
.empty .ering{width:64px;height:64px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center}
.empty h4{font-size:16.5px}
.empty p{font-size:13.5px;color:var(--muted);max-width:34ch}

/* ============================ Divider / layout ============================ */
.hr{height:1px;background:var(--border);border:none}
.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:clamp(20px,5vw,56px)}
.section{padding-block:clamp(48px,7vw,96px)}
.tint{background:var(--bg-tint)}

/* scrollbars */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--muted)}

/* focus visible */
.fx :focus-visible{outline:2.5px solid var(--primary);outline-offset:2px;border-radius:4px}

/* entrance helper */
.rise{opacity:1}
@keyframes riseIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  .fx.js-reveal [data-inview="false"].rise,.fx.js-reveal [data-inview="false"] .rise{opacity:0}
  [data-inview="true"].rise,[data-inview="true"] .rise{animation:riseIn .7s var(--ease) both}
  [data-inview="true"] .rise.d1{animation-delay:.06s}
  [data-inview="true"] .rise.d2{animation-delay:.12s}
  [data-inview="true"] .rise.d3{animation-delay:.18s}
}
@media (prefers-reduced-motion:reduce){
  .rise{opacity:1!important;transform:none!important;animation:none!important}
  *{scroll-behavior:auto!important}
}

/* RTL icon mirroring for directional icons */
.fx[dir="rtl"] .icon-flip{transform:scaleX(-1)}
