/* Copyright (c) 2026 Blair Lowe. All rights reserved. */
:root{--bg:#fff;--fg:#1b1f24;--muted:#57606a;--line:#d8dee4;--soft:#eef7fb;--brand:#0e6f8f;--brand-dk:#0a5770;--sky:#54c5e8;--sky-lt:#a9dae8;--link:#0b5cad;--ok:#1a7f37;--radius:10px;--max:72rem}
@media (prefers-color-scheme:dark){:root{--bg:#121417;--fg:#e8eaed;--muted:#a2aab3;--line:#2f353c;--soft:#172128;--brand:#0e7799;--brand-dk:#0a5f7a;--link:#6cb6ff;--ok:#57d07a}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:1rem/1.6 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
img,svg{max-width:100%;height:auto}
a{color:var(--link)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--link);outline-offset:2px}
h1,h2,h3{line-height:1.2;margin:1.6em 0 .5em}
h1{font-size:clamp(1.8rem,5vw,2.6rem);margin-top:.4em}
h2{font-size:clamp(1.35rem,3.5vw,1.75rem)}
h3{font-size:1.15rem}
.wrap{max-width:var(--max);margin:0 auto;padding:0 16px}
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
a.skip:focus{width:auto;height:auto;clip:auto;clip-path:none;left:16px;top:8px;background:var(--bg);padding:.5em;z-index:9}
.top{--bg:#fff;--fg:#1b1f24;--muted:#3d4650;--line:#c9d6dc;color-scheme:light;color:var(--fg);background:#a9dae8 url(/assets/people-800.jpg) no-repeat center top/cover}
@media (min-width:48rem){.top{background-image:url(/assets/people.jpg)}}
header.site{background:rgba(216,241,248,.55);color:#242424}
header.site .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;padding-top:.75rem;padding-bottom:.75rem}
.logo{display:block;line-height:0}
.logo img{width:240px;height:auto}
@media (min-width:48rem){.logo img{width:300px}}
nav.main{order:3;flex-basis:100%}
header.site .logo{margin-right:auto}
nav.main ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem 1rem}
nav.main a{text-decoration:none;color:#242424;font-weight:600;padding:.15rem 0;display:inline-block}
@media (max-width:40rem){nav.main{font-size:.95rem}nav.main ul{gap:0 .9rem}}
.menu-btn{display:none}
@media (max-width:47.99rem){.menu-btn{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:0;border-radius:var(--radius);background:#a9dae8;color:#242424;cursor:pointer}html.js nav.main{display:none}html.js header.site.open nav.main{display:block}html.js nav.main ul{flex-direction:column;gap:0}html.js nav.main a{padding:.5rem 0;display:block}}
nav.main a[aria-current]{color:#ff0900}
nav.main{background:#a9dae8;padding:.35rem .9rem}
details.langs{position:relative;border:0;padding:0;margin:0}
details.langs summary{list-style:none;cursor:pointer;font-weight:600;color:#242424;background:#a9dae8;border-radius:var(--radius);padding:.4em .8em}
details.langs summary::before{content:"\1F310  "}
details.langs summary::-webkit-details-marker{display:none}
details.langs ul{position:absolute;right:0;z-index:5;list-style:none;margin:.3rem 0 0;padding:.4rem 0;background:#fff;border:1px solid var(--line);border-radius:var(--radius);min-width:10rem;box-shadow:0 4px 16px rgba(0,0,0,.15)}
@media (max-width:47.99rem){details.langs ul{right:auto;left:0}}
details.langs a{display:block;padding:.35rem 1rem;color:#242424;text-decoration:none}
details.langs a:hover{background:#eef7fb}
details.langs a[aria-current]{font-weight:700}
.btn.login{white-space:nowrap;padding:.45em .9em}
.btn{display:inline-block;background:var(--brand);color:#fff;border:0;border-radius:var(--radius);padding:.7em 1.2em;font:inherit;font-weight:600;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--brand-dk)}
.btn.alt{background:transparent;color:var(--fg);border:1px solid var(--line)}
header.site .btn.login{background:none;border:0;color:#ffe100;font-size:1.5rem;font-weight:800;text-shadow:#222 0 0 1px,#222 0 0 1px}
header.site .btn.login:hover{background:none;text-decoration:underline}
@media (max-width:47.99rem){header.site .wrap{gap:.5rem .75rem}header.site .btn.login{font-size:1.2rem;padding:.3em .2em}details.langs summary{padding:.4em .6em}}
.hero{padding:2rem 0 3rem}
.hero .panel{background:rgba(255,255,255,.9);border-radius:var(--radius);padding:1.25rem 1.25rem .75rem;max-width:44rem}
.hero h1{margin-top:0}
.hero p.lead{font-size:1.15rem;color:var(--muted);max-width:42rem}
form.search{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.25rem 0 .5rem;max-width:40rem}
form.search input{flex:1 1 14rem;min-width:0;padding:.7em .9em;font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--fg)}
form.search select{padding:.7em;font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--fg)}
.small{font-size:.9rem;color:var(--muted)}
.welcome{background:linear-gradient(90deg,#d8f1f8,#a9dae8,#d8f1f8);color:#242424;text-align:center}
.welcome ul{list-style:none;margin:0;padding:0;position:relative;height:5.5rem}
.welcome li{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;opacity:0;animation:wfade 40s infinite}
.w-word{font-size:clamp(1.6rem,5vw,2.2rem);font-weight:700;color:#0e6f8f}
.w-meta{font-size:.95rem;color:#3d4650}
/* Animation timing and @keyframes wfade are added by build.py (depends on how many greetings). */
@media (prefers-reduced-motion:reduce){.welcome ul{height:auto;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 2rem;padding:1rem 0}.welcome li{position:static;opacity:1;animation:none}.w-word{font-size:1.3rem}}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin:1.25rem 0}
.card{border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;background:var(--bg)}
.card h2,.card h3{margin-top:0}
.card ul{padding-left:1.2em;margin:.5em 0 1em}
.price{font-size:1.5rem;font-weight:700;margin:.25em 0}
.price small{font-size:.9rem;font-weight:400;color:var(--muted)}
.price .cond{display:block;margin-top:.2rem;font-size:.85rem;line-height:1.3}
header.site a:focus-visible{outline-color:#10232b}
@media print{.top{background:none}details.langs,.welcome,.skip,.menu-btn{display:none}[data-draft]{outline:0}[data-draft]::after{content:none}}
[data-draft]{outline:2px dashed #d4a72c;outline-offset:2px}
[data-draft]::after{content:" (draft)";font-size:.75rem;font-weight:400;color:#9a6700}
.note{border-left:4px solid var(--brand);background:var(--soft);padding:.75rem 1rem;border-radius:0 var(--radius) var(--radius) 0}
table{border-collapse:collapse;width:100%;margin:1rem 0;font-size:.95rem}
th,td{border-bottom:1px solid var(--line);text-align:left;padding:.5rem .4rem;vertical-align:top}
.scroll{overflow-x:auto}
details{border:1px solid var(--line);border-radius:var(--radius);padding:.6rem 1rem;margin:.5rem 0}
summary{cursor:pointer;font-weight:600}
main{padding-bottom:3rem}
footer.site{border-top:1px solid var(--line);background:var(--soft);padding:2rem 0;font-size:.92rem;color:var(--muted)}
footer.site .cols{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}
footer.site ul{list-style:none;padding:0;margin:0}
footer.site a{color:inherit}
footer.site address{font-style:normal;margin-bottom:.4em}
.crumbs{font-size:.88rem;color:var(--muted);margin-top:1rem}
.crumbs a{color:inherit}

/* Dated promo banner (shown by site.js between data-start and data-end) */
.promo{background:#fff4e5;border-top:3px solid #c8102e;border-bottom:3px solid #c8102e;padding:1rem 0}.promo p{margin:.4rem 0}.promo .btn{background:#c8102e}
.welcome li{animation-duration:50s}
.welcome li:nth-child(1){animation-delay:0s}
.welcome li:nth-child(2){animation-delay:5s}
.welcome li:nth-child(3){animation-delay:10s}
.welcome li:nth-child(4){animation-delay:15s}
.welcome li:nth-child(5){animation-delay:20s}
.welcome li:nth-child(6){animation-delay:25s}
.welcome li:nth-child(7){animation-delay:30s}
.welcome li:nth-child(8){animation-delay:35s}
.welcome li:nth-child(9){animation-delay:40s}
.welcome li:nth-child(10){animation-delay:45s}
@keyframes wfade{0%{opacity:0}2.50%,9.00%{opacity:1}11.00%,100%{opacity:0}}
