@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
@font-face {
font-family: "InterVariable";
src: url("/static/fonts/InterVariable.woff2") format("woff2-variations");
font-weight: 100 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "InterVariable";
src: url("/static/fonts/InterVariable-Italic.woff2")
format("woff2-variations");
font-weight: 100 600;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "InterVariable";
src: url("/static/fonts/InterDisplay-Bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "InterVariable";
src: url("/static/fonts/InterDisplay-BoldItalic.woff2") format("woff2");
font-weight: bold;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "IBMPlexMono";
src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "IBMPlexMono";
src: url("/static/fonts/IBMPlexMono-Italic.woff2") format("woff2");
font-weight: normal;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "IBMPlexMono";
src: url("/static/fonts/IBMPlexMono-Bold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "IBMPlexMono";
src: url("/static/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2");
font-weight: bold;
font-style: italic;
font-display: swap;
}
::selection {
@apply bg-yellow-400 text-black bg-opacity-30 dark:bg-yellow-600 dark:bg-opacity-50 dark:text-white;
}
@layer base {
html {
font-size: 14px;
scrollbar-gutter: stable;
}
@supports (font-variation-settings: normal) {
html {
font-feature-settings:
"kern" 1,
"liga" 1,
"cv05" 1,
"tnum" 1;
}
}
a {
@apply no-underline text-black hover:underline hover:text-gray-800 dark:text-white dark:hover:text-gray-300;
}
label {
@apply block text-gray-900 text-sm py-2 dark:text-gray-100;
}
input,
textarea {
@apply block rounded p-3
bg-white dark:bg-gray-800 dark:text-white
border border-gray-200 dark:border-gray-600
focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500;
}
input[type="checkbox"] {
@apply appearance-none size-4 p-0 rounded
bg-transparent border border-gray-200
hover:bg-gray-100
checked:bg-gray-900 checked:border-transparent
checked:hover:bg-gray-800
indeterminate:bg-gray-900 indeterminate:border-transparent
disabled:cursor-not-allowed disabled:bg-gray-100 disabled:border-gray-200
disabled:checked:bg-gray-300 disabled:checked:border-transparent
disabled:indeterminate:bg-gray-100 disabled:indeterminate:border-gray-200
dark:border-gray-600
dark:hover:bg-gray-700
dark:checked:bg-gray-100
dark:checked:hover:bg-gray-200
dark:checked:border-gray-400
dark:indeterminate:bg-gray-100 dark:indeterminate:border-transparent
dark:disabled:bg-gray-700 dark:disabled:border-gray-600
dark:disabled:checked:bg-gray-500 dark:disabled:checked:border-transparent
dark:disabled:indeterminate:bg-gray-700 dark:disabled:indeterminate:border-gray-600
focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500;
background-position: center;
background-repeat: no-repeat;
background-size: 12px;
}
input[type="checkbox"]:checked {
background-image: url("data:image/svg+xml,");
}
input[type="checkbox"]:indeterminate {
background-image: url("data:image/svg+xml,");
}
input[type="checkbox"]:disabled:indeterminate {
background-image: url("data:image/svg+xml,");
}
@media (prefers-color-scheme: dark) {
input[type="checkbox"]:checked {
background-image: url("data:image/svg+xml,");
}
input[type="checkbox"]:indeterminate {
background-image: url("data:image/svg+xml,");
}
input[type="checkbox"]:disabled:indeterminate {
background-image: url("data:image/svg+xml,");
}
}
input[type="radio"] {
@apply appearance-none size-4 p-0 rounded-full bg-transparent border
border-gray-400 hover:border-gray-900
hover:bg-gray-200
disabled:cursor-not-allowed
disabled:border-gray-300
disabled:checked:border-gray-300
disabled:hover:bg-inherit
dark:border-gray-400 dark:hover:border-gray-100
dark:hover:bg-gray-600
dark:checked:border-gray-400
dark:disabled:border-gray-500
dark:disabled:checked:border-gray-500
focus:outline-none focus:ring-1
focus:ring-gray-400 dark:focus:ring-gray-500;
background-position: center;
background-repeat: no-repeat;
background-size: 8px;
}
input[type="radio"]:checked {
background-image: url("data:image/svg+xml,");
}
input[type="radio"]:disabled:checked {
background-image: url("data:image/svg+xml,");
}
@media (prefers-color-scheme: dark) {
input[type="radio"]:checked {
background-image: url("data:image/svg+xml,");
}
input[type="radio"]:disabled:checked {
background-image: url("data:image/svg+xml,");
}
}
select {
@apply flex items-center rounded p-2 h-[32px]
border border-gray-200
bg-white
dark:text-white
dark:bg-gray-800 dark:border-gray-700
;
}
details summary::-webkit-details-marker {
display: none;
}
code {
@apply font-mono rounded bg-gray-100 dark:bg-gray-700 text-black dark:text-white;
}
}
@layer components {
.btn {
@apply relative z-0 inline-flex overflow-hidden items-center justify-center
min-h-[32px] px-2 py-[6px] gap-1.5
rounded border border-gray-200 dark:border-gray-700
bg-white dark:bg-gray-800
text-sm text-gray-900 dark:text-gray-100
transition-colors duration-150 ease-in-out
outline-transparent cursor-pointer
focus-visible:outline focus-visible:outline-2 focus-visible:outline-gray-400 dark:focus-visible:outline-gray-600
no-underline hover:no-underline;
@apply before:absolute before:inset-0 before:-z-10 before:block before:rounded-sm before:content-['']
before:transition-all before:duration-150 before:ease-in-out
before:shadow-[inset_0_-2px_0_0_theme(colors.gray.200)] dark:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900)];
@apply hover:bg-gray-50 dark:hover:bg-gray-700
hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.300)] dark:hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.800)]
active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.200)] dark:active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900)]
active:translate-y-0.5
disabled:cursor-not-allowed disabled:opacity-50;
@apply disabled:hover:bg-white dark:disabled:hover:bg-gray-800
disabled:hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.200)] dark:disabled:hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900)]
disabled:active:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.200)] dark:disabled:active:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900)]
disabled:active:translate-y-0;
}
.btn-flat {
@apply inline-flex items-center justify-center
min-h-[32px] px-2 py-[6px] gap-1.5
rounded
text-sm text-gray-900 dark:text-gray-100 cursor-pointer no-underline hover:no-underline
transition-colors duration-150 ease-in-out
focus:outline-none
focus-visible:outline focus-visible:outline-2 focus-visible:outline-gray-400
hover:bg-gray-100
dark:hover:text-gray-100 dark:hover:bg-gray-700
disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:text-inherit disabled:hover:bg-inherit;
}
.btn-create {
@apply btn text-white
bg-green-600 hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-800
border border-green-700 hover:border-green-800
focus-visible:outline-green-500
disabled:bg-green-400 dark:disabled:bg-green-600
before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900/50%)];
}
.btn-create-flat {
@apply btn-create
before:shadow-none
hover:before:shadow-none
active:before:shadow-none;
}
.btn-primary {
@apply btn text-white
bg-indigo-600 hover:bg-indigo-700 dark:bg-indigo-500 dark:hover:bg-indigo-600
border border-indigo-700 hover:border-indigo-800 dark:border-indigo-600 dark:hover:border-indigo-700
focus-visible:outline-indigo-500
disabled:bg-indigo-400 dark:disabled:bg-indigo-400
before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)]
active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900/50%)];
}
.btn-cancel {
@apply btn text-white
bg-red-600 hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-800
border border-red-700 hover:border-red-800
focus-visible:outline-red-500
disabled:bg-red-400 dark:disabled:bg-red-600;
}
.btn-cancel-flat {
@apply btn-cancel
before:shadow-none
hover:before:shadow-none
active:before:shadow-none;
}
.btn-group {
@apply inline-flex items-stretch
max-h-[32px]
rounded border border-gray-200 dark:border-gray-700
divide-x divide-gray-200 dark:divide-gray-700
overflow-clip;
}
.btn-group-item {
@apply btn-flat min-h-[30px] gap-1.5
bg-gray-50 dark:bg-gray-900
rounded-none border-y-0
no-underline hover:no-underline
hover:text-gray-600 dark:hover:text-gray-400;
}
.btn-group-item.active {
@apply btn min-h-[30px] rounded-none border-y-0
before:border-none before:rounded-none before:bg-inherit;
&:first-child {
@apply border-none before:rounded-l-sm;
}
&:last-child {
@apply border-y-0 border-r-0 border-l before:rounded-r-sm;
}
}
.prose {
overflow-wrap: anywhere;
}
.prose td,
.prose th {
overflow-wrap: normal;
}
.prose hr {
@apply my-2;
}
.prose li:has(input) {
@apply list-none;
}
.prose ul:has(input) {
@apply pl-2;
}
.prose .heading .anchor {
@apply no-underline mx-2 opacity-0;
}
.prose .heading:hover .anchor {
@apply opacity-70;
}
.prose .heading .anchor:hover {
@apply opacity-70;
}
.prose h1:target,
.prose h2:target,
.prose h3:target,
.prose h4:target,
.prose h5:target,
.prose h6:target {
@apply bg-yellow-200/30 dark:bg-yellow-600/30;
}
.prose a.footnote-backref {
@apply no-underline;
}
.prose a.mention {
@apply no-underline hover:underline font-bold;
}
.prose li {
@apply my-0 py-0;
}
.prose ul,
.prose ol {
@apply my-1 py-0;
}
.prose img {
display: inline;
margin: 0;
vertical-align: middle;
}
.prose input {
@apply inline-block my-0 mt-1 mx-1;
}
/* Mermaid diagrams */
.prose pre.mermaid {
@apply flex justify-center my-4 overflow-x-auto bg-transparent border-0;
}
/* Base callout */
details[data-callout] {
@apply border-l-4 pl-3 py-2 text-gray-800 dark:text-gray-200 my-4;
}
details[data-callout] > summary {
@apply font-bold cursor-pointer mb-1;
}
details[data-callout] > .callout-content {
@apply text-sm leading-snug;
}
/* Note (blue) */
details[data-callout="note" i] {
@apply border-blue-400 dark:border-blue-500;
}
details[data-callout="note" i] > summary {
@apply text-blue-700 dark:text-blue-400;
}
/* Important (purple) */
details[data-callout="important" i] {
@apply border-purple-400 dark:border-purple-500;
}
details[data-callout="important" i] > summary {
@apply text-purple-700 dark:text-purple-400;
}
/* Warning (yellow) */
details[data-callout="warning" i] {
@apply border-yellow-400 dark:border-yellow-500;
}
details[data-callout="warning" i] > summary {
@apply text-yellow-700 dark:text-yellow-400;
}
/* Caution (red) */
details[data-callout="caution" i] {
@apply border-red-400 dark:border-red-500;
}
details[data-callout="caution" i] > summary {
@apply text-red-700 dark:text-red-400;
}
/* Tip (green) */
details[data-callout="tip" i] {
@apply border-green-400 dark:border-green-500;
}
details[data-callout="tip" i] > summary {
@apply text-green-700 dark:text-green-400;
}
/* Optional: hide the disclosure arrow like GitHub */
details[data-callout] > summary::-webkit-details-marker {
display: none;
}
}
@layer utilities {
.error {
@apply py-1 text-red-400 dark:text-red-300;
}
.success {
@apply py-1 text-gray-900 dark:text-gray-100;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
.animate-marquee {
animation: scroll 60s linear infinite;
}
.animate-marquee:hover {
animation-play-state: paused;
}
@media (prefers-reduced-motion: reduce) {
.animate-marquee {
animation: none;
transform: none;
}
}
@keyframes progress {
from {
width: 0%;
}
to {
width: 100%;
}
}
.animate-progress {
animation: progress 10s linear forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.animate-fadein {
animation: fadeIn 0.25s ease-in forwards;
}
.animate-fadeout {
animation: fadeOut 0.25s ease-out forwards;
}
}
}
/* Background */
.bg {
color: #4c4f69;
background-color: #eff1f5;
}
/* PreWrapper */
.chroma {
color: #4c4f69;
}
/* Error */
.chroma .err {
color: #d20f39;
}
/* LineLink */
.chroma .lnlinks {
outline: none;
text-decoration: none;
color: inherit;
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
}
/* LineHighlight */
.chroma .hl {
@apply bg-amber-400/30 dark:bg-amber-500/20;
}
.line-quote-hl,
.line-range-hl,
.comment-hl {
@apply !bg-yellow-200/30 dark:!bg-yellow-700/30;
}
.chunk-match-hl {
@apply rounded-sm !bg-yellow-300/70 dark:!bg-yellow-600/60;
}
.comment-hl {
@apply rounded-md;
}
:is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] {
@apply !bg-yellow-200/30 dark:!bg-yellow-700/30;
}
:is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] a {
@apply !text-black dark:!text-white;
}
/* LineNumbersTable */
.chroma .lnt {
white-space: pre;
-webkit-user-select: none;
user-select: none;
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #8c8fa1;
}
/* LineNumbers */
.chroma .ln {
white-space: pre;
-webkit-user-select: none;
user-select: none;
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #8c8fa1;
}
/* Line */
.chroma .line {
display: flex;
}
/* Keyword */
.chroma .k {
color: #8839ef;
}
/* KeywordConstant */
.chroma .kc {
color: #fe640b;
}
/* KeywordDeclaration */
.chroma .kd {
color: #d20f39;
}
/* KeywordNamespace */
.chroma .kn {
color: #179299;
}
/* KeywordPseudo */
.chroma .kp {
color: #8839ef;
}
/* KeywordReserved */
.chroma .kr {
color: #8839ef;
}
/* KeywordType */
.chroma .kt {
color: #d20f39;
}
/* NameAttribute */
.chroma .na {
color: #1e66f5;
}
/* NameBuiltin */
.chroma .nb {
color: #04a5e5;
}
/* NameBuiltinPseudo */
.chroma .bp {
color: #04a5e5;
}
/* NameClass */
.chroma .nc {
color: #df8e1d;
}
/* NameConstant */
.chroma .no {
color: #df8e1d;
}
/* NameDecorator */
.chroma .nd {
color: #1e66f5;
font-weight: bold;
}
/* NameEntity */
.chroma .ni {
color: #179299;
}
/* NameException */
.chroma .ne {
color: #fe640b;
}
/* NameFunction */
.chroma .nf {
color: #1e66f5;
}
/* NameFunctionMagic */
.chroma .fm {
color: #1e66f5;
}
/* NameLabel */
.chroma .nl {
color: #04a5e5;
}
/* NameNamespace */
.chroma .nn {
color: #fe640b;
}
/* NameProperty */
.chroma .py {
color: #fe640b;
}
/* NameTag */
.chroma .nt {
color: #8839ef;
}
/* NameVariable */
.chroma .nv {
color: #dc8a78;
}
/* NameVariableClass */
.chroma .vc {
color: #dc8a78;
}
/* NameVariableGlobal */
.chroma .vg {
color: #dc8a78;
}
/* NameVariableInstance */
.chroma .vi {
color: #dc8a78;
}
/* NameVariableMagic */
.chroma .vm {
color: #dc8a78;
}
/* LiteralString */
.chroma .s {
color: #40a02b;
}
/* LiteralStringAffix */
.chroma .sa {
color: #d20f39;
}
/* LiteralStringBacktick */
.chroma .sb {
color: #40a02b;
}
/* LiteralStringChar */
.chroma .sc {
color: #40a02b;
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #1e66f5;
}
/* LiteralStringDoc */
.chroma .sd {
color: #9ca0b0;
}
/* LiteralStringDouble */
.chroma .s2 {
color: #40a02b;
}
/* LiteralStringEscape */
.chroma .se {
color: #1e66f5;
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #9ca0b0;
}
/* LiteralStringInterpol */
.chroma .si {
color: #40a02b;
}
/* LiteralStringOther */
.chroma .sx {
color: #40a02b;
}
/* LiteralStringRegex */
.chroma .sr {
color: #179299;
}
/* LiteralStringSingle */
.chroma .s1 {
color: #40a02b;
}
/* LiteralStringSymbol */
.chroma .ss {
color: #40a02b;
}
/* LiteralNumber */
.chroma .m {
color: #fe640b;
}
/* LiteralNumberBin */
.chroma .mb {
color: #fe640b;
}
/* LiteralNumberFloat */
.chroma .mf {
color: #fe640b;
}
/* LiteralNumberHex */
.chroma .mh {
color: #fe640b;
}
/* LiteralNumberInteger */
.chroma .mi {
color: #fe640b;
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #fe640b;
}
/* LiteralNumberOct */
.chroma .mo {
color: #fe640b;
}
/* Operator */
.chroma .o {
color: #04a5e5;
font-weight: bold;
}
/* OperatorWord */
.chroma .ow {
color: #04a5e5;
font-weight: bold;
}
/* Comment */
.chroma .c {
color: #9ca0b0;
font-style: italic;
}
/* CommentHashbang */
.chroma .ch {
color: #9ca0b0;
font-style: italic;
}
/* CommentMultiline */
.chroma .cm {
color: #9ca0b0;
font-style: italic;
}
/* CommentSingle */
.chroma .c1 {
color: #9ca0b0;
font-style: italic;
}
/* CommentSpecial */
.chroma .cs {
color: #9ca0b0;
font-style: italic;
}
/* CommentPreproc */
.chroma .cp {
color: #9ca0b0;
font-style: italic;
}
/* CommentPreprocFile */
.chroma .cpf {
color: #9ca0b0;
font-weight: bold;
font-style: italic;
}
/* GenericDeleted */
.chroma .gd {
color: #d20f39;
background-color: oklch(93.6% 0.032 17.717);
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericError */
.chroma .gr {
color: #d20f39;
}
/* GenericHeading */
.chroma .gh {
color: #fe640b;
font-weight: bold;
}
/* GenericInserted */
.chroma .gi {
color: #40a02b;
background-color: oklch(96.2% 0.044 156.743);
}
/* GenericStrong */
.chroma .gs {
font-weight: bold;
}
/* GenericSubheading */
.chroma .gu {
color: #fe640b;
font-weight: bold;
}
/* GenericTraceback */
.chroma .gt {
color: #d20f39;
}
/* GenericUnderline */
.chroma .gl {
text-decoration: underline;
}
@media (prefers-color-scheme: dark) {
/* Background */
.bg {
color: #cad3f5;
background-color: #24273a;
}
/* PreWrapper */
.chroma {
color: #cad3f5;
}
/* Error */
.chroma .err {
color: #ed8796;
}
/* LineLink */
.chroma .lnlinks {
outline: none;
text-decoration: none;
color: inherit;
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
}
/* LineHighlight */
.chroma .hl {
background-color: #494d64;
}
/* LineNumbersTable */
.chroma .lnt {
white-space: pre;
-webkit-user-select: none;
user-select: none;
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #8087a2;
}
/* LineNumbers */
.chroma .ln {
white-space: pre;
-webkit-user-select: none;
user-select: none;
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #8087a2;
}
/* Line */
.chroma .line {
display: flex;
}
/* Keyword */
.chroma .k {
color: #c6a0f6;
}
/* KeywordConstant */
.chroma .kc {
color: #f5a97f;
}
/* KeywordDeclaration */
.chroma .kd {
color: #ed8796;
}
/* KeywordNamespace */
.chroma .kn {
color: #8bd5ca;
}
/* KeywordPseudo */
.chroma .kp {
color: #c6a0f6;
}
/* KeywordReserved */
.chroma .kr {
color: #c6a0f6;
}
/* KeywordType */
.chroma .kt {
color: #ed8796;
}
/* NameAttribute */
.chroma .na {
color: #8aadf4;
}
/* NameBuiltin */
.chroma .nb {
color: #91d7e3;
}
/* NameBuiltinPseudo */
.chroma .bp {
color: #91d7e3;
}
/* NameClass */
.chroma .nc {
color: #eed49f;
}
/* NameConstant */
.chroma .no {
color: #eed49f;
}
/* NameDecorator */
.chroma .nd {
color: #8aadf4;
font-weight: bold;
}
/* NameEntity */
.chroma .ni {
color: #8bd5ca;
}
/* NameException */
.chroma .ne {
color: #f5a97f;
}
/* NameFunction */
.chroma .nf {
color: #8aadf4;
}
/* NameFunctionMagic */
.chroma .fm {
color: #8aadf4;
}
/* NameLabel */
.chroma .nl {
color: #91d7e3;
}
/* NameNamespace */
.chroma .nn {
color: #f5a97f;
}
/* NameProperty */
.chroma .py {
color: #f5a97f;
}
/* NameTag */
.chroma .nt {
color: #c6a0f6;
}
/* NameVariable */
.chroma .nv {
color: #f4dbd6;
}
/* NameVariableClass */
.chroma .vc {
color: #f4dbd6;
}
/* NameVariableGlobal */
.chroma .vg {
color: #f4dbd6;
}
/* NameVariableInstance */
.chroma .vi {
color: #f4dbd6;
}
/* NameVariableMagic */
.chroma .vm {
color: #f4dbd6;
}
/* LiteralString */
.chroma .s {
color: #a6da95;
}
/* LiteralStringAffix */
.chroma .sa {
color: #ed8796;
}
/* LiteralStringBacktick */
.chroma .sb {
color: #a6da95;
}
/* LiteralStringChar */
.chroma .sc {
color: #a6da95;
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #8aadf4;
}
/* LiteralStringDoc */
.chroma .sd {
color: #6e738d;
}
/* LiteralStringDouble */
.chroma .s2 {
color: #a6da95;
}
/* LiteralStringEscape */
.chroma .se {
color: #8aadf4;
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #6e738d;
}
/* LiteralStringInterpol */
.chroma .si {
color: #a6da95;
}
/* LiteralStringOther */
.chroma .sx {
color: #a6da95;
}
/* LiteralStringRegex */
.chroma .sr {
color: #8bd5ca;
}
/* LiteralStringSingle */
.chroma .s1 {
color: #a6da95;
}
/* LiteralStringSymbol */
.chroma .ss {
color: #a6da95;
}
/* LiteralNumber */
.chroma .m {
color: #f5a97f;
}
/* LiteralNumberBin */
.chroma .mb {
color: #f5a97f;
}
/* LiteralNumberFloat */
.chroma .mf {
color: #f5a97f;
}
/* LiteralNumberHex */
.chroma .mh {
color: #f5a97f;
}
/* LiteralNumberInteger */
.chroma .mi {
color: #f5a97f;
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #f5a97f;
}
/* LiteralNumberOct */
.chroma .mo {
color: #f5a97f;
}
/* Operator */
.chroma .o {
color: #91d7e3;
font-weight: bold;
}
/* OperatorWord */
.chroma .ow {
color: #91d7e3;
font-weight: bold;
}
/* Comment */
.chroma .c {
color: #6e738d;
font-style: italic;
}
/* CommentHashbang */
.chroma .ch {
color: #6e738d;
font-style: italic;
}
/* CommentMultiline */
.chroma .cm {
color: #6e738d;
font-style: italic;
}
/* CommentSingle */
.chroma .c1 {
color: #6e738d;
font-style: italic;
}
/* CommentSpecial */
.chroma .cs {
color: #6e738d;
font-style: italic;
}
/* CommentPreproc */
.chroma .cp {
color: #6e738d;
font-style: italic;
}
/* CommentPreprocFile */
.chroma .cpf {
color: #6e738d;
font-weight: bold;
font-style: italic;
}
/* GenericDeleted */
.chroma .gd {
color: #ed8796;
background-color: oklch(44.4% 0.177 26.899 / 0.5);
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericError */
.chroma .gr {
color: #ed8796;
}
/* GenericHeading */
.chroma .gh {
color: #f5a97f;
font-weight: bold;
}
/* GenericInserted */
.chroma .gi {
color: #a6da95;
background-color: oklch(44.8% 0.119 151.328 / 0.5);
}
/* GenericStrong */
.chroma .gs {
font-weight: bold;
}
/* GenericSubheading */
.chroma .gu {
color: #f5a97f;
font-weight: bold;
}
/* GenericTraceback */
.chroma .gt {
color: #ed8796;
}
/* GenericUnderline */
.chroma .gl {
text-decoration: underline;
}
}
actor-typeahead {
--color-background: #ffffff;
--color-border: #d1d5db;
--color-shadow: #000000;
--color-hover: #f9fafb;
--color-avatar-fallback: #e5e7eb;
--radius: 0;
--padding-menu: 0rem;
z-index: 1000;
}
actor-typeahead::part(handle) {
color: #111827;
}
actor-typeahead::part(menu) {
box-shadow:
0 4px 6px -1px rgb(0 0 0 / 0.1),
0 2px 4px -2px rgb(0 0 0 / 0.1);
}
@media (prefers-color-scheme: dark) {
actor-typeahead {
--color-background: #1f2937;
--color-border: #4b5563;
--color-shadow: #000000;
--color-hover: #374151;
--color-avatar-fallback: #4b5563;
}
actor-typeahead::part(handle) {
color: #f9fafb;
}
}
@layer utilities {
.hit-area {
position: relative;
}
.hit-area::before {
content: "";
position: absolute;
top: var(--hit-area-t, 0px);
right: var(--hit-area-r, 0px);
bottom: var(--hit-area-b, 0px);
left: var(--hit-area-l, 0px);
pointer-events: inherit;
}
.hit-area-debug {
position: relative;
}
.hit-area-debug::before {
content: "";
position: absolute;
top: var(--hit-area-t, 0px);
right: var(--hit-area-r, 0px);
bottom: var(--hit-area-b, 0px);
left: var(--hit-area-l, 0px);
pointer-events: inherit;
border: 1px dashed #3b82f6;
background-color: rgba(59, 130, 246, 0.1);
}
.hit-area-debug:hover::before {
border-color: #22c55e;
background-color: rgba(34, 197, 94, 0.1);
}
.hit-area-1 {
--hit-area-t: -0.25rem;
--hit-area-r: -0.25rem;
--hit-area-b: -0.25rem;
--hit-area-l: -0.25rem;
}
.hit-area-2 {
--hit-area-t: -0.5rem;
--hit-area-r: -0.5rem;
--hit-area-b: -0.5rem;
--hit-area-l: -0.5rem;
}
.hit-area-4 {
--hit-area-t: -1rem;
--hit-area-r: -1rem;
--hit-area-b: -1rem;
--hit-area-l: -1rem;
}
.hit-area-6 {
--hit-area-t: -1.5rem;
--hit-area-r: -1.5rem;
--hit-area-b: -1.5rem;
--hit-area-l: -1.5rem;
}
.hit-area-8 {
--hit-area-t: -2rem;
--hit-area-r: -2rem;
--hit-area-b: -2rem;
--hit-area-l: -2rem;
}
.hit-area-10 {
--hit-area-t: -2.5rem;
--hit-area-r: -2.5rem;
--hit-area-b: -2.5rem;
--hit-area-l: -2.5rem;
}
.hit-area-12 {
--hit-area-t: -3rem;
--hit-area-r: -3rem;
--hit-area-b: -3rem;
--hit-area-l: -3rem;
}
.hit-area-l-1 {
--hit-area-l: -0.25rem;
}
.hit-area-l-2 {
--hit-area-l: -0.5rem;
}
.hit-area-l-4 {
--hit-area-l: -1rem;
}
.hit-area-l-6 {
--hit-area-l: -1.5rem;
}
.hit-area-l-8 {
--hit-area-l: -2rem;
}
.hit-area-l-10 {
--hit-area-l: -2.5rem;
}
.hit-area-l-12 {
--hit-area-l: -3rem;
}
.hit-area-r-1 {
--hit-area-r: -0.25rem;
}
.hit-area-r-2 {
--hit-area-r: -0.5rem;
}
.hit-area-r-4 {
--hit-area-r: -1rem;
}
.hit-area-r-6 {
--hit-area-r: -1.5rem;
}
.hit-area-r-8 {
--hit-area-r: -2rem;
}
.hit-area-r-10 {
--hit-area-r: -2.5rem;
}
.hit-area-r-12 {
--hit-area-r: -3rem;
}
.hit-area-t-1 {
--hit-area-t: -0.25rem;
}
.hit-area-t-2 {
--hit-area-t: -0.5rem;
}
.hit-area-t-4 {
--hit-area-t: -1rem;
}
.hit-area-t-6 {
--hit-area-t: -1.5rem;
}
.hit-area-t-8 {
--hit-area-t: -2rem;
}
.hit-area-t-10 {
--hit-area-t: -2.5rem;
}
.hit-area-t-12 {
--hit-area-t: -3rem;
}
.hit-area-b-1 {
--hit-area-b: -0.25rem;
}
.hit-area-b-2 {
--hit-area-b: -0.5rem;
}
.hit-area-b-4 {
--hit-area-b: -1rem;
}
.hit-area-b-6 {
--hit-area-b: -1.5rem;
}
.hit-area-b-8 {
--hit-area-b: -2rem;
}
.hit-area-b-10 {
--hit-area-b: -2.5rem;
}
.hit-area-b-12 {
--hit-area-b: -3rem;
}
.hit-area-x-1 {
--hit-area-l: -0.25rem;
--hit-area-r: -0.25rem;
}
.hit-area-x-2 {
--hit-area-l: -0.5rem;
--hit-area-r: -0.5rem;
}
.hit-area-x-4 {
--hit-area-l: -1rem;
--hit-area-r: -1rem;
}
.hit-area-x-6 {
--hit-area-l: -1.5rem;
--hit-area-r: -1.5rem;
}
.hit-area-x-8 {
--hit-area-l: -2rem;
--hit-area-r: -2rem;
}
.hit-area-x-10 {
--hit-area-l: -2.5rem;
--hit-area-r: -2.5rem;
}
.hit-area-x-12 {
--hit-area-l: -3rem;
--hit-area-r: -3rem;
}
.hit-area-y-1 {
--hit-area-t: -0.25rem;
--hit-area-b: -0.25rem;
}
.hit-area-y-2 {
--hit-area-t: -0.5rem;
--hit-area-b: -0.5rem;
}
.hit-area-y-4 {
--hit-area-t: -1rem;
--hit-area-b: -1rem;
}
.hit-area-y-6 {
--hit-area-t: -1.5rem;
--hit-area-b: -1.5rem;
}
.hit-area-y-8 {
--hit-area-t: -2rem;
--hit-area-b: -2rem;
}
.hit-area-y-10 {
--hit-area-t: -2.5rem;
--hit-area-b: -2.5rem;
}
.hit-area-y-12 {
--hit-area-t: -3rem;
--hit-area-b: -3rem;
}
/* terminal-to-html: catpuccin colors */
.term-fg30 {
color: #6c6f85;
} /* black */
.term-fg31 {
color: #d20f39;
} /* red */
.term-fg32 {
color: #40a02b;
} /* green */
.term-fg33 {
color: #df8e1d;
} /* yellow */
.term-fg34 {
color: #1e66f5;
} /* blue */
.term-fg35 {
color: #8839ef;
} /* magenta */
.term-fg36 {
color: #179299;
} /* cyan */
.term-fg37 {
color: #4c4f69;
} /* white */
.term-fgi90 {
color: #8c8fa1;
} /* bright-black */
.term-fgi91 {
color: #e64553;
} /* bright-red */
.term-fgi92 {
color: #40a02b;
} /* bright-green */
.term-fgi93 {
color: #e5c890;
} /* bright-yellow */
.term-fgi94 {
color: #209fb5;
} /* bright-blue */
.term-fgi95 {
color: #ea76cb;
} /* bright-magenta */
.term-fgi96 {
color: #04a5e5;
} /* bright-cyan */
.term-fgi97 {
color: #bcc0cc;
} /* bright-white */
.term-bg40 {
background-color: #6c6f85;
} /* black */
.term-bg41 {
background-color: #d20f39;
} /* red */
.term-bg42 {
background-color: #40a02b;
} /* green */
.term-bg43 {
background-color: #df8e1d;
} /* yellow */
.term-bg44 {
background-color: #1e66f5;
} /* blue */
.term-bg45 {
background-color: #8839ef;
} /* magenta */
.term-bg46 {
background-color: #179299;
} /* cyan */
.term-bg47 {
background-color: #dce0e8;
} /* white */
.term-fg1 {
@apply font-bold;
}
.term-fg2 {
@apply opacity-60;
}
.term-fg3 {
@apply italic;
}
.term-fg4 {
@apply underline;
}
.term-fg9 {
@apply line-through;
}
@media (prefers-color-scheme: dark) {
.term-fg30 {
color: #a5adcb;
} /* black */
.term-fg31 {
color: #ed8796;
} /* red */
.term-fg32 {
color: #a6da95;
} /* green */
.term-fg33 {
color: #eed49f;
} /* yellow */
.term-fg34 {
color: #8aadf4;
} /* blue */
.term-fg35 {
color: #c6a0f6;
} /* magenta */
.term-fg36 {
color: #8bd5ca;
} /* cyan */
.term-fg37 {
color: #cad3f5;
} /* white */
.term-fgi90 {
color: #8087a2;
} /* bright-black */
.term-fgi91 {
color: #f5bde6;
} /* bright-red */
.term-fgi92 {
color: #a6da95;
} /* bright-green */
.term-fgi93 {
color: #f5a97f;
} /* bright-yellow */
.term-fgi94 {
color: #7dc4e4;
} /* bright-blue */
.term-fgi95 {
color: #f4dbd6;
} /* bright-magenta */
.term-fgi96 {
color: #91d7e3;
} /* bright-cyan */
.term-fgi97 {
color: #f0c6c6;
} /* bright-white */
.term-bg40 {
background-color: #a5adcb;
} /* black */
.term-bg41 {
background-color: #ed8796;
} /* red */
.term-bg42 {
background-color: #a6da95;
} /* green */
.term-bg43 {
background-color: #eed49f;
} /* yellow */
.term-bg44 {
background-color: #8aadf4;
} /* blue */
.term-bg45 {
background-color: #c6a0f6;
} /* magenta */
.term-bg46 {
background-color: #8bd5ca;
} /* cyan */
.term-bg47 {
background-color: #494d64;
} /* white */
}
}
.focus-pill {
--r: 10px;
&::before,
&::after {
@apply bg-indigo-600 absolute bottom-0;
content: "";
width: var(--r);
height: var(--r);
-webkit-mask: radial-gradient(var(--r) at var(--r) 0, #0000 98%, #000);
mask: radial-gradient(var(--r) at var(--r) 0, #0000 98%, #000);
}
&::before {
left: calc(-1 * var(--r));
@apply -scale-x-100;
}
&::after {
right: calc(-1 * var(--r));
}
}
/* Tailwind Preflight resets svg to display:block; MathJax v4 emits inline SVGs
(one or more per inline equation), so that forces each onto its own line.
Restore inline flow for MathJax output only, leaving icon svgs untouched. */
mjx-container svg {
display: inline-block;
}