/* Календар.com – shared stylesheet (generated site, edit here).
   All colours are tokens; components never use raw hex values.
   Contrast: every text/background pair below meets WCAG AA (4.5:1). */
:root{
  color-scheme:light;
  /* surfaces & text */
  --bg:#ffffff;--surface:#ffffff;--soft:#f7f7f5;--soft-2:#fafafa;--line:#e3e6ea;--line-strong:#c9ced4;
  --ink:#1f2328;--muted:#5d6670;--shadow:rgba(20,24,30,.14);
  /* brand: --brand-2 is the bright logo orange (decoration only, never behind text);
     --accent is the fill for text-bearing controls (4.6:1 with white) */
  --brand:#c2410c;--brand-2:#ff6a13;--brand-dark:#a8320a;--brand-soft:#fff1e6;
  --accent:#cc4a0d;--on-accent:#ffffff;
  /* calendar states */
  --we:#ffe7c2;--we-ink:var(--ink);--hol:#c63d0a;--hol-ink:#ffffff;--cat:#1d4ed8;--vac:#dff1fb;--feast:#b00020;--ok-line:#1e6b34;
  /* fasting */
  --f-strict:#5b3a1a;--f-strict-ink:#ffffff;--f-fast:#f6d58b;--f-fish:#bfe3f5;--f-wf:#fbefd2;--f-dairy:#e9f3d6;
  --fast-tag:#6b4e16;--fast-tag-bg:#fbf1d9;
  /* heat-map (pollen, meteors, seasons) */
  --heat-0:#ffffff;--heat-1:#fdf0c4;--heat-2:#f9c46b;--heat-3:#e8711f;--heat-ink:#7a1f00;--heat-3-ink:#3d1200;
  /* weddings / success */
  --ok:#d9f2df;--ok-ink:#14532d;--ok-line-2:#3b9b57;--ok-soft:#eef8e8;--no:#f3f3f3;--no-ink:#686e75;
  /* notices */
  --warn-bg:#fff8e1;--warn-line:#f3d37a;--err:#b42318;
  --file-pdf:#c2261d;--file-xls:#1d7044;--file-doc:#2459b8;
  /* footer */
  --foot-bg:#22262b;--foot-ink:#c9ced4;--foot-link:#ffd2b0;--foot-head:#ffffff;--foot-line:#3a3f45;
  --radius:10px;
  /* z-index scale */
  --z-sticky:40;--z-dropdown:60;--z-skip:100;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#15181c;--surface:#1c2025;--soft:#20252b;--soft-2:#1a1e23;--line:#2e343b;--line-strong:#454c55;
    --ink:#e8eaed;--muted:#a6adb5;--shadow:rgba(0,0,0,.5);
    --brand:#ff9a5c;--brand-soft:#33221a;--accent:#c94a10;--on-accent:#ffffff;
    --we:#3a2a1a;--hol:#c94a10;--cat:#8ab4ff;--vac:#173445;--feast:#ff7a8a;--ok-line:#5ccf86;
    --f-strict:#8a5a2b;--f-fast:#5c4614;--f-fish:#173d52;--f-wf:#3a3020;--f-dairy:#2b3a1d;--fast-tag:#f3d9a0;--fast-tag-bg:#3a3020;
    --heat-0:#1c2025;--heat-1:#3a3016;--heat-2:#6b4a12;--heat-3:#c94a10;--heat-ink:#ffd9a8;--heat-3-ink:#ffffff;
    --ok:#173d24;--ok-ink:#9be3b4;--ok-soft:#1b2c20;--no:#23272c;--no-ink:#9aa1a9;
    --warn-bg:#3a3016;--warn-line:#6b5a1f;--err:#ff8a80;
    --foot-bg:#0f1114;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#15181c;--surface:#1c2025;--soft:#20252b;--soft-2:#1a1e23;--line:#2e343b;--line-strong:#454c55;
  --ink:#e8eaed;--muted:#a6adb5;--shadow:rgba(0,0,0,.5);
  --brand:#ff9a5c;--brand-soft:#33221a;--accent:#c94a10;--on-accent:#ffffff;
  --we:#3a2a1a;--hol:#c94a10;--cat:#8ab4ff;--vac:#173445;--feast:#ff7a8a;--ok-line:#5ccf86;
  --f-strict:#8a5a2b;--f-fast:#5c4614;--f-fish:#173d52;--f-wf:#3a3020;--f-dairy:#2b3a1d;--fast-tag:#f3d9a0;--fast-tag-bg:#3a3020;
  --heat-0:#1c2025;--heat-1:#3a3016;--heat-2:#6b4a12;--heat-3:#c94a10;--heat-ink:#ffd9a8;--heat-3-ink:#ffffff;
  --ok:#173d24;--ok-ink:#9be3b4;--ok-soft:#1b2c20;--no:#23272c;--no-ink:#9aa1a9;
  --warn-bg:#3a3016;--warn-line:#6b5a1f;--err:#ff8a80;
  --foot-bg:#0f1114;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 "Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,.table-wrap:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
img{max-width:100%;height:auto}
.wrap{max-width:1120px;margin:0 auto;padding:0 16px}
h1,h2,h3{text-wrap:balance}
p{text-wrap:pretty}

/* skip link */
.skip{position:absolute;left:12px;top:-60px;z-index:var(--z-skip);background:var(--accent);color:var(--on-accent);padding:10px 16px;border-radius:8px;font-weight:600}
.skip:focus{top:10px;text-decoration:none}

/* header */
.site-header{position:sticky;top:0;z-index:var(--z-sticky);background:var(--surface);border-bottom:3px solid var(--brand-2)}
.hdr{display:flex;align-items:center;gap:8px 4px;padding-top:10px;padding-bottom:10px;min-height:62px}

/* theme switch (light / dark); order puts it after the menu on desktop, before the hamburger on phones */
.theme-toggle{order:3;flex:none;display:inline-grid;place-items:center;width:44px;height:44px;margin-left:2px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);cursor:pointer}
.theme-toggle:hover{background:var(--brand-soft);color:var(--brand)}
.theme-toggle:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.theme-toggle .ti-sun{display:none}
:root[data-theme="dark"] .theme-toggle .ti-sun{display:block}:root[data-theme="dark"] .theme-toggle .ti-moon{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .theme-toggle .ti-sun{display:block}:root:not([data-theme="light"]) .theme-toggle .ti-moon{display:none}}
.main-nav{order:2}.nav-toggle{order:4}
.mn-all{display:none}

