@font-face {
  font-family: "Fraunces";
  src: url("/assets/fonts/Fraunces.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "General Sans";
  src: url("/assets/fonts/GeneralSans.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

:root {
    --font-display: "Fraunces", Georgia, serif;
    --font-body: "General Sans", system-ui, sans-serif;
    --font-mono: "JetBrains Mono", ui-monospace, monospace;
    --radius: 0.625rem;
    --background: 0.99 0 0;
    --foreground: 0.15 0 0;
    --card: 1 0 0;
    --card-foreground: 0.15 0 0;
    --popover: 1 0 0;
    --popover-foreground: 0.15 0 0;
    --primary: 0.6 0.15 45;
    --primary-foreground: 0.99 0 0;
    --secondary: 0.96 0 0;
    --secondary-foreground: 0.15 0 0;
    --muted: 0.96 0 0;
    --muted-foreground: 0.5 0 0;
    --accent: 0.85 0.02 30;
    --accent-foreground: 0.2 0 0;
    /* Muted/dusty vintage red — chroma lowered from 0.22 to 0.12 so the
       destructive button (MyAccountPage Delete Account) reads as a soft
       vintage red rather than a saturated bright red. Lightness + hue kept. */
    --destructive: 0.55 0.12 25;
    --destructive-foreground: 0.99 0 0;
    --border: 0.9 0 0;
    --input: 0.99 0.003 40;
    --ring: 0.6 0.15 45;
    --chart-1: 0.6 0.15 45;
    --chart-2: 0.55 0.12 240;
    --chart-3: 0.2 0 0;
    --chart-4: 0.7 0.15 60;
    --chart-5: 0.5 0.1 220;
    --sidebar: 0.99 0 0;
    --sidebar-foreground: 0.15 0 0;
    --sidebar-primary: 0.6 0.15 45;
    --sidebar-primary-foreground: 0.99 0 0;
    --sidebar-accent: 0.96 0 0;
    --sidebar-accent-foreground: 0.15 0 0;
    --sidebar-border: 0.9 0 0;
    --sidebar-ring: 0.7 0 0;
    --success: 0.65 0.16 145;
    --warning: 0.75 0.15 65;
    --session-overlay: 0.15 0.01 40;
    --session-live: 0.6 0.24 25;
    --calendar-today: 0.85 0.12 55;
    --card-frame: 0.82 0.19 88;
    --card-pattern: 0.55 0.18 300;
    /* 80s vintage neon tokens — neon green #39ff14, neon yellow #fff700, neon purple #b026ff.
       Yellow + purple chroma softened to match the overall homepage theme. */
    --neon-green: 0.87 0.32 144;
    --neon-yellow: 0.97 0.14 95;
    --neon-purple: 0.65 0.18 300;
    /* Faded neo-vintage-red — muted, slightly desaturated red (hue 25, same
       family as --destructive/--session-live) tuned to sit alongside the
       neon-yellow/green/purple palette without competing. Lightness raised
       to 0.62 and chroma lowered to 0.12 so the report button reads as a
       LIGHTER faded vintage red matching the other buttons' faded 80s neon
       vibe (a fire-engine red would be 0.22+). Used by the .nness-report-btn
       on profile cards and chat/meeting session views.
       Vintage white text via --neon-text (#f5f0e1) for AA+ contrast. */
    --neon-red: 0.62 0.12 25;
    --neon-red-border: 0.55 0.13 25;
    --neon-red-hover: 0.67 0.14 25;
    --neon-card-bg: 0.3 0.005 280;
    --neon-card-bg-deep: 0.26 0.005 280;
    /* Vintage white (warm off-white, not stark) for expert names on neon backgrounds.
       Explicit hex #f5f0e1 — user reports OKLCH approximation (0.9 0.012 80) did not
       resolve to a visible vintage white, so use the literal hex value directly. */
    --neon-text: #f5f0e1;
    /* Lighter black for the expanded info panel — raised lightness so text reads clearly */
    --neon-info-bg: 0.32 0.006 280;
    --neon-info-bg-deep: 0.28 0.006 280;
    /* Step 3 overlay — lighter than info-bg, trending medium grey for readable text */
    --neon-overlay-bg: 0.42 0.006 280;
    --neon-overlay-bg-deep: 0.38 0.006 280;
    /* Darkened backdrop dimming the rest of the page behind the Step 3 overlay */
    --neon-overlay-backdrop: 0.08 0.005 280;
    /* Light grey chat panel — stands out from the overlay background on the right */
    --neon-chat-bg: 0.55 0.006 280;
    --neon-chat-bg-deep: 0.5 0.006 280;
    /* My Account blue depth ladder — base matches the My Account button blue.
       Depth order (darkest → lightest): darker < dark < base < light < lighter.
       base = My Account button fill; dark/darker = borders + recessed sections;
       light/lighter = raised inner sections / highlights. */
    --myacct-blue: 0.55 0.08 240;
    --myacct-blue-light: 0.65 0.1 240;
    --myacct-blue-lighter: 0.72 0.09 240;
    --myacct-blue-dark: 0.45 0.09 240;
    --myacct-blue-darker: 0.38 0.08 240;
    --gradient-primary: linear-gradient(
      135deg,
      oklch(0.6 0.15 45),
      oklch(0.7 0.15 60)
    );
    --gradient-subtle: linear-gradient(
      180deg,
      oklch(0.99 0 0),
      oklch(0.96 0.01 45)
    );
    --transition-smooth: 250ms cubic-bezier(0.4, 0, 0.2, 1);
    /* ── Admin dashboard tokens — OKLCH light theme matching DiagnosticsPanel.
       Prefixed --admin-* so they never collide with existing tokens. All values
       stay within the existing warm/amber OKLCH family for visual consistency. */
    --admin-info: 0.6 0.12 220;
    --admin-tab-active-border: 0.6 0.15 45;
    --admin-tab-hover-bg: 0.96 0.01 45;
    --admin-table-header-bg: 0.96 0.01 45;
    --admin-table-stripe-bg: 0.98 0.005 45;
    --admin-badge-active-bg: 0.7 0.15 145;
    --admin-badge-active-fg: 0.99 0 0;
    --admin-badge-pending-bg: 0.85 0.12 65;
    --admin-badge-pending-fg: 0.25 0.05 65;
    --admin-badge-suspended-bg: 0.6 0.12 25;
    --admin-badge-suspended-fg: 0.99 0 0;
    --admin-badge-info-bg: 0.85 0.06 220;
    --admin-badge-info-fg: 0.2 0.03 220;
    --admin-step-completed: 0.65 0.16 145;
    --admin-step-current: 0.6 0.15 45;
    --admin-step-pending: 0.7 0.01 45;
    --admin-countdown-warning: 0.75 0.15 65;
    --admin-countdown-critical: 0.6 0.2 25;
    /* ── Reported-pictures admin tokens — extend the --admin-* family for
       the ModerationPanel "Reported pictures" section. Reported badge uses
       the warm vintage-red family (hue 25, same as --neon-red /
       --destructive / --session-live) so a reported picture reads as
       "needs attention" without breaking the warm OKLCH admin theme.
       Hidden badge uses a muted neutral (low chroma, mid lightness) so an
       auto-hidden picture (2+ reports, pending admin review) reads as a
       quiet inactive state, not an alarm. Thumbnail border tints the small
       reported-picture preview frame red so flagged rows are scannable. */
    --admin-badge-reported-bg: 0.6 0.14 25;
    --admin-badge-reported-fg: 0.99 0 0;
    --admin-badge-hidden-bg: 0.7 0.01 45;
    --admin-badge-hidden-fg: 0.3 0.01 45;
    --admin-reported-thumb-border: 0.6 0.14 25;
    --admin-reported-thumb-bg: 0.96 0.005 45;
    /* ── Admin roles & compliance tokens — extend the --admin-* family for
       the new admin tabs (Moderation log, User management, Role management,
       Data subject requests), the public Report content form, and the
       Privacy requests page. All values stay within the existing warm/amber
       OKLCH family + the existing neon-purple/red/green/yellow accents so
       the new surfaces read as part of the existing vintage 80s neon system.
       Banned = darker red than suspended (permanent). Contested = neon-purple
       family (ties to --neon-purple). Review = amber (distinct from pending).
       Resolved = green (distinct from active). Role badges use the same
       family mapping: admin=amber, moderator=purple, user=neutral,
       guest=muted. DSR badges use the info-blue family with lightness steps. */
    --admin-badge-banned-bg: 0.45 0.16 25;
    --admin-badge-banned-fg: 0.99 0 0;
    --admin-badge-contested-bg: 0.55 0.16 300;
    --admin-badge-contested-fg: 0.99 0 0;
    --admin-badge-review-bg: 0.78 0.14 65;
    --admin-badge-review-fg: 0.25 0.05 65;
    --admin-badge-resolved-bg: 0.6 0.15 145;
    --admin-badge-resolved-fg: 0.99 0 0;
    --admin-badge-role-admin-bg: 0.7 0.15 45;
    --admin-badge-role-admin-fg: 0.15 0.02 45;
    --admin-badge-role-moderator-bg: 0.55 0.16 300;
    --admin-badge-role-moderator-fg: 0.99 0 0;
    --admin-badge-role-user-bg: 0.85 0.01 45;
    --admin-badge-role-user-fg: 0.3 0.01 45;
    --admin-badge-role-guest-bg: 0.78 0.005 45;
    --admin-badge-role-guest-fg: 0.45 0.005 45;
    --admin-badge-dsr-new-bg: 0.85 0.06 220;
    --admin-badge-dsr-new-fg: 0.2 0.03 220;
    --admin-badge-dsr-progress-bg: 0.78 0.14 65;
    --admin-badge-dsr-progress-fg: 0.25 0.05 65;
    --admin-badge-dsr-fulfilled-bg: 0.7 0.15 145;
    --admin-badge-dsr-fulfilled-fg: 0.15 0.02 145;
    /* Moderation log statement-of-reasons quoted block — warm recessed
       surface with amber left border accent. Slightly recessed (lower
       lightness than card) so the quoted admin reasoning reads as a
       distinct inset block within the log row. */
    --admin-moderation-quote-bg: 0.94 0.012 45;
    --admin-moderation-quote-border: 0.6 0.15 45;
    --admin-moderation-quote-fg: 0.3 0.02 45;
    /* Public Report content form + Privacy requests page — vintage white
       surface matching the category-box warmth but slightly lighter so
       the form reads as a fresh sheet of aged paper. Soft aged edge
       border. Amber accent ties the form to the footer link that opens
       it. Public surfaces use the same warm family as the rest of the
       app so they feel native, not bolted on. */
    --public-form-bg: 0.97 0.015 80;
    --public-form-border: 0.82 0.02 70;
    --public-form-accent: 0.6 0.15 45;
    --public-form-field-bg: 0.99 0.005 80;
    --public-form-field-border: 0.85 0.01 70;
    --public-form-muted: 0.5 0.02 60;
    /* ── Meeting flow + chat limits tokens — additive, prefixed
       --nness-meet-* / --nness-agenda-* / --nness-countdown-* /
       --nness-chat-* / --nness-block-* / --nness-review-* so they never
       collide with the existing 80s neon / admin / public-form families.
       All values stay within the existing warm OKLCH + neon-purple /
       neon-red / amber / vintage-white families so the new meeting flow
       + chat limits surfaces read as part of the existing system, not
       bolted on. Vintage white #f5f0e1 text reused via --neon-text. */
    /* Quick-meeting duration chips — vintage purple family (same hue 300
       as --neon-purple) with lightness/chroma steps for default vs active.
       Active chip reuses the .nness-neon-btn-purple-selected treatment. */
    --nness-meet-chip-bg: 0.55 0.18 300;
    --nness-meet-chip-active: 0.65 0.2 300;
    --nness-meet-chip-border: 0.5 0.16 300;
    /* Agenda calendar today cell — reuses the warm amber --calendar-today
       family (hue 55) for the fill + amber --primary (hue 45) for the ring
       so today reads as a warm amber highlight, distinct from neon yellow. */
    --nness-agenda-today-bg: 0.85 0.12 55;
    --nness-agenda-today-ring: 0.6 0.15 45;
    --nness-agenda-today-dot: 0.87 0.32 144;
    --nness-agenda-cell-bg: 0.99 0.005 80;
    --nness-agenda-cell-border: 0.85 0.01 70;
    --nness-agenda-cell-hover: 0.96 0.012 80;
    --nness-agenda-cell-past: 0.92 0.008 80;
    /* Live countdown overlay — reuses the warm vintage-red --session-live
       family (hue 25) for the critical (<60s) state and --warning (hue 65)
       for the warning (<5min) state. Mono digits via --font-mono. */
    --nness-countdown-critical: 0.6 0.24 25;
    --nness-countdown-warning: 0.75 0.15 65;
    --nness-countdown-normal: 0.87 0.32 144;
    --nness-countdown-overlay-bg: 0.15 0.01 280;
    /* Chat 500-char nudge — soft purple-tinted surface with a purple
       border so the nudge reads as a gentle purple hint, not a warning.
       Reuses --neon-purple (hue 300) for the border accent. */
    --nness-chat-nudge-bg: 0.96 0.02 300;
    --nness-chat-nudge-border: 0.65 0.18 300;
    --nness-chat-nudge-fg: 0.3 0.02 300;
    --nness-chat-count-ok: 0.5 0.02 60;
    --nness-chat-count-warn: 0.75 0.15 65;
    /* Phone/contact block warning banner — reuses the faded vintage-red
       --destructive / --neon-red family (hue 25) so a blocked contact
       reads as a clear warning without being alarming. Vintage white text
       via --neon-text for AA+ contrast on the red fill. */
    --nness-block-banner-bg: 0.6 0.12 25;
    --nness-block-banner-border: 0.55 0.13 25;
    --nness-block-banner-fg: 0.99 0 0;
    /* Review placeholder route — vintage white aged-paper surface (same
       family as --public-form-bg, hue 80) so the deferred review route
       reads as a fresh sheet matching the rest of the app's light
       compliance surfaces. Amber accent ties it to the meeting flow. */
    --nness-review-placeholder-bg: 0.97 0.015 80;
    --nness-review-placeholder-border: 0.82 0.02 70;
    --nness-review-placeholder-accent: 0.6 0.15 45;
    --nness-review-placeholder-muted: 0.5 0.02 60;
    /* Meeting-request accept/dismiss card — reuses the overlay surface
       family. Accept = vintage purple (same as .nness-neon-btn-purple);
       Dismiss = faded vintage red (same as .nness-report-btn). */
    --nness-request-card-bg: 0.42 0.006 280;
    --nness-request-card-border: 0.65 0.18 300;
  }

.dark {
    --background: 0.12 0 0;
    --foreground: 0.98 0 0;
    --card: 0.18 0 0;
    --card-foreground: 0.98 0 0;
    --popover: 0.15 0 0;
    --popover-foreground: 0.98 0 0;
    --primary: 0.7 0.18 45;
    --primary-foreground: 0.12 0 0;
    --secondary: 0.25 0 0;
    --secondary-foreground: 0.98 0 0;
    --muted: 0.25 0 0;
    --muted-foreground: 0.65 0 0;
    --accent: 0.3 0.02 30;
    --accent-foreground: 0.98 0 0;
    /* Muted/dusty vintage red — chroma lowered from 0.22 to 0.12 to match
       the :root destructive token so dark mode Delete buttons share the
       same soft vintage red. Lightness + hue kept. */
    --destructive: 0.6 0.12 25;
    --destructive-foreground: 0.98 0 0;
    --border: 0.3 0 0;
    --input: 0.3 0.008 40;
    --ring: 0.7 0.18 45;
    --chart-1: 0.7 0.18 45;
    --chart-2: 0.65 0.15 240;
    --chart-3: 0.3 0 0;
    --chart-4: 0.75 0.18 60;
    --chart-5: 0.6 0.12 220;
    --sidebar: 0.15 0 0;
    --sidebar-foreground: 0.98 0 0;
    --sidebar-primary: 0.7 0.18 45;
    --sidebar-primary-foreground: 0.98 0 0;
    --sidebar-accent: 0.25 0 0;
    --sidebar-accent-foreground: 0.98 0 0;
    --sidebar-border: 0.3 0 0;
    --sidebar-ring: 0.5 0 0;
    --success: 0.7 0.18 145;
    --warning: 0.78 0.16 65;
    --session-overlay: 0.1 0.005 40;
    --session-live: 0.65 0.25 25;
    --calendar-today: 0.7 0.15 55;
    --card-frame: 0.85 0.2 88;
    --card-pattern: 0.62 0.2 300;
    --neon-green: 0.88 0.34 144;
    --neon-yellow: 0.98 0.16 95;
    --neon-purple: 0.66 0.2 300;
    /* Faded neo-vintage-red — dark mode mirrors the light token with raised
       lightness/chroma for dark surfaces (same pattern as --destructive dark
       0.6 0.12 and --session-live dark 0.65 0.25). Lightness raised to 0.66
       and chroma lowered to 0.13 so the report button reads as a LIGHTER
       faded vintage red matching the other buttons' faded 80s neon vibe.
       Hue 25 preserved. */
    --neon-red: 0.66 0.13 25;
    --neon-red-border: 0.58 0.14 25;
    --neon-red-hover: 0.71 0.15 25;
    --neon-card-bg: 0.32 0.005 280;
    --neon-card-bg-deep: 0.28 0.005 280;
    /* Vintage white (warm off-white, not stark) for expert names on neon backgrounds.
       Explicit hex #f5f0e1 — matches light mode; OKLCH approximation did not resolve. */
    --neon-text: #f5f0e1;
    /* Lighter black for the expanded info panel — raised lightness so text reads clearly */
    --neon-info-bg: 0.34 0.006 280;
    --neon-info-bg-deep: 0.3 0.006 280;
    /* Step 3 overlay — lighter than info-bg, trending medium grey for readable text */
    --neon-overlay-bg: 0.4 0.006 280;
    --neon-overlay-bg-deep: 0.36 0.006 280;
    /* Darkened backdrop dimming the rest of the page behind the Step 3 overlay */
    --neon-overlay-backdrop: 0.05 0.005 280;
    /* Light grey chat panel — stands out from the overlay background on the right */
    --neon-chat-bg: 0.45 0.006 280;
    --neon-chat-bg-deep: 0.4 0.006 280;
    /* My Account blue depth ladder — mirrored from :root so dark mode panels
       use the same blue family with consistent depth ordering. */
    --myacct-blue: 0.55 0.08 240;
    --myacct-blue-light: 0.65 0.1 240;
    --myacct-blue-lighter: 0.72 0.09 240;
    --myacct-blue-dark: 0.45 0.09 240;
    --myacct-blue-darker: 0.38 0.08 240;
    --gradient-primary: linear-gradient(
      135deg,
      oklch(0.7 0.18 45),
      oklch(0.75 0.18 60)
    );
    --gradient-subtle: linear-gradient(
      180deg,
      oklch(0.18 0 0),
      oklch(0.15 0.005 40)
    );
    --transition-smooth: 250ms cubic-bezier(0.4, 0, 0.2, 1);
    /* ── Admin dashboard tokens — dark mode mirrors. Same --admin-* family with
       raised lightness/chroma for dark surfaces. Never collide with neon tokens. */
    --admin-info: 0.7 0.14 220;
    --admin-tab-active-border: 0.7 0.18 45;
    --admin-tab-hover-bg: 0.25 0.01 45;
    --admin-table-header-bg: 0.25 0 0;
    --admin-table-stripe-bg: 0.2 0.005 45;
    --admin-badge-active-bg: 0.7 0.18 145;
    --admin-badge-active-fg: 0.12 0 0;
    --admin-badge-pending-bg: 0.78 0.16 65;
    --admin-badge-pending-fg: 0.15 0.02 65;
    --admin-badge-suspended-bg: 0.6 0.14 25;
    --admin-badge-suspended-fg: 0.98 0 0;
    --admin-badge-info-bg: 0.4 0.08 220;
    --admin-badge-info-fg: 0.95 0.02 220;
    --admin-step-completed: 0.7 0.18 145;
    --admin-step-current: 0.7 0.18 45;
    --admin-step-pending: 0.5 0.01 45;
    --admin-countdown-warning: 0.78 0.16 65;
    --admin-countdown-critical: 0.65 0.22 25;
    /* ── Reported-pictures admin tokens — dark mode mirrors. Same warm
       vintage-red family (hue 25) for the reported badge with raised
       lightness/chroma for dark surfaces; hidden badge stays a muted
       neutral. Thumbnail border mirrors the reported red. */
    --admin-badge-reported-bg: 0.6 0.15 25;
    --admin-badge-reported-fg: 0.98 0 0;
    --admin-badge-hidden-bg: 0.4 0.01 45;
    --admin-badge-hidden-fg: 0.85 0.01 45;
    --admin-reported-thumb-border: 0.6 0.15 25;
    --admin-reported-thumb-bg: 0.2 0.005 45;
    /* ── Admin roles & compliance tokens — dark mode mirrors. Same
       --admin-* family with raised lightness/chroma for dark surfaces.
       Banned stays a strong dark red. Contested mirrors neon-purple.
       Review/Resolved mirror pending/active dark values. Role badges
       mirror their family dark counterparts. DSR badges use info-blue
       dark family with lightness steps. Public form surfaces trend
       darker for dark mode while keeping the warm hue. */
    --admin-badge-banned-bg: 0.5 0.18 25;
    --admin-badge-banned-fg: 0.98 0 0;
    --admin-badge-contested-bg: 0.6 0.18 300;
    --admin-badge-contested-fg: 0.98 0 0;
    --admin-badge-review-bg: 0.78 0.16 65;
    --admin-badge-review-fg: 0.15 0.02 65;
    --admin-badge-resolved-bg: 0.6 0.18 145;
    --admin-badge-resolved-fg: 0.12 0 0;
    --admin-badge-role-admin-bg: 0.55 0.16 45;
    --admin-badge-role-admin-fg: 0.12 0 0;
    --admin-badge-role-moderator-bg: 0.6 0.18 300;
    --admin-badge-role-moderator-fg: 0.98 0 0;
    --admin-badge-role-user-bg: 0.4 0.01 45;
    --admin-badge-role-user-fg: 0.85 0.01 45;
    --admin-badge-role-guest-bg: 0.3 0.005 45;
    --admin-badge-role-guest-fg: 0.7 0.005 45;
    --admin-badge-dsr-new-bg: 0.4 0.08 220;
    --admin-badge-dsr-new-fg: 0.95 0.02 220;
    --admin-badge-dsr-progress-bg: 0.78 0.16 65;
    --admin-badge-dsr-progress-fg: 0.15 0.02 65;
    --admin-badge-dsr-fulfilled-bg: 0.6 0.18 145;
    --admin-badge-dsr-fulfilled-fg: 0.12 0 0;
    --admin-moderation-quote-bg: 0.22 0.012 45;
    --admin-moderation-quote-border: 0.7 0.18 45;
    --admin-moderation-quote-fg: 0.88 0.012 45;
    --public-form-bg: 0.2 0.012 80;
    --public-form-border: 0.4 0.02 70;
    --public-form-accent: 0.7 0.18 45;
    --public-form-field-bg: 0.25 0.008 80;
    --public-form-field-border: 0.4 0.01 70;
    --public-form-muted: 0.7 0.02 60;
    /* ── Meeting flow + chat limits tokens — dark mode mirrors. Same
       --nness-* families with raised lightness/chroma for dark surfaces.
       Hue preserved across all tokens so dark mode stays in the same
       warm OKLCH + neon family as light mode. */
    --nness-meet-chip-bg: 0.6 0.2 300;
    --nness-meet-chip-active: 0.7 0.22 300;
    --nness-meet-chip-border: 0.55 0.18 300;
    --nness-agenda-today-bg: 0.7 0.15 55;
    --nness-agenda-today-ring: 0.7 0.18 45;
    --nness-agenda-today-dot: 0.88 0.34 144;
    --nness-agenda-cell-bg: 0.25 0.008 80;
    --nness-agenda-cell-border: 0.4 0.01 70;
    --nness-agenda-cell-hover: 0.3 0.012 80;
    --nness-agenda-cell-past: 0.22 0.006 80;
    --nness-countdown-critical: 0.65 0.26 25;
    --nness-countdown-warning: 0.78 0.16 65;
    --nness-countdown-normal: 0.88 0.34 144;
    --nness-countdown-overlay-bg: 0.1 0.005 280;
    --nness-chat-nudge-bg: 0.25 0.02 300;
    --nness-chat-nudge-border: 0.66 0.2 300;
    --nness-chat-nudge-fg: 0.85 0.02 300;
    --nness-chat-count-ok: 0.7 0.02 60;
    --nness-chat-count-warn: 0.78 0.16 65;
    --nness-block-banner-bg: 0.5 0.16 25;
    --nness-block-banner-border: 0.58 0.14 25;
    --nness-block-banner-fg: 0.98 0 0;
    --nness-review-placeholder-bg: 0.2 0.012 80;
    --nness-review-placeholder-border: 0.4 0.02 70;
    --nness-review-placeholder-accent: 0.7 0.18 45;
    --nness-review-placeholder-muted: 0.7 0.02 60;
    --nness-request-card-bg: 0.32 0.006 280;
    --nness-request-card-border: 0.66 0.2 300;
  }

* {
  border-color: oklch(var(--border));
}

body {
  background-color: oklch(var(--background));
  color: oklch(var(--foreground));
}
.container {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 2rem;
  padding-left: 2rem;
}
@media (min-width: 1400px) {

  .container {
    max-width: 1400px;
  }
}
/* Vintage-themed scrollbar for agreement scroll-through panels.
     Amber/gold thumb using the primary OKLCH token, warm cream track,
     thin width, rounded corners. Works in both light and dark mode. */
.vintage-scroll {
    scrollbar-width: thin;
    scrollbar-color: oklch(var(--primary)) oklch(var(--accent));
  }
.vintage-scroll::-webkit-scrollbar {
    width: 8px;
    height: 8px;
  }
.vintage-scroll::-webkit-scrollbar-track {
    background: oklch(var(--accent));
    border-radius: 9999px;
  }
.vintage-scroll::-webkit-scrollbar-thumb {
    background: oklch(var(--primary));
    border-radius: 9999px;
    border: 1px solid oklch(var(--accent));
  }
.vintage-scroll::-webkit-scrollbar-thumb:hover {
    background: oklch(var(--primary) / 0.85);
  }
/* NNESS vintage card frame — bold glossy 80s neon-yellow frame built
     from layered CSS gradients (no image assets). Slightly rounded edges,
    inner bevel highlight + outer drop shadow for a glossy plastic feel.
    Frame thickness is controlled by the .nness-card-* size utilities
    via the --nness-frame custom property. */
.nness-card-frame {
    position: relative;
    border-radius: 0.75rem;
    background: linear-gradient(
      135deg,
      oklch(var(--card-frame) / 0.98) 0%,
      oklch(var(--card-frame) / 0.82) 38%,
      oklch(var(--card-frame) / 0.95) 70%,
      oklch(var(--card-frame) / 0.78) 100%
    );
    box-shadow: inset 0 2px 4px oklch(0.99 0 0 / 0.45), inset 0 -3px 6px
      oklch(0.55 0.18 88 / 0.35), 0 6px 18px -6px oklch(0.45 0.16 88 / 0.4);
    padding: var(--nness-frame, 6px);
    isolation: isolate;
  }
/* Glossy top-light streak that reads as polished 80s plastic. */
.nness-card-frame::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(
      160deg,
      oklch(0.99 0 0 / 0.35) 0%,
      oklch(0.99 0 0 / 0) 42%,
      oklch(0.99 0 0 / 0) 60%,
      oklch(0.99 0 0 / 0.12) 100%
    );
    pointer-events: none;
    z-index: 1;
  }
/* NNESS repeating L-shaped-lines pattern — an inline SVG data URI that
     tiles a single L motif across the square (REPEATING, not concentric).
     Bold lines drawn in the purple --card-pattern token color. Sits behind
     content via z-index; the .nness-card-content layer covers it where
     text/pictures need full contrast. */
.nness-card-pattern {
    position: relative;
    border-radius: 0.5rem;
    background-color: oklch(var(--card) / 0.6);
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='oklch(0.55 0.18 300)' stroke-width='3' stroke-linecap='square'><path d='M4 4 L4 20 M4 4 L20 4'/><path d='M24 20 L24 36 M24 36 L40 36'/></g></svg>");
    background-repeat: repeat;
    background-size: 40px 40px;
    z-index: 0;
  }
.dark .nness-card-pattern {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='oklch(0.62 0.20 300)' stroke-width='3' stroke-linecap='square'><path d='M4 4 L4 20 M4 4 L20 4'/><path d='M24 20 L24 36 M24 36 L40 36'/></g></svg>");
  }
/* ───────────────────────────────────────────────────────────────────
     NNESS 80s vintage NEON card — square, slightly rounded, bold black
     frame with discontinued neon segments floating slightly apart from
     the border via a visible gap.

     Segment layout (clockwise from top-left):
       • top-left corner  → neon GREEN  (#39ff14), glowing, gapped
       • top side (rest)  → bold BLACK
       • right side       → neon YELLOW (#fff700), glowing, gapped
       • bottom side      → neon YELLOW (#fff700), glowing, gapped
       • left side (rest) → bold BLACK

     The neon segments are drawn by pseudo-elements positioned OUTSIDE
     the black border with a small offset, creating the "floating apart"
     gap effect. The dark inner background makes the neon glow pop.
     3D texture comes from layered inset shadows + subtle gradients.
     ─────────────────────────────────────────────────────────────────── */
.nness-neon-card {
    position: relative;
    border-radius: 0.5rem;
    /* Bold black 80s frame */
    border: 4px solid oklch(0.12 0 0);
    /* Dark inner background so neon pops */
    background: linear-gradient(
      145deg,
      oklch(var(--neon-card-bg)) 0%,
      oklch(var(--neon-card-bg-deep)) 55%,
      oklch(var(--neon-card-bg)) 100%
    );
    /* 3D texture: layered inset shadows for depth + outer drop shadow */
    box-shadow:
      inset 0 2px 6px oklch(0.05 0 0 / 0.7),
      inset 0 -2px 8px oklch(0.05 0 0 / 0.5),
      inset 2px 0 6px oklch(0.05 0 0 / 0.4),
      inset -2px 0 6px oklch(0.05 0 0 / 0.4),
      0 8px 24px -8px oklch(0.05 0 0 / 0.8),
      0 2px 8px -2px oklch(0.1 0 0 / 0.6);
    padding: 6px;
    isolation: isolate;
  }
/* Top-left neon GREEN corner segment — floats outside the black border
     with a small gap. Drawn as an L-shape using two stacked box-shadows
     on a small absolutely-positioned element. */
.nness-neon-card::before {
    content: "";
    position: absolute;
    top: -3px;
    left: -3px;
    width: 28px;
    height: 28px;
    border-top: 4px solid oklch(var(--neon-green));
    border-left: 4px solid oklch(var(--neon-green));
    border-top-left-radius: 0.5rem;
    /* Neon glow: tight inner + wider outer spread, low-alpha outer layers */
    box-shadow: 0 0 4px oklch(var(--neon-green) / 0.9), 0 0 10px
      oklch(var(--neon-green) / 0.7), 0 0 18px oklch(var(--neon-green) / 0.4),
      inset 0 0 3px oklch(var(--neon-green) / 0.6);
    z-index: 3;
    pointer-events: none;
  }
/* Right + Bottom neon YELLOW segments — float outside the black border
     with a small gap. Two separate bars drawn via a single element with
     layered box-shadows forming an L along the bottom-right. */
.nness-neon-card::after {
    content: "";
    position: absolute;
    right: -3px;
    bottom: -3px;
    width: 28px;
    height: 28px;
    border-right: 4px solid oklch(var(--neon-yellow));
    border-bottom: 4px solid oklch(var(--neon-yellow));
    border-bottom-right-radius: 0.5rem;
    box-shadow: 0 0 4px oklch(var(--neon-yellow) / 0.9), 0 0 10px
      oklch(var(--neon-yellow) / 0.7), 0 0 18px oklch(var(--neon-yellow) / 0.4),
      inset 0 0 3px oklch(var(--neon-yellow) / 0.6);
    z-index: 3;
    pointer-events: none;
  }
/* Extended neon yellow bars along the full right and bottom sides,
     drawn as additional pseudo-layers via a child element (.nness-neon-bars).
     This gives the "right side + bottom side: neon yellow" full coverage
     while keeping the gap from the black frame. */
.nness-neon-bars {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    z-index: 3;
  }
.nness-neon-bars::before {
    /* Right side neon yellow bar — full height, offset outside the border */
    content: "";
    position: absolute;
    top: 24px;
    bottom: 24px;
    right: -3px;
    width: 4px;
    border-radius: 2px;
    background: oklch(var(--neon-yellow));
    box-shadow: 0 0 4px oklch(var(--neon-yellow) / 0.9), 0 0 10px
      oklch(var(--neon-yellow) / 0.6), 0 0 18px oklch(var(--neon-yellow) / 0.35);
  }
.nness-neon-bars::after {
    /* Bottom side neon yellow bar — full width, offset outside the border */
    content: "";
    position: absolute;
    left: 24px;
    right: 24px;
    bottom: -3px;
    height: 4px;
    border-radius: 2px;
    background: oklch(var(--neon-yellow));
    box-shadow: 0 0 4px oklch(var(--neon-yellow) / 0.9), 0 0 10px
      oklch(var(--neon-yellow) / 0.6), 0 0 18px oklch(var(--neon-yellow) / 0.35);
  }
/* Online status dot — neon green glowing indicator in the top-left
     corner area, sitting just inside the green corner segment. */
.nness-neon-status {
    position: absolute;
    top: 6px;
    left: 6px;
    width: 8px;
    height: 8px;
    border-radius: 9999px;
    background: oklch(var(--neon-green));
    box-shadow: 0 0 4px oklch(var(--neon-green) / 0.9), 0 0 8px
      oklch(var(--neon-green) / 0.7), 0 0 14px oklch(var(--neon-green) / 0.4);
    z-index: 4;
    pointer-events: none;
    animation: nness-neon-pulse 2.4s ease-in-out infinite;
  }
@keyframes nness-neon-pulse {
    0%,
    100% {
      opacity: 1;
    }
    50% {
      opacity: 0.55;
    }
  }
/* Content layer for the neon card — ensures text and picture are
      fully visible on top of the 3D texture background. Semi-opaque
      dark backing with backdrop blur for legibility. */
.nness-neon-content {
    position: relative;
    z-index: 2;
    border-radius: 0.375rem;
    background: linear-gradient(
      160deg,
      oklch(var(--neon-card-bg) / 0.55) 0%,
      oklch(var(--neon-card-bg-deep) / 0.7) 100%
    );
    backdrop-filter: blur(1px);
    width: 100%;
    height: 100%;
  }
/* Expanded info panel — the bottom portion of the elongated card.
     Uses a LIGHTER shade of black than the picture side (which keeps
     the darker --neon-card-bg / --neon-card-bg-deep gradient) so all
     text is clearly readable. Raised OKLCH lightness values. */
.nness-neon-info {
    position: relative;
    z-index: 2;
    border-radius: 0.375rem;
    background: linear-gradient(
      160deg,
      oklch(var(--neon-info-bg)) 0%,
      oklch(var(--neon-info-bg-deep)) 100%
    );
    padding: 10px 12px;
    width: 100%;
  }
/* Profile picture square container — enforces a proper 1:1 square
     regardless of the surrounding flex parent. The Tailwind w-/h- size
     utility (e.g. w-16 h-16 = 64px) defines the box width; aspect-ratio
     with !important locks the height to match so the container is always
     a perfect square and never collapses in a flex-column items-center
     parent. box-sizing border-box keeps the 2px border inside the
     declared width, the dark background fill keeps the square visible
     while the image is loading or absent. The img inside fills the
     square with object-cover consistently. We deliberately do NOT set
     width/height here (which would fight the Tailwind size utility and
     resolve against the flex line instead of the container). */
.nness-profile-picture {
    box-sizing: border-box;
    aspect-ratio: 1 / 1 !important;
    /* Prevent a flex-column parent from squeezing the square vertically
       when sibling text would otherwise consume the available space.
       The Tailwind w-/h- size utility sets both width and height; this
       keeps the box from shrinking in either axis. */
    flex-shrink: 0;
    background-color: oklch(var(--neon-info-bg-deep));
    display: block;
  }
.nness-profile-picture > img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    display: block;
  }
/* Neon PURPLE action buttons — 'Start chat' and 'Schedule meeting'.
     Same 80s glow treatment as the green corner and yellow bars:
     tight inner glow + wider outer spread, low-alpha outer layers.
     Readable white/near-white text on the purple background. */
/* Neon PURPLE action buttons — SOFTENED. The original 3-layer neon glow
     (4px/10px/18px) is replaced with a single subtle outer shadow + a slight
     inset highlight, and the chroma is lowered slightly so the purple reads
     calmer and less neon. Applies to Step 2 (Start chat / Schedule meeting) and
     Step 3 (chat send / scheduling actions / session controls). */
.nness-neon-btn-purple {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 1px;
    padding: 5px 4px;
    border-radius: 0.375rem;
    border: 2px solid oklch(var(--neon-purple) / 0.85);
    background: oklch(var(--neon-purple) / 0.88);
    color: oklch(0.99 0 0);
    font-family: var(--font-body);
    font-size: 0.42rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    /* Softened: single subtle outer shadow + slight inset highlight */
    box-shadow: 0 1px 3px oklch(var(--neon-purple) / 0.35), inset 0 1px 0
      oklch(0.99 0 0 / 0.18);
    transition: box-shadow 150ms ease-out, background 150ms ease-out;
  }
/* Stacked two-line label inside a neon purple button (e.g. "Schedule" /
      "meeting"). Only affects inner text layout — the button's own size,
      padding, font-size, border, background are untouched. The inner spans
      stack vertically via flex-direction:column. */
.nness-neon-btn-purple .nness-btn-stack {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    line-height: 0.66;
    text-align: center;
    width: 100%;
  }
/* Profile card action buttons (Start chat / Schedule meeting) — sized to
      use the extra horizontal width of the 161px Phase 2 card so the EN, FR,
      and NL buttons render at roughly the SAME footprint despite the longer
      translated words (FR "Planifier une", "réunion", "démarrer", "le chat";
      NL "Vergadering", "plannen"). The base .nness-neon-btn-purple class is
      shared with Step 3 modal actions, VideoSession, ReportDialog,
      BlockedUsersList, ReviewDialog, ErrorPage, and admin HealthCheckPanel,
      so the base rule MUST stay untouched. This override targets the profile
      card's unique .nness-neon-btn-row wrapper and is placed AFTER the base +
      stack rules so it wins the cascade. Font-size grows 0.48rem -> 0.56rem
      and horizontal padding 5px -> 6px so the longer FR/NL words fit on two
      clean lines at a size close to the EN buttons, while gap, border,
      background, color, and box-shadow remain unchanged. The two-line stacked
      layout, vintage purple neon style, and side-by-side placement inside the
      161px card are preserved across EN/FR/NL. Height is untouched (only
      Phase 2 width grew 15%). */
.nness-neon-btn-row .nness-neon-btn-purple {
    padding: 6px 6px;
    font-size: 0.56rem;
  }
.nness-neon-btn-row .nness-neon-btn-purple .nness-btn-stack {
    line-height: 0.82;
  }
/* Phase 2 only — equal-width 50/50 buttons + uncropped two-line text.
     Scoped under .nness-neon-expanded (the Phase 2 card marker) so Phase 1
     (.nness-neon-sm) and Phase 3 (ExpertContactSquare modal) are completely
     untouched. The base .nness-neon-btn-purple, .nness-btn-stack, and
     .nness-btn-line rules stay shared with the rest of the app.

     1. Equal width: both buttons get flex:1 1 0 (equal flex-basis 0) so they
        share the row width 50/50 regardless of content. No min-width or fixed
        width on either button. The 4px gap on .nness-neon-btn-row is the
        small even gap between them.
     2. Uncropped text: override the .nness-btn-line white-space:nowrap and
        the .nness-neon-btn-row overflow:hidden FOR PHASE 2 ONLY. The two-line
        word split is provided by the inline buttonLines labels in
        ExpertProfileOverlay.tsx (one <span className="nness-btn-line"> per
        line); white-space:normal + word-break:keep-all lets a long
        translated phrase wrap by word (never mid-word) if it still exceeds
        the line, and overflow:visible guarantees nothing is clipped.
     3. Centering: text-align center on .nness-btn-line + the flex column
        center on .nness-btn-stack keep text centered horizontally and
        vertically inside both buttons. */
.nness-neon-expanded .nness-neon-btn-row .nness-neon-btn-purple {
    flex: 1 1 0;
    min-width: 0;
  }
.nness-neon-expanded .nness-neon-btn-row {
    overflow: visible;
  }
.nness-neon-expanded
    .nness-neon-btn-row
    .nness-neon-btn-purple
    .nness-btn-stack
    .nness-btn-line {
    white-space: normal;
    word-break: keep-all;
    overflow: visible;
    text-align: center;
  }
/* FR and NL only — widen the Phase 2 card just enough that the translated
     "Schedule meeting" / "Start chat" text fits on two clean uncropped lines
     at the existing 0.56rem Phase 2 font, with both buttons still equal 50/50.
     EN stays exactly as-is: no :lang(en) rule is added, so the base
     .nness-neon-expanded width:161px remains the EN width. :lang(fr) /
     :lang(nl) are enabled by the documentElement.lang hook set in
     LanguageContext. 181px is the smallest width that lets the longest
     translated phrase ("Planifier une") render on its own line without
     cropping while keeping the two buttons equal-width. */
.nness-neon-expanded:lang(fr),
  .nness-neon-expanded:lang(nl) {
    width: 181px;
  }
/* Each explicit two-line child span. white-space:nowrap guarantees the
      longer FR/NL words ("Planifier une", "Vergadering", "le chat") never
      break mid-word and stay on a single visual line each, so the two-line
      stacked layout produced by the JSX split is preserved. */
.nness-neon-btn-purple .nness-btn-stack .nness-btn-line {
    white-space: nowrap;
    text-align: center;
  }
.nness-neon-btn-purple:hover {
    background: oklch(var(--neon-purple) / 0.96);
    box-shadow: 0 2px 6px oklch(var(--neon-purple) / 0.45), inset 0 1px 0
      oklch(0.99 0 0 / 0.22);
  }
.nness-neon-btn-purple:focus-visible {
    outline: 2px solid oklch(var(--neon-purple));
    outline-offset: 2px;
  }
/* Selected state for neon purple buttons (mode tabs, duration picks,
      time slots, rolling-window choices). Uses a subtle inset highlight
      + slightly stronger background instead of a hard ring so it matches
      the softened Phase 2 button style. */
.nness-neon-btn-purple-selected {
    background: oklch(var(--neon-purple) / 0.98);
    box-shadow: 0 1px 3px oklch(var(--neon-purple) / 0.5), inset 0 0 0 1px
      oklch(0.99 0 0 / 0.35), inset 0 1px 0 oklch(0.99 0 0 / 0.22);
  }
/* ── Phase 3 only — ExpertContactSquare scheduling label readability.
     Scoped under .nness-overlay-side (the Phase 3 right-side scheduling
     panel, used ONLY by ExpertContactSquare) so this NEVER touches:
       • the shared base .nness-neon-btn-purple (line 787, font-size 0.42rem)
       • the Phase 2 override .nness-neon-btn-row .nness-neon-btn-purple
         (lines 827-830, font-size 0.56rem)
       • any other Phase 3 surface (chat send button lives in
         .nness-overlay-chat and is widened separately below)
     Targets exactly the 6 scheduling labels: the two mode-tab buttons
     ("Quick options" / "Schedule for later") and the four quick-option
     buttons ("Meet now" / "in 5 min" / "in 30 min" / "in 60 min").
     Font-size raised from the 0.42rem base to 0.7rem (~1.67x) so the
     labels are clearly readable while still fitting the Phase 3 overlay
     layout. Padding, border, background, color, box-shadow, and the
     selected/hover states are untouched — only font-size changes.
     Placed AFTER the base + Phase 2 rules so it wins the cascade for
     Phase 3, and AFTER .nness-neon-btn-purple-selected so the selected
     state's background/shadow still apply on top. */
.nness-overlay-side .nness-neon-btn-purple {
    font-size: 0.7rem;
  }
/* ── Phase 3 only — ExpertContactSquare chat send button width.
     The send button (data-ocid="expert.contact_square.send_button") lives
     in .nness-overlay-chat and has no explicit width (content-driven
     inline-flex). This widens it by ~50% via min-width so it reads as a
     clear primary action across EN ("Send"), FR ("Envoyer"), and NL
     ("Verzenden") without breaking the flex row layout (the character-
     count span on the left keeps flex-1 shrink behavior). Only width
     changes — height, padding vertical, font-size, border, background,
     and box-shadow are untouched. Scoped to .nness-overlay-chat so it
     never affects the shared base or Phase 2 buttons. */
.nness-overlay-chat
    .nness-neon-btn-purple[data-ocid="expert.contact_square.send_button"] {
    min-width: 6.5rem;
  }
/* Neon YELLOW-framed button row — wraps BOTH "Start chat" and
     "Schedule meeting" buttons so the yellow frame encompasses the
     entire button row rather than overlapping only the right button.
     Uses the same neon yellow glow treatment as the card's yellow
     bars/corner, drawn as a bordered container with padding so both
     flex-1 buttons sit inside the frame. */
.nness-neon-btn-row {
    position: relative;
    display: flex;
    gap: 4px;
    padding: 4px;
    border-radius: 0.375rem;
    border: 2px solid oklch(var(--neon-yellow));
    background: oklch(var(--neon-yellow) / 0.08);
    box-sizing: border-box;
    overflow: hidden;
    box-shadow: 0 0 4px oklch(var(--neon-yellow) / 0.9), 0 0 10px
      oklch(var(--neon-yellow) / 0.6), 0 0 18px oklch(var(--neon-yellow) / 0.35),
      inset 0 0 3px oklch(var(--neon-yellow) / 0.4);
  }
/* ───────────────────────────────────────────────────────────────────
     STEP 3 OVERLAY — centered square modal with a darkened backdrop.
     Lighter background than Step 2's info panel (trending medium grey)
     so text reads easily. Split body: chat left (light grey panel that
     stands out), scheduling + inline video right.
     ─────────────────────────────────────────────────────────────────── */
/* Full-screen darkened backdrop dimming the rest of the page. Click on
     the backdrop closes the overlay. */
.nness-overlay-backdrop {
    position: fixed;
    inset: 0;
    background: oklch(var(--neon-overlay-backdrop) / 0.86);
    backdrop-filter: blur(2px);
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
  }
/* Centered square modal — lighter than --neon-info-bg, rounded, padded.
      Max-width ~700px keeps it compact; height grows with content.
      The native <dialog open> element carries default user-agent margin,
      padding, and border that would clip the overlay and make it appear
      too small / off-center. We override those here and force instant
      appearance (no transition/animation) so the overlay opens fully
      wide the moment `open` becomes true. */
dialog.nness-overlay-square {
    margin: 0;
    padding: 20px;
    border: 1px solid oklch(var(--neon-purple) / 0.35);
    background: linear-gradient(
      160deg,
      oklch(var(--neon-overlay-bg)) 0%,
      oklch(var(--neon-overlay-bg-deep)) 100%
    );
    /* Instant appearance — no fade/transform animation */
    animation: none;
    transition: none;
  }
.nness-overlay-square {
    position: relative;
    width: 100%;
    max-width: 700px;
    max-height: 90vh;
    overflow-y: auto;
    border-radius: 0.75rem;
    border: 1px solid oklch(var(--neon-purple) / 0.35);
    background: linear-gradient(
      160deg,
      oklch(var(--neon-overlay-bg)) 0%,
      oklch(var(--neon-overlay-bg-deep)) 100%
    );
    box-shadow: 0 20px 60px -12px oklch(0.05 0 0 / 0.7), 0 8px 24px -8px
      oklch(0.05 0 0 / 0.5);
    padding: 20px;
    z-index: 51;
    /* Instant appearance — no fade/transform animation */
    animation: none;
    transition: none;
  }
/* Two-column split body inside the overlay: chat on the left, scheduling
     + inline video on the right. Stacks on narrow widths. */
.nness-overlay-split {
    display: flex;
    gap: 16px;
    align-items: stretch;
  }
.nness-overlay-split > * {
    flex: 1 1 0;
    min-width: 0;
  }
/* Light grey chat panel — stands out from the overlay background. */
.nness-overlay-chat {
    border-radius: 0.5rem;
    background: linear-gradient(
      160deg,
      oklch(var(--neon-chat-bg)) 0%,
      oklch(var(--neon-chat-bg-deep)) 100%
    );
    padding: 12px;
    min-height: 320px;
    display: flex;
    flex-direction: column;
  }
/* Right side container — scheduling options by default, inline video
     when a session is active. */
.nness-overlay-side {
    border-radius: 0.5rem;
    background: oklch(var(--neon-overlay-bg) / 0.5);
    padding: 12px;
    min-height: 320px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
/* Camera toggle/switch — choose camera on/off before joining the
     session. Pill track + sliding knob. */
.nness-camera-toggle {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    font-family: var(--font-body);
    font-size: 0.75rem;
    color: oklch(0.85 0.005 280);
  }
.nness-camera-toggle-track {
    position: relative;
    width: 42px;
    height: 22px;
    border-radius: 9999px;
    background: oklch(0.3 0.01 280);
    border: 1px solid oklch(var(--neon-purple) / 0.4);
    transition: background 150ms ease-out;
    flex-shrink: 0;
  }
.nness-camera-toggle-track::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 16px;
    height: 16px;
    border-radius: 9999px;
    background: oklch(0.85 0.01 280);
    box-shadow: 0 1px 2px oklch(0.05 0 0 / 0.5);
    transition: transform 150ms ease-out, background 150ms ease-out;
  }
.nness-camera-toggle[data-on="true"] .nness-camera-toggle-track {
    background: oklch(var(--neon-purple) / 0.7);
    border-color: oklch(var(--neon-purple) / 0.85);
  }
.nness-camera-toggle[data-on="true"] .nness-camera-toggle-track::after {
    transform: translateX(20px);
    background: oklch(0.99 0 0);
  }
/* Inline session container — compact video frame with a LIVE indicator
     and an End Session button. Replaces the full-screen VideoSession. */
.nness-inline-session {
    position: relative;
    border-radius: 0.5rem;
    overflow: hidden;
    background: oklch(0.12 0.005 280);
    border: 1px solid oklch(var(--neon-purple) / 0.4);
    min-height: 200px;
    display: flex;
    flex-direction: column;
  }
.nness-inline-session-frame {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    background: oklch(0.1 0.005 280);
  }
.nness-inline-session-frame iframe {
    width: 100%;
    height: 100%;
    min-height: 200px;
    border: 0;
    display: block;
  }
.nness-inline-session-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 10px;
    background: oklch(0.15 0.005 280 / 0.9);
    border-top: 1px solid oklch(var(--neon-purple) / 0.3);
  }
