/* WebEon design tokens (docs/ui/design-direction.md). Blue and white; dark mode via the .dark class on <html>.
   Component libraries map their own variables onto these, so both themes and every library change together. */

/* Inter, self-hosted (no external font calls from branches). Variable font, SIL OFL 1.1: fonts/Inter-LICENSE.txt. */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("fonts/InterVariable.woff2") format("woff2");
}
/* Brand colours come from the Appearance settings (BrandStyle writes --weo-brand and --weo-accent after this file);
   the values here are only the defaults. Every other shade is derived from them, so one setting recolours everything. */
:root {
  --weo-font: "Inter", "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --weo-brand: #1D5FD6;
  --weo-accent: #D97706;

  /* Neutral canvas with white cards (layout direction, 2026-10-23). */
  --weo-bg: #F1F2F4;
  --weo-card: #FFFFFF;
  --weo-card-border: transparent;
  --weo-side: #FFFFFF;
  --weo-subtle: #F5F6F8;
  --weo-line: #ECEDF0;
  --weo-line-strong: #D9DBE0;
  --weo-text: #111318;
  --weo-muted: #6A6F78;

  --weo-primary: var(--weo-brand);
  --weo-primary-hover: color-mix(in srgb, var(--weo-brand) 85%, #000000);
  --weo-primary-text: var(--weo-brand);
  --weo-on-primary: #FFFFFF;
  --weo-tint: color-mix(in srgb, var(--weo-brand) 9%, #FFFFFF);
  --weo-tint-text: color-mix(in srgb, var(--weo-brand) 80%, #000000);
  --weo-accent-tint: color-mix(in srgb, var(--weo-accent) 14%, #FFFFFF);

  --weo-success-bg: #E3F6EA;
  --weo-success: #166534;
  --weo-warning-bg: #FEF3D8;
  --weo-warning: #8A4A0B;
  --weo-danger-bg: #FDE6E6;
  --weo-danger: #991B1B;
  --weo-danger-solid: #DC2626;

  --weo-card-shadow: 0 1px 2px rgba(17, 19, 24, .04), 0 4px 16px rgba(17, 19, 24, .03);
  --weo-overlay-shadow: 0 16px 40px rgba(17, 19, 24, .14), 0 2px 8px rgba(17, 19, 24, .06);
  --weo-radius: 12px;
  --weo-radius-card: 22px;
  color-scheme: light;
}

html.dark {
  --weo-bg: #0C0E12;
  --weo-card: #15181E;
  --weo-card-border: #22262E;
  --weo-side: #111317;
  --weo-subtle: #1C2027;
  --weo-line: #23272F;
  --weo-line-strong: #333944;
  --weo-text: #ECEEF2;
  --weo-muted: #979EA9;

  /* Filled controls keep the brand colour (it passes 4.5:1 with white); text in the brand colour is lightened to stay
     readable on dark surfaces. */
  --weo-primary-hover: color-mix(in srgb, var(--weo-brand) 80%, #FFFFFF);
  --weo-primary-text: color-mix(in srgb, var(--weo-brand) 50%, #FFFFFF);
  --weo-tint: color-mix(in srgb, var(--weo-brand) 22%, #15181E);
  --weo-tint-text: color-mix(in srgb, var(--weo-brand) 45%, #FFFFFF);
  --weo-accent-tint: color-mix(in srgb, var(--weo-accent) 20%, #15181E);

  --weo-success-bg: #12301F;
  --weo-success: #86EFAC;
  --weo-warning-bg: #352707;
  --weo-warning: #FCD34D;
  --weo-danger-bg: #3A1517;
  --weo-danger: #FCA5A5;
  --weo-danger-solid: #DC2626;

  --weo-card-shadow: none;
  --weo-overlay-shadow: 0 16px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .3);
  color-scheme: dark;
}

html, body { margin: 0; background: var(--weo-bg); color: var(--weo-text); font-family: var(--weo-font); font-size: 14px; }
/* Inter's alternate digits and disambiguated 1/l/I read better in numeric, code-heavy screens. */
body { font-feature-settings: "cv11", "ss01"; }
body { -webkit-font-smoothing: antialiased; }
* { transition-timing-function: ease-out; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

.weo-num { font-variant-numeric: tabular-nums; }
.weo-muted { color: var(--weo-muted); }
html.dark .weo-when-light, html:not(.dark) .weo-when-dark { display: none !important; }
.weo-kbd { font-size: 11px; border: 1px solid var(--weo-line); border-radius: 4px; padding: 0 5px; color: var(--weo-muted); background: var(--weo-card); }

/* Status badges (shared vocabulary) */
.weo-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 500; padding: 3px 10px; border-radius: 999px; white-space: nowrap; line-height: 1.35; }
.weo-badge-success { background: var(--weo-success-bg); color: var(--weo-success); }
.weo-badge-warning { background: var(--weo-warning-bg); color: var(--weo-warning); }
.weo-badge-danger { background: var(--weo-danger-bg); color: var(--weo-danger); }
.weo-badge-neutral { background: var(--weo-subtle); color: var(--weo-muted); }
.weo-badge-info { background: var(--weo-tint); color: var(--weo-tint-text); }

/* Static sign-in pages (no circuit, native form elements): the brand side and the form side (AuthShowcase, AccountLayout). */
.weo-brand { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 16px; }
/* The product logo (ProductLogo): the mark lifted by a soft brand-coloured shadow, the name set tight and heavy. */
.weo-logo-mark { display: block; flex: none; filter: drop-shadow(0 4px 10px color-mix(in srgb, var(--weo-brand) 30%, transparent)); }
.weo-wordmark { font-weight: 700; letter-spacing: -.04em; white-space: nowrap; }
.weo-link { color: var(--weo-primary-text); text-decoration: none; font-size: 13px; }
.weo-link:hover { text-decoration: underline; }
.weo-theme-btn { border: 1px solid var(--weo-card-border); background: var(--weo-card); box-shadow: var(--weo-card-shadow); color: var(--weo-text); border-radius: 14px; width: 44px; height: 44px; cursor: pointer; display: inline-grid; place-items: center; flex: none; }
.weo-theme-btn:hover { background: var(--weo-subtle); }

.weo-auth { min-height: 100vh; min-height: 100dvh; display: grid; grid-template-columns: minmax(420px, 46%) minmax(0, 1fr); background: var(--weo-card); }

/* Brand side: the brand colour deepened towards night, a lighter glow top left, the accent low right, a fading grid. */
.weo-auth-brand {
  --ink: color-mix(in srgb, var(--weo-brand) 42%, #04070F);
  position: relative; overflow: hidden; isolation: isolate; display: flex; flex-direction: column; gap: 32px;
  padding: 40px 48px; color: #fff; background: var(--ink);
}
.weo-auth-brand::before {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background:
    radial-gradient(70% 55% at 0% 0%, var(--weo-brand) 0%, transparent 70%),
    radial-gradient(55% 45% at 100% 100%, color-mix(in srgb, var(--weo-accent) 55%, transparent) 0%, transparent 70%),
    radial-gradient(50% 40% at 85% 15%, color-mix(in srgb, var(--weo-brand) 55%, #7C3AED) 0%, transparent 70%);
  opacity: .9;
}
.weo-auth-brand::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background-image: linear-gradient(rgba(255, 255, 255, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .07) 1px, transparent 1px);
  background-size: 40px 40px;
  -webkit-mask-image: radial-gradient(80% 70% at 30% 30%, #000 20%, transparent 80%);
  mask-image: radial-gradient(80% 70% at 30% 30%, #000 20%, transparent 80%);
}
.weo-auth-glow { position: absolute; width: 420px; height: 420px; right: -120px; top: 38%; border-radius: 50%; z-index: -1; background: radial-gradient(circle, rgba(255, 255, 255, .16), transparent 65%); filter: blur(10px); }
.weo-auth-brand .weo-brand { font-size: 18px; letter-spacing: -.02em; }
.weo-auth-brand .weo-logo-mark { filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .35)); }
.weo-auth-pitch { max-width: 480px; margin-top: auto; }
.weo-auth-kicker { display: inline-flex; padding: 5px 12px; border-radius: 999px; font-size: 12px; font-weight: 500; letter-spacing: .02em; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); color: rgba(255, 255, 255, .9); }
.weo-auth-pitch h2 { font-size: clamp(30px, 3vw, 42px); line-height: 1.08; letter-spacing: -.035em; font-weight: 650; margin: 18px 0 14px; text-wrap: balance; }
.weo-auth-pitch p { margin: 0; font-size: 15px; line-height: 1.6; color: rgba(255, 255, 255, .74); max-width: 42ch; }
.weo-auth-points { list-style: none; margin: 28px 0 0; padding: 0; display: grid; gap: 12px; }
.weo-auth-points li { display: flex; align-items: center; gap: 12px; font-size: 14px; color: rgba(255, 255, 255, .88); }
.weo-auth-points li > span { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; flex: none; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .16); }
.weo-auth-brand-foot { margin-top: auto; font-size: 12px; color: rgba(255, 255, 255, .55); }

/* Currency chips circling the rupee: decorative, still when the user asks for less motion (global rule). */
.weo-auth-orbit { position: relative; width: 300px; height: 300px; margin: 0 0 0 auto; flex: none; }
.weo-auth-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px dashed rgba(255, 255, 255, .2); }
.weo-auth-ring-inner { inset: 70px; border-style: solid; border-color: rgba(255, 255, 255, .12); }
.weo-auth-core { position: absolute; inset: 105px; border-radius: 50%; display: grid; place-items: center; font-size: 38px; font-weight: 600; background: linear-gradient(145deg, rgba(255, 255, 255, .28), rgba(255, 255, 255, .06)); border: 1px solid rgba(255, 255, 255, .35); box-shadow: 0 20px 50px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255, 255, 255, .4); backdrop-filter: blur(10px); }
.weo-auth-chip {
  --angle: calc(var(--i) * 60deg - 90deg);
  position: absolute; left: 50%; top: 50%; display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px 6px 6px; border-radius: 999px;
  font-size: 12px; font-weight: 600; letter-spacing: .03em; white-space: nowrap;
  background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .24); backdrop-filter: blur(10px); box-shadow: 0 8px 24px rgba(0, 0, 0, .25);
  transform: translate(-50%, -50%) rotate(var(--angle)) translateX(150px) rotate(calc(-1 * var(--angle)));
  animation: weo-float 6s ease-in-out infinite; animation-delay: calc(var(--i) * -1s);
}
.weo-auth-chip b { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--ink); font-size: 11px; font-weight: 700; }
@keyframes weo-float { 50% { margin-top: -8px; } }

/* Form side */
.weo-auth-main { position: relative; display: grid; place-items: center; padding: 48px 24px; box-sizing: border-box; background: var(--weo-card); }
.weo-auth-corner { position: absolute; top: 20px; right: 20px; }
.weo-auth-card { width: min(400px, 100%); box-sizing: border-box; animation: weo-rise .45s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes weo-rise { from { opacity: 0; transform: translateY(10px); } }
.weo-auth-head h1 { font-size: 32px; line-height: 1.15; font-weight: 650; letter-spacing: -.035em; margin: 14px 0 8px; }
.weo-auth-head p { margin: 0; font-size: 14px; line-height: 1.55; color: var(--weo-muted); }
.weo-auth-eyebrow { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--weo-tint); color: var(--weo-tint-text); }
.weo-form { display: grid; gap: 18px; margin-top: 28px; }
.weo-field { display: grid; gap: 6px; font-size: 13px; font-weight: 500; }
.weo-auth-field { display: grid; gap: 8px; }
.weo-auth-field > label { font-size: 13px; font-weight: 600; }
.weo-auth-input { position: relative; display: flex; align-items: center; }
.weo-auth-input > svg { position: absolute; left: 15px; color: var(--weo-muted); pointer-events: none; transition: color .15s; }
.weo-auth-input:focus-within > svg { color: var(--weo-primary-text); }
.weo-input { width: 100%; box-sizing: border-box; height: 50px; padding: 0 16px 0 46px; font: inherit; font-size: 15px; font-weight: 400; color: var(--weo-text); background: var(--weo-subtle); border: 1px solid var(--weo-line); border-radius: 14px; transition: border-color .15s, box-shadow .15s, background .15s; }
.weo-input::placeholder { color: color-mix(in srgb, var(--weo-muted) 70%, transparent); }
.weo-input:hover { border-color: var(--weo-line-strong); }
.weo-input:focus { outline: none; background: var(--weo-card); border-color: var(--weo-primary); box-shadow: 0 0 0 4px color-mix(in srgb, var(--weo-primary) 16%, transparent); }
.weo-input:user-invalid { border-color: var(--weo-danger-solid); }
.weo-auth-input:has(.weo-auth-reveal) .weo-input { padding-right: 52px; }
.weo-auth-code { letter-spacing: .35em; font-weight: 600; }
.weo-auth-code::placeholder { letter-spacing: normal; font-weight: 400; }
.weo-auth-reveal { position: absolute; right: 6px; width: 40px; height: 38px; border: 0; border-radius: 10px; background: transparent; color: var(--weo-muted); display: grid; place-items: center; cursor: pointer; }
.weo-auth-reveal:hover { background: var(--weo-line); color: var(--weo-text); }
.weo-auth-reveal:focus-visible { outline: 2px solid var(--weo-primary); outline-offset: 1px; }
.weo-auth-reveal[aria-pressed="true"] .weo-when-hidden, .weo-auth-reveal[aria-pressed="false"] .weo-when-shown { display: none; }
.weo-auth-caps { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12px; font-weight: 500; color: var(--weo-warning); }
.weo-auth-caps[hidden] { display: none; }
.weo-btn-primary { height: 50px; border: 0; border-radius: 14px; background: var(--weo-primary); color: var(--weo-on-primary); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; text-decoration: none; transition: background .15s, transform .1s, box-shadow .15s; }
.weo-btn-primary:hover { background: var(--weo-primary-hover); }
.weo-btn-primary:focus-visible { outline: 2px solid var(--weo-primary); outline-offset: 2px; }
.weo-auth-submit { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 4px; box-shadow: 0 1px 0 rgba(255, 255, 255, .2) inset, 0 10px 24px -10px color-mix(in srgb, var(--weo-primary) 80%, transparent); }
.weo-auth-submit:active { transform: translateY(1px); }
.weo-auth-submit svg { transition: transform .2s; }
.weo-auth-submit:hover svg { transform: translateX(3px); }
.weo-auth-submit[aria-busy="true"] { pointer-events: none; opacity: .85; }
.weo-auth-submit[aria-busy="true"] svg { display: none; }
.weo-auth-submit[aria-busy="true"]::after { content: ""; width: 16px; height: 16px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .45); border-top-color: #fff; animation: weo-spin .7s linear infinite; }
@keyframes weo-spin { to { transform: rotate(360deg); } }
.weo-alert { display: flex; align-items: flex-start; gap: 10px; border-radius: 14px; padding: 12px 14px; font-size: 13px; line-height: 1.45; margin-top: 20px; }
.weo-alert > svg { flex: none; margin-top: 1px; }
.weo-alert-danger { background: var(--weo-danger-bg); color: var(--weo-danger); }
.weo-alert-info { background: var(--weo-tint); color: var(--weo-tint-text); }
.weo-auth-foot { display: flex; justify-content: center; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--weo-line); font-size: 13px; }
.weo-auth-foot .weo-link { font-weight: 600; }

/* Tablets and phones: the brand becomes a band above the form, with only the brand and the headline. */
@media (max-width: 960px) {
  .weo-auth { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
  .weo-auth-brand { padding: 24px 24px 28px; gap: 18px; }
  .weo-auth-pitch h2 { font-size: 24px; margin: 0; }
  .weo-auth-pitch p, .weo-auth-points, .weo-auth-orbit, .weo-auth-brand-foot, .weo-auth-kicker { display: none; }
  .weo-auth-main { place-items: start center; padding: 32px 20px 40px; }
  .weo-auth-corner { position: fixed; top: auto; bottom: 16px; right: 16px; }
  .weo-auth-head h1 { font-size: 26px; }
}
/* Short desktop windows: the chips give way to the words. */
@media (min-width: 961px) and (max-height: 760px) { .weo-auth-orbit { display: none; } }
