274 lines
6.3 KiB
CSS
274 lines
6.3 KiB
CSS
/* Shared Page Styling for Simple Pages (index, forms, static articles) */
|
|
|
|
:root {
|
|
color-scheme: dark light;
|
|
|
|
--color-bg-primary: #1a1a1a;
|
|
--color-bg-secondary: #252525;
|
|
--color-bg-tertiary: #2f2f2f;
|
|
--color-text-primary: #e8e8e8;
|
|
--color-text-secondary: #b8b8b8;
|
|
--color-text-muted: #888888;
|
|
--color-accent-primary: #6b9bd1;
|
|
--color-accent-hover: #85aede;
|
|
--color-on-accent: #121212;
|
|
--color-link: #6b9bd1;
|
|
--color-link-hover: #85aede;
|
|
--color-border: #3a3a3a;
|
|
--color-shadow: rgba(0, 0, 0, 0.3);
|
|
|
|
--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
--font-scripture: Georgia, "Crimson Text", "Times New Roman", serif;
|
|
--font-mono: "SF Mono", Monaco, "Cascadia Code", "Courier New", monospace;
|
|
|
|
--space-xs: 0.25rem;
|
|
--space-sm: 0.5rem;
|
|
--space-md: 1rem;
|
|
--space-lg: 1.5rem;
|
|
--space-xl: 2rem;
|
|
--space-2xl: 3rem;
|
|
|
|
--content-max-width: 820px;
|
|
--border-radius: 8px;
|
|
--border-radius-sm: 4px;
|
|
--transition-fast: 150ms ease;
|
|
--transition-normal: 250ms ease;
|
|
}
|
|
|
|
@media (prefers-color-scheme: light) {
|
|
:root {
|
|
--color-bg-primary: #f7f5f0;
|
|
--color-bg-secondary: #ffffff;
|
|
--color-bg-tertiary: #ece9e1;
|
|
--color-text-primary: #1f1f1f;
|
|
--color-text-secondary: #4a4a4a;
|
|
--color-text-muted: #6b6b6b;
|
|
--color-accent-primary: #2b5c94;
|
|
--color-accent-hover: #1d4574;
|
|
--color-on-accent: #ffffff;
|
|
--color-link: #2b5c94;
|
|
--color-link-hover: #1d4574;
|
|
--color-border: #d6d1c4;
|
|
--color-shadow: rgba(0, 0, 0, 0.1);
|
|
}
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
[hidden] {
|
|
display: none !important;
|
|
}
|
|
|
|
html {
|
|
-webkit-text-size-adjust: 100%;
|
|
text-size-adjust: 100%;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--color-bg-primary);
|
|
color: var(--color-text-primary);
|
|
margin: 0 auto;
|
|
padding: var(--space-md) max(var(--space-md), env(safe-area-inset-right)) var(--space-2xl) max(var(--space-md), env(safe-area-inset-left));
|
|
max-width: calc(var(--content-max-width) + 2 * var(--space-md));
|
|
font-family: var(--font-ui);
|
|
line-height: 1.6;
|
|
font-size: 16px;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
h1, h2, h3, h4 {
|
|
color: var(--color-text-primary);
|
|
line-height: 1.25;
|
|
margin: 1.5rem 0 1rem;
|
|
}
|
|
|
|
h1 {
|
|
font-size: clamp(1.6rem, 5vw + 0.5rem, 2.4rem);
|
|
}
|
|
|
|
h2 {
|
|
font-size: clamp(1.4rem, 4vw + 0.4rem, 2rem);
|
|
border-bottom: 2px solid var(--color-border);
|
|
padding-bottom: 0.5rem;
|
|
}
|
|
|
|
a {
|
|
color: var(--color-link);
|
|
text-decoration: none;
|
|
transition: color var(--transition-fast);
|
|
}
|
|
|
|
a:hover {
|
|
color: var(--color-link-hover);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
:focus-visible {
|
|
outline: 2px solid var(--color-accent-primary);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Top navigation: a wrapping row of pill links */
|
|
header {
|
|
margin-left: -0.75rem; /* pill padding lines the text up with the page edge */
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-xs) var(--space-sm);
|
|
margin-bottom: var(--space-lg);
|
|
padding-bottom: var(--space-md);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
header a {
|
|
padding: 0.35rem 0.75rem;
|
|
border-radius: 999px;
|
|
font-weight: 500;
|
|
font-size: 0.95rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
header a:hover {
|
|
background-color: var(--color-bg-tertiary);
|
|
text-decoration: none;
|
|
}
|
|
|
|
form {
|
|
background-color: var(--color-bg-secondary);
|
|
padding: var(--space-lg);
|
|
border-radius: var(--border-radius);
|
|
border: 1px solid var(--color-border);
|
|
margin: var(--space-lg) 0;
|
|
}
|
|
|
|
label {
|
|
display: block;
|
|
margin-bottom: 0.5rem;
|
|
font-weight: 600;
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
input[type=text] {
|
|
width: 100%;
|
|
min-height: 44px;
|
|
padding: 0.6rem 0.75rem;
|
|
margin: 0.5rem 0 1rem 0;
|
|
font-size: 1rem; /* 16px minimum stops iOS zooming into the field */
|
|
font-family: var(--font-ui);
|
|
background-color: var(--color-bg-primary);
|
|
color: var(--color-text-primary);
|
|
border: 2px solid var(--color-border);
|
|
border-radius: var(--border-radius-sm);
|
|
transition: border-color var(--transition-fast);
|
|
}
|
|
|
|
input[type=text]:focus {
|
|
outline: none;
|
|
border-color: var(--color-accent-primary);
|
|
}
|
|
|
|
/* Radio + text wrapped in a label so the whole pill is the tap target */
|
|
.choice {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
min-height: 44px;
|
|
margin: 0 var(--space-md) 0 0;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
}
|
|
|
|
input[type=radio] {
|
|
margin: 0;
|
|
width: 1.1rem;
|
|
height: 1.1rem;
|
|
accent-color: var(--color-accent-primary);
|
|
}
|
|
|
|
.form-row {
|
|
margin-bottom: var(--space-md);
|
|
}
|
|
|
|
input[type=submit], button {
|
|
background-color: var(--color-accent-primary);
|
|
color: var(--color-on-accent);
|
|
border: none;
|
|
min-height: 44px;
|
|
padding: 0.6rem 1.5rem;
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
font-family: var(--font-ui);
|
|
border-radius: var(--border-radius-sm);
|
|
cursor: pointer;
|
|
transition: background-color var(--transition-fast), transform var(--transition-fast);
|
|
}
|
|
|
|
input[type=submit]:hover, button:hover {
|
|
background-color: var(--color-accent-hover);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
hr {
|
|
border: none;
|
|
border-top: 1px solid var(--color-border);
|
|
margin: var(--space-xl) 0;
|
|
}
|
|
|
|
p {
|
|
margin: 1rem 0;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
b, strong {
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
pre {
|
|
background-color: var(--color-bg-secondary);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--border-radius-sm);
|
|
padding: var(--space-md);
|
|
overflow-x: auto; /* scroll the code block, never the page */
|
|
-webkit-overflow-scrolling: touch;
|
|
font-size: 0.85rem;
|
|
line-height: 1.5;
|
|
max-width: 100%;
|
|
}
|
|
|
|
code {
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
/* wide tables scroll inside their own box instead of widening the page */
|
|
.table-wrap {
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
}
|
|
|
|
td, th {
|
|
text-align: left;
|
|
padding: 0.5rem 0.75rem;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
form {
|
|
padding: var(--space-md);
|
|
}
|
|
|
|
/* full-width submit buttons are easier to hit with a thumb */
|
|
input[type=submit] {
|
|
width: 100%;
|
|
}
|
|
|
|
pre {
|
|
font-size: 0.78rem;
|
|
}
|
|
}
|