
/* /@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/wght.css */
/* montserrat-cyrillic-ext-wght-normal */
@font-face {
  font-family: 'Montserrat Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/files/montserrat-cyrillic-ext-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* montserrat-cyrillic-wght-normal */
@font-face {
  font-family: 'Montserrat Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/files/montserrat-cyrillic-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* montserrat-vietnamese-wght-normal */
@font-face {
  font-family: 'Montserrat Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/files/montserrat-vietnamese-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* montserrat-latin-ext-wght-normal */
@font-face {
  font-family: 'Montserrat Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/files/montserrat-latin-ext-wght-normal.woff2) format('woff2-variations');
  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;
}

/* montserrat-latin-wght-normal */
@font-face {
  font-family: 'Montserrat Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/montserrat/files/montserrat-latin-wght-normal.woff2) format('woff2-variations');
  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;
}

/* /@fs/srv/isc/app/node_modules/@fontsource-variable/alexandria/wght.css */
/* alexandria-arabic-wght-normal */
@font-face {
  font-family: 'Alexandria Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/alexandria/files/alexandria-arabic-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1;
}

/* alexandria-vietnamese-wght-normal */
@font-face {
  font-family: 'Alexandria Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/alexandria/files/alexandria-vietnamese-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* alexandria-latin-ext-wght-normal */
@font-face {
  font-family: 'Alexandria Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/alexandria/files/alexandria-latin-ext-wght-normal.woff2) format('woff2-variations');
  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;
}

/* alexandria-latin-wght-normal */
@font-face {
  font-family: 'Alexandria Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/@fs/srv/isc/app/node_modules/@fontsource-variable/alexandria/files/alexandria-latin-wght-normal.woff2) format('woff2-variations');
  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;
}

/* /src/styles/tokens.css */
/* ISC design tokens: the single home for raw values (colour, type, spacing, radius, elevation, motion).
   Components use the semantic tokens only (--color-*, --space-*, --text-*, ...). DESIGN.md §2 is the intent
   these values encode; where the two disagree, this file is the bug.

   The colour region below is generated from the measured logo colours by scripts/brand/derive_palette.py,
   which refuses to write while any allowed text/ground pair fails contrast. Everything after it is
   hand-written. Fonts: Montserrat (Latin) and Alexandria (Arabic), both OFL, self-hosted in the app. */

/* colour:start: generated by scripts/brand/derive_palette.py from the measured logo colours.
   Do not edit between these markers by hand: change the script and re-run it. */

:root {
  /* Logo anchors, measured (brand/logo/README.md) */
  --brand-violet: #7742e5;
  --brand-teal: #1edcd1;
  --brand-blue: #358bc6;
  --brand-wordmark-indigo: #5c61dc;
  --brand-wordmark-teal: #0ed0bf;
  --brand-gradient: linear-gradient(45deg, var(--brand-violet), var(--brand-teal));

  /* Primitives */
  --violet-50: #f7f5ff; --violet-100: #edeafe; --violet-200: #dcd7fe; --violet-300: #c4b9fd; --violet-400: #a791fc; --violet-500: #8d62fb; --violet-600: #7742e5; --violet-700: #5f21c4; --violet-800: #460798; --violet-900: #2d0366; --violet-950: #1a0142;
  --teal-50: #defffb; --teal-100: #affef7; --teal-200: #56f9ed; --teal-300: #1edcd1; --teal-400: #1abdb3; --teal-500: #139a92; --teal-600: #0e7f78; --teal-700: #08635d; --teal-800: #044743; --teal-900: #102c2a; --teal-950: #101817;
  --blue-50: #f0f8ff; --blue-100: #ddf0fe; --blue-200: #bee1fe; --blue-300: #8cccfd; --blue-400: #5cade8; --blue-500: #358bc6; --blue-600: #1a75ad; --blue-700: #085a8a; --blue-800: #044165; --blue-900: #022942; --blue-950: #011829;
  --ink-50: #f7f5ff; --ink-100: #edebf8; --ink-200: #dcd9ee; --ink-300: #c4c1d5; --ink-400: #a4a2b5; --ink-500: #868396; --ink-600: #6e6c7e; --ink-700: #555364; --ink-800: #3d3b4b; --ink-900: #262433; --ink-950: #161422;
  --green-50: #e6ffea; --green-100: #c3fece; --green-200: #95f7ab; --green-300: #7cdd93; --green-400: #5bbd74; --green-500: #399d57; --green-600: #17843f; --green-700: #0e672f; --green-800: #074a20; --green-900: #033012; --green-950: #011c08;
  --amber-50: #fff5eb; --amber-100: #fee9d2; --amber-200: #fdd4a6; --amber-300: #fcb358; --amber-400: #df921e; --amber-500: #b67617; --amber-600: #976111; --amber-700: #754b0b; --amber-800: #553505; --amber-900: #372102; --amber-950: #221201;
  --red-50: #fff4f3; --red-100: #fee7e4; --red-200: #fdd0cb; --red-300: #fcaca5; --red-400: #fb756e; --red-500: #de4e4b; --red-600: #c13234; --red-700: #9f101c; --red-800: #750912; --red-900: #4e0408; --red-950: #310203;
  --day: #f7f6fc;
  --night: #180d32;
  --night-deep: #0a051c;
  --night-raised: #231a3e;
  --night-alt: #00222f;
  --night-tint: #2b224c;
  --teal-wash: #e1f8f5;
  --violet-wash: #edeaff;
  --white: #ffffff;
}

:root,
:root[data-theme="light"] {
  --color-bg: var(--day);
  --color-surface: var(--white);
  --color-surface-alt: var(--teal-wash);
  --color-surface-tint: var(--violet-wash);
  --color-surface-inverse: var(--night);
  --color-text: var(--ink-900);
  --color-text-muted: var(--ink-700);
  --color-text-on-inverse: var(--violet-50);
  --color-text-muted-on-inverse: var(--ink-300);
  --color-accent: var(--violet-600);
  --color-accent-hover: var(--violet-700);
  --color-accent-pressed: var(--violet-800);
  --color-on-accent: var(--white);
  --color-accent-text: var(--violet-700);
  --color-accent-text-on-inverse: var(--teal-300);
  --color-border: var(--ink-200);
  --color-border-strong: var(--ink-500);
  --color-focus: var(--violet-600);
  --color-thread-1: var(--teal-300);
  --color-thread-2: var(--violet-600);
  --color-thread-3: var(--blue-500);
  --color-success: var(--green-700);
  --color-success-bg: var(--green-50);
  --color-warning: var(--amber-800);
  --color-warning-bg: var(--amber-50);
  --color-danger: var(--red-700);
  --color-danger-bg: var(--red-50);
  --color-info: var(--blue-700);
  --color-info-bg: var(--blue-50);
  --color-mat-edge: var(--violet-800);
  --color-accent-inverse: var(--teal-300);
  --color-accent-inverse-hover: var(--teal-200);
  --color-on-accent-inverse: var(--night);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-bg: var(--night);
    --color-surface: var(--night-raised);
    --color-surface-alt: var(--night-alt);
    --color-surface-tint: var(--night-tint);
    --color-surface-inverse: var(--night-deep);
    --color-text: var(--violet-50);
    --color-text-muted: var(--ink-300);
    --color-text-on-inverse: var(--violet-50);
    --color-text-muted-on-inverse: var(--ink-300);
    --color-accent: var(--teal-300);
    --color-accent-hover: var(--teal-200);
    --color-accent-pressed: var(--teal-400);
    --color-on-accent: var(--night);
    --color-accent-text: var(--teal-300);
    --color-accent-text-on-inverse: var(--teal-300);
    --color-border: #383350;
    --color-border-strong: var(--ink-400);
    --color-focus: var(--teal-300);
    --color-thread-1: var(--teal-300);
    --color-thread-2: var(--violet-600);
    --color-thread-3: var(--blue-500);
    --color-success: var(--green-300);
    --color-success-bg: #122d19;
    --color-warning: var(--amber-300);
    --color-warning-bg: #362207;
    --color-danger: var(--red-300);
    --color-danger-bg: #3f1917;
    --color-info: var(--blue-300);
    --color-info-bg: #0d293d;
    --color-mat-edge: var(--violet-900);
    --color-accent-inverse: var(--teal-300);
    --color-accent-inverse-hover: var(--teal-200);
    --color-on-accent-inverse: var(--night-deep);
  }
}

:root[data-theme="dark"] {
  --color-bg: var(--night);
  --color-surface: var(--night-raised);
  --color-surface-alt: var(--night-alt);
  --color-surface-tint: var(--night-tint);
  --color-surface-inverse: var(--night-deep);
  --color-text: var(--violet-50);
  --color-text-muted: var(--ink-300);
  --color-text-on-inverse: var(--violet-50);
  --color-text-muted-on-inverse: var(--ink-300);
  --color-accent: var(--teal-300);
  --color-accent-hover: var(--teal-200);
  --color-accent-pressed: var(--teal-400);
  --color-on-accent: var(--night);
  --color-accent-text: var(--teal-300);
  --color-accent-text-on-inverse: var(--teal-300);
  --color-border: #383350;
  --color-border-strong: var(--ink-400);
  --color-focus: var(--teal-300);
  --color-thread-1: var(--teal-300);
  --color-thread-2: var(--violet-600);
  --color-thread-3: var(--blue-500);
  --color-success: var(--green-300);
  --color-success-bg: #122d19;
  --color-warning: var(--amber-300);
  --color-warning-bg: #362207;
  --color-danger: var(--red-300);
  --color-danger-bg: #3f1917;
  --color-info: var(--blue-300);
  --color-info-bg: #0d293d;
  --color-mat-edge: var(--violet-900);
  --color-accent-inverse: var(--teal-300);
  --color-accent-inverse-hover: var(--teal-200);
  --color-on-accent-inverse: var(--night-deep);
}

/* colour:end */

/* ---------------------------------------------------------------------------------------------------- */
:root {
  /* Type. Latin is Montserrat; Arabic falls through to Alexandria, Montserrat's Arabic companion by
     the same designer. Both OFL. The app self-hosts the variable fonts from Fontsource ("… Variable");
     the plain names are what the specimen loads from Google Fonts. */
  --font-sans: "Montserrat Variable", "Montserrat", "Alexandria Variable", "Alexandria", system-ui,
    "Segoe UI", sans-serif;
  --font-arabic: "Alexandria Variable", "Alexandria", "Montserrat Variable", "Montserrat", system-ui,
    sans-serif;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  /* Fluid above --text-4xl. 7xl is the hero's display tier: 72px on a phone (4:1 over the 18px lede,
     DESIGN.md §6.3), 96px at most. */
  --text-5xl: clamp(2rem, 1.5rem + 2.2vw, 3rem);
  --text-6xl: clamp(2.5rem, 1.6rem + 3.8vw, 3.75rem);
  --text-7xl: clamp(4.5rem, 3.2rem + 5.6vw, 6rem);
  /* A public page's title on a phone (lead, step 08): sized by the screen's width, between the tier
     stepped down (32px) and the full one, "not too large, not too small". About 39px at 375px and 42px
     at 430px; from 48rem the page uses --text-6xl. */
  --text-title: clamp(2rem, 0.9rem + 6.5vw, 2.75rem);

  --leading-display: 1;
  --leading-tight: 1.08;
  --leading-snug: 1.25;
  --leading-normal: 1.6;
  --leading-arabic: 1.9;

  --tracking-display: -0.035em;
  --tracking-heading: -0.02em;
  --tracking-label: 0.06em;

  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --weight-heavy: 800;
  --weight-black: 900;

  /* About 66 characters of Montserrat at 400: its "0" is 0.662em wide against an average character of
     0.514em (scripts/brand/measure_fonts.py), so 66ch would hold about 85. */
  --measure: 52ch;
  --measure-arabic: 60ch;

  /* Spacing, 4px base. No value outside this scale appears in a layout. */
  --space-0: 0;
  --space-px: 1px;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-32: 8rem;

  /* One gutter for the whole app (DESIGN.md §4): 20px on a phone, 32px from tablet up. */
  --gutter: var(--space-5);
  --content-max: 76rem;

  --icon-sm: 1rem;
  --icon-md: 1.25rem;
  --icon-lg: 1.5rem;
  --target-min: 2.75rem;

  /* Radius. Plates are round; containers are soft-cornered. */
  --radius-sm: 0.375rem;
  --radius-md: 0.625rem;
  --radius-lg: 1rem;
  --radius-xl: 1.5rem;
  --radius-full: 999px;

  --border-thin: 1px;
  --border-strong: 2px;
  --plate-rim: 0.375rem;
  --focus-ring: 3px;
  --focus-offset: 2px;

  /* Motion (Emil Kowalski's curves). Interface motion stays under 300ms; only the mat's unroll, the
     one authored moment, runs long. */
  --duration-instant: 100ms;
  --duration-fast: 160ms;
  --duration-base: 200ms;
  --duration-slow: 320ms;
  --duration-story: 1100ms;
  --stagger: 60ms;
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --press-scale: 0.97;
  --lift: -0.25rem;
  /* A photo inside its frame leans in a little under the pointer (album covers). */
  --photo-zoom: 1.04;

  /* The mat: the logo's gradient woven as a 2/2 twill (8px cells, set in the specimen's SVG pattern),
     whose diagonals run at the gradient's own 45 degrees. */
  --mat-height: 5.5rem;
  --mat-height-lg: 7.5rem;
  --mat-binding: 0.25rem;
  --plate-sm: 5.25rem;
  --plate-md: 6.5rem;
  --plate-lg: 8.25rem;
  --plate-xl: 14rem;
}

@media (min-width: 48rem) {
  :root {
    --gutter: var(--space-8);
  }
}

@media (min-width: 64rem) {
  :root {
    --plate-sm: 8.5rem;
    --plate-md: 11rem;
    --plate-lg: 17rem;
    --plate-xl: 22rem;
  }
}

/* Elevation is two-part (a tight contact shadow and a soft ambient one) plus a rim light, tinted to
   the night hue so shadows never look grey on these grounds. */
:root,
:root[data-theme="light"] {
  --shadow-tint: 24 13 50;
  --shadow-sm: 0 1px 2px rgb(var(--shadow-tint) / 0.08), 0 2px 6px -1px rgb(var(--shadow-tint) / 0.08);
  --shadow-md: 0 1px 2px rgb(var(--shadow-tint) / 0.1), 0 8px 20px -6px rgb(var(--shadow-tint) / 0.16);
  --shadow-lg: 0 2px 4px rgb(var(--shadow-tint) / 0.1), 0 18px 40px -12px rgb(var(--shadow-tint) / 0.26);
  --shadow-xl: 0 4px 8px rgb(var(--shadow-tint) / 0.12), 0 32px 64px -18px rgb(var(--shadow-tint) / 0.34);
  --rim-light: inset 0 1px 0 rgb(var(--rim-tint) / 0.75);
  --rim-tint: 255 255 255;
  --light-field: 255 255 255;
  --light-field-strength: 0.85;
  --scrim: rgb(var(--shadow-tint) / 0.45);
  /* The weave's overlay on the gradient: warp floats shaded, weft floats lit, edges between threads. */
  --weave-shade: rgb(var(--shadow-tint) / 0.16);
  --weave-light: rgb(var(--rim-tint) / 0.16);
  --weave-edge: rgb(var(--shadow-tint) / 0.42);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --shadow-tint: 4 2 14;
    --shadow-sm: 0 1px 2px rgb(var(--shadow-tint) / 0.5), 0 2px 6px -1px rgb(var(--shadow-tint) / 0.4);
    --shadow-md: 0 1px 2px rgb(var(--shadow-tint) / 0.55), 0 10px 24px -6px rgb(var(--shadow-tint) / 0.6);
    --shadow-lg: 0 2px 4px rgb(var(--shadow-tint) / 0.6), 0 20px 44px -12px rgb(var(--shadow-tint) / 0.7);
    --shadow-xl: 0 4px 8px rgb(var(--shadow-tint) / 0.6), 0 36px 72px -18px rgb(var(--shadow-tint) / 0.8);
    --rim-light: inset 0 1px 0 rgb(var(--rim-tint) / 0.08);
    --light-field: 30 220 209;
    --light-field-strength: 0.1;
    --scrim: rgb(var(--shadow-tint) / 0.7);
    --weave-shade: rgb(var(--shadow-tint) / 0.2);
    --weave-light: rgb(var(--rim-tint) / 0.12);
    --weave-edge: rgb(var(--shadow-tint) / 0.55);
  }
}

:root[data-theme="dark"] {
  --shadow-tint: 4 2 14;
  --shadow-sm: 0 1px 2px rgb(var(--shadow-tint) / 0.5), 0 2px 6px -1px rgb(var(--shadow-tint) / 0.4);
  --shadow-md: 0 1px 2px rgb(var(--shadow-tint) / 0.55), 0 10px 24px -6px rgb(var(--shadow-tint) / 0.6);
  --shadow-lg: 0 2px 4px rgb(var(--shadow-tint) / 0.6), 0 20px 44px -12px rgb(var(--shadow-tint) / 0.7);
  --shadow-xl: 0 4px 8px rgb(var(--shadow-tint) / 0.6), 0 36px 72px -18px rgb(var(--shadow-tint) / 0.8);
  --rim-light: inset 0 1px 0 rgb(var(--rim-tint) / 0.08);
  --light-field: 30 220 209;
  --light-field-strength: 0.1;
  --scrim: rgb(var(--shadow-tint) / 0.7);
  --weave-shade: rgb(var(--shadow-tint) / 0.2);
  --weave-light: rgb(var(--rim-tint) / 0.12);
  --weave-edge: rgb(var(--shadow-tint) / 0.55);
}


/* /src/styles/base.css */
/* The base layer: element defaults, focus, the type tiers and a few utilities every screen shares.
   Values come from tokens.css; components style themselves with CSS Modules. Logical properties
   throughout, so the same rules mirror for Arabic. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  color-scheme: light dark;
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}
:root[data-theme="light"] {
  color-scheme: light;
}
:root[data-theme="dark"] {
  color-scheme: dark;
}

body {
  margin: 0;
  min-block-size: 100dvh;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img,
svg {
  display: block;
  max-inline-size: 100%;
}
img {
  block-size: auto;
}

p,
h1,
h2,
h3,
h4,
dl,
dd,
figure,
blockquote {
  margin: 0;
}
ul,
ol {
  margin: 0;
  padding: 0;
}

a {
  color: var(--color-accent-text);
  text-underline-offset: 0.2em;
  text-decoration-thickness: 0.08em;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

:lang(ar) {
  font-family: var(--font-arabic);
  letter-spacing: 0;
  line-height: var(--leading-arabic);
}

:focus-visible {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: var(--focus-offset);
}

::selection {
  background: var(--color-accent);
  color: var(--color-on-accent);
}

/* Anchored sections clear the sticky header. */
[id] {
  scroll-margin-block-start: calc(var(--space-16) + var(--space-4));
}

/* ---------- Type tiers (DESIGN.md §2.2): the hierarchy the eye can see ---------- */
.display,
.h1,
.h2 {
  font-weight: var(--weight-heavy);
  letter-spacing: var(--tracking-heading);
  text-wrap: balance;
}
.display {
  font-size: var(--text-7xl);
  font-weight: var(--weight-black);
  line-height: var(--leading-display);
  letter-spacing: var(--tracking-display);
}
.h1 {
  font-size: var(--text-6xl);
  line-height: var(--leading-tight);
}
.h2 {
  font-size: var(--text-5xl);
  line-height: var(--leading-tight);
}
.h3 {
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  text-wrap: balance;
}
.h4 {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
}
.lede {
  font-size: var(--text-lg);
  line-height: var(--leading-normal);
  max-inline-size: var(--measure);
}
.small {
  font-size: var(--text-sm);
  color: var(--color-text-muted);
}
.label {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  font-variant-caps: all-small-caps;
  letter-spacing: var(--tracking-label);
}
:lang(ar) .display,
:lang(ar) .h1,
:lang(ar) .h2,
:lang(ar) .label {
  letter-spacing: 0;
}

/* ---------- Utilities ---------- */
.wrap {
  inline-size: 100%;
  max-inline-size: var(--content-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.measure {
  max-inline-size: var(--measure);
}
.num {
  font-variant-numeric: tabular-nums lining-nums;
}
/* What people type keeps its own line breaks (DESIGN.md §2.2). */
.as-typed {
  white-space: pre-line;
  overflow-wrap: anywhere;
}
.visually-hidden {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ---------- Theme switch: a short cross-fade where the browser supports it ---------- */
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: var(--duration-slow);
  animation-timing-function: var(--ease-out);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
  }
}


/* /src/root.module.css */
._error_1t3ip_1 {
  display: grid;
  place-items: center;
  min-block-size: 100dvh;
  padding: var(--gutter);
  background:
    radial-gradient(48rem 32rem at 72% 18%, rgb(var(--light-field) / var(--light-field-strength)), transparent 70%),
    var(--color-surface-tint);
}
._errorCard_1t3ip_10 {
  display: grid;
  gap: var(--space-5);
  justify-items: start;
  inline-size: min(100%, 36rem);
  padding: var(--space-8);
  border-radius: var(--radius-xl);
  background: var(--color-surface);
  box-shadow: var(--shadow-lg), var(--rim-light);
}
._errorText_1t3ip_20 {
  color: var(--color-text-muted);
}
._stack_1t3ip_23 {
  max-inline-size: 100%;
  overflow-x: auto;
  padding: var(--space-4);
  border-radius: var(--radius-md);
  background: var(--color-surface-tint);
  font-size: var(--text-xs);
  white-space: pre-wrap;
}


/* /src/components/Button.module.css */
/* Buttons. `data-force` pins hover, focus or pressed for the component page; real use never sets it. */
._button_4bmfs_2 {
  --btn-bg: transparent;
  --btn-fg: var(--color-text);
  --btn-border: transparent;
  --btn-shadow: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: var(--target-min);
  padding-inline: var(--space-6);
  border: var(--border-thin) solid var(--btn-border);
  border-radius: var(--radius-full);
  background: var(--btn-bg);
  color: var(--btn-fg);
  box-shadow: var(--btn-shadow);
  font-weight: var(--weight-semibold);
  font-size: var(--text-base);
  line-height: var(--leading-snug);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--duration-fast) var(--ease-out),
    color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
._label_4bmfs_31 {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
/* A short blur hides the swap between two labels (Emil Kowalski). Entry only: the old label just goes. */
._swap_4bmfs_37 {
  animation: _label-in_4bmfs_1 var(--duration-fast) var(--ease-out);
}
@keyframes _label-in_4bmfs_1 {
  from {
    opacity: 0;
    filter: blur(2px);
  }
}

._button_4bmfs_2:active:not(:disabled, [aria-busy="true"]),
._button_4bmfs_2[data-force="active"] {
  transform: scale(var(--press-scale));
}
._button_4bmfs_2[data-force="focus"] {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: var(--focus-offset);
}

/* ---------- Variants ---------- */
._primary_4bmfs_57 {
  --btn-bg: var(--color-accent);
  --btn-fg: var(--color-on-accent);
  --btn-shadow: var(--shadow-sm), var(--rim-light);
}
._primary_4bmfs_57[data-force="hover"] {
  --btn-bg: var(--color-accent-hover);
  --btn-shadow: var(--shadow-md), var(--rim-light);
}
._primary_4bmfs_57:active:not(:disabled, [aria-busy="true"]),
._primary_4bmfs_57[data-force="active"] {
  --btn-bg: var(--color-accent-pressed);
  --btn-shadow: var(--shadow-sm);
}

._secondary_4bmfs_72 {
  --btn-bg: var(--color-surface);
  --btn-fg: var(--color-accent-text);
  --btn-border: var(--color-accent);
  --btn-shadow: var(--shadow-sm);
}
._secondary_4bmfs_72[data-force="hover"] {
  --btn-bg: var(--color-surface-tint);
  --btn-shadow: var(--shadow-md);
}
._secondary_4bmfs_72[aria-pressed="true"] {
  --btn-bg: var(--color-surface-tint);
  --btn-border: var(--color-accent-text);
  --btn-shadow: none;
}

._quiet_4bmfs_88 {
  padding-inline: var(--space-3);
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.2em;
}
._quiet_4bmfs_88[data-force="hover"] {
  --btn-bg: var(--color-surface-tint);
  text-decoration: none;
}
._quiet_4bmfs_88[aria-pressed="true"] {
  --btn-bg: var(--color-surface-tint);
  --btn-fg: var(--color-accent-text);
  text-decoration: none;
}

._danger_4bmfs_104 {
  --btn-bg: var(--color-danger-bg);
  --btn-fg: var(--color-danger);
  --btn-border: var(--color-danger);
}
._danger_4bmfs_104[data-force="hover"] {
  --btn-shadow: var(--shadow-sm);
}

@media (hover: hover) and (pointer: fine) {
  ._primary_4bmfs_57:hover:not(:disabled, [aria-busy="true"]) {
    --btn-bg: var(--color-accent-hover);
    --btn-shadow: var(--shadow-md), var(--rim-light);
  }
  ._secondary_4bmfs_72:hover:not(:disabled, [aria-busy="true"]) {
    --btn-bg: var(--color-surface-tint);
    --btn-shadow: var(--shadow-md);
  }
  ._quiet_4bmfs_88:hover:not(:disabled) {
    --btn-bg: var(--color-surface-tint);
    text-decoration: none;
  }
  ._danger_4bmfs_104:hover:not(:disabled) {
    --btn-shadow: var(--shadow-sm);
  }
}

/* ---------- Disabled and loading ---------- */
._button_4bmfs_2:disabled {
  --btn-bg: var(--color-surface-tint);
  --btn-fg: var(--color-text-muted);
  --btn-border: transparent;
  --btn-shadow: none;
  cursor: not-allowed;
}
._quiet_4bmfs_88:disabled {
  --btn-bg: transparent;
  text-decoration: none;
}
._button_4bmfs_2[aria-busy="true"] {
  cursor: progress;
}

/* ---------- Sizes. Every one keeps the 44px target. ---------- */
._sm_4bmfs_148 {
  padding-inline: var(--space-5);
  font-size: var(--text-sm);
}
._xs_4bmfs_152 {
  padding-inline: var(--space-4);
  font-size: var(--text-sm);
}

/* ---------- On the dark beat the action is teal (DESIGN.md §2.1) ---------- */
[data-ground="evening"] ._primary_4bmfs_57 {
  --btn-bg: var(--color-accent-inverse);
  --btn-fg: var(--color-on-accent-inverse);
  --btn-shadow: var(--shadow-md);
}
[data-ground="evening"] ._primary_4bmfs_57[data-force="hover"] {
  --btn-bg: var(--color-accent-inverse-hover);
}
[data-ground="evening"] ._quiet_4bmfs_88 {
  --btn-fg: var(--color-text-on-inverse);
}
[data-ground="evening"] ._button_4bmfs_2[data-force="focus"] {
  outline-color: var(--color-accent-text-on-inverse);
}
@media (hover: hover) and (pointer: fine) {
  [data-ground="evening"] ._primary_4bmfs_57:hover:not(:disabled, [aria-busy="true"]) {
    --btn-bg: var(--color-accent-inverse-hover);
  }
  [data-ground="evening"] ._quiet_4bmfs_88:hover:not(:disabled) {
    --btn-bg: transparent;
    --btn-fg: var(--color-accent-text-on-inverse);
    text-decoration: underline;
  }
}

@media (prefers-reduced-motion: reduce) {
  ._button_4bmfs_2:active:not(:disabled, [aria-busy="true"]),
  ._button_4bmfs_2[data-force="active"] {
    transform: none;
  }
  ._swap_4bmfs_37 {
    animation: none;
  }
}


/* /src/components/Mat.module.css */
._defs_611rx_1 {
  position: absolute;
  inline-size: 0;
  block-size: 0;
  overflow: hidden;
}
._weave_611rx_7 {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
}

._mat_611rx_14 {
  position: relative;
}
._band_611rx_17 {
  position: relative;
  block-size: var(--mat-height);
  background: var(--brand-gradient);
  border-block: var(--mat-binding) solid var(--color-mat-edge);
  box-shadow: var(--shadow-lg);
}
._roll_611rx_24 {
  position: absolute;
  inset-block: calc(var(--space-2) * -1);
  inset-inline-start: 0;
  inline-size: var(--space-5);
  border-radius: var(--radius-full);
  background:
    linear-gradient(90deg, var(--weave-edge), transparent 40%, transparent 60%, var(--weave-edge)),
    var(--brand-gradient);
  box-shadow: var(--shadow-md);
  opacity: 0;
  pointer-events: none;
}

/* ---------- Variants ---------- */
@media (min-width: 64rem) {
  ._hero_611rx_40 ._band_611rx_17 {
    block-size: var(--mat-height-lg);
  }
}
._evening_611rx_44 ._band_611rx_17 {
  block-size: var(--space-10);
  box-shadow: none;
  overflow: clip;
}
/* Wider than its band by the distance the threads drift, so no edge ever shows (past base.css's
   cap on every svg's width). */
._evening_611rx_44 ._weave_611rx_7 {
  inline-size: calc(100% + var(--space-24));
  max-inline-size: none;
}
._rule_611rx_55 ._band_611rx_17 {
  block-size: var(--space-3);
  border-block-width: 0;
  border-radius: var(--radius-full);
  box-shadow: none;
  overflow: hidden;
}
._rule_611rx_55 ._roll_611rx_24 {
  inset-block: calc(var(--space-1) * -1);
  inline-size: var(--space-3);
}

/* ---------- The unroll ---------- */
/* Rolled up until the script unrolls it. The roll stays visible, so the mat starts rolled, never
   absent. If the app never starts, the page settles after three seconds and shows it whole. */
.js ._mat_611rx_14[data-unroll]:not([data-unrolled]) ._band_611rx_17 {
  clip-path: inset(0 calc(100% - var(--space-5)) 0 0);
}
.js ._mat_611rx_14[data-unroll]:not([data-unrolled]):dir(rtl) ._band_611rx_17 {
  clip-path: inset(0 0 0 calc(100% - var(--space-5)));
}
.js ._mat_611rx_14[data-unroll]:not([data-unrolled]) ._roll_611rx_24 {
  opacity: 1;
}
.js.settled:not(.hydrated) ._mat_611rx_14[data-unroll] ._band_611rx_17 {
  clip-path: none;
}
.js.settled:not(.hydrated) ._mat_611rx_14[data-unroll] ._roll_611rx_24 {
  opacity: 0;
}

/* ---------- Thread chips ---------- */
._chip_611rx_87 {
  position: relative;
  flex: none;
  overflow: hidden;
  inline-size: var(--space-10);
  block-size: var(--space-4);
  border-radius: var(--radius-sm);
  background: var(--brand-gradient);
  background-size: 600% 100%;
  box-shadow: var(--shadow-sm);
}
._thread1_611rx_98 {
  background-position: 0 0;
}
._thread2_611rx_101 {
  background-position: 50% 0;
}
._thread3_611rx_104 {
  background-position: 100% 0;
}

/* Reduced motion: no unroll; the band fades in when it's ready. */
@media (prefers-reduced-motion: reduce) {
  .js ._mat_611rx_14[data-unroll]:not([data-unrolled]) ._band_611rx_17,
  .js ._mat_611rx_14[data-unroll]:not([data-unrolled]):dir(rtl) ._band_611rx_17 {
    clip-path: none;
    opacity: 0;
  }
  .js ._mat_611rx_14[data-unroll]:not([data-unrolled]) ._roll_611rx_24 {
    opacity: 0;
  }
  ._mat_611rx_14 ._band_611rx_17 {
    transition: opacity var(--duration-slow) var(--ease-out);
  }
}


/* /src/components/Toast.module.css */
._region_san8b_1 {
  position: fixed;
  z-index: 50;
  inset-block-end: var(--space-4);
  inset-inline: var(--gutter);
  display: grid;
  gap: var(--space-2);
  justify-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
  pointer-events: none;
}
@media (min-width: 48rem) {
  ._region_san8b_1 {
    inset-inline: auto var(--space-6);
    inset-block-end: var(--space-6);
    justify-items: end;
  }
}
/* A screen holding a bar at its foot (an album's selection, its question before leaving) keeps its
   toasts above the bar, whose height the bar keeps in --dock-height. */
:root:has([data-dock]) ._region_san8b_1 {
  inset-block-end: calc(var(--space-4) + var(--dock-height, 0rem) + var(--space-3));
}

._toast_san8b_27 {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  inline-size: min(26rem, 100%);
  padding-block: var(--space-2);
  padding-inline: var(--space-4) var(--space-2);
  border-radius: var(--radius-lg);
  background: var(--color-surface-inverse);
  color: var(--color-text-on-inverse);
  box-shadow: var(--shadow-xl), var(--rim-light);
  pointer-events: auto;
  touch-action: pan-y;
  user-select: none;
  /* Arrives on the long expo curve; leaves on the short one, faster (DESIGN.md §2.4). */
  transition:
    translate var(--duration-slow) var(--ease-out-expo),
    opacity var(--duration-slow) var(--ease-out-expo);
}
@starting-style {
  ._toast_san8b_27 {
    translate: 0 var(--space-6);
    opacity: 0;
  }
}
._toast_san8b_27[data-dragging] {
  transition: none;
}
._toast_san8b_27[data-leaving] {
  opacity: 0;
  transition-duration: var(--duration-base);
  transition-timing-function: var(--ease-out);
}
._toast_san8b_27[data-leaving="down"] {
  translate: 0 var(--space-3);
}
._toast_san8b_27[data-leaving="end"] {
  translate: 100% 0;
}
._toast_san8b_27[data-leaving="start"] {
  translate: -100% 0;
}

._icon_san8b_70 {
  color: var(--color-accent-text-on-inverse);
}
._text_san8b_73 {
  flex: 1;
  font-size: var(--text-sm);
}
._action_san8b_77 {
  min-block-size: var(--target-min);
  padding-inline: var(--space-3);
  border: 0;
  border-radius: var(--radius-full);
  background: transparent;
  color: var(--color-accent-text-on-inverse);
  font-weight: var(--weight-bold);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-out);
}
._close_san8b_88 {
  color: var(--color-text-muted-on-inverse);
}
._toast_san8b_27 :focus-visible {
  outline-color: var(--color-accent-text-on-inverse);
}
@media (hover: hover) and (pointer: fine) {
  ._action_san8b_77:hover {
    background: rgb(var(--rim-tint) / 0.1);
  }
  ._close_san8b_88:hover {
    background: rgb(var(--rim-tint) / 0.1);
    color: var(--color-text-on-inverse);
  }
}

/* Reduced motion: no travel, only a fade. */
@media (prefers-reduced-motion: reduce) {
  ._toast_san8b_27 {
    transition: opacity var(--duration-fast) linear;
  }
  @starting-style {
    ._toast_san8b_27 {
      translate: none;
    }
  }
  ._toast_san8b_27[data-leaving] {
    translate: none;
  }
}


/* /src/components/Icon.module.css */
._icon_si4l2_1 {
  flex: none;
  inline-size: var(--icon-md);
  block-size: var(--icon-md);
  fill: currentColor;
}
._sm_si4l2_7 {
  inline-size: var(--icon-sm);
  block-size: var(--icon-sm);
}
._md_si4l2_11 {
  inline-size: var(--icon-md);
  block-size: var(--icon-md);
}
._lg_si4l2_15 {
  inline-size: var(--icon-lg);
  block-size: var(--icon-lg);
}
._directional_si4l2_19:dir(rtl) {
  scale: -1 1;
}

._spin_si4l2_23 {
  animation: _spin_si4l2_23 var(--duration-story) linear infinite;
}
@keyframes _spin_si4l2_23 {
  to {
    rotate: 1turn;
  }
}

@media (prefers-reduced-motion: reduce) {
  ._spin_si4l2_23 {
    animation-duration: calc(var(--duration-story) * 2);
  }
}


/* /src/components/IconButton.module.css */
._iconButton_fx5gu_1 {
  display: inline-grid;
  place-items: center;
  flex: none;
  inline-size: var(--target-min);
  block-size: var(--target-min);
  padding: 0;
  border: var(--border-thin) solid transparent;
  border-radius: var(--radius-full);
  background: transparent;
  color: inherit;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
._iconButton_fx5gu_1:active:not(:disabled),
._iconButton_fx5gu_1[data-force="active"] {
  transform: scale(var(--press-scale));
}
._iconButton_fx5gu_1[data-force="hover"] {
  background: var(--color-surface-tint);
}
._iconButton_fx5gu_1[data-force="focus"] {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: var(--focus-offset);
}
._iconButton_fx5gu_1[aria-pressed="true"] {
  background: var(--color-surface-tint);
  color: var(--color-accent-text);
}
._iconButton_fx5gu_1:disabled {
  color: var(--color-text-muted);
  cursor: not-allowed;
}

._outlined_fx5gu_39 {
  border-color: var(--color-border-strong);
  background: var(--color-surface);
}
._outlined_fx5gu_39:disabled {
  border-color: var(--color-border);
  background: transparent;
}

/* Sits inside an input's end (show password, clear search). */
._field_fx5gu_49 {
  position: absolute;
  inset-inline-end: var(--space-1);
  inset-block-start: 50%;
  translate: 0 -50%;
  color: var(--color-text-muted);
}
._field_fx5gu_49:active:not(:disabled) {
  transform: scale(var(--press-scale));
}

@media (hover: hover) and (pointer: fine) {
  ._iconButton_fx5gu_1:hover:not(:disabled) {
    background: var(--color-surface-tint);
  }
}

[data-ground="evening"] ._iconButton_fx5gu_1:focus-visible {
  outline-color: var(--color-accent-text-on-inverse);
}
@media (hover: hover) and (pointer: fine) {
  [data-ground="evening"] ._plain_fx5gu_70:hover:not(:disabled) {
    background: rgb(var(--rim-tint) / 0.1);
    color: var(--color-text-on-inverse);
  }
}

@media (prefers-reduced-motion: reduce) {
  ._iconButton_fx5gu_1:active:not(:disabled),
  ._iconButton_fx5gu_1[data-force="active"] {
    transform: none;
  }
}


/* /src/layouts/public.module.css */
._skipLink_76936_1 {
  position: absolute;
  inset-inline-start: var(--space-4);
  inset-block-start: var(--space-2);
  z-index: 100;
  display: inline-flex;
  align-items: center;
  min-block-size: var(--target-min);
  padding-inline: var(--space-4);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  color: var(--color-text);
  box-shadow: var(--shadow-md);
  translate: 0 -200%;
}
._skipLink_76936_1:focus-visible {
  translate: 0 0;
}
/* The skip link moves focus here; the ring sits inside the edge so it isn't clipped. */
._main_76936_20:focus-visible {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: calc(var(--focus-ring) * -1);
}

/* ---------- Header: sticky, with the mat's binding drawn under it once you scroll ---------- */
._header_76936_26 {
  position: sticky;
  inset-block-start: 0;
  z-index: 20;
  background: var(--color-bg);
  border-block-end: var(--border-thin) solid var(--color-border);
  transition:
    box-shadow var(--duration-base) var(--ease-out),
    border-color var(--duration-base) var(--ease-out);
}
._header_76936_26::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  inset-block-end: calc(var(--border-thin) * -1);
  block-size: var(--mat-binding);
  background: var(--brand-gradient);
  transform-origin: left center;
  scale: 0 1;
  transition: scale var(--duration-slow) var(--ease-out);
}
._header_76936_26:dir(rtl)::after {
  transform-origin: right center;
}
._scrolled_76936_50 {
  box-shadow: var(--shadow-md);
  border-block-end-color: transparent;
}
._scrolled_76936_50::after {
  scale: 1 1;
}
/* The next page is loading: the binding draws across, slowing as it goes, until the page arrives. */
._header_76936_26[data-loading]::after {
  animation: _binding-draw_76936_1 var(--duration-story) var(--ease-out-expo) both;
}
@keyframes _binding-draw_76936_1 {
  from {
    scale: 0 1;
  }
  to {
    scale: 0.85 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  ._header_76936_26[data-loading]::after {
    animation: _binding-fade_76936_1 var(--duration-slow) var(--ease-out) both;
    scale: 1 1;
  }
}
@keyframes _binding-fade_76936_1 {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Logged in on this browser (lib/theme.ts): the dashboard in place of logging in and applying. */
._memberOnly_76936_85 {
  display: none;
}
html[data-session="in"] ._guestOnly_76936_88 {
  display: none;
}
html[data-session="in"] ._memberOnly_76936_85 {
  display: inline-flex;
}
html[data-session="in"] li._memberOnly_76936_85 {
  display: list-item;
}

._headerInner_76936_98 {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  min-block-size: var(--space-16);
}
._home_76936_104 {
  display: inline-flex;
  align-items: center;
  flex: none;
  min-block-size: var(--target-min);
  border-radius: var(--radius-sm);
}
._nav_76936_111 {
  display: none;
}
._actions_76936_114 {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-inline-start: auto;
}
._login_76936_120 {
  display: none;
}
@media (min-width: 40rem) {
  ._login_76936_120 {
    display: inline-flex;
  }
}
@media (min-width: 64rem) {
  /* The 200px lockup stands 70px tall; its clear space is a quarter of that on every side (§2.5). */
  ._headerInner_76936_98 {
    padding-block: var(--space-5);
  }
  ._menuButton_76936_133 {
    display: none;
  }
  ._nav_76936_111 {
    display: block;
    margin-inline-start: var(--space-8);
  }
  ._nav_76936_111 ul {
    display: flex;
    gap: var(--space-1);
    list-style: none;
  }
}
._navLink_76936_146 {
  display: inline-flex;
  align-items: center;
  min-block-size: var(--target-min);
  padding-inline: var(--space-3);
  border-radius: var(--radius-full);
  color: var(--color-text);
  font-weight: var(--weight-medium);
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-out);
}
._navLink_76936_146[aria-current="page"] {
  background: var(--color-surface-tint);
  color: var(--color-accent-text);
}
@media (hover: hover) and (pointer: fine) {
  ._navLink_76936_146:hover {
    background: var(--color-surface-tint);
  }
}

/* ---------- The phone menu's contents ---------- */
._sheetHead_76936_168 {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
._sheetNav_76936_173 {
  display: grid;
  list-style: none;
}
._sheetNav_76936_173 a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-block-size: var(--space-12);
  border-block-end: var(--border-thin) solid var(--color-border);
  color: var(--color-text);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  text-decoration: none;
}
._sheetNav_76936_173 a[aria-current="page"] {
  color: var(--color-accent-text);
}
._sheetNav_76936_173 a > svg {
  color: var(--color-text-muted);
}
._sheetActions_76936_195 {
  display: grid;
  gap: var(--space-3);
}
._sheetFoot_76936_199 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  margin-block-start: auto;
}
._sheetFoot_76936_199 a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-block-size: var(--target-min);
  color: var(--color-text);
  font-weight: var(--weight-medium);
  text-decoration: none;
}

/* ---------- Footer ---------- */
._footer_76936_216 {
  padding-block: var(--space-12) var(--space-8);
  border-block-start: var(--border-thin) solid var(--color-border);
  background: var(--color-bg);
}
._footerGrid_76936_221 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-8) var(--space-6);
}
._brand_76936_226 {
  grid-column: 1 / -1;
}
._footer_76936_216 nav ul {
  display: grid;
  list-style: none;
}
._footer_76936_216 nav a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-block-size: var(--target-min);
  color: var(--color-text);
  font-weight: var(--weight-medium);
  text-decoration: none;
}
._footerHeading_76936_242 {
  margin-block-end: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-text-muted);
}
._footerBase_76936_248 {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-2) var(--space-6);
  margin-block-start: var(--space-10);
  padding-block-start: var(--space-5);
  border-block-start: var(--border-thin) solid var(--color-border);
  font-size: var(--text-sm);
  color: var(--color-text-muted);
}
@media (hover: hover) and (pointer: fine) {
  ._footer_76936_216 nav a:hover,
  ._sheetFoot_76936_199 a:hover {
    color: var(--color-accent-text);
    text-decoration: underline;
    text-underline-offset: 0.2em;
  }
}
@media (min-width: 64rem) {
  ._footerGrid_76936_221 {
    grid-template-columns: minmax(0, 5fr) repeat(3, minmax(0, 2fr));
  }
  ._brand_76936_226 {
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  ._header_76936_26,
  ._header_76936_26::after {
    transition: none;
  }
}


/* /src/components/Logo.module.css */
._logo_5fob6_1 {
  display: inline-flex;
  align-items: center;
}
._always_5fob6_5,
._onLight_5fob6_6,
._onDark_5fob6_7 {
  display: block;
}
._onDark_5fob6_7 {
  display: none;
}
:root[data-theme="dark"] ._onLight_5fob6_6 {
  display: none;
}
:root[data-theme="dark"] ._onDark_5fob6_7 {
  display: block;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) ._onLight_5fob6_6 {
    display: none;
  }
  :root:not([data-theme="light"]) ._onDark_5fob6_7 {
    display: block;
  }
}

