:root{--paper:#fafafa;--ink:#202027;--muted:#62626d;--line:#dedee5;--accent:#7653c8;--white:#ffffff}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif;font-size:15px;line-height:1.65}a{color:inherit;text-underline-offset:4px}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}.site-header,main,footer{max-width:1320px;margin:auto}.site-header{height:118px;display:flex;align-items:center;justify-content:space-between;padding:0 58px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px;text-decoration:none;font-size:11px;letter-spacing:2px;font-weight:bold;line-height:1.5}.brand-mark{font-family:Georgia,serif;font-size:39px;letter-spacing:-3px;font-style:italic;border-right:1px solid #dedee5;padding-right:18px;font-weight:normal}.site-header nav{display:flex;gap:35px;font-size:13px}.site-header nav a{text-decoration:none}.site-header nav a:hover{text-decoration:underline}.hero{padding:78px 58px 70px;display:grid;grid-template-columns:1.4fr 1fr;gap:80px;align-items:center}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2px;margin:0 0 19px;line-height:1.5}.eyebrow>span{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:100%;margin-right:8px;vertical-align:2px}h1,h2,h3,blockquote{font-family:Georgia,'Times New Roman',serif;font-weight:normal}h1{font-size:clamp(38px,4.25vw,60px);letter-spacing:-2.5px;line-height:1.14;margin:0 0 25px}h1 em,h2 em{font-weight:normal;color:#7653c8}p{margin:0 0 18px}.intro{max-width:500px;font-size:16px;line-height:1.85;color:var(--muted)}.button{display:inline-flex;gap:45px;background:var(--ink);color:#fafafa;text-decoration:none;padding:14px 22px;font-size:12px;margin-top:13px}.button:hover{background:#7653c8}.hero-note{font-size:10px;color:var(--muted);margin:15px 0 0}.hero-aside{padding:29px 32px 25px;border:1px solid #dedee5;position:relative;background:linear-gradient(120deg,#f1f1f5,#f1f1f5);text-align:center;box-shadow:8px 8px 0 #dedee5}.folio{font-size:8px;letter-spacing:2px}.ornament{font-size:36px;color:var(--accent);line-height:1.3;margin:14px 0 3px}.hero-aside blockquote{font-size:25px;line-height:1.5;margin:0 0 24px}.byline{font-size:9px;letter-spacing:2px;margin-bottom:6px}.hero-aside a{font-size:10px}.edition{font-size:9px;color:var(--muted);margin:8px 0 0}.collection-strip{display:flex;justify-content:space-between;border-block:1px solid var(--line);padding:16px 58px;font-size:11px;color:var(--muted)}.collection-strip b{font-family:Georgia,serif;font-weight:normal;font-size:20px;color:var(--ink);margin-right:8px}.library{padding:68px 58px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px}.section-heading .eyebrow{margin-bottom:9px}h2{font-size:37px;letter-spacing:-1px;line-height:1.2;margin:0}.section-heading>p{font-size:12px;color:var(--muted);margin-bottom:4px}.tools{display:flex;gap:18px;align-items:center;margin-bottom:21px}.search{border:1px solid #dedee5;background:var(--white);padding:9px 15px;display:flex;align-items:center;gap:12px;flex:1}.search>span{font-size:25px;line-height:1}.search input{width:100%;border:0;background:none;font-size:12px;padding:5px;outline-offset:0}.search kbd{font-size:11px;border:1px solid var(--line);padding:0 6px;color:var(--muted)}.reset{background:none;border:0;text-decoration:underline;font-size:11px;color:var(--muted)}.filters{display:flex;flex-wrap:wrap;gap:7px}.filters button{border:1px solid #dedee5;color:var(--ink);background:transparent;padding:7px 12px;font-size:10px;border-radius:2px}.filters button[aria-pressed=true]{background:var(--ink);color:var(--white);border-color:var(--ink)}.filters button:hover{border-color:var(--ink)}.results-heading{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin:27px 0 15px}.results-heading p{margin:0}.results-heading>span{letter-spacing:1.3px;font-size:8px}.entry{display:grid;grid-template-columns:0.82fr 1.6fr;border:1px solid var(--line);margin-bottom:19px;scroll-margin-top:25px;background:var(--white)}.claim-side{padding:27px 29px;background:#f1f1f5;position:relative;border-right:1px solid var(--line)}.entry-number{font:italic 20px Georgia,serif;color:#7653c8}.topic{float:right;font-size:8px;letter-spacing:.6px;background:#e9e5f5;border:1px solid #dedee5;padding:2px 7px;margin-top:4px}.claim-side .eyebrow{font-size:8px;color:var(--muted);margin:26px 0 10px;letter-spacing:1.5px}.claim-side h3{font-size:24px;line-height:1.35;letter-spacing:-.4px;margin:0 0 20px}.claim-note{font-size:9px;color:var(--muted);margin-bottom:0}.quote-side{padding:29px 34px 15px}.quote-side>.eyebrow{font-size:8px;color:#337d83;margin-bottom:13px;letter-spacing:1.6px}.quote-side>blockquote{font-size:24px;line-height:1.5;margin:0 0 16px;letter-spacing:-.25px}.citation{font-size:10px;line-height:1.7;color:var(--muted);margin-bottom:20px}.citation strong{color:var(--ink);font-weight:500}.citation span{display:block;font-size:9px;margin-top:3px}.quote-side details{border-top:1px solid var(--line);padding-top:11px}.quote-side summary{cursor:pointer;font-size:10px;list-style:none;padding:0 0 11px}.quote-side summary::-webkit-details-marker{display:none}.quote-side summary>span{float:right;font-size:17px;line-height:1}details[open] summary>span{transform:rotate(45deg)}.context{font-size:13px;color:#52525f;padding:7px 0 6px}.context h4{font:normal 21px Georgia,serif;margin:0 0 12px;color:var(--ink)}.witness{border-left:2px solid #337d83;padding-left:18px;margin:23px 0 10px}.witness .eyebrow{font-size:8px;margin-bottom:10px}.witness blockquote{font-size:20px;margin:0 0 8px}.witness a{font-size:10px}.entry-actions{border-top:1px solid var(--line);display:flex;gap:20px;align-items:center;padding:11px 0 0;font-size:9px}.entry-actions a{text-decoration:none}.entry-actions a:hover{text-decoration:underline}.entry-actions button{padding:0;background:transparent;border:none;color:var(--muted);font-size:9px}.entry-actions .permalink{margin-left:auto;color:var(--muted)}.entry:target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}#empty{text-align:center;padding:55px 10px}#empty h3{font-size:30px}#empty button{padding:10px;background:var(--ink);color:white;border:0}.approach{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1fr 1.35fr;gap:90px;padding:55px 58px}.approach h2{font-size:38px}.approach h2 em{color:#bda0ff}.approach .eyebrow{color:#85d2d5}.approach>div>p:not(.eyebrow){font-size:13px;line-height:1.9;color:#dddbe6}.approach>div>p:last-child{margin-bottom:0}.sources{padding:65px 58px}.source-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin:32px 0}.source-grid>a{border-top:1px solid #dedee5;padding-top:18px;text-decoration:none}.source-grid>a>span{font-size:8px;letter-spacing:1.5px;color:var(--muted)}.source-grid h3{font-size:21px;line-height:1.4;margin:12px 0}.source-grid p{font-size:12px;color:var(--muted)}.source-grid>a:hover h3{text-decoration:underline}.source-note{font-size:11px;color:var(--muted);max-width:900px}.download{font-size:11px}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:28px 58px 38px;font-size:10px;color:var(--muted)}.footer-brand{font:20px Georgia,serif;text-decoration:none;color:var(--ink)}.footer-brand span{display:block;font:10px 'Avenir Next',Avenir,'Segoe UI',sans-serif;color:var(--muted);margin-top:6px}footer p{text-align:right;line-height:1.9;margin:0}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 22px;box-shadow:0 3px 18px #0002;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90vw}#toast.visible{opacity:1}.skip{position:absolute;top:-100px;left:15px;background:white;padding:12px;z-index:10}.skip:focus{top:10px}::selection{background:#e9e5f5}@media(min-width:1500px){.site-header,main,footer{border-inline:1px solid var(--line)}}@media(max-width:900px){.site-header{padding-inline:28px}.hero{padding:50px 28px;gap:35px}.hero-aside{padding:23px}.hero-aside blockquote{font-size:21px}h1{letter-spacing:-1.5px}.library,.sources{padding:45px 28px}.collection-strip{padding-inline:28px}.approach{padding:40px 28px;gap:35px}.entry{grid-template-columns:1fr 1.45fr}.claim-side{padding:23px}.quote-side{padding:24px}.quote-side>blockquote{font-size:22px}.claim-side h3{font-size:22px}.entry-actions{gap:12px}footer{padding-inline:28px}}@media(max-width:620px){.site-header{height:90px;padding-inline:20px}.brand{font-size:9px;gap:10px}.brand-mark{font-size:32px;padding-right:12px}.site-header nav{gap:15px;font-size:10px}.site-header nav a:last-child{display:none}.hero{display:block;padding:40px 20px}.hero h1{font-size:40px}.intro{font-size:14px}.hero-aside{margin-top:35px;padding:23px 27px}.hero-aside blockquote{font-size:24px}.collection-strip{padding:12px 20px;gap:10px;font-size:9px}.collection-strip span:last-child{display:none}.library,.sources{padding:38px 20px}.section-heading{display:block}.section-heading>p{margin-top:13px}h2{font-size:32px}.tools{gap:10px}.search{padding:7px}.search input{font-size:11px}.search kbd{display:none}.reset{font-size:10px}.filters{gap:6px}.filters button{padding:7px 10px}.results-heading>span{display:none}.entry{display:block;margin-bottom:24px}.claim-side{padding:20px 23px;border-right:0;border-bottom:1px solid var(--line)}.claim-side .eyebrow{margin-top:16px}.claim-side h3{font-size:24px;margin-bottom:12px}.quote-side{padding:24px 23px 15px}.quote-side>blockquote{font-size:24px}.entry-actions{font-size:9px;gap:17px}.approach{display:block;padding:35px 23px}.approach h2{font-size:34px;margin-bottom:28px}.source-grid{grid-template-columns:1fr;gap:18px}.source-grid p{margin-bottom:0}footer{display:block;padding:25px 20px}footer p{text-align:left;margin-top:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{.site-header nav,.tools,.filters,.button,.entry-actions,#toast{display:none!important}body{background:white;color:black}.hero{padding:20px}.hero-aside{box-shadow:none}.library,.sources{padding:20px}.entry{break-inside:avoid;display:block}.entry[hidden]{display:block!important}.claim-side{border:0}.quote-side{padding:20px}.approach{background:white;color:black}.approach>div>p:not(.eyebrow){color:black}a{color:black}}
/* Reading themes: neutral surfaces with violet and teal accents. */
:root{color-scheme:light;--paper:#fafafa;--ink:#202027;--muted:#62626d;--line:#dedee5;--accent:#7653c8;--white:#fff;--soft:#f1f1f5;--tag:#e9e5f5;--secondary:#337d83;--context:#52525f}
html[data-theme=dark]{color-scheme:dark;--paper:#131317;--ink:#f1f0f6;--muted:#b1afbe;--line:#37363f;--accent:#b99aff;--white:#1b1b21;--soft:#222229;--tag:#353044;--secondary:#85d2d5;--context:#c6c4d0}
body{background:var(--paper);color:var(--ink)}.brand-mark{border-color:var(--line)}h1 em,h2 em{color:var(--accent)}.hero-aside{border-color:var(--line);background:var(--soft);box-shadow:8px 8px 0 var(--line)}.ornament{color:var(--secondary)}.button{background:var(--ink);color:var(--paper)}.button:hover{background:var(--accent);color:#fff}.claim-side{background:var(--soft)}.topic{background:var(--tag);border-color:var(--line);color:var(--ink)}.entry-number{color:var(--accent)}.quote-side>.eyebrow{color:var(--secondary)}.search{border-color:var(--line);background:var(--white)}.search input{color:var(--ink)}.filters button{border-color:var(--line)}.filters button[aria-pressed=true]{color:var(--paper)}.context{color:var(--context)}.witness{border-color:var(--secondary)}.approach{background:#202027;color:#f4f2fa}.approach h2 em{color:#bda0ff}.approach .eyebrow{color:#8bd2d5}.approach>div>p:not(.eyebrow){color:#dddbe6}.source-grid>a{border-color:var(--line)}.skip{background:var(--white)}#toast{background:var(--ink);color:var(--paper)}::selection{background:#b89bf066;color:var(--ink)}
.theme-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--white);color:var(--ink);padding:7px 11px;font-size:12px;border-radius:30px;min-height:40px}.theme-toggle:hover{border-color:var(--accent)}.site-header nav{align-items:center;gap:26px}.filters button{font-size:12px;min-height:40px}.eyebrow{font-size:11px}.claim-side .eyebrow,.quote-side>.eyebrow{font-size:10px}.claim-note{font-size:11px}.citation{font-size:12px}.citation span{font-size:11px}.quote-side summary{font-size:12px;min-height:40px;padding-top:5px}.entry-actions{font-size:11px;flex-wrap:wrap;gap:8px 20px}.entry-actions a,.entry-actions button{display:inline-flex;align-items:center;min-height:40px;font-size:11px}.context{font-size:15px;line-height:1.8}.quote-side>blockquote{font-size:25px;line-height:1.55}.hero-note{font-size:12px}.hero-aside a,.edition{font-size:12px}.byline,.folio{font-size:10px}.collection-strip{font-size:12px}.source-grid p,.approach>div>p:not(.eyebrow){font-size:15px}.source-note{font-size:13px}.download{font-size:13px}.source-grid>a>span{font-size:10px}.results-heading{font-size:12px}.results-heading>span{font-size:9px}.search input{font-size:14px;min-height:32px}.reset{font-size:12px;min-height:44px}footer{font-size:12px}.footer-brand span{font-size:12px}.section-heading>p{font-size:14px}.hero-aside{border-top:3px solid var(--accent)}
@media(max-width:620px){.site-header nav{gap:12px}.site-header nav a{display:none}.theme-toggle{font-size:11px;min-height:44px}.hero h1{font-size:40px}.entry-actions{gap:5px 16px}.quote-side>blockquote{font-size:24px}.collection-strip{font-size:11px}.search input{font-size:16px}.reset{font-size:11px}.filters button{font-size:12px;min-height:44px}.source-grid p{font-size:14px}.hero-aside a{font-size:11px}.claim-side h3{font-size:25px}.brand{font-size:10px}.hero-note{font-size:11px}}
@media print{:root,html[data-theme=dark]{--paper:white;--ink:black;--muted:#444;--line:#bbb;--white:white;--soft:white;--context:black;color-scheme:light}.theme-toggle{display:none!important}.approach{background:white;color:black}.approach>div>p:not(.eyebrow){color:black}.hero-aside{box-shadow:none}}
.scripture-callout{margin:0 58px 45px;padding:28px 32px;border-left:3px solid var(--accent);background:var(--soft);display:grid;grid-template-columns:1.5fr 1fr;align-items:center;gap:38px}.scripture-callout h2{font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif;font-size:10px;letter-spacing:1.8px;line-height:1.6;color:var(--secondary);margin:0 0 12px}.scripture-callout blockquote{font-size:clamp(24px,2.6vw,33px);line-height:1.4;margin:0 0 12px;letter-spacing:-.5px}.scripture-callout a{font-size:12px;color:var(--muted)}.scripture-callout>p{font-size:14px;line-height:1.8;color:var(--context);margin:0}@media(max-width:900px){.scripture-callout{margin-inline:28px;gap:25px}}@media(max-width:620px){.scripture-callout{margin:0 20px 32px;padding:23px;grid-template-columns:1fr;gap:20px}.scripture-callout blockquote{font-size:27px}}@media print{.scripture-callout{break-inside:avoid}}
.hero-aside .featured-context{font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif;font-size:14px;line-height:1.8;text-align:left;color:var(--context);border-top:1px solid var(--line);padding-top:18px;margin:0 0 22px}
p{text-wrap:pretty}
/* Palatino gives headings and quotations an open, literary character. */
h1,h2,h3,blockquote,.brand-mark,.entry-number,.collection-strip b,.context h4,.footer-brand{font-family:Palatino,'Palatino Linotype','Book Antiqua',Georgia,serif}
.scripture-callout h2{font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif}
:root{--reading-scale:1}.reading-controls{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:0 0 18px;flex-wrap:wrap}.reading-controls>span:first-child{font-size:12px;color:var(--muted);margin-right:8px}.reading-controls button{min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:3px;background:var(--white);color:var(--ink);font-size:15px}.reading-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.reading-controls button:disabled{opacity:.4;cursor:default}#text-reset{font-size:12px;min-width:60px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.intro{font-size:calc(16px * var(--reading-scale))}.hero-aside blockquote{font-size:calc(25px * var(--reading-scale))}.hero-aside .featured-context{font-size:calc(14px * var(--reading-scale))}.quote-side>blockquote{font-size:calc(25px * var(--reading-scale))}.claim-side h3{font-size:calc(24px * var(--reading-scale))}.context{font-size:calc(15px * var(--reading-scale))}.context h4{font-size:calc(21px * var(--reading-scale))}.witness blockquote{font-size:calc(20px * var(--reading-scale))}.citation{font-size:calc(12px * var(--reading-scale))}.citation span{font-size:calc(11px * var(--reading-scale))}.witness a{font-size:calc(10px * var(--reading-scale))}.approach>div>p:not(.eyebrow),.source-grid p{font-size:calc(15px * var(--reading-scale))}.source-note{font-size:calc(13px * var(--reading-scale))}.scripture-callout blockquote{font-size:calc(clamp(24px,2.6vw,33px) * var(--reading-scale))}.scripture-callout>p{font-size:calc(14px * var(--reading-scale))}.entry,.hero,.approach,.source-grid{overflow-wrap:break-word}.entry>*,.hero>*,.approach>*,.source-grid>*{min-width:0}
@media(max-width:900px){.hero-aside blockquote{font-size:calc(21px * var(--reading-scale))}.quote-side>blockquote,.claim-side h3{font-size:calc(22px * var(--reading-scale))}}@media(max-width:620px){.intro{font-size:calc(14px * var(--reading-scale))}.hero-aside blockquote,.quote-side>blockquote{font-size:calc(24px * var(--reading-scale))}.claim-side h3{font-size:calc(25px * var(--reading-scale))}.source-grid p{font-size:calc(14px * var(--reading-scale))}.scripture-callout blockquote{font-size:calc(27px * var(--reading-scale))}.reading-controls{justify-content:flex-start}}@media print{.reading-controls{display:none!important}}
.hero-aside .ornament{color:var(--accent)}
/* Decorative cap stays behind the hero copy and out of the reading order. */
.hero{position:relative;isolation:isolate;overflow:hidden}.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:url('./assets/scholars-cap.svg');background-repeat:no-repeat;background-size:650px auto;background-position:12% 40%;opacity:.13}html[data-theme=dark] .hero::before{opacity:.17}@media(max-width:900px){.hero::before{background-size:520px auto;background-position:-50px 20%}}@media(max-width:620px){.hero::before{background-size:450px auto;background-position:-20px 30px;opacity:.1}html[data-theme=dark] .hero::before{opacity:.13}}@media print{.hero::before{display:none}}
/* Engraved portrait replaces the floating cap with a quiet historical presence. */
.hero::before{background-image:url('./assets/calvin-engraving.png');background-size:auto 115%;background-position:left -70px bottom -35px;opacity:.09;mask-image:linear-gradient(to right,#000 0%,#000 10%,transparent 55%);-webkit-mask-image:linear-gradient(to right,#000 0%,#000 10%,transparent 55%)}html[data-theme=dark] .hero::before{opacity:.15}@media(max-width:900px){.hero::before{background-size:auto 105%;background-position:left -100px bottom}}@media(max-width:620px){.hero::before{background-size:350px auto;background-position:left -110px top 10px;opacity:.08;mask-image:linear-gradient(to right,#000,transparent 80%);-webkit-mask-image:linear-gradient(to right,#000,transparent 80%)}html[data-theme=dark] .hero::before{opacity:.12}}
/* Make the portrait visible while preserving the fade behind the text. */
.hero::before{opacity:.24}html[data-theme=dark] .hero::before{opacity:.3}@media(max-width:620px){.hero::before{opacity:.2}html[data-theme=dark] .hero::before{opacity:.26}}
/* A little more room for the Avenir reading and interface text. */
body{font-size:16px}.site-header nav{font-size:14px}.intro{font-size:calc(17px * var(--reading-scale))}.hero-aside .featured-context{font-size:calc(15px * var(--reading-scale))}.context{font-size:calc(16px * var(--reading-scale))}.approach>div>p:not(.eyebrow),.source-grid p{font-size:calc(16px * var(--reading-scale))}.scripture-callout>p{font-size:calc(15px * var(--reading-scale))}.source-note{font-size:calc(14px * var(--reading-scale))}.citation{font-size:calc(13px * var(--reading-scale))}.citation span{font-size:calc(12px * var(--reading-scale))}.claim-note{font-size:12px}.quote-side summary{font-size:13px}.entry-actions a,.entry-actions button{font-size:12px}.filters button{font-size:13px}.search input{font-size:15px}.section-heading>p{font-size:15px}.collection-strip{font-size:13px}.reading-controls>span:first-child{font-size:13px}@media(max-width:620px){.intro{font-size:calc(15px * var(--reading-scale))}.source-grid p{font-size:calc(15px * var(--reading-scale))}.search input{font-size:16px}.collection-strip{font-size:12px}.filters button{font-size:13px}}
.collection-strip{align-items:center}.collection-strip>span{display:inline-flex;align-items:center}.collection-strip b{line-height:1}
.filter-label{display:flex;align-items:center;gap:8px;flex:0 0 100%;font-size:13px;color:var(--ink);margin-bottom:5px}.filter-label svg{color:var(--accent);flex-shrink:0}.filter-label #filter-help{font-size:12px;color:var(--muted);margin-left:5px}.filters button[aria-pressed=true]{box-shadow:inset 0 -2px 0 var(--accent)}
