:root{color-scheme:light;--paper:#faf8f3;--surface:#fff;--surface-2:#f1eee6;--ink:#16191d;--ink-2:#4a4f57;--ink-3:#6b7079;--line:#ddd8cc;--line-strong:#b9b3a5;--accent:#0b6b66;--accent-hover:#085551;--accent-ink:#fff;--accent-soft:#dcefec;--accent-range:#e8f4f2;--holiday:#b45309;--holiday-bg:#fcebc8;--holiday-line:#e9b25e;--weekend:#8a8f98;--weekend-bg:#efece5;--weekend-hatch:#16191d17;--business-bg:#fff;--error:#b42318;--shadow-1:0 1px 2px #16191d0f, 0 1px 1px #16191d0a;--shadow-2:0 6px 20px #16191d14, 0 1px 3px #16191d0f;--focus:0 0 0 3px var(--paper), 0 0 0 5px var(--accent);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-20:80px;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--t-xs:.8125rem;--t-sm:.875rem;--t-base:1rem;--t-md:1.125rem;--t-lg:1.25rem;--t-xl:1.5rem;--t-2xl:2rem;--t-3xl:2.5rem;--t-answer:clamp(2rem, 4.6vw, 3.25rem);--lh-tight:1.15;--lh-body:1.6;--r-1:4px;--r-2:8px;--r-3:12px;--r-pill:999px;--measure:68ch;--page:72rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#0f1720;--surface:#151f2a;--surface-2:#1b2733;--ink:#e8eaed;--ink-2:#b4bac3;--ink-3:#8f97a3;--line:#26323f;--line-strong:#3a4757;--accent:#4fc1b7;--accent-hover:#74d2c9;--accent-ink:#0f1720;--accent-soft:#173a3a;--accent-range:#142d30;--holiday:#f2b54a;--holiday-bg:#3a2c12;--holiday-line:#8a6420;--weekend:#8f97a3;--weekend-bg:#18212b;--weekend-hatch:#e8eaed12;--business-bg:#151f2a;--error:#ff8a80;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 6px 20px #00000059}}:root[data-theme=dark]{color-scheme:dark;--paper:#0f1720;--surface:#151f2a;--surface-2:#1b2733;--ink:#e8eaed;--ink-2:#b4bac3;--ink-3:#8f97a3;--line:#26323f;--line-strong:#3a4757;--accent:#4fc1b7;--accent-hover:#74d2c9;--accent-ink:#0f1720;--accent-soft:#173a3a;--accent-range:#142d30;--holiday:#f2b54a;--holiday-bg:#3a2c12;--holiday-line:#8a6420;--weekend:#8f97a3;--weekend-bg:#18212b;--weekend-hatch:#e8eaed12;--business-bg:#151f2a;--error:#ff8a80;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 6px 20px #00000059}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--t-base);line-height:var(--lh-body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0}img,svg{max-width:100%;display:block}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent-hover);text-decoration-thickness:2px}:focus-visible{box-shadow:var(--focus);border-radius:var(--r-1);outline:none}h1,h2,h3{line-height:var(--lh-tight);letter-spacing:-.01em;margin:0 0 var(--s-3);font-weight:600}h1{font-size:clamp(var(--t-2xl), 4vw, var(--t-3xl))}h2{font-size:var(--t-xl);margin-top:var(--s-12)}h3{font-size:var(--t-md);margin-top:var(--s-6)}p,ul,ol{margin:0 0 var(--s-4)}.mono,.num,code{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{text-align:right}.vh{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip{left:var(--s-4);background:var(--surface);padding:var(--s-2) var(--s-3);z-index:10;position:absolute;top:-100px}.skip:focus{top:var(--s-2)}.wrap{max-width:var(--page);padding:0 var(--s-5);margin:0 auto}.prose{max-width:var(--measure)}main{padding-bottom:var(--s-16)}.page-head{padding:var(--s-8) 0 var(--s-6)}.lede{color:var(--ink-2);font-size:var(--t-md);max-width:var(--measure)}.asof{color:var(--ink-3);font-size:var(--t-xs)}.section{max-width:var(--measure)}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-row{align-items:center;gap:var(--s-6);min-height:60px;display:flex}.wordmark{align-items:center;gap:var(--s-2);font-weight:600;font-size:var(--t-md);color:var(--ink);letter-spacing:-.01em;flex:none;text-decoration:none;display:inline-flex}.wordmark:hover{color:var(--ink)}.wordmark-mark{background:var(--accent);width:22px;height:22px;color:var(--accent-ink);font-family:var(--font-mono);border-radius:5px;place-items:center;font-size:12px;font-weight:500;display:grid}.nav{gap:var(--s-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.nav a{padding:var(--s-1) var(--s-3);border-radius:var(--r-pill);color:var(--ink-2);font-size:var(--t-sm);text-decoration:none;display:block}.nav a:hover{color:var(--ink);background:var(--surface-2)}.nav a[aria-current=page]{color:var(--ink);background:var(--surface-2);font-weight:600}.header-actions{align-items:center;gap:var(--s-2);margin-left:auto;display:flex}.icon-btn{border-radius:var(--r-2);border:1px solid var(--line);background:var(--surface);width:40px;height:40px;color:var(--ink);cursor:pointer;place-items:center;display:inline-grid}.icon-btn:hover{border-color:var(--line-strong)}.icon-sun{display:none}:root[data-theme=dark] .icon-sun{display:block}:root[data-theme=dark] .icon-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .icon-sun{display:block}:root:not([data-theme=light]) .icon-moon{display:none}}.nav-mobile{display:none;position:relative}.nav-mobile summary{align-items:center;gap:var(--s-2);height:40px;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface);cursor:pointer;font-size:var(--t-sm);list-style:none;display:inline-flex}.nav-mobile summary::-webkit-details-marker{display:none}.nav-mobile[open] summary{border-color:var(--accent)}.nav-mobile nav{right:0;top:calc(100% + var(--s-2));z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);min-width:220px;box-shadow:var(--shadow-2);padding:var(--s-2);position:absolute}.nav-mobile ul{margin:0;padding:0;list-style:none}.nav-mobile a{padding:var(--s-3) var(--s-3);border-radius:var(--r-2);color:var(--ink);text-decoration:none;display:block}.nav-mobile a:hover,.nav-mobile a[aria-current=page]{background:var(--surface-2)}@media (width<=640px){.nav-desktop{display:none}.nav-mobile{display:block}.header-row{gap:var(--s-3)}}.crumbs ol{gap:var(--s-2);margin:var(--s-5) 0 0;font-size:var(--t-sm);color:var(--ink-3);flex-wrap:wrap;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";margin-right:var(--s-2);color:var(--line-strong)}.btn,.btn-quiet{font:inherit;font-size:var(--t-sm);cursor:pointer;border-radius:var(--r-2);padding:var(--s-2) var(--s-4);border:1px solid #0000;min-height:40px}.btn{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn:hover{background:var(--accent-hover)}.btn-quiet{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-quiet:hover{border-color:var(--line-strong)}.tool{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);box-shadow:var(--shadow-1);padding:var(--s-6);gap:var(--s-6);display:grid}.tool-grid{gap:var(--s-8);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=900px){.tool-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}.fields{gap:var(--s-5);align-content:start;display:grid}.field-pair{gap:var(--s-4);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=600px) and (width<=899px){.field-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.field{gap:var(--s-1);display:grid}.field>label,.field>.label,fieldset>legend{font-size:var(--t-sm);color:var(--ink-2);padding:0;font-weight:600}.field-row{gap:var(--s-2);min-width:0;display:flex}.field-row input{flex:auto}.field-row .btn-quiet{flex:none}.hint{font-size:var(--t-xs);color:var(--ink-3);margin:0}input[type=date],input[type=time],input[type=number],select{font:inherit;font-family:var(--font-mono);font-size:var(--t-base);color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-2);padding:var(--s-2) var(--s-3);width:100%;min-width:0;min-height:44px}select{font-family:var(--font-sans)}input:hover,select:hover{border-color:var(--ink-3)}input[aria-invalid=true]{border-color:var(--error)}fieldset{border:0;min-width:0;margin:0;padding:0}.seg{background:var(--surface-2);border-radius:var(--r-2);margin-top:var(--s-1);flex-wrap:wrap;gap:3px;padding:3px;display:inline-flex}.seg label{position:relative}.seg input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.seg span{padding:var(--s-2) var(--s-4);font-size:var(--t-sm);color:var(--ink-2);border-radius:6px;display:block}.seg input:checked+span{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);font-weight:600}.seg input:focus-visible+span{box-shadow:var(--focus)}.check{gap:var(--s-3);font-size:var(--t-sm);align-items:flex-start;display:flex}.check input{width:18px;height:18px;accent-color:var(--accent);flex:none;margin:2px 0 0}.options summary{cursor:pointer;font-size:var(--t-sm);color:var(--ink-2);padding:var(--s-2) 0;border-top:1px solid var(--line);font-weight:600}.options-body{gap:var(--s-5);padding-top:var(--s-3);display:grid}@media (width>=641px){html.js .options>summary{display:none}html.js .options>.options-body{padding-top:0}}.advanced{border-top:1px solid var(--line);padding-top:var(--s-4)}.advanced summary{cursor:pointer;font-size:var(--t-sm);color:var(--ink-2);font-weight:600}.advanced[open] summary{margin-bottom:var(--s-4)}.advanced-body{gap:var(--s-5);display:grid}.daybox{gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.daybox label{align-items:center;gap:var(--s-1);font-size:var(--t-sm);padding:var(--s-1) var(--s-2);border:1px solid var(--line);border-radius:var(--r-1);display:inline-flex}.daybox input{accent-color:var(--accent)}.chips{margin:var(--s-2) 0 0;gap:var(--s-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.chips li{align-items:center;gap:var(--s-1);font-family:var(--font-mono);font-size:var(--t-sm);background:var(--holiday-bg);border-radius:var(--r-pill);padding:2px 4px 2px 10px;display:inline-flex}.chips button{font:inherit;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:50%;width:24px;height:24px}.results{gap:var(--s-6);align-content:start;min-width:0;display:grid}.answer{border-left:4px solid var(--accent);padding:var(--s-1) 0 var(--s-1) var(--s-5)}.answer-label{font-size:var(--t-sm);color:var(--ink-3);margin:0;font-weight:600}.answer-value{margin:var(--s-1) 0 var(--s-2);font-family:var(--font-mono);font-weight:500;font-size:var(--t-answer);letter-spacing:-.02em;color:var(--ink);overflow-wrap:anywhere;line-height:1.05}.answer-value.is-date{font-size:clamp(1.75rem,5vw,2.75rem)}.answer-sub{margin:0 0 var(--s-3);color:var(--ink-2);max-width:60ch;min-height:3.2em}.answer-actions{gap:var(--s-2);flex-wrap:wrap;display:flex}.copied{font-size:var(--t-xs);color:var(--accent);align-self:center;min-width:10ch}.stats{background:var(--line);border:1px solid var(--line);border-radius:var(--r-2);flex-wrap:wrap;gap:1px;margin:0;display:flex;overflow:hidden}.stats div{background:var(--surface);padding:var(--s-3) var(--s-4);flex:108px}.stats dt{font-size:var(--t-xs);color:var(--ink-3)}.stats dd{font-family:var(--font-mono);font-size:var(--t-lg);margin:0;font-weight:500}.hlist{gap:var(--s-1);font-size:var(--t-sm);margin:0;padding:0;list-style:none;display:grid}.hlist li{gap:0 var(--s-3);padding:var(--s-1) 0;border-bottom:1px dashed var(--line);flex-wrap:wrap;align-items:baseline;display:flex}.hlist .h-name:before{content:"";background:var(--holiday);width:8px;height:8px;margin-right:var(--s-2);border-radius:2px;display:inline-block}.hlist .h-date{font-family:var(--font-mono);color:var(--ink-2)}.hlist .h-note{color:var(--ink-3);font-size:var(--t-xs)}.hlist .empty{color:var(--ink-3);border:0}.subhead{font-size:var(--t-sm);color:var(--ink-2);margin:0 0 var(--s-2);font-weight:600}.months{gap:var(--s-6);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.cal{border-collapse:separate;border-spacing:3px;table-layout:fixed;width:100%;font-family:var(--font-mono);font-size:var(--t-xs)}.cal caption{text-align:left;font-family:var(--font-sans);font-weight:600;font-size:var(--t-sm);padding-bottom:var(--s-1)}.cal th{color:var(--ink-3);font-weight:400;font-family:var(--font-sans);padding-bottom:2px}.cal td{text-align:center;border-radius:var(--r-1);height:30px;position:relative}.cal .bd{background:var(--business-bg);box-shadow:inset 0 0 0 1px var(--line)}.cal .we{color:var(--weekend);background:repeating-linear-gradient(135deg, var(--weekend-bg) 0 4px, var(--weekend-hatch) 4px 5px)}.cal .hol{background:var(--holiday-bg);color:var(--holiday);box-shadow:inset 0 0 0 1px var(--holiday-line);font-weight:600}.cal .bd.in{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.cal .we.in:not(.hol){box-shadow:inset 0 -2px 0 var(--accent)}.cal .d.mark{background:var(--accent);color:var(--accent-ink);box-shadow:none;font-weight:600}.cal .d.today{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--accent)}.legend{gap:var(--s-2) var(--s-5);margin:var(--s-4) 0 0;font-size:var(--t-xs);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.legend li{gap:var(--s-2);align-items:center;display:inline-flex}.sw{border-radius:3px;width:14px;height:14px;display:inline-block}.sw.bd{background:var(--business-bg);box-shadow:inset 0 0 0 1px var(--line-strong)}.sw.mark{background:var(--accent)}.sw.in{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.sw.we{background:repeating-linear-gradient(135deg, var(--weekend-bg) 0 3px, var(--weekend-hatch) 3px 4px);box-shadow:inset 0 0 0 1px var(--line)}.sw.hol{background:var(--holiday-bg);box-shadow:inset 0 0 0 1px var(--holiday-line)}.sw.today{box-shadow:0 0 0 2px var(--accent)}.data{border-collapse:collapse;width:100%;font-size:var(--t-sm);margin:0 0 var(--s-3)}.data caption{text-align:left;color:var(--ink-3);font-size:var(--t-xs);padding-bottom:var(--s-2)}.data th,.data td{text-align:left;padding:var(--s-2) var(--s-3) var(--s-2) 0;border-bottom:1px solid var(--line);vertical-align:top}.data thead th{font-size:var(--t-xs);color:var(--ink-3);font-weight:600}.data tbody th{font-weight:400}.data td.num,.data th.num{text-align:right}.data .mono,.nowrap{white-space:nowrap}.table-scroll{overflow-x:auto}.quick{align-items:center;gap:var(--s-3) var(--s-4);margin-top:var(--s-6);padding:var(--s-4) var(--s-5);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface);flex-wrap:wrap;display:flex}.quick label{font-weight:600;font-size:var(--t-sm)}.quick input{width:6.5rem}.quick output{font-family:var(--font-mono);font-size:var(--t-md);min-width:29ch;font-weight:500}.live-date{min-width:29ch;display:inline-block}.faq details{border-bottom:1px solid var(--line);padding:var(--s-3) 0}.faq summary{cursor:pointer;font-weight:600;list-style-position:outside}.faq details>div{padding-top:var(--s-2);color:var(--ink-2)}.faq details>div p:last-child{margin-bottom:0}.callout{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-2);padding:var(--s-4) var(--s-5);margin:0 0 var(--s-4)}.links-grid{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));padding:0;list-style:none;display:grid}.links-grid a{padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface);text-decoration:none;display:block}.links-grid a:hover{border-color:var(--accent)}.links-grid span{font-size:var(--t-xs);color:var(--ink-3);display:block}.noscript{font-size:var(--t-sm);color:var(--ink-2);background:var(--surface-2);border-radius:var(--r-2);padding:var(--s-2) var(--s-3)}.ad-slot{min-height:280px;margin:var(--s-8) 0}.site-footer{border-top:1px solid var(--line);background:var(--surface-2);padding:var(--s-10) 0 var(--s-8);font-size:var(--t-sm);color:var(--ink-2)}.footer-cols{gap:var(--s-6);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.footer-cols .footer-wide ul{columns:2 220px;column-gap:var(--s-6);display:block}.footer-wide li{margin-bottom:var(--s-1)}@media (width>=900px){.footer-cols{grid-template-columns:2fr 1fr}}.footer-cols h2{font-size:var(--t-sm);margin:0 0 var(--s-2);color:var(--ink)}.footer-cols ul{gap:var(--s-1);margin:0;padding:0;list-style:none;display:grid}.site-footer a{color:var(--ink-2)}.site-footer a:hover{color:var(--accent)}.footer-meta{margin-top:var(--s-8);padding-top:var(--s-4);border-top:1px solid var(--line);gap:var(--s-2) var(--s-6);color:var(--ink-3);font-size:var(--t-xs);flex-wrap:wrap;display:flex}@media (prefers-reduced-motion:no-preference){.nav a,.btn,.btn-quiet,.links-grid a{transition:background-color .15s,border-color .15s,color .15s}}@media print{.site-header nav,.theme-toggle,.answer-actions,.site-footer{display:none}}html:not(.js) .js-only{display:none}@media (width<=480px){.data .mono,.live-date{font-size:var(--t-xs)}.data th,.data td{padding-right:var(--s-2)}}.convention{font-size:var(--t-sm);color:var(--ink-2);padding:var(--s-3) var(--s-4);background:var(--surface-2);border-radius:var(--r-2);margin:0}.tool-section{margin-top:var(--s-10)}.mini-tool{align-items:end;gap:var(--s-3) var(--s-4);flex-wrap:wrap;display:flex}.mini-tool .field{min-width:9rem}.mini-out{font-family:var(--font-mono);font-size:var(--t-lg);min-width:16ch;font-weight:500}.steps{padding-left:var(--s-5);font-size:var(--t-sm);color:var(--ink-2);gap:var(--s-2);margin:0;display:grid}.cal-tool{align-items:start}.year-grid{gap:var(--s-6);grid-template-columns:repeat(auto-fill,minmax(250px,1fr));display:grid}.ycal td{vertical-align:top;text-align:left;height:38px;padding:3px 4px}.ycal .dnum{font-size:var(--t-xs);line-height:1;display:block}.ycal .bdn{text-align:right;color:var(--accent);margin-top:4px;font-size:10px;font-weight:500;line-height:1;display:block}.ycount{color:var(--ink-3);font-weight:400;font-size:var(--t-xs);margin-left:var(--s-2)}@media print{@page{size:letter portrait;margin:12mm}body{color:#000;background:#fff;font-size:10pt}.site-header,.site-footer,.crumbs,.no-print,.page-head .lede,.answer-actions,.asof,.skip{display:none!important}.tool{box-shadow:none;border:0;padding:0}.page-head{padding:0 0 6mm}h1{font-size:16pt}.cal-tool{display:block}.cal-tool .answer{border:0;padding:0 0 4mm}.cal-tool .answer-value{font-size:12pt}.cal-tool .convention{background:0 0;padding:0 0 4mm}.year-grid{grid-template-columns:repeat(3,1fr);gap:6mm 5mm}.ymonth{break-inside:avoid}.ymonth:nth-child(6){break-after:page}.ycal td{height:26px}.cal .bd{box-shadow:inset 0 0 0 1px #bbb}.cal .hol{color:#000;background:#f6e0b5}}.data thead th{font-family:var(--font-sans)}.data td.num+td,.data th.num+th{padding-left:var(--s-6)}@media (width<=640px){.stats-stack div{flex-basis:100%}.stats-stack dd{white-space:nowrap;font-size:var(--t-base)}}
