/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/brand/tokens.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/* FinnyKid design tokens — GENERATED, do not hand-edit.
   Source: brand/tokens/build_tokens.py
   Every colour pair in this file is verified >= WCAG 2.1 AA. */

:root {
  /* ── neutrals ── */
  --fk-neutral-0: #FFFFFF;
  --fk-neutral-50: #F8FBF7;
  --fk-neutral-100: #F1F4F1;
  --fk-neutral-200: #E4E7E4;
  --fk-neutral-300: #D2D5D2;
  --fk-neutral-400: #B5B8B5;
  --fk-neutral-500: #909390;
  --fk-neutral-600: #70726F;
  --fk-neutral-700: #515350;
  --fk-neutral-800: #343633;
  --fk-neutral-900: #191B19;
  --fk-neutral-950: #090B09;

  /* ── semantic roles ── */
  /* brand = growth AND correctness. Never chrome, never a CTA. */
  --fk-brand-50: #ECFCEB;
  --fk-brand-100: #D7F5D5;
  --fk-brand-200: #B2E8AF;
  --fk-brand-300: #86D483;
  --fk-brand-400: #5CBE5A;
  --fk-brand-500: #47B147;
  --fk-brand-600: #309831;
  --fk-brand-700: #1D771F;
  --fk-brand-800: #0D560F;
  --fk-brand-900: #023303;
  --fk-brand-solid: #13891A;
  --fk-brand-text: #0C8615;
  --fk-brand-tint: #D7F5D5;
  --fk-brand-on-tint: #007D0D;
  --fk-action-50: #ECFCEB;
  --fk-action-100: #D7F5D5;
  --fk-action-200: #B2E8AF;
  --fk-action-300: #86D483;
  --fk-action-400: #5CBE5A;
  --fk-action-500: #47B147;
  --fk-action-600: #309831;
  --fk-action-700: #1D771F;
  --fk-action-800: #0D560F;
  --fk-action-900: #023303;
  --fk-action-solid: #13891A;
  --fk-action-text: #0C8615;
  --fk-action-tint: #D7F5D5;
  --fk-action-on-tint: #007D0D;
  --fk-accent-50: #FFF4F0;
  --fk-accent-100: #FFE5DB;
  --fk-accent-200: #FFCAB5;
  --fk-accent-300: #FFA37F;
  --fk-accent-400: #FC7841;
  --fk-accent-500: #F06626;
  --fk-accent-600: #D35004;
  --fk-accent-700: #A63C00;
  --fk-accent-800: #782900;
  --fk-accent-900: #491600;
  --fk-accent-solid: #CD4C00;
  --fk-accent-text: #C84A00;
  --fk-accent-tint: #FFE5DB;
  --fk-accent-on-tint: #B84400;
  --fk-warning-50: #FFF5E7;
  --fk-warning-100: #FEE8C7;
  --fk-warning-200: #F9D193;
  --fk-warning-300: #EBB354;
  --fk-warning-400: #D79700;
  --fk-warning-500: #C68A00;
  --fk-warning-600: #A97500;
  --fk-warning-700: #835A00;
  --fk-warning-800: #5E4000;
  --fk-warning-900: #382400;
  --fk-warning-solid: #9E6D00;
  --fk-warning-text: #9A6A00;
  --fk-warning-tint: #FEE8C7;
  --fk-warning-on-tint: #8E6200;
  --fk-danger-50: #FFF3F5;
  --fk-danger-100: #FFE3E7;
  --fk-danger-200: #FFC6CF;
  --fk-danger-300: #FF9DAF;
  --fk-danger-400: #FF6C8F;
  --fk-danger-500: #F25980;
  --fk-danger-600: #D5426B;
  --fk-danger-700: #AA2D51;
  --fk-danger-800: #7D1B39;
  --fk-danger-900: #4E091F;
  --fk-danger-solid: #D43C68;
  --fk-danger-text: #D13865;
  --fk-danger-tint: #FFE3E7;
  --fk-danger-on-tint: #C42B5B;
  --fk-info-50: #F0F8FF;
  --fk-info-100: #DBEEFF;
  --fk-info-200: #B5DDFF;
  --fk-info-300: #80C5FF;
  --fk-info-400: #3BACFF;
  --fk-info-500: #159EF4;
  --fk-info-600: #0086D3;
  --fk-info-700: #0068A5;
  --fk-info-800: #004A78;
  --fk-info-900: #002B49;
  --fk-info-solid: #007BC3;
  --fk-info-text: #0078BE;
  --fk-info-tint: #DBEEFF;
  --fk-info-on-tint: #006FB1;

  --fk-accent-wash: #FFF4F0;
  --fk-action-soft: #86D483;
  --fk-action-soft-ink: #0D560F;

  /* THREE DISTINCT JOBS — do not substitute one for another:
     -solid    a FILL that white text sits on at >=4.5:1.
               Theme-independent: a fill needs the same contrast
               against its own white label in light and in night.
     -text     the colour used AS TEXT on the page background.
               Theme-DEPENDENT: swaps to the on-dark value in night mode.
     -tint /   a pale background and the text that sits on it.
     -on-tint  Self-contained pair; valid in both themes.
     Using -on-tint as text on a normal surface is the classic bug: it
     is only verified against its own tint, not against the page. */

  /* ── topic hues (SOW §2.1.1 F2 interest tags) ──
     Never meaning-bearing alone: always icon + label. */
  --fk-topic-saving: #008485;
  --fk-topic-saving-tint: #CBF5F4;
  --fk-topic-saving-wash: #EAFBFA;
  --fk-topic-saving-on-tint: #007879;
  --fk-saving-text: #008182;
  --fk-topic-budgeting: #536EDC;
  --fk-topic-budgeting-tint: #E4EBFF;
  --fk-topic-budgeting-wash: #F4F7FF;
  --fk-topic-budgeting-on-tint: #4861CE;
  --fk-budgeting-text: #516BD9;
  --fk-topic-spending: #A656B8;
  --fk-topic-spending-tint: #FAE2FF;
  --fk-topic-spending-wash: #FDF3FF;
  --fk-topic-spending-on-tint: #9848AA;
  --fk-spending-text: #A353B5;
  --fk-topic-giving: #C14995;
  --fk-topic-giving-tint: #FFE2F1;
  --fk-topic-giving-wash: #FFF3F9;
  --fk-topic-giving-on-tint: #B23A87;
  --fk-giving-text: #BE4592;
  --fk-topic-earning: #967000;
  --fk-topic-earning-tint: #FAE9C7;
  --fk-topic-earning-wash: #FDF6E9;
  --fk-topic-earning-on-tint: #876500;
  --fk-earning-text: #936E00;
  --fk-topic-goals: #13891A;
  --fk-topic-goals-tint: #D7F5D5;
  --fk-topic-goals-wash: #EFFBEE;
  --fk-topic-goals-on-tint: #007D0D;
  --fk-goals-text: #0C8615;

  /* ── roles ── */
  --fk-bg: #FFFFFF;
  --fk-surface: #FFFFFF;
  --fk-surface-sunken: #F8FBF7;
  --fk-surface-raised: #FFFFFF;
  --fk-line: #E4E7E4;          /* decorative dividers only */
  --fk-line-strong: #909390;   /* 3.11:1 — REQUIRED for any
                                          boundary that identifies a
                                          control: input borders,
                                          unselected checkbox/radio.
                                          WCAG 1.4.11 non-text contrast. */
  --fk-ink: #191B19;
  --fk-ink-secondary: #515350;
  --fk-ink-muted: #70726F;        /* 4.86:1 — also the
                                             minimum for PLACEHOLDERS */
  --fk-ink-inverse: #FFFFFF;

  /* ── spacing ── */
  --fk-space-0: 0px;
  --fk-space-px: 1px;
  --fk-space-0_5: 2px;
  --fk-space-1: 4px;
  --fk-space-1_5: 6px;
  --fk-space-2: 8px;
  --fk-space-3: 12px;
  --fk-space-4: 16px;
  --fk-space-5: 20px;
  --fk-space-6: 24px;
  --fk-space-7: 28px;
  --fk-space-8: 32px;
  --fk-space-10: 40px;
  --fk-space-12: 48px;
  --fk-space-14: 56px;
  --fk-space-16: 64px;
  --fk-space-20: 80px;
  --fk-space-24: 96px;
  --fk-space-32: 128px;

  /* ── radius ── */
  --fk-radius-none: 0px;
  --fk-radius-xs: 4px;
  --fk-radius-sm: 8px;
  --fk-radius-md: 12px;
  --fk-radius-lg: 16px;
  --fk-radius-xl: 20px;
  --fk-radius-2xl: 28px;
  --fk-radius-3xl: 36px;
  --fk-radius-full: 9999px;

  /* ── elevation ── */
  --fk-elevation-0: none;
  --fk-elevation-1: 0px 1px 2px 0px hsl(143 20% 25% / 0.06), 0px 0px 1px 0px hsl(143 20% 25% / 0.04);
  --fk-elevation-2: 0px 2px 6px 0px hsl(143 20% 25% / 0.08), 0px 0px 1px 0px hsl(143 20% 25% / 0.04);
  --fk-elevation-3: 0px 6px 14px 0px hsl(143 20% 25% / 0.1), 0px 0px 2px 0px hsl(143 20% 25% / 0.06);
  --fk-elevation-4: 0px 12px 28px 0px hsl(143 20% 25% / 0.14), 0px 0px 4px 0px hsl(143 20% 25% / 0.08);
  --fk-elevation-5: 0px 24px 56px 0px hsl(143 20% 25% / 0.18), 0px 0px 8px 0px hsl(143 20% 25% / 0.1);

  /* ── type ── */
  --fk-font-display: 'Fraunces', 'Iowan Old Style', Georgia, serif;
  --fk-font-body: 'Atkinson Hyperlegible Next', 'Atkinson Hyperlegible', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --fk-font-mono: 'SFMono-Regular', ui-monospace, 'Cascadia Mono', Menlo, monospace;
  --fk-type-display-xl-size: 48px;
  --fk-type-display-xl-lh: 1.05;
  --fk-type-display-xl-weight: 700;
  --fk-type-display-xl-tracking: -0.02em;
  --fk-type-display-lg-size: 40px;
  --fk-type-display-lg-lh: 1.08;
  --fk-type-display-lg-weight: 700;
  --fk-type-display-lg-tracking: -0.02em;
  --fk-type-display-md-size: 32px;
  --fk-type-display-md-lh: 1.12;
  --fk-type-display-md-weight: 700;
  --fk-type-display-md-tracking: -0.015em;
  --fk-type-heading-lg-size: 28px;
  --fk-type-heading-lg-lh: 1.2;
  --fk-type-heading-lg-weight: 700;
  --fk-type-heading-lg-tracking: -0.01em;
  --fk-type-heading-md-size: 24px;
  --fk-type-heading-md-lh: 1.25;
  --fk-type-heading-md-weight: 700;
  --fk-type-heading-md-tracking: -0.01em;
  --fk-type-heading-sm-size: 20px;
  --fk-type-heading-sm-lh: 1.3;
  --fk-type-heading-sm-weight: 700;
  --fk-type-heading-sm-tracking: 0;
  --fk-type-body-lg-size: 18px;
  --fk-type-body-lg-lh: 1.55;
  --fk-type-body-lg-weight: 400;
  --fk-type-body-lg-tracking: 0;
  --fk-type-body-md-size: 16px;
  --fk-type-body-md-lh: 1.55;
  --fk-type-body-md-weight: 400;
  --fk-type-body-md-tracking: 0;
  --fk-type-body-sm-size: 14px;
  --fk-type-body-sm-lh: 1.5;
  --fk-type-body-sm-weight: 400;
  --fk-type-body-sm-tracking: 0.005em;
  --fk-type-label-lg-size: 17px;
  --fk-type-label-lg-lh: 1.2;
  --fk-type-label-lg-weight: 600;
  --fk-type-label-lg-tracking: 0.005em;
  --fk-type-label-md-size: 15px;
  --fk-type-label-md-lh: 1.2;
  --fk-type-label-md-weight: 600;
  --fk-type-label-md-tracking: 0.01em;
  --fk-type-caption-size: 13px;
  --fk-type-caption-lh: 1.4;
  --fk-type-caption-weight: 500;
  --fk-type-caption-tracking: 0.01em;
  --fk-type-numeric-xl-size: 44px;
  --fk-type-numeric-xl-lh: 1.0;
  --fk-type-numeric-xl-weight: 700;
  --fk-type-numeric-xl-tracking: -0.02em;
  --fk-type-numeric-md-size: 22px;
  --fk-type-numeric-md-lh: 1.1;
  --fk-type-numeric-md-weight: 700;
  --fk-type-numeric-md-tracking: 0;

  /* ── sizes ── */
  --fk-icon-xs: 16px;
  --fk-icon-sm: 20px;
  --fk-icon-md: 24px;
  --fk-icon-lg: 32px;
  --fk-icon-xl: 40px;
  --fk-icon-2xl: 48px;
  --fk-avatar-xs: 24px;
  --fk-avatar-sm: 32px;
  --fk-avatar-md: 40px;
  --fk-avatar-lg: 56px;
  --fk-avatar-xl: 72px;
  --fk-avatar-2xl: 96px;
  --fk-avatar-3xl: 128px;
  --fk-illustration-sm: 80px;
  --fk-illustration-md: 120px;
  --fk-illustration-lg: 160px;
  --fk-illustration-xl: 240px;
  --fk-illustration-2xl: 320px;
  --fk-control-touchMin: 44px;
  --fk-control-touchKid: 56px;
  --fk-control-touchComfort: 64px;
  --fk-button-sm: 40px;
  --fk-button-md: 48px;
  --fk-button-lg: 56px;
  --fk-button-xl: 64px;
  --fk-input-trust: 44px;
  --fk-input-kid: 56px;
  --fk-input-comfort: 64px;
  --fk-card-minW: 280px;
  --fk-card-mediaAspect: 16 / 9;
  --fk-card-badgeTile: 96px;

  /* ── motion ── */
  --fk-duration-instant: 0ms;
  --fk-duration-fast: 120ms;
  --fk-duration-quick: 180ms;
  --fk-duration-base: 240ms;
  --fk-duration-slow: 360ms;
  --fk-duration-slower: 520ms;
  --fk-duration-celebrate: 900ms;
  --fk-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --fk-ease-outExpo: cubic-bezier(0.16, 1, 0.30, 1);
  --fk-ease-outQuart: cubic-bezier(0.25, 1, 0.50, 1);
  --fk-ease-inOut: cubic-bezier(0.65, 0, 0.35, 1);
  --fk-ease-in: cubic-bezier(0.55, 0, 1, 0.45);
  --fk-stagger-tight: 40ms;
  --fk-stagger-base: 60ms;
  --fk-stagger-loose: 90ms;

  /* ── z-index (semantic; never write 999) ── */
  --fk-z-base: 0;
  --fk-z-raised: 10;
  --fk-z-sticky: 100;
  --fk-z-dropdown: 200;
  --fk-z-overlay: 300;
  --fk-z-modal: 400;
  --fk-z-toast: 500;
  --fk-z-tooltip: 600;

  --fk-opacity-disabled: 0.38;
  --fk-opacity-muted: 0.62;
  --fk-opacity-scrim: 0.72;
  --fk-opacity-overlay: 0.6;
  --fk-opacity-pressed: 0.88;
  --fk-border-hairline: 1px;
  --fk-border-thin: 1.5px;
  --fk-border-thick: 2px;
  --fk-border-heavy: 3px;
  --fk-border-focus: 3px;

  /* skin defaults = kid */
  --fk-skin-radiusCard: 28px;
  --fk-skin-radiusControl: 14px;
  --fk-skin-radiusInput: 20px;
  --fk-skin-radiusChip: 9999px;
  --fk-skin-controlHeight: 56px;
  --fk-skin-bodySize: 18px;
  --fk-skin-labelSize: 18px;
  --fk-skin-density: comfortable;
  --fk-skin-elevation: 3;
}

