, NOT code inside
a block (docs examples), which would get an unwanted full-width tint. */
.public-dark code { background: rgb(255 255 255 / 0.08); color: rgb(255 255 255 / 0.9); }
.public-dark pre code { background: transparent; padding: 0; }
/* Filter pills + segmented controls that admin pages stamp with bg-slate-900
for the "selected" state — that lands invisible on the dark shell. Treat
slate-900 as a strong-contrast surface in the dark palette. */
.public-dark .bg-slate-900 { background: rgb(255 255 255 / 0.92); color: rgb(15 23 42); }
.public-dark .hover\:bg-slate-700:hover { background: rgb(255 255 255 / 0.85); color: rgb(15 23 42); }
.public-dark .text-slate-700 { color: rgb(255 255 255 / 0.85); }
.public-dark .text-slate-200 { color: rgb(255 255 255 / 0.7); }
.public-dark .text-slate-100 { color: rgb(255 255 255 / 0.92); }
/* Divider utilities used by lists (recent activity, table rows). */
.public-dark .divide-slate-50 > :not([hidden]) ~ :not([hidden]),
.public-dark .divide-slate-100 > :not([hidden]) ~ :not([hidden]) {
border-color: rgb(255 255 255 / 0.05);
}
.public-dark .border-slate-100\/80 { border-color: rgb(255 255 255 / 0.06); }
.public-dark .hover\:bg-slate-50:hover { background: rgb(255 255 255 / 0.04); }
.public-dark .hover\:bg-slate-100:hover { background: rgb(255 255 255 / 0.06); }
@layer components {
/* surfaces — flat white card with the memphis ink outline + offset shadow */
.card {
@apply bg-white rounded-xl;
border: 2.5px solid var(--ink);
box-shadow: 5px 5px 0 var(--shadow-ink);
}
/* buttons — each variant is self-contained (Tailwind v4 can't @apply a custom class) */
.btn-primary {
@apply inline-flex items-center justify-center gap-1.5 rounded-lg text-sm font-bold
disabled:opacity-50 disabled:cursor-not-allowed px-3.5 py-2;
color: #fff;
background: var(--m-orange);
border: 2.5px solid var(--ink);
box-shadow: 3px 3px 0 var(--shadow-ink);
transition: transform 0.13s ease, box-shadow 0.13s ease, filter 0.13s ease;
}
.btn-primary:hover:not(:disabled) { transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--shadow-ink); filter: brightness(1.05); }
.btn-primary:active:not(:disabled) { transform: scale(0.97) translateY(2px); box-shadow: 0 0 0 var(--shadow-ink); }
.btn-soft {
@apply inline-flex items-center justify-center gap-1.5 rounded-lg text-xs font-semibold
disabled:opacity-50 disabled:cursor-not-allowed px-3 py-1.5;
color: var(--fg-2);
background: var(--surface);
border: 2px solid var(--ink-soft);
transition: transform 0.13s ease, box-shadow 0.13s ease, background 0.15s ease, color 0.15s ease;
}
.btn-soft:hover:not(:disabled) {
color: var(--fg);
background: var(--m-yellow);
border-color: var(--ink);
box-shadow: 3px 3px 0 var(--shadow-ink);
}
.btn-soft:active:not(:disabled) { transform: scale(0.97) translateY(2px); box-shadow: none; }
.btn-ghost {
@apply inline-flex items-center justify-center gap-1.5 rounded-lg text-xs font-medium
disabled:opacity-50 disabled:cursor-not-allowed px-3 py-1.5;
color: var(--fg-2);
border: 2px solid transparent;
transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.btn-ghost:hover:not(:disabled) {
color: var(--fg);
background: var(--m-yellow);
border-color: var(--ink);
}
/* text link / quiet action */
.link { @apply hover:text-slate-900 transition-colors cursor-pointer; color: var(--fg-3); }
.link:hover { color: var(--m-orange); }
/* form controls — heavy outline, orange offset shadow on focus */
.field {
@apply w-full rounded-lg bg-white px-3 py-2 text-sm
outline-none placeholder:text-slate-400;
color: var(--fg);
border: 2px solid var(--ink-soft);
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.field:focus, .field:focus-visible {
border-color: var(--ink);
box-shadow: 3px 3px 0 var(--m-orange);
}
/* Native