/* main menu – desktop dropdowns */
.nav-toggle{display:none}
.main-nav{margin-left:auto}
.mn{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:0}
.mn-g{position:relative}
.mn-b,.mn-all a{display:flex;align-items:center;gap:4px;padding:8px 7px;border:0;border-radius:7px;background:none;color:var(--ink);font:inherit;font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.mn-b:hover,.mn-g.open>.mn-b,.mn-all a:hover{background:var(--brand-soft);color:var(--brand);text-decoration:none}
.mn-g.is-here>.mn-b,.mn-all a[aria-current]{color:var(--brand)}
.mn-c{transition:transform .15s cubic-bezier(.25,1,.5,1)}
.mn-g.open .mn-c{transform:rotate(180deg)}
.mn-p{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:var(--z-dropdown);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px var(--shadow);padding:8px;min-width:250px}
.mn-p::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}
.mn-g:nth-last-child(-n+3) .mn-p{left:auto;right:0}
.mn-p ul{list-style:none;margin:0;padding:0}
.mn-p.mn-cols ul{columns:2;column-gap:6px;width:470px}
.mn-p li{break-inside:avoid}
.mn-p a{display:block;padding:8px 12px;border-radius:7px;color:var(--ink);font-size:15px;line-height:1.3}
.mn-p a:hover{background:var(--brand-soft);color:var(--brand);text-decoration:none}
.mn-p a[aria-current]{background:var(--brand-soft);color:var(--brand);font-weight:600}
.mn-g.open .mn-p{display:block}
@media (hover:hover) and (min-width:1180px){.mn-g:hover .mn-p{display:block}.mn-g:hover>.mn-b{background:var(--brand-soft);color:var(--brand)}}