/* ════ skins: one core, four surfaces ════ */
[data-skin="kid"] {
  --fk-skin-radiusCard: 28px;
  --fk-skin-radiusControl: 14px;
  --fk-skin-radiusInput: 20px;
  --fk-skin-radiusChip: 9999px;
  --fk-skin-controlHeight: 56px;
  --fk-skin-bodySize: 18px;
  --fk-skin-labelSize: 18px;
  --fk-skin-density: comfortable;
  --fk-skin-mascot: 1;
  --fk-skin-elevation: 3;
}
[data-skin="parent"] {
  --fk-skin-radiusCard: 16px;
  --fk-skin-radiusControl: 12px;
  --fk-skin-radiusInput: 12px;
  --fk-skin-radiusChip: 9999px;
  --fk-skin-controlHeight: 48px;
  --fk-skin-bodySize: 16px;
  --fk-skin-labelSize: 15px;
  --fk-skin-density: regular;
  --fk-skin-mascot: 0;
  --fk-skin-elevation: 2;
}
[data-skin="teacher"] {
  --fk-skin-radiusCard: 12px;
  --fk-skin-radiusControl: 8px;
  --fk-skin-radiusInput: 8px;
  --fk-skin-radiusChip: 8px;
  --fk-skin-controlHeight: 48px;
  --fk-skin-bodySize: 15px;
  --fk-skin-labelSize: 14px;
  --fk-skin-density: compact;
  --fk-skin-mascot: 0;
  --fk-skin-elevation: 1;
}
[data-skin="admin"] {
  --fk-skin-radiusCard: 8px;
  --fk-skin-radiusControl: 4px;
  --fk-skin-radiusInput: 4px;
  --fk-skin-radiusChip: 4px;
  --fk-skin-controlHeight: 40px;
  --fk-skin-bodySize: 14px;
  --fk-skin-labelSize: 13px;
  --fk-skin-density: dense;
  --fk-skin-mascot: 0;
  --fk-skin-elevation: 1;
}

