/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  :root, :host {
    --font-sans: sans-serif;
    --font-serif: serif;
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
    monospace;
    --color-red-500: oklch(63.7% 0.237 25.331);
    --color-slate-500: oklch(55.4% 0.046 257.417);
    --color-gray-500: oklch(55.1% 0.027 264.364);
    --color-white: #fff;
    --spacing: 0.25rem;
    --text-xs: 0.75rem;
    --text-xs--line-height: calc(1 / 0.75);
    --text-sm: 0.875rem;
    --text-sm--line-height: calc(1.25 / 0.875);
    --text-base: 1rem;
    --text-base--line-height: calc(1.5 / 1);
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --text-xl: 1.25rem;
    --text-xl--line-height: calc(1.75 / 1.25);
    --text-2xl: 1.5rem;
    --text-2xl--line-height: calc(2 / 1.5);
    --text-4xl: 2.25rem;
    --text-4xl--line-height: calc(2.5 / 2.25);
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --radius-sm: 0.25rem;
    --radius-md: 0.375rem;
    --radius-lg: 0.5rem;
    --radius-xl: 0.75rem;
    --radius-2xl: 1rem;
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
    --color-component: oklch(67.28% 0.172 266.11);
    --color-component-shadow: oklch(61.94% 0.164 266.06);
    --color-hanzi: oklch(68.81% 0.207 42.11);
    --color-hanzi-shadow: oklch(63.58% 0.186 43.67);
    --color-vocabulary: oklch(58.73% 0.210 286.18);
    --color-vocabulary-shadow: oklch(53.61% 0.197 285.79);
    --color-grammar: oklch(59.54% 0.222 357.68);
    --color-grammar-shadow: oklch(55.64% 0.210 357.93);
    --color-neutral-bg: oklch(68.0% 0.064 267.6);
  }
}
@layer base {
  *, ::after, ::before, ::backdrop, ::file-selector-button {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    border: 0 solid;
  }
  html, :host {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji');
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1, h2, h3, h4, h5, h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b, strong {
    font-weight: bolder;
  }
  code, kbd, samp, pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub, sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol, ul, menu {
    list-style: none;
  }
  img, svg, video, canvas, audio, iframe, embed, object {
    display: block;
    vertical-align: middle;
  }
  img, video {
    max-width: 100%;
    height: auto;
  }
  button, input, select, optgroup, textarea, ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    border-radius: 0;
    background-color: transparent;
    opacity: 1;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not (-webkit-appearance: -apple-pay-button))  or (contain-intrinsic-size: 1px) {
    ::placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button {
    appearance: button;
  }
  ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden='until-found'])) {
    display: none !important;
  }
}
@layer utilities {
  .modal {
    pointer-events: none;
    visibility: hidden;
    position: fixed;
    inset: calc(0.25rem * 0);
    margin: calc(0.25rem * 0);
    display: grid;
    height: 100%;
    max-height: none;
    width: 100%;
    max-width: none;
    align-items: center;
    justify-items: center;
    background-color: transparent;
    padding: calc(0.25rem * 0);
    color: inherit;
    overflow-x: hidden;
    transition: translate 0.3s ease-out, visibility 0.3s allow-discrete, background-color 0.3s ease-out, opacity 0.1s ease-out;
    overflow-y: hidden;
    overscroll-behavior: contain;
    z-index: 999;
    scrollbar-gutter: auto;
    &::backdrop {
      display: none;
    }
    &.modal-open, &[open], &:target {
      pointer-events: auto;
      visibility: visible;
      opacity: 100%;
      background-color: oklch(0% 0 0/ 0.4);
      .modal-box {
        translate: 0 0;
        scale: 1;
        opacity: 1;
      }
    }
    @starting-style {
      &.modal-open, &[open], &:target {
        visibility: hidden;
        opacity: 0%;
      }
    }
  }
  .tooltip {
    position: relative;
    display: inline-block;
    --tt-bg: var(--color-neutral);
    --tt-off: calc(100% + 0.5rem);
    --tt-tail: calc(100% + 1px + 0.25rem);
    > :where(.tooltip-content), &:where([data-tip]):before {
      position: absolute;
      max-width: 20rem;
      border-radius: var(--radius-field);
      padding-inline: calc(0.25rem * 2);
      padding-block: calc(0.25rem * 1);
      text-align: center;
      white-space: normal;
      color: var(--color-neutral-content);
      opacity: 0%;
      font-size: 0.875rem;
      line-height: 1.25;
      background-color: var(--tt-bg);
      width: max-content;
      pointer-events: none;
      z-index: 2;
      --tw-content: attr(data-tip);
      content: var(--tw-content);
    }
    @media (prefers-reduced-motion: no-preference) {
      & > :where(.tooltip-content), &:where([data-tip]):before {
        transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms;
      }
    }
    @media (prefers-reduced-motion: no-preference) {
      &:after {
        transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 75ms;
      }
    }
    &:after {
      position: absolute;
      position: absolute;
      opacity: 0%;
      background-color: var(--tt-bg);
      content: "";
      pointer-events: none;
      width: 0.625rem;
      height: 0.25rem;
      display: block;
      mask-repeat: no-repeat;
      mask-position: -1px 0;
      --mask-tooltip: url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");
      mask-image: var(--mask-tooltip);
    }
    &.tooltip-open, &[data-tip]:not([data-tip=""]):hover, &:not(:has(.tooltip-content:empty)):has(.tooltip-content):hover, &:has(:focus-visible) {
      > .tooltip-content, &[data-tip]:before, &:after {
        opacity: 100%;
        --tt-pos: 0rem;
      }
      @media (prefers-reduced-motion: no-preference) {
        & > .tooltip-content, &[data-tip]:before, &:after {
          transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0s, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0ms;
        }
      }
    }
    > .tooltip-content, &[data-tip]:before {
      transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
      inset: auto auto var(--tt-off) 50%;
    }
    &:after {
      transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
      inset: auto auto var(--tt-tail) 50%;
    }
  }
  .tab {
    position: relative;
    display: inline-flex;
    cursor: pointer;
    appearance: none;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    text-align: center;
    webkit-user-select: none;
    user-select: none;
    &:hover {
      @media (hover: hover) {
        color: var(--color-base-content);
      }
    }
    --tab-p: 1rem;
    --tab-bg: var(--color-base-100);
    --tab-border-color: var(--color-base-300);
    --tab-radius-ss: 0;
    --tab-radius-se: 0;
    --tab-radius-es: 0;
    --tab-radius-ee: 0;
    --tab-order: 0;
    --tab-radius-min: calc(0.75rem - var(--border));
    border-color: #0000;
    order: var(--tab-order);
    height: var(--tab-height);
    font-size: 0.875rem;
    padding-inline-start: var(--tab-p);
    padding-inline-end: var(--tab-p);
    &:is(input[type="radio"]) {
      min-width: fit-content;
      &:after {
        content: attr(aria-label);
      }
    }
    &:is(label) {
      position: relative;
      input {
        position: absolute;
        inset: calc(0.25rem * 0);
        cursor: pointer;
        appearance: none;
        opacity: 0%;
      }
    }
    &:checked, &:is(label:has(:checked)), &:is(.tab-active, [aria-selected=true], [aria-current=true], [aria-current=page]) {
      & + .tab-content {
        display: block;
        height: calc(100% - var(--tab-height) + var(--border));
      }
    }
    &:not(:checked, label:has(:checked), :hover, .tab-active, [aria-selected=true], [aria-current=true], [aria-current=page]) {
      color: var(--color-base-content);
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, var(--color-base-content) 50%, transparent);
      }
    }
    &:not(input):empty {
      flex-grow: 1;
      cursor: default;
    }
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
    }
    &:focus-visible, &:is(label:has(:checked:focus-visible)) {
      outline: 2px solid currentColor;
      outline-offset: -5px;
    }
    &[disabled] {
      pointer-events: none;
      opacity: 40%;
    }
  }
  .menu {
    display: flex;
    width: fit-content;
    flex-direction: column;
    flex-wrap: wrap;
    padding: calc(0.25rem * 2);
    --menu-active-fg: var(--color-neutral-content);
    --menu-active-bg: var(--color-neutral);
    font-size: 0.875rem;
    :where(li ul) {
      position: relative;
      margin-inline-start: calc(0.25rem * 4);
      padding-inline-start: calc(0.25rem * 2);
      white-space: nowrap;
      &:before {
        position: absolute;
        inset-inline-start: calc(0.25rem * 0);
        top: calc(0.25rem * 3);
        bottom: calc(0.25rem * 3);
        background-color: var(--color-base-content);
        opacity: 10%;
        width: var(--border);
        content: "";
      }
    }
    :where(li > .menu-dropdown:not(.menu-dropdown-show)) {
      display: none;
    }
    :where(li:not(.menu-title) > *:not(ul, details, .menu-title, .btn)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) {
      display: grid;
      grid-auto-flow: column;
      align-content: flex-start;
      align-items: center;
      gap: calc(0.25rem * 2);
      border-radius: var(--radius-field);
      padding-inline: calc(0.25rem * 3);
      padding-block: calc(0.25rem * 1.5);
      text-align: start;
      transition-property: color, background-color, box-shadow;
      transition-duration: 0.2s;
      transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
      grid-auto-columns: minmax(auto, max-content) auto max-content;
      text-wrap: balance;
      user-select: none;
    }
    :where(li > details > summary) {
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
      &::-webkit-details-marker {
        display: none;
      }
    }
    :where(li > details > summary), :where(li > .menu-dropdown-toggle) {
      &:after {
        justify-self: flex-end;
        display: block;
        height: 0.375rem;
        width: 0.375rem;
        rotate: -135deg;
        translate: 0 -1px;
        transition-property: rotate, translate;
        transition-duration: 0.2s;
        content: "";
        transform-origin: 50% 50%;
        box-shadow: 2px 2px inset;
        pointer-events: none;
      }
    }
    :where(li > details[open] > summary):after, :where(li > .menu-dropdown-toggle.menu-dropdown-show):after {
      rotate: 45deg;
      translate: 0 1px;
    }
    :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title), li:not(.menu-title, .disabled) > details > summary:not(.menu-title) ):not(.menu-active, :active, .btn) {
      &.menu-focus, &:focus-visible {
        cursor: pointer;
        background-color: var(--color-base-content);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
        }
        color: var(--color-base-content);
        --tw-outline-style: none;
        outline-style: none;
        @media (forced-colors: active) {
          outline: 2px solid transparent;
          outline-offset: 2px;
        }
      }
    }
    :where( li:not(.menu-title, .disabled) > *:not(ul, details, .menu-title):not(.menu-active, :active, .btn):hover, li:not(.menu-title, .disabled) > details > summary:not(.menu-title):not(.menu-active, :active, .btn):hover ) {
      cursor: pointer;
      background-color: var(--color-base-content);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
      }
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
      box-shadow: 0 1px oklch(0% 0 0 / 0.01) inset, 0 -1px oklch(100% 0 0 / 0.01) inset;
    }
    :where(li:empty) {
      background-color: var(--color-base-content);
      opacity: 10%;
      margin: 0.5rem 1rem;
      height: 1px;
    }
    :where(li) {
      position: relative;
      display: flex;
      flex-shrink: 0;
      flex-direction: column;
      flex-wrap: wrap;
      align-items: stretch;
      .badge {
        justify-self: flex-end;
      }
      & > *:not(ul, .menu-title, details, .btn):active, & > *:not(ul, .menu-title, details, .btn).menu-active, & > details > summary:active {
        --tw-outline-style: none;
        outline-style: none;
        @media (forced-colors: active) {
          outline: 2px solid transparent;
          outline-offset: 2px;
        }
        color: var(--menu-active-fg);
        background-color: var(--menu-active-bg);
        background-size: auto, calc(var(--noise) * 100%);
        background-image: none, var(--fx-noise);
        &:not(&:active) {
          box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg);
        }
      }
      &.menu-disabled {
        pointer-events: none;
        color: var(--color-base-content);
        @supports (color: color-mix(in lab, red, red)) {
          color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
        }
      }
    }
    .dropdown:focus-within {
      .menu-dropdown-toggle:after {
        rotate: 45deg;
        translate: 0 1px;
      }
    }
    .dropdown-content {
      margin-top: calc(0.25rem * 2);
      padding: calc(0.25rem * 2);
      &:before {
        display: none;
      }
    }
  }
  .collapse-arrow {
    > .collapse-title:after {
      position: absolute;
      display: block;
      height: 0.5rem;
      width: 0.5rem;
      transform: translateY(-100%) rotate(45deg);
      @media (prefers-reduced-motion: no-preference) {
        transition-property: all;
        transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
        transition-duration: 0.2s;
      }
      top: 1.9rem;
      inset-inline-end: 1.4rem;
      content: "";
      transform-origin: 75% 75%;
      box-shadow: 2px 2px;
      pointer-events: none;
    }
  }
  .dropdown {
    position: relative;
    display: inline-block;
    position-area: var(--anchor-v, bottom) var(--anchor-h, span-right);
    & > *:not(summary):focus {
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
    }
    .dropdown-content {
      position: absolute;
    }
    &:not(details, .dropdown-open, .dropdown-hover:hover, :focus-within) {
      .dropdown-content {
        display: none;
        transform-origin: top;
        opacity: 0%;
        scale: 95%;
      }
    }
    &[popover], .dropdown-content {
      z-index: 999;
      @media (prefers-reduced-motion: no-preference) {
        animation: dropdown 0.2s;
        transition-property: opacity, scale, display;
        transition-behavior: allow-discrete;
        transition-duration: 0.2s;
        transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
      }
    }
    @starting-style {
      &[popover], .dropdown-content {
        scale: 95%;
        opacity: 0;
      }
    }
    &.dropdown-open, &:not(.dropdown-hover):focus, &:focus-within {
      > [tabindex]:first-child {
        pointer-events: none;
      }
      .dropdown-content {
        opacity: 100%;
      }
    }
    &.dropdown-hover:hover {
      .dropdown-content {
        opacity: 100%;
        scale: 100%;
      }
    }
    &:is(details) {
      summary {
        &::-webkit-details-marker {
          display: none;
        }
      }
    }
    &.dropdown-open, &:focus, &:focus-within {
      .dropdown-content {
        scale: 100%;
      }
    }
    &:where([popover]) {
      background: #0000;
    }
    &[popover] {
      position: fixed;
      color: inherit;
      @supports not (position-area: bottom) {
        margin: auto;
        &.dropdown-open:not(:popover-open) {
          display: none;
          transform-origin: top;
          opacity: 0%;
          scale: 95%;
        }
        &::backdrop {
          background-color: color-mix(in oklab, #000 30%, #0000);
        }
      }
      &:not(.dropdown-open, :popover-open) {
        display: none;
        transform-origin: top;
        opacity: 0%;
        scale: 95%;
      }
    }
  }
  .btn {
    :where(&) {
      width: unset;
    }
    display: inline-flex;
    flex-shrink: 0;
    cursor: pointer;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: calc(0.25rem * 1.5);
    text-align: center;
    vertical-align: middle;
    outline-offset: 2px;
    webkit-user-select: none;
    user-select: none;
    padding-inline: var(--btn-p);
    color: var(--btn-fg);
    --tw-prose-links: var(--btn-fg);
    height: var(--size);
    font-size: var(--fontsize, 0.875rem);
    font-weight: 600;
    outline-color: var(--btn-color, var(--color-base-content));
    transition-property: color, background-color, border-color, box-shadow;
    transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
    transition-duration: 0.2s;
    border-start-start-radius: var(--join-ss, var(--radius-field));
    border-start-end-radius: var(--join-se, var(--radius-field));
    border-end-start-radius: var(--join-es, var(--radius-field));
    border-end-end-radius: var(--join-ee, var(--radius-field));
    background-color: var(--btn-bg);
    background-size: auto, calc(var(--noise) * 100%);
    background-image: none, var(--btn-noise);
    border-width: var(--border);
    border-style: solid;
    border-color: var(--btn-border);
    text-shadow: 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 0.15));
    touch-action: manipulation;
    box-shadow: 0 0.5px 0 0.5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);
    --size: calc(var(--size-field, 0.25rem) * 10);
    --btn-bg: var(--btn-color, var(--color-base-200));
    --btn-fg: var(--color-base-content);
    --btn-p: 1rem;
    --btn-border: var(--btn-bg);
    @supports (color: color-mix(in lab, red, red)) {
      --btn-border: color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%));
    }
    --btn-shadow: 0 3px 2px -2px var(--btn-bg),
    0 4px 3px -2px var(--btn-bg);
    @supports (color: color-mix(in lab, red, red)) {
      --btn-shadow: 0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000),
    0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000);
    }
    --btn-noise: var(--fx-noise);
    .prose & {
      text-decoration-line: none;
    }
    @media (hover: hover) {
      &:hover {
        --btn-bg: var(--btn-color, var(--color-base-200));
        @supports (color: color-mix(in lab, red, red)) {
          --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%);
        }
      }
    }
    &:focus-visible, &:has(:focus-visible) {
      outline-width: 2px;
      outline-style: solid;
      isolation: isolate;
    }
    &:active:not(.btn-active) {
      translate: 0 0.5px;
      --btn-bg: var(--btn-color, var(--color-base-200));
      @supports (color: color-mix(in lab, red, red)) {
        --btn-bg: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 5%);
      }
      --btn-border: var(--btn-color, var(--color-base-200));
      @supports (color: color-mix(in lab, red, red)) {
        --btn-border: color-mix(in oklab, var(--btn-color, var(--color-base-200)), #000 7%);
      }
      --btn-shadow: 0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);
    }
    &:is(:disabled, [disabled], .btn-disabled) {
      &:not(.btn-link, .btn-ghost) {
        background-color: var(--color-base-content);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
        }
        box-shadow: none;
      }
      pointer-events: none;
      --btn-border: #0000;
      --btn-noise: none;
      --btn-fg: var(--color-base-content);
      @supports (color: color-mix(in lab, red, red)) {
        --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000);
      }
      @media (hover: hover) {
        &:hover {
          pointer-events: none;
          background-color: var(--color-neutral);
          @supports (color: color-mix(in lab, red, red)) {
            background-color: color-mix(in oklab, var(--color-neutral) 20%, transparent);
          }
          --btn-border: #0000;
          --btn-fg: var(--color-base-content);
          @supports (color: color-mix(in lab, red, red)) {
            --btn-fg: color-mix(in oklch, var(--color-base-content) 20%, #0000);
          }
        }
      }
    }
    &:is(input[type="checkbox"], input[type="radio"]) {
      appearance: none;
      &::after {
        content: attr(aria-label);
      }
    }
    &:where(input:checked:not(.filter .btn)) {
      --btn-color: var(--color-primary);
      --btn-fg: var(--color-primary-content);
      isolation: isolate;
    }
  }
  .loading {
    pointer-events: none;
    display: inline-block;
    aspect-ratio: 1 / 1;
    background-color: currentColor;
    vertical-align: middle;
    width: calc(var(--size-selector, 0.25rem) * 6);
    mask-size: 100%;
    mask-repeat: no-repeat;
    mask-position: center;
    mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
  }
  .collapse {
    &:not(td, tr, colgroup) {
      visibility: visible;
    }
    position: relative;
    display: grid;
    overflow: hidden;
    border-radius: var(--radius-box, 1rem);
    width: 100%;
    grid-template-rows: max-content 0fr;
    isolation: isolate;
    @media (prefers-reduced-motion: no-preference) {
      transition: grid-template-rows 0.2s;
    }
    > input:is([type="checkbox"], [type="radio"]) {
      grid-column-start: 1;
      grid-row-start: 1;
      appearance: none;
      opacity: 0;
      z-index: 1;
      width: 100%;
      padding: 1rem;
      padding-inline-end: 3rem;
      min-height: 1lh;
      transition: background-color 0.2s ease-out;
    }
    &:is([open], :focus:not(.collapse-close)), &:not(.collapse-close):has(> input:is([type="checkbox"], [type="radio"]):checked) {
      grid-template-rows: max-content 1fr;
    }
    &:is([open], :focus:not(.collapse-close)) > .collapse-content, &:not(.collapse-close) > :where(input:is([type="checkbox"], [type="radio"]):checked ~ .collapse-content) {
      visibility: visible;
      min-height: fit-content;
    }
    &:focus-visible, &:has(> input:is([type="checkbox"], [type="radio"]):focus-visible) {
      outline-color: var(--color-base-content);
      outline-style: solid;
      outline-width: 2px;
      outline-offset: 2px;
    }
    &:not(.collapse-close) {
      > input[type="checkbox"], > input[type="radio"]:not(:checked), > .collapse-title {
        cursor: pointer;
      }
    }
    &:focus:not(.collapse-close, .collapse[open]) > .collapse-title {
      cursor: unset;
    }
    &:is([open], :focus:not(.collapse-close)) > :where(.collapse-content), &:not(.collapse-close) > :where(input:is([type="checkbox"], [type="radio"]):checked ~ .collapse-content) {
      padding-bottom: 1rem;
      @media (prefers-reduced-motion: no-preference) {
        transition: padding 0.2s ease-out, background-color 0.2s ease-out;
      }
    }
    &:is([open]) {
      &.collapse-arrow {
        > .collapse-title:after {
          @media (prefers-reduced-motion: no-preference) {
            transform: translateY(-50%) rotate(225deg);
          }
        }
      }
    }
    &.collapse-open {
      &.collapse-arrow {
        > .collapse-title:after {
          @media (prefers-reduced-motion: no-preference) {
            transform: translateY(-50%) rotate(225deg);
          }
        }
      }
      &.collapse-plus {
        > .collapse-title:after {
          content: "−";
        }
      }
    }
    &.collapse-arrow:focus:not(.collapse-close) {
      > .collapse-title:after {
        transform: translateY(-50%) rotate(225deg);
      }
    }
    &.collapse-arrow:not(.collapse-close) {
      > input:is([type="checkbox"], [type="radio"]):checked ~ .collapse-title:after {
        transform: translateY(-50%) rotate(225deg);
      }
    }
    &[open] {
      &.collapse-plus {
        > .collapse-title:after {
          content: "−";
        }
      }
    }
    &.collapse-plus:focus:not(.collapse-close) {
      > .collapse-title:after {
        content: "−";
      }
    }
    &.collapse-plus:not(.collapse-close) {
      > input:is([type="checkbox"], [type="radio"]):checked ~ .collapse-title:after {
        content: "−";
      }
    }
    &:is(details) {
      width: 100%;
      & summary {
        position: relative;
        display: block;
        &::-webkit-details-marker {
          display: none;
        }
      }
    }
    &:is(details) summary {
      outline: none;
    }
  }
  .collapse-content {
    grid-column-start: 1;
    grid-row-start: 1;
    visibility: hidden;
    grid-column-start: 1;
    grid-row-start: 2;
    min-height: 0;
    padding-left: 1rem;
    padding-right: 1rem;
    cursor: unset;
    @media (prefers-reduced-motion: no-preference) {
      transition: visibility 0.2s, padding 0.2s ease-out, background-color 0.2s ease-out;
    }
  }
  .validator-hint {
    visibility: hidden;
    margin-top: calc(0.25rem * 2);
    font-size: 0.75rem;
  }
  .validator {
    &:user-valid, &:has(:user-valid) {
      &, &:focus, &:checked, &[aria-checked="true"], &:focus-within {
        --input-color: var(--color-success);
      }
    }
    &:user-invalid, &:has(:user-invalid), &[aria-invalid]:not([aria-invalid="false"]) {
      &, &:focus, &:checked, &[aria-checked="true"], &:focus-within {
        --input-color: var(--color-error);
      }
      & ~ .validator-hint {
        visibility: visible;
        display: block;
        color: var(--color-error);
      }
    }
  }
  .collapse {
    visibility: collapse;
  }
  .list {
    display: flex;
    flex-direction: column;
    font-size: 0.875rem;
    :where(.list-row) {
      --list-grid-cols: minmax(0, auto) 1fr;
      position: relative;
      display: grid;
      grid-auto-flow: column;
      gap: calc(0.25rem * 4);
      border-radius: var(--radius-box);
      padding: calc(0.25rem * 4);
      word-break: break-word;
      grid-template-columns: var(--list-grid-cols);
      &:has(.list-col-grow:nth-child(1)) {
        --list-grid-cols: 1fr;
      }
      &:has(.list-col-grow:nth-child(2)) {
        --list-grid-cols: minmax(0, auto) 1fr;
      }
      &:has(.list-col-grow:nth-child(3)) {
        --list-grid-cols: minmax(0, auto) minmax(0, auto) 1fr;
      }
      &:has(.list-col-grow:nth-child(4)) {
        --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr;
      }
      &:has(.list-col-grow:nth-child(5)) {
        --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr;
      }
      &:has(.list-col-grow:nth-child(6)) {
        --list-grid-cols: minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto)
        minmax(0, auto) 1fr;
      }
      :not(.list-col-wrap) {
        grid-row-start: 1;
      }
    }
    & > :not(:last-child) {
      &.list-row, .list-row {
        &:after {
          content: "";
          border-bottom: var(--border) solid;
          inset-inline: var(--radius-box);
          position: absolute;
          bottom: calc(0.25rem * 0);
          border-color: var(--color-base-content);
          @supports (color: color-mix(in lab, red, red)) {
            border-color: color-mix(in oklab, var(--color-base-content) 5%, transparent);
          }
        }
      }
    }
  }
  .input {
    cursor: text;
    border: var(--border) solid #0000;
    position: relative;
    display: inline-flex;
    flex-shrink: 1;
    appearance: none;
    align-items: center;
    gap: calc(0.25rem * 2);
    background-color: var(--color-base-100);
    padding-inline: calc(0.25rem * 3);
    vertical-align: middle;
    white-space: nowrap;
    width: clamp(3rem, 20rem, 100%);
    height: var(--size);
    font-size: 0.875rem;
    touch-action: manipulation;
    border-start-start-radius: var(--join-ss, var(--radius-field));
    border-start-end-radius: var(--join-se, var(--radius-field));
    border-end-start-radius: var(--join-es, var(--radius-field));
    border-end-end-radius: var(--join-ee, var(--radius-field));
    border-color: var(--input-color);
    box-shadow: 0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
    @supports (color: color-mix(in lab, red, red)) {
      box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
    }
    --size: calc(var(--size-field, 0.25rem) * 10);
    --input-color: var(--color-base-content);
    @supports (color: color-mix(in lab, red, red)) {
      --input-color: color-mix(in oklab, var(--color-base-content) 20%, #0000);
    }
    &:where(input) {
      display: inline-flex;
    }
    :where(input) {
      display: inline-flex;
      height: 100%;
      width: 100%;
      appearance: none;
      background-color: transparent;
      border: none;
      &:focus, &:focus-within {
        --tw-outline-style: none;
        outline-style: none;
        @media (forced-colors: active) {
          outline: 2px solid transparent;
          outline-offset: 2px;
        }
      }
    }
    :where(input[type="url"]), :where(input[type="email"]) {
      direction: ltr;
    }
    :where(input[type="date"]) {
      display: inline-flex;
    }
    &:focus, &:focus-within {
      --input-color: var(--color-base-content);
      box-shadow: 0 1px var(--input-color);
      @supports (color: color-mix(in lab, red, red)) {
        box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000);
      }
      outline: 2px solid var(--input-color);
      outline-offset: 2px;
      isolation: isolate;
      z-index: 1;
    }
    &:has(> input[disabled]), &:is(:disabled, [disabled]), fieldset:disabled & {
      cursor: not-allowed;
      border-color: var(--color-base-200);
      background-color: var(--color-base-200);
      color: var(--color-base-content);
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, var(--color-base-content) 40%, transparent);
      }
      &::placeholder {
        color: var(--color-base-content);
        @supports (color: color-mix(in lab, red, red)) {
          color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
        }
      }
      box-shadow: none;
    }
    &:has(> input[disabled]) > input[disabled] {
      cursor: not-allowed;
    }
    &::-webkit-date-and-time-value {
      text-align: inherit;
    }
    &[type="number"] {
      &::-webkit-inner-spin-button {
        margin-block: calc(0.25rem * -3);
        margin-inline-end: calc(0.25rem * -3);
      }
    }
    &::-webkit-calendar-picker-indicator {
      position: absolute;
      inset-inline-end: 0.75em;
    }
    &:has(> input[type="date"]) {
      :where(input[type="date"]) {
        display: inline-flex;
        webkit-appearance: none;
        appearance: none;
      }
      input[type="date"]::-webkit-calendar-picker-indicator {
        position: absolute;
        inset-inline-end: 0.75em;
        width: 1em;
        height: 1em;
        cursor: pointer;
      }
    }
  }
  .indicator {
    position: relative;
    display: inline-flex;
    width: max-content;
    :where(.indicator-item) {
      z-index: 1;
      position: absolute;
      white-space: nowrap;
      top: var(--indicator-t, 0);
      bottom: var(--indicator-b, auto);
      left: var(--indicator-s, auto);
      right: var(--indicator-e, 0);
      translate: var(--indicator-x, 50%) var(--indicator-y, -50%);
    }
  }
  .select {
    border: var(--border) solid #0000;
    position: relative;
    display: inline-flex;
    flex-shrink: 1;
    appearance: none;
    align-items: center;
    gap: calc(0.25rem * 1.5);
    background-color: var(--color-base-100);
    padding-inline-start: calc(0.25rem * 3);
    padding-inline-end: calc(0.25rem * 7);
    vertical-align: middle;
    width: clamp(3rem, 20rem, 100%);
    height: var(--size);
    font-size: 0.875rem;
    touch-action: manipulation;
    border-start-start-radius: var(--join-ss, var(--radius-field));
    border-start-end-radius: var(--join-se, var(--radius-field));
    border-end-start-radius: var(--join-es, var(--radius-field));
    border-end-end-radius: var(--join-ee, var(--radius-field));
    background-image: linear-gradient(45deg, #0000 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, #0000 50%);
    background-position: calc(100% - 20px) calc(1px + 50%), calc(100% - 16.1px) calc(1px + 50%);
    background-size: 4px 4px, 4px 4px;
    background-repeat: no-repeat;
    text-overflow: ellipsis;
    box-shadow: 0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
    @supports (color: color-mix(in lab, red, red)) {
      box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
    }
    border-color: var(--input-color);
    --input-color: var(--color-base-content);
    @supports (color: color-mix(in lab, red, red)) {
      --input-color: color-mix(in oklab, var(--color-base-content) 20%, #0000);
    }
    --size: calc(var(--size-field, 0.25rem) * 10);
    [dir="rtl"] & {
      background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%);
    }
    select {
      margin-inline-start: calc(0.25rem * -3);
      margin-inline-end: calc(0.25rem * -7);
      width: calc(100% + 2.75rem);
      appearance: none;
      padding-inline-start: calc(0.25rem * 3);
      padding-inline-end: calc(0.25rem * 7);
      height: calc(100% - calc(var(--border) * 2));
      align-items: center;
      background: inherit;
      border-radius: inherit;
      border-style: none;
      &:focus, &:focus-within {
        --tw-outline-style: none;
        outline-style: none;
        @media (forced-colors: active) {
          outline: 2px solid transparent;
          outline-offset: 2px;
        }
      }
      &:not(:last-child) {
        margin-inline-end: calc(0.25rem * -5.5);
        background-image: none;
      }
    }
    &:focus, &:focus-within {
      --input-color: var(--color-base-content);
      box-shadow: 0 1px var(--input-color);
      @supports (color: color-mix(in lab, red, red)) {
        box-shadow: 0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000);
      }
      outline: 2px solid var(--input-color);
      outline-offset: 2px;
      isolation: isolate;
      z-index: 1;
    }
    &:has(> select[disabled]), &:is(:disabled, [disabled]), fieldset:disabled & {
      cursor: not-allowed;
      border-color: var(--color-base-200);
      background-color: var(--color-base-200);
      color: var(--color-base-content);
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, var(--color-base-content) 40%, transparent);
      }
      &::placeholder {
        color: var(--color-base-content);
        @supports (color: color-mix(in lab, red, red)) {
          color: color-mix(in oklab, var(--color-base-content) 20%, transparent);
        }
      }
    }
    &:has(> select[disabled]) > select[disabled] {
      cursor: not-allowed;
    }
    &, & select {
      @supports (appearance: base-select) {
        appearance: base-select;
      }
      @supports (appearance: base-select) {
        &::picker(select) {
          appearance: base-select;
        }
      }
      &::picker(select) {
        color: inherit;
        max-height: min(24rem, 70dvh);
        border: var(--border) solid var(--color-base-200);
        margin-block: calc(0.25rem * 2);
        border-radius: var(--radius-box);
        padding: calc(0.25rem * 2);
        background-color: inherit;
        box-shadow: 0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/0.2);
        box-shadow: 0 20px 25px -5px rgb(0 0 0 / calc(var(--depth) * 0.1)), 0 8px 10px -6px rgb(0 0 0 / calc(var(--depth) * 0.1));
      }
      &::picker-icon {
        display: none;
      }
      optgroup {
        padding-top: 0.5em;
        option {
          &:nth-child(1) {
            margin-top: 0.5em;
          }
        }
      }
      option {
        border-radius: var(--radius-field);
        padding-inline: calc(0.25rem * 3);
        padding-block: calc(0.25rem * 1.5);
        transition-property: color, background-color;
        transition-duration: 0.2s;
        transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
        &:not(:disabled) {
          &:hover, &:focus-visible {
            cursor: pointer;
            background-color: var(--color-base-content);
            @supports (color: color-mix(in lab, red, red)) {
              background-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
            }
            --tw-outline-style: none;
            outline-style: none;
            @media (forced-colors: active) {
              outline: 2px solid transparent;
              outline-offset: 2px;
            }
          }
          &:active {
            background-color: var(--color-neutral);
            color: var(--color-neutral-content);
            box-shadow: 0 2px calc(var(--depth) * 3px) -2px var(--color-neutral);
          }
        }
      }
    }
  }
  .card {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: var(--radius-box);
    outline-width: 2px;
    transition: outline 0.2s ease-in-out;
    outline: 0 solid #0000;
    outline-offset: 2px;
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
    }
    &:focus-visible {
      outline-color: currentColor;
    }
    :where(figure:first-child) {
      overflow: hidden;
      border-start-start-radius: inherit;
      border-start-end-radius: inherit;
      border-end-start-radius: unset;
      border-end-end-radius: unset;
    }
    :where(figure:last-child) {
      overflow: hidden;
      border-start-start-radius: unset;
      border-start-end-radius: unset;
      border-end-start-radius: inherit;
      border-end-end-radius: inherit;
    }
    &:where(.card-border) {
      border: var(--border) solid var(--color-base-200);
    }
    &:where(.card-dash) {
      border: var(--border) dashed var(--color-base-200);
    }
    &.image-full {
      display: grid;
      > * {
        grid-column-start: 1;
        grid-row-start: 1;
      }
      > .card-body {
        position: relative;
        color: var(--color-neutral-content);
      }
      :where(figure) {
        overflow: hidden;
        border-radius: inherit;
      }
      > figure img {
        height: 100%;
        object-fit: cover;
        filter: brightness(28%);
      }
    }
    figure {
      display: flex;
      align-items: center;
      justify-content: center;
    }
    &:has(> input:is(input[type="checkbox"], input[type="radio"])) {
      cursor: pointer;
      user-select: none;
    }
    &:has(> :checked) {
      outline: 2px solid currentColor;
    }
  }
  .swap {
    position: relative;
    display: inline-grid;
    cursor: pointer;
    place-content: center;
    vertical-align: middle;
    webkit-user-select: none;
    user-select: none;
    input {
      appearance: none;
      border: none;
    }
    > * {
      grid-column-start: 1;
      grid-row-start: 1;
      @media (prefers-reduced-motion: no-preference) {
        transition-property: transform, rotate, opacity;
        transition-duration: 0.2s;
        transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
      }
    }
    .swap-on, .swap-indeterminate, input:indeterminate ~ .swap-on {
      opacity: 0%;
    }
    input:is(:checked, :indeterminate) {
      & ~ .swap-off {
        opacity: 0%;
      }
    }
    input:checked ~ .swap-on, input:indeterminate ~ .swap-indeterminate {
      opacity: 100%;
      backface-visibility: visible;
    }
  }
  .collapse-title {
    grid-column-start: 1;
    grid-row-start: 1;
    position: relative;
    width: 100%;
    padding: 1rem;
    padding-inline-end: 3rem;
    min-height: 1lh;
    transition: background-color 0.2s ease-out;
  }
  .checkbox {
    border: var(--border) solid var(--input-color, var(--color-base-content));
    @supports (color: color-mix(in lab, red, red)) {
      border: var(--border) solid var(--input-color, color-mix(in oklab, var(--color-base-content) 20%, #0000));
    }
    position: relative;
    display: inline-block;
    flex-shrink: 0;
    cursor: pointer;
    appearance: none;
    border-radius: var(--radius-selector);
    padding: calc(0.25rem * 1);
    vertical-align: middle;
    color: var(--color-base-content);
    box-shadow: 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 0 #0000 inset, 0 0 #0000;
    transition: background-color 0.2s, box-shadow 0.2s;
    --size: calc(var(--size-selector, 0.25rem) * 6);
    width: var(--size);
    height: var(--size);
    background-size: auto, calc(var(--noise) * 100%);
    background-image: none, var(--fx-noise);
    &:before {
      --tw-content: "";
      content: var(--tw-content);
      display: block;
      width: 100%;
      height: 100%;
      rotate: 45deg;
      background-color: currentColor;
      opacity: 0%;
      transition: clip-path 0.3s, opacity 0.1s, rotate 0.3s, translate 0.3s;
      transition-delay: 0.1s;
      clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 70% 80%, 70% 100%);
      box-shadow: 0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
      font-size: 1rem;
      line-height: 0.75;
    }
    &:focus-visible {
      outline: 2px solid var(--input-color, currentColor);
      outline-offset: 2px;
    }
    &:checked, &[aria-checked="true"] {
      background-color: var(--input-color, #0000);
      box-shadow: 0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1));
      &:before {
        clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 0%, 70% 0%, 70% 100%);
        opacity: 100%;
      }
      @media (forced-colors: active) {
        &:before {
          rotate: 0deg;
          background-color: transparent;
          --tw-content: "✔︎";
          clip-path: none;
        }
      }
      @media print {
        &:before {
          rotate: 0deg;
          background-color: transparent;
          --tw-content: "✔︎";
          clip-path: none;
        }
      }
    }
    &:indeterminate {
      background-color: var(--input-color, var(--color-base-content));
      @supports (color: color-mix(in lab, red, red)) {
        background-color: var(--input-color, color-mix(in oklab, var(--color-base-content) 20%, #0000));
      }
      &:before {
        rotate: 0deg;
        opacity: 100%;
        translate: 0 -35%;
        clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 80% 80%, 80% 100%);
      }
    }
    &:disabled {
      cursor: not-allowed;
      opacity: 20%;
    }
  }
  .radio {
    position: relative;
    display: inline-block;
    flex-shrink: 0;
    cursor: pointer;
    appearance: none;
    border-radius: calc(infinity * 1px);
    padding: calc(0.25rem * 1);
    vertical-align: middle;
    border: var(--border) solid var(--input-color, currentColor);
    @supports (color: color-mix(in lab, red, red)) {
      border: var(--border) solid var(--input-color, color-mix(in srgb, currentColor 20%, #0000));
    }
    box-shadow: 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset;
    --size: calc(var(--size-selector, 0.25rem) * 6);
    width: var(--size);
    height: var(--size);
    color: var(--input-color, currentColor);
    &:before {
      display: block;
      width: 100%;
      height: 100%;
      border-radius: calc(infinity * 1px);
      --tw-content: "";
      content: var(--tw-content);
      background-size: auto, calc(var(--noise) * 100%);
      background-image: none, var(--fx-noise);
    }
    &:focus-visible {
      outline: 2px solid currentColor;
    }
    &:checked, &[aria-checked="true"] {
      border-color: currentColor;
      background-color: var(--color-base-100);
      @media (prefers-reduced-motion: no-preference) {
        animation: radio 0.2s ease-out;
      }
      &:before {
        background-color: currentColor;
        box-shadow: 0 -1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1));
      }
      @media (forced-colors: active) {
        &:before {
          outline-style: var(--tw-outline-style);
          outline-width: 1px;
          outline-offset: calc(1px * -1);
        }
      }
      @media print {
        &:before {
          outline: 0.25rem solid;
          outline-offset: -1rem;
        }
      }
    }
    &:disabled {
      cursor: not-allowed;
      opacity: 20%;
    }
  }
  .progress {
    position: relative;
    height: calc(0.25rem * 2);
    width: 100%;
    appearance: none;
    overflow: hidden;
    border-radius: var(--radius-box);
    background-color: currentColor;
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, currentColor 20%, transparent);
    }
    color: var(--color-base-content);
    &:indeterminate {
      background-image: repeating-linear-gradient( 90deg, currentColor -1%, currentColor 10%, #0000 10%, #0000 90% );
      background-size: 200%;
      background-position-x: 15%;
      @media (prefers-reduced-motion: no-preference) {
        animation: progress 5s ease-in-out infinite;
      }
      @supports (-moz-appearance: none) {
        &::-moz-progress-bar {
          background-color: transparent;
          @media (prefers-reduced-motion: no-preference) {
            animation: progress 5s ease-in-out infinite;
            background-image: repeating-linear-gradient( 90deg, currentColor -1%, currentColor 10%, #0000 10%, #0000 90% );
            background-size: 200%;
            background-position-x: 15%;
          }
        }
      }
    }
    @supports (-moz-appearance: none) {
      &::-moz-progress-bar {
        border-radius: var(--radius-box);
        background-color: currentColor;
      }
    }
    @supports (-webkit-appearance: none) {
      &::-webkit-progress-bar {
        border-radius: var(--radius-box);
        background-color: transparent;
      }
      &::-webkit-progress-value {
        border-radius: var(--radius-box);
        background-color: currentColor;
      }
    }
  }
  .fixed {
    position: fixed;
  }
  .static {
    position: static;
  }
  .tooltip-bottom {
    > .tooltip-content, &[data-tip]:before {
      transform: translateX(-50%) translateY(var(--tt-pos, -0.25rem));
      inset: var(--tt-off) auto auto 50%;
    }
    &:after {
      transform: translateX(-50%) translateY(var(--tt-pos, -0.25rem)) rotate(180deg);
      inset: var(--tt-tail) auto auto 50%;
    }
  }
  .tooltip-top {
    > .tooltip-content, &[data-tip]:before {
      transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
      inset: auto auto var(--tt-off) 50%;
    }
    &:after {
      transform: translateX(-50%) translateY(var(--tt-pos, 0.25rem));
      inset: auto auto var(--tt-tail) 50%;
    }
  }
  .inset-0 {
    inset: calc(var(--spacing) * 0);
  }
  .dropdown-center {
    --anchor-h: center;
    :where(.dropdown-content) {
      inset-inline-end: calc(1/2 * 100%);
      translate: 50% 0;
      [dir="rtl"] & {
        translate: -50% 0;
      }
    }
    &.dropdown-left {
      --anchor-h: left;
      --anchor-v: center;
      .dropdown-content {
        top: auto;
        bottom: calc(1/2 * 100%);
        translate: 0 50%;
      }
    }
    &.dropdown-right {
      --anchor-h: right;
      --anchor-v: center;
      .dropdown-content {
        top: auto;
        bottom: calc(1/2 * 100%);
        translate: 0 50%;
      }
    }
  }
  .dropdown-end {
    --anchor-h: span-left;
    :where(.dropdown-content) {
      inset-inline-end: calc(0.25rem * 0);
      translate: 0 0;
      [dir="rtl"] & {
        translate: 0 0;
      }
    }
    &.dropdown-left {
      --anchor-h: left;
      --anchor-v: span-top;
      .dropdown-content {
        top: auto;
        bottom: calc(0.25rem * 0);
      }
    }
    &.dropdown-right {
      --anchor-h: right;
      --anchor-v: span-top;
      .dropdown-content {
        top: auto;
        bottom: calc(0.25rem * 0);
      }
    }
  }
  .stack {
    display: inline-grid;
    grid-template-columns: 3px 4px 1fr 4px 3px;
    grid-template-rows: 3px 4px 1fr 4px 3px;
    & > * {
      height: 100%;
      width: 100%;
      &:nth-child(n + 2) {
        width: 100%;
        opacity: 70%;
      }
      &:nth-child(2) {
        z-index: 2;
        opacity: 90%;
      }
      &:nth-child(1) {
        z-index: 3;
        width: 100%;
      }
    }
    &, &.stack-bottom {
      > * {
        grid-column: 3 / 4;
        grid-row: 3 / 6;
        &:nth-child(2) {
          grid-column: 2 / 5;
          grid-row: 2 / 5;
        }
        &:nth-child(1) {
          grid-column: 1 / 6;
          grid-row: 1 / 4;
        }
      }
    }
    &.stack-top {
      > * {
        grid-column: 3 / 4;
        grid-row: 1 / 4;
        &:nth-child(2) {
          grid-column: 2 / 5;
          grid-row: 2 / 5;
        }
        &:nth-child(1) {
          grid-column: 1 / 6;
          grid-row: 3 / 6;
        }
      }
    }
    &.stack-start {
      > * {
        grid-column: 1 / 4;
        grid-row: 3 / 4;
        &:nth-child(2) {
          grid-column: 2 / 5;
          grid-row: 2 / 5;
        }
        &:nth-child(1) {
          grid-column: 3 / 6;
          grid-row: 1 / 6;
        }
      }
    }
    &.stack-end {
      > * {
        grid-column: 3 / 6;
        grid-row: 3 / 4;
        &:nth-child(2) {
          grid-column: 2 / 5;
          grid-row: 2 / 5;
        }
        &:nth-child(1) {
          grid-column: 1 / 4;
          grid-row: 1 / 6;
        }
      }
    }
  }
  .z-1 {
    z-index: 1;
  }
  .z-1000 {
    z-index: 1000;
  }
  .tab-content {
    order: var(--tabcontent-order);
    display: none;
    border-color: transparent;
    --tabcontent-radius-ss: 0;
    --tabcontent-radius-se: 0;
    --tabcontent-radius-es: 0;
    --tabcontent-radius-ee: 0;
    --tabcontent-order: 1;
    width: 100%;
    margin: var(--tabcontent-margin);
    border-width: var(--border);
    border-start-start-radius: var(--tabcontent-radius-ss);
    border-start-end-radius: var(--tabcontent-radius-se);
    border-end-start-radius: var(--tabcontent-radius-es);
    border-end-end-radius: var(--tabcontent-radius-ee);
  }
  .modal-box {
    grid-column-start: 1;
    grid-row-start: 1;
    max-height: 100vh;
    width: calc(11/12 * 100%);
    max-width: 32rem;
    background-color: var(--color-base-100);
    padding: calc(0.25rem * 6);
    transition: translate 0.3s ease-out, scale 0.3s ease-out, opacity 0.2s ease-out 0.05s, box-shadow 0.3s ease-out;
    border-top-left-radius: var(--modal-tl, var(--radius-box));
    border-top-right-radius: var(--modal-tr, var(--radius-box));
    border-bottom-left-radius: var(--modal-bl, var(--radius-box));
    border-bottom-right-radius: var(--modal-br, var(--radius-box));
    scale: 95%;
    opacity: 0;
    box-shadow: oklch(0% 0 0/ 0.25) 0px 25px 50px -12px;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .divider {
    display: flex;
    height: calc(0.25rem * 4);
    flex-direction: row;
    align-items: center;
    align-self: stretch;
    white-space: nowrap;
    margin: var(--divider-m, 1rem 0);
    --divider-color: var(--color-base-content);
    @supports (color: color-mix(in lab, red, red)) {
      --divider-color: color-mix(in oklab, var(--color-base-content) 10%, transparent);
    }
    &:before, &:after {
      content: "";
      height: calc(0.25rem * 0.5);
      width: 100%;
      flex-grow: 1;
      background-color: var(--divider-color);
    }
    @media print {
      &:before, &:after {
        border: 0.5px solid;
      }
    }
    &:not(:empty) {
      gap: calc(0.25rem * 4);
    }
  }
  .m-1 {
    margin: calc(var(--spacing) * 1);
  }
  .m-2 {
    margin: calc(var(--spacing) * 2);
  }
  .m-4 {
    margin: calc(var(--spacing) * 4);
  }
  .filter {
    display: flex;
    flex-wrap: wrap;
    input[type="radio"] {
      width: auto;
    }
    input {
      overflow: hidden;
      opacity: 100%;
      scale: 1;
      transition: margin 0.1s, opacity 0.3s, padding 0.3s, border-width 0.1s;
      &:not(:last-child) {
        margin-inline-end: calc(0.25rem * 1);
      }
      &.filter-reset {
        aspect-ratio: 1 / 1;
        &::after {
          content: "×";
        }
      }
    }
    &:not(:has(input:checked:not(.filter-reset))) {
      .filter-reset, input[type="reset"] {
        scale: 0;
        border-width: 0;
        margin-inline: calc(0.25rem * 0);
        width: calc(0.25rem * 0);
        padding-inline: calc(0.25rem * 0);
        opacity: 0%;
      }
    }
    &:has(input:checked:not(.filter-reset)) {
      input:not(:checked, .filter-reset, input[type="reset"]) {
        scale: 0;
        border-width: 0;
        margin-inline: calc(0.25rem * 0);
        width: calc(0.25rem * 0);
        padding-inline: calc(0.25rem * 0);
        opacity: 0%;
      }
    }
  }
  .mx-1 {
    margin-inline: calc(var(--spacing) * 1);
  }
  .mx-2 {
    margin-inline: calc(var(--spacing) * 2);
  }
  .mx-4 {
    margin-inline: calc(var(--spacing) * 4);
  }
  .my-1 {
    margin-block: calc(var(--spacing) * 1);
  }
  .my-2 {
    margin-block: calc(var(--spacing) * 2);
  }
  .my-8 {
    margin-block: calc(var(--spacing) * 8);
  }
  .label {
    display: inline-flex;
    align-items: center;
    gap: calc(0.25rem * 1.5);
    white-space: nowrap;
    color: currentColor;
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, currentColor 60%, transparent);
    }
    &:has(input) {
      cursor: pointer;
    }
    &:is(.input > *, .select > *) {
      display: flex;
      height: calc(100% - 0.5rem);
      align-items: center;
      padding-inline: calc(0.25rem * 3);
      white-space: nowrap;
      font-size: inherit;
      &:first-child {
        margin-inline-start: calc(0.25rem * -3);
        margin-inline-end: calc(0.25rem * 3);
        border-inline-end: var(--border) solid currentColor;
        @supports (color: color-mix(in lab, red, red)) {
          border-inline-end: var(--border) solid color-mix(in oklab, currentColor 10%, #0000);
        }
      }
      &:last-child {
        margin-inline-start: calc(0.25rem * 3);
        margin-inline-end: calc(0.25rem * -3);
        border-inline-start: var(--border) solid currentColor;
        @supports (color: color-mix(in lab, red, red)) {
          border-inline-start: var(--border) solid color-mix(in oklab, currentColor 10%, #0000);
        }
      }
    }
  }
  .mt-2 {
    margin-top: calc(var(--spacing) * 2);
  }
  .mt-3 {
    margin-top: calc(var(--spacing) * 3);
  }
  .mt-4 {
    margin-top: calc(var(--spacing) * 4);
  }
  .mt-6 {
    margin-top: calc(var(--spacing) * 6);
  }
  .mt-8 {
    margin-top: calc(var(--spacing) * 8);
  }
  .mr-4 {
    margin-right: calc(var(--spacing) * 4);
  }
  .mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
  }
  .mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
  }
  .badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: calc(0.25rem * 2);
    border-radius: var(--radius-selector);
    vertical-align: middle;
    color: var(--badge-fg);
    border: var(--border) solid var(--badge-color, var(--color-base-200));
    font-size: 0.875rem;
    width: fit-content;
    padding-inline: calc(0.25rem * 3 - var(--border));
    background-size: auto, calc(var(--noise) * 100%);
    background-image: none, var(--fx-noise);
    background-color: var(--badge-bg);
    --badge-bg: var(--badge-color, var(--color-base-100));
    --badge-fg: var(--color-base-content);
    --size: calc(var(--size-selector, 0.25rem) * 6);
    height: var(--size);
  }
  .tabs {
    display: flex;
    flex-wrap: wrap;
    --tabs-height: auto;
    --tabs-direction: row;
    --tab-height: calc(var(--size-field, 0.25rem) * 10);
    height: var(--tabs-height);
    flex-direction: var(--tabs-direction);
  }
  .navbar {
    display: flex;
    width: 100%;
    align-items: center;
    padding: 0.5rem;
    min-height: 4rem;
  }
  .navbar-end {
    display: inline-flex;
    align-items: center;
    width: 50%;
    justify-content: flex-end;
  }
  .navbar-start {
    display: inline-flex;
    align-items: center;
    width: 50%;
    justify-content: flex-start;
  }
  .card-body {
    display: flex;
    flex: auto;
    flex-direction: column;
    gap: calc(0.25rem * 2);
    padding: var(--card-p, 1.5rem);
    font-size: var(--card-fs, 0.875rem);
    :where(p) {
      flex-grow: 1;
    }
  }
  .card-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: calc(0.25rem * 2);
  }
  .card-title {
    display: flex;
    align-items: center;
    gap: calc(0.25rem * 2);
    font-size: var(--cardtitle-fs, 1.125rem);
    font-weight: 600;
  }
  .flex {
    display: flex;
  }
  .hidden {
    display: none;
  }
  .h-10 {
    height: calc(var(--spacing) * 10);
  }
  .h-dvh {
    height: 100dvh;
  }
  .h-fit {
    height: fit-content;
  }
  .h-full {
    height: 100%;
  }
  .h-screen {
    height: 100vh;
  }
  .max-h-5\/6 {
    max-height: calc(5/6 * 100%);
  }
  .max-h-8\/10 {
    max-height: calc(8/10 * 100%);
  }
  .max-h-100 {
    max-height: calc(var(--spacing) * 100);
  }
  .max-h-\[70px\] {
    max-height: 70px;
  }
  .max-h-\[150px\] {
    max-height: 150px;
  }
  .min-h-0 {
    min-height: calc(var(--spacing) * 0);
  }
  .min-h-\[112px\] {
    min-height: 112px;
  }
  .min-h-\[172px\] {
    min-height: 172px;
  }
  .min-h-screen {
    min-height: 100vh;
  }
  .w-10 {
    width: calc(var(--spacing) * 10);
  }
  .w-52 {
    width: calc(var(--spacing) * 52);
  }
  .w-65 {
    width: calc(var(--spacing) * 65);
  }
  .w-180 {
    width: calc(var(--spacing) * 180);
  }
  .w-\[2ch\] {
    width: 2ch;
  }
  .w-fit {
    width: fit-content;
  }
  .w-full {
    width: 100%;
  }
  .w-screen {
    width: 100vw;
  }
  .max-w-none {
    max-width: none;
  }
  .max-w-screen {
    max-width: 100vw;
  }
  .min-w-6 {
    min-width: calc(var(--spacing) * 6);
  }
  .flex-1 {
    flex: 1;
  }
  .shrink-0 {
    flex-shrink: 0;
  }
  .flex-grow {
    flex-grow: 1;
  }
  .grow {
    flex-grow: 1;
  }
  .basis-1\/3 {
    flex-basis: calc(1/3 * 100%);
  }
  .swap-rotate {
    .swap-on, input:indeterminate ~ .swap-on {
      rotate: 45deg;
    }
    input:is(:checked, :indeterminate) ~ .swap-on, &.swap-active .swap-on {
      rotate: 0deg;
    }
    input:is(:checked, :indeterminate) ~ .swap-off, &.swap-active .swap-off {
      rotate: calc(45deg * -1);
    }
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .link {
    cursor: pointer;
    text-decoration-line: underline;
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
      @media (forced-colors: active) {
        outline: 2px solid transparent;
        outline-offset: 2px;
      }
    }
    &:focus-visible {
      outline: 2px solid currentColor;
      outline-offset: 2px;
    }
  }
  .cursor-not-allowed {
    cursor: not-allowed;
  }
  .cursor-pointer {
    cursor: pointer;
  }
  .flex-col {
    flex-direction: column;
  }
  .flex-row {
    flex-direction: row;
  }
  .flex-wrap {
    flex-wrap: wrap;
  }
  .content-center {
    align-content: center;
  }
  .items-center {
    align-items: center;
  }
  .items-start {
    align-items: flex-start;
  }
  .items-stretch {
    align-items: stretch;
  }
  .justify-between {
    justify-content: space-between;
  }
  .justify-center {
    justify-content: center;
  }
  .justify-end {
    justify-content: flex-end;
  }
  .justify-evenly {
    justify-content: space-evenly;
  }
  .justify-start {
    justify-content: flex-start;
  }
  .overflow-auto {
    overflow: auto;
  }
  .overflow-hidden {
    overflow: hidden;
  }
  .tabs-box {
    background-color: var(--color-base-200);
    padding: calc(0.25rem * 1);
    --tabs-box-radius: calc(var(--radius-field) + var(--radius-field) + var(--radius-field));
    border-radius: calc(var(--radius-field) + min(0.25rem, var(--tabs-box-radius)));
    box-shadow: 0 -0.5px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 0.5px oklch(0% 0 0 / calc(var(--depth) * 0.05)) inset;
    .tab {
      border-radius: var(--radius-field);
      border-style: none;
      &:focus-visible, &:is(label:has(:checked:focus-visible)) {
        outline-offset: 2px;
      }
    }
    > :is(.tab-active, [aria-selected=true], [aria-current=true], [aria-current=page]):not(.tab-disabled, [disabled]), > :is(input:checked), > :is(label:has(:checked)) {
      background-color: var(--tab-bg, var(--color-base-100));
      box-shadow: 0 1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral);
      @supports (color: color-mix(in lab, red, red)) {
        box-shadow: 0 1px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000);
      }
      @media (forced-colors: active) {
        border: 1px solid;
      }
    }
  }
  .menu-sm {
    :where(li:not(.menu-title) > *:not(ul, details, .menu-title)), :where(li:not(.menu-title) > details > summary:not(.menu-title)) {
      border-radius: var(--radius-field);
      padding-inline: calc(0.25rem * 2.5);
      padding-block: calc(0.25rem * 1);
      font-size: 0.75rem;
    }
    .menu-title {
      padding-inline: calc(0.25rem * 3);
      padding-block: calc(0.25rem * 2);
    }
  }
  .rounded-2xl {
    border-radius: var(--radius-2xl);
  }
  .rounded-\[2rem\] {
    border-radius: 2rem;
  }
  .rounded-box {
    border-radius: var(--radius-box);
  }
  .rounded-box {
    border-radius: var(--radius-box);
  }
  .rounded-field {
    border-radius: var(--radius-field);
  }
  .rounded-field {
    border-radius: var(--radius-field);
  }
  .rounded-md {
    border-radius: var(--radius-md);
  }
  .rounded-none {
    border-radius: 0;
  }
  .rounded-sm {
    border-radius: var(--radius-sm);
  }
  .rounded-xl {
    border-radius: var(--radius-xl);
  }
  .rounded-t-sm {
    border-top-left-radius: var(--radius-sm);
    border-top-right-radius: var(--radius-sm);
  }
  .rounded-br-xl {
    border-bottom-right-radius: var(--radius-xl);
  }
  .rounded-bl-xl {
    border-bottom-left-radius: var(--radius-xl);
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .border-2 {
    border-style: var(--tw-border-style);
    border-width: 2px;
  }
  .border-b {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 1px;
  }
  .border-dashed {
    --tw-border-style: dashed;
    border-style: dashed;
  }
  .border-solid {
    --tw-border-style: solid;
    border-style: solid;
  }
  .badge-outline {
    color: var(--badge-color);
    --badge-bg: #0000;
    background-image: none;
    border-color: currentColor;
  }
  .border-base-100 {
    border-color: var(--color-base-100);
  }
  .border-base-300 {
    border-color: var(--color-base-300);
  }
  .border-base-content {
    border-color: var(--color-base-content);
  }
  .border-component {
    border-color: var(--color-component);
  }
  .border-component-shadow {
    border-color: var(--color-component-shadow);
  }
  .border-grammar {
    border-color: var(--color-grammar);
  }
  .border-grammar-shadow {
    border-color: var(--color-grammar-shadow);
  }
  .border-hanzi {
    border-color: var(--color-hanzi);
  }
  .border-hanzi-shadow {
    border-color: var(--color-hanzi-shadow);
  }
  .border-neutral {
    border-color: var(--color-neutral);
  }
  .border-vocabulary {
    border-color: var(--color-vocabulary);
  }
  .border-vocabulary-shadow {
    border-color: var(--color-vocabulary-shadow);
  }
  .bg-base-100 {
    background-color: var(--color-base-100);
  }
  .bg-base-200 {
    background-color: var(--color-base-200);
  }
  .bg-component {
    background-color: var(--color-component);
  }
  .bg-grammar {
    background-color: var(--color-grammar);
  }
  .bg-gray-500 {
    background-color: var(--color-gray-500);
  }
  .bg-hanzi {
    background-color: var(--color-hanzi);
  }
  .bg-red-500 {
    background-color: var(--color-red-500);
  }
  .bg-secondary {
    background-color: var(--color-secondary);
  }
  .bg-vocabulary {
    background-color: var(--color-vocabulary);
  }
  .fill-current {
    fill: currentcolor;
  }
  .p-2 {
    padding: calc(var(--spacing) * 2);
  }
  .p-4 {
    padding: calc(var(--spacing) * 4);
  }
  .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .badge-md {
    --size: calc(var(--size-selector, 0.25rem) * 6);
    font-size: 0.875rem;
    padding-inline: calc(0.25rem * 3 - var(--border));
  }
  .px-1 {
    padding-inline: calc(var(--spacing) * 1);
  }
  .px-2 {
    padding-inline: calc(var(--spacing) * 2);
  }
  .px-6 {
    padding-inline: calc(var(--spacing) * 6);
  }
  .px-10 {
    padding-inline: calc(var(--spacing) * 10);
  }
  .py-1 {
    padding-block: calc(var(--spacing) * 1);
  }
  .py-2 {
    padding-block: calc(var(--spacing) * 2);
  }
  .py-4 {
    padding-block: calc(var(--spacing) * 4);
  }
  .py-6 {
    padding-block: calc(var(--spacing) * 6);
  }
  .pt-4 {
    padding-top: calc(var(--spacing) * 4);
  }
  .pb-1 {
    padding-bottom: calc(var(--spacing) * 1);
  }
  .pb-6 {
    padding-bottom: calc(var(--spacing) * 6);
  }
  .pb-8 {
    padding-bottom: calc(var(--spacing) * 8);
  }
  .text-center {
    text-align: center;
  }
  .text-end {
    text-align: end;
  }
  .font-serif {
    font-family: var(--font-serif);
  }
  .text-2xl {
    font-size: var(--text-2xl);
    line-height: var(--tw-leading, var(--text-2xl--line-height));
  }
  .text-4xl {
    font-size: var(--text-4xl);
    line-height: var(--tw-leading, var(--text-4xl--line-height));
  }
  .text-base {
    font-size: var(--text-base);
    line-height: var(--tw-leading, var(--text-base--line-height));
  }
  .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .text-sm {
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .text-xl {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
  }
  .text-xs {
    font-size: var(--text-xs);
    line-height: var(--tw-leading, var(--text-xs--line-height));
  }
  .text-\[10px\] {
    font-size: 10px;
  }
  .text-\[16px\] {
    font-size: 16px;
  }
  .text-\[20px\] {
    font-size: 20px;
  }
  .text-\[25px\] {
    font-size: 25px;
  }
  .text-\[28px\] {
    font-size: 28px;
  }
  .text-\[75px\] {
    font-size: 75px;
  }
  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .font-medium {
    --tw-font-weight: var(--font-weight-medium);
    font-weight: var(--font-weight-medium);
  }
  .font-semibold {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  .text-wrap {
    text-wrap: wrap;
  }
  .tooltip-success {
    --tt-bg: var(--color-success);
    > .tooltip-content, &[data-tip]:before {
      color: var(--color-success-content);
    }
  }
  .text-component {
    color: var(--color-component);
  }
  .text-error {
    color: var(--color-error);
  }
  .text-grammar {
    color: var(--color-grammar);
  }
  .text-hanzi {
    color: var(--color-hanzi);
  }
  .text-neutral-content {
    color: var(--color-neutral-content);
  }
  .text-secondary {
    color: var(--color-secondary);
  }
  .text-secondary-content {
    color: var(--color-secondary-content);
  }
  .text-success {
    color: var(--color-success);
  }
  .text-vocabulary {
    color: var(--color-vocabulary);
  }
  .text-warning {
    color: var(--color-warning);
  }
  .text-white {
    color: var(--color-white);
  }
  .capitalize {
    text-transform: capitalize;
  }
  .lowercase {
    text-transform: lowercase;
  }
  .uppercase {
    text-transform: uppercase;
  }
  .underline {
    text-decoration-line: underline;
  }
  .decoration-accent {
    text-decoration-color: var(--color-accent);
  }
  .decoration-grammar {
    text-decoration-color: var(--color-grammar);
  }
  .decoration-primary {
    text-decoration-color: var(--color-primary);
  }
  .decoration-slate-500 {
    text-decoration-color: var(--color-slate-500);
  }
  .decoration-success {
    text-decoration-color: var(--color-success);
  }
  .decoration-vocabulary {
    text-decoration-color: var(--color-vocabulary);
  }
  .decoration-white {
    text-decoration-color: var(--color-white);
  }
  .decoration-2 {
    text-decoration-thickness: 2px;
  }
  .underline-offset-4 {
    text-underline-offset: 4px;
  }
  .underline-offset-5 {
    text-underline-offset: 5px;
  }
  .underline-offset-7 {
    text-underline-offset: 7px;
  }
  .shadow {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-lg {
    --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-sm {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-xs {
    --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .outline-48 {
    outline-style: var(--tw-outline-style);
    outline-width: 48px;
  }
  .outline-61 {
    outline-style: var(--tw-outline-style);
    outline-width: 61px;
  }
  .outline-75 {
    outline-style: var(--tw-outline-style);
    outline-width: 75px;
  }
  .btn-ghost {
    &:not(.btn-active, :hover, :active:focus, :focus-visible) {
      --btn-shadow: "";
      --btn-bg: #0000;
      --btn-border: #0000;
      --btn-noise: none;
      &:not(:disabled, [disabled], .btn-disabled) {
        outline-color: currentColor;
        --btn-fg: currentColor;
      }
    }
    @media (hover: none) {
      &:hover:not(.btn-active, :active, :focus-visible, :disabled, [disabled], .btn-disabled) {
        --btn-shadow: "";
        --btn-bg: #0000;
        --btn-border: #0000;
        --btn-noise: none;
        --btn-fg: currentColor;
      }
    }
  }
  .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,);
  }
  .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,);
  }
  .btn-outline {
    &:not( .btn-active, :hover, :active:focus, :focus-visible, :disabled, [disabled], .btn-disabled, :checked ) {
      --btn-shadow: "";
      --btn-bg: #0000;
      --btn-fg: var(--btn-color);
      --btn-border: var(--btn-color);
      --btn-noise: none;
    }
    @media (hover: none) {
      &:hover:not( .btn-active, :active, :focus-visible, :disabled, [disabled], .btn-disabled, :checked ) {
        --btn-shadow: "";
        --btn-bg: #0000;
        --btn-fg: var(--btn-color);
        --btn-border: var(--btn-color);
        --btn-noise: none;
      }
    }
  }
  .indicator-center {
    --indicator-s: 50%;
    --indicator-e: 50%;
    --indicator-x: -50%;
    [dir="rtl"] & {
      --indicator-x: 50%;
    }
  }
  .card-sm {
    .card-body {
      --card-p: 1rem;
      --card-fs: 0.75rem;
    }
    .card-title {
      --cardtitle-fs: 1rem;
    }
  }
  .badge-accent {
    --badge-color: var(--color-accent);
    --badge-fg: var(--color-accent-content);
  }
  .badge-neutral {
    --badge-color: var(--color-neutral);
    --badge-fg: var(--color-neutral-content);
  }
  .badge-primary {
    --badge-color: var(--color-primary);
    --badge-fg: var(--color-primary-content);
  }
  .badge-secondary {
    --badge-color: var(--color-secondary);
    --badge-fg: var(--color-secondary-content);
  }
  .badge-success {
    --badge-color: var(--color-success);
    --badge-fg: var(--color-success-content);
  }
  .badge-warning {
    --badge-color: var(--color-warning);
    --badge-fg: var(--color-warning-content);
  }
  .btn-accent {
    --btn-color: var(--color-accent);
    --btn-fg: var(--color-accent-content);
  }
  .btn-error {
    --btn-color: var(--color-error);
    --btn-fg: var(--color-error-content);
  }
  .btn-primary {
    --btn-color: var(--color-primary);
    --btn-fg: var(--color-primary-content);
  }
  .btn-success {
    --btn-color: var(--color-success);
    --btn-fg: var(--color-success-content);
  }
  .btn-warning {
    --btn-color: var(--color-warning);
    --btn-fg: var(--color-warning-content);
  }
  .input-neutral {
    &, &:focus, &:focus-within {
      --input-color: var(--color-neutral);
    }
  }
  .text-shadow-\[1px_1px_0px_rgb\(0_0_0_\/_0\.25\)\] {
    text-shadow: 1px 1px 0px var(--tw-text-shadow-color, rgb(0 0 0 / 0.25));
  }
  .text-shadow-\[2px_2px_0px_rgb\(0_0_0_\/_0\.25\)\] {
    text-shadow: 2px 2px 0px var(--tw-text-shadow-color, rgb(0 0 0 / 0.25));
  }
  .text-shadow-component-shadow {
    --tw-text-shadow-color: oklch(61.94% 0.164 266.06);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-text-shadow-color: color-mix(in oklab, var(--color-component-shadow) var(--tw-text-shadow-alpha), transparent);
    }
  }
  .text-shadow-grammar-shadow {
    --tw-text-shadow-color: oklch(55.64% 0.210 357.93);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-text-shadow-color: color-mix(in oklab, var(--color-grammar-shadow) var(--tw-text-shadow-alpha), transparent);
    }
  }
  .text-shadow-hanzi-shadow {
    --tw-text-shadow-color: oklch(63.58% 0.186 43.67);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-text-shadow-color: color-mix(in oklab, var(--color-hanzi-shadow) var(--tw-text-shadow-alpha), transparent);
    }
  }
  .text-shadow-neutral-bg {
    --tw-text-shadow-color: oklch(68.0% 0.064 267.6);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-text-shadow-color: color-mix(in oklab, var(--color-neutral-bg) var(--tw-text-shadow-alpha), transparent);
    }
  }
  .text-shadow-vocabulary-shadow {
    --tw-text-shadow-color: oklch(53.61% 0.197 285.79);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-text-shadow-color: color-mix(in oklab, var(--color-vocabulary-shadow) var(--tw-text-shadow-alpha), transparent);
    }
  }
  .peer-checked\:block {
    &:is(:where(.peer):checked ~ *) {
      display: block;
    }
  }
  .hover\:border-component {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-component);
      }
    }
  }
  .hover\:border-component-shadow {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-component-shadow);
      }
    }
  }
  .hover\:border-grammar {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-grammar);
      }
    }
  }
  .hover\:border-grammar-shadow {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-grammar-shadow);
      }
    }
  }
  .hover\:border-hanzi {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-hanzi);
      }
    }
  }
  .hover\:border-hanzi-shadow {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-hanzi-shadow);
      }
    }
  }
  .hover\:border-neutral-content {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-neutral-content);
      }
    }
  }
  .hover\:border-vocabulary {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-vocabulary);
      }
    }
  }
  .hover\:border-vocabulary-shadow {
    &:hover {
      @media (hover: hover) {
        border-color: var(--color-vocabulary-shadow);
      }
    }
  }
  .hover\:bg-base-100 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-base-100);
      }
    }
  }
  .hover\:bg-component-shadow {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-component-shadow);
      }
    }
  }
  .hover\:bg-grammar-shadow {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-grammar-shadow);
      }
    }
  }
  .hover\:bg-hanzi-shadow {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-hanzi-shadow);
      }
    }
  }
  .hover\:bg-vocabulary-shadow {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-vocabulary-shadow);
      }
    }
  }
  .hover\:text-component {
    &:hover {
      @media (hover: hover) {
        color: var(--color-component);
      }
    }
  }
  .hover\:text-grammar {
    &:hover {
      @media (hover: hover) {
        color: var(--color-grammar);
      }
    }
  }
  .hover\:text-hanzi {
    &:hover {
      @media (hover: hover) {
        color: var(--color-hanzi);
      }
    }
  }
  .hover\:text-vocabulary {
    &:hover {
      @media (hover: hover) {
        color: var(--color-vocabulary);
      }
    }
  }
  .sm\:min-h-\[154px\] {
    @media (width >= 40rem) {
      min-height: 154px;
    }
  }
  .sm\:w-fit {
    @media (width >= 40rem) {
      width: fit-content;
    }
  }
  .sm\:w-full {
    @media (width >= 40rem) {
      width: 100%;
    }
  }
  .sm\:max-w-80 {
    @media (width >= 40rem) {
      max-width: calc(var(--spacing) * 80);
    }
  }
  .sm\:flex-col {
    @media (width >= 40rem) {
      flex-direction: column;
    }
  }
  .sm\:px-2 {
    @media (width >= 40rem) {
      padding-inline: calc(var(--spacing) * 2);
    }
  }
  .sm\:text-base {
    @media (width >= 40rem) {
      font-size: var(--text-base);
      line-height: var(--tw-leading, var(--text-base--line-height));
    }
  }
  .sm\:text-\[32px\] {
    @media (width >= 40rem) {
      font-size: 32px;
    }
  }
  .sm\:text-\[100px\] {
    @media (width >= 40rem) {
      font-size: 100px;
    }
  }
  .md\:mt-8 {
    @media (width >= 48rem) {
      margin-top: calc(var(--spacing) * 8);
    }
  }
  .md\:block {
    @media (width >= 48rem) {
      display: block;
    }
  }
  .md\:hidden {
    @media (width >= 48rem) {
      display: none;
    }
  }
  .md\:max-h-9\/10 {
    @media (width >= 48rem) {
      max-height: calc(9/10 * 100%);
    }
  }
  .md\:min-h-\[175px\] {
    @media (width >= 48rem) {
      min-height: 175px;
    }
  }
  .md\:min-h-\[235px\] {
    @media (width >= 48rem) {
      min-height: 235px;
    }
  }
  .md\:w-120 {
    @media (width >= 48rem) {
      width: calc(var(--spacing) * 120);
    }
  }
  .md\:w-180 {
    @media (width >= 48rem) {
      width: calc(var(--spacing) * 180);
    }
  }
  .md\:w-fit {
    @media (width >= 48rem) {
      width: fit-content;
    }
  }
  .md\:min-w-120 {
    @media (width >= 48rem) {
      min-width: calc(var(--spacing) * 120);
    }
  }
  .md\:rounded-lg {
    @media (width >= 48rem) {
      border-radius: var(--radius-lg);
    }
  }
  .md\:rounded-t-md {
    @media (width >= 48rem) {
      border-top-left-radius: var(--radius-md);
      border-top-right-radius: var(--radius-md);
    }
  }
  .md\:py-2 {
    @media (width >= 48rem) {
      padding-block: calc(var(--spacing) * 2);
    }
  }
  .md\:pt-2 {
    @media (width >= 48rem) {
      padding-top: calc(var(--spacing) * 2);
    }
  }
  .md\:pb-0 {
    @media (width >= 48rem) {
      padding-bottom: calc(var(--spacing) * 0);
    }
  }
  .md\:pb-4 {
    @media (width >= 48rem) {
      padding-bottom: calc(var(--spacing) * 4);
    }
  }
  .md\:pb-6 {
    @media (width >= 48rem) {
      padding-bottom: calc(var(--spacing) * 6);
    }
  }
  .lg\:hidden {
    @media (width >= 64rem) {
      display: none;
    }
  }
  .\[\&\:\:-moz-progress-bar\]\:bg-component {
    &::-moz-progress-bar {
      background-color: var(--color-component);
    }
  }
  .\[\&\:\:-moz-progress-bar\]\:bg-grammar {
    &::-moz-progress-bar {
      background-color: var(--color-grammar);
    }
  }
  .\[\&\:\:-moz-progress-bar\]\:bg-hanzi {
    &::-moz-progress-bar {
      background-color: var(--color-hanzi);
    }
  }
  .\[\&\:\:-moz-progress-bar\]\:bg-secondary {
    &::-moz-progress-bar {
      background-color: var(--color-secondary);
    }
  }
  .\[\&\:\:-moz-progress-bar\]\:bg-vocabulary {
    &::-moz-progress-bar {
      background-color: var(--color-vocabulary);
    }
  }
  .\[\&\:\:-webkit-progress-value\]\:bg-component {
    &::-webkit-progress-value {
      background-color: var(--color-component);
    }
  }
  .\[\&\:\:-webkit-progress-value\]\:bg-grammar {
    &::-webkit-progress-value {
      background-color: var(--color-grammar);
    }
  }
  .\[\&\:\:-webkit-progress-value\]\:bg-hanzi {
    &::-webkit-progress-value {
      background-color: var(--color-hanzi);
    }
  }
  .\[\&\:\:-webkit-progress-value\]\:bg-secondary {
    &::-webkit-progress-value {
      background-color: var(--color-secondary);
    }
  }
  .\[\&\:\:-webkit-progress-value\]\:bg-vocabulary {
    &::-webkit-progress-value {
      background-color: var(--color-vocabulary);
    }
  }
}
@font-face {
  font-family: "KaiTi_GB2312";
  font-display: swap;
  src: url('/fonts/kaitiGB2312.ttf') format('truetype');
}
body {
  font-family: sans-serif;
}
@layer base {
  :root:has(input.theme-controller[value=pastel]:checked),[data-theme=pastel] {
    color-scheme: light;
    --color-base-100: oklch(100% 0 0);
    --color-base-200: oklch(98.462% 0.001 247.838);
    --color-base-300: oklch(92.462% 0.001 247.838);
    --color-base-content: oklch(20% 0 0);
    --color-primary: oklch(90% 0.063 306.703);
    --color-primary-content: oklch(49% 0.265 301.924);
    --color-secondary: oklch(89% 0.058 10.001);
    --color-secondary-content: oklch(51% 0.222 16.935);
    --color-accent: oklch(90% 0.093 164.15);
    --color-accent-content: oklch(50% 0.118 165.612);
    --color-neutral: oklch(55% 0.046 257.417);
    --color-neutral-content: oklch(92% 0.013 255.508);
    --color-info: oklch(86% 0.127 207.078);
    --color-info-content: oklch(52% 0.105 223.128);
    --color-success: oklch(87% 0.15 154.449);
    --color-success-content: oklch(52% 0.154 150.069);
    --color-warning: oklch(83% 0.128 66.29);
    --color-warning-content: oklch(55% 0.195 38.402);
    --color-error: oklch(80% 0.114 19.571);
    --color-error-content: oklch(50% 0.213 27.518);
    --radius-selector: 1rem;
    --radius-field: 2rem;
    --radius-box: 1rem;
    --size-selector: 0.25rem;
    --size-field: 0.25rem;
    --border: 2px;
    --depth: 0;
    --noise: 0;
  }
}
@layer base {
  :where( :root:has( .modal-open, .modal[open], .modal:target, .modal-toggle:checked, .drawer:not(.drawer-open) > .drawer-toggle:checked ) ) {
    scrollbar-gutter: stable;
    background-image: linear-gradient(var(--color-base-100), var(--color-base-100));
    --root-bg: var(--color-base-100);
    @supports (color: color-mix(in lab, red, red)) {
      --root-bg: color-mix(in srgb, var(--color-base-100), oklch(0% 0 0) 40%);
    }
  }
  :where(.modal[open], .modal-open, .modal-toggle:checked + .modal):not(.modal-start, .modal-end) {
    scrollbar-gutter: stable;
  }
}
@layer base {
  @property --radialprogress {
    syntax: "<percentage>";
    inherits: true;
    initial-value: 0%;
  }
}
@layer base {
  :root {
    --fx-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");
  }
}
@layer base {
  :root, [data-theme] {
    background-color: var(--root-bg, var(--color-base-100));
    color: var(--color-base-content);
  }
}
@layer base {
  :root {
    scrollbar-color: currentColor #0000;
    @supports (color: color-mix(in lab, red, red)) {
      scrollbar-color: color-mix(in oklch, currentColor 35%, #0000) #0000;
    }
  }
}
@layer base {
  :root:has( .modal-open, .modal[open], .modal:target, .modal-toggle:checked, .drawer:not([class*="drawer-open"]) > .drawer-toggle:checked ) {
    overflow: hidden;
  }
}
@keyframes dropdown {
  0% {
    opacity: 0;
  }
}
@keyframes radio {
  0% {
    padding: 5px;
  }
  50% {
    padding: 3px;
  }
}
@keyframes toast {
  0% {
    scale: 0.9;
    opacity: 0;
  }
  100% {
    scale: 1;
    opacity: 1;
  }
}
@keyframes rating {
  0%, 40% {
    scale: 1.1;
    filter: brightness(1.05) contrast(1.05);
  }
}
@keyframes skeleton {
  0% {
    background-position: 150%;
  }
  100% {
    background-position: -50%;
  }
}
@keyframes progress {
  50% {
    background-position-x: -115%;
  }
}
@layer base {
  :where(:root),:root:has(input.theme-controller[value=hanzijuzilight]:checked),[data-theme="hanzijuzilight"] {
    color-scheme: light;
    --color-base-100: oklch(100% 0 0);
    --color-base-200: oklch(97.30% 0.007 268.55);
    --color-base-300: oklch(98% 0 0);
    --color-base-content: oklch(20% 0 0);
    --color-primary: oklch(67.28% 0.172 266.11);
    --color-primary-content: oklch(20% 0 0);
    --color-secondary: oklch(76.29% 0.070 257.36);
    --color-secondary-content: oklch(37.0% 0.000 0.0);
    --color-accent: oklch(72.51% 0.179 45.69);
    --color-accent-content: oklch(20% 0 0);
    --color-neutral: oklch(86.79% 0.064 267.58);
    --color-neutral-content: oklch(37.0% 0.000 0.0);
    --color-info: oklch(73.45% 0.117 236.18);
    --color-info-content: oklch(20% 0 0);
    --color-success: oklch(75.14% 0.223 143.80);
    --color-success-content: oklch(20% 0 0);
    --color-warning: oklch(81.24% 0.170 76.39);
    --color-warning-content: oklch(20% 0 0);
    --color-error: oklch(59.54% 0.222 357.68);
    --color-error-content: oklch(98% 0.003 247.858);
    --color-component: oklch(67.28% 0.172 266.11);
    --color-component-shadow: oklch(61.94% 0.164 266.06);
    --color-hanzi: oklch(68.81% 0.207 42.11);
    --color-hanzi-shadow: oklch(63.58% 0.186 43.67);
    --color-vocabulary: oklch(58.73% 0.210 286.18);
    --color-vocabulary-shadow: oklch(53.61% 0.197 285.79);
    --color-grammar: oklch(59.54% 0.222 357.68);
    --color-grammar-shadow: oklch(55.64% 0.210 357.93);
    --color-neutral-bg: oklch(68.0% 0.064 267.6);
    --radius-selector: 0.5rem;
    --radius-field: 1rem;
    --radius-box: 1rem;
    --size-selector: 0.25rem;
    --size-field: 0.25rem;
    --border: 2px;
    --depth: 0;
    --noise: 0;
  }
}
@layer base {
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme]) {
      color-scheme: dark;
      --color-base-100: oklch(30.857% 0.023 264.149);
      --color-base-200: oklch(28.036% 0.019 264.182);
      --color-base-300: oklch(26.346% 0.018 262.177);
      --color-base-content: oklch(82.901% 0.031 222.959);
      --color-primary: oklch(67.28% 0.172 266.11);
      --color-primary-content: oklch(17.226% 0.028 139.549);
      --color-secondary: oklch(76.29% 0.070 257.36);
      --color-secondary-content: oklch(82.901% 0.031 222.959);
      --color-accent: oklch(76.97% 0.146 48.03);
      --color-accent-content: oklch(0% 0 0);
      --color-neutral: oklch(86.79% 0.064 267.58);
      --color-neutral-content: oklch(37.0% 0.000 0.0);
      --color-info: oklch(73.45% 0.117 236.18);
      --color-info-content: oklch(17.215% 0.028 206.182);
      --color-success: oklch(78.93% 0.192 144.61);
      --color-success-content: oklch(17.234% 0.028 166.534);
      --color-warning: oklch(84.20% 0.158 81.36);
      --color-warning-content: oklch(17.232% 0.028 94.818);
      --color-error: oklch(65.31% 0.190 353.99);
      --color-error-content: oklch(16.483% 0.019 33.756);
      --color-component: oklch(67.28% 0.172 266.11);
      --color-component-shadow: oklch(61.94% 0.164 266.06);
      --color-hanzi: oklch(68.81% 0.207 42.11);
      --color-hanzi-shadow: oklch(63.58% 0.186 43.67);
      --color-vocabulary: oklch(58.73% 0.210 286.18);
      --color-vocabulary-shadow: oklch(53.61% 0.197 285.79);
      --color-grammar: oklch(59.54% 0.222 357.68);
      --color-grammar-shadow: oklch(55.64% 0.210 357.93);
      --color-neutral-bg: oklch(18.1% 0.020 264.1);
      --radius-selector: 0.5rem;
      --radius-field: 1rem;
      --radius-box: 1rem;
      --size-selector: 0.25rem;
      --size-field: 0.25rem;
      --border: 2px;
      --depth: 0;
      --noise: 0;
    }
  }
}
@layer base {
  :root:has(input.theme-controller[value=hanzijuzidark]:checked),[data-theme="hanzijuzidark"] {
    color-scheme: dark;
    --color-base-100: oklch(30.857% 0.023 264.149);
    --color-base-200: oklch(28.036% 0.019 264.182);
    --color-base-300: oklch(26.346% 0.018 262.177);
    --color-base-content: oklch(82.901% 0.031 222.959);
    --color-primary: oklch(67.28% 0.172 266.11);
    --color-primary-content: oklch(17.226% 0.028 139.549);
    --color-secondary: oklch(76.29% 0.070 257.36);
    --color-secondary-content: oklch(82.901% 0.031 222.959);
    --color-accent: oklch(76.97% 0.146 48.03);
    --color-accent-content: oklch(0% 0 0);
    --color-neutral: oklch(86.79% 0.064 267.58);
    --color-neutral-content: oklch(37.0% 0.000 0.0);
    --color-info: oklch(73.45% 0.117 236.18);
    --color-info-content: oklch(17.215% 0.028 206.182);
    --color-success: oklch(78.93% 0.192 144.61);
    --color-success-content: oklch(17.234% 0.028 166.534);
    --color-warning: oklch(84.20% 0.158 81.36);
    --color-warning-content: oklch(17.232% 0.028 94.818);
    --color-error: oklch(65.31% 0.190 353.99);
    --color-error-content: oklch(16.483% 0.019 33.756);
    --color-component: oklch(67.28% 0.172 266.11);
    --color-component-shadow: oklch(61.94% 0.164 266.06);
    --color-hanzi: oklch(68.81% 0.207 42.11);
    --color-hanzi-shadow: oklch(63.58% 0.186 43.67);
    --color-vocabulary: oklch(58.73% 0.210 286.18);
    --color-vocabulary-shadow: oklch(53.61% 0.197 285.79);
    --color-grammar: oklch(59.54% 0.222 357.68);
    --color-grammar-shadow: oklch(55.64% 0.210 357.93);
    --color-neutral-bg: oklch(18.1% 0.020 264.1);
    --radius-selector: 0.5rem;
    --radius-field: 1rem;
    --radius-box: 1rem;
    --size-selector: 0.25rem;
    --size-field: 0.25rem;
    --border: 2px;
    --depth: 0;
    --noise: 0;
  }
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-outline-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false;
}
@property --tw-text-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-text-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-border-style: solid;
      --tw-font-weight: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-outline-style: solid;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
      --tw-text-shadow-color: initial;
      --tw-text-shadow-alpha: 100%;
    }
  }
}