/* Sizes in CSS pixels never pass what the files hold on the densest screen they meet (§2.5). */
._header_5fob6_29 img {
  block-size: var(--space-10);
  inline-size: auto;
}
._footer_5fob6_33 ._onLight_5fob6_6 img {
  inline-size: 8.25rem;
  block-size: auto;
}
._footer_5fob6_33 ._onDark_5fob6_7 img {
  block-size: var(--space-16);
  inline-size: auto;
}
._appbar_5fob6_41 img {
  block-size: var(--space-8);
  inline-size: auto;
}
@media (min-width: 64rem) {
  ._header_5fob6_29 img,
  ._footer_5fob6_33 ._onLight_5fob6_6 img,
  ._footer_5fob6_33 ._onDark_5fob6_7 img {
    inline-size: 12.5rem;
    block-size: auto;
  }
}


/* /src/components/Sheet.module.css */
._sheet_19abo_1 {
  position: fixed;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  max-inline-size: none;
  max-block-size: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--color-text);
  overflow: hidden;
}
._sheet_19abo_1::backdrop {
  background: transparent;
}
._scrim_19abo_18 {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  padding: 0;
  border: 0;
  background: var(--scrim);
  cursor: default;
}
._panel_19abo_27 {
  position: absolute;
  inset-block: 0;
  inset-inline-end: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
  inline-size: min(22rem, 88vw);
  padding-inline: var(--space-5);
  padding-block: 0 var(--space-6);
  background: var(--color-bg);
  box-shadow: var(--shadow-xl);
  overflow-y: auto;
  overscroll-behavior: contain;
}
._strip_19abo_42 {
  position: relative;
  flex: none;
  margin-inline: calc(var(--space-5) * -1);
  block-size: var(--space-2);
  background: var(--brand-gradient);
  overflow: hidden;
}