/* main menu – phones and tablets: hamburger + accordion */
@media (max-width:1179px){
  .hdr{flex-wrap:wrap;min-height:56px;padding-top:8px;padding-bottom:8px}
  .theme-toggle{order:2;margin-left:auto}
  .main-nav{order:5}
  .mn-all{display:block}
  .nav-toggle{display:flex;align-items:center;gap:8px;margin-left:6px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:15px;font-weight:600;cursor:pointer;min-height:44px}
  .burger,.burger::before,.burger::after{display:block;width:20px;height:2px;border-radius:2px;background:currentColor;transition:transform .2s cubic-bezier(.25,1,.5,1),opacity .2s}
  .burger{position:relative}
  .burger::before,.burger::after{content:"";position:absolute;left:0}
  .burger::before{top:-6px}.burger::after{top:6px}
  .open .burger{background:transparent}
  .open .burger::before{transform:translateY(6px) rotate(45deg)}
  .open .burger::after{transform:translateY(-6px) rotate(-45deg)}
  .main-nav{display:none;width:100%;margin:4px 0 0;max-height:calc(100vh - 70px);max-height:calc(100dvh - 70px);overflow-y:auto;overscroll-behavior:contain;border-top:1px solid var(--line)}
  .site-header.open .main-nav{display:block}
  .mn{flex-direction:column;align-items:stretch;gap:0;padding:4px 0 12px}
  .mn-g{position:static;border-bottom:1px solid var(--line)}
  .mn-b,.mn-all a{width:100%;justify-content:space-between;padding:13px 4px;border-radius:0;font-size:16.5px;min-height:48px}
  .mn-b:hover,.mn-g.open>.mn-b{background:none}
  .mn-p,.mn-g:nth-last-child(-n+3) .mn-p{position:static;display:none;border:0;box-shadow:none;padding:0 0 10px;min-width:0}
  .mn-p::before{display:none}
  .mn-p.mn-cols ul,.mn-p ul{columns:2 170px;column-gap:8px;width:auto}
  .mn-p a{padding:11px 10px;font-size:15.5px;min-height:44px;background:var(--soft);margin:0 0 6px;border-radius:8px}
  .mn-g.open .mn-p{display:block}
  .mn-all a{color:var(--brand)}
  html.menu-open{overflow:hidden}
}
.logo{display:flex;align-items:center;gap:10px;min-height:44px;font-size:26px;font-weight:700;color:var(--ink);letter-spacing:-.5px}
.logo b{color:var(--brand-2)}
.logo:hover{text-decoration:none}
.logo-mark{flex:none;display:inline-grid;place-items:center;width:38px;height:38px;border-radius:8px;background:var(--brand-2);color:#ffffff !important;font-size:17px;border-top:7px solid var(--brand-dark)}

/* content */
[id]{scroll-margin-top:80px}
main{padding-top:12px;padding-bottom:24px}
main p,main li{overflow-wrap:break-word}
main:focus{outline:none}
.crumbs{font-size:14px;color:var(--muted);margin:6px 0 4px}
@media (max-width:640px){.crumbs a{display:inline-block;padding:12px 0;margin:-6px 0}}
h1{font-size:clamp(26px,4vw,36px);line-height:1.2;margin:10px 0 8px}
h2{font-size:24px;margin:32px 0 10px;line-height:1.25}
h3{font-size:19px;margin:22px 0 8px}
.lead{font-size:18px;color:var(--muted);margin:0 0 16px;max-width:60ch}
/* readable line length for prose only (component lists keep their own widths) */
main p,main ul:not([class]),main ol:not([class]){max-width:66ch}
.box{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;margin:16px 0}
.box.warn{background:var(--warn-bg);border-color:var(--warn-line)}
.muted{color:var(--muted);font-size:14px}
.ad{margin:18px 0;min-height:90px}

/* year grid */
.year-grid.one{grid-template-columns:minmax(260px,520px)}
.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin:14px 0}
table.month{width:100%;border-collapse:collapse;font-size:15px;text-align:center;table-layout:fixed;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
table.month caption{font-weight:700;font-size:17px;padding:6px 0;text-align:left}
table.month caption a{display:inline-block;padding:6px 0;margin:-6px 0}
table.month th{font-size:12px;color:var(--muted);font-weight:600;padding:4px 0;border-bottom:1px solid var(--line)}
table.month th.we{color:var(--brand)}
table.month td{padding:5px 0;height:32px}
table.month td.we{background:var(--we);color:var(--we-ink)}
table.month td.hol{background:var(--hol);color:var(--hol-ink);font-weight:700}
table.month td.vac{background:var(--vac)}
table.month td.feast{color:var(--feast);font-weight:700}
table.month td.today{outline:2px solid var(--ink);outline-offset:-2px}
table.month.big{font-size:18px}table.month.big td{height:46px}
table.month td.work{background:var(--surface);box-shadow:inset 0 0 0 2px var(--ok-line)}
.month-box .stat{font-size:13px;color:var(--muted);margin:4px 2px 0}
.legend{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px;margin:8px 0}
.legend li{display:flex;align-items:center;gap:6px}
.sw{display:inline-block;width:18px;height:18px;border-radius:4px;border:1px solid var(--line)}
.sw.we{background:var(--we)}.sw.hol{background:var(--hol)}.sw.vac{background:var(--vac)}.sw.today{outline:2px solid var(--ink)}

/* widget placeholders – reserve the final height until the script renders */
[data-dnes]:empty{min-height:430px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
[data-vechen-kalendar]:not(.vk){min-height:1744px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
@media (max-width:600px){[data-vechen-kalendar]:not(.vk){min-height:1133px}}

/* data tables */
.table-wrap{overflow-x:auto;margin:12px 0}
/* a table that still scrolls sideways fades out on the side with hidden columns (js/menu.js sets .scrolls/.at-end) */
.table-wrap.scrolls:not(.at-end){-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}
.table-wrap.scrolls:focus-visible{-webkit-mask-image:none;mask-image:none;outline-offset:-2px}
/* month-by-day tables / day lists, marked .long by core.py: laid out only when scrolled near; sizes = measured heights (phone / ≥900px) */
.table-wrap.long,.daylist.long{content-visibility:auto;contain-intrinsic-size:auto 2150px}
.table-wrap.long.wide{contain-intrinsic-size:auto 3350px}.daylist.long{contain-intrinsic-size:auto 2650px}
@media (min-width:900px){.table-wrap.long{contain-intrinsic-size:auto 1300px}.table-wrap.long.wide,.daylist.long{contain-intrinsic-size:auto 1850px}}
table.data{border-collapse:collapse;width:100%;font-size:15px}
table.data th,table.data td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
table.data th{background:var(--soft);font-weight:600;white-space:nowrap}
table.data tr.past td{color:var(--muted)}
table.data tr.hl td{background:var(--brand-soft)}
.nowrap{white-space:nowrap}

/* link lists (hubs) – a quiet two-column directory instead of a card grid */
.cards{list-style:none;margin:14px 0;padding:0;max-width:none;columns:2 300px;column-gap:32px}
.cards li{break-inside:avoid;border-bottom:1px solid var(--line)}
.cards li a{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:10px 2px;color:var(--ink);min-height:44px}
.cards li a:hover{text-decoration:none;background:var(--brand-soft)}
.cards strong{color:var(--brand);font-size:16.5px}
.cards span{font-size:14px;color:var(--muted)}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;padding:0;list-style:none;max-width:none}
.pills a,.pills span{display:inline-flex;align-items:center;min-height:36px;padding:5px 14px;border:1px solid var(--line);border-radius:99px;font-size:15px}
.pills a:hover{border-color:var(--brand-2);background:var(--brand-soft);text-decoration:none}
.pills span{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}
.downloads{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0;padding:0;list-style:none;max-width:none}
.downloads a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 14px;border:1px solid var(--line);border-radius:8px;color:var(--ink);font-weight:600;background:var(--surface)}
.downloads a:hover{border-color:var(--brand-2);text-decoration:none}
.ficon{display:inline-grid;place-items:center;min-width:38px;height:22px;padding:0 5px;border-radius:5px;color:#ffffff;font-size:12px;font-weight:700;letter-spacing:.02em}
.ficon.pdf{background:var(--file-pdf)}.ficon.xlsx{background:var(--file-xls)}.ficon.docx{background:var(--file-doc)}

/* day list (orthodox, name days) */
.daylist{list-style:none;padding:0;margin:8px 0;max-width:none}
.daylist li{display:grid;grid-template-columns:118px 1fr;gap:10px;padding:7px 4px;border-bottom:1px solid var(--line)}
.daylist .d{font-weight:600;white-space:nowrap}
.daylist .d small{display:block;font-weight:400;color:var(--muted)}
.daylist li.big .t{color:var(--feast);font-weight:700}
.daylist li.mid .t{font-weight:600}
.daylist li.sun{background:var(--soft-2)}
.daylist .fast{display:inline-block;font-size:12px;color:var(--fast-tag);background:var(--fast-tag-bg);border-radius:4px;padding:0 6px;margin-left:6px;white-space:nowrap}

/* forms / tools */
.tool{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:16px 0}
.tool label{font-weight:600;margin-right:6px}
.tool input,.tool select,.tool button,.tool textarea{font:inherit;min-height:40px;padding:7px 10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink);margin:4px 6px 4px 0}
.tool input::placeholder{color:var(--muted)}
.tool button{min-height:44px;background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600;cursor:pointer}
.tool button:hover{filter:brightness(1.08)}
.tool button:active,.theme-toggle:active,.nav-toggle:active,.downloads a:active,.pills a:active{transform:translateY(1px)}
.tool button,.theme-toggle,.nav-toggle,.downloads a,.pills a{transition:transform .12s cubic-bezier(.25,1,.5,1),background-color .15s,border-color .15s}
.tool input[type=number]{width:7.5em}
.tool input[type=checkbox]{min-height:0;width:20px;height:20px;margin:0 8px 0 0;padding:0;accent-color:var(--accent);flex:none}
.tool label:has(> input[type=checkbox]){display:inline-flex;align-items:center;min-height:44px;margin-right:16px;font-weight:600}
.tool input[type=text],.tool input[type=search]{min-width:min(100%,320px)}
.tool input[aria-invalid=true]{border-color:var(--err);box-shadow:0 0 0 1px var(--err)}
.msg-error{color:var(--err);font-weight:600;margin:0}
.tool textarea.code{width:100%;font:13px/1.5 ui-monospace,Consolas,monospace;resize:vertical}
.tool output,.tool .result{display:block;margin-top:10px;font-size:17px}

/* fasting */
table.month td.f-strict{background:var(--f-strict);color:var(--f-strict-ink);font-weight:700}
table.month td.f-fast{background:var(--f-fast)}
table.month td.f-fish{background:var(--f-fish)}
table.month td.f-wf{background:var(--f-wf)}
table.month td.f-dairy{background:var(--f-dairy)}
.sw.f-strict{background:var(--f-strict)}.sw.f-fast{background:var(--f-fast)}.sw.f-fish{background:var(--f-fish)}.sw.f-wf{background:var(--f-wf)}.sw.f-dairy{background:var(--f-dairy)}

/* heat-map tables */
table.pollen td{text-align:center;color:var(--heat-ink);font-size:12px;padding:6px 2px}
table.pollen td:first-child{text-align:left;font-size:14px;color:inherit}
/* heat maps stay grids on phones: the name column stays put while the months scroll */
table.pollen td:first-child,table.pollen th:first-child{position:sticky;left:0;z-index:1;background:var(--bg);box-shadow:1px 0 0 var(--line)}
table.pollen th:first-child{background:var(--soft)}
/* any table that scrolls sideways keeps its first column (date / name) in view */
.table-wrap.scrolls table.data td:first-child,.table-wrap.scrolls table.data th:first-child{position:sticky;left:0;z-index:1;background:var(--bg);box-shadow:1px 0 0 var(--line)}
.table-wrap.scrolls table.data th:first-child{background:var(--soft)}
.table-wrap.scrolls table.data tr.hl td:first-child{background:var(--brand-soft)}
/* once a table scrolls anyway, give text columns room instead of wrapping every word onto its own line */
@media (max-width:640px){.table-wrap.scrolls table.data:not(.pollen) td:not(:first-child){min-width:6.5em}.table-wrap.scrolls table.data:not(.pollen) td:last-child:not(:nth-child(2)){min-width:13em}}
.pl0{background:var(--heat-0)}.pl1{background:var(--heat-1)}.pl2{background:var(--heat-2)}
.pl3{background:var(--heat-3);color:var(--heat-3-ink) !important;font-weight:600}
.sw.pl1{background:var(--heat-1)}.sw.pl2{background:var(--heat-2)}.sw.pl3{background:var(--heat-3)}

/* weddings */
table.month td.w-ok{background:var(--ok);color:var(--ok-ink);font-weight:700}
table.month td.w-sat{background:var(--ok-soft)}
table.month td.w-no{background:var(--no);color:var(--no-ink);text-decoration:line-through}
.sw.w-ok{background:var(--ok)}.sw.w-sat{background:var(--ok-soft)}.sw.w-no{background:var(--no)}

/* habit tracker */
.hb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:14px 0 4px}
.tool .hb-d{margin:0;color:var(--ink);font-weight:400;font:inherit;font-size:14px;padding:12px 6px;border:2px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;min-height:56px}
.tool .hb-d[aria-pressed=true]{background:var(--ok);border-color:var(--ok-line-2);color:var(--ok-ink);font-weight:700}
.tool .hb-d[aria-pressed=true]::before{content:"\2713  "}