/* ════ night mode ════ */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --fk-bg: #09100C;
    --fk-surface: #111915;
    --fk-surface-sunken: #09100C;
    --fk-surface-raised: #19231D;
    --fk-line: #2A352E;
    --fk-line-strong: #70726F;
    --fk-ink: #F1F4F1;
    --fk-ink-secondary: #D2D5D2;
    --fk-ink-muted: #B5B8B5;      /* 9.61:1 on night bg */
    --fk-ink-inverse: #090B09;
    --fk-brand-text: #2F9B30;
    --fk-action-text: #2F9B30;
    --fk-accent-text: #E55C17;
    --fk-warning-text: #B37D00;
    --fk-danger-text: #E95078;
    --fk-info-text: #008DDD;
    --fk-saving-text: #009797;
    --fk-budgeting-text: #6380EF;
    --fk-spending-text: #B968CB;
    --fk-giving-text: #D55BA6;
    --fk-earning-text: #AB8100;
    --fk-goals-text: #2F9B30;
  }
}
:root[data-theme="dark"] {
  --fk-bg: #09100C;
  --fk-surface: #111915;
  --fk-surface-sunken: #09100C;
  --fk-surface-raised: #19231D;
  --fk-line: #2A352E;
  --fk-line-strong: #70726F;
  --fk-ink: #F1F4F1;
  --fk-ink-secondary: #D2D5D2;
  --fk-ink-muted: #B5B8B5;      /* 9.61:1 on night bg */
  --fk-ink-inverse: #090B09;
  --fk-brand-text: #2F9B30;
  --fk-action-text: #2F9B30;
  --fk-accent-text: #E55C17;
  --fk-warning-text: #B37D00;
  --fk-danger-text: #E95078;
  --fk-info-text: #008DDD;
  --fk-saving-text: #009797;
  --fk-budgeting-text: #6380EF;
  --fk-spending-text: #B968CB;
  --fk-giving-text: #D55BA6;
  --fk-earning-text: #AB8100;
  --fk-goals-text: #2F9B30;
}

/* ════ Comfort Mode — the SOW's large-text requirement (§1.3),
   implemented as a real density tier rather than a zoom. ════ */