/* The page behind doesn't scroll while the sheet is open. */
:root[data-sheet-open] {
  overflow: hidden;
}


/* /src/components/ThemeSwitch.module.css */
._switch_8y1i5_1 {
  position: relative;
}
._moon_8y1i5_4,
._sun_8y1i5_5 {
  position: absolute;
  inset: 0;
  margin: auto;
  transition:
    opacity var(--duration-base) var(--ease-out),
    rotate var(--duration-slow) var(--ease-out),
    scale var(--duration-slow) var(--ease-out);
}
._sun_8y1i5_5 {
  opacity: 0;
  rotate: -90deg;
  scale: 0.6;
}
:root[data-theme="dark"] ._moon_8y1i5_4 {
  opacity: 0;
  rotate: 90deg;
  scale: 0.6;
}
:root[data-theme="dark"] ._sun_8y1i5_5 {
  opacity: 1;
  rotate: 0deg;
  scale: 1;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) ._moon_8y1i5_4 {
    opacity: 0;
    rotate: 90deg;
    scale: 0.6;
  }
  :root:not([data-theme="light"]) ._sun_8y1i5_5 {
    opacity: 1;
    rotate: 0deg;
    scale: 1;
  }
}
/* The pressed state is the theme itself; no extra fill. */
._switch_8y1i5_1._switch_8y1i5_1[aria-pressed="true"] {
  background: transparent;
  color: inherit;
}

