/* ============================================================================
Chia — a small, reusable design system
Univers (light body) + Tomato Grotesk (display), brand blue, retro shadows.
Copied from the datasmith repo (docs/theme/chia.css). Font URLs point at
this project's existing ../assets/fonts/ instead of a sibling fonts/ dir,
and two slanted Tomato Grotesk faces are added for italic display type.
Usage:
1. (loads fonts + tokens + base + components).
2. Wrap page content in a container capped by --maxw, e.g. .
Every visual value lives in :root below, so retheme by editing tokens only.
============================================================================ */
/* ---------- Fonts ---------- */
@font-face { font-family: 'Univers'; src: url('../assets/fonts/UniversLight.ttf') format('truetype'); font-weight: 300; font-display: swap; }
@font-face { font-family: 'Univers'; src: url('../assets/fonts/UniversRegular.ttf') format('truetype'); font-weight: 400; font-display: swap; }
/* No true Univers Medium: map the 500 slot to Regular so `font-weight: 500` works. */
@font-face { font-family: 'Univers'; src: url('../assets/fonts/UniversRegular.ttf') format('truetype'); font-weight: 500; font-display: swap; }
@font-face { font-family: 'Univers'; src: url('../assets/fonts/UniversBold.ttf') format('truetype'); font-weight: 700; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-Regular.otf') format('opentype'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-Medium.otf') format('opentype'); font-weight: 500; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-SemiBold.otf') format('opentype'); font-weight: 600; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-Bold.otf') format('opentype'); font-weight: 700; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-Slanted.otf') format('opentype'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Tomato Grotesk'; src: url('../assets/fonts/TomatoGrotesk/TomatoGrotesk-SemiBoldSlanted.otf') format('opentype'); font-weight: 600; font-style: italic; font-display: swap; }
/* ---------- Tokens ---------- */
:root {
/* palette */
--blue: #254eff; /* brand / accent */
--cream: #f8ecda; /* warm accent, assistant bubbles */
--ink: #1a1a1a; /* text and borders */
--white: #ffffff; /* page background */
--muted: #5a554f; /* secondary text, captions */
--rule: #e2ddd4; /* hairline dividers */
--panel: #f4f2ee; /* soft gray boxes (abstract, code, table heads) */
/* type */
--font-body: 'Univers', 'Helvetica Neue', Helvetica, Arial, sans-serif;
--font-heading: 'Tomato Grotesk', Arial, sans-serif;
--font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
--text-size: 17px; /* base body size */
--leading: 1.3; /* 130% */
--weight-body: 300; /* Univers Light */
--weight-emph: 500; /* medium (maps to Regular) */
/* retro hard-offset shadows (no blur) */
--shadow-sm: 3px 3px 0 var(--ink);
--shadow-md: 5px 5px 0 var(--ink);
/* layout */
--maxw: 880px;
}
/* ---------- Base ---------- */
* { box-sizing: border-box; }
body {
margin: 0;
background: var(--white);
color: var(--ink);
font-family: var(--font-body);
font-size: var(--text-size);
font-weight: var(--weight-body);
line-height: var(--leading);
letter-spacing: 0;
-webkit-font-smoothing: antialiased;
}
.chia-page { max-width: var(--maxw); margin: 0 auto; padding: 2.5rem 1.5rem 5rem; }
h1, h2, h3 { font-family: var(--font-heading); letter-spacing: -0.01em; text-wrap: balance; }
h1 { font-size: 3rem; line-height: 1.04; font-weight: 700; color: var(--blue); margin: 0 0 0.6rem; }
h2 { font-size: 1.65rem; font-weight: 600; color: var(--blue); margin: 3.4rem 0 1rem; }
h3 { font-size: 1.2rem; font-weight: 600; color: var(--ink); margin: 2rem 0 0.6rem; }
p { margin: 0 0 1rem; text-wrap: pretty; }
strong { font-weight: var(--weight-emph); }
em { font-style: italic; }
a { color: var(--blue); text-decoration: none; border-bottom: 1px solid transparent; }
a:hover { border-bottom-color: var(--blue); }
.muted { color: var(--muted); }
/* Brand name: display face, blue, medium. e.g. DataSmith */
.brand { font-family: var(--font-heading); font-weight: 600; color: var(--blue); }
/* ---------- Buttons (retro: lift on hover, press on click) ---------- */
.btn {
font-family: var(--font-heading); font-weight: 600; font-size: 0.9rem;
padding: 0.4rem 0.8rem; border: 1.5px solid var(--ink);
background: var(--white); color: var(--ink); cursor: pointer;
box-shadow: var(--shadow-sm); transition: transform .06s ease, box-shadow .06s ease;
}
.btn:hover { transform: translate(-1px, -1px); box-shadow: var(--shadow-md); }
.btn:active { transform: translate(3px, 3px); box-shadow: 0 0 0 var(--ink); }
.btn.is-active { background: var(--blue); color: var(--white); }
/* ---------- Soft gray box (abstract, callouts, code) ---------- */
.panel { background: var(--panel); padding: 1.1rem 1.3rem; }
.panel--small { font-size: 0.92rem; color: var(--muted); }
/* ---------- Minimal (booktabs) tables ---------- */
table.chia { border-collapse: collapse; width: 100%; font-size: 0.92rem; font-variant-numeric: tabular-nums; }
table.chia caption { caption-side: top; text-align: left; font-size: 0.9rem; color: var(--muted); margin-bottom: 0.8rem; }
table.chia th, table.chia td { border: none; padding: 0.42rem 0.65rem; text-align: center; white-space: nowrap; }
table.chia thead tr:first-child th { border-top: 2px solid var(--ink); } /* top rule */
table.chia tbody tr:first-child td { border-top: 1.5px solid var(--ink); } /* mid rule (under header) */
table.chia tbody tr:last-child td { border-bottom: 2px solid var(--ink); } /* bottom rule */
table.chia thead th { font-family: var(--font-body); font-weight: 500; color: var(--ink); }
table.chia thead th:first-child, table.chia tbody td:first-child { text-align: left; }
table.chia tr.is-highlight td { font-weight: 500; color: var(--blue); }
/* ---------- Chat bubbles ---------- */
.msg { max-width: 88%; padding: 0.55rem 0.85rem; margin-bottom: 0.55rem; border-radius: 16px; font-size: 0.9rem; white-space: pre-wrap; word-break: break-word; }
.msg.user { background: var(--blue); color: var(--white); margin-left: auto; border-bottom-right-radius: 4px; }
.msg.assistant { background: var(--cream); color: var(--blue); margin-right: auto; border-bottom-left-radius: 4px; }
/* ---------- Captions (Univers Light, 130% leading, tracking 0) ---------- */
.caption { font-size: 0.9rem; line-height: 1.3; letter-spacing: 0; color: var(--muted); }