@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap'); :root { --radius: 0.5rem; --background: oklch(1 0 0); --foreground: oklch(0.141 0.005 285.823); --card: oklch(1 0 0); --card-foreground: oklch(0.141 0.005 285.823); --popover: oklch(1 0 0); --popover-foreground: oklch(0.141 0.005 285.823); --primary: oklch(0.21 0.006 285.885); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.967 0.001 286.375); --secondary-foreground: oklch(0.21 0.006 285.885); --muted: oklch(0.967 0.001 286.375); --muted-foreground: oklch(0.552 0.016 285.938); --accent: oklch(0.967 0.001 286.375); --accent-foreground: oklch(0.21 0.006 285.885); --destructive: oklch(0.577 0.245 27.325); --border-color: oklch(0.92 0.004 286.32); --input: oklch(0.92 0.004 286.32); --ring: oklch(0.705 0.015 286.067); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.141 0.005 285.823); --sidebar-primary: oklch(0.21 0.006 285.885); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.967 0.001 286.375); --sidebar-accent-foreground: oklch(0.21 0.006 285.885); --sidebar-border: oklch(0.92 0.004 286.32); --sidebar-ring: oklch(0.705 0.015 286.067); --shadow: 0px 10px 15px -3px rgba(0,0,0,0.1),0px 4px 6px -2px rgba(0,0,0,0.05); --border: 1px solid var(--border-color); --toggle-bg: oklch(0.705 0.015 286.067); --toggle-knob: oklch(1 0 0); } @media (prefers-color-scheme: dark) { :root { --background: oklch(0.141 0.005 285.823); --foreground: oklch(0.985 0 0); --card: oklch(0.21 0.006 285.885); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.21 0.006 285.885); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.92 0.004 286.32); --primary-foreground: oklch(0.21 0.006 285.885); --secondary: oklch(0.274 0.006 286.033); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.274 0.006 286.033); --muted-foreground: oklch(0.705 0.015 286.067); --accent: oklch(0.274 0.006 286.033); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --border-color: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.552 0.016 285.938); --sidebar: oklch(0.21 0.006 285.885); --sidebar-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --toggle-bg: oklch(0.4 0.016 285.938); } } html[data-theme='light'] { color-scheme: light; --background: oklch(1 0 0); --foreground: oklch(0.141 0.005 285.823); --primary: oklch(0.21 0.006 285.885); --toggle-bg: oklch(0.705 0.015 286.067); } html[data-theme='dark'] { color-scheme: dark; --background: oklch(0.141 0.005 285.823); --foreground: oklch(0.985 0 0); --primary: oklch(0.92 0.004 286.32); --toggle-bg: oklch(0.4 0.016 285.938); } * { margin: 0; padding: 0; box-sizing: border-box; scrollbar-width: auto; scrollbar-color: var(--muted-foreground) var(--muted); } *::-webkit-scrollbar { width: 12px; } *::-webkit-scrollbar-thumb { background: var(--muted-foreground); border-radius: 6px; border: 2px solid var(--background); } *::-webkit-scrollbar-track { background: var(--muted); border-radius: 6px; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; background-color: var(--background); color: var(--foreground); line-height: 1.5; padding: 2rem 1rem; transition: background-color 0.3s ease, color 0.3s ease; max-width: 900px; margin: 0 auto; } h1, h2, h3, h4, h5, h6 { margin-bottom: 0.5em; font-weight: 700; } h1 { letter-spacing: -0.025em; font-size: 1.875rem; line-height: 2.25rem; } h2 { letter-spacing: -0.025em; font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; } h3 { letter-spacing: -0.025em; font-size: 1.125rem; line-height: 1.75rem; font-weight: 600; } p { margin: 1em 0; } a { color: var(--primary); text-decoration: none; transition: color 0.2s ease; } a:hover { text-decoration: underline; color: color-mix(in srgb, var(--primary) 80%, transparent); } ul, ol { margin-bottom: 1em; padding-left: 1.5em; } header { margin-bottom: 2rem; } nav ul { list-style: none; padding: 0; display: flex; gap: 1rem; } section { margin-bottom: 2rem; } form { display: flex; flex-direction: column; gap: 1rem; } input, select, textarea { font: inherit; padding: 0.5rem; border: var(--border); border-radius: var(--radius); background-color: var(--background); color: var(--foreground); font-size: 0.875rem; transition: border-color 0.2s ease, box-shadow 0.2s ease; } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--ring); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 15%, transparent); } /* Modern Checkbox */ input[type="checkbox"] { appearance: none; width: 1.2rem; height: 1.2rem; border: 2px solid var(--border-color); border-radius: 4px; background: var(--background); cursor: pointer; position: relative; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); vertical-align: middle; margin-right: 0.5rem; } input[type="checkbox"]:checked { background: var(--primary); border-color: var(--primary); } input[type="checkbox"]:checked::after { content: "✓"; position: absolute; color: var(--primary-foreground); font-size: 0.85rem; font-weight: bold; left: 50%; top: 50%; transform: translate(-50%, -50%); } input[type="checkbox"]:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 30%, transparent); } /* Modern Radio */ input[type="radio"] { appearance: none; width: 1.2rem; height: 1.2rem; border: 2px solid var(--border-color); border-radius: 50%; background: var(--background); cursor: pointer; position: relative; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); vertical-align: middle; margin-right: 0.5rem; } input[type="radio"]:checked { border-color: var(--primary); background: var(--primary); box-shadow: inset 0 0 0 3px var(--background); } input[type="radio"]:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 30%, transparent); } /* Modern Switch (Toggle) */ input[type="checkbox"].toggle { appearance: none; width: 3rem; height: 1.5rem; background: var(--toggle-bg); border-radius: 9999px; border: none; position: relative; cursor: pointer; transition: background 0.3s cubic-bezier(0.4, 0, 0.2, 1); margin-right: 0.5rem; } input[type="checkbox"].toggle::before { content: ""; position: absolute; width: 1.25rem; height: 1.25rem; background: var(--toggle-knob); border-radius: 50%; top: 0.125rem; left: 0.125rem; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 1px 3px rgba(0,0,0,0.2); } input[type="checkbox"].toggle:checked { background: var(--primary); } input[type="checkbox"].toggle:checked::before { transform: translateX(1.5rem); } input[type="checkbox"].toggle:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 30%, transparent); } /* Modern Range */ input[type="range"] { appearance: none; width: 100%; height: 4px; background: var(--border-color); border-radius: 9999px; outline: none; cursor: pointer; } input[type="range"]::-webkit-slider-thumb { appearance: none; width: 1rem; height: 1rem; background: var(--primary); border-radius: 50%; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; box-shadow: 0 1px 3px rgba(0,0,0,0.2); } input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.2); } input[type="range"]:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 30%, transparent); } /* Buttons */ button, input[type="submit"], input[type="button"], input[type="reset"] { font: inherit; cursor: pointer; font-size: 0.875rem; font-weight: 500; padding: 0.5rem 1rem; border-radius: var(--radius); transition: all 0.2s ease; } button { border: none; background-color: var(--primary); color: var(--primary-foreground); } button:hover { background-color: color-mix(in srgb, var(--primary) 90%, transparent); } button:active { transform: scale(0.98); } button[secondary] { background-color: var(--secondary); color: var(--secondary-foreground); } button[secondary]:hover { background-color: color-mix(in srgb, var(--secondary) 90%, transparent); } input[type="submit"] { border: var(--border); background-color: transparent; color: var(--foreground); } input[type="submit"]:hover { background-color: color-mix(in srgb, var(--muted) 90%, transparent); } input[type="button"] { border: none; background-color: transparent; color: var(--foreground); } input[type="button"]:hover { background-color: var(--muted); } input[type="reset"] { border: none; background-color: var(--destructive); color: var(--primary-foreground); } input[type="reset"]:hover { background-color: color-mix(in srgb, var(--destructive) 90%, transparent); } fieldset { border: var(--border); border-radius: var(--radius); padding: 1rem; display: flex; gap: 0.5rem; } fieldset[role="group"] { border: none; padding: 1rem; display: flex; gap: 0; } fieldset[role="group"] > * { border-radius: 0; } fieldset[role="group"] > *:first-child { border-top-left-radius: var(--radius); border-bottom-left-radius: var(--radius); border-right: 0; } fieldset[role="group"] > *:last-child { border-top-right-radius: var(--radius); border-bottom-right-radius: var(--radius); border-right: var(--border); } legend { padding: 0 0.5rem; } label { display: block; } small { color: var(--muted-foreground); } img { max-width: 100%; height: auto; border-radius: var(--radius); } img[avatar] { border-radius: 50%; } blockquote { border-left: 4px solid var(--border-color); padding-left: 1rem; font-style: italic; } progress { width: 100%; appearance: none; height: 0.5rem; border-radius: 9999px; background-color: var(--muted); border: 0; } progress::-webkit-progress-value { border-radius: 9999px; background-color: var(--primary); } progress::-moz-progress-bar { border-radius: 9999px; background-color: var(--primary); } details { border: var(--border); border-radius: var(--radius); padding: 0.5rem; margin-bottom: 1rem; } summary { cursor: pointer; font-weight: bold; } article { border: var(--border); border-radius: var(--radius); padding: 1rem; margin-bottom: 1rem; } footer { margin-top: 2rem; color: var(--muted-foreground); } /* Dialog, Drawer, Sheet Animations */ dialog { background-color: var(--background); color: var(--foreground); border: var(--border); border-radius: var(--radius); padding: 24px; margin: auto; opacity: 0; transform: scale(0.95); transition: opacity 0.2s ease, transform 0.2s ease; } dialog[open] { opacity: 1; transform: scale(1); } dialog::backdrop { background-color: rgba(0, 0, 0, 0.8); transition: backdrop-filter 0.2s ease; } dialog[drawer] { border-bottom-right-radius: 0; border-bottom-left-radius: 0; top: auto; bottom: 0; max-height: 50vh; transform: translateY(100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease; } dialog[drawer][open] { transform: translateY(0); } dialog[sheet-top], dialog[sheet-bottom], dialog[sheet-left], dialog[sheet-right] { border-radius: 0; margin: 0; } dialog[sheet-top], dialog[sheet-bottom] { width: 100vw; max-height: 50vh; } dialog[sheet-left], dialog[sheet-right] { height: 100vh; max-width: 50vw; } dialog[sheet-top] { transform: translateY(-100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } dialog[sheet-top][open] { transform: translateY(0); } dialog[sheet-bottom] { transform: translateY(100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); top: auto; bottom: 0; } dialog[sheet-bottom][open] { transform: translateY(0); } dialog[sheet-left] { transform: translateX(-100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } dialog[sheet-left][open] { transform: translateX(0); } dialog[sheet-right] { transform: translateX(100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); left: auto; right: 0; } dialog[sheet-right][open] { transform: translateX(0); } /* Accordion Animation */ details { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } details[open] summary ~ * { animation: accordion-slide 0.3s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes accordion-slide { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Sidebar Animation */ aside { background-color: var(--sidebar); border: 1px solid var(--sidebar-border); display: flex; flex-direction: column; justify-content: space-between; position: relative; padding: 0.5rem; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } aside[data-collapsed="true"] { transform: translateX(-100%); } /* Utility */ [aria-busy="true"] { opacity: 0.7; cursor: progress; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } } @media (max-width: 600px) { body { padding: 0.5rem; } nav ul { flex-direction: column; } } :disabled, [disabled] { cursor: not-allowed; opacity: 0.5; pointer-events: none; } hr { border: 0; height: 1px; margin: 1rem 0; background-color: var(--border-color); } kbd { padding: 0.125rem 0.625rem; background-color: var(--primary); color: var(--primary-foreground); border-radius: 6px; font-weight: bold; } table { border-collapse: collapse; width: 100%; } table th { color: var(--muted-foreground); text-align: start; padding: 0.5rem; } table td { padding: 0.5rem; text-align: start; } table tr { border-bottom: var(--border); } pre { border-radius: var(--radius); overflow-x: auto; } code { border: var(--border); border-radius: var(--radius); background-color: var(--primary); color: var(--primary-foreground); padding: 0.2rem; } [tooltip-top], [tooltip-bottom], [tooltip-left], [tooltip-right] { position: relative; } [tooltip-top]::after, [tooltip-bottom]::after, [tooltip-left]::after, [tooltip-right]::after { position: absolute; white-space: nowrap; background-color: var(--primary); color: var(--primary-foreground); padding: 6px 8px; font-size: 0.875em; border-radius: var(--radius); opacity: 0; transition: opacity 0.2s ease; pointer-events: none; } [tooltip-top]:hover::after, [tooltip-bottom]:hover::after, [tooltip-left]:hover::after, [tooltip-right]:hover::after { opacity: 1; } [tooltip-top]::after { content: attr(tooltip-top); left: 50%; top: -0.8rem; transform: translateX(-50%) translateY(-100%); } [tooltip-bottom]::after { content: attr(tooltip-bottom); left: 50%; top: calc(100% + 0.8rem); transform: translateX(-50%); } [tooltip-left]::after { content: attr(tooltip-left); left: -0.3rem; top: 50%; transform: translateX(-100%) translateY(-50%); } [tooltip-right]::after { content: attr(tooltip-right); left: calc(100% + 0.3rem); top: 50%; transform: translateY(-50%); } menu { display: flex; flex-direction: row; border: var(--border); border-radius: var(--radius); width: fit-content; list-style: none; } menu li { padding: 0.25rem 0.75rem; } div[skeleton] { background-color: var(--input); animation: shimmer 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; border-radius: var(--radius); } @keyframes shimmer { 50% { opacity: 0.5; } } [popover] { inset: unset; position: absolute; bottom: calc(anchor(top) + 5px); justify-self: anchor-center; margin: 0; border: var(--border); border-radius: var(--radius); padding: 0.5rem; } nav { display: flex; align-items: center; --separator: attr(breadcrumb, '>'); } nav > a { padding: 0 0.625rem 0 0; color: var(--muted-foreground); } nav > a::after { padding: 0 0 0 0.625rem; display: inline-block; content: var(--separator); } nav > a:last-child { color: var(--foreground); } nav > a:last-child::after { content: ''; }