@media (prefers-reduced-motion: reduce) {
  ._moon_8y1i5_4,
  ._sun_8y1i5_5 {
    transition: opacity var(--duration-base) linear;
    rotate: none;
    scale: none;
  }
}


/* /src/routes/apply.module.css */
/* Flow register (DESIGN.md §3.2): the violet wash, the title and what happens next in one column, the
   form on a raised card. From desktop up they sit side by side at 5:7, the card the larger. The form's
   short fields pair up once there's room; names, email, nationality and the password take the width. */
._page_xn6up_4 {
  min-block-size: 70dvh;
}
._grid_xn6up_7 {
  display: grid;
  gap: var(--space-8);
  align-items: start;
}
._intro_xn6up_12 {
  display: grid;
  gap: var(--space-4);
  justify-items: start;
}
/* A page's title on a phone is sized by the screen's width (--text-title, the lead's call in step 08). */
._title_xn6up_18 {
  font-size: var(--text-title);
}
._lede_xn6up_21 {
  max-inline-size: var(--measure);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
}
._how_xn6up_27 {
  max-inline-size: var(--measure);
  color: var(--color-text-muted);
}
._already_xn6up_31 {
  color: var(--color-text-muted);
}
._already_xn6up_31 a {
  color: var(--color-accent-text);
  font-weight: var(--weight-semibold);
}

