:root{color-scheme:light;--paper:#fffcf7;--panel:#f3f0e9;--ink:#292620;--muted:#817764;--gold:#927127;--line:#d8d0c0;font-family:Georgia,"Songti TC","Noto Serif CJK TC","PMingLiU",serif;background:var(--paper);color:var(--ink)}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}a,button,input,select{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:4px}.masthead{text-align:center;background:var(--panel);border-bottom:4px solid var(--gold);box-shadow:0 3px 6px #34290e12;padding:28px 16px 25px}h1{font-size:34px;letter-spacing:.18em;font-weight:500;margin:0;color:var(--gold)}.masthead p{font-size:13px;letter-spacing:.15em;color:var(--muted);margin:12px 0 0}main{max-width:1140px;padding:0 24px;margin:40px auto 90px}.month-controls{text-align:center;padding:27px 16px 22px;background:var(--panel);border:1px solid #dddfe2;border-radius:2px;box-shadow:0 2px 5px #00000010}h2{font-size:26px;letter-spacing:.04em;color:#315f43;margin:0 0 22px;font-weight:600}.adjacent-months{display:flex;gap:10px;justify-content:center}.adjacent-months a,button{border:1px solid var(--line);padding:10px 18px;border-radius:4px;background:transparent;font-weight:600;cursor:pointer}.adjacent-months a:hover,button:hover{background:#e9e3d6}form{display:flex;justify-content:center;gap:8px;align-items:center;margin-top:18px}input,select{padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:var(--paper);font-size:13px;min-height:34px}input{width:86px}form button{font-size:13px;padding:7px 12px;min-height:34px}.color-key{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:14px 22px;margin:30px 0 28px;padding:0;color:var(--muted);font-size:13px;line-height:1.6}.color-key li{display:flex;align-items:center;gap:8px}.dot{display:inline-block;width:13px;height:13px;border-radius:50%;flex-shrink:0}.dot.red{background:#c71c3b}.dot.violet{background:#9b16a6}.dot.gold{background:#bf9e17}.dot.green{background:#30823b}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.weekday{text-align:center;font-weight:600;color:#807970;padding:9px 0 13px;font-size:17px}.day,.empty{min-height:148px;border-radius:2px}.empty{background:var(--panel)}.day{padding:14px 10px;border:1px solid var(--edge);background:var(--tint);color:var(--tone);overflow-wrap:anywhere}.color-green{--tint:#effbf3;--edge:#7bdc95;--tone:#267330}.color-red{--tint:#fff1f3;--edge:#f5a1b1;--tone:#bd173a}.color-violet{--tint:#faf3ff;--edge:#d8aff2;--tone:#9224a5}.color-gold{--tint:#fffbe7;--edge:#d2b741;--tone:#8b590a}.day-top{display:flex;align-items:center;gap:6px;margin:0 0 14px;min-height:24px}time{font-size:22px;font-weight:600;opacity:.74}.today-marker{font-size:10px;margin-left:auto}.day-weekday{display:none}h3{font-size:15px;font-weight:400;line-height:1.65;margin:0}.is-holy h3{font-weight:700}.is-today{outline:2px solid var(--gold);outline-offset:-2px}.observances{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}.observances:empty{display:none}.observances span{font-size:11px;border-top:1px solid var(--edge);padding-top:4px;line-height:1.5}.transfer{font-size:11px;line-height:1.6;margin:10px 0 0}footer{border-top:1px solid #e2ded5;background:var(--panel);padding:30px 20px;text-align:center;color:var(--muted);font-size:14px;letter-spacing:.12em}footer p{margin:7px 0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(max-width:700px){main{padding:0 10px;margin:22px auto 45px}.masthead{padding:24px 10px 20px}h1{font-size:28px}.month-controls{padding:20px 10px}h2{font-size:23px}.color-key{gap:8px 14px;font-size:11px;justify-content:flex-start;margin:20px 4px}.calendar{gap:4px}.weekday{font-size:12px;padding:7px 0}.day,.empty{min-height:116px}.day{padding:8px 4px}.day-top{gap:0;margin-bottom:7px;flex-wrap:wrap}time{font-size:18px}.today-marker{font-size:9px;margin-left:2px}h3{font-size:12px;line-height:1.5}.transfer,.observances span{font-size:10px}.adjacent-months a{padding:10px 15px}footer{font-size:12px}}
@media print{main{margin:20px 0;padding:0;max-width:none}.masthead{box-shadow:none}.adjacent-months,form{display:none}.month-controls{box-shadow:none;padding:12px}h2{margin:0}.day{break-inside:avoid;min-height:115px;print-color-adjust:exact}.color-key{margin:15px 0}footer{padding:12px}}

.footer-shields{display:flex;justify-content:center;align-items:center;gap:24px;margin:2px 0 22px}
.footer-shields img{display:block;width:68px;height:88px;object-fit:contain}
.footer-links{line-height:2;letter-spacing:.07em}
.footer-links a{display:inline-block;color:var(--gold)}
.footer-links a:hover{text-decoration:underline;text-underline-offset:4px}
.footer-divider{padding:0 10px;color:var(--muted)}
@media(max-width:700px){.footer-links{font-size:11px;letter-spacing:.025em}.footer-divider{padding:0 5px}.footer-shields{gap:20px}.footer-shields img{width:59px;height:76px}}

.shield-frame{display:block;position:relative;width:68px;height:88px;overflow:hidden}
.footer-shields .shield-frame img{display:block;width:100%;height:100%;object-fit:fill}
/* 裁去透明畫布邊距，使兩個盾牌的可見輪廓同寬同高。 */
.footer-shields .shield-ministry img{position:absolute;max-width:none;width:116.65%;height:104.24%;left:-8.325%;top:-1.618%;object-fit:fill}
@media(max-width:700px){.shield-frame{width:59px;height:76px}}

.calendar-switch{gap:12px;font-size:14px;color:var(--muted)}
.calendar-switch .active{color:var(--gold);font-weight:700}
.calendar-switch .switch-track{position:relative;flex:0 0 52px;width:52px;height:32px;min-height:32px;padding:0;border-radius:20px;background:#d9d0bc;border:1px solid #b8a783}
.switch-thumb{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--paper);box-shadow:0 1px 3px #0003}
.switch-track[aria-checked="true"]{background:var(--gold)}
.switch-track[aria-checked="true"] .switch-thumb{left:23px}
.commemoration{font-size:11px;line-height:1.6;margin:8px 0 0}
.liturgical-rank{font-size:11px;line-height:1.6;margin:6px 0 0}
.office-link:hover{text-decoration:underline;text-underline-offset:3px}
.color-black{--tint:#eeecea;--edge:#8b8680;--tone:#39342f}
.color-rose{--tint:#fff0f6;--edge:#e6a1bf;--tone:#a34370}
@media(max-width:700px){.calendar-switch{gap:8px;font-size:12px}.commemoration,.liturgical-rank{font-size:10px}}