[data-comfort="on"] {
  --fk-type-display-xl-size: 56px;
  --fk-type-display-xl-lh: 1.1;
  --fk-type-display-lg-size: 46px;
  --fk-type-display-lg-lh: 1.12;
  --fk-type-display-md-size: 37px;
  --fk-type-display-md-lh: 1.16;
  --fk-type-heading-lg-size: 32px;
  --fk-type-heading-lg-lh: 1.25;
  --fk-type-heading-md-size: 28px;
  --fk-type-heading-md-lh: 1.3;
  --fk-type-heading-sm-size: 23px;
  --fk-type-heading-sm-lh: 1.35;
  --fk-type-body-lg-size: 21px;
  --fk-type-body-lg-lh: 1.65;
  --fk-type-body-md-size: 19px;
  --fk-type-body-md-lh: 1.65;
  --fk-type-body-sm-size: 16px;
  --fk-type-body-sm-lh: 1.6;
  --fk-type-label-lg-size: 20px;
  --fk-type-label-lg-lh: 1.25;
  --fk-type-label-md-size: 17px;
  --fk-type-label-md-lh: 1.25;
  --fk-type-caption-size: 15px;
  --fk-type-caption-lh: 1.45;
  --fk-type-numeric-xl-size: 50px;
  --fk-type-numeric-xl-lh: 1.0;
  --fk-type-numeric-md-size: 25px;
  --fk-type-numeric-md-lh: 1.1;
  --fk-skin-controlHeight: 64px;
  --fk-input-kid: 64px;
}

/* ════ reduced motion — not optional ════ */
@media (prefers-reduced-motion: reduce) {
  :root {
    --fk-duration-instant: 1ms;
    --fk-duration-fast: 1ms;
    --fk-duration-quick: 1ms;
    --fk-duration-base: 1ms;
    --fk-duration-slow: 1ms;
    --fk-duration-slower: 1ms;
    --fk-duration-celebrate: 1ms;
    --fk-stagger-tight: 0ms;
    --fk-stagger-base: 0ms;
    --fk-stagger-loose: 0ms;
  }
}

/*!*****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./src/app/globals.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************/
/* ── fonts (local woff2, synced from brand/site/fonts) ── */
@font-face {
  font-family: "Fraunces";
  src: url("/fonts/fraunces.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: "Atkinson Hyperlegible Next";
  src: url("/fonts/atkinson.woff2") format("woff2");
  font-weight: 200 800;
  font-display: swap;
}

/* Fraunces register: kid = Play, everyone else = Trust.
   brand/02-VISUAL-IDENTITY.md — never rely on font-weight alone.
   Each skin sets it EXPLICITLY: <html> carries data-skin="kid", so a nested
   [data-skin="parent"] would otherwise inherit the Play register and an adult
   surface would be typeset in a child's face. */
:root, [data-skin="kid"] { --fk-fraunces-register: "SOFT" 60, "WONK" 1; }
[data-skin="parent"],
[data-skin="teacher"],
[data-skin="admin"] { --fk-fraunces-register: "SOFT" 20, "WONK" 0; }

/* ── reset ── */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  background: var(--fk-bg);
  color: var(--fk-ink);
  font-family: var(--fk-font-body);
  font-size: var(--fk-type-body-md-size);
  line-height: var(--fk-type-body-md-lh);
  -webkit-font-smoothing: antialiased;
}
img, svg, video { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: none; padding: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; padding: 0; }

:focus-visible {
  outline: var(--fk-border-focus) solid var(--fk-action-solid);
  outline-offset: 2px;
}

/* ── type utilities — one class per scale step ── */
.fkDisplayXl, .fkDisplayLg, .fkDisplayMd, .fkHeadingLg, .fkHeadingMd, .fkHeadingSm {
  font-family: var(--fk-font-display);
  font-variation-settings: var(--fk-fraunces-register);
}
.fkDisplayXl { font-size: var(--fk-type-display-xl-size); line-height: var(--fk-type-display-xl-lh); font-weight: var(--fk-type-display-xl-weight); letter-spacing: var(--fk-type-display-xl-tracking); }
.fkDisplayLg { font-size: var(--fk-type-display-lg-size); line-height: var(--fk-type-display-lg-lh); font-weight: var(--fk-type-display-lg-weight); letter-spacing: var(--fk-type-display-lg-tracking); }
.fkDisplayMd { font-size: var(--fk-type-display-md-size); line-height: var(--fk-type-display-md-lh); font-weight: var(--fk-type-display-md-weight); letter-spacing: var(--fk-type-display-md-tracking); }
.fkHeadingLg { font-size: var(--fk-type-heading-lg-size); line-height: var(--fk-type-heading-lg-lh); font-weight: var(--fk-type-heading-lg-weight); letter-spacing: var(--fk-type-heading-lg-tracking); }
.fkHeadingMd { font-size: var(--fk-type-heading-md-size); line-height: var(--fk-type-heading-md-lh); font-weight: var(--fk-type-heading-md-weight); letter-spacing: var(--fk-type-heading-md-tracking); }
.fkHeadingSm { font-size: var(--fk-type-heading-sm-size); line-height: var(--fk-type-heading-sm-lh); font-weight: var(--fk-type-heading-sm-weight); letter-spacing: var(--fk-type-heading-sm-tracking); }
.fkBodyLg { font-size: var(--fk-type-body-lg-size); line-height: var(--fk-type-body-lg-lh); font-weight: var(--fk-type-body-lg-weight); }
.fkBodyMd { font-size: var(--fk-type-body-md-size); line-height: var(--fk-type-body-md-lh); font-weight: var(--fk-type-body-md-weight); }
.fkBodySm { font-size: var(--fk-type-body-sm-size); line-height: var(--fk-type-body-sm-lh); font-weight: var(--fk-type-body-sm-weight); letter-spacing: var(--fk-type-body-sm-tracking); }
.fkLabelLg { font-size: var(--fk-type-label-lg-size); line-height: var(--fk-type-label-lg-lh); font-weight: var(--fk-type-label-lg-weight); letter-spacing: var(--fk-type-label-lg-tracking); }
.fkLabelMd { font-size: var(--fk-type-label-md-size); line-height: var(--fk-type-label-md-lh); font-weight: var(--fk-type-label-md-weight); letter-spacing: var(--fk-type-label-md-tracking); }
.fkCaption { font-size: var(--fk-type-caption-size); line-height: var(--fk-type-caption-lh); font-weight: var(--fk-type-caption-weight); letter-spacing: var(--fk-type-caption-tracking); }
.fkNumericXl { font-size: var(--fk-type-numeric-xl-size); line-height: var(--fk-type-numeric-xl-lh); font-weight: var(--fk-type-numeric-xl-weight); letter-spacing: var(--fk-type-numeric-xl-tracking); font-feature-settings: "tnum"; }
.fkNumericMd { font-size: var(--fk-type-numeric-md-size); line-height: var(--fk-type-numeric-md-lh); font-weight: var(--fk-type-numeric-md-weight); font-feature-settings: "tnum"; }

/* Eyebrow: all-caps caption, the FkFinnySays / worksheet pattern */
.fkEyebrow {
  font-size: var(--fk-type-caption-size);
  line-height: var(--fk-type-caption-lh);
  font-weight: 800;
  letter-spacing: 1.2px;
  text-transform: uppercase;
}

.fkVisuallyHidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ── derived aliases (not tokens — composition of tokens per skin) ── */
:root {
  --fk-skin-shadow: var(--fk-elevation-2);
  --fk-input-height: var(--fk-input-trust);
}
[data-skin="kid"] {
  --fk-skin-shadow: var(--fk-elevation-3);
  --fk-input-height: var(--fk-input-kid);
}
[data-skin="teacher"], [data-skin="admin"] { --fk-skin-shadow: var(--fk-elevation-1); }
[data-comfort="on"] { --fk-input-height: var(--fk-input-comfort); }
:root { --fk-nav-h: 64px; }
[data-comfort="on"] { --fk-nav-h: 76px; }

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/design-system/FkButton.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
.FkButton_btn__2LlWk {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--fk-space-2);
  min-height: var(--fk-skin-controlHeight);
  padding: 0 var(--fk-space-5);
  border-radius: var(--fk-skin-radiusControl); /* never a pill */
  font-family: var(--fk-font-body);
  font-size: var(--fk-skin-labelSize);
  font-weight: var(--fk-type-label-lg-weight);
  letter-spacing: var(--fk-type-label-lg-tracking);
  line-height: var(--fk-type-label-lg-lh);
  border: none;
  cursor: pointer;
  position: relative;
  transition:
    transform var(--fk-duration-fast) var(--fk-ease-out),
    opacity var(--fk-duration-fast) var(--fk-ease-out),
    background-color var(--fk-duration-quick) var(--fk-ease-out);
}
.FkButton_btn__2LlWk:active:not(:disabled) {
  transform: scale(0.96);
  opacity: var(--fk-opacity-pressed);
}
.FkButton_btn__2LlWk:disabled { opacity: var(--fk-opacity-disabled); cursor: default; }
.FkButton_btn__2LlWk[aria-busy="true"] { cursor: progress; }
.FkButton_compact__B68_z { min-height: var(--fk-control-touchMin); padding: 0 var(--fk-space-3); }

/* Trust default: solid green + white. */
.FkButton_primary__2indo { background: var(--fk-action-solid); color: var(--fk-ink-inverse); }
/* Kid: the soft pair — #86D483 fill with deep-green ink (4.99:1). */
[data-skin="kid"] .FkButton_primary__2indo {
  background: var(--fk-action-300);
  color: var(--fk-action-800);
}

.FkButton_secondary__SSXWj {
  background: var(--fk-surface);
  color: var(--fk-action-text);
  box-shadow: inset 0 0 0 var(--fk-border-thick) var(--fk-action-solid);
}
.FkButton_ghost__5q5i9 { background: var(--fk-surface-sunken); color: var(--fk-ink-secondary); }

.FkButton_loadingLabel__UWnJs { color: transparent; }
.FkButton_spinner__wKGRO {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
}
.FkButton_spinner__wKGRO::after {
  content: "";
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2.5px solid currentColor;
  border-top-color: transparent;
  animation: FkButton_spin__Y03_f 0.8s linear infinite;
}
@keyframes FkButton_spin__Y03_f { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .FkButton_spinner__wKGRO::after { animation-duration: 1.6s; }
}

/*!************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/design-system/FkStateView.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************/
.FkStateView_wrap__ddrvF {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--fk-space-4);
  padding: var(--fk-space-10) var(--fk-space-6);
}
.FkStateView_disc__W9dyC {
  width: 80px;
  height: 80px;
  border-radius: var(--fk-radius-full);
  background: var(--fk-surface-sunken);
  display: grid;
  place-items: center;
  color: var(--fk-ink-muted);
}
.FkStateView_title__w8fIk {
  font-family: var(--fk-font-display);
  font-variation-settings: var(--fk-fraunces-register);
  font-size: var(--fk-type-heading-sm-size);
  line-height: var(--fk-type-heading-sm-lh);
  font-weight: var(--fk-type-heading-sm-weight);
}
.FkStateView_message__iaKQX {
  font-size: var(--fk-type-body-md-size);
  line-height: var(--fk-type-body-md-lh);
  color: var(--fk-ink-secondary);
  max-width: 40ch;
}
.FkStateView_spinner__8mRf5 {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 3px solid var(--fk-brand-tint);
  border-top-color: var(--fk-brand-solid);
  animation: FkStateView_spin__kMTqq 0.9s linear infinite;
}
@keyframes FkStateView_spin__kMTqq { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .FkStateView_spinner__8mRf5 { animation-duration: 1.8s; } }

/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/features/admin/admin.module.css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************/
/* The Admin skin: 8px cards, 40px controls, dense. The tightest register in
   the system — this is a console, not a classroom. */
.admin_shell__uVDnS {
  min-height: 100vh; background: var(--fk-surface-sunken);
  display: grid; grid-template-columns: 232px minmax(0, 1fr);
}

