Files
study-bible-project/src/index.css
T
nmemmertandClaude Sonnet 5.5 512c6b6889
Build and Push Docker Image / build-and-push (push) Successful in 5m7s
Put every preference in Settings; same header on every page
- Settings > Preferences: typeface, line spacing, verse numbers, highlight colour names,
  My Studies grid/list and sort, verse-of-the-day Bible and picture, commentary sources, study templates
- Header uses one fixed width and reserves scrollbar space so the nav sits in the same place on every page

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 14:10:12 -04:00

139 lines
3.5 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
color-scheme: light;
}
html,
body,
#root {
min-height: 100%;
}
body {
margin: 0;
font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: #faf7f0; /* the default (paper) theme; replaced by the chosen theme at runtime */
color: #0f172a;
}
/* Selected text follows the reading theme, so it stays visible on dark as well as light pages. */
::selection {
background: var(--r-sel, rgba(15, 23, 42, 0.18));
}
button,
input,
textarea,
select {
font: inherit;
}
/* iPhone and iPad: don't inflate text when the phone is turned sideways, no grey flash on tap, and no
double-tap-to-zoom delay on controls. */
html {
scrollbar-gutter: stable; /* pages with and without a scrollbar line up the same */
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
-webkit-tap-highlight-color: transparent;
}
button,
a,
select,
summary,
label,
input,
[role='button'],
[role='tab'],
[role='option'],
[role='menuitem'] {
touch-action: manipulation;
}
/* iOS Safari zooms the whole page when a text field under 16px gets focus (and doesn't zoom back).
On touch screens, text fields are at least 16px. */
@media (pointer: coarse) {
input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='color']):not([type='file']):not([type='button']):not([type='submit']),
select:not([data-keep-size]),
textarea:not([data-keep-size]) {
font-size: max(16px, 1em);
}
/* Small text links and buttons (no padding of their own) get a finger-sized height. */
:is(button, a).text-xs:not([class^='p-'], [class^='py-'], [class*=' p-'], [class*=' py-']) {
padding-block: 0.55rem;
}
/* Small pill buttons (tags, chips) keep their look but get a bigger area to tap. */
:where(button.rounded-full) {
position: relative;
}
:where(button.rounded-full)::after {
content: '';
position: absolute;
inset: -7px -3px;
}
}
/* Top bars leave room for the status bar / notch when the app is installed or full-screen
(env() is 0 in an ordinary browser tab). */
.safe-top {
padding-top: env(safe-area-inset-top, 0px);
}
.scrollbar-thin::-webkit-scrollbar {
width: 9px;
height: 9px;
}
.scrollbar-thin::-webkit-scrollbar-thumb {
background: rgba(148, 163, 184, 0.7);
border-radius: 9999px;
}
.scrollbar-thin::-webkit-scrollbar-track {
background: rgba(148, 163, 184, 0.12);
}
/* A clear ring wherever keyboard focus lands (mouse clicks don't show it). */
:where(button, a, summary, [role='button'], [role='tab'], [role='option'], input, select, textarea):focus-visible {
outline: 2px solid var(--r-accent, #a84e27);
outline-offset: 2px;
}
/* "Skip to content" appears only when it's tabbed to. */
.skip-link {
position: absolute;
left: 0.75rem;
top: -4rem;
z-index: 100;
padding: 0.5rem 0.9rem;
border-radius: 9999px;
background: var(--r-text, #2b2620);
color: var(--r-bg, #faf7f0);
font-size: 0.875rem;
}
.skip-link:focus {
top: 0.75rem;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
}
}
/* Words that differ between two translations (Reader → read beside another Bible) */
.diff-hl {
background: color-mix(in srgb, var(--r-accent, #a84e27) 20%, transparent);
border-bottom: 2px solid color-mix(in srgb, var(--r-accent, #a84e27) 55%, transparent);
border-radius: 2px;
}