UNPKG

@orchard9ai/design-system

Version:

DaisyUI-based component library for Orchard9 applications

1,527 lines 256 kB
/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */ @layer properties; @layer theme, base, components, utilities; @layer theme { :root, :host { --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, 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-red-800: oklch(44.4% 0.177 26.899); --color-yellow-50: oklch(98.7% 0.026 102.212); --color-yellow-200: oklch(94.5% 0.129 101.54); --color-yellow-400: oklch(85.2% 0.199 91.936); --color-yellow-700: oklch(55.4% 0.135 66.442); --color-yellow-800: oklch(47.6% 0.114 61.907); --color-green-50: oklch(98.2% 0.018 155.826); --color-green-200: oklch(92.5% 0.084 155.995); --color-green-500: oklch(72.3% 0.219 149.579); --color-green-600: oklch(62.7% 0.194 149.214); --color-green-700: oklch(52.7% 0.154 150.069); --color-green-800: oklch(44.8% 0.119 151.328); --color-emerald-300: oklch(84.5% 0.143 164.978); --color-emerald-400: oklch(76.5% 0.177 163.223); --color-teal-500: oklch(70.4% 0.14 182.503); --color-blue-300: oklch(80.9% 0.105 251.813); --color-blue-500: oklch(62.3% 0.214 259.815); --color-blue-600: oklch(54.6% 0.245 262.881); --color-purple-50: oklch(97.7% 0.014 308.299); --color-purple-100: oklch(94.6% 0.033 307.174); --color-purple-200: oklch(90.2% 0.063 306.703); --color-purple-400: oklch(71.4% 0.203 305.504); --color-purple-500: oklch(62.7% 0.265 303.9); --color-purple-600: oklch(55.8% 0.288 302.321); --color-purple-700: oklch(49.6% 0.265 301.924); --color-purple-800: oklch(43.8% 0.218 303.724); --color-pink-500: oklch(65.6% 0.241 354.308); --color-pink-600: oklch(59.2% 0.249 0.584); --color-gray-100: oklch(96.7% 0.003 264.542); --color-gray-200: oklch(92.8% 0.006 264.531); --color-gray-300: oklch(87.2% 0.01 258.338); --color-gray-500: oklch(55.1% 0.027 264.364); --color-gray-600: oklch(44.6% 0.03 256.802); --color-gray-900: oklch(21% 0.034 264.665); --color-black: #000; --color-white: #fff; --spacing: 0.25rem; --breakpoint-sm: 40rem; --breakpoint-md: 48rem; --breakpoint-lg: 64rem; --breakpoint-xl: 80rem; --breakpoint-2xl: 96rem; --container-xs: 20rem; --container-sm: 24rem; --container-md: 28rem; --container-lg: 32rem; --container-xl: 36rem; --container-2xl: 42rem; --container-4xl: 56rem; --container-6xl: 72rem; --container-7xl: 80rem; --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-3xl: 1.875rem; --text-3xl--line-height: calc(2.25 / 1.875); --text-4xl: 2.25rem; --text-4xl--line-height: calc(2.5 / 2.25); --text-5xl: 3rem; --text-5xl--line-height: 1; --text-6xl: 3.75rem; --text-6xl--line-height: 1; --text-7xl: 4.5rem; --text-7xl--line-height: 1; --text-8xl: 6rem; --text-8xl--line-height: 1; --font-weight-thin: 100; --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --tracking-tight: -0.025em; --tracking-wide: 0.025em; --tracking-wider: 0.05em; --tracking-widest: 0.1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; --radius-sm: 0.25rem; --radius-md: 0.375rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; --ease-out: cubic-bezier(0, 0, 0.2, 1); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); --animate-spin: spin 1s linear infinite; --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --animate-bounce: bounce 1s infinite; --blur-sm: 8px; --blur-xl: 24px; --aspect-video: 16 / 9; --default-transition-duration: 150ms; --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); --default-font-family: var(--font-sans); --default-mono-font-family: var(--font-mono); } } @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%; -moz-tab-size: 4; -o-tab-size: 4; 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; } ::-moz-placeholder { opacity: 1; } ::placeholder { opacity: 1; } @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { ::-moz-placeholder { color: currentcolor; @supports (color: color-mix(in lab, red, red)) { color: color-mix(in oklab, currentcolor 50%, transparent); } } ::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 { -webkit-appearance: button; -moz-appearance: button; appearance: button; } ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; } [hidden]:where(:not([hidden="until-found"])) { display: none !important; } } @layer utilities { .diff { position: relative; display: grid; width: 100%; overflow: hidden; webkit-user-select: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; direction: ltr; container-type: inline-size; grid-template-columns: auto 1fr; &:focus-visible, &:has(.diff-item-1:focus-visible) { outline-style: var(--tw-outline-style); outline-width: 2px; outline-offset: 1px; outline-color: var(--color-base-content); } &:focus-visible { outline-style: var(--tw-outline-style); outline-width: 2px; outline-offset: 1px; outline-color: var(--color-base-content); .diff-resizer { min-width: 90cqi; max-width: 90cqi; } } &:has(.diff-item-2:focus-visible) { outline-style: var(--tw-outline-style); outline-width: 2px; outline-offset: 1px; .diff-resizer { min-width: 10cqi; max-width: 10cqi; } } @supports (-webkit-overflow-scrolling: touch) and (overflow: -webkit-paged-x) { &:focus { .diff-resizer { min-width: 10cqi; max-width: 10cqi; } } &:has(.diff-item-1:focus) { .diff-resizer { min-width: 90cqi; max-width: 90cqi; } } } } .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; &::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%; } } } .drawer-side { pointer-events: none; visibility: hidden; position: fixed; inset-inline-start: calc(0.25rem * 0); top: calc(0.25rem * 0); z-index: 1; grid-column-start: 1; grid-row-start: 1; display: grid; width: 100%; grid-template-columns: repeat(1, minmax(0, 1fr)); grid-template-rows: repeat(1, minmax(0, 1fr)); align-items: flex-start; justify-items: start; overflow-x: hidden; overflow-y: hidden; overscroll-behavior: contain; opacity: 0%; transition: opacity 0.2s ease-out 0.1s allow-discrete, visibility 0.3s ease-out 0.1s allow-discrete; height: 100vh; height: 100dvh; > .drawer-overlay { position: sticky; top: calc(0.25rem * 0); cursor: pointer; place-self: stretch; background-color: oklch(0% 0 0 / 40%); } > * { grid-column-start: 1; grid-row-start: 1; } > *:not(.drawer-overlay) { will-change: transform; transition: translate 0.3s ease-out; translate: -100%; [dir="rtl"] & { translate: 100%; } } } .drawer-toggle { position: fixed; height: calc(0.25rem * 0); width: calc(0.25rem * 0); -webkit-appearance: none; -moz-appearance: none; appearance: none; opacity: 0%; &:checked { & ~ .drawer-side { pointer-events: auto; visibility: visible; overflow-y: auto; opacity: 100%; & > *:not(.drawer-overlay) { translate: 0%; } } } &:focus-visible ~ .drawer-content label.drawer-button { outline: 2px solid; outline-offset: 2px; } } .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; 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; background-color: var(--tt-bg); width: -moz-max-content; width: max-content; pointer-events: none; z-index: 2; --tw-content: attr(data-tip); content: var(--tw-content); } &:after { position: absolute; position: absolute; opacity: 0%; background-color: var(--tt-bg); 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; content: ""; pointer-events: none; width: 0.625rem; height: 0.25rem; display: block; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: -1px 0; 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"); -webkit-mask-image: var(--mask-tooltip); 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; 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; -webkit-appearance: none; -moz-appearance: none; appearance: none; flex-wrap: wrap; align-items: center; justify-content: center; text-align: center; webkit-user-select: none; -webkit-user-select: none; -moz-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: -moz-fit-content; min-width: fit-content; &:after { content: attr(aria-label); } } &:is(label) { position: relative; input { position: absolute; inset: calc(0.25rem * 0); cursor: pointer; -webkit-appearance: none; -moz-appearance: none; appearance: none; opacity: 0%; } } &:checked, &:is(label:has(:checked)), &:is(.tab-active, [aria-selected="true"]) { & + .tab-content { display: block; height: calc(100% - var(--tab-height) + var(--border)); } } &:not(:checked, label:has(:checked), :hover, .tab-active, [aria-selected="true"]) { 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: -moz-fit-content; 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; -webkit-user-select: none; -moz-user-select: none; 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); 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; } } .dock { position: fixed; right: calc(0.25rem * 0); bottom: calc(0.25rem * 0); left: calc(0.25rem * 0); z-index: 1; display: flex; width: 100%; flex-direction: row; align-items: center; justify-content: space-around; background-color: var(--color-base-100); padding: calc(0.25rem * 2); color: currentColor; border-top: 0.5px solid var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { border-top: 0.5px solid color-mix(in oklab, var(--color-base-content) 5%, #0000); } height: 4rem; height: calc(4rem + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom); > * { position: relative; margin-bottom: calc(0.25rem * 2); display: flex; height: 100%; max-width: calc(0.25rem * 32); flex-shrink: 1; flex-basis: 100%; cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border-radius: var(--radius-box); background-color: transparent; transition: opacity 0.2s ease-out; @media (hover: hover) { &:hover { opacity: 80%; } } &[aria-disabled="true"], &[disabled] { &, &:hover { 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) 10%, transparent); } opacity: 100%; } } .dock-label { font-size: 0.6875rem; } &:after { content: ""; position: absolute; height: calc(0.25rem * 1); width: calc(0.25rem * 6); border-radius: calc(infinity * 1px); background-color: transparent; bottom: 0.2rem; border-top: 3px solid transparent; transition: background-color 0.1s ease-out, text-color 0.1s ease-out, width 0.1s ease-out; } } } .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; 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; -webkit-user-select: none; -moz-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 { 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"]) { -webkit-appearance: none; -moz-appearance: none; 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 !important; display: inline-block !important; aspect-ratio: 1 / 1 !important; background-color: currentColor !important; vertical-align: middle !important; width: calc(var(--size-selector, 0.25rem) * 6) !important; -webkit-mask-size: 100% !important; mask-size: 100% !important; -webkit-mask-repeat: no-repeat !important; mask-repeat: no-repeat !important; -webkit-mask-position: center !important; mask-position: center !important; -webkit-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") !important; 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") !important; } .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); -webkit-mask-size: 100%; mask-size: 100%; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; -webkit-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"); 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"); } .tab-disabled { pointer-events: none; opacity: 40%; } .pointer-events-none { pointer-events: none; } .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; transition: grid-template-rows 0.2s; isolation: isolate; > input:is([type="checkbox"], [type="radio"]) { grid-column-start: 1; grid-row-start: 1; -webkit-appearance: none; -moz-appearance: none; 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: -moz-fit-content; 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; transition: padding 0.2s ease-out, background-color 0.2s ease-out; } &:is([open]) { &.collapse-arrow { > .collapse-title:after { transform: translateY(-50%) rotate(225deg); } } } &.collapse-open { &.collapse-arrow { > .collapse-title:after { 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; transition: visibility 0.2s, padding 0.2s ease-out, background-color 0.2s ease-out; } .collapse-open { grid-template-rows: max-content 1fr; > .collapse-content { visibility: visible; min-height: -moz-fit-content; min-height: fit-content; padding-bottom: 1rem; transition: padding 0.2s ease-out, background-color 0.2s ease-out; } } .collapse { visibility: collapse; } .visible { visibility: visible; } .radial-progress { position: relative; display: inline-grid; height: var(--size); width: var(--size); place-content: center; border-radius: calc(infinity * 1px); background-color: transparent; vertical-align: middle; box-sizing: content-box; --value: 0; --size: 5rem; --thickness: calc(var(--size) / 10); --radialprogress: calc(var(--value) * 1%); transition: --radialprogress 0.3s linear; &:before { position: absolute; inset: calc(0.25rem * 0); border-radius: calc(infinity * 1px); content: ""; background: radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0); webkit-mask: radial-gradient( farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + 0.5px - var(--thickness)) ); -webkit-mask: radial-gradient( farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + 0.5px - var(--thickness)) ); mask: radial-gradient( farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + 0.5px - var(--thickness)) ); } &:after { position: absolute; border-radius: calc(infinity * 1px); background-color: currentColor; transition: transform 0.3s linear; content: ""; inset: calc(50% - var(--thickness) / 2); transform: rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%)); } } .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); } } } } } .toast { position: fixed; inset-inline-start: auto; inset-inline-end: calc(0.25rem * 4); top: auto; bottom: calc(0.25rem * 4); display: flex; flex-direction: column; gap: calc(0.25rem * 2); background-color: transparent; translate: var(--toast-x, 0) var(--toast-y, 0); width: -moz-max-content; width: max-content; max-width: calc(100vw - 2rem); & > * { animation: toast 0.25s ease-out; } &:where(.toast-start) { inset-inline-start: calc(0.25rem * 4); inset-inline-end: auto; --toast-x: 0; } &:where(.toast-center) { inset-inline-start: calc(1/2 * 100%); inset-inline-end: calc(1/2 * 100%); --toast-x: -50%; } &:where(.toast-end) { inset-inline-start: auto; inset-inline-end: calc(0.25rem * 4); --toast-x: 0; } &:where(.toast-bottom) { top: auto; bottom: calc(0.25rem * 4); --toast-y: 0; } &:where(.toast-middle) { top: calc(1/2 * 100%); bottom: auto; --toast-y: -50%; } &:where(.toast-top) { top: calc(0.25rem * 4); bottom: auto; --toast-y: 0; } } .toggle { border: var(--border) solid currentColor; color: var(--input-color); position: relative; display: inline-grid; flex-shrink: 0; cursor: pointer; -webkit-appearance: none; -moz-appearance: none; appearance: none; place-content: center; vertical-align: middle; webkit-user-select: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; grid-template-columns: 0fr 1fr 1fr; --radius-selector-max: calc( var(--radius-selector) + var(--radius-selector) + var(--radius-selector) ); border-radius: calc( var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)) ); padding: var(--toggle-p); box-shadow: 0 1px currentColor inset; @supports (color: color-mix(in lab, red, red)) { box-shadow: 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset; } transition: color 0.3s, grid-template-columns 0.2s; --input-color: var(--color-base-content); @supports (color: color-mix(in lab, red, red)) { --input-color: color-mix(in oklab, var(--color-base-content) 50%, #0000); } --toggle-p: calc(var(--size) * 0.125); --size: calc(var(--size-selector, 0.25rem) * 6); width: calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2); height: var(--size); > * { z-index: 1; grid-column: span 1 / span 1; grid-column-start: 2; grid-row-start: 1; height: 100%; cursor: pointer; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: transparent; padding: calc(0.25rem * 0.5); transition: opacity 0.2s, rotate 0.4s; border: none; &:focus { --tw-outline-style: none; outline-style: none; @media (forced-colors: active) { outline: 2px solid transparent; outline-offset: 2px; } } &:nth-child(2) { color: var(--color-base-100); rotate: 0deg; } &:nth-child(3) { color: var(--color-base-100); opacity: 0%; rotate: -15deg; } } &:has(:checked) { > :nth-child(2) { opacity: 0%; rotate: 15deg; } > :nth-child(3) { opacity: 100%; rotate: 0deg; } } &:before { position: relative; inset-inline-start: calc(0.25rem * 0); grid-column-start: 2; grid-row-start: 1; aspect-ratio: 1 / 1; height: 100%; border-radius: var(--radius-selector); background-color: currentColor; translate: 0; --tw-content: ""; content: var(--tw-content); transition: background-color 0.1s, translate 0.2s, inset-inline-start 0.2s; 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 currentColor; @supports (color: color-mix(in lab, red, red)) { 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 color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000); } background-size: auto, calc(var(--noise) * 100%); background-image: none, var(--fx-noise); } @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; } } &:focus-visible, &:has(:focus-visible) { outline: 2px solid currentColor; outline-offset: 2px; } &:checked, &[aria-checked="true"], &:has(> input:checked) { grid-template-columns: 1fr 1fr 0fr; background-color: var(--color-base-100); --input-color: var(--color-base-content); &:before { background-color: currentColor; } @starting-style { &:before { opacity: 0; } } } &:indeterminate { grid-template-columns: 0.5fr 1fr 0.5fr; } &:disabled { cursor: not-allowed; opacity: 30%; &:before { background-color: transparent; border: var(--border) solid currentColor; } } } .input { cursor: text; border: var(--border) solid #0000; position: relative; display: inline-flex; flex-shrink: 1; -webkit-appearance: none; -moz-appearance: none; 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