@font-face{font-family:"Inter";src:url(/fonts/inter.woff2) format("woff2");font-weight:400 700;font-display:optional}
@font-face{font-family:"Lora";src:url(/fonts/lora.woff2) format("woff2");font-weight:500 700;font-display:optional}

:root{
  --ink:#1c2333;--muted:#5b6475;--bg:#fbfaf7;--surface:#fff;--line:#e8e4da;
  --navy:#16244a;--accent:#2f4b9a;--accent-hover:#233a7a;--gold:#a8842f;--gold-soft:#f6f0df;
  --shadow:0 1px 2px rgba(22,36,74,.05),0 6px 24px rgba(22,36,74,.06);--radius:14px;--ring:rgba(47,75,154,.14);
}
@media (prefers-color-scheme:dark){
  :root{--ink:#e7e9ef;--muted:#a3abbb;--bg:#11151f;--surface:#181e2b;--line:#2a3142;
    --navy:#e7e9ef;--accent:#8fa8ff;--accent-hover:#b3c3ff;--gold:#d4b25c;--gold-soft:#262415;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 24px rgba(0,0,0,.25);--ring:rgba(143,168,255,.22)}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}
body{margin:0;font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:17px;line-height:1.7;
  color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--accent-hover)}
h1,h2,h3{font-family:"Lora",Georgia,"Times New Roman",serif;color:var(--navy);font-weight:600;letter-spacing:-.01em}
h1{font-size:clamp(1.9rem,4.2vw,2.6rem);line-height:1.15;margin:.1em 0 .45em}
h2{font-size:1.45rem;line-height:1.3;margin:2.1em 0 .6em}
h3{font-size:1.15rem;margin:1.6em 0 .4em}
p,ul,ol{margin:0 0 1.05em}
li{margin:.25em 0}
code{font-size:.92em;background:var(--gold-soft);padding:.1em .35em;border-radius:5px}

.wrap{max-width:1080px;margin:0 auto;padding:0 24px}
.prose{max-width:720px}

/* header */
header{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
header .wrap{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 18px;padding-top:12px;padding-bottom:12px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--navy);font-family:"Lora",Georgia,serif;font-weight:700;font-size:1.3rem}
.brand svg{width:34px;height:34px}
.owl-body{fill:var(--navy)}.owl-eye{fill:var(--bg)}.owl-gold{fill:var(--gold)}
header nav{display:flex;flex-wrap:wrap;gap:2px 4px}
header nav a{text-decoration:none;color:var(--muted);font-size:.93rem;font-weight:500;padding:6px 10px;border-radius:8px}
header nav a:hover,header nav a.on{color:var(--navy);background:var(--gold-soft)}

main{padding:30px 0 10px}
.crumbs{font-size:.88rem;color:var(--muted);margin-bottom:6px}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--accent)}
.lead{font-size:1.12rem;color:var(--muted);max-width:720px}

/* hero */
.hero{text-align:center;padding:26px 0 8px}
.hero h1{font-size:clamp(2.1rem,5vw,3rem)}
.hero .lead{margin:0 auto 22px}
.hero .tag{display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.search{display:block;width:100%;max-width:460px;margin:0 auto;font:inherit;padding:12px 16px;border:1px solid var(--line);border-radius:999px;
  background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}

/* tool cards on home and related */
.group h2{display:flex;align-items:center;gap:10px}
.group h2:before{content:"";width:6px;height:22px;border-radius:3px;background:var(--gold)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:14px 0 6px}
.card{display:flex;gap:14px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;text-decoration:none;color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--gold);color:var(--ink)}
.card .ico{flex:none;width:40px;height:40px;border-radius:10px;background:var(--gold-soft);display:grid;place-items:center;color:var(--gold)}
.card .ico svg{width:22px;height:22px}
.card b{display:block;color:var(--navy);font-weight:600;margin-bottom:2px}
.card span{font-size:.92rem;color:var(--muted);line-height:1.5}

