4005008872
El verde UABC (#00723F) es demasiado oscuro para texto carbón (~2:1, falla AA). Corrige BrandMark, nav activo (sidebar/dock), chip de FiltroCategorias y botón de Google en login a texto/ícono blanco (~6.2:1). Actualiza DESIGN.md/PRODUCT.md y design.json acorde. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
164 lines
4.5 KiB
CSS
164 lines
4.5 KiB
CSS
@import "tailwindcss";
|
|
@import "@fontsource-variable/jetbrains-mono";
|
|
|
|
@theme {
|
|
/* MotherDuck-derived system (shadow/radius/type mechanics); identity colors are UABC's own */
|
|
--color-cream: #f4efea;
|
|
--color-frost: #ffffff;
|
|
--color-chalk: #f8f8f7;
|
|
--color-ice: #ebf9ff;
|
|
|
|
--color-ink: #383838;
|
|
--color-pencil: #a1a1a1;
|
|
--color-graphite: #818181;
|
|
|
|
/* UABC institutional green/gold — dark enough that primary needs white text, not charcoal */
|
|
--color-primary: #00723F;
|
|
--color-primary-hover: #005f34;
|
|
--color-secondary: #DD971A;
|
|
--color-secondary-hover: #c78614;
|
|
--color-danger: #f38e84;
|
|
--color-danger-hover: #ec7469;
|
|
/* AA-contrast text variant of Coral Sketch — the fill color reads ~2:1 on white, too light for body text */
|
|
--color-danger-text: #a83224;
|
|
--color-positive: #38c1b0;
|
|
--color-attention: #ffde00;
|
|
|
|
--color-surface: var(--color-cream);
|
|
|
|
--font-sans: "JetBrains Mono Variable", ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, monospace;
|
|
|
|
--radius-card: 2px;
|
|
--shadow-hard: -6px 6px 0 0 var(--color-ink);
|
|
--shadow-hard-sm: -3px 3px 0 0 var(--color-ink);
|
|
|
|
/* Every Tailwind radius utility collapses to the system's 2px — non-negotiable per brief */
|
|
--radius-sm: 2px;
|
|
--radius-md: 2px;
|
|
--radius-lg: 2px;
|
|
--radius-xl: 2px;
|
|
--radius-2xl: 2px;
|
|
--radius-3xl: 2px;
|
|
}
|
|
|
|
@layer base {
|
|
html {
|
|
color-scheme: light;
|
|
}
|
|
body {
|
|
background: var(--color-cream);
|
|
color: var(--color-ink);
|
|
font-family: var(--font-sans);
|
|
letter-spacing: 0.02em;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
:focus-visible {
|
|
outline: 2px solid var(--color-ink);
|
|
outline-offset: 2px;
|
|
}
|
|
::selection {
|
|
background: var(--color-primary);
|
|
color: white;
|
|
}
|
|
/* Tabular data keeps real square corners even where a nested control forgets to ask */
|
|
table {
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
.btn {
|
|
@apply inline-flex items-center justify-center gap-2 rounded-[2px] px-4 py-2.5 font-medium
|
|
motion-safe:transition-transform motion-safe:duration-100 motion-safe:ease-out
|
|
disabled:opacity-50 disabled:pointer-events-none disabled:translate-x-0 disabled:translate-y-0;
|
|
min-height: 44px;
|
|
touch-action: manipulation;
|
|
-webkit-tap-highlight-color: transparent;
|
|
border: 2px solid var(--color-ink);
|
|
color: var(--color-ink);
|
|
box-shadow: var(--shadow-hard);
|
|
}
|
|
.btn:hover,
|
|
.btn:focus-visible {
|
|
transform: translate(-6px, 6px);
|
|
box-shadow: 0 0 0 0 transparent;
|
|
}
|
|
.btn:active {
|
|
transform: translate(-3px, 3px);
|
|
box-shadow: var(--shadow-hard-sm);
|
|
}
|
|
.btn-primary {
|
|
background: var(--color-primary);
|
|
color: white;
|
|
}
|
|
.btn-secondary {
|
|
background: var(--color-secondary);
|
|
color: var(--color-ink);
|
|
}
|
|
.btn-ghost {
|
|
background: transparent;
|
|
color: var(--color-ink);
|
|
border-color: color-mix(in oklab, var(--color-ink) 35%, transparent);
|
|
box-shadow: none;
|
|
}
|
|
.btn-ghost:hover,
|
|
.btn-ghost:focus-visible {
|
|
transform: none;
|
|
background: var(--color-chalk);
|
|
border-color: var(--color-ink);
|
|
}
|
|
|
|
.card {
|
|
@apply rounded-[2px] bg-white p-6;
|
|
border: 2px solid var(--color-ink);
|
|
}
|
|
.card-flat {
|
|
@apply rounded-[2px] bg-white p-6;
|
|
border: 1.5px solid var(--color-ink);
|
|
}
|
|
.card-raised {
|
|
@apply rounded-[2px] bg-white p-6;
|
|
border: 2px solid var(--color-ink);
|
|
box-shadow: var(--shadow-hard);
|
|
}
|
|
.card-link {
|
|
@apply rounded-[2px] bg-white p-6 block
|
|
motion-safe:transition-transform motion-safe:duration-100 motion-safe:ease-out;
|
|
border: 2px solid var(--color-ink);
|
|
box-shadow: var(--shadow-hard);
|
|
}
|
|
.card-link:hover,
|
|
.card-link:focus-visible {
|
|
transform: translate(-6px, 6px);
|
|
box-shadow: 0 0 0 0 transparent;
|
|
}
|
|
|
|
.input {
|
|
@apply w-full rounded-[2px] bg-white px-3 py-2.5
|
|
transition-[border-color] duration-100
|
|
focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2
|
|
focus-visible:outline-[color:var(--color-ink)];
|
|
border: 2px solid var(--color-ink);
|
|
min-height: 44px;
|
|
touch-action: manipulation;
|
|
}
|
|
.input:focus {
|
|
border-color: var(--color-primary);
|
|
}
|
|
.label {
|
|
@apply block text-sm font-medium mb-1 uppercase;
|
|
letter-spacing: 0.05em;
|
|
font-size: 0.75rem;
|
|
color: var(--color-ink);
|
|
}
|
|
|
|
.badge {
|
|
@apply inline-flex items-center rounded-[2px] px-2 py-0.5 text-xs font-semibold uppercase whitespace-nowrap;
|
|
letter-spacing: 0.03em;
|
|
border: 1.5px solid var(--color-ink);
|
|
}
|
|
|
|
h1, h2, h3 { text-wrap: balance; }
|
|
p { text-wrap: pretty; }
|
|
}
|