/* ── sidebar ─────────────────────────────────────────────────────────────── */
.admin_side__7MFvI {
  position: -webkit-sticky;
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
  display: flex; flex-direction: column; gap: var(--fk-space-4);
  padding: var(--fk-space-4) var(--fk-space-3);
  /* Deep brand green (client's choice, 14 Sep 2026) — darker than the action
     green so buttons in the page still read as buttons. Everything on it is
     white or a white tint, and focus rings turn white (see below). */
  background: var(--fk-brand-800);
  color: #fff;
}
.admin_brandRow__ACoJC { display: flex; align-items: center; gap: var(--fk-space-2); min-height: 40px; padding: 0 var(--fk-space-2); }
.admin_brandMark__fnJbz { width: 30px; height: 30px; flex: none; padding: 2px; border-radius: 50%; background: #fff; box-sizing: border-box; }
.admin_brandText__9KOVX { font-size: 15px; font-weight: 800; color: #fff; white-space: nowrap; }
.admin_brandTag__2wYGp { font-weight: 600; color: rgb(255 255 255 / 0.75); }
.admin_nav__KVeP1 { display: flex; flex-direction: column; gap: var(--fk-space-4); }
.admin_navGroup___w4UW { display: flex; flex-direction: column; gap: 2px; }
.admin_navLabel__fUpz1 { margin: 0 0 4px; padding: 0 var(--fk-space-3); font-size: 12px; font-weight: 600; color: rgb(255 255 255 / 0.72); }
.admin_navLink__irNQk {
  display: flex; align-items: center; gap: 10px; min-height: 36px;
  padding: 0 var(--fk-space-3); border-radius: 6px;
  color: rgb(255 255 255 / 0.88); font-size: 14px; font-weight: 500;
  transition: background-color var(--fk-duration-quick) var(--fk-ease-out), color var(--fk-duration-quick) var(--fk-ease-out);
}
.admin_navLink__irNQk svg { flex: none; color: rgb(255 255 255 / 0.75); }
.admin_navLink__irNQk:hover { background: rgb(255 255 255 / 0.10); color: #fff; }
.admin_navLink__irNQk:hover svg { color: #fff; }
/* The current section: a white fill with green text, the clearest mark on a
   green ground. */
.admin_navLinkOn__2Nac_, .admin_navLinkOn__2Nac_:hover { background: #fff; color: var(--fk-brand-800); font-weight: 700; }
.admin_navLinkOn__2Nac_ svg, .admin_navLinkOn__2Nac_:hover svg { color: var(--fk-brand-800); }
.admin_navLinkOn__2Nac_ .admin_navCount__SeF8I { background: var(--fk-brand-800); color: #fff; }
.admin_navCount__SeF8I {
  margin-left: auto; min-width: 20px; padding: 0 6px; border-radius: 10px;
  background: rgb(255 255 255 / 0.2); color: #fff;
  font-size: 12px; font-weight: 700; line-height: 20px; text-align: center; font-feature-settings: "tnum";
}
.admin_me__miAe6 {
  margin-top: auto; display: flex; align-items: center; gap: var(--fk-space-2);
  padding: var(--fk-space-3) var(--fk-space-2) 0;
  border-top: var(--fk-border-hairline) solid rgb(255 255 255 / 0.16);
}
.admin_avatar__bqJdG {
  width: 32px; height: 32px; flex: none; border-radius: 50%; display: grid; place-items: center;
  background: rgb(255 255 255 / 0.16); color: #fff; font-size: 12px; font-weight: 700;
}
.admin_meText__URmNa { display: flex; flex-direction: column; min-width: 0; flex: 1 1; }
.admin_meName__Shy_X { font-size: 13px; font-weight: 700; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin_meRole__nsdoI { font-size: 12px; color: rgb(255 255 255 / 0.75); }
.admin_iconBtn__DLvac {
  display: inline-grid; place-items: center; flex: none; width: 36px; height: 36px;
  border: 0; border-radius: 6px; background: transparent; color: rgb(255 255 255 / 0.85); cursor: pointer;
}
.admin_iconBtn__DLvac:hover { background: rgb(255 255 255 / 0.12); color: #fff; }
/* The global focus ring is action green, which would vanish on this ground. */
.admin_side__7MFvI :focus-visible, .admin_mobileBar__l3voF :focus-visible { outline-color: #fff; }
.admin_drawerClose__qqBHM { display: none; margin-left: auto; }
.admin_main__DiTg8 { min-width: 0; display: flex; flex-direction: column; }
.admin_mobileBar__l3voF, .admin_drawerScrim__oaHn7 { display: none; }
@media (max-width: 999px) {
  .admin_shell__uVDnS { grid-template-columns: minmax(0, 1fr); }
  .admin_mobileBar__l3voF {
    display: flex; align-items: center; gap: var(--fk-space-2);
    position: -webkit-sticky;
    position: sticky; top: 0; z-index: var(--fk-z-sticky);
    min-height: 56px; padding: 0 var(--fk-space-3);
    background: var(--fk-brand-800); color: #fff;
  }
  .admin_mobileTitle__Iqce3 { margin-left: auto; font-size: 13px; color: rgb(255 255 255 / 0.8); }
  .admin_side__7MFvI { display: none; }
  .admin_sideOpen__aW7vD {
    display: flex; position: fixed; inset: 0 auto 0 0; z-index: var(--fk-z-modal);
    width: min(280px, 85vw); height: 100%;
    box-shadow: var(--fk-elevation-3);
    animation: admin_drawerIn__a2Ul3 var(--fk-duration-base) var(--fk-ease-out);
  }
  .admin_drawerClose__qqBHM { display: inline-grid; }
  .admin_drawerScrim__oaHn7 {
    display: block; position: fixed; inset: 0; z-index: var(--fk-z-overlay);
    background: color-mix(in srgb, var(--fk-ink) 40%, transparent);
  }
}
@keyframes admin_drawerIn__a2Ul3 { from { transform: translateX(-100%); } }
@media (prefers-reduced-motion: reduce) {
  .admin_sideOpen__aW7vD { animation: none; }
  .admin_navLink__irNQk { transition: none; }
}

.admin_page__kZ_El {
  flex: 1 1; width: 100%; max-width: 1240px; margin: 0 auto;
  padding: var(--fk-space-6) var(--fk-space-5) var(--fk-space-12);
  display: flex; flex-direction: column; gap: var(--fk-space-5);
}
@media (max-width: 999px) { .admin_page__kZ_El { padding: var(--fk-space-4) var(--fk-space-4) var(--fk-space-12); } }
.admin_pageHead__vagTx { display: flex; flex-direction: column; gap: 4px; }
.admin_toolbar__znfTt { display: flex; align-items: center; gap: var(--fk-space-3); flex-wrap: wrap; }
.admin_search__JLiVo { max-width: 280px; margin-left: auto; min-height: 36px; }
@media (max-width: 640px) { .admin_search__JLiVo { max-width: none; margin-left: 0; } }
/* A segmented switch for sibling views (students / teachers / families). */
.admin_segmented__M27Et { display: inline-flex; gap: 2px; padding: 3px; border-radius: 8px; background: var(--fk-neutral-100); }
.admin_segment___cgdO {
  display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 12px;
  border: 0; border-radius: 6px; background: transparent; cursor: pointer;
  color: var(--fk-ink-secondary); font-size: 13px; font-weight: 600;
}
.admin_segment___cgdO:hover { color: var(--fk-ink); }
.admin_segment___cgdO[aria-pressed="true"] { background: var(--fk-surface); color: var(--fk-ink); box-shadow: var(--fk-elevation-1); }
.admin_segmentCount___KUO4 { color: var(--fk-ink-secondary); font-weight: 500; font-feature-settings: "tnum"; }
.admin_h1__Yvsel {
  font-family: var(--fk-font-display);
  font-variation-settings: var(--fk-fraunces-register);
  font-size: var(--fk-type-heading-md-size);
  font-weight: 700;
}
.admin_h2__MaxbP { font-size: var(--fk-type-label-lg-size); font-weight: 700; }
.admin_sub__7vCI3 { color: var(--fk-ink-secondary); font-size: var(--fk-type-body-sm-size); }
.admin_card__bq5Sl {
  background: var(--fk-surface);
  border: var(--fk-border-hairline) solid var(--fk-line);
  border-radius: var(--fk-skin-radiusCard);
  padding: var(--fk-space-5);
}
/* A table in a card runs to the card's edges, its first and last columns
   lined up with the card's own padding: one inset, not two. */
.admin_card__bq5Sl .admin_tableWrap__d26bF { margin-inline: calc(-1 * var(--fk-space-5)); }
.admin_card__bq5Sl .admin_table__IIW4t th:first-child, .admin_card__bq5Sl .admin_table__IIW4t td:first-child { padding-left: var(--fk-space-5); }
.admin_card__bq5Sl .admin_table__IIW4t th:last-child, .admin_card__bq5Sl .admin_table__IIW4t td:last-child { padding-right: var(--fk-space-5); }
.admin_tableWrap__d26bF { overflow-x: auto; }
.admin_table__IIW4t { width: 100%; border-collapse: collapse; font-size: var(--fk-type-body-sm-size); }
.admin_table__IIW4t th {
  text-align: left; padding: 8px 10px;
  font-size: 12px; font-weight: 600;
  color: var(--fk-ink-secondary);
  border-bottom: var(--fk-border-hairline) solid var(--fk-line);
  white-space: nowrap;
}
/* Oct-15 — a sortable heading reads as the heading it replaces */
.admin_sortHead__sZa6T {
  display: inline-flex; align-items: center; gap: 5px; padding: 0; border: 0; background: none;
  font: inherit; color: inherit; cursor: pointer;
}
.admin_sortHead__sZa6T:hover, .admin_sortHead__sZa6T[aria-pressed="true"] { color: var(--fk-ink); }
.admin_sortHead__sZa6T svg { opacity: 0.4; flex: none; }
.admin_sortHead__sZa6T[aria-pressed="true"] svg { opacity: 1; }
.admin_table__IIW4t td {
  padding: 10px;
  border-bottom: var(--fk-border-hairline) solid var(--fk-line);
  vertical-align: middle; line-height: 1.4;
}
.admin_table__IIW4t tr:last-child td { border-bottom: none; }
.admin_table__IIW4t tbody tr:hover td { background: var(--fk-neutral-50); }
/* Row actions: one line, right-aligned, the column only as wide as its
   buttons, and quiet — a neutral outline or plain text, so a table of
   twenty rows is not twenty rows of green. Page-level actions keep FkButton. */
.admin_table__IIW4t td:has(> button), .admin_table__IIW4t td:has(> .admin_actions__aQqxd) { width: 1%; white-space: nowrap; text-align: right; }
.admin_table__IIW4t .admin_actions__aQqxd { flex-wrap: nowrap; gap: 4px; justify-content: flex-end; }
.admin_table__IIW4t td button {
  min-height: 32px; padding: 0 10px; border-radius: 6px;
  font-size: 13px; font-weight: 600; white-space: nowrap;
  background: var(--fk-surface); color: var(--fk-ink);
  box-shadow: inset 0 0 0 1px var(--fk-line-strong);
}
.admin_table__IIW4t td button:hover:not(:disabled) { background: var(--fk-neutral-50); }
.admin_table__IIW4t td button[class*="ghost"] { background: transparent; box-shadow: none; color: var(--fk-ink-secondary); }
.admin_table__IIW4t td button[class*="ghost"]:hover:not(:disabled) { background: var(--fk-neutral-100); color: var(--fk-ink); }
/* Inline editors in a row: compact, and as wide as their longest choice so a
   school name is never cut off. */
.admin_table__IIW4t .admin_select__ouAhy, .admin_table__IIW4t .admin_input__VQPjB { min-height: 32px; padding: 4px 8px; font-size: 13px; }
.admin_table__IIW4t .admin_select__ouAhy { width: auto; min-width: 120px; }
/* Oct-08 — the Students table's School and Classroom dropdowns. One cell has
   a line of text under its dropdown and the other does not, so centring each
   cell put the two dropdowns at different heights; and each was as wide as
   its longest option, so the column was ragged. Top-aligned and one width. */
.admin_table__IIW4t td.admin_pickCell__Th5VF { vertical-align: top; width: 190px; min-width: 160px; }
.admin_table__IIW4t .admin_pickCell__Th5VF .admin_select__ouAhy { width: 100%; }
.admin_cellMain__gEtfy { display: block; font-weight: 600; color: var(--fk-ink); }
.admin_cellSub__DaZxt { display: block; margin-top: 2px; font-size: 12px; color: var(--fk-ink-secondary); }
.admin_cellLine__fsfeO { display: block; }
.admin_nowrap__nxkKQ { white-space: nowrap; }
.admin_cap__Xmy2W { text-transform: capitalize; }
.admin_truncate__0Y0qR { display: block; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin_actions__aQqxd { display: flex; gap: var(--fk-space-2); flex-wrap: wrap; }
.admin_pill__OeL1x::first-letter { text-transform: uppercase; }
.admin_pill__OeL1x {
  display: inline-block; padding: 2px 8px;
  border-radius: var(--fk-radius-sm);
  font-size: var(--fk-type-caption-size); font-weight: 700; white-space: nowrap;
}
.admin_ok__BFiY2 { background: var(--fk-brand-tint); color: var(--fk-brand-on-tint); }
.admin_warn__sulP8 { background: var(--fk-warning-tint); color: var(--fk-warning-on-tint); }
.admin_off__qEWR6 { background: var(--fk-surface-sunken); color: var(--fk-ink-secondary); }
.admin_info__ACiXN { background: var(--fk-info-tint); color: var(--fk-info-on-tint); }
.admin_stats__le_2O { display: grid; grid-gap: var(--fk-space-3); gap: var(--fk-space-3); grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.admin_stat__vbqNc { background: var(--fk-surface); border: var(--fk-border-hairline) solid var(--fk-line); border-radius: var(--fk-skin-radiusCard); padding: var(--fk-space-4); }
.admin_statN__tz1Wb { font-size: var(--fk-type-numeric-md-size); font-weight: 700; font-feature-settings: "tnum"; }
.admin_field__5nLK0 { display: flex; flex-direction: column; gap: 4px; }
.admin_label___9WBS { font-size: 13px; font-weight: 600; color: var(--fk-ink-secondary); }
.admin_input__VQPjB, .admin_select__ouAhy, .admin_textarea__07C20 {
  min-height: var(--fk-skin-controlHeight);
  border-radius: var(--fk-skin-radiusInput);
  border: var(--fk-border-hairline) solid var(--fk-line-strong);
  background: var(--fk-surface);
  padding: var(--fk-space-2) var(--fk-space-3);
  font: inherit; color: inherit; width: 100%;
}
.admin_textarea__07C20 { min-height: 90px; resize: vertical; padding-top: var(--fk-space-3); }
.admin_input__VQPjB:focus, .admin_select__ouAhy:focus, .admin_textarea__07C20:focus {
  outline: none; border-color: var(--fk-action-solid);
  box-shadow: 0 0 0 1.5px var(--fk-action-solid);
}
/* the video description's editor: a textarea's frame with a toolbar on top */
.admin_rte__vijoT {
  border-radius: var(--fk-skin-radiusInput);
  border: var(--fk-border-hairline) solid var(--fk-line-strong);
  background: var(--fk-surface); overflow: hidden;
}
.admin_rte__vijoT:focus-within { border-color: var(--fk-action-solid); box-shadow: 0 0 0 1.5px var(--fk-action-solid); }
.admin_rteBar__iy5qf { display: flex; flex-wrap: wrap; gap: 4px; padding: 4px; border-bottom: var(--fk-border-hairline) solid var(--fk-line); background: var(--fk-neutral-50); }
.admin_rteTool__4rbZl {
  min-width: 36px; min-height: 32px; padding: 0 10px; border: 0; border-radius: var(--fk-radius-sm, 6px);
  background: none; cursor: pointer; font-size: 13px; color: var(--fk-ink-secondary);
}
.admin_rteTool__4rbZl:hover { background: var(--fk-surface); color: var(--fk-ink); }
.admin_rteBody__8ehKR { min-height: 110px; padding: var(--fk-space-3); outline: none; line-height: 1.5; }
.admin_rteBody__8ehKR ul { list-style: disc; padding-left: 22px; }
.admin_rteBody__8ehKR ol { list-style: decimal; padding-left: 22px; }
.admin_formGrid__gz9iU { display: grid; grid-gap: var(--fk-space-3); gap: var(--fk-space-3); grid-template-columns: 1fr; }
@media (min-width: 700px) { .admin_formGrid__gz9iU { grid-template-columns: 1fr 1fr; } }
/* Footnotes explain; they are not alerts, so they sit quietly under their
   table instead of in a blue box. */
.admin_note__NYvAe {
  background: var(--fk-neutral-50); color: var(--fk-ink-secondary);
  border: var(--fk-border-hairline) solid var(--fk-line);
  border-radius: var(--fk-radius-md); padding: 10px 12px;
  font-size: 13px; line-height: 1.5;
}
.admin_note__NYvAe strong { color: var(--fk-ink); }
/* width: 100% — with auto margins inside a flex column the card shrank to its
   widest line, so the reset form was narrower than sign-in and changed width
   as a hint became an error (Oct-09). */
.admin_signIn__mENfW { width: 100%; max-width: 400px; margin: 10vh auto; display: flex; flex-direction: column; gap: var(--fk-space-4); }
/* Sign-in renders .page straight inside .shell with no sidebar, so from 1000px
   it fell into the 232px sidebar column and sat at the left edge. Span the
   whole grid; the logo and title centre over the card. */
.admin_shell__uVDnS > .admin_page__kZ_El { grid-column: 1 / -1; }
.admin_signIn__mENfW > img, .admin_signIn__mENfW > .admin_h1__Yvsel { align-self: center; text-align: center; }

/* ── row editing (Sep-07 admin tracker) ──────────────────────────────────── */
.admin_scrim__Z9rmI {
  position: fixed;
  inset: 0;
  background: color-mix(in srgb, var(--fk-ink) 45%, transparent);
  display: grid;
  place-items: center;
  padding: 16px;
  z-index: 50;
}

.admin_modal__xIN0m {
  background: var(--fk-surface);
  border-radius: 16px;
  border: 1px solid var(--fk-border);
  width: min(680px, 100%);
  max-height: min(86vh, 900px);
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 60px rgb(0 0 0 / 22%);
}

.admin_modalHead__grKne {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 20px 20px 12px;
  border-bottom: 1px solid var(--fk-border);
}

.admin_modalHead__grKne > div { flex: 1 1; }

.admin_close__ouktl {
  font-size: 26px;
  line-height: 1;
  min-width: 44px;
  min-height: 44px;
  color: var(--fk-ink-secondary);
}

.admin_modalBody__qqoe9 { padding: 20px; overflow: auto; }

.admin_checks__ZKISC {
  border: 1px solid var(--fk-border);
  border-radius: 12px;
  padding: 12px 14px;
  display: grid;
  grid-gap: 8px;
  gap: 8px;
}

.admin_check__lRsyb {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 36px;
  cursor: pointer;
}

.admin_check__lRsyb input { width: 18px; height: 18px; }

.admin_detailGrid__UntlU {
  display: grid;
  grid-template-columns: max-content 1fr;
  grid-gap: 8px 18px;
  gap: 8px 18px;
  align-items: baseline;
}

.admin_detailGrid__UntlU dt { color: var(--fk-ink-secondary); font-size: 13px; }
.admin_detailGrid__UntlU dd { margin: 0; font-weight: 600; }

/* ── sign-in, 2FA, forgot and reset ─────────────────────────────────────── */
.admin_signIn__mENfW > .admin_authSub__3kHaV { margin-top: calc(-1 * var(--fk-space-2)); text-align: center; }
.admin_linkBtn__n31Ky {
  justify-self: center; display: inline-flex; align-items: center; justify-content: center; min-height: 44px;
  padding: 0 var(--fk-space-2); border: 0; background: none; cursor: pointer;
  color: var(--fk-ink-secondary); font-size: var(--fk-type-body-sm-size);
  text-decoration: underline; text-underline-offset: 3px;
}
.admin_linkBtn__n31Ky:hover { color: var(--fk-ink); }
.admin_formError__Sh7X6 { margin: 0; color: var(--fk-danger-text); font-size: 13px; }
/* Oct-09 — the eye inside a password field (sign-in, reset, first password) */
.admin_passwordWrap__eld45 { position: relative; display: block; }
.admin_passwordWrap__eld45 .admin_input__VQPjB { padding-right: 44px; }
.admin_reveal__hltHq {
  position: absolute; top: 0; right: 4px; height: 100%; width: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; background: none; padding: 0; cursor: pointer;
  color: var(--fk-ink-secondary); border-radius: 6px;
}
.admin_reveal__hltHq:hover { color: var(--fk-ink); }
.admin_reveal__hltHq:focus-visible { outline: 2px solid var(--fk-action-solid); outline-offset: -2px; }
/* a code is read digit by digit, so it gets a fixed-width face */
.admin_codeInput__HAiZU { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 22px; letter-spacing: 0.35em; text-align: center; }

/* ── Nov-12: legal text, set as the website sets it (preview and editor) ── */
.admin_legalDoc__UNaqP { max-width: 72ch; color: var(--fk-ink-secondary); font-size: 15px; line-height: 1.65; }
.admin_legalDoc__UNaqP > :first-child { margin-top: 0; }
.admin_legalDoc__UNaqP h2, .admin_legalDoc__UNaqP h3, .admin_legalDoc__UNaqP h4 { margin: 20px 0 6px; color: var(--fk-ink); line-height: 1.3; }
.admin_legalDoc__UNaqP h2 { font-size: 19px; }
.admin_legalDoc__UNaqP h3 { font-size: 16px; }
.admin_legalDoc__UNaqP h4 { font-size: 15px; }
.admin_legalDoc__UNaqP p, .admin_legalDoc__UNaqP ul, .admin_legalDoc__UNaqP ol, .admin_legalDoc__UNaqP blockquote { margin: 0 0 10px; }
.admin_legalDoc__UNaqP ul { list-style: disc; padding-left: 22px; }
.admin_legalDoc__UNaqP ol { list-style: decimal; padding-left: 22px; }
.admin_legalDoc__UNaqP strong { color: var(--fk-ink); }
.admin_legalDoc__UNaqP a { color: var(--fk-action-text); text-decoration: underline; }
.admin_legalDoc__UNaqP table { display: block; overflow-x: auto; border-collapse: collapse; margin: 0 0 12px; font-size: 14px; }
.admin_legalDoc__UNaqP th, .admin_legalDoc__UNaqP td { min-width: 120px; padding: 8px 10px; border: 1px solid var(--fk-line); text-align: left; vertical-align: top; }
.admin_legalDoc__UNaqP th { background: var(--fk-neutral-50); color: var(--fk-ink); }
.admin_rteBody__8ehKR.admin_legalDoc__UNaqP { max-width: none; min-height: 360px; max-height: 70vh; overflow-y: auto; }

