intent/static/css/intent.css
Alec Perkins 950a4030ee Scaffold Phase 0: Django project, deploy config, base layout
Django 5.2 with dev/test/prod settings, SQLite tuned for Litestream
(WAL, IMMEDIATE transactions), ULID primary keys via a shared base
model, and a custom User model ahead of the first migration.

Minimal accessible base template with dark mode via color-scheme and
an optional theme picker. /healthz answers before host validation so
Fly checks pass.

Dockerfile (dev and prod targets), compose for local dev, fly.toml
with placeholder app/region, Litestream backups to B2, and a Forgejo
Actions workflow. Migrations run in bin/start because Fly release
machines don't mount volumes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 06:59:34 -04:00

67 lines
957 B
CSS

/*
* Intent's whole stylesheet: a thin layer over browser defaults.
* If this file fails to load, layout should suffer but look-and-feel should not.
* Colors come from the browser via color-scheme; no custom palette.
*/
:root {
color-scheme: light dark;
}
:root[data-theme="light"] {
color-scheme: light;
}
:root[data-theme="dark"] {
color-scheme: dark;
}
body {
max-width: 72rem;
margin: 0 auto;
padding: 0 1rem;
line-height: 1.5;
}
header,
footer {
padding-block: 1rem;
}
p,
li,
dd {
max-width: 70ch;
}
img {
max-width: 100%;
height: auto;
}
:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
.skip-link {
position: absolute;
left: -100vw;
}
.skip-link:focus {
position: static;
}
.muted {
color: color-mix(in srgb, CanvasText 70%, Canvas);
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}