/* historical anniversaries */
.hist-today h2{margin-top:0}
.hist-list{list-style:none;padding:0;margin:6px 0}
.hist-list li{padding:7px 0;border-bottom:1px solid var(--line)}
.hist-list li:last-child{border-bottom:0}
.hist-n{color:var(--brand)}
.hist-big{font-size:19px;margin:8px 0}
.tl{list-style:none;margin:10px 0 0;padding:0 0 0 22px;position:relative;max-width:none}
.tl::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--line-strong)}
.tl li{position:relative;padding:6px 0 10px;display:grid;grid-template-columns:minmax(150px,auto) 1fr auto;gap:2px 14px;align-items:baseline}
.tl li::before{content:"";position:absolute;left:-20px;top:12px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--muted)}
.tl li.tl-bg::before{border-color:var(--accent)}
.tl li.tl-start::before,.tl li.tl-end::before{width:14px;height:14px;left:-22px;top:10px;background:var(--accent);border-color:var(--accent)}
.tl-d{font-weight:600;white-space:nowrap}
.tl-g{color:var(--muted);font-size:14px;white-space:nowrap}
.tl-start .tl-t,.tl-end .tl-t{font-weight:700}
@media (max-width:640px){.tl li{grid-template-columns:1fr;gap:0}.tl-g{font-size:13px}}