._card_xn6up_39 {
  inline-size: 100%;
}
._form_xn6up_42 {
  display: grid;
  gap: var(--space-5);
}
._wide_xn6up_46 {
  grid-column: 1 / -1;
}
._actions_xn6up_49 {
  display: flex;
  grid-column: 1 / -1;
  margin-block-start: var(--space-2);
}

._sent_xn6up_55 {
  display: grid;
  gap: var(--space-4);
  justify-items: start;
  max-inline-size: var(--measure);
}
._sentIcon_xn6up_61 {
  display: inline-grid;
  place-items: center;
  inline-size: var(--space-12);
  block-size: var(--space-12);
  border-radius: var(--radius-full);
  background: var(--color-success-bg);
  color: var(--color-success);
}
._address_xn6up_70 {
  overflow-wrap: anywhere;
}
._sentActions_xn6up_73 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-block-start: var(--space-2);
}

@media (min-width: 40rem) {
  ._form_xn6up_42 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-5) var(--space-4);
  }
}
@media (min-width: 64rem) {
  ._grid_xn6up_7 {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: var(--space-8);
  }
  ._intro_xn6up_12 {
    grid-column: 1 / span 5;
    position: sticky;
    inset-block-start: calc(var(--space-24) + var(--space-8));
    padding-block-start: var(--space-4);
  }
  ._card_xn6up_39 {
    grid-column: 6 / span 7;
  }
  ._title_xn6up_18 {
    font-size: var(--text-6xl);
  }
}


