@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; }