/* tool box */
.tool{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin:22px 0;box-shadow:var(--shadow)}
.tool-title{margin:0 0 14px;font-size:1.2rem}
.row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}
label{display:flex;flex-direction:column;font-size:.85rem;font-weight:600;color:var(--muted);gap:6px}
input,select{font:inherit;font-size:1rem;color:var(--ink);background:var(--bg);padding:10px 12px;border:1px solid var(--line);border-radius:10px;min-width:160px}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.check{flex-direction:row;align-items:center;font-weight:500;gap:8px;padding-bottom:10px}
.check input{min-width:0;width:18px;height:18px;accent-color:var(--accent)}
button{font:inherit;font-weight:600;background:var(--accent);color:#fff;border:0;border-radius:10px;padding:11px 22px;cursor:pointer;transition:background .15s}
button:hover{background:var(--accent-hover)}
@media (prefers-color-scheme:dark){button{color:#11151f}}
.tool>.result:first-child{margin-top:0}
.result{margin-top:20px;padding:18px 20px;background:var(--gold-soft);border-radius:12px;border-left:4px solid var(--gold)}
.result .big{font-family:"Lora",Georgia,serif;font-size:1.75rem;font-weight:600;color:var(--navy);line-height:1.25;margin-bottom:4px}
.bar{height:10px;background:var(--line);border-radius:5px;margin-top:10px;overflow:hidden}
.bar span{display:block;height:100%;background:var(--gold)}

/* tables */
table{border-collapse:separate;border-spacing:0;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;font-size:.95rem;margin:10px 0 18px}
th,td{padding:9px 14px;text-align:left;border-bottom:1px solid var(--line)}
thead th{background:var(--gold-soft);color:var(--navy);font-weight:600}
tr:last-child td,tr:last-child th{border-bottom:0}
tbody tr:hover td{background:var(--bg)}
.scroll{overflow-x:auto}

.related{margin-top:40px;padding-top:6px;border-top:1px solid var(--line)}

/* footer */
footer{margin-top:56px;background:var(--surface);border-top:1px solid var(--line);font-size:.92rem;color:var(--muted)}
footer .wrap{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:24px;padding-top:32px;padding-bottom:28px}
footer h4{margin:0 0 8px;color:var(--navy);font-size:.95rem}
footer a{display:block;color:var(--muted);text-decoration:none;padding:2px 0}
footer a:hover{color:var(--accent)}
footer .copy{grid-column:1/-1;border-top:1px solid var(--line);padding-top:16px;font-size:.85rem}
@media (max-width:640px){header nav{flex-wrap:nowrap;overflow-x:auto;width:100%;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent);padding-right:24px}header nav::-webkit-scrollbar{display:none}th,td{padding:8px 10px}header nav a{white-space:nowrap}footer .wrap{grid-template-columns:1fr 1fr}footer .about{grid-column:1/-1}body{font-size:16.5px}.tool{padding:18px}}
.skip{position:absolute;left:-999px;top:8px;background:var(--surface);padding:8px 14px;border-radius:8px;z-index:20}
.skip:focus{left:12px}
article>p,article>ul,article>ol{max-width:72ch}
footer .copy a{display:inline;margin-left:10px}
footer nav h4{font-family:"Lora",Georgia,serif}

/* sticky footer: on short pages main grows so the footer sits at the bottom of the screen */
body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
main{flex:1 0 auto}

/* year calendar */
.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin:18px 0}
.month{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 12px 6px}
.month h3{margin:0 0 6px;font-size:1.02rem;text-align:center}
.month .scroll{overflow:visible}
table.cal{border:0;border-radius:0;margin:0;font-size:.84rem;table-layout:fixed;background:none}
.cal th,.cal td{border:0;padding:3px 0;text-align:center;line-height:1.9}
.cal thead th{background:none;color:var(--muted);font-weight:600;font-size:.74rem}
.cal td.wk,.cal th.wk{color:var(--muted);font-size:.68rem;width:12%}
.cal td.we{color:var(--muted)}
.cal td.fed{background:#c2410c1a;color:#b42318;font-weight:700;border-radius:7px}
.cal td.obs{color:var(--gold);font-weight:700}
.cal td.today{outline:2px solid var(--accent);outline-offset:-2px;border-radius:7px}
tbody tr:hover td.fed{background:#c2410c1a}
.legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:.88rem;color:var(--muted)}
.legend i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:4px;vertical-align:-2px}
.legend i.fed{background:#c2410c33}.legend i.obs{background:var(--gold)}.legend i.today-key{outline:2px solid var(--accent);outline-offset:-2px}
@media (prefers-color-scheme:dark){.cal td.fed{color:#ff8a7a}}

/* julian day-of-year grid */
table.jgrid{font-size:.8rem;font-variant-numeric:tabular-nums}
.jgrid th,.jgrid td{padding:4px 6px;text-align:center}
.jgrid tbody th{color:var(--muted);background:var(--gold-soft)}

/* print: only the content */
@media print{
  header,footer,.crumbs,.related,.noprint,.skip{display:none!important}
  body{background:#fff;color:#000;font-size:11pt;display:block}
  main{padding:0}.wrap{max-width:none;padding:0}
  .month{break-inside:avoid;border-color:#ccc}
  .year-grid{grid-template-columns:repeat(3,1fr);gap:8px}
  a{color:#000;text-decoration:none}
}

/* interactive month view */
.mv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px}
.mv-bar select{min-width:0;padding:8px 10px}
button.ghost{background:var(--bg);color:var(--navy);border:1px solid var(--line);padding:8px 14px}
button.ghost:hover{background:var(--gold-soft)}
#mv-today{margin-left:auto}
table.mv{width:100%;table-layout:fixed;border:0;background:none;margin:0;border-spacing:4px;border-collapse:separate}
.mv caption{position:absolute;left:-9999px}
.mv thead th{background:none;border:0;text-align:center;color:var(--muted);font-weight:600;font-size:.85rem;padding:4px 0}
.mv thead th.we,.mv-day.we .n{color:#b42318}
.mv td{padding:0;border:0}
tbody tr:hover .mv td,.mv tbody tr:hover td{background:none}
.mv-day{position:relative;width:100%;height:68px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  background:var(--surface);color:var(--ink);border:1px solid transparent;border-radius:10px;padding:4px 2px;font-weight:400}
.mv-day:hover{background:var(--gold-soft);border-color:var(--line)}
.mv-day .n{font-family:"Lora",Georgia,serif;font-size:1.3rem;font-weight:600;line-height:1.1}
.mv-day .h{font-size:.66rem;line-height:1.2;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mv-day.fed{background:#c2410c14}.mv-day.fed .n,.mv-day.fed .h{color:#b42318}
.mv-day.obs .h{color:var(--gold);font-weight:600}
.mv-day.out{opacity:.38}
.mv-day.today{border-color:var(--accent)}
.mv-day.sel{border:2px solid var(--accent);background:var(--gold-soft)}
.mv-day .off{position:absolute;top:3px;right:3px;font-size:.55rem;font-weight:700;letter-spacing:.04em;background:#b42318;color:#fff;border-radius:4px;padding:1px 4px;line-height:1.3}
@media (prefers-color-scheme:dark){.mv-day.fed .n,.mv-day.fed .h,.mv thead th.we,.mv-day.we .n{color:#ff8a7a}}
@media (max-width:640px){table.mv{border-spacing:2px}.mv-day{height:56px}.mv-day .n{font-size:1.05rem}.mv-day .h{font-size:.56rem;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .mv-day .off{font-size:.48rem;padding:0 3px;top:2px;right:2px}#mv-today{margin-left:0}.mv-tool{padding:14px 10px}}
.mv-day .hs{display:none}
@media (max-width:640px){.mv-bar{flex-wrap:nowrap;gap:5px}.mv-bar select{padding:7px 4px;font-size:16px}button.ghost{padding:7px 9px}
  .mv-day .h{display:none}.mv-day .hs{display:block;font-size:.56rem;line-height:1.15;color:inherit;text-align:center}
  .mv-day.fed .hs{color:#b42318}.mv-day.obs .hs{color:var(--gold);font-weight:600}.mv-day:not(.fed):not(.obs) .hs{color:var(--muted)}}
/* fixed-width numbers: inputs and live results don't change width as digits change */
input,select,.cal,.mv-day .n,table,.ticker{font-variant-numeric:tabular-nums}
input[type=date]{width:11.5em;min-width:0}
input[type=time]{width:8.5em;min-width:0}
input[type=number]{width:9em;min-width:0}
#mv-y{flex:0 0 6.2em;width:6.2em}#mv-m{flex:0 0 9.5em;width:9.5em}
@media (max-width:640px){#mv-y{flex-basis:5.2em}#mv-today{padding:7px 8px}}
@media (max-width:640px){
  .mv-bar{display:grid;grid-template-columns:repeat(6,1fr);grid-template-areas:"y y y m m m" "p p t t n n";gap:6px}
  #mv-y{grid-area:y}#mv-m{grid-area:m;min-width:0}#mv-prev{grid-area:p}#mv-next{grid-area:n}#mv-today{grid-area:t;margin:0}
}
.mv-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.print-only{display:none}
@media print{.print-only{display:grid!important}}
@media (max-width:640px){#mv-y,#mv-m{width:100%}}

/* layout polish (full-site review) */
table{width:100%;min-width:0}
table.cal,table.mv{width:100%;min-width:0}
.scroll.tall{max-height:460px;overflow:auto;border-radius:12px;border:1px solid var(--line);margin:10px 0 18px}
.scroll.tall table{margin:0;border:0;border-radius:0;width:100%}
.scroll.tall thead th{position:sticky;top:0;z-index:1}
td:first-child{white-space:nowrap}
@media (max-width:640px){
  .result .big{font-size:1.4rem}
  table{font-size:.8rem}
  th,td{padding:6px 5px}
  th:first-child,td:first-child{padding-left:8px}
}
@media (max-width:640px){.wrap{padding-left:16px;padding-right:16px}}

/* wide screens: article + sticky right sidebar (related tools now, the ad slot later). One aside in the HTML;
   on phones it simply stays below the article. */
.cards{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
@media (min-width:1000px){
  .layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;column-gap:44px;align-items:start}
  .layout>.crumbs{grid-column:1/-1}
  .layout>article{grid-column:1;min-width:0}
  .layout>aside.related{grid-column:2;grid-row:2;position:sticky;top:84px;margin-top:6px;padding-top:0;border-top:0}
  .layout>aside.related h2{font-size:1.1rem;margin:0 0 10px}
  .layout>aside.related .cards{grid-template-columns:1fr;gap:10px;margin:0}
  .layout>aside.related .card{padding:12px 14px}
  .mv-day{height:76px}
}
.cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
@media (min-width:641px){.mv-day .h{white-space:normal;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0 2px}}

/* month bar: every control the same height */
.mv-bar>*,.mv-bar select,.mv-bar button,.pick-btn{height:42px;box-sizing:border-box}
.mv-bar button{display:inline-flex;align-items:center;justify-content:center;padding-top:0;padding-bottom:0}
.mv-bar select{padding-top:0;padding-bottom:0}
/* desktop custom dropdown (enhanceSelect) */
.pick{position:relative;flex:0 0 auto}
#mv-y-pick{width:6.2em}#mv-m-pick{width:9.5em}
.pick-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px;background:var(--bg);color:var(--ink);
  border:1px solid var(--line);border-radius:10px;font-weight:500;text-align:left}
.pick-btn:hover{background:var(--gold-soft)}
.pick-btn:after{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg);opacity:.6}
.pick-btn[aria-expanded=true],.pick-btn:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.pick-list{position:absolute;top:calc(100% + 5px);left:0;min-width:100%;max-height:266px;overflow-y:auto;margin:0;padding:4px;list-style:none;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(22,36,74,.14);z-index:30;outline:none}
.pick-list li{padding:6px 12px;border-radius:7px;cursor:pointer;white-space:nowrap;line-height:1.6;margin:0}
.pick-list li.active{background:var(--gold-soft)}
.pick-list li[aria-selected=true]{color:var(--accent);font-weight:600}
.muted{color:var(--muted)}

/* thin focus ring for keyboard users on buttons, links and day cells (mouse clicks show nothing) */
button:focus-visible,a:focus-visible,.mv-day:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring);border-color:var(--accent)}
@media (max-width:640px){#mv-y-pick{grid-area:y;width:100%}#mv-m-pick{grid-area:m;width:100%}}
