@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--ds-color-bg: 244 246 251;
--ds-color-surface: 255 255 255;
--ds-color-surface-muted: 249 250 251;
--ds-color-text: 17 24 39;
--ds-color-text-muted: 107 114 128;
--ds-color-border: 229 231 235;
--ds-color-primary: 17 24 39;
--ds-color-accent: 59 130 246;
--ds-color-success: 22 163 74;
--ds-color-warning: 217 119 6;
--ds-color-danger: 220 38 38;
--ds-color-layer-1: 255 255 255;
--ds-color-layer-2: 255 255 255;
--ds-color-layer-3: 255 255 255;
--ds-color-layer-4: 255 255 255;
}
.dark {
--ds-color-bg: 43 45 51;
--ds-color-layer-1: 49 52 58;
--ds-color-layer-2: 56 59 66;
--ds-color-layer-3: 64 68 76;
--ds-color-layer-4: 72 76 85;
--ds-color-surface: 56 59 66;
--ds-color-surface-muted: 49 52 58;
--ds-color-text: 245 245 245;
--ds-color-text-muted: 184 184 192;
--ds-color-border: 74 78 87;
--ds-color-primary: 245 245 245;
--ds-color-accent: 91 140 255;
--ds-color-success: 52 211 153;
--ds-color-warning: 251 191 36;
--ds-color-danger: 248 113 113;
}
.theme-brand,
.theme-rust {
--ds-color-bg: 255 250 248;
--ds-color-surface: 255 255 255;
--ds-color-surface-muted: 255 245 241;
--ds-color-text: 17 24 39;
--ds-color-text-muted: 107 114 128;
--ds-color-border: 239 230 225;
--ds-color-primary: 17 24 39;
--ds-color-accent: 194 65 12;
--ds-color-success: 22 163 74;
--ds-color-warning: 217 119 6;
--ds-color-danger: 220 38 38;
}
}
@layer base {
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("/static/fonts/Inter-Regular.woff2") format("woff2");
}
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("/static/fonts/Inter-Medium.woff2") format("woff2");
}
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("/static/fonts/Inter-SemiBold.woff2") format("woff2");
}
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("/static/fonts/Inter-Bold.woff2") format("woff2");
}
html { @apply text-body; }
body {
@apply bg-paper text-metal antialiased font-sans dark:bg-bg dark:text-text;
font-feature-settings: "ss01", "tnum";
line-height: 1.6;
}
h1 { @apply text-h1 font-heading font-bold tracking-tight text-metal leading-tight; }
h2 { @apply text-h2 font-heading font-semibold tracking-tight text-metal; }
h3 { @apply text-h3 font-heading font-semibold text-metal; }
a { @apply text-rust hover:text-rust-hover transition-colors; }
::selection { @apply bg-rust text-white; }
}
@layer base {
:focus { outline: none; }
:focus-visible { @apply ring-2 ring-accent/30 outline-none; }
}
@layer components {
.breadcrumbs {
@apply text-small text-gray-600 mb-4;
}
.breadcrumbs a { @apply text-gray-600 hover:text-rust no-underline transition-colors; }
.results {
@apply w-full border-collapse bg-surface border border-border rounded-md text-body overflow-hidden;
table-layout: fixed;
}
.results th, .results td {
@apply px-4 py-3.5 text-left border-b border-gray-100;
}
.results th {
@apply bg-surface-muted text-metal font-semibold text-caption uppercase tracking-wider;
}
.results tbody tr:nth-child(even) td { @apply bg-surface-muted/50; }
.results tr:hover td { @apply bg-rust/5; }
.results.row-clickable td { @apply p-0; }
.results.row-clickable .row-link {
@apply block px-4 py-3.5 text-metal no-underline transition-colors;
}
.results.row-clickable .row-link:hover { @apply no-underline; }
.results.row-clickable td:first-child .row-link { @apply font-semibold; }
.results.row-clickable .row-link.help { @apply text-gray-600 text-small; }
.user-row { @apply transition-colors; }
.actions {
@apply px-3.5 py-2.5 mb-3 bg-surface-muted border border-border rounded-md flex items-center gap-3 text-small text-gray-700;
}
.actions select {
@apply px-2.5 py-1.5 rounded-md border border-border bg-surface text-small;
}
.actions button {
@apply px-3 py-1.5 rounded-md bg-metal text-white text-small font-semibold border-0 cursor-pointer hover:bg-metal-dark transition-colors;
}
.action-counter { @apply text-text-muted text-small ml-auto; }
.action-checkbox { @apply w-10 text-center pr-0; }
.action-checkbox input[type=checkbox] { @apply w-4 h-4 rounded border-gray-300 text-rust focus:ring-accent; }
.required { @apply text-rust font-semibold ml-0.5; }
.errornote {
@apply px-4 py-3.5 mb-4 bg-red-50 text-red-800 border border-red-200 rounded-md text-body;
}
.messagelist { @apply px-4 py-3.5 mb-4 rounded-md text-body border; }
.message-success { @apply bg-emerald-50 text-emerald-800 border-emerald-200; }
.message-warning { @apply bg-amber-50 text-amber-900 border-amber-200; }
.message-error { @apply bg-red-50 text-red-800 border-red-200; }
.empty-list {
@apply px-7 py-12 text-center text-gray-600 bg-surface-muted border border-dashed border-gray-300 rounded-md text-body;
}
.checkbox-list { @apply flex flex-col gap-2.5; }
.checkbox-list label.checkbox-item { @apply flex items-center gap-2.5 text-body font-normal m-0; }
.cascade-list { @apply list-disc pl-5 my-3 space-y-1.5 text-body; }
.code-pill {
@apply bg-paper px-1.5 py-0.5 rounded text-small font-mono;
}
.badge-success {
@apply inline-flex items-center px-2.5 py-1 rounded-md
bg-success/10 text-success
text-caption font-semibold uppercase tracking-wider;
}
.badge-warning {
@apply inline-flex items-center px-2.5 py-1 rounded-md
bg-warning/10 text-warning
text-caption font-semibold uppercase tracking-wider;
}
.badge-danger {
@apply inline-flex items-center px-2.5 py-1 rounded-md
bg-danger/10 text-danger
text-caption font-semibold uppercase tracking-wider;
}
.badge-neutral {
@apply inline-flex items-center px-2.5 py-1 rounded-md
bg-surface-muted text-text-muted
text-caption font-semibold uppercase tracking-wider;
}
.btn-primary:disabled, .btn-primary[disabled],
.btn-secondary:disabled, .btn-secondary[disabled],
.btn-text:disabled, .btn-text[disabled],
.btn-danger:disabled, .btn-danger[disabled] {
@apply opacity-50 cursor-not-allowed pointer-events-none;
}
}