.nness-live-indicator {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: oklch(var(--session-live));
    text-transform: uppercase;
  }
.nness-live-indicator::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 9999px;
    background: oklch(var(--session-live));
    box-shadow: 0 0 4px oklch(var(--session-live) / 0.9), 0 0 8px
      oklch(var(--session-live) / 0.6);
    animation: nness-neon-pulse 2s ease-in-out infinite;
  }
/* ───────────────────────────────────────────────────────────────────
     NNESS vintage white 3D textured category box — aged-paper / worn-leather
     surface applied to CATEGORY boxes ONLY (not subcategory dropdowns, which
     keep their current non-vintage popover styling). The light vintage-white
     surface means text on these boxes is a dark warm brown (NOT vintage white).
     Cluster layout note: clusters use Tailwind `gap-y-[1cm]` between cluster
     rows — no dedicated token needed, engineers apply the arbitrary value
     directly on the cluster grid container.
     ─────────────────────────────────────────────────────────────────── */
.nness-vintage-category-box {
    position: relative;
    border-radius: var(--radius);
    border: 1px solid oklch(0.82 0.02 70);
    color: oklch(0.25 0.03 60);
    /* Lightened vintage white — lightness raised from 0.92 to 0.96 so the
       category boxes read softer/lighter. Warm hue + low chroma preserved so
       it stays vintage white. Border, color, box-shadow, grain overlay, and
       the --selected variant are untouched. */
    background-color: oklch(0.96 0.015 80);
    /* Tactile grain: faint repeating radial noise overlay atop the warm white */
    background-image: radial-gradient(
        circle at 20% 30%,
        oklch(0.78 0.02 70 / 0.06) 0px,
        oklch(0.78 0.02 70 / 0) 2px
      ),
      radial-gradient(
        circle at 70% 60%,
        oklch(0.6 0.03 60 / 0.05) 0px,
        oklch(0.6 0.03 60 / 0) 2px
      ),
      radial-gradient(
        circle at 45% 85%,
        oklch(0.7 0.02 65 / 0.04) 0px,
        oklch(0.7 0.02 65 / 0) 1.5px
      );
    background-size: 14px 14px, 18px 18px, 11px 11px;
    background-repeat: repeat;
    /* Aged-paper / worn-leather 3D texture: layered inset shadows at varying
       blur radii + offsets to simulate a worn tactile surface, plus a slightly
       raised outer bevel shadow. */
    box-shadow:
      inset 0 1px 2px rgba(120, 100, 60, 0.15), inset 0 -1px 3px
      rgba(80, 60, 30, 0.2), inset 2px 2px 6px rgba(160, 140, 100, 0.12),
      inset -2px -2px 6px rgba(60, 40, 20, 0.18), 0 2px 4px
      rgba(60, 40, 20, 0.25), 0 1px 1px rgba(40, 30, 15, 0.2);
    transition: box-shadow 200ms ease-out;
  }