/* countdown */
.countdown{background:var(--brand-soft);border-radius:var(--radius);padding:18px;margin:14px 0;text-align:center}
.cd-n{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}
.cd-n span{display:flex;flex-direction:column;align-items:center;min-width:84px;background:var(--surface);border-radius:10px;padding:10px 8px;font-size:14px;color:var(--muted)}
.cd-n b{font-size:40px;line-height:1.1;color:var(--brand);font-variant-numeric:tabular-nums}

/* homepage */
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;grid-template-areas:"main today" "main links";grid-template-rows:auto 1fr;gap:6px 28px;align-items:start}
.home-main{grid-area:main;min-width:0}.home-main h2{margin-top:6px}
.home-main .year-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.home-today{grid-area:today;margin-top:8px}.home-today .dn{max-width:none}
.home-links{grid-area:links}
.side-nav h3{font-size:15px;font-weight:700;color:var(--ink);margin:18px 0 6px}
.side-nav ul{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.side-nav li+li{border-top:1px solid var(--line)}
.side-nav li a{display:block;padding:9px 12px;color:var(--ink);min-height:40px}
.side-nav p a{display:inline-block;padding:12px 0}
.side-nav li a:hover{background:var(--brand-soft);color:var(--brand);text-decoration:none}
@media (max-width:900px){
  .home-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"today" "main" "links";grid-template-rows:auto}
  .home-today{margin-top:0}
  .side-nav{columns:2 220px;column-gap:16px}.side-nav h3{break-after:avoid}.side-nav ul{break-inside:avoid;margin-bottom:6px}
  .side-nav li a{min-height:44px;padding:11px 12px}
}

