:root{--ink:#172b29;--muted:#60716d;--green:#276c59;--green-dark:#194b3f;--paper:#f7f7f2;--line:#cbd4ce;--white:#fff;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 var(--sans)}[hidden]{display:none!important}.site-header{height:62px;padding:0 max(6vw,22px);display:flex;align-items:center;border-bottom:1px solid var(--line);background:#fbfbf8}.header-label{font-size:12px;font-weight:700;letter-spacing:.13em}.header-label i{font-style:normal;color:var(--green);padding:0 3px}.header-links{display:flex;align-items:center;gap:19px}.header-links a{color:var(--green-dark);font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}.header-links a:hover{text-decoration:underline}main{max-width:760px;margin:0 auto;padding:42px 24px 46px}.location-screen{max-width:580px;margin:20px auto}.eyebrow{margin:0 0 9px;color:var(--green);font-size:11px;font-weight:700;letter-spacing:.14em}.location-screen h1,.page-heading h1{font:normal clamp(36px,5vw,48px)/1.06 var(--serif);letter-spacing:-.035em;margin:0}.intro{color:var(--muted);margin:12px 0 26px}.location-label{display:block;font-size:13px;font-weight:700;margin-bottom:7px}input,select{width:100%;min-height:48px;border:1px solid #899991;border-radius:0;background:#fff;color:var(--ink);padding:0 12px;font:16px var(--sans)}input:focus,select:focus,button:focus-visible,summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}#city-search{height:56px;font-size:18px}.city-suggestions{max-height:300px;overflow:auto;border:1px solid var(--line);background:#fff;margin-top:2px}.city-suggestions[hidden]{display:none}.city-option{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;padding:11px 13px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;cursor:pointer;color:var(--ink);font:15px var(--sans)}.city-option:last-child{border-bottom:0}.city-option:hover,.city-option:focus{background:#edf2ed;outline:0}.city-option span{font-size:12px;color:var(--muted)}.suggestion-message{padding:10px 13px;margin:0;color:var(--muted);font-size:13px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 18px;border:1px solid var(--green);border-radius:0;background:var(--green);color:#fff;text-decoration:none;font:700 14px var(--sans);cursor:pointer}.button:hover{background:var(--green-dark)}.button-quiet{background:transparent;color:var(--green-dark)}.button-quiet:hover{background:#e8eee9}.locate-button{width:100%;margin-top:10px}.more-options,.settings-details{border-top:1px solid var(--line);margin-top:17px;padding-top:12px}.more-options summary,.settings-details summary,.adjustment-details summary{cursor:pointer;width:max-content;padding:3px 0;color:var(--green-dark);font-size:13px;font-weight:700}.settings-help{margin:7px 0 12px;color:var(--muted);font-size:12px}.more-options>label,.settings-details>label:not(.checkbox-row){display:block;margin:14px 0 6px;font-size:13px;font-weight:700}.paste-row{display:grid;grid-template-columns:1fr auto;gap:8px}.button-small{min-height:46px;padding:0 15px}.coordinate-grid,.custom-angle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.coordinate-grid label,.custom-angle-grid label,.adjustment-grid label{display:grid;gap:5px;font-size:12px;font-weight:700;color:var(--muted)}.coordinate-grid input,.custom-angle-grid input,.adjustment-grid input{min-height:43px;font-size:15px}.custom-angle-grid{margin-top:10px}.adjustment-details{margin-top:15px;padding-top:12px;border-top:1px solid var(--line)}.adjustment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.checkbox-row{display:flex;align-items:center;gap:9px;margin-top:16px;font-size:14px}.checkbox-row input{width:18px;min-height:18px;accent-color:var(--green)}#imsak-offset-wrap input{margin-top:6px}.update-button{width:100%;margin-top:18px}.message{padding:11px 13px;border-left:3px solid #bd8b37;background:#f0eadc;color:var(--ink);font-size:13px;margin:14px 0}.schedule-screen{max-width:600px;margin:0 auto}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.page-heading h1{font-size:40px}.text-button{padding:7px 0;border:0;border-bottom:1px solid var(--green);background:transparent;color:var(--green-dark);font:700 13px var(--sans);cursor:pointer;white-space:nowrap}.date-block{margin:24px 0 22px;padding:17px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.selected-location{margin:0 0 3px;font-size:14px;font-weight:700;color:var(--green-dark)}.gregorian-date{margin:0;color:var(--muted);font-size:13px}.hijri-date{margin:8px 0 0;font:22px var(--serif)}.hijri-note{margin:2px 0 0;color:var(--muted);font-size:11px}.prayer-table{width:100%;border-collapse:collapse}.prayer-table th,.prayer-table td{padding:12px 8px;border-bottom:1px solid var(--line);text-align:left}.prayer-table thead th{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid #899991}.prayer-table tbody th{font-weight:400}.prayer-table td{text-align:right;font-variant-numeric:tabular-nums}.table-actions{margin-top:20px}.table-actions .button{width:100%;min-height:52px;font-size:15px}.print-note{margin:8px 0 0;color:var(--muted);font-size:11px;text-align:center}.settings-details{margin-top:28px}.settings-details select,.settings-details>input{min-height:45px;font-size:15px}.settings-details .settings-help{margin-bottom:14px}.approximation{padding:11px 13px;border-left:3px solid #bd8b37;background:#f0eadc;font-size:13px;margin:14px 0}.site-footer{max-width:760px;margin:0 auto;padding:18px 24px 26px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:18px;color:var(--muted);font-size:12px}.site-footer span{color:var(--muted)}.site-footer a{color:var(--green-dark);text-decoration:none}.site-footer a:hover{text-decoration:underline}.blog-main{max-width:648px;min-height:calc(100vh - 145px);padding-top:50px}.blog-main h1{font:normal clamp(36px,5vw,48px)/1.06 var(--serif);letter-spacing:-.035em;margin:0}.blog-intro{color:var(--muted);margin:10px 0 30px}.blog-entry{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0 24px}.blog-entry h2{font:26px/1.2 var(--serif);font-weight:400;margin:0 0 9px}.blog-entry h2 a{color:var(--ink);text-decoration:none}.blog-entry h2 a:hover,.blog-read-link:hover,.blog-back a:hover{text-decoration:underline}.blog-entry>p:not(.eyebrow){color:var(--muted);margin:0 0 14px}.blog-read-link,.blog-back a{color:var(--green-dark);font-size:13px;font-weight:700;text-decoration:none}.blog-back{margin-top:24px}
@media(max-width:600px){.site-header{height:56px;padding:0 18px}.header-label{font-size:10px;letter-spacing:.07em}.header-links{gap:10px}.header-links a{font-size:10px}main{padding:28px 20px 34px}.location-screen{margin:8px auto}.location-screen h1,.page-heading h1{font-size:37px}.page-heading{align-items:flex-start}.page-heading h1{font-size:34px}.adjustment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.site-footer{padding:16px 20px 22px;gap:14px;flex-wrap:wrap}}

/* Keep short pages anchored to the viewport and align the header consistently. */
body{min-height:100vh;display:flex;flex-direction:column}
main{flex:1 0 auto}
.site-header{justify-content:space-between;gap:24px}
.header-links{margin-left:auto}
.site-footer{width:min(100%,760px);flex:0 0 auto}
@media(max-width:600px){.site-header{gap:12px}.header-links{gap:10px}}
@media(max-width:420px){.site-header{padding-left:14px;padding-right:14px;gap:8px}.header-label{font-size:9px;letter-spacing:.03em}.header-links{gap:7px}.header-links a{font-size:9px}}

/* Timetable layout. */
main{max-width:1040px}
.schedule-screen{max-width:900px}
.page-heading{justify-content:flex-start;align-items:flex-end;gap:16px}
.adjustment-grid{display:flex;flex-direction:column;gap:8px}
.adjustment-grid label{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:42px;padding:5px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:14px}
.adjustment-grid input{width:112px;min-height:36px;text-align:right}
@media(max-width:600px){.page-heading{gap:12px}}


/* Brand, trust line, footer alignment. */
.header-label.brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.header-label.brand img{width:28px;height:28px;border-radius:7px;flex:none}
.header-label.brand:hover span{text-decoration:underline}
.trust{margin:-12px 0 26px;padding-left:12px;border-left:2px solid var(--green);color:var(--ink);font-size:13px}
.trust a{color:var(--green-dark);font-weight:700}
.breadcrumbs a{color:inherit}
.site-footer{justify-content:center}
.method-line{margin:8px 0 0;color:var(--muted);font-size:12px}
@media(max-width:420px){.header-label.brand img{width:22px;height:22px}.header-label.brand{gap:6px}}

.prayer-table thead th:last-child{text-align:right}

/* App store buttons. */
.header-links{gap:10px}
.store-pill{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--green);border-radius:16px;color:var(--green-dark);background:transparent}
.store-pill:hover{background:#e8eee9;text-decoration:none!important}
.store-pill svg{width:14px;height:14px;flex:none}
.header-links>a:not(.store-pill){margin-right:6px}
@media(max-width:600px){.store-pill{width:32px;padding:0;justify-content:center}.store-pill span{display:none}.store-pill svg{width:15px;height:15px}}


/* Refined timetable: city as the title, quiet markers, next prayer. */
.schedule-screen{max-width:600px}
.schedule-screen .date-block{margin:0 0 18px;padding:0 0 18px;border-top:0}
.place-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.schedule-screen .selected-location{margin:0;font:normal clamp(34px,5vw,44px)/1.08 var(--serif);letter-spacing:-.03em;color:var(--ink)}
.selected-region{margin:4px 0 0;color:var(--muted);font-size:14px}
.selected-region:empty{display:none}
.date-line{margin:14px 0 0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:14px;color:var(--ink)}
.date-line .gregorian-date{font-size:14px;color:var(--ink)}
.date-line .hijri-date{margin:0;font:inherit;color:var(--ink)}
.date-line .dot{color:var(--muted)}
.method-line{margin:4px 0 0}
.prayer-table tbody tr:first-child th,.prayer-table tbody tr:first-child td{border-top:0}
.prayer-table th,.prayer-table td{padding:13px 4px}
.prayer-table tr.marker th,.prayer-table tr.marker td{color:var(--muted);font-size:14px;padding-top:9px;padding-bottom:9px}
.prayer-table tr.next th,.prayer-table tr.next td{color:var(--green-dark);font-weight:700}
.next-tag{margin-left:10px;padding:2px 7px;border-radius:9px;background:#e3ece6;color:var(--green-dark);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;vertical-align:2px}
@media(max-width:600px){.schedule-screen .selected-location{font-size:34px}}
@media(max-width:600px){.date-line{flex-direction:column;gap:2px}.date-line .dot{display:none}}

/* Loading: the page keeps its final shape; times and the Hijri date wait as soft bars. */
.placeholder,.hijri-date:empty::before{display:inline-block;width:64px;height:.8em;border-radius:4px;background:linear-gradient(90deg,#e6ebe6 0%,#f1f4f0 50%,#e6ebe6 100%);background-size:200% 100%;animation:placeholder-pulse 1.4s ease-in-out infinite;vertical-align:-.05em}
.hijri-date:empty::before{content:"";width:150px}
.prayer-table tr.marker .placeholder{width:52px}
.schedule-screen.is-loading .prayer-table tbody tr:not(.pending){opacity:.45;transition:opacity .2s}
@keyframes placeholder-pulse{0%{background-position:100% 0}100%{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){.placeholder,.hijri-date:empty::before{animation:none}}

/* One column for every screen. As a flex item with auto margins, main used to shrink to
   its content, so the city search, the timetable and the opened settings each had a
   width of their own. */
.app-main{width:100%;max-width:648px;margin:0 auto;padding:42px 24px 56px}
.app-main .location-screen,.app-main .schedule-screen{width:100%;max-width:none;margin:0}
@media(max-width:600px){.app-main{padding:28px 20px 40px}}

/* Timetable rows: one size for every row; Sunrise, Sunset and Imsak only lighter. */
.prayer-table th,.prayer-table td,.prayer-table tr.marker th,.prayer-table tr.marker td{font-size:17px;padding:14px 4px}
.prayer-table tr.marker th,.prayer-table tr.marker td{color:var(--muted)}

/* A returning visitor's city, one tap from the search screen. */
.saved-city{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 26px;padding:16px 18px;border:1px solid var(--green);background:#fff;color:var(--ink);text-align:left;cursor:pointer;font:inherit}
.saved-city:hover{background:#f1f6f2}
.saved-city-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.saved-city-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}
.saved-city strong{font:normal 24px/1.15 var(--serif);letter-spacing:-.01em}
#saved-city-region{color:var(--muted);font-size:13px}
#saved-city-region:empty{display:none}
.saved-city-go{flex:none;color:var(--green-dark);font-size:14px;font-weight:700;white-space:nowrap}

/* Print choices. */
.print-options{margin-top:30px}
.print-heading{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.print-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.print-choice{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:74px;padding:14px 15px;border:1px solid var(--line);background:#fff;color:var(--ink);text-align:left;cursor:pointer;font:inherit;transition:border-color .15s,box-shadow .15s}
.print-choice:hover{border-color:var(--green);box-shadow:inset 0 -2px 0 var(--green)}
.print-choice strong{font:normal 18px/1.2 var(--serif);font-weight:400}
.print-choice span{font-size:12px;color:var(--muted)}
.print-choice:disabled{opacity:.6;cursor:progress}
.schedule-screen.is-loading .print-options{opacity:.45;pointer-events:none}
.settings-details{margin-top:30px}
@media(max-width:480px){.print-choices{grid-template-columns:1fr;gap:8px}.print-choice{min-height:0;flex-direction:row;justify-content:space-between;align-items:baseline}}

/* Footer: links on one line, the copyright under them, room to breathe. */
.site-footer{padding:26px 24px 40px;flex-wrap:wrap;justify-content:center;column-gap:28px;row-gap:10px;font-size:13px}
.site-footer span{flex-basis:100%;text-align:center;font-size:12px}
.site-footer{width:min(calc(100% - 48px),600px);margin:0 auto;padding-left:0;padding-right:0}
@media(max-width:600px){.site-footer{width:calc(100% - 40px)}}

/* City search: the choices float over the page instead of pushing it down as they come and go. */
.search-field{position:relative}
.search-field .city-suggestions{position:absolute;left:0;right:0;top:100%;z-index:20;margin-top:4px;max-height:min(320px,60vh);box-shadow:0 12px 28px rgba(23,43,41,.13)}

/* A returning visitor's city comes first. */
.location-screen .saved-city{margin:0 0 34px}

/* The Hijri date, in gold. */
:root{--gold:#8f6a22}
.date-line .hijri-date{color:var(--gold);font-weight:700}

/* 12- or 24-hour clock. 12-hour shows AM/PM small beside the time. */
.method-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:4px}
.method-row .method-line{margin:0}
.clock-switch{position:relative;display:inline-flex;align-items:center;gap:8px;flex:none;font-size:12px;color:var(--muted);cursor:pointer;user-select:none;white-space:nowrap}
.clock-switch input{position:absolute;opacity:0;width:1px;height:1px;min-height:0;margin:0;padding:0}
.switch-track{position:relative;width:30px;height:18px;border-radius:9px;background:#cdd6d0;transition:background .15s}
.switch-track::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .15s}
.clock-switch input:checked+.switch-track{background:var(--green)}
.clock-switch input:checked+.switch-track::after{transform:translateX(12px)}
.clock-switch input:focus-visible+.switch-track{outline:2px solid var(--green);outline-offset:2px}
.prayer-table td .period{margin-left:.35em;font-size:.65em;font-weight:400;letter-spacing:.04em;color:var(--muted)}
@media(prefers-reduced-motion:reduce){.switch-track,.switch-track::after{transition:none}}

/* Guides: one narrow column of text and nothing else. */
.article-main{width:100%;max-width:648px;margin:0 auto;padding:56px 24px 64px}
.article-body h1{margin:0 0 16px;font:normal clamp(34px,5vw,44px)/1.1 var(--serif);letter-spacing:-.03em}
.article-body p{margin:0 0 16px;font-size:17px;line-height:1.7}
.article-body .lede{margin-bottom:34px;font-size:19px;line-height:1.6}
.article-body h2{margin:38px 0 10px;font:normal 23px/1.25 var(--serif);letter-spacing:-.01em}
.article-body a{color:var(--green-dark)}
.article-sources{margin-top:44px;padding-top:16px;border-top:1px solid var(--line)}
.article-body .article-sources p{font-size:13px;line-height:1.6;color:var(--muted)}
.article-body .article-next{margin-top:28px;font-size:15px;font-weight:700}
.article-next a{text-decoration:none}
.article-next a:hover{text-decoration:underline}
@media(max-width:600px){.article-main{padding:34px 20px 44px}.article-body p{font-size:16px}.article-body .lede{font-size:18px}}

/* Readability pass: nothing on screen smaller than 13px except small capitals, the footer on
   one line, and a phone header that stays legible (the "· Ja'fari" drops instead of the
   text shrinking). */
.site-footer span{flex-basis:auto;font-size:13px}
.intro a{color:var(--green-dark);font-weight:700}
.method-line,.clock-switch,.settings-help,.city-option span,.print-choice span{font-size:13px}
.clock-switch{min-height:32px}
.article-body .article-date,.blog-date{margin:0 0 26px;font-size:14px;color:var(--muted)}
.blog-entry>p.blog-date{margin:-4px 0 8px}
@media(max-width:600px){.header-label{font-size:12px;letter-spacing:.1em}.brand-extra{display:none}.header-links a{font-size:13px}}
@media(max-width:420px){.header-label{font-size:12px;letter-spacing:.08em}.header-links a{font-size:13px}}

/* Printed sheets (print.js): only the sheet prints, edge to edge, no browser header or footer.
   Each fills its page: US Letter height, or A4 height when the page is that tall (a browser
   that ignores the page-size query gets the Letter height, which still fits A4). The table
   stretches to take the room and the app line sits at the foot of the paper. Rules are
   drawn by each cell, never collapsed, and none is thinner than .75pt: collapsed and
   hairline borders drop out of print previews. */
.print-sheet{display:none}
@media print{
  @page{margin:0}
  html,body{background:#fff!important}
  body{display:block;min-height:0}
  body>*:not(.print-sheet){display:none!important}
  .print-sheet{display:block}
}
.sheet{display:flex;flex-direction:column;width:100%;min-height:278mm;padding:13mm 15mm 10mm;color:#111;font:9.5pt/1.4 var(--sans);-webkit-print-color-adjust:exact;print-color-adjust:exact}
@media print and (min-height:290mm){.sheet{min-height:296mm}}
.sheet i{font-style:normal;color:#aaa;padding:0 .35em}
.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:8mm}
.sheet-brand{display:inline-flex;align-items:center;gap:2.2mm;font-size:7.5pt;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.sheet-brand img{width:5mm;height:5mm;border-radius:1.2mm}
.sheet-meta{font-size:8pt;color:#666;text-align:right}
.sheet-title{display:flex;justify-content:space-between;align-items:flex-end;gap:10mm;margin:8mm 0 6mm}
.sheet-title>div:first-child{min-width:0}
.sheet-title h1{margin:0;font:normal 30pt/1.05 var(--serif);letter-spacing:-.02em}
.sheet-title.long h1{font-size:24pt}
.sheet-title-sub{margin:2mm 0 0;font-size:10pt;color:#666}
.sheet-side{flex:none;white-space:nowrap;text-align:right}
.sheet-side p{margin:0}
.sheet-side-main{font:normal 15pt/1.2 var(--serif)}
.sheet-side-sub{margin-top:1.2mm!important;font-size:9.5pt;color:#666}
.sheet-body{flex:1 1 auto;display:flex;flex-direction:column}
.sheet-body>*{flex:1 1 auto}

/* Week and month: one row per day, equal columns for the times. */
.sheet-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-variant-numeric:tabular-nums}
.sheet-table th,.sheet-table td{padding:0;text-align:center;font-weight:400;border-bottom:.75pt solid #bdbdb6}
.sheet-table thead th{height:8mm;padding:0 .5mm 2.2mm;vertical-align:bottom;font-size:7pt;font-weight:700;letter-spacing:.07em;text-transform:uppercase;border-bottom:1pt solid #111}
.sheet-table thead th.col-day{text-align:left;padding-left:2mm}
.sheet-table .marker{color:#8a8a8a}
.sheet-week .sheet-table .col-day{width:22%}
.sheet-week .sheet-table tbody th,.sheet-week .sheet-table tbody td{height:21mm;font-size:15pt}
.sheet-week .sheet-table tbody th{text-align:left;padding-left:2mm}
.sheet-week .wd{display:block;font:normal 15pt/1.2 var(--serif)}
.sheet-week .dm{display:block;margin-top:1mm;font-size:8.5pt;color:#666}
.sheet-month .sheet-title{margin:6mm 0 4.5mm}
.sheet-month .sheet-title h1{font-size:26pt}
.sheet-month .sheet-title.long h1{font-size:21pt}
.sheet-month .sheet-table .col-day{width:12%}
.sheet-month .sheet-table .col-hijri{width:17%}
.sheet-month .sheet-table tbody th,.sheet-month .sheet-table tbody td{height:5.2mm;font-size:10pt}
.sheet-month .sheet-table tbody th{text-align:left;padding-left:2mm;white-space:nowrap}
.sheet-month .wd{display:inline-block;width:9mm;color:#666}
.sheet-month tr.friday .wd{color:#111;font-weight:700}
.sheet-month .col-hijri{text-align:left;white-space:nowrap;color:#555}
.sheet-month thead th.col-hijri{color:#111}
.sheet-month .hm{font-size:7.5pt;color:#888}

/* Hijri month: the month is the title, the grid takes the page. */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto repeat(var(--weeks),minmax(20mm,1fr))}
.cal-head{padding:0 2.4mm 2mm;font-size:7.5pt;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#777;border-bottom:1pt solid #111}
.cal-head.friday{color:#111}
.cal-day{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;gap:0 2mm;min-width:0;padding:2.4mm 2.6mm;border-right:.9pt solid #a3a39b;border-bottom:.9pt solid #a3a39b}
.cal-day.first{border-left:.9pt solid #a3a39b}
.cal .hd{font:normal 20pt/1 var(--serif)}
.cal .gd{margin-top:.6mm;font-size:8pt;color:#777;white-space:nowrap}
.cal .oc{grid-column:1/-1;align-self:end;font-size:7.5pt;line-height:1.3;color:#5f4713}
.cal-day.occasion .hd{color:#7a5a17}

.sheet-notes{margin:3mm 0 0;font-size:7.5pt;line-height:1.5;color:#777}
.sheet-foot{display:flex;justify-content:space-between;align-items:center;gap:8mm;margin-top:4mm;padding-top:3mm;border-top:.6pt solid #ccc;break-inside:avoid}
.sheet-foot p{margin:0;font-size:7.5pt;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-foot strong{color:#111}
.sheet-qr{flex:none;display:block}
.sheet-qr svg{width:13mm;height:13mm;display:block}
.lang-switch{position:relative;display:inline-flex;align-items:center;gap:4px;padding:6px 2px;color:var(--green-dark);font:700 12px var(--sans);letter-spacing:.04em;cursor:pointer}.lang-switch:hover .lang-code{text-decoration:underline}.lang-switch:focus-within{outline:2px solid var(--green);outline-offset:2px}.lang-globe{flex:none}.lang-select{position:absolute;inset:0;width:100%;height:100%;min-height:0;padding:0;border:0;opacity:0;cursor:pointer;font-size:16px}
@media(max-width:600px){.lang-switch{font-size:10px;gap:3px}}
@media print{.lang-switch{display:none}}
.sheet-table thead th.long{letter-spacing:0;font-size:6pt}