.nness-vintage-category-box:hover {
    /* Slightly stronger shadow lift on hover — worn-leather bevel rises */
    box-shadow:
      inset 0 1px 2px rgba(120, 100, 60, 0.15), inset 0 -1px 3px
      rgba(80, 60, 30, 0.2), inset 2px 2px 6px rgba(160, 140, 100, 0.12),
      inset -2px -2px 6px rgba(60, 40, 20, 0.18), 0 4px 8px
      rgba(60, 40, 20, 0.3), 0 2px 2px rgba(40, 30, 15, 0.25);
  }
/* Selected variant — same vintage white texture, warm amber accent border
     (border-primary) + subtle inner amber glow to mark the active category. */
.nness-vintage-category-box--selected {
    border-color: oklch(var(--primary));
    box-shadow:
      inset 0 1px 2px rgba(120, 100, 60, 0.15), inset 0 -1px 3px
      rgba(80, 60, 30, 0.2), inset 2px 2px 6px rgba(160, 140, 100, 0.12),
      inset -2px -2px 6px rgba(60, 40, 20, 0.18), 0 2px 4px
      rgba(60, 40, 20, 0.25), 0 0 0 1px oklch(var(--primary) / 0.35),
      inset 0 0 8px oklch(var(--primary) / 0.18);
  }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.pointer-events-none {
  pointer-events: none;
}
.\!visible {
  visibility: visible !important;
}
.visible {
  visibility: visible;
}
.invisible {
  visibility: hidden;
}
.collapse {
  visibility: collapse;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.sticky {
  position: sticky;
}
.inset-0 {
  inset: 0px;
}
.inset-x-0 {
  left: 0px;
  right: 0px;
}
.inset-y-0 {
  top: 0px;
  bottom: 0px;
}
.-bottom-12 {
  bottom: -3rem;
}
.-bottom-3 {
  bottom: -0.75rem;
}
.-left-12 {
  left: -3rem;
}
.-right-1 {
  right: -0.25rem;
}
.-right-12 {
  right: -3rem;
}
.-right-2 {
  right: -0.5rem;
}
.-top-1 {
  top: -0.25rem;
}
.-top-12 {
  top: -3rem;
}
.-top-2 {
  top: -0.5rem;
}
.bottom-0 {
  bottom: 0px;
}
.bottom-12 {
  bottom: 3rem;
}
.bottom-4 {
  bottom: 1rem;
}
.bottom-8 {
  bottom: 2rem;
}
.left-0 {
  left: 0px;
}
.left-1\/2 {
  left: 50%;
}
.left-1\/4 {
  left: 25%;
}
.left-2 {
  left: 0.5rem;
}
.left-3 {
  left: 0.75rem;
}
.left-\[50\%\] {
  left: 50%;
}
.right-0 {
  right: 0px;
}
.right-1 {
  right: 0.25rem;
}
.right-14 {
  right: 3.5rem;
}
.right-2 {
  right: 0.5rem;
}
.right-2\.5 {
  right: 0.625rem;
}
.right-3 {
  right: 0.75rem;
}
.right-4 {
  right: 1rem;
}
.right-\[15\%\] {
  right: 15%;
}
.top-0 {
  top: 0px;
}
.top-1\.5 {
  top: 0.375rem;
}
.top-1\/2 {
  top: 50%;
}
.top-3 {
  top: 0.75rem;
}
.top-3\.5 {
  top: 0.875rem;
}
.top-4 {
  top: 1rem;
}
.top-5 {
  top: 1.25rem;
}
.top-\[12\%\] {
  top: 12%;
}
.top-\[1px\] {
  top: 1px;
}
.top-\[50\%\] {
  top: 50%;
}
.top-\[60\%\] {
  top: 60%;
}
.top-full {
  top: 100%;
}
.isolate {
  isolation: isolate;
}
.-z-10 {
  z-index: -10;
}
.z-0 {
  z-index: 0;
}
.z-10 {
  z-index: 10;
}
.z-20 {
  z-index: 20;
}
.z-50 {
  z-index: 50;
}
.z-\[1\] {
  z-index: 1;
}
.col-start-2 {
  grid-column-start: 2;
}
.row-span-2 {
  grid-row: span 2 / span 2;
}
.row-start-1 {
  grid-row-start: 1;
}
.-mx-1 {
  margin-left: -0.25rem;
  margin-right: -0.25rem;
}
.mx-1\.5 {
  margin-left: 0.375rem;
  margin-right: 0.375rem;
}
.mx-2 {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.mx-3\.5 {
  margin-left: 0.875rem;
  margin-right: 0.875rem;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-0\.5 {
  margin-top: 0.125rem;
  margin-bottom: 0.125rem;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.-ml-4 {
  margin-left: -1rem;
}
.-mt-4 {
  margin-top: -1rem;
}
.mb-1 {
  margin-bottom: 0.25rem;
}
.mb-1\.5 {
  margin-bottom: 0.375rem;
}
.mb-10 {
  margin-bottom: 2.5rem;
}
.mb-12 {
  margin-bottom: 3rem;
}
.mb-2 {
  margin-bottom: 0.5rem;
}
.mb-3 {
  margin-bottom: 0.75rem;
}
.mb-4 {
  margin-bottom: 1rem;
}
.mb-5 {
  margin-bottom: 1.25rem;
}
.mb-6 {
  margin-bottom: 1.5rem;
}
.mb-8 {
  margin-bottom: 2rem;
}
.ml-1 {
  margin-left: 0.25rem;
}
.ml-1\.5 {
  margin-left: 0.375rem;
}
.ml-2 {
  margin-left: 0.5rem;
}
.ml-3 {
  margin-left: 0.75rem;
}
.ml-auto {
  margin-left: auto;
}
.mr-1 {
  margin-right: 0.25rem;
}
.mr-1\.5 {
  margin-right: 0.375rem;
}
.mr-2 {
  margin-right: 0.5rem;
}
.mr-3 {
  margin-right: 0.75rem;
}
.mt-0\.5 {
  margin-top: 0.125rem;
}
.mt-1 {
  margin-top: 0.25rem;
}
.mt-1\.5 {
  margin-top: 0.375rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-6 {
  margin-top: 1.5rem;
}
.mt-8 {
  margin-top: 2rem;
}
.mt-auto {
  margin-top: auto;
}
.line-clamp-1 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.line-clamp-2 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.table-caption {
  display: table-caption;
}
.table-cell {
  display: table-cell;
}
.table-row {
  display: table-row;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.aspect-square {
  aspect-ratio: 1 / 1;
}
.aspect-video {
  aspect-ratio: 16 / 9;
}
.size-2 {
  width: 0.5rem;
  height: 0.5rem;
}
.size-2\.5 {
  width: 0.625rem;
  height: 0.625rem;
}
.size-3 {
  width: 0.75rem;
  height: 0.75rem;
}
.size-3\.5 {
  width: 0.875rem;
  height: 0.875rem;
}
.size-4 {
  width: 1rem;
  height: 1rem;
}
.size-5 {
  width: 1.25rem;
  height: 1.25rem;
}
.size-7 {
  width: 1.75rem;
  height: 1.75rem;
}
.size-8 {
  width: 2rem;
  height: 2rem;
}
.size-9 {
  width: 2.25rem;
  height: 2.25rem;
}
.size-auto {
  width: auto;
  height: auto;
}
.size-full {
  width: 100%;
  height: 100%;
}
.\!h-full {
  height: 100% !important;
}
.h-1 {
  height: 0.25rem;
}
.h-1\.5 {
  height: 0.375rem;
}
.h-10 {
  height: 2.5rem;
}
.h-11 {
  height: 2.75rem;
}
.h-12 {
  height: 3rem;
}
.h-14 {
  height: 3.5rem;
}
.h-16 {
  height: 4rem;
}
.h-2 {
  height: 0.5rem;
}
.h-2\.5 {
  height: 0.625rem;
}
.h-20 {
  height: 5rem;
}
.h-24 {
  height: 6rem;
}
.h-28 {
  height: 7rem;
}
.h-3 {
  height: 0.75rem;
}
.h-3\.5 {
  height: 0.875rem;
}
.h-32 {
  height: 8rem;
}
.h-4 {
  height: 1rem;
}
.h-40 {
  height: 10rem;
}
.h-48 {
  height: 12rem;
}
.h-5 {
  height: 1.25rem;
}
.h-6 {
  height: 1.5rem;
}
.h-64 {
  height: 16rem;
}
.h-7 {
  height: 1.75rem;
}
.h-72 {
  height: 18rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.h-\[1\.15rem\] {
  height: 1.15rem;
}
.h-\[320px\] {
  height: 320px;
}
.h-\[360px\] {
  height: 360px;
}
.h-\[400px\] {
  height: 400px;
}
.h-\[420px\] {
  height: 420px;
}
.h-\[480px\] {
  height: 480px;
}
.h-\[520px\] {
  height: 520px;
}
.h-\[560px\] {
  height: 560px;
}
.h-\[calc\(100\%-1px\)\] {
  height: calc(100% - 1px);
}
.h-\[calc\(100vh-4rem\)\] {
  height: calc(100vh - 4rem);
}
.h-\[var\(--radix-navigation-menu-viewport-height\)\] {
  height: var(--radix-navigation-menu-viewport-height);
}
.h-\[var\(--radix-select-trigger-height\)\] {
  height: var(--radix-select-trigger-height);
}
.h-auto {
  height: auto;
}
.h-full {
  height: 100%;
}
.h-px {
  height: 1px;
}
.h-svh {
  height: 100svh;
}
.max-h-48 {
  max-height: 12rem;
}
.max-h-52 {
  max-height: 13rem;
}
.max-h-56 {
  max-height: 14rem;
}
.max-h-60 {
  max-height: 15rem;
}
.max-h-96 {
  max-height: 24rem;
}
.max-h-\[100px\] {
  max-height: 100px;
}
.max-h-\[160px\] {
  max-height: 160px;
}
.max-h-\[300px\] {
  max-height: 300px;
}
.max-h-\[90vh\] {
  max-height: 90vh;
}
.min-h-0 {
  min-height: 0px;
}
.min-h-16 {
  min-height: 4rem;
}
.min-h-24 {
  min-height: 6rem;
}
.min-h-4 {
  min-height: 1rem;
}
.min-h-64 {
  min-height: 16rem;
}
.min-h-\[120px\] {
  min-height: 120px;
}
.min-h-\[140px\] {
  min-height: 140px;
}
.min-h-\[300px\] {
  min-height: 300px;
}
.min-h-\[60px\] {
  min-height: 60px;
}
.min-h-\[60vh\] {
  min-height: 60vh;
}
.min-h-\[70vh\] {
  min-height: 70vh;
}
.min-h-\[80px\] {
  min-height: 80px;
}
.min-h-\[calc\(100vh-4rem\)\] {
  min-height: calc(100vh - 4rem);
}
.min-h-\[calc\(100vh-8rem\)\] {
  min-height: calc(100vh - 8rem);
}
.min-h-screen {
  min-height: 100vh;
}
.min-h-svh {
  min-height: 100svh;
}
.\!w-full {
  width: 100% !important;
}
.w-0 {
  width: 0px;
}
.w-1 {
  width: 0.25rem;
}
.w-1\/2 {
  width: 50%;
}
.w-1\/3 {
  width: 33.333333%;
}
.w-10 {
  width: 2.5rem;
}
.w-11 {
  width: 2.75rem;
}
.w-12 {
  width: 3rem;
}
.w-14 {
  width: 3.5rem;
}
.w-16 {
  width: 4rem;
}
.w-2 {
  width: 0.5rem;
}
.w-2\.5 {
  width: 0.625rem;
}
.w-2\/3 {
  width: 66.666667%;
}
.w-20 {
  width: 5rem;
}
.w-24 {
  width: 6rem;
}
.w-28 {
  width: 7rem;
}
.w-3 {
  width: 0.75rem;
}
.w-3\.5 {
  width: 0.875rem;
}
.w-3\/4 {
  width: 75%;
}
.w-32 {
  width: 8rem;
}
.w-4 {
  width: 1rem;
}
.w-5 {
  width: 1.25rem;
}
.w-6 {
  width: 1.5rem;
}
.w-64 {
  width: 16rem;
}
.w-7 {
  width: 1.75rem;
}
.w-72 {
  width: 18rem;
}
.w-8 {
  width: 2rem;
}
.w-9 {
  width: 2.25rem;
}
.w-\[100px\] {
  width: 100px;
}
.w-\[320px\] {
  width: 320px;
}
.w-\[99px\] {
  width: 99px;
}
.w-auto {
  width: auto;
}
.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
.w-full {
  width: 100%;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.w-px {
  width: 1px;
}
.min-w-0 {
  min-width: 0px;
}
.min-w-10 {
  min-width: 2.5rem;
}
.min-w-5 {
  min-width: 1.25rem;
}
.min-w-8 {
  min-width: 2rem;
}
.min-w-9 {
  min-width: 2.25rem;
}
.min-w-\[12rem\] {
  min-width: 12rem;
}
.min-w-\[8rem\] {
  min-width: 8rem;
}
.min-w-\[var\(--radix-select-trigger-width\)\] {
  min-width: var(--radix-select-trigger-width);
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-3xl {
  max-width: 48rem;
}
.max-w-4xl {
  max-width: 56rem;
}
.max-w-5xl {
  max-width: 64rem;
}
.max-w-7xl {
  max-width: 80rem;
}
.max-w-\[12rem\] {
  max-width: 12rem;
}
.max-w-\[16rem\] {
  max-width: 16rem;
}
.max-w-\[200px\] {
  max-width: 200px;
}
.max-w-\[240px\] {
  max-width: 240px;
}
.max-w-\[400px\] {
  max-width: 400px;
}
.max-w-\[70\%\] {
  max-width: 70%;
}
.max-w-\[75\%\] {
  max-width: 75%;
}
.max-w-\[80\%\] {
  max-width: 80%;
}
.max-w-\[calc\(100\%-2rem\)\] {
  max-width: calc(100% - 2rem);
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-max {
  max-width: -moz-max-content;
  max-width: max-content;
}
.max-w-md {
  max-width: 28rem;
}
.max-w-sm {
  max-width: 24rem;
}
.max-w-xl {
  max-width: 36rem;
}
.max-w-xs {
  max-width: 20rem;
}
.flex-1 {
  flex: 1 1 0%;
}
.flex-none {
  flex: none;
}
.flex-shrink {
  flex-shrink: 1;
}
.flex-shrink-0 {
  flex-shrink: 0;
}
.shrink {
  flex-shrink: 1;
}
.shrink-0 {
  flex-shrink: 0;
}
.grow {
  flex-grow: 1;
}
.grow-0 {
  flex-grow: 0;
}
.basis-full {
  flex-basis: 100%;
}
.caption-bottom {
  caption-side: bottom;
}
.border-collapse {
  border-collapse: collapse;
}
.origin-center {
  transform-origin: center;
}
.-translate-x-1\/2 {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-x-px {
  --tw-translate-x: -1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-1 {
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-6 {
  --tw-translate-x: 1.5rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-\[-50\%\] {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-px {
  --tw-translate-x: 1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0\.5 {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[-50\%\] {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[calc\(-50\%_-_2px\)\] {
  --tw-translate-y: calc(-50% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-45 {
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-90 {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-100 {
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-50 {
  --tw-scale-x: .5;
  --tw-scale-y: .5;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-75 {
  --tw-scale-x: .75;
  --tw-scale-y: .75;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-90 {
  --tw-scale-x: .9;
  --tw-scale-y: .9;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes pulse {

  50% {
    opacity: .5;
  }
}
.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes spin {

  to {
    transform: rotate(360deg);
  }
}
.animate-spin {
  animation: spin 1s linear infinite;
}
.cursor-default {
  cursor: default;
}
.cursor-pointer {
  cursor: pointer;
}
.touch-none {
  touch-action: none;
}
.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.resize-none {
  resize: none;
}
.resize-y {
  resize: vertical;
}
.resize {
  resize: both;
}
.scroll-my-1 {
  scroll-margin-top: 0.25rem;
  scroll-margin-bottom: 0.25rem;
}
.scroll-mt-20 {
  scroll-margin-top: 5rem;
}
.scroll-py-1 {
  scroll-padding-top: 0.25rem;
  scroll-padding-bottom: 0.25rem;
}
.list-inside {
  list-style-position: inside;
}
.list-disc {
  list-style-type: disc;
}
.list-none {
  list-style-type: none;
}
.auto-rows-min {
  grid-auto-rows: min-content;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.grid-cols-7 {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.grid-cols-\[0_1fr\] {
  grid-template-columns: 0 1fr;
}
.grid-rows-\[auto_auto\] {
  grid-template-rows: auto auto;
}
.flex-row {
  flex-direction: row;
}
.flex-row-reverse {
  flex-direction: row-reverse;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.items-stretch {
  align-items: stretch;
}
.justify-start {
  justify-content: flex-start;
}
.justify-end {
  justify-content: flex-end;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-items-start {
  justify-items: start;
}
.gap-0\.5 {
  gap: 0.125rem;
}
.gap-1 {
  gap: 0.25rem;
}
.gap-1\.5 {
  gap: 0.375rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-2\.5 {
  gap: 0.625rem;
}
.gap-3 {
  gap: 0.75rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-5 {
  gap: 1.25rem;
}
.gap-6 {
  gap: 1.5rem;
}
.gap-8 {
  gap: 2rem;
}
.gap-x-3 {
  -moz-column-gap: 0.75rem;
       column-gap: 0.75rem;
}
.gap-y-0\.5 {
  row-gap: 0.125rem;
}
.gap-y-1 {
  row-gap: 0.25rem;
}
.gap-y-\[1cm\] {
  row-gap: 1cm;
}
.space-x-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-x-reverse: 0;
  margin-right: calc(0.5rem * var(--tw-space-x-reverse));
  margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-x-8 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-x-reverse: 0;
  margin-right: calc(2rem * var(--tw-space-x-reverse));
  margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-y-1 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
}
.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
.space-y-6 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}
.space-y-8 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(2rem * var(--tw-space-y-reverse));
}
.divide-y > :not([hidden]) ~ :not([hidden]) {
  --tw-divide-y-reverse: 0;
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}
.divide-border > :not([hidden]) ~ :not([hidden]) {
  border-color: oklch(var(--border));
}
.self-start {
  align-self: flex-start;
}
.self-end {
  align-self: flex-end;
}
.justify-self-end {
  justify-self: end;
}
.overflow-auto {
  overflow: auto;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-x-auto {
  overflow-x: auto;
}
.overflow-y-auto {
  overflow-y: auto;
}
.overflow-x-hidden {
  overflow-x: hidden;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.whitespace-pre-line {
  white-space: pre-line;
}
.whitespace-pre-wrap {
  white-space: pre-wrap;
}
.text-balance {
  text-wrap: balance;
}
.break-words {
  overflow-wrap: break-word;
}
.break-all {
  word-break: break-all;
}
.\!rounded-full {
  border-radius: 9999px !important;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-2xl {
  border-radius: 1rem;
}
.rounded-\[0\.625rem\] {
  border-radius: 0.625rem;
}
.rounded-\[2px\] {
  border-radius: 2px;
}
.rounded-\[4px\] {
  border-radius: 4px;
}
.rounded-\[inherit\] {
  border-radius: inherit;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-lg {
  border-radius: var(--radius);
}
.rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.rounded-none {
  border-radius: 0px;
}
.rounded-sm {
  border-radius: calc(var(--radius) - 4px);
}
.rounded-xl {
  border-radius: 0.75rem;
}
.rounded-l-md {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.rounded-r-md {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.rounded-bl-sm {
  border-bottom-left-radius: calc(var(--radius) - 4px);
}
.rounded-br-sm {
  border-bottom-right-radius: calc(var(--radius) - 4px);
}
.rounded-tl-sm {
  border-top-left-radius: calc(var(--radius) - 4px);
}
.\!border-0 {
  border-width: 0px !important;
}
.border {
  border-width: 1px;
}
.border-0 {
  border-width: 0px;
}
.border-2 {
  border-width: 2px;
}
.border-4 {
  border-width: 4px;
}
.border-\[1\.5px\] {
  border-width: 1.5px;
}
.border-y {
  border-top-width: 1px;
  border-bottom-width: 1px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-l {
  border-left-width: 1px;
}
.border-r {
  border-right-width: 1px;
}
.border-t {
  border-top-width: 1px;
}
.border-dashed {
  border-style: dashed;
}
.border-\[oklch\(0\.55_0\.15_30\)\] {
  border-color: oklch(0.55 0.15 30);
}
.border-\[oklch\(0\.85_0\.02_60\)\] {
  border-color: oklch(0.85 0.02 60);
}
.border-\[oklch\(0\.9_0\.02_60\)\] {
  border-color: oklch(0.9 0.02 60);
}
.border-\[oklch\(var\(--admin-tab-active-border\)\)\] {
  border-color: oklch(var(--admin-tab-active-border));
}
.border-\[oklch\(var\(--myacct-blue-dark\)\)\] {
  border-color: oklch(var(--myacct-blue-dark));
}
.border-\[oklch\(var\(--myacct-blue-light\)\)\] {
  border-color: oklch(var(--myacct-blue-light));
}
.border-\[oklch\(var\(--myacct-blue-lighter\)\)\] {
  border-color: oklch(var(--myacct-blue-lighter));
}
.border-amber-200 {
  --tw-border-opacity: 1;
  border-color: rgb(253 230 138 / var(--tw-border-opacity, 1));
}
.border-amber-500\/60 {
  border-color: rgb(245 158 11 / 0.6);
}
.border-blue-200 {
  --tw-border-opacity: 1;
  border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
}
.border-blue-300\/50 {
  border-color: rgb(147 197 253 / 0.5);
}
.border-border {
  border-color: oklch(var(--border));
}
.border-card {
  border-color: oklch(var(--card));
}
.border-destructive {
  --tw-border-opacity: 1;
  border-color: oklch(var(--destructive) / var(--tw-border-opacity, 1));
}
.border-destructive\/30 {
  border-color: oklch(var(--destructive) / 0.3);
}
.border-destructive\/40 {
  border-color: oklch(var(--destructive) / 0.4);
}
.border-destructive\/50 {
  border-color: oklch(var(--destructive) / 0.5);
}
.border-green-200 {
  --tw-border-opacity: 1;
  border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
}
.border-green-300 {
  --tw-border-opacity: 1;
  border-color: rgb(134 239 172 / var(--tw-border-opacity, 1));
}
.border-green-600 {
  --tw-border-opacity: 1;
  border-color: rgb(22 163 74 / var(--tw-border-opacity, 1));
}
.border-input {
  border-color: oklch(var(--input));
}
.border-primary {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.border-primary\/20 {
  border-color: oklch(var(--primary) / 0.2);
}
.border-primary\/30 {
  border-color: oklch(var(--primary) / 0.3);
}
.border-primary\/40 {
  border-color: oklch(var(--primary) / 0.4);
}
.border-primary\/50 {
  border-color: oklch(var(--primary) / 0.5);
}
.border-sidebar-border {
  border-color: oklch(var(--sidebar-border));
}
.border-transparent {
  border-color: transparent;
}
.border-white\/10 {
  border-color: rgb(255 255 255 / 0.1);
}
.border-white\/30 {
  border-color: rgb(255 255 255 / 0.3);
}
.border-white\/80 {
  border-color: rgb(255 255 255 / 0.8);
}
.border-l-transparent {
  border-left-color: transparent;
}
.border-t-transparent {
  border-top-color: transparent;
}
.bg-\[oklch\(0\.42_0\.04_280\)\] {
  background-color: oklch(0.42 0.04 280);
}
.bg-\[oklch\(0\.45_0\.15_220\)\] {
  background-color: oklch(0.45 0.15 220);
}
.bg-\[oklch\(0\.55_0\.08_240\)\] {
  background-color: oklch(0.55 0.08 240);
}
.bg-\[oklch\(0\.55_0\.15_30\)\] {
  background-color: oklch(0.55 0.15 30);
}
.bg-\[oklch\(0\.92_0\.02_60\)\] {
  background-color: oklch(0.92 0.02 60);
}
.bg-\[oklch\(0\.95_0\.01_60\)\] {
  background-color: oklch(0.95 0.01 60);
}
.bg-\[oklch\(0\.95_0\.02_60\)\] {
  background-color: oklch(0.95 0.02 60);
}
.bg-\[oklch\(0\.98_0\.01_60\)\] {
  background-color: oklch(0.98 0.01 60);
}
.bg-\[oklch\(var\(--admin-table-header-bg\)\)\] {
  background-color: oklch(var(--admin-table-header-bg));
}
.bg-\[oklch\(var\(--myacct-blue\)\)\] {
  background-color: oklch(var(--myacct-blue));
}
.bg-\[oklch\(var\(--myacct-blue-darker\)\)\] {
  background-color: oklch(var(--myacct-blue-darker));
}
.bg-\[oklch\(var\(--myacct-blue-light\)\)\] {
  background-color: oklch(var(--myacct-blue-light));
}
.bg-\[oklch\(var\(--myacct-blue-lighter\)\)\] {
  background-color: oklch(var(--myacct-blue-lighter));
}
.bg-accent {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.bg-accent\/20 {
  background-color: oklch(var(--accent) / 0.2);
}
.bg-accent\/60 {
  background-color: oklch(var(--accent) / 0.6);
}
.bg-amber-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
}
.bg-amber-500\/10 {
  background-color: rgb(245 158 11 / 0.1);
}
.bg-background {
  background-color: oklch(var(--background));
}
.bg-black {
  --tw-bg-opacity: 1;
  background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
}
.bg-black\/40 {
  background-color: rgb(0 0 0 / 0.4);
}
.bg-black\/50 {
  background-color: rgb(0 0 0 / 0.5);
}
.bg-blue-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}
.bg-border {
  background-color: oklch(var(--border));
}
.bg-card {
  background-color: oklch(var(--card));
}
.bg-destructive {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--destructive) / var(--tw-bg-opacity, 1));
}
.bg-destructive\/10 {
  background-color: oklch(var(--destructive) / 0.1);
}
.bg-foreground {
  background-color: oklch(var(--foreground));
}
.bg-green-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
}
.bg-green-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
}
.bg-green-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));
}
.bg-input {
  background-color: oklch(var(--input));
}
.bg-muted {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.bg-muted\/30 {
  background-color: oklch(var(--muted) / 0.3);
}
.bg-muted\/40 {
  background-color: oklch(var(--muted) / 0.4);
}
.bg-muted\/50 {
  background-color: oklch(var(--muted) / 0.5);
}
.bg-muted\/60 {
  background-color: oklch(var(--muted) / 0.6);
}
.bg-popover {
  background-color: oklch(var(--popover));
}
.bg-primary {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.bg-primary\/10 {
  background-color: oklch(var(--primary) / 0.1);
}
.bg-primary\/15 {
  background-color: oklch(var(--primary) / 0.15);
}
.bg-primary\/20 {
  background-color: oklch(var(--primary) / 0.2);
}
.bg-red-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
}
.bg-secondary {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--secondary) / var(--tw-bg-opacity, 1));
}
.bg-sidebar {
  background-color: oklch(var(--sidebar));
}
.bg-sidebar-border {
  background-color: oklch(var(--sidebar-border));
}
.bg-transparent {
  background-color: transparent;
}
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
.bg-white\/10 {
  background-color: rgb(255 255 255 / 0.1);
}
.bg-white\/95 {
  background-color: rgb(255 255 255 / 0.95);
}
.bg-yellow-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(250 204 21 / var(--tw-bg-opacity, 1));
}
.bg-gradient-to-br {
  background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
}
.bg-gradient-to-r {
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
.from-primary {
  --tw-gradient-from: oklch(var(--primary) / 1) var(--tw-gradient-from-position);
  --tw-gradient-to: oklch(var(--primary) / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-primary\/10 {
  --tw-gradient-from: oklch(var(--primary) / 0.1) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.to-primary\/5 {
  --tw-gradient-to: oklch(var(--primary) / 0.05) var(--tw-gradient-to-position);
}
.to-primary\/80 {
  --tw-gradient-to: oklch(var(--primary) / 0.8) var(--tw-gradient-to-position);
}
.bg-clip-text {
  -webkit-background-clip: text;
          background-clip: text;
}
.fill-current {
  fill: currentColor;
}
.fill-primary {
  fill: oklch(var(--primary) / 1);
}
.object-contain {
  -o-object-fit: contain;
     object-fit: contain;
}
.object-cover {
  -o-object-fit: cover;
     object-fit: cover;
}
.p-0 {
  padding: 0px;
}
.p-1 {
  padding: 0.25rem;
}
.p-10 {
  padding: 2.5rem;
}
.p-2 {
  padding: 0.5rem;
}
.p-2\.5 {
  padding: 0.625rem;
}
.p-3 {
  padding: 0.75rem;
}
.p-4 {
  padding: 1rem;
}
.p-5 {
  padding: 1.25rem;
}
.p-6 {
  padding: 1.5rem;
}
.p-8 {
  padding: 2rem;
}
.p-\[3px\] {
  padding: 3px;
}
.p-px {
  padding: 1px;
}
.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.px-1\.5 {
  padding-left: 0.375rem;
  padding-right: 0.375rem;
}
.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-3\.5 {
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}
.py-0 {
  padding-top: 0px;
  padding-bottom: 0px;
}
.py-0\.5 {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-1\.5 {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}
.py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}
.py-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-2\.5 {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
.py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.pb-1 {
  padding-bottom: 0.25rem;
}
.pb-2 {
  padding-bottom: 0.5rem;
}
.pb-3 {
  padding-bottom: 0.75rem;
}
.pb-4 {
  padding-bottom: 1rem;
}
.pb-6 {
  padding-bottom: 1.5rem;
}
.pl-1 {
  padding-left: 0.25rem;
}
.pl-10 {
  padding-left: 2.5rem;
}
.pl-2 {
  padding-left: 0.5rem;
}
.pl-4 {
  padding-left: 1rem;
}
.pl-8 {
  padding-left: 2rem;
}
.pl-9 {
  padding-left: 2.25rem;
}
.pr-1 {
  padding-right: 0.25rem;
}
.pr-10 {
  padding-right: 2.5rem;
}
.pr-11 {
  padding-right: 2.75rem;
}
.pr-2 {
  padding-right: 0.5rem;
}
.pr-2\.5 {
  padding-right: 0.625rem;
}
.pr-4 {
  padding-right: 1rem;
}
.pr-8 {
  padding-right: 2rem;
}
.pt-0 {
  padding-top: 0px;
}
.pt-0\.5 {
  padding-top: 0.125rem;
}
.pt-1 {
  padding-top: 0.25rem;
}
.pt-2 {
  padding-top: 0.5rem;
}
.pt-3 {
  padding-top: 0.75rem;
}
.pt-4 {
  padding-top: 1rem;
}
.pt-6 {
  padding-top: 1.5rem;
}
.pt-8 {
  padding-top: 2rem;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.align-top {
  vertical-align: top;
}
.align-middle {
  vertical-align: middle;
}
.font-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
.text-4xl {
  font-size: 2.25rem;
  line-height: 2.5rem;
}
.text-\[0\.8rem\] {
  font-size: 0.8rem;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[11px\] {
  font-size: 11px;
}
.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-bold {
  font-weight: 700;
}
.font-medium {
  font-weight: 500;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.italic {
  font-style: italic;
}
.tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
.leading-none {
  line-height: 1;
}
.leading-relaxed {
  line-height: 1.625;
}
.leading-snug {
  line-height: 1.375;
}
.leading-tight {
  line-height: 1.25;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-wide {
  letter-spacing: 0.025em;
}
.tracking-wider {
  letter-spacing: 0.05em;
}
.tracking-widest {
  letter-spacing: 0.1em;
}
.text-\[\#333\] {
  --tw-text-opacity: 1;
  color: rgb(51 51 51 / var(--tw-text-opacity, 1));
}
.text-\[\#f5f0e1\] {
  --tw-text-opacity: 1;
  color: rgb(245 240 225 / var(--tw-text-opacity, 1));
}
.text-\[\#f5f0e1\]\/40 {
  color: rgb(245 240 225 / 0.4);
}
.text-\[\#f5f0e1\]\/60 {
  color: rgb(245 240 225 / 0.6);
}
.text-\[\#f5f0e1\]\/70 {
  color: rgb(245 240 225 / 0.7);
}
.text-\[\#f5f0e1\]\/80 {
  color: rgb(245 240 225 / 0.8);
}
.text-\[\#f5f0e1\]\/90 {
  color: rgb(245 240 225 / 0.9);
}
.text-\[oklch\(0\.3_0\.05_60\)\] {
  color: oklch(0.3 0.05 60);
}
.text-\[oklch\(0\.45_0\.15_220\)\] {
  color: oklch(0.45 0.15 220);
}
.text-\[oklch\(0\.4_0\.04_60\)\] {
  color: oklch(0.4 0.04 60);
}
.text-\[oklch\(0\.55_0\.15_30\)\] {
  color: oklch(0.55 0.15 30);
}
.text-\[oklch\(0\.5_0\.03_60\)\] {
  color: oklch(0.5 0.03 60);
}
.text-\[oklch\(var\(--myacct-blue-darker\)\)\] {
  color: oklch(var(--myacct-blue-darker));
}
.text-\[oklch\(var\(--myacct-blue-lighter\)\)\] {
  color: oklch(var(--myacct-blue-lighter));
}
.text-accent-foreground {
  color: oklch(var(--accent-foreground));
}
.text-amber-200 {
  --tw-text-opacity: 1;
  color: rgb(253 230 138 / var(--tw-text-opacity, 1));
}
.text-amber-600 {
  --tw-text-opacity: 1;
  color: rgb(217 119 6 / var(--tw-text-opacity, 1));
}
.text-amber-700 {
  --tw-text-opacity: 1;
  color: rgb(180 83 9 / var(--tw-text-opacity, 1));
}
.text-amber-800 {
  --tw-text-opacity: 1;
  color: rgb(146 64 14 / var(--tw-text-opacity, 1));
}
.text-amber-900 {
  --tw-text-opacity: 1;
  color: rgb(120 53 15 / var(--tw-text-opacity, 1));
}
.text-black {
  --tw-text-opacity: 1;
  color: rgb(0 0 0 / var(--tw-text-opacity, 1));
}
.text-black\/80 {
  color: rgb(0 0 0 / 0.8);
}
.text-blue-600 {
  --tw-text-opacity: 1;
  color: rgb(37 99 235 / var(--tw-text-opacity, 1));
}
.text-blue-800 {
  --tw-text-opacity: 1;
  color: rgb(30 64 175 / var(--tw-text-opacity, 1));
}
.text-blue-900 {
  --tw-text-opacity: 1;
  color: rgb(30 58 138 / var(--tw-text-opacity, 1));
}
.text-card-foreground {
  color: oklch(var(--card-foreground));
}
.text-current {
  color: currentColor;
}
.text-destructive {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.text-destructive-foreground {
  color: oklch(var(--destructive-foreground));
}
.text-emerald-600 {
  --tw-text-opacity: 1;
  color: rgb(5 150 105 / var(--tw-text-opacity, 1));
}
.text-emerald-700 {
  --tw-text-opacity: 1;
  color: rgb(4 120 87 / var(--tw-text-opacity, 1));
}
.text-foreground {
  color: oklch(var(--foreground));
}
.text-green-600 {
  --tw-text-opacity: 1;
  color: rgb(22 163 74 / var(--tw-text-opacity, 1));
}
.text-green-700 {
  --tw-text-opacity: 1;
  color: rgb(21 128 61 / var(--tw-text-opacity, 1));
}
.text-green-800 {
  --tw-text-opacity: 1;
  color: rgb(22 101 52 / var(--tw-text-opacity, 1));
}
.text-green-900 {
  --tw-text-opacity: 1;
  color: rgb(20 83 45 / var(--tw-text-opacity, 1));
}
.text-muted-foreground {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.text-muted-foreground\/60 {
  color: oklch(var(--muted-foreground) / 0.6);
}
.text-muted-foreground\/70 {
  color: oklch(var(--muted-foreground) / 0.7);
}
.text-popover-foreground {
  color: oklch(var(--popover-foreground));
}
.text-primary {
  --tw-text-opacity: 1;
  color: oklch(var(--primary) / var(--tw-text-opacity, 1));
}
.text-primary-foreground {
  color: oklch(var(--primary-foreground));
}
.text-primary\/50 {
  color: oklch(var(--primary) / 0.5);
}
.text-primary\/70 {
  color: oklch(var(--primary) / 0.7);
}
.text-red-300 {
  --tw-text-opacity: 1;
  color: rgb(252 165 165 / var(--tw-text-opacity, 1));
}
.text-red-600 {
  --tw-text-opacity: 1;
  color: rgb(220 38 38 / var(--tw-text-opacity, 1));
}
.text-secondary-foreground {
  color: oklch(var(--secondary-foreground));
}
.text-sidebar-foreground {
  color: oklch(var(--sidebar-foreground));
}
.text-transparent {
  color: transparent;
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.underline {
  text-decoration-line: underline;
}
.line-through {
  text-decoration-line: line-through;
}
.underline-offset-4 {
  text-underline-offset: 4px;
}
.accent-primary {
  accent-color: oklch(var(--primary) / 1);
}
.opacity-0 {
  opacity: 0;
}
.opacity-100 {
  opacity: 1;
}
.opacity-20 {
  opacity: 0.2;
}
.opacity-30 {
  opacity: 0.3;
}
.opacity-40 {
  opacity: 0.4;
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-60 {
  opacity: 0.6;
}
.opacity-70 {
  opacity: 0.7;
}
.opacity-75 {
  opacity: 0.75;
}
.opacity-80 {
  opacity: 0.8;
}
.opacity-90 {
  opacity: 0.9;
}
.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-2xl {
  --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] {
  --tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));
  --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-lg {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-md {
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-none {
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-session {
  --tw-shadow: 0 8px 32px -8px oklch(0.2 0.02 45 / 0.4), 0 4px 16px -4px oklch(0.2 0.02 45 / 0.2);
  --tw-shadow-colored: 0 8px 32px -8px var(--tw-shadow-color), 0 4px 16px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xl {
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xs {
  --tw-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.outline {
  outline-style: solid;
}
.ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-0 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-2 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-\[oklch\(var\(--admin-tab-active-border\)\)\] {
  --tw-ring-color: oklch(var(--admin-tab-active-border));
}
.ring-primary {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--primary) / var(--tw-ring-opacity, 1));
}
.ring-primary\/30 {
  --tw-ring-color: oklch(var(--primary) / 0.3);
}
.ring-ring {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.ring-ring\/50 {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.ring-sidebar-ring {
  --tw-ring-color: oklch(var(--sidebar-ring));
}
.ring-offset-1 {
  --tw-ring-offset-width: 1px;
}
.ring-offset-background {
  --tw-ring-offset-color: oklch(var(--background));
}
.blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.blur-2xl {
  --tw-blur: blur(40px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.drop-shadow {
  --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.backdrop-filter {
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c box-shadow\] {
  transition-property: color,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[left\2c right\2c width\] {
  transition-property: left,right,width;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[margin\2c opacity\] {
  transition-property: margin,opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[width\2c height\2c padding\] {
  transition-property: width,height,padding;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[width\] {
  transition-property: width;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-none {
  transition-property: none;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-shadow {
  transition-property: box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-0 {
  transition-duration: 0s;
}
.duration-1000 {
  transition-duration: 1000ms;
}
.duration-150 {
  transition-duration: 150ms;
}
.duration-200 {
  transition-duration: 200ms;
}
.duration-300 {
  transition-duration: 300ms;
}
.duration-500 {
  transition-duration: 500ms;
}
.duration-700 {
  transition-duration: 700ms;
}
.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-linear {
  transition-timing-function: linear;
}
.ease-out {
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.\@container\/card-header {
  container-type: inline-size;
  container-name: card-header;
}
@keyframes enter {

  from {
    opacity: var(--tw-enter-opacity, 1);
    transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));
  }
}
@keyframes exit {

  to {
    opacity: var(--tw-exit-opacity, 1);
    transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
  }
}
.animate-in {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.fade-in {
  --tw-enter-opacity: 0;
}
.fade-in-0 {
  --tw-enter-opacity: 0;
}
.zoom-in-95 {
  --tw-enter-scale: .95;
}
.slide-in-from-bottom-4 {
  --tw-enter-translate-y: 1rem;
}
.slide-in-from-bottom-8 {
  --tw-enter-translate-y: 2rem;
}
.slide-in-from-top-4 {
  --tw-enter-translate-y: -1rem;
}
.duration-0 {
  animation-duration: 0s;
}
.duration-1000 {
  animation-duration: 1000ms;
}
.duration-150 {
  animation-duration: 150ms;
}
.duration-200 {
  animation-duration: 200ms;
}
.duration-300 {
  animation-duration: 300ms;
}
.duration-500 {
  animation-duration: 500ms;
}
.duration-700 {
  animation-duration: 700ms;
}
.ease-in-out {
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-linear {
  animation-timing-function: linear;
}
.ease-out {
  animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.running {
  animation-play-state: running;
}
.bg-gradient-primary {
    background-image: var(--gradient-primary);
  }
.bg-gradient-subtle {
    background-image: var(--gradient-subtle);
  }
.transition-smooth {
    transition: var(--transition-smooth);
  }
/* NNESS vintage card sizes — frame thickness scales with square size.
     Each utility sets the --nness-frame var consumed by .nness-card-frame
     and fixes the outer square dimension. */
.nness-card-sm {
    --nness-frame: 4px;
    width: 200px;
    height: 200px;
  }
/* Expanded classic variant — elongates the sm square downward so the
      inline ExpertProfileOverlay info panel can render inside the classic
      yellow frame. Original 200px width restored so the compact two-line
      stacked vintage purple buttons render side by side. Height stays
      auto (grows to fit content). Snap-open (no transition) to match
      the neon expanded behavior. */
.nness-card-expanded {
    width: 200px;
    height: auto;
    min-height: 200px;
    transition: none;
  }
/* Neon variant size — 140x140 fixed square (30% smaller than the
      original 200x200) with the neon frame treatment (bold black border
      + discontinued neon segments). Inner content (picture, name,
      expertise, stars) shrinks proportionally via the component layer. */
.nness-neon-sm {
    width: 140px;
    height: 140px;
  }
/* Expanded neon variant — elongates the sm square downward so the
      inline ExpertProfileOverlay info panel can render inside the neon
      frame. Height stays auto (grows to fit content). Snap-open (no
      transition). Apply alongside .nness-neon-card (not .nness-neon-sm)
      so the frame pseudo-elements and bars still render correctly on the
      taller box. */
.nness-neon-expanded {
    width: 161px;
    height: auto;
    min-height: 140px;
    transition: none;
  }
.nness-card-md {
    --nness-frame: 6px;
    width: 360px;
    height: 360px;
  }
.nness-card-lg {
    --nness-frame: 8px;
    width: 520px;
    height: 520px;
  }
/* Semi-opaque content backing layered above the L-lines pattern so
     text and pictures stay fully legible. Sits at z-index 2, above both
     the pattern (z-0) and the glossy streak (z-1). */
.nness-card-content {
    position: relative;
    z-index: 2;
    border-radius: 0.5rem;
    background: oklch(var(--card) / 0.86);
    backdrop-filter: blur(2px);
    width: 100%;
    height: 100%;
  }
/* Vintage white (warm off-white, not stark) for expert names on neon
     backgrounds. Uses the literal hex #f5f0e1 with !important so the
     class itself guarantees vintage white even if an inline style is
     stripped or a competing color rule exists. Literal hex (not wrapped
     in oklch) per the user's explicit-color requirement. */
.nness-neon-text {
    color: #f5f0e1 !important;
  }
/* ───────────────────────────────────────────────────────────────────
     NNESS faded neo-vintage-red REPORT button — used on profile
     cards (ExpertProfileOverlay + ExpertContactSquare) and the chat/
     meeting session view (ChatDialog). In the Phase 3 ExpertContactSquare
     overlay it sits as the FIRST element in the right-side scheduling
     panel, directly above the camera on/off toggle, near the chat area.

     - Fill: faded vintage red (--neon-red), muted/desaturated so it
       reads retro rather than alarming (hue 25, chroma ~0.12 light /
       ~0.13 dark — a fire-engine red would be 0.22+).
     - Border: slightly darker red (--neon-red-border) for definition.
     - Text: vintage white #f5f0e1 (warm off-white, --neon-text) for
       AA+ contrast against the red fill — preserves the 80s vintage
       white text requirement across new components.
     - Hover: bumps to --neon-red-hover with a single soft red glow
       (NOT a harsh 3-layer neon glow — this button is intentionally
       understated so it does not dominate the card/session UI).
     - Focus-visible: 2px solid --neon-red outline + 2px offset for
       keyboard accessibility.
     - Sizing: matches the .nness-neon-btn-purple sizing (padding
       8px 14px, border-radius 0.375rem, font-size 0.65rem, font-weight
       600, white-space:nowrap, matching single-layer box-shadow
       structure) so the Report button reads as a quiet sibling of the
       chat send button. The red color is preserved — it is NOT purple.
     ─────────────────────────────────────────────────────────────────── */
.nness-report-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 8px 14px;
    border-radius: 0.375rem;
    border: 2px solid oklch(var(--neon-red-border) / 0.85);
    background: oklch(var(--neon-red) / 0.88);
    color: var(--neon-text);
    font-family: var(--font-body);
    font-size: 0.65rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    min-width: 0;
    cursor: pointer;
    /* Subtle single outer shadow + slight inset highlight — mirrors the
       .nness-neon-btn-purple box-shadow structure (single outer layer +
       inset highlight) so the report button feels like a quiet sibling
       of the chat send button. Red color, not purple. */
    box-shadow: 0 1px 3px oklch(var(--neon-red) / 0.35), inset 0 1px 0
      oklch(0.99 0 0 / 0.18);
    transition: box-shadow 150ms ease-out, background 150ms ease-out,
      border-color 150ms ease-out;
  }
.nness-report-btn:hover {
    background: oklch(var(--neon-red-hover) / 0.96);
    border-color: oklch(var(--neon-red-hover) / 0.85);
    /* Soft red glow on hover — single layer, low alpha. Mirrors the
       .nness-neon-btn-purple:hover shadow structure (slightly stronger
       outer + inset highlight). Not aggressive. */
    box-shadow: 0 2px 6px oklch(var(--neon-red-hover) / 0.45), inset 0 1px 0
      oklch(0.99 0 0 / 0.22);
  }
.nness-report-btn:focus-visible {
    outline: 2px solid oklch(var(--neon-red));
    outline-offset: 2px;
  }
.nness-report-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    box-shadow: none;
  }
/* Inline flag icon sizing inside the report button — keeps the icon
     proportional to the 0.65rem label (matches the chat send button's
     h-3.5 w-3.5 = 0.875rem icon sizing). */
.nness-report-btn svg {
    width: 0.875rem;
    height: 0.875rem;
    flex-shrink: 0;
  }
/* Admin dashboard utilities — extend DiagnosticsPanel OKLCH light theme.
     All colors reference --admin-* tokens already defined in :root and .dark
     so the admin surface stays consistent with the existing diagnostics panel. */
.admin-tab {
    border-bottom: 2px solid oklch(var(--admin-tab-active-border));
    padding: 0.5rem 1rem;
    cursor: pointer;
  }
.admin-table {
    width: 100%;
    border-collapse: collapse;
  }
.admin-table th {
    background: oklch(var(--admin-table-header-bg));
    padding: 0.5rem;
    text-align: left;
    position: sticky;
    top: 0;
  }
.admin-table tr:nth-child(even) {
    background: oklch(var(--admin-table-stripe-bg));
  }
.admin-badge-active {
    background: oklch(var(--admin-badge-active-bg));
    color: oklch(var(--admin-badge-active-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
  }
.admin-badge-pending {
    background: oklch(var(--admin-badge-pending-bg));
    color: oklch(var(--admin-badge-pending-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
  }
.admin-badge-suspended {
    background: oklch(var(--admin-badge-suspended-bg));
    color: oklch(var(--admin-badge-suspended-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
  }
.admin-badge-info {
    background: oklch(var(--admin-badge-info-bg));
    color: oklch(var(--admin-badge-info-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
  }
/* Reported-pictures status pills — extend the .admin-badge-* pattern
     for the ModerationPanel "Reported pictures" section. Same pill shape,
     padding, and font-size as the other admin badges so the moderation
     table stays visually consistent with the rest of DiagnosticsPanel. */
.admin-badge-reported {
    background: oklch(var(--admin-badge-reported-bg));
    color: oklch(var(--admin-badge-reported-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-hidden {
    background: oklch(var(--admin-badge-hidden-bg));
    color: oklch(var(--admin-badge-hidden-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
/* Reported-picture thumbnail frame — small square preview shown in
     the admin moderation table for each reported profile picture. Uses
     the admin light-theme surface (NOT the neon dark card) so it matches
     DiagnosticsPanel. A 2px red-tinted border signals the flagged state
     at a glance; the warm neutral fill keeps the thumbnail legible while
     the picture loads or if it was auto-hidden (image replaced by a
     muted placeholder). Square aspect enforced via aspect-ratio so the
     thumbnail never distorts in a table cell. */
.admin-reported-thumb {
    box-sizing: border-box;
    aspect-ratio: 1 / 1 !important;
    flex-shrink: 0;
    border: 2px solid oklch(var(--admin-reported-thumb-border));
    border-radius: 0.375rem;
    background: oklch(var(--admin-reported-thumb-bg));
    overflow: hidden;
    display: block;
  }
.admin-reported-thumb > img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    display: block;
  }
.admin-step {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
  }
.admin-countdown {
    font-family: monospace;
    font-size: 1.5rem;
    font-weight: 700;
  }
.admin-filter-pill {
    background: oklch(var(--admin-tab-hover-bg));
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    cursor: pointer;
    font-size: 0.875rem;
  }
/* ── Admin roles & compliance badges — extend the .admin-badge-* pattern
     for the new admin tabs. Same pill shape, padding, and font-size as the
     other admin badges so the new tabs stay visually consistent with the
     existing DiagnosticsPanel. Banned = darker red than suspended
     (permanent). Contested = neon-purple family. Review = amber (distinct
     from pending). Resolved = green (distinct from active). Role badges
     map each UserRole variant to a family: admin=amber, moderator=purple,
     user=neutral, guest=muted. DSR badges use the info-blue family with
     lightness steps for new/in-progress/fulfilled. */
.admin-badge-banned {
    background: oklch(var(--admin-badge-banned-bg));
    color: oklch(var(--admin-badge-banned-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-contested {
    background: oklch(var(--admin-badge-contested-bg));
    color: oklch(var(--admin-badge-contested-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-review {
    background: oklch(var(--admin-badge-review-bg));
    color: oklch(var(--admin-badge-review-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-resolved {
    background: oklch(var(--admin-badge-resolved-bg));
    color: oklch(var(--admin-badge-resolved-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-role-admin {
    background: oklch(var(--admin-badge-role-admin-bg));
    color: oklch(var(--admin-badge-role-admin-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-role-moderator {
    background: oklch(var(--admin-badge-role-moderator-bg));
    color: oklch(var(--admin-badge-role-moderator-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-role-user {
    background: oklch(var(--admin-badge-role-user-bg));
    color: oklch(var(--admin-badge-role-user-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-role-guest {
    background: oklch(var(--admin-badge-role-guest-bg));
    color: oklch(var(--admin-badge-role-guest-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-dsr-new {
    background: oklch(var(--admin-badge-dsr-new-bg));
    color: oklch(var(--admin-badge-dsr-new-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-dsr-progress {
    background: oklch(var(--admin-badge-dsr-progress-bg));
    color: oklch(var(--admin-badge-dsr-progress-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
.admin-badge-dsr-fulfilled {
    background: oklch(var(--admin-badge-dsr-fulfilled-bg));
    color: oklch(var(--admin-badge-dsr-fulfilled-fg));
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
  }
/* Moderation log statement-of-reasons quoted block — warm recessed
     surface with an amber left border accent. Italicized text marks
     the quoted admin reasoning so it reads as an inset citation
     within the log row, distinct from the row's own metadata. */
.admin-moderation-quote {
    background: oklch(var(--admin-moderation-quote-bg));
    border-left: 3px solid oklch(var(--admin-moderation-quote-border));
    color: oklch(var(--admin-moderation-quote-fg));
    padding: 0.5rem 0.75rem;
    border-radius: 0 0.375rem 0.375rem 0;
    font-style: italic;
    font-size: 0.875rem;
    line-height: 1.5;
  }
/* Admin action row — horizontal row of action buttons (Ban / Suspend /
     Dismiss / View contest) in the moderation + user-management tables.
     Flex with gap so buttons wrap cleanly on narrow widths. */
.admin-action-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    align-items: center;
  }
/* Public Report content form surface — vintage white aged-paper card
     for the no-sign-in report form reachable from the footer. Same warm
     family as .nness-vintage-category-box but slightly lighter (0.97 vs
     0.96) so the form reads as a fresh sheet. Soft aged-paper texture
     via layered inset shadows + faint radial grain. Amber accent border
     ties the form to the footer link that opens it. */
.public-report-form {
    position: relative;
    border-radius: var(--radius);
    border: 1px solid oklch(var(--public-form-border));
    background-color: oklch(var(--public-form-bg));
    color: oklch(0.25 0.03 60);
    background-image: radial-gradient(
        circle at 20% 30%,
        oklch(0.78 0.02 70 / 0.05) 0px,
        oklch(0.78 0.02 70 / 0) 2px
      ),
      radial-gradient(
        circle at 70% 60%,
        oklch(0.6 0.03 60 / 0.04) 0px,
        oklch(0.6 0.03 60 / 0) 2px
      );
    background-size: 14px 14px, 18px 18px;
    background-repeat: repeat;
    box-shadow:
      inset 0 1px 2px rgba(120, 100, 60, 0.12), inset 0 -1px 3px
      rgba(80, 60, 30, 0.18), 0 2px 8px -2px oklch(0.45 0.12 45 / 0.12),
      0 4px 16px -4px oklch(0.45 0.12 45 / 0.06);
    padding: 1.5rem;
  }
/* Public form field — input/textarea/select styling on the vintage
     white surface. Lighter fill than the card so fields read as inset
     wells. Soft aged edge border. Focus ring uses the amber accent. */
.public-report-field {
    background: oklch(var(--public-form-field-bg));
    border: 1px solid oklch(var(--public-form-field-border));
    border-radius: 0.375rem;
    color: oklch(0.2 0.02 60);
    padding: 0.5rem 0.75rem;
    font-family: var(--font-body);
    font-size: 0.875rem;
    width: 100%;
    transition: border-color 150ms ease-out, box-shadow 150ms ease-out;
  }
.public-report-field:focus {
    outline: none;
    border-color: oklch(var(--public-form-accent));
    box-shadow: 0 0 0 2px oklch(var(--public-form-accent) / 0.25);
  }
.public-report-field::-moz-placeholder {
    color: oklch(var(--public-form-muted));
  }
.public-report-field::placeholder {
    color: oklch(var(--public-form-muted));
  }
/* Privacy request card — used on the public Privacy requests page for
     signed-in users to submit data subject requests (access / rectification
     / erasure / portability). Same vintage white surface as the report
     form so both public compliance surfaces share a visual language.
     Slightly tighter padding for a stacked card list. */
.privacy-request-card {
    position: relative;
    border-radius: var(--radius);
    border: 1px solid oklch(var(--public-form-border));
    background-color: oklch(var(--public-form-bg));
    color: oklch(0.25 0.03 60);
    box-shadow: inset 0 1px 2px rgba(120, 100, 60, 0.1), 0 2px 8px -2px
      oklch(0.45 0.12 45 / 0.1);
    padding: 1.25rem;
  }
/* ───────────────────────────────────────────────────────────────────
     MEETING FLOW + CHAT LIMITS component classes — additive, prefixed
     .nness-meet-* / .nness-agenda-* / .nness-countdown-* / .nness-chat-* /
     .nness-block-* / .nness-request-* / .nness-review-*. All reuse the
     existing vintage 80s neon token families (--neon-purple, --neon-red,
     --neon-text #f5f0e1, --session-live, --warning, --calendar-today) and
     the existing .nness-neon-btn-purple / .nness-report-btn button styles
     so the new surfaces read as part of the existing system. EN/FR/NL
     labels handled by the LanguageProvider — no language-specific CSS.
     ─────────────────────────────────────────────────────────────────── */
/* Quick-meeting duration chip row — wraps the 4 chips (Meet Now / 5 /
     30 / 60 min) in the chat sidebar. Flex with wrap + gap so chips wrap
     cleanly on narrow sidebar widths. Reuses the .nness-neon-btn-row
     yellow-framed container treatment is NOT used here (that wraps the
     Start chat / Schedule meeting pair); this is a plain flex row so the
     chips sit directly on the chat panel surface. */
.nness-meet-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
  }
/* Single quick-meeting duration chip — vintage purple pill reusing the
     .nness-neon-btn-purple softened glow treatment (single outer shadow +
     inset highlight, NOT the harsh 3-layer neon glow). Selected state
     uses .nness-meet-chip--active for a brighter fill + inset ring.
     Sizing matches the chat send button footprint so chips read as quiet
     siblings of the send action. */
.nness-meet-chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 6px 10px;
    border-radius: 9999px;
    border: 2px solid oklch(var(--nness-meet-chip-border) / 0.85);
    background: oklch(var(--nness-meet-chip-bg) / 0.88);
    color: var(--neon-text);
    font-family: var(--font-body);
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    min-width: 0;
    cursor: pointer;
    box-shadow: 0 1px 3px oklch(var(--nness-meet-chip-bg) / 0.35), inset 0 1px 0
      oklch(0.99 0 0 / 0.18);
    transition: box-shadow 150ms ease-out, background 150ms ease-out,
      border-color 150ms ease-out;
  }
.nness-meet-chip:hover {
    background: oklch(var(--nness-meet-chip-bg) / 0.96);
    box-shadow: 0 2px 6px oklch(var(--nness-meet-chip-bg) / 0.45), inset 0 1px 0
      oklch(0.99 0 0 / 0.22);
  }
.nness-meet-chip:focus-visible {
    outline: 2px solid oklch(var(--nness-meet-chip-active));
    outline-offset: 2px;
  }
/* Active / selected chip — brighter fill + inset ring (mirrors the
     .nness-neon-btn-purple-selected treatment). The active chip is the
     currently chosen duration before the user confirms "Meet Now". */
.nness-meet-chip--active {
    background: oklch(var(--nness-meet-chip-active) / 0.98);
    border-color: oklch(var(--nness-meet-chip-active) / 0.95);
    box-shadow: 0 1px 3px oklch(var(--nness-meet-chip-active) / 0.5), inset 0 0
      0 1px oklch(0.99 0 0 / 0.35), inset 0 1px 0 oklch(0.99 0 0 / 0.22);
  }
/* Agenda calendar grid — monthly grid for the scheduling modal. 7-column
     CSS grid with tight cell gaps. Cells are vintage white aged-paper
     squares (reuses the --nness-agenda-cell-* tokens, same warm hue 80
     family as the public form). Today's cell gets the amber highlight +
     ring + neon-green dot. Past dates are dimmed. */
.nness-agenda-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
    width: 100%;
  }
.nness-agenda-head {
    font-family: var(--font-body);
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: oklch(var(--nness-chat-nudge-fg));
    text-align: center;
    padding: 4px 0;
  }
.nness-agenda-cell {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: 0.375rem;
    border: 1px solid oklch(var(--nness-agenda-cell-border));
    background: oklch(var(--nness-agenda-cell-bg));
    color: oklch(0.25 0.02 60);
    font-family: var(--font-body);
    font-size: 0.75rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 150ms ease-out, border-color 150ms ease-out;
  }
.nness-agenda-cell:hover:not(.nness-agenda-cell--past):not(
      .nness-agenda-cell--empty
    ) {
    background: oklch(var(--nness-agenda-cell-hover));
    border-color: oklch(var(--nness-agenda-today-ring) / 0.5);
  }
/* Past dates — dimmed, not clickable. */
.nness-agenda-cell--past {
    background: oklch(var(--nness-agenda-cell-past));
    color: oklch(0.55 0.01 60);
    cursor: not-allowed;
    opacity: 0.6;
  }
/* Empty cell (padding days at month start/end) — no border, no cursor. */
.nness-agenda-cell--empty {
    border-color: transparent;
    background: transparent;
    cursor: default;
  }
/* Today cell — warm amber fill + amber ring + neon-green pulsing dot in
     the corner. Reuses --calendar-today family (hue 55) for the fill and
     --primary (hue 45) for the ring so today reads as a warm amber
     highlight distinct from the neon yellow card frame. */
.nness-agenda-cell--today {
    background: oklch(var(--nness-agenda-today-bg));
    border-color: oklch(var(--nness-agenda-today-ring));
    color: oklch(0.2 0.02 45);
    font-weight: 700;
    box-shadow: inset 0 0 0 1px oklch(var(--nness-agenda-today-ring) / 0.35), 0
      0 0 2px oklch(var(--nness-agenda-today-ring) / 0.25);
  }
.nness-agenda-cell--today::after {
    content: "";
    position: absolute;
    top: 4px;
    right: 4px;
    width: 6px;
    height: 6px;
    border-radius: 9999px;
    background: oklch(var(--nness-agenda-today-dot));
    box-shadow: 0 0 4px oklch(var(--nness-agenda-today-dot) / 0.9), 0 0 8px
      oklch(var(--nness-agenda-today-dot) / 0.6);
    animation: nness-neon-pulse 2.4s ease-in-out infinite;
  }
/* Selected future date (user's chosen meeting day) — purple ring. */
.nness-agenda-cell--selected {
    border-color: oklch(var(--nness-meet-chip-active));
    box-shadow: inset 0 0 0 1px oklch(var(--nness-meet-chip-active) / 0.4), 0 0
      0 2px oklch(var(--nness-meet-chip-active) / 0.25);
    background: oklch(var(--nness-meet-chip-active) / 0.12);
  }
/* Live countdown overlay — fixed full-screen darkened backdrop with a
     centered countdown card. Digits in --font-mono, large, with a soft
     glow that shifts color by state (normal green / warning amber /
     critical red). The LIVE indicator reuses .nness-live-indicator. */
.nness-countdown-overlay {
    position: fixed;
    inset: 0;
    background: oklch(var(--nness-countdown-overlay-bg) / 0.92);
    backdrop-filter: blur(3px);
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
  }
.nness-countdown-card {
    position: relative;
    border-radius: 0.75rem;
    border: 1px solid oklch(var(--neon-purple) / 0.4);
    background: linear-gradient(
      160deg,
      oklch(var(--neon-overlay-bg)) 0%,
      oklch(var(--neon-overlay-bg-deep)) 100%
    );
    box-shadow: 0 20px 60px -12px oklch(0.05 0 0 / 0.7), 0 8px 24px -8px
      oklch(0.05 0 0 / 0.5);
    padding: 32px 40px;
    text-align: center;
    z-index: 61;
  }
.nness-countdown-digits {
    font-family: var(--font-mono);
    font-size: 3.5rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.04em;
    color: oklch(var(--nness-countdown-normal));
    text-shadow: 0 0 8px oklch(var(--nness-countdown-normal) / 0.6), 0 0 18px
      oklch(var(--nness-countdown-normal) / 0.3);
    transition: color 200ms ease-out, text-shadow 200ms ease-out;
  }
/* Warning state (<5min) — amber digits + amber glow. */
.nness-countdown-digits--warning {
    color: oklch(var(--nness-countdown-warning));
    text-shadow: 0 0 8px oklch(var(--nness-countdown-warning) / 0.7), 0 0 18px
      oklch(var(--nness-countdown-warning) / 0.4);
    animation: nness-countdown-pulse 1.6s ease-in-out infinite;
  }
/* Critical state (<60s) — vintage red digits + red glow + faster pulse.
     Reuses the --session-live family (hue 25). */
.nness-countdown-digits--critical {
    color: oklch(var(--nness-countdown-critical));
    text-shadow: 0 0 10px oklch(var(--nness-countdown-critical) / 0.8), 0 0 22px
      oklch(var(--nness-countdown-critical) / 0.5);
    animation: nness-countdown-pulse 0.9s ease-in-out infinite;
  }
/* Chat 500-char nudge — soft purple-tinted inline message shown above
     the chat input when the user approaches / hits the 500-char cap. Not
     a warning red — a gentle purple hint nudging toward starting a
     meeting. Reuses --neon-purple (hue 300) for the border accent. */
.nness-chat-nudge {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 0.5rem;
    border: 1px solid oklch(var(--nness-chat-nudge-border) / 0.5);
    background: oklch(var(--nness-chat-nudge-bg) / 0.6);
    color: oklch(var(--nness-chat-nudge-fg));
    font-family: var(--font-body);
    font-size: 0.75rem;
    line-height: 1.4;
  }
.nness-chat-nudge svg {
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    color: oklch(var(--nness-chat-nudge-border));
  }
/* Character counter — small mono count below the chat input. Turns
     amber as the user approaches 500 chars. */
.nness-chat-count {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    font-weight: 600;
    color: oklch(var(--nness-chat-count-ok));
    transition: color 150ms ease-out;
  }
.nness-chat-count--warn {
    color: oklch(var(--nness-chat-count-warn));
  }
/* Phone/contact block warning banner — faded vintage-red banner shown
     when the user tries to share phone/contact info in chat (which is
     blocked until a meeting session completes). Reuses the --destructive
     / --neon-red family (hue 25). Vintage white text via --neon-text for
     AA+ contrast. Left amber accent border ties it to the app family. */
.nness-block-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 0.5rem;
    border: 1px solid oklch(var(--nness-block-banner-border) / 0.85);
    border-left: 4px solid oklch(var(--nness-review-placeholder-accent));
    background: oklch(var(--nness-block-banner-bg) / 0.92);
    color: var(--nness-block-banner-fg);
    font-family: var(--font-body);
    font-size: 0.8rem;
    line-height: 1.4;
  }
.nness-block-banner svg {
    width: 1.1rem;
    height: 1.1rem;
    flex-shrink: 0;
    color: var(--nness-block-banner-fg);
  }
/* Meeting-request accept/dismiss card — shown when a user receives a
     meeting request. Reuses the overlay surface family. Accept button =
     .nness-neon-btn-purple (vintage purple). Dismiss button =
     .nness-report-btn (faded vintage red). The card sits in the right
     column of the overlay split. */
.nness-request-card {
    position: relative;
    border-radius: 0.5rem;
    border: 1px solid oklch(var(--nness-request-card-border) / 0.4);
    background: oklch(var(--nness-request-card-bg) / 0.7);
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
.nness-request-meta {
    font-family: var(--font-body);
    font-size: 0.78rem;
    color: oklch(0.85 0.005 280);
    line-height: 1.4;
  }
.nness-request-actions {
    display: flex;
    gap: 8px;
    align-items: center;
  }
.nness-request-actions > * {
    flex: 1 1 0;
    min-width: 0;
  }
/* Review placeholder route — vintage white aged-paper surface for the
     deferred review route (review system stars + structured tags form
     is explicitly deferred to a later to-do). Same warm family as the
     public form so the placeholder reads as a fresh sheet. Amber accent
     ties it to the meeting flow. A clear "coming soon" message + a
     mailto/email-link placeholder for the review email link. */
.nness-review-placeholder {
    position: relative;
    border-radius: var(--radius);
    border: 1px solid oklch(var(--nness-review-placeholder-border));
    background-color: oklch(var(--nness-review-placeholder-bg));
    color: oklch(0.25 0.03 60);
    background-image: radial-gradient(
        circle at 20% 30%,
        oklch(0.78 0.02 70 / 0.05) 0px,
        oklch(0.78 0.02 70 / 0) 2px
      ),
      radial-gradient(
        circle at 70% 60%,
        oklch(0.6 0.03 60 / 0.04) 0px,
        oklch(0.6 0.03 60 / 0) 2px
      );
    background-size: 14px 14px, 18px 18px;
    background-repeat: repeat;
    box-shadow: inset 0 1px 2px rgba(120, 100, 60, 0.12), inset 0 -1px 3px
      rgba(80, 60, 30, 0.18), 0 2px 8px -2px oklch(0.45 0.12 45 / 0.12);
    padding: 2rem;
    text-align: center;
  }
.nness-review-placeholder-title {
    font-family: var(--font-display);
    font-size: 1.5rem;
    font-weight: 700;
    color: oklch(0.2 0.02 60);
    margin-bottom: 0.5rem;
  }
.nness-review-placeholder-body {
    font-family: var(--font-body);
    font-size: 0.95rem;
    line-height: 1.6;
    color: oklch(0.3 0.02 60);
    margin-bottom: 1.25rem;
  }
.nness-review-placeholder-muted {
    font-family: var(--font-body);
    font-size: 0.8rem;
    color: oklch(var(--nness-review-placeholder-muted));
  }
/* Review email link — amber accent link reusing the public-form accent
     family. Underlined on hover, focus ring for keyboard a11y. */
.nness-review-email-link {
    color: oklch(var(--nness-review-placeholder-accent));
    font-family: var(--font-body);
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color 150ms ease-out;
  }
.nness-review-email-link:hover {
    color: oklch(var(--nness-review-placeholder-accent) / 0.85);
  }
.nness-review-email-link:focus-visible {
    outline: 2px solid oklch(var(--nness-review-placeholder-accent));
    outline-offset: 2px;
    border-radius: 2px;
  }
.\[--cell-size\:--spacing\(8\)\] {
  --cell-size: var(--spacing(8));
}
.selection\:bg-primary *::-moz-selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:bg-primary *::selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:text-primary-foreground *::-moz-selection {
  color: oklch(var(--primary-foreground));
}
.selection\:text-primary-foreground *::selection {
  color: oklch(var(--primary-foreground));
}
.selection\:bg-primary::-moz-selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:bg-primary::selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:text-primary-foreground::-moz-selection {
  color: oklch(var(--primary-foreground));
}
.selection\:text-primary-foreground::selection {
  color: oklch(var(--primary-foreground));
}
.file\:inline-flex::file-selector-button {
  display: inline-flex;
}
.file\:h-7::file-selector-button {
  height: 1.75rem;
}
.file\:border-0::file-selector-button {
  border-width: 0px;
}
.file\:bg-transparent::file-selector-button {
  background-color: transparent;
}
.file\:text-sm::file-selector-button {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.file\:font-medium::file-selector-button {
  font-weight: 500;
}
.file\:text-foreground::file-selector-button {
  color: oklch(var(--foreground));
}
.placeholder\:text-muted-foreground::-moz-placeholder {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.placeholder\:text-muted-foreground::placeholder {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.after\:absolute::after {
  content: var(--tw-content);
  position: absolute;
}
.after\:-inset-2::after {
  content: var(--tw-content);
  inset: -0.5rem;
}
.after\:inset-y-0::after {
  content: var(--tw-content);
  top: 0px;
  bottom: 0px;
}
.after\:left-1\/2::after {
  content: var(--tw-content);
  left: 50%;
}
.after\:w-1::after {
  content: var(--tw-content);
  width: 0.25rem;
}
.after\:w-\[2px\]::after {
  content: var(--tw-content);
  width: 2px;
}
.after\:-translate-x-1\/2::after {
  content: var(--tw-content);
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.first\:rounded-l-md:first-child {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.first\:border-l:first-child {
  border-left-width: 1px;
}
.last\:rounded-r-md:last-child {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.last\:border-b-0:last-child {
  border-bottom-width: 0px;
}
.focus-within\:border-primary:focus-within {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.focus-within\:outline-none:focus-within {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus-within\:ring-1:focus-within {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-within\:ring-primary\/30:focus-within {
  --tw-ring-color: oklch(var(--primary) / 0.3);
}
.hover\:scale-105:hover {
  --tw-scale-x: 1.05;
  --tw-scale-y: 1.05;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.hover\:scale-110:hover {
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.hover\:border-\[oklch\(var\(--myacct-blue-lighter\)\)\]:hover {
  border-color: oklch(var(--myacct-blue-lighter));
}
.hover\:border-primary:hover {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.hover\:border-primary\/40:hover {
  border-color: oklch(var(--primary) / 0.4);
}
.hover\:border-primary\/50:hover {
  border-color: oklch(var(--primary) / 0.5);
}
.hover\:border-primary\/60:hover {
  border-color: oklch(var(--primary) / 0.6);
}
.hover\:bg-\[oklch\(0\.50_0\.08_240\)\]:hover {
  background-color: oklch(0.50 0.08 240);
}
.hover\:bg-\[oklch\(0\.50_0\.15_30\)\]:hover {
  background-color: oklch(0.50 0.15 30);
}
.hover\:bg-\[oklch\(0\.95_0\.02_60\)\]:hover {
  background-color: oklch(0.95 0.02 60);
}
.hover\:bg-\[oklch\(var\(--admin-tab-hover-bg\)\)\]:hover {
  background-color: oklch(var(--admin-tab-hover-bg));
}
.hover\:bg-accent:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.hover\:bg-accent\/40:hover {
  background-color: oklch(var(--accent) / 0.4);
}
.hover\:bg-accent\/60:hover {
  background-color: oklch(var(--accent) / 0.6);
}
.hover\:bg-amber-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
}
.hover\:bg-destructive:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--destructive) / var(--tw-bg-opacity, 1));
}
.hover\:bg-destructive\/10:hover {
  background-color: oklch(var(--destructive) / 0.1);
}
.hover\:bg-destructive\/90:hover {
  background-color: oklch(var(--destructive) / 0.9);
}
.hover\:bg-emerald-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(236 253 245 / var(--tw-bg-opacity, 1));
}
.hover\:bg-green-100:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
}
.hover\:bg-green-700:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(21 128 61 / var(--tw-bg-opacity, 1));
}
.hover\:bg-muted:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.hover\:bg-muted\/40:hover {
  background-color: oklch(var(--muted) / 0.4);
}
.hover\:bg-muted\/50:hover {
  background-color: oklch(var(--muted) / 0.5);
}
.hover\:bg-primary:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.hover\:bg-primary\/10:hover {
  background-color: oklch(var(--primary) / 0.1);
}
.hover\:bg-primary\/20:hover {
  background-color: oklch(var(--primary) / 0.2);
}
.hover\:bg-primary\/25:hover {
  background-color: oklch(var(--primary) / 0.25);
}
.hover\:bg-primary\/5:hover {
  background-color: oklch(var(--primary) / 0.05);
}
.hover\:bg-primary\/90:hover {
  background-color: oklch(var(--primary) / 0.9);
}
.hover\:bg-secondary\/80:hover {
  background-color: oklch(var(--secondary) / 0.8);
}
.hover\:bg-sidebar-accent:hover {
  background-color: oklch(var(--sidebar-accent));
}
.hover\:bg-white\/10:hover {
  background-color: rgb(255 255 255 / 0.1);
}
.hover\:text-\[\#f5f0e1\]:hover {
  --tw-text-opacity: 1;
  color: rgb(245 240 225 / var(--tw-text-opacity, 1));
}
.hover\:text-\[oklch\(0\.3_0\.05_60\)\]:hover {
  color: oklch(0.3 0.05 60);
}
.hover\:text-\[oklch\(0\.40_0\.15_220\)\]:hover {
  color: oklch(0.40 0.15 220);
}
.hover\:text-accent-foreground:hover {
  color: oklch(var(--accent-foreground));
}
.hover\:text-amber-800:hover {
  --tw-text-opacity: 1;
  color: rgb(146 64 14 / var(--tw-text-opacity, 1));
}
.hover\:text-black:hover {
  --tw-text-opacity: 1;
  color: rgb(0 0 0 / var(--tw-text-opacity, 1));
}
.hover\:text-destructive:hover {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.hover\:text-destructive-foreground:hover {
  color: oklch(var(--destructive-foreground));
}
.hover\:text-emerald-800:hover {
  --tw-text-opacity: 1;
  color: rgb(6 95 70 / var(--tw-text-opacity, 1));
}
.hover\:text-foreground:hover {
  color: oklch(var(--foreground));
}
.hover\:text-muted-foreground:hover {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.hover\:text-primary:hover {
  --tw-text-opacity: 1;
  color: oklch(var(--primary) / var(--tw-text-opacity, 1));
}
.hover\:text-primary-foreground:hover {
  color: oklch(var(--primary-foreground));
}
.hover\:text-sidebar-accent-foreground:hover {
  color: oklch(var(--sidebar-accent-foreground));
}
.hover\:text-white:hover {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.hover\:underline:hover {
  text-decoration-line: underline;
}
.hover\:no-underline:hover {
  text-decoration-line: none;
}
.hover\:opacity-100:hover {
  opacity: 1;
}
.hover\:opacity-80:hover {
  opacity: 0.8;
}
.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover {
  --tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));
  --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-md:hover {
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-xl:hover {
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:ring-4:hover {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.hover\:after\:bg-sidebar-border:hover::after {
  content: var(--tw-content);
  background-color: oklch(var(--sidebar-border));
}
.focus\:z-10:focus {
  z-index: 10;
}
.focus\:border-primary:focus {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.focus\:bg-accent:focus {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.focus\:text-accent-foreground:focus {
  color: oklch(var(--accent-foreground));
}
.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus\:ring-1:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-2:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-primary\/30:focus {
  --tw-ring-color: oklch(var(--primary) / 0.3);
}
.focus\:ring-ring:focus {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.focus\:ring-offset-2:focus {
  --tw-ring-offset-width: 2px;
}
.focus-visible\:z-10:focus-visible {
  z-index: 10;
}
.focus-visible\:border-ring:focus-visible {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus-visible\:outline-1:focus-visible {
  outline-width: 1px;
}
.focus-visible\:outline-ring:focus-visible {
  outline-color: oklch(var(--ring) / 1);
}
.focus-visible\:ring-0:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-1:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-2:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-4:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-\[3px\]:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-\[oklch\(var\(--myacct-blue-lighter\)\)\]:focus-visible {
  --tw-ring-color: oklch(var(--myacct-blue-lighter));
}
.focus-visible\:ring-destructive\/20:focus-visible {
  --tw-ring-color: oklch(var(--destructive) / 0.2);
}
.focus-visible\:ring-destructive\/50:focus-visible {
  --tw-ring-color: oklch(var(--destructive) / 0.5);
}
.focus-visible\:ring-primary:focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--primary) / var(--tw-ring-opacity, 1));
}
.focus-visible\:ring-ring:focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.focus-visible\:ring-ring\/50:focus-visible {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.focus-visible\:ring-offset-0:focus-visible {
  --tw-ring-offset-width: 0px;
}
.focus-visible\:ring-offset-1:focus-visible {
  --tw-ring-offset-width: 1px;
}
.focus-visible\:ring-offset-2:focus-visible {
  --tw-ring-offset-width: 2px;
}
.focus-visible\:ring-offset-\[oklch\(var\(--myacct-blue-darker\)\)\]:focus-visible {
  --tw-ring-offset-color: oklch(var(--myacct-blue-darker));
}
.focus-visible\:ring-offset-background:focus-visible {
  --tw-ring-offset-color: oklch(var(--background));
}
.active\:bg-sidebar-accent:active {
  background-color: oklch(var(--sidebar-accent));
}
.active\:text-sidebar-accent-foreground:active {
  color: oklch(var(--sidebar-accent-foreground));
}
.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}
.disabled\:cursor-not-allowed:disabled {
  cursor: not-allowed;
}
.disabled\:opacity-40:disabled {
  opacity: 0.4;
}
.disabled\:opacity-50:disabled {
  opacity: 0.5;
}
.disabled\:opacity-60:disabled {
  opacity: 0.6;
}
.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100 {
  opacity: 1;
}
.group:hover .group-hover\:scale-105 {
  --tw-scale-x: 1.05;
  --tw-scale-y: 1.05;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:scale-\[1\.02\] {
  --tw-scale-x: 1.02;
  --tw-scale-y: 1.02;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:border-primary {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.group\/menu-item:hover .group-hover\/menu-item\:opacity-100 {
  opacity: 1;
}
.group:hover .group-hover\:opacity-100 {
  opacity: 1;
}
.peer\/menu-button:hover ~ .peer-hover\/menu-button\:text-sidebar-accent-foreground {
  color: oklch(var(--sidebar-accent-foreground));
}
.peer:disabled ~ .peer-disabled\:cursor-not-allowed {
  cursor: not-allowed;
}
.peer:disabled ~ .peer-disabled\:opacity-50 {
  opacity: 0.5;
}
.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg) {
  grid-template-columns: calc(var(--spacing) * 4) 1fr;
}
.has-\[\>svg\]\:gap-x-3:has(>svg) {
  -moz-column-gap: 0.75rem;
       column-gap: 0.75rem;
}
.has-\[\>svg\]\:px-2\.5:has(>svg) {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.has-\[\>svg\]\:px-3:has(>svg) {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.has-\[\>svg\]\:px-4:has(>svg) {
  padding-left: 1rem;
  padding-right: 1rem;
}
.aria-disabled\:pointer-events-none[aria-disabled="true"] {
  pointer-events: none;
}
.aria-disabled\:opacity-50[aria-disabled="true"] {
  opacity: 0.5;
}
.aria-selected\:text-muted-foreground[aria-selected="true"] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[disabled\=true\]\:pointer-events-none[data-disabled="true"] {
  pointer-events: none;
}
.data-\[disabled\]\:pointer-events-none[data-disabled] {
  pointer-events: none;
}
.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction="bottom"] {
  left: 0px;
  right: 0px;
}
.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction="left"] {
  top: 0px;
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction="right"] {
  top: 0px;
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction="top"] {
  left: 0px;
  right: 0px;
}
.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction="bottom"] {
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction="left"] {
  left: 0px;
}
.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction="right"] {
  right: 0px;
}
.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction="top"] {
  top: 0px;
}
.data-\[active\=true\]\:z-10[data-active="true"] {
  z-index: 10;
}
.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction="bottom"] {
  margin-top: 6rem;
}
.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction="top"] {
  margin-bottom: 6rem;
}
.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation="horizontal"] {
  height: 0.375rem;
}
.data-\[orientation\=horizontal\]\:h-full[data-orientation="horizontal"] {
  height: 100%;
}
.data-\[orientation\=horizontal\]\:h-px[data-orientation="horizontal"] {
  height: 1px;
}
.data-\[orientation\=vertical\]\:h-full[data-orientation="vertical"] {
  height: 100%;
}
.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction="vertical"] {
  height: 1px;
}
.data-\[size\=default\]\:h-9[data-size="default"] {
  height: 2.25rem;
}
.data-\[size\=sm\]\:h-8[data-size="sm"] {
  height: 2rem;
}
.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction="bottom"] {
  max-height: 80vh;
}
.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction="top"] {
  max-height: 80vh;
}
.data-\[orientation\=vertical\]\:min-h-44[data-orientation="vertical"] {
  min-height: 11rem;
}
.data-\[orientation\=horizontal\]\:w-full[data-orientation="horizontal"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-1\.5[data-orientation="vertical"] {
  width: 0.375rem;
}
.data-\[orientation\=vertical\]\:w-auto[data-orientation="vertical"] {
  width: auto;
}
.data-\[orientation\=vertical\]\:w-full[data-orientation="vertical"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-px[data-orientation="vertical"] {
  width: 1px;
}
.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction="vertical"] {
  width: 100%;
}
.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction="left"] {
  width: 75%;
}
.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction="right"] {
  width: 75%;
}
.data-\[side\=bottom\]\:translate-y-1[data-side="bottom"] {
  --tw-translate-y: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=left\]\:-translate-x-1[data-side="left"] {
  --tw-translate-x: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=right\]\:translate-x-1[data-side="right"] {
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=top\]\:-translate-y-1[data-side="top"] {
  --tw-translate-y: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state="checked"] {
  --tw-translate-x: calc(100% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes accordion-up {

  from {
    height: var(--radix-accordion-content-height);
  }

  to {
    height: 0;
  }
}
.data-\[state\=closed\]\:animate-accordion-up[data-state="closed"] {
  animation: accordion-up 0.2s ease-out;
}
@keyframes accordion-down {

  from {
    height: 0;
  }

  to {
    height: var(--radix-accordion-content-height);
  }
}
.data-\[state\=open\]\:animate-accordion-down[data-state="open"] {
  animation: accordion-down 0.2s ease-out;
}
.data-\[orientation\=vertical\]\:flex-col[data-orientation="vertical"] {
  flex-direction: column;
}
.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction="vertical"] {
  flex-direction: column;
}
.data-\[range-end\=true\]\:rounded-md[data-range-end="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[range-middle\=true\]\:rounded-none[data-range-middle="true"] {
  border-radius: 0px;
}
.data-\[range-start\=true\]\:rounded-md[data-range-start="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[selected\=true\]\:rounded-none[data-selected="true"] {
  border-radius: 0px;
}
.data-\[range-end\=true\]\:rounded-r-md[data-range-end="true"] {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.data-\[range-start\=true\]\:rounded-l-md[data-range-start="true"] {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction="bottom"] {
  border-top-left-radius: var(--radius);
  border-top-right-radius: var(--radius);
}
.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction="top"] {
  border-bottom-right-radius: var(--radius);
  border-bottom-left-radius: var(--radius);
}
.data-\[variant\=outline\]\:border-l-0[data-variant="outline"] {
  border-left-width: 0px;
}
.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction="bottom"] {
  border-top-width: 1px;
}
.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction="left"] {
  border-right-width: 1px;
}
.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction="right"] {
  border-left-width: 1px;
}
.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction="top"] {
  border-bottom-width: 1px;
}
.data-\[active\=true\]\:border-ring[data-active="true"] {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.data-\[state\=checked\]\:border-primary[data-state="checked"] {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.data-\[active\=true\]\:bg-accent\/50[data-active="true"] {
  background-color: oklch(var(--accent) / 0.5);
}
.data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
  background-color: oklch(var(--sidebar-accent));
}
.data-\[range-end\=true\]\:bg-primary[data-range-end="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[range-middle\=true\]\:bg-accent[data-range-middle="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[range-start\=true\]\:bg-primary[data-range-start="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[selected-single\=true\]\:bg-primary[data-selected-single="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[selected\=true\]\:bg-accent[data-selected="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=active\]\:bg-background[data-state="active"] {
  background-color: oklch(var(--background));
}
.data-\[state\=checked\]\:bg-primary[data-state="checked"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[state\=on\]\:bg-accent[data-state="on"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:bg-accent[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:bg-accent\/50[data-state="open"] {
  background-color: oklch(var(--accent) / 0.5);
}
.data-\[state\=open\]\:bg-secondary[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--secondary) / var(--tw-bg-opacity, 1));
}
.data-\[state\=selected\]\:bg-muted[data-state="selected"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.data-\[state\=unchecked\]\:bg-input[data-state="unchecked"] {
  background-color: oklch(var(--input));
}
.data-\[inset\]\:pl-8[data-inset] {
  padding-left: 2rem;
}
.data-\[active\=true\]\:font-medium[data-active="true"] {
  font-weight: 500;
}
.data-\[active\=true\]\:text-accent-foreground[data-active="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active="true"] {
  color: oklch(var(--sidebar-accent-foreground));
}
.data-\[error\=true\]\:text-destructive[data-error="true"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.data-\[placeholder\]\:text-muted-foreground[data-placeholder] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[range-end\=true\]\:text-primary-foreground[data-range-end="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[range-start\=true\]\:text-primary-foreground[data-range-start="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[selected\=true\]\:text-accent-foreground[data-selected="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=checked\]\:text-primary-foreground[data-state="checked"] {
  color: oklch(var(--primary-foreground));
}
.data-\[state\=on\]\:text-accent-foreground[data-state="on"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=open\]\:text-accent-foreground[data-state="open"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=open\]\:text-muted-foreground[data-state="open"] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[variant\=destructive\]\:text-destructive[data-variant="destructive"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.data-\[disabled\=true\]\:opacity-50[data-disabled="true"] {
  opacity: 0.5;
}
.data-\[disabled\]\:opacity-50[data-disabled] {
  opacity: 0.5;
}
.data-\[state\=open\]\:opacity-100[data-state="open"] {
  opacity: 1;
}
.data-\[state\=active\]\:shadow-sm[data-state="active"] {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.data-\[variant\=outline\]\:shadow-xs[data-variant="outline"] {
  --tw-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.data-\[active\=true\]\:ring-\[3px\][data-active="true"] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.data-\[active\=true\]\:ring-ring\/50[data-active="true"] {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  transition-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  transition-duration: 500ms;
}
.data-\[motion\^\=from-\]\:animate-in[data-motion^="from-"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=visible\]\:animate-in[data-state="visible"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[motion\^\=to-\]\:animate-out[data-motion^="to-"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=hidden\]\:animate-out[data-state="hidden"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[motion\^\=from-\]\:fade-in[data-motion^="from-"] {
  --tw-enter-opacity: 0;
}
.data-\[motion\^\=to-\]\:fade-out[data-motion^="to-"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=hidden\]\:fade-out[data-state="hidden"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=visible\]\:fade-in[data-state="visible"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.data-\[state\=open\]\:zoom-in-90[data-state="open"] {
  --tw-enter-scale: .9;
}
.data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion="from-end"] {
  --tw-enter-translate-x: 13rem;
}
.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion="from-start"] {
  --tw-enter-translate-x: -13rem;
}
.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion="to-end"] {
  --tw-exit-translate-x: 13rem;
}
.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion="to-start"] {
  --tw-exit-translate-x: -13rem;
}
.data-\[side\=bottom\]\:slide-in-from-top-2[data-side="bottom"] {
  --tw-enter-translate-y: -0.5rem;
}
.data-\[side\=left\]\:slide-in-from-right-2[data-side="left"] {
  --tw-enter-translate-x: 0.5rem;
}
.data-\[side\=right\]\:slide-in-from-left-2[data-side="right"] {
  --tw-enter-translate-x: -0.5rem;
}
.data-\[side\=top\]\:slide-in-from-bottom-2[data-side="top"] {
  --tw-enter-translate-y: 0.5rem;
}
.data-\[state\=closed\]\:slide-out-to-bottom[data-state="closed"] {
  --tw-exit-translate-y: 100%;
}
.data-\[state\=closed\]\:slide-out-to-left[data-state="closed"] {
  --tw-exit-translate-x: -100%;
}
.data-\[state\=closed\]\:slide-out-to-right[data-state="closed"] {
  --tw-exit-translate-x: 100%;
}
.data-\[state\=closed\]\:slide-out-to-top[data-state="closed"] {
  --tw-exit-translate-y: -100%;
}
.data-\[state\=open\]\:slide-in-from-bottom[data-state="open"] {
  --tw-enter-translate-y: 100%;
}
.data-\[state\=open\]\:slide-in-from-left[data-state="open"] {
  --tw-enter-translate-x: -100%;
}
.data-\[state\=open\]\:slide-in-from-right[data-state="open"] {
  --tw-enter-translate-x: 100%;
}
.data-\[state\=open\]\:slide-in-from-top[data-state="open"] {
  --tw-enter-translate-y: -100%;
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  animation-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  animation-duration: 500ms;
}
.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot="select-value"] > * {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.\*\:data-\[slot\=select-value\]\:flex[data-slot="select-value"] > * {
  display: flex;
}
.\*\:data-\[slot\=select-value\]\:items-center[data-slot="select-value"] > * {
  align-items: center;
}
.\*\:data-\[slot\=select-value\]\:gap-2[data-slot="select-value"] > * {
  gap: 0.5rem;
}
.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot="alert-description"] > * {
  color: oklch(var(--destructive) / 0.9);
}
.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  left: 0px;
}
.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  height: 0.25rem;
}
.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  width: 100%;
}
.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[variant\=outline\]\:first\:border-l:first-child[data-variant="outline"] {
  border-left-width: 1px;
}
.data-\[active\=true\]\:hover\:bg-accent:hover[data-active="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:hover\:bg-accent:hover[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state="open"] {
  background-color: oklch(var(--sidebar-accent));
}
.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state="open"] {
  color: oklch(var(--sidebar-accent-foreground));
}
.data-\[active\=true\]\:focus\:bg-accent:focus[data-active="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:focus\:bg-accent:focus[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant="destructive"] {
  background-color: oklch(var(--destructive) / 0.1);
}
.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant="destructive"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.group[data-disabled="true"] .group-data-\[disabled\=true\]\:pointer-events-none {
  pointer-events: none;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:relative {
  position: relative;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\] {
  left: calc(var(--sidebar-width) * -1);
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\] {
  right: calc(var(--sidebar-width) * -1);
}
.group[data-side="left"] .group-data-\[side\=left\]\:-right-4 {
  right: -1rem;
}
.group[data-side="right"] .group-data-\[side\=right\]\:left-0 {
  left: 0px;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:top-full {
  top: 100%;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:z-10 {
  z-index: 10;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:-mt-8 {
  margin-top: -2rem;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5 {
  margin-top: 0.375rem;
}
.group\/drawer-content[data-vaul-drawer-direction="bottom"] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block {
  display: block;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:hidden {
  display: none;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\] {
  width: calc(var(--sidebar-width-icon) + (--spacing(4)));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\] {
  width: calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px);
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:w-0 {
  width: 0px;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:translate-x-0 {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-side="right"] .group-data-\[side\=right\]\:rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-state="open"] .group-data-\[state\=open\]\:rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:overflow-hidden {
  overflow: hidden;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden {
  overflow: hidden;
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:rounded-lg {
  border-radius: var(--radius);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:border {
  border-width: 1px;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:border {
  border-width: 1px;
}
.group[data-side="left"] .group-data-\[side\=left\]\:border-r {
  border-right-width: 1px;
}
.group[data-side="right"] .group-data-\[side\=right\]\:border-l {
  border-left-width: 1px;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:border-ring {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:border-sidebar-border {
  border-color: oklch(var(--sidebar-border));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover {
  background-color: oklch(var(--popover));
}
.group\/drawer-content[data-vaul-drawer-direction="bottom"] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center {
  text-align: center;
}
.group\/drawer-content[data-vaul-drawer-direction="top"] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center {
  text-align: center;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground {
  color: oklch(var(--popover-foreground));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:opacity-0 {
  opacity: 0;
}
.group[data-disabled="true"] .group-data-\[disabled\=true\]\:opacity-50 {
  opacity: 0.5;
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-\[3px\] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-ring\/50 {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200 {
  transition-duration: 200ms;
  animation-duration: 200ms;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:after\:left-full::after {
  content: var(--tw-content);
  left: 100%;
}
.group[data-collapsible="offcanvas"] .hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover {
  background-color: oklch(var(--sidebar));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.peer\/menu-button[data-size="default"] ~ .peer-data-\[size\=default\]\/menu-button\:top-1\.5 {
  top: 0.375rem;
}
.peer\/menu-button[data-size="lg"] ~ .peer-data-\[size\=lg\]\/menu-button\:top-2\.5 {
  top: 0.625rem;
}
.peer\/menu-button[data-size="sm"] ~ .peer-data-\[size\=sm\]\/menu-button\:top-1 {
  top: 0.25rem;
}
.peer\/menu-button[data-active="true"] ~ .peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground {
  color: oklch(var(--sidebar-accent-foreground));
}
.dark\:border-green-700:is(.dark *) {
  --tw-border-opacity: 1;
  border-color: rgb(21 128 61 / var(--tw-border-opacity, 1));
}
.dark\:border-input:is(.dark *) {
  border-color: oklch(var(--input));
}
.dark\:bg-blue-950\/20:is(.dark *) {
  background-color: rgb(23 37 84 / 0.2);
}
.dark\:bg-destructive\/60:is(.dark *) {
  background-color: oklch(var(--destructive) / 0.6);
}
.dark\:bg-green-950:is(.dark *) {
  --tw-bg-opacity: 1;
  background-color: rgb(5 46 22 / var(--tw-bg-opacity, 1));
}
.dark\:text-amber-400:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(251 191 36 / var(--tw-text-opacity, 1));
}
.dark\:text-blue-200:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(191 219 254 / var(--tw-text-opacity, 1));
}
.dark\:text-emerald-400:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(52 211 153 / var(--tw-text-opacity, 1));
}
.dark\:text-green-200:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(187 247 208 / var(--tw-text-opacity, 1));
}
.dark\:text-green-300:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(134 239 172 / var(--tw-text-opacity, 1));
}
.dark\:text-green-400:is(.dark *) {
  --tw-text-opacity: 1;
  color: rgb(74 222 128 / var(--tw-text-opacity, 1));
}
.dark\:text-muted-foreground:is(.dark *) {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.dark\:hover\:bg-accent\/50:hover:is(.dark *) {
  background-color: oklch(var(--accent) / 0.5);
}
.dark\:hover\:bg-amber-950\/30:hover:is(.dark *) {
  background-color: rgb(69 26 3 / 0.3);
}
.dark\:hover\:bg-emerald-950\/30:hover:is(.dark *) {
  background-color: rgb(2 44 34 / 0.3);
}
.dark\:hover\:bg-green-900:hover:is(.dark *) {
  --tw-bg-opacity: 1;
  background-color: rgb(20 83 45 / var(--tw-bg-opacity, 1));
}
.dark\:hover\:text-accent-foreground:hover:is(.dark *) {
  color: oklch(var(--accent-foreground));
}
.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *) {
  --tw-ring-color: oklch(var(--destructive) / 0.4);
}
.dark\:data-\[state\=active\]\:border-input[data-state="active"]:is(.dark *) {
  border-color: oklch(var(--input));
}
.dark\:data-\[state\=checked\]\:bg-primary[data-state="checked"]:is(.dark *) {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state="checked"]:is(.dark *) {
  background-color: oklch(var(--primary-foreground));
}
.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state="unchecked"]:is(.dark *) {
  background-color: oklch(var(--foreground));
}
.dark\:data-\[state\=active\]\:text-foreground[data-state="active"]:is(.dark *) {
  color: oklch(var(--foreground));
}
.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant="destructive"]:is(.dark *) {
  background-color: oklch(var(--destructive) / 0.2);
}
@media (min-width: 640px) {

  .sm\:block {
    display: block;
  }

  .sm\:inline {
    display: inline;
  }

  .sm\:flex {
    display: flex;
  }

  .sm\:inline-flex {
    display: inline-flex;
  }

  .sm\:hidden {
    display: none;
  }

  .sm\:w-auto {
    width: auto;
  }

  .sm\:max-w-2xl {
    max-width: 42rem;
  }

  .sm\:max-w-lg {
    max-width: 32rem;
  }

  .sm\:max-w-md {
    max-width: 28rem;
  }

  .sm\:max-w-sm {
    max-width: 24rem;
  }

  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .sm\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .sm\:flex-row {
    flex-direction: row;
  }

  .sm\:items-center {
    align-items: center;
  }

  .sm\:justify-end {
    justify-content: flex-end;
  }

  .sm\:justify-center {
    justify-content: center;
  }

  .sm\:justify-between {
    justify-content: space-between;
  }

  .sm\:gap-2\.5 {
    gap: 0.625rem;
  }

  .sm\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }

  .sm\:pl-2\.5 {
    padding-left: 0.625rem;
  }

  .sm\:pr-2\.5 {
    padding-right: 0.625rem;
  }

  .sm\:text-left {
    text-align: left;
  }

  .sm\:text-2xl {
    font-size: 1.5rem;
    line-height: 2rem;
  }

  .sm\:text-4xl {
    font-size: 2.25rem;
    line-height: 2.5rem;
  }

  .data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction="left"] {
    max-width: 24rem;
  }

  .data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction="right"] {
    max-width: 24rem;
  }
}
@media (min-width: 768px) {

  .md\:absolute {
    position: absolute;
  }

  .md\:right-\[12\%\] {
    right: 12%;
  }

  .md\:top-\[10\%\] {
    top: 10%;
  }

  .md\:block {
    display: block;
  }

  .md\:flex {
    display: flex;
  }

  .md\:hidden {
    display: none;
  }

  .md\:h-16 {
    height: 4rem;
  }

  .md\:h-20 {
    height: 5rem;
  }

  .md\:h-28 {
    height: 7rem;
  }

  .md\:h-40 {
    height: 10rem;
  }

  .md\:h-6 {
    height: 1.5rem;
  }

  .md\:min-h-\[80vh\] {
    min-height: 80vh;
  }

  .md\:w-1\/3 {
    width: 33.333333%;
  }

  .md\:w-20 {
    width: 5rem;
  }

  .md\:w-24 {
    width: 6rem;
  }

  .md\:w-56 {
    width: 14rem;
  }

  .md\:w-6 {
    width: 1.5rem;
  }

  .md\:w-80 {
    width: 20rem;
  }

  .md\:w-\[127px\] {
    width: 127px;
  }

  .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] {
    width: var(--radix-navigation-menu-viewport-width);
  }

  .md\:w-auto {
    width: auto;
  }

  .md\:max-w-\[65\%\] {
    max-width: 65%;
  }

  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .md\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .md\:grid-cols-\[auto_1fr\] {
    grid-template-columns: auto 1fr;
  }

  .md\:flex-row {
    flex-direction: row;
  }

  .md\:gap-1\.5 {
    gap: 0.375rem;
  }

  .md\:gap-4 {
    gap: 1rem;
  }

  .md\:gap-8 {
    gap: 2rem;
  }

  .md\:space-y-12 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(3rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(3rem * var(--tw-space-y-reverse));
  }

  .md\:border-b-0 {
    border-bottom-width: 0px;
  }

  .md\:border-r {
    border-right-width: 1px;
  }

  .md\:p-3 {
    padding: 0.75rem;
  }

  .md\:px-12 {
    padding-left: 3rem;
    padding-right: 3rem;
  }

  .md\:py-20 {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }

  .md\:py-24 {
    padding-top: 6rem;
    padding-bottom: 6rem;
  }

  .md\:text-left {
    text-align: left;
  }

  .md\:text-3xl {
    font-size: 1.875rem;
    line-height: 2.25rem;
  }

  .md\:text-4xl {
    font-size: 2.25rem;
    line-height: 2.5rem;
  }

  .md\:text-5xl {
    font-size: 3rem;
    line-height: 1;
  }

  .md\:text-6xl {
    font-size: 3.75rem;
    line-height: 1;
  }

  .md\:text-lg {
    font-size: 1.125rem;
    line-height: 1.75rem;
  }

  .md\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }

  .md\:text-xl {
    font-size: 1.25rem;
    line-height: 1.75rem;
  }

  .md\:opacity-0 {
    opacity: 0;
  }

  .md\:after\:hidden::after {
    content: var(--tw-content);
    display: none;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:m-2 {
    margin: 0.5rem;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:ml-0 {
    margin-left: 0px;
  }

  .peer[data-variant="inset"][data-state="collapsed"] ~ .md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2 {
    margin-left: 0.5rem;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:rounded-xl {
    border-radius: 0.75rem;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:shadow-sm {
    --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
    --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  }
}
@media (min-width: 1024px) {

  .lg\:block {
    display: block;
  }

  .lg\:hidden {
    display: none;
  }

  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .lg\:grid-cols-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  .lg\:grid-cols-\[auto_1fr\] {
    grid-template-columns: auto 1fr;
  }

  .lg\:flex-row {
    flex-direction: row;
  }

  .lg\:px-8 {
    padding-left: 2rem;
    padding-right: 2rem;
  }

  .lg\:text-6xl {
    font-size: 3.75rem;
    line-height: 1;
  }

  .lg\:text-7xl {
    font-size: 4.5rem;
    line-height: 1;
  }
}
@media (min-width: 1280px) {

  .xl\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .xl\:grid-cols-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}
.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) {
  padding-right: 0px;
}
.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.\[\&\:not\(\:first-child\)\]\:pt-4:not(:first-child) {
  padding-top: 1rem;
}
.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox] {
  --tw-translate-y: 2px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\>button\]\:hidden>button {
  display: none;
}
.\[\&\>span\:last-child\]\:truncate>span:last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.\[\&\>span\]\:text-xs>span {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&\>span\]\:opacity-70>span {
  opacity: 0.7;
}
.\[\&\>svg\]\:pointer-events-none>svg {
  pointer-events: none;
}
.\[\&\>svg\]\:size-3>svg {
  width: 0.75rem;
  height: 0.75rem;
}
.\[\&\>svg\]\:size-3\.5>svg {
  width: 0.875rem;
  height: 0.875rem;
}
.\[\&\>svg\]\:size-4>svg {
  width: 1rem;
  height: 1rem;
}
.\[\&\>svg\]\:h-2\.5>svg {
  height: 0.625rem;
}
.\[\&\>svg\]\:h-3>svg {
  height: 0.75rem;
}
.\[\&\>svg\]\:w-2\.5>svg {
  width: 0.625rem;
}
.\[\&\>svg\]\:w-3>svg {
  width: 0.75rem;
}
.\[\&\>svg\]\:shrink-0>svg {
  flex-shrink: 0;
}
.\[\&\>svg\]\:translate-y-0\.5>svg {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\>svg\]\:text-current>svg {
  color: currentColor;
}
.\[\&\>svg\]\:text-muted-foreground>svg {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&\>svg\]\:text-sidebar-accent-foreground>svg {
  color: oklch(var(--sidebar-accent-foreground));
}
.\[\&\>tr\]\:last\:border-b-0:last-child>tr {
  border-bottom-width: 0px;
}
.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text {
  fill: oklch(var(--muted-foreground) / 1);
}
.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke='#fff'] {
  stroke: transparent;
}
.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke='#ccc'] {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector {
  fill: oklch(var(--muted) / 1);
}
.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor {
  fill: oklch(var(--muted) / 1);
}
.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke='#ccc'] {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke='#fff'] {
  stroke: transparent;
}
.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] {
  font-weight: 500;
}
.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {
  padding-top: 0px;
}
.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg {
  width: 1.25rem;
}
.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] {
  height: 3rem;
}
.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg {
  width: 1.25rem;
}
.\[\&_p\]\:leading-relaxed p {
  line-height: 1.625;
}
.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*='size-']) {
  width: 1rem;
  height: 1rem;
}
.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*='text-']) {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&_svg\]\:pointer-events-none svg {
  pointer-events: none;
}
.\[\&_svg\]\:shrink-0 svg {
  flex-shrink: 0;
}
.\[\&_tr\:last-child\]\:border-0 tr:last-child {
  border-width: 0px;
}
.\[\&_tr\]\:border-b tr {
  border-bottom-width: 1px;
}
[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2 {
  right: -0.5rem;
}
[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize {
  cursor: e-resize;
}
[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2 {
  left: -0.5rem;
}
[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize {
  cursor: w-resize;
}
[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
a.\[a\&\]\:hover\:bg-accent:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
a.\[a\&\]\:hover\:bg-destructive\/90:hover {
  background-color: oklch(var(--destructive) / 0.9);
}
a.\[a\&\]\:hover\:bg-primary\/90:hover {
  background-color: oklch(var(--primary) / 0.9);
}
a.\[a\&\]\:hover\:bg-secondary\/90:hover {
  background-color: oklch(var(--secondary) / 0.9);
}
a.\[a\&\]\:hover\:text-accent-foreground:hover {
  color: oklch(var(--accent-foreground));
}