/* disclosures */
main details>summary{cursor:pointer;padding:10px 0;min-height:44px}

/* faq */
.faq details{border:1px solid var(--line);border-radius:8px;margin:8px 0;max-width:860px}
.faq summary{cursor:pointer;font-weight:600;padding:11px 14px;min-height:44px}
.faq details>div{padding:0 14px 12px}

/* footer */
.site-footer{background:var(--foot-bg);color:var(--foot-ink);margin-top:30px;padding:26px 0 18px;font-size:14px}
.site-footer a{color:var(--foot-link);display:inline-block;padding:3px 0}
.footer-cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:18px}
.footer-cols h3{color:var(--foot-head);font-size:15px;margin:0 0 6px}
.footer-cols ul{list-style:none;margin:0;padding:0}
.footer-cols li{margin:0}
.footer-cols a.more{color:var(--foot-head);font-weight:600}
.copy{border-top:1px solid var(--foot-line);margin-top:18px;padding-top:12px;max-width:none}

@media (max-width:640px){
  body{font-size:15px}
  .lead{font-size:16px}
  .pills a,.pills span{min-height:44px;padding:8px 14px;font-size:15px;white-space:nowrap}
  .pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-16px;margin-right:-16px;padding:0 16px 2px}
  .pills::-webkit-scrollbar{display:none}
  .year-grid,.home-main .year-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  table.month{font-size:13px}table.month td{height:26px;padding:2px 0}table.month caption{font-size:15px}
  table.month.big td{height:44px}
  h2{font-size:21px}
  .table-wrap{margin-left:-4px;margin-right:-4px}
  table.data th,table.data td{padding:7px 6px}
  .cd-n span{min-width:68px}.cd-n b{font-size:30px}
  .logo{font-size:22px}
  .daylist li{grid-template-columns:92px 1fr}
  .site-footer a{padding:11px 0}
  /* tables that do not fit: one block per row, each cell as "label: value" (js/menu.js adds .stack) */
  .table-wrap.stack{overflow:visible;margin-left:0;margin-right:0}
  .stack table,.stack tbody,.stack tr,.stack td,.stack tbody th{display:block}
  .stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .stack tr{padding:10px 4px;border-bottom:1px solid var(--line)}
  .stack tbody tr:first-child{border-top:1px solid var(--line)}
  .stack table.data td,.stack table.data tbody th{display:grid;grid-template-columns:minmax(6.5em,38%) 1fr;gap:10px;align-items:baseline;border:0;padding:2px 0;white-space:normal}
  .stack td::before,.stack tbody th::before{content:attr(data-label);color:var(--muted);font-weight:600;font-size:14px;line-height:1.45}
  .stack table.data td:first-child,.stack table.data tbody th:first-child{display:block;font-weight:700;font-size:16px;padding-bottom:4px}
  .stack td:first-child::before,.stack tbody th:first-child::before{content:none}
  .stack td:has(> .v:empty){display:none}
  .stack tr.hl{background:var(--brand-soft)}.stack tr.hl td{background:none}
  table.month caption a{padding:12px 0;margin:-12px 0}
  .tool input,.tool select{min-height:44px}
  /* stacked form layout: each label sits directly above its own field */
  .tool label[for]{display:block;margin:12px 0 4px}
  .tool p:first-child label[for]:first-child,.tool > label[for]:first-child{margin-top:0}
  .tool input[type=date],.tool input[type=search],.tool input[type=text],.tool select{width:100%;margin-right:0}
  .tool button{width:100%;margin-top:10px}
}
/* narrow phones: logo + theme switch + icon-only menu button on one line */
@media (max-width:420px){
  .nav-toggle{padding:9px 11px;min-width:44px;justify-content:center}
  .nav-toggle-t{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .logo{gap:8px;font-size:21px}
}
@media (max-width:350px){
  .logo{font-size:18px;gap:6px}.logo-mark{width:32px;height:32px;font-size:15px;border-top-width:6px}
  .theme-toggle{width:40px}.nav-toggle{min-width:40px;padding:9px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important;scroll-behavior:auto !important}
}
@media print{
  .site-header nav,.nav-toggle,.site-footer,.ad,.crumbs,.faq,.downloads,.skip{display:none !important}
  .year-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  table.month{font-size:11px}table.month td{height:18px;padding:1px}
  td.we,td.hol{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .table-wrap.long,.daylist.long{content-visibility:visible}
}
