@font-face{font-family:Literary;src:url('assets/book/fonts/EBGaramond-Regular.woff2')}@font-face{font-family:Literary;src:url('assets/book/fonts/EBGaramond-Italic.woff2');font-style:italic}
:root{--paper:#faf7ef;--ink:#252d39;--muted:#586476;--blue:#4267a6;--wash:#e7edf7;--line:#d3d6d9;--size:24px;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,sans-serif;font-size:15px;line-height:1.5}body.dark{--paper:#19222c;--ink:#f4f0e7;--muted:#bec9d9;--blue:#a5c2f4;--wash:#28394b;--line:#455362;color-scheme:dark}button,a{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid var(--blue);outline-offset:3px}button{border:0;background:none;min-height:44px}a{color:var(--blue)}header{max-width:680px;margin:auto;padding:20px 24px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--line)}.mark{width:48px;height:48px;object-fit:contain}.brand{font-family:Literary;font-size:26px;line-height:1}.subtitle{font-size:10px;letter-spacing:.12em;text-transform:uppercase;margin-top:7px;color:var(--muted)}header button{margin-left:auto;font-size:19px}main{max-width:610px;padding:28px 25px 110px;margin:auto}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}h1,h2,h3,p{margin:0}h1{font-family:Literary;font-weight:400;font-size:43px;line-height:1.08;margin:10px 0 15px}h2{font-family:Literary;font-weight:400;font-size:31px;line-height:1.15;margin:12px 0}h3{font-family:Literary;font-weight:400;font-size:25px}p{margin:12px 0}.muted,.note{color:var(--muted)}.note{font-size:12px;line-height:1.5}.dates{display:flex;justify-content:space-between;align-items:center;margin:0 -6px 23px}.dates button{width:42px;padding:7px 0;line-height:1.5;font-size:12px}.dates button strong{font-weight:400;font-size:19px;display:block}.dates .selected{background:var(--blue);color:var(--paper);border-radius:3px}.observance{border-bottom:1px solid var(--line);padding-bottom:20px}.season{font-size:13px;color:var(--muted)}.practice{padding:23px 0 12px}.practice .intro{font-family:Literary;font-size:22px;line-height:1.35}.primary{background:var(--blue);color:var(--paper);width:100%;padding:15px 16px;border-radius:3px;font-size:16px;font-weight:600;text-align:center;margin:17px 0 6px}.smallaction{font-size:13px;color:var(--blue)}.sequence{border-top:1px solid var(--line);margin-top:19px;padding-top:17px}.sequence ol{padding-left:21px;color:var(--muted);font-size:14px;line-height:1.9}.nav{position:fixed;bottom:0;left:0;right:0;background:var(--paper);border-top:1px solid var(--line);display:flex;justify-content:center;padding:5px 10px max(10px,env(safe-area-inset-bottom));z-index:5}.nav a{flex:1;max-width:200px;text-align:center;text-decoration:none;color:var(--muted);padding:12px;font-size:13px}.nav a.active{color:var(--blue);box-shadow:inset 0 2px var(--blue);font-weight:600}.readerTop{position:sticky;top:0;z-index:5;background:var(--paper);display:flex;justify-content:space-between;padding:10px 18px;border-bottom:1px solid var(--line)}.readerTop button{color:var(--blue)}.readerTop span{font-size:12px;align-self:center}.position{height:2px;background:var(--line);position:sticky;top:65px;z-index:6}.position i{display:block;background:var(--blue);height:2px;width:0}.prayer{padding-top:30px;padding-bottom:130px}.prayer .chapter{margin-bottom:31px}.prayer p.prayerline{font-family:Literary;font-size:var(--size);line-height:1.58;margin:7px 0}.prayer h3{font-size:29px;margin:35px 0 17px}.prayer .major{font-family:Literary;font-size:33px;margin:30px 0}.prayer .rubric,.prayer .instruction{font-size:13px;color:var(--muted);font-style:italic}.prayer img{display:block;width:100%;max-height:480px;object-fit:contain;margin:28px auto}.readerBottom{position:fixed;bottom:0;left:0;right:0;background:var(--paper);border-top:1px solid var(--line);padding:9px 20px;display:flex;justify-content:space-between;z-index:8}.readerBottom button{color:var(--blue)}.bookcover{display:grid;grid-template-columns:116px 1fr;gap:22px;align-items:center;border-bottom:1px solid var(--line);padding:22px 0 28px;margin-bottom:23px}.bookcover img{width:116px;height:168px;object-fit:cover}.bookcover h2{font-size:35px}.toc{list-style:none;padding:0}.toc li{border-bottom:1px solid var(--line)}.toc a{display:flex;align-items:center;gap:15px;padding:15px 0;text-decoration:none;color:var(--ink);font-family:Literary;font-size:23px;line-height:1.15}.toc span{font-family:Arial;font-size:11px;color:var(--muted);min-width:23px}.toc em{font-family:Arial;font-style:normal;color:var(--blue);margin-left:auto}.metrics{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:19px 0;margin:20px 0 27px}.metrics strong{font-family:Literary;font-weight:400;font-size:47px;line-height:1.05;display:block}.metrics span{color:var(--muted);font-size:13px}.segmented{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:17px 0}.segmented button{padding:7px 20px;color:var(--muted)}.segmented .active{color:var(--blue);border-bottom:2px solid var(--blue)}.chart{display:flex;align-items:flex-end;gap:23px;padding:10px 8px 0;height:129px}.bar{flex:1;text-align:center;display:flex;flex-direction:column;justify-content:flex-end;height:100%;font-size:12px;color:var(--muted)}.bar i{display:block;background:var(--blue);width:24px;margin:5px auto 8px;height:calc(var(--n)*11px)}.bar b{font-size:14px;font-weight:400;color:var(--ink)}.aim{margin:25px 0;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px}.aim button{font-size:12px;color:var(--blue)}.historyrow{padding:14px 0;border-bottom:1px solid var(--line)}.historyrow small{color:var(--muted)}.settings{padding:12px 20px;border-bottom:1px solid var(--line);background:var(--wash);display:flex;align-items:center;justify-content:space-between;gap:8px}.settings[hidden]{display:none}.banner{font-size:11px;letter-spacing:.04em;color:var(--muted);margin-top:25px}.toast{background:var(--wash);padding:12px;margin:12px 0}.sr{position:absolute;left:-9999px}@media(min-width:700px){main{padding-top:45px}.dates{max-width:400px}header{padding-top:25px}.bookcover{grid-template-columns:160px 1fr}.bookcover img{width:160px;height:220px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.chart.twelve{gap:5px;padding-left:0;padding-right:0}.chart.twelve .bar{min-width:0;font-size:9px}.chart.twelve .bar i{width:15px}.chart.twelve .bar span{font-size:9px;line-height:1.2;white-space:normal}.prayerline{white-space:pre-line}

.observance h2{font-size:28px}.practice h2{font-size:29px}.practice{padding-top:18px}.practice .intro{font-size:20px}.metrics strong{font-size:36px}.historyrow p{font-family:Literary;font-size:21px;margin:5px 0}.historyrow{padding:10px 0}
.source-row{display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:12px 0;color:var(--blue);text-decoration:none;border-bottom:1px solid var(--line);width:100%;text-align:left;font-size:14px}.official-secondary{padding-top:16px;border-top:1px solid var(--line);margin-top:14px}.other-hours{margin:15px 0}.official-placeholder{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;margin:28px 0}.official-placeholder .intro{font-family:Literary;font-size:27px;line-height:1.35}.office-outline div:not(.eyebrow){padding:11px 0;border-bottom:1px solid var(--line);font-family:Literary;font-size:24px}.official-reader{padding-bottom:40px}.analytics{padding-top:23px}.analytics h1{font-size:38px;margin:8px 0}.analytics .segmented{margin:8px 0 10px}.period{font-size:14px}.statline{display:flex;justify-content:space-between;margin:15px 0 4px;gap:8px;font-size:13px}.statline strong{font-size:24px;font-weight:400;color:var(--ink)}.comparison{font-size:11px;color:var(--muted);margin:0 0 16px}.data-section{border-top:1px solid var(--line);padding:13px 0 15px}.data-section h3{font-size:23px;line-height:1.1;margin:0 0 10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.daycell{display:flex;justify-content:space-between;align-items:center;min-width:0;padding:5px 7px;background:var(--wash);font-size:11px;color:var(--muted);min-height:29px}.daycell.recorded{background:var(--blue);color:var(--paper)}.daycell b{font-size:12px;font-weight:400}.calendar-grid+.note{font-size:10px;margin-top:6px}.calendar84 .daycell{min-height:24px;padding:3px 7px}.chart-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.chart-heading>span{font-size:11px;color:var(--muted);white-space:nowrap}.week-row{display:grid;grid-template-columns:118px 1fr 20px;align-items:center;gap:10px;margin:6px 0;font-size:11px}.track{height:5px;background:var(--wash);position:relative}.track i{display:block;height:5px;background:var(--blue)}.week-row b{font-weight:400;font-size:13px;text-align:right}.prayer-row{margin:10px 0}.prayer-row>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px;margin-bottom:4px}.prayer-row b{font-weight:400;font-size:13px}.categoryline{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin:14px 0 6px;padding-top:9px;font-size:12px}.categoryline b{margin-left:8px;font-weight:400}.analytics .aim{margin:0 0 12px;padding:10px 0}.analytics .aim button{min-height:36px}.analytics .data-section .note{font-size:10px}.analytics details{margin:12px 0}
.prayer-matrix{width:100%;border-collapse:separate;border-spacing:2px 4px;table-layout:fixed;font-size:8px}.prayer-matrix th{font-weight:400;padding:0;text-align:center;overflow:visible}.prayer-matrix thead th:first-child,.prayer-matrix tbody th[scope=row]{width:81px;text-align:left;font-size:11px;line-height:1.15;padding-right:6px}.prayer-matrix thead th:last-child{width:23px}.prayer-matrix thead th:not(:first-child):not(:last-child) span{font-size:8px;white-space:nowrap;display:block;transform:translateX(4px);text-align:left}.prayer-matrix tbody td{text-align:center;height:20px;color:var(--muted);background:var(--wash);padding:0}.prayer-matrix tbody td.present{color:var(--paper);background:var(--blue);font-weight:600}.prayer-matrix tbody td.rowtotal{background:none;color:var(--ink);font-size:12px}.prayer-matrix .matrix-group th{text-align:left;font-size:10px;color:var(--muted);padding:6px 0 2px;border-bottom:1px solid var(--line)}.analytics .data-section h3{font-size:22px}.analytics>h1{font-size:33px}.analytics .data-section{padding-top:11px;padding-bottom:11px}.analytics .statline{margin-top:10px}.analytics .comparison{margin-bottom:12px}
.quiet-devotions{border-top:1px solid var(--line);padding:12px 0;margin:10px 0}.quiet-devotions a{display:block;font-size:13px;padding:5px 0;text-decoration:none}.layout-notice{font-size:11px;color:var(--muted);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0;margin:24px 0}.official-text-section h3{margin:22px 0 8px}.official-text-section .note{margin-bottom:15px}.text-placeholder{padding:7px 0 22px}.text-placeholder i{display:block;height:2px;background:var(--line);width:100%;margin:16px 0}.text-placeholder i:nth-child(3){width:85%}.text-placeholder i:last-child{width:65%}

.matrix-scroll{overflow-x:auto}.prayer-matrix{min-width:840px}.prayer-matrix tbody th{position:sticky;left:0;background:var(--paper,#faf7ef);z-index:1}.prayer-matrix td button{font:inherit;color:inherit;border:0;background:transparent;min-width:24px;min-height:44px;padding:0}.dark .prayer-matrix tbody th{background:#171c25}
.date-picker{display:flex;gap:10px;align-items:center;font-size:13px}.date-picker input{max-width:180px}input,select{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);padding:10px;border-radius:3px;min-height:44px;max-width:100%}form label{display:block;margin:14px 0}form input,form select{display:block;width:100%;margin-top:5px}button:disabled{opacity:.55;cursor:default}.day-companion{border-top:1px solid var(--line);padding-top:22px}.account-panel{border-top:1px solid var(--line);padding-top:20px;margin-top:22px}.statline{flex-wrap:wrap;gap:15px}.day-overview .day-heading h1{font-size:38px}.day-sources{margin-top:22px}
@media(min-width:1000px){header{max-width:1200px;padding:28px 40px}.brand{font-size:32px}.mark{width:60px;height:60px}main.day-overview{max-width:1200px;display:grid;grid-template-columns:1.1fr 1.2fr .85fr;gap:40px;padding:52px 40px 120px;align-items:start}.day-heading .observance{margin-top:36px}.day-overview .day-heading h1{font-size:48px}.day-liturgy{border-left:1px solid var(--line);padding-left:35px}.day-companion{border-top:0;border-left:1px solid var(--line);padding:8px 0 0 30px}.day-sources{grid-column:1/-1}.analytics{max-width:1100px;padding:40px 40px 100px}.analytics .prayer-matrix{width:100%;min-width:900px}.analytics .week-rows{max-width:650px}.nav{max-width:1200px;left:50%;transform:translateX(-50%);width:100%}.prayer{max-width:760px;padding:70px 65px 130px}.readerTop{padding-left:max(30px,calc((100vw - 1100px)/2));padding-right:max(30px,calc((100vw - 1100px)/2))}.readerBottom{max-width:760px;left:50%;transform:translateX(-50%);width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.artwork{margin:22px 0}.art-credit{font-size:11px;line-height:1.4}.bookcover .artwork{margin:0;max-width:48%}.bookcover .art-credit{font-size:10px}.bookcover img{width:100%;max-width:100%}

/* Artwork stays centered at its native aspect ratio; text keeps a reading measure. */
.book-page{max-width:1000px}.book-intro{max-width:650px;margin:auto;text-align:center}.book-intro h1{font-size:46px}.book-intro .primary{display:block}.bookcover{display:block;padding:24px 0;margin:0 0 28px}.bookcover .artwork{width:100%;max-width:100%;margin:0 auto}.bookcover img{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;margin:auto}.bookcover .art-credit,.art-credit{font-size:12px;line-height:1.6;text-align:center;max-width:650px;margin:12px auto}.book-page #book-contents{max-width:750px;margin:auto}.toc a{min-height:56px;padding:16px 0}.toc small{display:block;font:12px Arial,sans-serif;color:var(--muted);margin-top:7px}.toc a[aria-current]{color:var(--blue);font-weight:600}.prayer{max-width:1000px;padding:36px 24px 140px}.prayer>*{max-width:650px;margin-left:auto;margin-right:auto}.prayer>.artwork{max-width:100%;margin:30px auto}.prayer .artwork img{width:100%;height:auto;max-height:80vh;object-fit:contain;margin:0 auto}.prayer h3{scroll-margin-top:160px;white-space:pre-line}.prayer .primary{display:block;max-width:650px}.next-section{text-decoration:none}.section-end{border-top:1px solid var(--line);margin-top:30px;padding-top:18px}.readerBottom{gap:8px;max-width:1000px;min-height:64px;padding-bottom:max(10px,env(safe-area-inset-bottom))}.readerBottom>a,.readerBottom>button{display:flex;flex:1;align-items:center;justify-content:center;min-height:44px;color:var(--blue);font-size:14px;text-decoration:none}.readerBottom>button{border-left:1px solid var(--line);border-right:1px solid var(--line)}.reader-jumps{position:sticky;top:65px;z-index:4;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 18px}.reader-jumps label{font-size:12px;color:var(--muted)}.reader-jumps select{width:min(440px,60vw);min-width:0;font-size:13px}.readerTop{min-height:65px}.readerTop>span{text-align:center}.settings{position:sticky;top:65px;z-index:7}.quiet-devotions a{padding:12px 0;min-height:44px}.day-overview{padding-bottom:130px}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:8px;width:min(680px,calc(100vw - 24px));max-height:85vh;padding:20px 24px;overflow:auto}dialog::backdrop{background:#14203099}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;position:sticky;top:-20px;background:var(--paper);z-index:1}.dialog-heading button{font-size:20px;color:var(--blue);min-width:44px}.dialog-links{display:flex;justify-content:space-around;gap:12px;border-top:1px solid var(--line);padding:18px 0}.dialog-links a{min-height:44px;display:flex;align-items:center}.nav a{min-height:48px}.book-page{padding-bottom:140px}
@media(min-width:1000px){.book-page{padding:36px 40px 140px}.bookcover img{max-height:640px}.prayer{padding:45px 40px 150px}.readerBottom{max-width:1000px}.prayer .artwork img{max-height:760px}.reader-jumps{padding:10px 30px}}
@media(max-width:400px){.reader-jumps{gap:8px;padding-left:12px;padding-right:12px}.reader-jumps label{max-width:95px}.readerTop{padding:8px 12px}.readerTop>span{font-size:11px}.book-intro h1{font-size:40px}}

@media(max-width:699px){.bookcover img{max-height:50vh}}
#reading:focus{outline:none}.prayer p.prayerline,.prayer h3{margin-left:auto;margin-right:auto}.prayer h3:focus-visible{outline:2px solid var(--blue);outline-offset:8px}

summary.smallaction{min-height:44px;padding:12px 0;cursor:pointer}.analytics>details:has(#record-form){border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0}

.brand-home{display:flex;align-items:center;gap:11px;text-decoration:none;color:inherit;min-height:48px}.official-reader{max-width:900px}.passage-list{margin:0 0 12px 48px}.passage-list summary{font-size:12px;color:var(--blue);min-height:44px;padding-top:10px}.passage-list a{display:block;min-height:44px;padding:10px 0;font-size:13px}.year-guide h3{margin-top:20px}.alternate-art summary,.contemplation-sources summary{min-height:44px;padding:10px 0;color:var(--blue);font-size:13px}#reader-contents details{margin-bottom:16px}#reader-contents details p{font-size:13px}.rosary-tracker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin:22px 0}.rosary-actions{display:flex;flex-wrap:wrap;gap:8px}.rosary-actions a{padding:10px;background:var(--wash);text-decoration:none;font-size:13px;min-height:44px}
.fleuron{display:block;width:min(100%,420px);height:52px;object-fit:contain;margin:24px auto 12px}

/* Shared interaction and spacing tokens; sourced prayer typography remains unchanged. */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius:4px;--control:44px}
.primary{display:block;text-decoration:none;border-radius:var(--radius);min-height:var(--control)}
input,select{border-radius:var(--radius)}input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
summary{cursor:pointer;min-height:var(--control);padding:var(--space-3) 0}details>p:last-child{margin-bottom:var(--space-4)}
.book-page{padding-top:20px}.book-intro h1{font-size:38px;margin:6px 0}.book-intro .intro{font-size:16px;margin:6px 0}.bookcover{padding:12px 0;margin-bottom:24px}.bookcover img{max-height:max(100px,min(620px,calc(100dvh - 380px)));width:100%;height:auto}.bookcover .primary{max-width:410px;margin:14px auto 0}.bookcover .smallaction{display:block;text-align:center;padding:8px}.bookcover .art-credit{margin:12px auto;font-size:12px}
.rosary-tracker .primary{max-width:480px}.rosary-actions{gap:8px}.rosary-actions a{border:1px solid var(--line);border-radius:var(--radius)}.availability{border-block:1px solid var(--line);padding:24px 0}.official-reader{padding-bottom:100px}
.analytics .data-section .note{font-size:12px}.settings select{max-width:140px}.prayer-matrix tbody th{background:var(--paper)}.dark .prayer-matrix tbody th{background:var(--paper)}
@media(max-width:400px){main{padding-left:16px;padding-right:16px}.book-intro h1{font-size:34px}.settings{padding:8px 12px;gap:4px}.settings span{font-size:12px}.settings label{font-size:12px}.settings select{max-width:110px}.statline{gap:12px}}

body:has(.settings:not([hidden])) .reader-jumps{top:calc(65px + 69px)}
.settings{min-height:69px}

.native-prayer .availability{font-size:14px;padding:12px 0;margin:16px auto}.native-component{scroll-margin-top:150px;padding:12px 0 24px;border-bottom:1px solid var(--line)}.native-component h3{margin-top:20px}.native-provenance{margin-top:16px}.native-provenance .note{overflow-wrap:anywhere}.native-gaps li{margin:8px 0}.native-role{font:12px Arial,sans-serif;color:var(--muted)}.native-prayer>.native-component{max-width:650px}.native-prayer .native-line{margin:12px 0}.native-alternative .native-component{border:0}.native-gaps{font-size:13px}
.native-options{display:grid;gap:.8rem;margin:1.2rem 0}.native-options label{display:grid;gap:.35rem;font-size:.9rem}.native-options select{box-sizing:border-box;width:100%;max-width:100%;min-width:0}

/* Source locators and verification notes must wrap on narrow native readers. */
.native-component .note{overflow-wrap:anywhere}