/* /src/components/Alert.module.css */
._alert_1v9u3_1 {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-lg);
  color: var(--color-text);
  box-shadow: var(--rim-light);
}
._icon_1v9u3_10 {
  margin-block-start: var(--space-px);
}
._body_1v9u3_13 {
  display: grid;
  gap: var(--space-2);
  justify-items: start;
  min-inline-size: 0;
}
._success_1v9u3_19 {
  background: var(--color-success-bg);
}
._success_1v9u3_19 ._icon_1v9u3_10 {
  color: var(--color-success);
}
._info_1v9u3_25 {
  background: var(--color-info-bg);
}
._info_1v9u3_25 ._icon_1v9u3_10 {
  color: var(--color-info);
}
._warning_1v9u3_31 {
  background: var(--color-warning-bg);
}
._warning_1v9u3_31 ._icon_1v9u3_10 {
  color: var(--color-warning);
}
._danger_1v9u3_37 {
  background: var(--color-danger-bg);
}
._danger_1v9u3_37 ._icon_1v9u3_10 {
  color: var(--color-danger);
}


/* /src/components/Field.module.css */
._field_1mprh_1 {
  display: grid;
  gap: var(--space-2);
  align-content: start;
}
._wide_1mprh_6 {
  grid-column: 1 / -1;
}
._label_1mprh_9 {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
}
._help_1mprh_13 {
  font-size: var(--text-sm);
  color: var(--color-text-muted);
}
._confirmation_1mprh_17 {
  font-size: var(--text-sm);
  color: var(--color-success);
}
._error_1mprh_21 {
  display: flex;
  gap: var(--space-2);
  align-items: flex-start;
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-danger);
}
._error_1mprh_21 > svg {
  margin-block-start: var(--space-px);
}

