:root { --bg: hsl(202deg 100% 96%); --bg-darker: hsl(202deg 90% 90%); --bg-lighter: hsl(225deg 100% 88%); --bg-lighter-transparent: hsla(225deg 100% 88% / 50%); --bg-darker-very-transparent: hsl(202deg 90% 90% / 50%); --bg-darker-transparent: hsla(202deg 90% 90% / 65%); --bg-badge: #000; --badge-text: rgb(255 255 255 / 95%); --border: hsl(237deg 100% 86%); --button-text: rgb(255 255 255 / 85%); --button-text-transparent: rgb(0 0 0 / 65%); --text: rgb(0 0 0 / 95%); --text-lighter: rgb(75 75 75 / 95%); --theme-error: rgb(199 13 6); --theme-error-transparent: rgba(199 13 6 / 75%); --theme-warning: #c9c900; --theme-success: #00a514; --theme-success-transparent: #00a51452; --theme: hsl(255deg 64% 63%); --theme-vibrant: hsl(255deg 100% 81%); --theme-transparent: hsl(255deg 66.7% 75% / 40%); --theme-very-transparent: hsl(255deg 66.7% 75% / 30%); --theme-transparent-vibrant: hsl(255deg 100% 81% / 54%); --theme-semi-transparent-vibrant: hsl(255deg 100% 81% / 75%); --theme-secondary: hsl(85deg 66.7% 55.3%); --rounded: 16px; --rounded-sm: 10px; --fonts-xl: 1.5rem; --fonts-lg: 1.2rem; --fonts-md: 1rem; --fonts-sm: 0.92rem; --fonts-xs: 0.8rem; --fonts-xxs: 0.7rem; --fonts-xxxs: 0.6rem; --fonts-xxxxs: 0.5rem; --extra-bold: 700; --bold: 600; --semi-bold: 500; --body: 400; --s-1: 0.25rem; --s-1-5: 0.375rem; --s-2: 0.5rem; --s-2-5: 0.625rem; --s-3: 0.75rem; --s-4: 1rem; --s-5: 1.25rem; --s-6: 1.5rem; --s-7: 1.75rem; --s-8: 2rem; --s-9: 2.25rem; --s-10: 2.5rem; --s-11: 2.75rem; --s-12: 3rem; --s-14: 3.5rem; --s-16: 4rem; --s-20: 5rem; --s-24: 6rem; --s-28: 7rem; --s-32: 8rem; --s-40: 10rem; --s-48: 12rem; --s-56: 14rem; --s-64: 16rem; --s-72: 18rem; --s-80: 20rem; --s-96: 2rem; --sparse: 0.4px; --label-margin: var(--s-1); } @media (prefers-color-scheme: dark) { :root { --bg: hsl(237.3deg 42.3% 30.6%); --bg-darker: hsl(237.3deg 42.3% 26.6%); --bg-lighter: hsl(237.3deg 42.3% 35.6%); --bg-lighter-transparent: rgb(64 67 108 / 50%); --bg-darker-very-transparent: hsla(237.3deg 42.3% 26.6% / 50%); --bg-darker-transparent: hsla(237.3deg 42.3% 26.6% / 90%); --bg-badge: #000; --border: hsl(237.3deg 42.3% 45.6%); --button-text: rgb(0 0 0 / 85%); --button-text-transparent: rgb(0 0 0 / 65%); --text: rgb(255 255 255 / 95%); --text-lighter: rgb(255 255 255 / 55%); --theme-error: rgb(219 70 65); --theme-error-transparent: rgba(219 70 65 / 75%); --theme-warning: #f5f587; --theme-success: #a3ffae; --theme-success-transparent: #a3ffae52; --theme: hsl(255deg 66.7% 75%); --theme-vibrant: hsl(255deg 78% 65%); --theme-transparent: hsl(255deg 66.7% 75% / 40%); --theme-transparent-vibrant: hsl(255deg 78% 65% / 54%); --theme-semi-transparent-vibrant: hsl(255deg 78% 65% / 75%); --theme-secondary: hsl(85deg 66.7% 55.3%); } } /* xs: "(min-width: 480px)", sm: "(min-width: 640px)", md: "(min-width: 768px)", lg: "(min-width: 1024px)", xl: "(min-width: 1280px)", */ *, *::before, *::after { box-sizing: border-box; } body { width: 100%; background-color: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: antialiased; line-height: 1.55; overflow-x: hidden; } *:focus:not(:focus-visible) { outline: none !important; } a { color: var(--theme); font-weight: var(--semi-bold); text-decoration: none; } :is(button, .button) { display: flex; width: auto; align-items: center; justify-content: center; border: 2px solid var(--theme); appearance: none; background: var(--theme); border-radius: var(--rounded-sm); color: var(--button-text); cursor: pointer; font-size: var(--fonts-sm); font-weight: var(--bold); line-height: 1.2; outline-offset: 2px; padding-block: var(--s-1-5); padding-inline: var(--s-2-5); user-select: none; } :is(button, .button):focus-visible { outline: 2px solid var(--theme); } :is(button, .button):active { transform: translateY(1px); } :is(button, .button):disabled { cursor: not-allowed; opacity: 0.5; transform: initial; } :is(button, .button).outlined { background-color: transparent; color: var(--theme); } :is(button, .button).outlined-success { border-color: var(--theme-success); background-color: transparent; color: var(--theme-success); } :is(button, .button).tiny { font-size: var(--fonts-xs); padding-block: var(--s-1); padding-inline: var(--s-2); } :is(button, .button).minimal { padding: 0; border: none; background-color: transparent; color: var(--theme); outline: initial; } :is(button, .button).minimal-success { padding: 0; border: none; background-color: transparent; color: var(--theme-success); } :is(button, .button).success { border-color: var(--theme-success); background-color: var(--theme-success); outline-color: var(--theme-success); } :is(button, .button).destructive { border-color: var(--theme-error); background-color: transparent; color: var(--theme-error); outline-color: var(--theme-error); } :is(button, .button).minimal-destructive { padding: 0; border: none; background-color: transparent; color: var(--theme-error); outline-color: var(--theme-error); } :is(button, .button).loading { cursor: not-allowed; opacity: 0.6; } .button-icon { width: 1.25rem; margin-inline-end: var(--s-1-5); } .button-icon.lonely { margin-inline-end: 0; } :is(button, .button).tiny > .button-icon { width: 1rem; margin-inline-end: var(--s-1); } textarea:not(.plain) { padding: var(--s-2-5) var(--s-3); border: 1px solid var(--border); accent-color: var(--theme-secondary); background-color: transparent; border-radius: var(--rounded); color: var(--text); font-size: var(--fonts-sm); outline: none; overflow-wrap: normal; overflow-x: scroll; white-space: pre; } progress { accent-color: var(--theme); } textarea:not(.plain):focus-within { border-color: transparent; /* TODO: rectangle on Safari */ outline: 2px solid var(--theme); } input:not(.plain) { height: 1rem; padding: var(--s-4) var(--s-3); border: 1px solid var(--border); accent-color: var(--theme-secondary); background-color: transparent; border-radius: var(--rounded); color: var(--text); font-size: var(--fonts-sm); outline: none; } input:user-invalid { border-color: transparent; outline: 2px solid var(--theme-error); } input:not(.plain):focus-within { border-color: transparent; /* TODO: rectangle on Safari */ outline: 2px solid var(--theme); } input:not(.plain)::placeholder { color: var(--text-lighter); font-size: var(--fonts-xxs); font-weight: var(--semi-bold); letter-spacing: 0.5px; } input:not(.plain).error { border-color: transparent; outline: 2px solid var(--theme-error); } input[type="checkbox"] { width: 16px; height: 16px; } label { display: block; font-size: var(--fonts-xs); font-weight: var(--bold); margin-block-end: var(--label-margin); } details summary { cursor: pointer; } fieldset { border: none; background-color: var(--bg-darker-transparent); border-radius: var(--rounded); font-size: var(--fonts-sm); padding-block-end: var(--s-3); padding-inline: var(--s-3); } legend { background-color: transparent; border-radius: 2px; border-radius: var(--rounded-sm); font-size: var(--fonts-xs); font-weight: var(--bold); } article { padding-inline: var(--s-3); white-space: pre-line; } select { all: unset; width: 90%; border: 1px solid var(--border); background: var(--select-background, var(--bg-lighter)); /* TODO: Get color from CSS var */ background-image: url('data:image/svg+xml;utf8,'); background-position-x: 92%; background-position-y: 50%; background-repeat: no-repeat; border-radius: var(--rounded); cursor: pointer; font-size: var(--fonts-sm); font-weight: 500; padding-block: 3.5px; padding-inline: var(--s-3); } select::selection { overflow: hidden; font-weight: bold; } select:focus { outline: 2px solid var(--theme); } hr { border-color: var(--theme-transparent); } abbr:not([title]) { text-decoration: none; } abbr[title] { cursor: help; } dialog { width: min(90%, 24rem); border: 0; margin: auto; background-color: var(--bg); border-radius: var(--rounded); } dialog::backdrop { background: hsla(237deg 98% 1% / 70%); } @supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { dialog::backdrop { -webkit-backdrop-filter: blur(7px) brightness(70%); backdrop-filter: blur(7px) brightness(70%); background-color: transparent; } } dialog[open], dialog::backdrop { animation: show 500ms ease; } @keyframes show { 0% { opacity: 0; } }