@font-face{font-family:"Cormorant Garamond";font-weight:700;font-display:swap;src:url(../fonts/cormorant-garamond-vietnamese-700-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:"Cormorant Garamond";font-weight:700;font-display:swap;src:url(../fonts/cormorant-garamond-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Serif";font-weight:400;font-display:swap;src:url(../fonts/noto-serif-vietnamese-400-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:"Noto Serif";font-weight:400;font-display:swap;src:url(../fonts/noto-serif-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Serif";font-weight:700;font-display:swap;src:url(../fonts/noto-serif-vietnamese-700-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:"Noto Serif";font-weight:700;font-display:swap;src:url(../fonts/noto-serif-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{--night:#0d1533;--chartres:#1a2f7a;--ruby:#8f1d2c;--gold:#c8a24b;--gold-pale:#ecd691;--stone:#e9e8e2;--stone-2:#dcdbd3;--ink:#1b1b24;--muted:#5a5a66;--display:"Cormorant Garamond","Times New Roman",serif;--body:"Noto Serif",Georgia,serif}
.nto,.nto *{box-sizing:border-box}
body.nto{margin:0;background:var(--night);color:#f1efe6;font:400 17px/1.7 var(--body);-webkit-font-smoothing:antialiased}
.nto h1,.nto h2,.nto h3{color:inherit;font-family:var(--display);font-weight:700;line-height:1.12;margin:0 0 .5em;text-wrap:balance}
.nto a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}
.nto :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.nto-skip{position:absolute;left:-999px;top:0;background:#fff;color:#000;padding:8px 12px;z-index:99}
.nto-skip:focus{left:8px;top:8px}

.nto-top{display:flex;align-items:center;gap:24px;padding:12px clamp(16px,4vw,48px);background:var(--night);color:#f1efe6;border-bottom:1px solid rgba(200,162,75,.35)}
.nto-brand{display:flex;align-items:center;gap:10px;font:700 21px/1 var(--display);text-decoration:none;white-space:nowrap}
.nto-brand-rose{width:32px;height:32px}
.nto-top nav{display:flex;gap:18px;margin-left:auto;overflow-x:auto;scrollbar-width:none;font-size:15px}
.nto-top nav a{text-decoration:none;white-space:nowrap;padding:4px 0}
.nto-top nav a:hover{color:var(--gold-pale)}
@media(max-width:860px){.nto-top{flex-direction:column;align-items:flex-start;gap:8px}.nto-top nav{margin-left:0;width:100%}}

.nto-btn{display:inline-block;padding:13px 24px;border:1px solid transparent;border-radius:3px;font:700 16px/1.2 var(--body);text-decoration:none;cursor:pointer;min-height:46px}
.nto-btn-gold{background:var(--gold);color:#17120a}.nto-btn-gold:hover{background:var(--gold-pale)}
.nto-btn-line{border-color:var(--gold);color:var(--gold-pale);background:transparent}.nto-btn-line:hover{background:rgba(200,162,75,.14)}
.nto-btn-ruby{background:var(--ruby);color:#fff}.nto-btn-ruby:hover{background:#a8263a}
.nto-btn-line-dark{border-color:var(--ruby);color:var(--ruby);background:transparent}.nto-btn-line-dark:hover{background:rgba(143,29,44,.08)}

.nto-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(24px,5vw,72px);align-items:center;padding:clamp(40px,7vw,96px) clamp(16px,6vw,88px);overflow:hidden;background:radial-gradient(70% 90% at 26% 50%,#24408f 0%,#132059 42%,var(--night) 78%)}
.nto-hero-rose{width:100%;max-width:560px;justify-self:center;filter:drop-shadow(0 0 60px rgba(120,150,255,.45))}
.nto-hero h1{font-size:clamp(46px,7.2vw,92px);letter-spacing:-.01em}
.nto-hero-text p{max-width:32em;font-size:18px}
.nto-actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 14px}
.nto-note{font-size:14px;color:#bfc4d8}
@media(max-width:800px){.nto-hero{grid-template-columns:1fr}.nto-hero-rose{max-width:300px;order:-1}.nto-hero-text{text-align:left}}

.nto-today{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:20px clamp(16px,6vw,88px);background:#0a1029;border-block:1px solid rgba(200,162,75,.35)}
.nto-today h2{font-size:28px;margin:0}.nto-today p{margin:0;font-size:15px;color:#cdd0de}
.nto-swatch{width:14px;height:64px;border-radius:2px;border:1px solid rgba(255,255,255,.3)}
@media(max-width:640px){.nto-today{grid-template-columns:auto 1fr}.nto-today>a{grid-column:2}}

.nto-plan-wrap{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:clamp(24px,5vw,72px);padding:clamp(48px,7vw,88px) clamp(16px,6vw,88px);align-items:center}
.nto-plan-wrap h2,.nto-read h2,.nto-faq h2{font-size:clamp(34px,4.4vw,52px)}
.nto-plan{width:100%;height:auto;display:block;font:12px var(--body)}
.nto-plan text{fill:#f1efe6;paint-order:stroke;stroke:#0d1533;stroke-width:3px}
.nto-plan-dot{fill:rgba(236,214,145,.2);stroke:var(--gold);transition:fill .15s}
.nto-plan a:hover .nto-plan-dot,.nto-plan a:focus .nto-plan-dot{fill:rgba(236,214,145,.6)}
.nto-places{display:grid;grid-template-columns:1fr 1fr;gap:18px 32px;margin:0}
.nto-places dt{font:700 22px/1.2 var(--display)}.nto-places dt a{text-decoration:none;border-bottom:1px solid var(--gold)}
.nto-places dd{margin:4px 0 0;font-size:15px;color:#cdd0de;line-height:1.55}
@media(max-width:860px){.nto-plan-wrap{grid-template-columns:1fr}.nto-plan{max-width:380px;margin:auto}}
@media(max-width:560px){.nto-places{grid-template-columns:1fr}}
.nto-shot img{display:block;width:100%;height:auto}

.nto-read{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,6vw,88px);padding:clamp(48px,7vw,88px) clamp(16px,6vw,88px);background:var(--stone);color:var(--ink)}
@media(max-width:760px){.nto-read{grid-template-columns:1fr}}
.nto-list{list-style:none;padding:0;margin:0 0 14px}
.nto-list li{padding:8px 0;border-bottom:1px solid var(--stone-2);font-size:18px}.nto-list a{text-decoration:none}.nto-list a:hover{color:var(--ruby)}
.nto-search{display:grid;grid-template-columns:1fr auto;gap:8px;margin:0 0 16px;max-width:560px}
.nto-search label{grid-column:1/-1;font-size:15px}
.nto-search input{min-width:0;padding:12px;border:1px solid #8a8a93;border-radius:3px;font:400 16px var(--body);background:#fff;color:var(--ink)}

.nto-faq{padding:clamp(48px,7vw,88px) clamp(16px,6vw,88px);max-width:1040px}
.nto-faq details{border-top:1px solid rgba(200,162,75,.35);padding:14px 0}
.nto-faq summary{cursor:pointer;font:700 23px/1.25 var(--display)}
.nto-faq details p{margin:10px 0 0;color:#d5d7e4;max-width:44em}

.nto-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;padding:32px clamp(16px,6vw,88px);background:#080d22;color:#c1c4d3;font-size:14px}
.nto-foot-title{font:700 22px var(--display);color:#fff;margin:0}.nto-foot p{margin:4px 0 0;max-width:36em}
.nto-foot nav{display:flex;flex-wrap:wrap;gap:16px}

/* Trang đọc: cách trình bày của sách lễ, chữ đen và phần chỉ dẫn đỏ. */
body.nto-book{background:var(--stone);color:var(--ink)}
.nto-page{max-width:760px;margin:0 auto;padding:clamp(24px,5vw,56px) 16px 72px}
.nto-wide{max-width:1120px}
.nto-page h1{font-size:clamp(42px,6vw,72px);color:#101b3d}
.nto-page h2{font-size:clamp(28px,3.6vw,38px);color:#101b3d;margin-top:1.5em}
.nto-page h3{font-size:25px;color:#101b3d;margin-top:1.2em}.nto-page h3 small{font:400 14px var(--body);color:var(--muted);margin-left:6px}
.nto-page a{color:#16307f}.nto-page a:hover{color:var(--ruby)}
.nto-lede{font-size:19px}
.nto-rubric{color:var(--ruby);font-size:15px}
.nto-note-dark{color:var(--muted);font-size:14px}
.nto-empty{padding:16px;border-left:3px solid var(--ruby);background:#f3f2ec}
.nto-crumbs ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 20px;padding:0;font-size:14px;color:var(--muted)}
.nto-crumbs li+li::before{content:"›";margin-right:6px}
.nto-prayer{font-size:21px;line-height:1.75}
.nto-prayer p:first-child::first-letter{float:left;font:700 4.1em/.82 var(--display);color:var(--ruby);padding:.06em .08em 0 0}
.nto-next{margin-top:32px;font-size:15px}
.nto-steps li,.nto-mysteries li{margin-bottom:10px}.nto-mysteries cite{font-style:normal;color:var(--muted);font-size:14px}
.nto-examen li{margin-bottom:10px;font-size:18px}

.nto-station-nav{display:flex;flex-wrap:wrap;gap:4px;margin:20px 0;position:sticky;top:0;background:var(--stone);padding:8px 0;z-index:2}
.nto-page .nto-station-nav a{padding:5px 9px;border:1px solid var(--stone-2);border-radius:2px;text-decoration:none;font-size:14px;color:var(--ink);background:#f3f2ec}
.nto-station{display:grid;grid-template-columns:76px 1fr;gap:14px;padding:18px 0;border-top:1px solid var(--stone-2);scroll-margin-top:60px}
.nto-station h2{margin-top:0;font-size:27px}
.nto-numeral{font:700 42px/1 var(--display);color:var(--ruby);text-align:right}
@media(max-width:520px){.nto-station{grid-template-columns:48px 1fr}.nto-numeral{font-size:28px}}

.nto-month{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:20px}.nto-month h2{margin:0;text-align:center}
.nto-table-wrap{overflow-x:auto}
.nto-cal{width:100%;border-collapse:collapse;font-size:15px;min-width:600px}
.nto-cal th{text-align:left;font-weight:700;border-bottom:2px solid #101b3d;padding:8px}
.nto-cal td{padding:9px 8px;border-bottom:1px solid var(--stone-2);vertical-align:top}
.nto-cal time{font:700 22px var(--display)}.nto-cal small{color:var(--muted);white-space:nowrap}
.nto-cal .is-sunday td:first-child time{color:var(--ruby)}.nto-cal .is-sunday td:nth-child(2){font-weight:700}
.nto-cal .is-today{background:#f7edc9}
.nto-dot{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.35);vertical-align:-1px}

.nto-form{display:grid;gap:14px}.nto-form label{display:grid;gap:4px;font-size:15px}
.nto-form input,.nto-form select,.nto-form textarea{padding:12px;border:1px solid #8a8a93;border-radius:3px;font:400 16px var(--body);background:#fff;color:var(--ink);width:100%}
.nto-form>button{justify-self:start}.nto-form [data-status]{margin:0;color:var(--ruby);min-height:1.5em}
.nto-hp{position:absolute!important;left:-9999px}
.nto-intents article{padding:14px 0;border-top:1px solid rgba(120,120,130,.35)}
.nto-intents p{margin:0 0 6px}.nto-intent-meta{font-size:14px;color:var(--muted)}
.nto-pray{background:none;border:1px solid var(--ruby);color:var(--ruby);padding:6px 12px;border-radius:3px;font:400 14px var(--body);cursor:pointer;min-height:38px}

.nto-mass{width:100%;border-collapse:collapse;margin:18px 0;background:#f3f2ec;border-left:4px solid var(--ruby)}
.nto-mass th{text-align:left;padding:12px;width:42%;font-weight:700}.nto-mass td{padding:12px}.nto-mass tr+tr>*{border-top:1px solid var(--stone-2)}
.nto-facts{display:grid;gap:8px;margin:18px 0}.nto-facts>div{display:grid;grid-template-columns:42% 1fr;gap:12px}.nto-facts dt{color:var(--muted)}.nto-facts dd{margin:0;overflow-wrap:anywhere}
.nto-video{position:relative;padding-top:56.25%}.nto-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.nto-parishes{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 32px}
.nto-parishes li{padding:14px 0;border-top:1px solid var(--stone-2)}.nto-parishes h2{font-size:25px;margin:0 0 4px}.nto-parishes p{margin:0;font-size:15px}
.nto-dioceses{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px}.nto-dioceses ul{list-style:none;padding:0;margin:0}.nto-dioceses li{padding:3px 0;font-size:15px}.nto-dioceses h3{margin-top:0}
.nto-book-groups{columns:2;column-gap:56px}.nto-book-groups section{break-inside:avoid;margin-bottom:24px}.nto-book-groups h2{margin-top:0;border-bottom:2px solid #101b3d;padding-bottom:6px}
.nto-book-item h3{margin:12px 0 2px;font-size:23px}.nto-book-item a{text-decoration:none}.nto-book-item p{margin:0;font-size:14px;color:var(--muted);line-height:1.5}
@media(max-width:760px){.nto-book-groups{columns:1}}
.nav-links{display:flex;gap:10px;flex-wrap:wrap}.nav-links .page-numbers{padding:6px 10px}

/* Trình lần chuỗi, dùng cả ở trang đọc và trong nhà thờ 3D. */
.nto-rosary{display:grid;grid-template-columns:minmax(180px,250px) 1fr;gap:20px;padding:18px;background:#101b3d;color:#f1efe6;border-radius:4px;margin:18px 0}
.nto-rosary svg{width:100%;height:auto;display:block}
.nto-rosary-tabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.nto-rosary-tabs button{background:none;border:1px solid rgba(200,162,75,.5);color:#e7e4d6;padding:6px 10px;border-radius:2px;font:400 13px var(--body);cursor:pointer;min-height:36px}
.nto-rosary-tabs button[aria-pressed=true]{background:var(--gold);color:#17120a;border-color:var(--gold)}
.nto-rosary-step h3{font:700 25px/1.15 var(--display);margin:0 0 4px;color:var(--gold-pale)}
.nto-rosary-step small{display:block;color:#b9bdd1;margin-bottom:8px;font-size:13px}
.nto-rosary-step p{margin:0;font-size:16.5px;line-height:1.65;min-height:6em}
.nto-rosary-ctl{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.nto-rosary-ctl button{padding:10px 16px;min-height:42px;border-radius:3px;font:700 15px var(--body);cursor:pointer;border:1px solid var(--gold);background:transparent;color:var(--gold-pale)}
.nto-rosary-ctl .is-primary{background:var(--gold);color:#17120a;padding-inline:30px}
.nto-rosary-ctl span{font-size:13px;color:#b9bdd1}
@media(max-width:620px){.nto-rosary{grid-template-columns:1fr}.nto-rosary svg{max-width:190px;margin:auto}}
@media(prefers-reduced-motion:reduce){.nto *{transition:none!important;animation:none!important}}