/* ---------- Inputs ---------- */
._input_1mprh_34 {
  inline-size: 100%;
  min-block-size: var(--target-min);
  padding-inline: var(--space-4);
  border: var(--border-thin) solid var(--color-border-strong);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  color: var(--color-text);
  box-shadow: inset 0 var(--space-px) var(--space-1) rgb(var(--shadow-tint) / 0.06);
  transition:
    border-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out);
}
._input_1mprh_34::placeholder {
  color: var(--color-text-muted);
  opacity: 1;
}
._input_1mprh_34:focus-visible,
._input_1mprh_34[data-force="focus"] {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: 0;
  border-color: var(--color-focus);
}
._input_1mprh_34[data-force="hover"] {
  border-color: var(--color-text);
}
@media (hover: hover) and (pointer: fine) {
  ._input_1mprh_34:hover:not(:disabled, :focus-visible) {
    border-color: var(--color-text);
  }
}
._invalid_1mprh_65 ._input_1mprh_34 {
  border-color: var(--color-danger);
  box-shadow: inset 0 0 0 var(--border-thin) var(--color-danger);
}
._valid_1mprh_69 ._input_1mprh_34 {
  border-color: var(--color-success);
}
._input_1mprh_34:disabled {
  background: var(--color-surface-tint);
  color: var(--color-text-muted);
  border-color: var(--color-border);
  box-shadow: none;
  cursor: not-allowed;
}
/* Fields that wait on the server (an ID being checked) show progress in their own border. */
._input_1mprh_34[aria-busy="true"] {
  border-style: dashed;
  cursor: progress;
}

._select_1mprh_85,
._password_1mprh_86,
._search_1mprh_87 {
  position: relative;
  display: block;
}
._select_1mprh_85 ._input_1mprh_34 {
  appearance: none;
  padding-inline-end: var(--space-12);
}
._selectCaret_1mprh_95 {
  position: absolute;
  inset-inline-end: var(--space-4);
  inset-block-start: 50%;
  translate: 0 -50%;
  color: var(--color-text-muted);
  pointer-events: none;
}
._password_1mprh_86 ._input_1mprh_34 {
  padding-inline-end: var(--space-12);
}
._search_1mprh_87 ._input_1mprh_34 {
  padding-inline-start: var(--space-10);
}
._searchIcon_1mprh_109 {
  position: absolute;
  inset-inline-start: var(--space-3);
  inset-block-start: 50%;
  translate: 0 -50%;
  color: var(--color-text-muted);
  pointer-events: none;
}

/* ---------- Password rules, ticked off as you type ---------- */
._rules_1mprh_119 {
  display: grid;
  gap: var(--space-1);
  list-style: none;
  font-size: var(--text-sm);
  color: var(--color-text-muted);
}
._rule_1mprh_119 {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  transition: color var(--duration-base) var(--ease-out);
}
._ruleIcon_1mprh_132 {
  position: relative;
  flex: none;
  inline-size: var(--icon-sm);
  block-size: var(--icon-sm);
}
._ruleIcon_1mprh_132 > svg {
  position: absolute;
  inset: 0;
  transition:
    opacity var(--duration-base) var(--ease-out),
    scale var(--duration-base) var(--ease-out);
}
._metIcon_1mprh_145 {
  opacity: 0;
  scale: 0.6;
  color: var(--color-success);
}
._met_1mprh_145 {
  color: var(--color-text);
}
._met_1mprh_145 ._metIcon_1mprh_145 {
  opacity: 1;
  scale: 1;
}
._met_1mprh_145 ._unmetIcon_1mprh_157 {
  opacity: 0;
  scale: 0.6;
}

/* ---------- Text area ---------- */
._textarea_1mprh_163 {
  min-block-size: calc(var(--target-min) * 2.5);
  max-block-size: 60vh;
  padding-block: var(--space-3);
  line-height: var(--leading-normal);
  resize: vertical;
  field-sizing: content;
}

/* ---------- One choice from a few: cards with a radio dot ---------- */
._choiceField_1mprh_173 {
  display: grid;
  gap: var(--space-2);
  align-content: start;
  min-inline-size: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
._choiceField_1mprh_173 > legend {
  float: inline-start;
  inline-size: 100%;
  margin-block-end: var(--space-2);
  padding: 0;
}
._choices_1mprh_188 {
  display: grid;
  gap: var(--space-2);
  clear: both;
}
._choice_1mprh_173 {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-block-size: var(--target-min);
  padding: var(--space-3) var(--space-4);
  border: var(--border-thin) solid var(--color-border-strong);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  transition:
    border-color var(--duration-fast) var(--ease-out),
    background-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
._choice_1mprh_173 input {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
._choiceDot_1mprh_220 {
  display: grid;
  place-items: center;
  flex: none;
  inline-size: var(--icon-md);
  block-size: var(--icon-md);
  border: var(--border-strong) solid var(--color-border-strong);
  border-radius: var(--radius-full);
  background: var(--color-surface);
  transition: border-color var(--duration-fast) var(--ease-out);
}
/* The chosen dot grows in from the centre: a scale, never a change of size. */
._choiceDot_1mprh_220::after {
  content: "";
  inline-size: 50%;
  block-size: 50%;
  border-radius: var(--radius-full);
  background: var(--color-accent);
  scale: 0;
  transition: scale var(--duration-fast) var(--ease-out);
}
._choice_1mprh_173:has(input:checked) {
  border-color: var(--color-accent);
  background: var(--color-surface-tint);
  box-shadow: inset 0 0 0 var(--border-thin) var(--color-accent);
}
._choice_1mprh_173:has(input:checked) ._choiceDot_1mprh_220 {
  border-color: var(--color-accent);
}
._choice_1mprh_173:has(input:checked) ._choiceDot_1mprh_220::after {
  scale: 1;
}
._choice_1mprh_173:has(input:focus-visible),
._choice_1mprh_173:has(input[data-force="focus"]) {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: var(--focus-offset);
}
._choice_1mprh_173:has(input:active:not(:disabled)) {
  transform: scale(var(--press-scale));
}
._choice_1mprh_173:has(input:disabled) {
  background: var(--color-surface-tint);
  border-color: var(--color-border);
  color: var(--color-text-muted);
  cursor: not-allowed;
}
._invalid_1mprh_65 ._choice_1mprh_173 {
  border-color: var(--color-danger);
}
@media (hover: hover) and (pointer: fine) {
  ._choice_1mprh_173:hover:not(:has(input:checked, input:disabled)) {
    border-color: var(--color-text);
  }
}
@media (min-width: 30rem) {
  ._choices_1mprh_188 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
  }
}

/* ---------- Checkbox ---------- */
._checkField_1mprh_281 {
  display: grid;
  gap: var(--space-1);
}
._check_1mprh_281 {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  min-block-size: var(--target-min);
  padding-block: var(--space-2);
  cursor: pointer;
}
._check_1mprh_281 input {
  position: absolute;
  inset-block-start: var(--space-2);
  inset-inline-start: 0;
  inline-size: var(--icon-lg);
  block-size: var(--icon-lg);
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
._checkBox_1mprh_304 {
  display: grid;
  place-items: center;
  flex: none;
  inline-size: var(--icon-lg);
  block-size: var(--icon-lg);
  border: var(--border-strong) solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: transparent;
  transition:
    background-color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
._check_1mprh_281 input:checked + ._checkBox_1mprh_304 {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}
._check_1mprh_281 input:focus-visible + ._checkBox_1mprh_304,
._check_1mprh_281 input[data-force="focus"] + ._checkBox_1mprh_304 {
  outline: var(--focus-ring) solid var(--color-focus);
  outline-offset: var(--focus-offset);
}
._check_1mprh_281 input:active:not(:disabled) + ._checkBox_1mprh_304 {
  transform: scale(var(--press-scale));
}
._check_1mprh_281 input:disabled + ._checkBox_1mprh_304 {
  background: var(--color-surface-tint);
  border-color: var(--color-border);
}
._check_1mprh_281:has(input:disabled) {
  color: var(--color-text-muted);
  cursor: not-allowed;
}
._invalid_1mprh_65 ._checkBox_1mprh_304 {
  border-color: var(--color-danger);
}
@media (hover: hover) and (pointer: fine) {
  ._check_1mprh_281:hover input:not(:disabled, :checked) + ._checkBox_1mprh_304 {
    border-color: var(--color-text);
  }
}

@media (prefers-reduced-motion: reduce) {
  ._ruleIcon_1mprh_132 > svg,
  ._rule_1mprh_119 {
    transition: none;
  }
  ._check_1mprh_281 input:active:not(:disabled) + ._checkBox_1mprh_304,
  ._choice_1mprh_173:has(input:active:not(:disabled)) {
    transform: none;
  }
}


/* /src/components/Surface.module.css */
/* ---------- Grounds ---------- */
._section_124nc_2 {
  position: relative;
}
._bg_124nc_5 {
  background: var(--color-bg);
}
._alt_124nc_8 {
  background: var(--color-surface-alt);
}
._tint_124nc_11 {
  background: var(--color-surface-tint);
}
/* The dark beat: one per long page, with its own off-centre light (DESIGN.md §2.4). */
._evening_124nc_15 {
  background:
    radial-gradient(40rem 28rem at 78% 70%, rgb(var(--light-field) / 0.06), transparent 70%),
    var(--color-surface-inverse);
  color: var(--color-text-on-inverse);
  overflow: clip;
}
._evening_124nc_15 :focus-visible {
  outline-color: var(--color-accent-text-on-inverse);
}

/* ---------- Rhythm by register, one rung down on phones (DESIGN.md §3, §4) ---------- */
._stage_124nc_27 {
  padding-block: var(--space-16);
}
._flow_124nc_30 {
  padding-block: var(--space-10);
}
._workspace_124nc_33 {
  padding-block: var(--space-8);
}
@media (min-width: 64rem) {
  ._stage_124nc_27 {
    padding-block: var(--space-24);
  }
  ._flow_124nc_30 {
    padding-block: var(--space-16);
  }
  ._workspace_124nc_33 {
    padding-block: var(--space-10);
  }
}

/* ---------- Cards: raised surfaces with the two-part shadow and the rim light ---------- */
._card_124nc_49 {
  position: relative;
  border-radius: var(--radius-xl);
  background: var(--color-surface);
  color: var(--color-text);
  transition:
    translate var(--duration-base) var(--ease-out),
    box-shadow var(--duration-base) var(--ease-out);
}
._card-stage_124nc_58 {
  padding: var(--space-6);
  box-shadow: var(--shadow-lg), var(--rim-light);
}
._card-flow_124nc_62 {
  padding: var(--space-5);
  box-shadow: var(--shadow-md), var(--rim-light);
}
._card-workspace_124nc_66 {
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm), var(--rim-light);
}
@media (min-width: 48rem) {
  ._card-stage_124nc_58 {
    padding: var(--space-8);
  }
  ._card-flow_124nc_62 {
    padding: var(--space-6);
  }
  ._card-workspace_124nc_66 {
    padding: var(--space-5);
  }
}
._interactive_124nc_82[data-force="hover"] {
  translate: 0 var(--lift);
  box-shadow: var(--shadow-xl), var(--rim-light);
}
@media (hover: hover) and (pointer: fine) {
  ._interactive_124nc_82:hover {
    translate: 0 var(--lift);
    box-shadow: var(--shadow-xl), var(--rim-light);
  }
}

@media (prefers-reduced-motion: reduce) {
  ._card_124nc_49 {
    transition: none;
  }
}
