/* The site header shared by every public page (markup: src/lib/header.js). Served as-is from /header.css so the
   map, the legal pages, the 404 page and the server-rendered News pages all load the exact same rules.
   The map page sizes its layout from --header, so the header owns that value. */
:root{--header:88px}
.header{--line:rgba(212, 212, 212,.14);--muted:#a5a5a5;--gold:#d9d9d9;height:var(--header);position:relative;z-index:20;padding:0 42px;display:flex;align-items:center;gap:38px;border-bottom:1px solid var(--line);background:linear-gradient(#18181870,transparent);color:#efefef;font:14px/normal 'DM Sans Variable','DM Sans',sans-serif}
.header *{box-sizing:border-box}
.header button,.header input{font:inherit}
.header button{cursor:pointer;color:inherit;border:0;background:none;padding:0;touch-action:manipulation}
.header a{color:inherit;text-decoration:none}.header a:hover{text-decoration:none}
.header :is(a,button){-webkit-tap-highlight-color:transparent}
.header :is(a,button,input){outline-offset:5px}
.header :is(a,button,input):focus-visible{outline:2px solid var(--gold)}
.header svg{width:20px;height:20px;flex-shrink:0}
.brand{padding:0;display:flex;align-items:center;gap:11px;font-family:'Manrope Variable',Manrope,sans-serif;font-weight:700;font-size:26px;letter-spacing:-1.1px;white-space:nowrap}
.brand-dot{color:var(--gold)}
.header nav{display:flex;gap:28px;height:100%;align-items:center;margin-left:16px}
.header nav>*{height:100%;display:flex;align-items:center;position:relative;padding:0;font-size:14px;color:var(--muted);white-space:nowrap}
.header nav>:hover,.header nav>:focus-visible,.header nav>.active{color:#efefef}
.header nav>.active:after{content:'';height:2px;background:var(--gold);position:absolute;bottom:-1px;left:0;right:0}
.header-tools{margin-left:auto;display:flex;align-items:center;gap:20px}
.search-form{display:contents}
.search-box{display:flex;align-items:center;gap:11px;border:1px solid #bdbdbd30;border-radius:28px;padding:11px 14px;width:294px;color:#c7c7c7;background:#1c1c1c50}
.search-box svg{width:18px;height:18px}
.search-box input{background:none;color:#efefef;width:100%;border:0;outline:0;font-size:13px;min-width:0}
.search-box input::placeholder{color:#acacac}
.search-box:focus-within{border-color:var(--gold)}
.search-shortcut{border:1px solid var(--line);border-radius:4px;font-size:12px;padding:0 5px;color:var(--muted)}
.icon-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#1f1f1fb0;transition:background .2s,color .2s}
.icon-button:hover{background:#3c3c3c;color:var(--gold)}
.header [hidden]{display:none!important}
.header .login-button,.header .dashboard-button{display:inline-flex;align-items:center;height:38px;padding:0 14px;border-radius:20px;font-size:13px;font-weight:500;color:#e2e2e2;white-space:nowrap}
.header .login-button:hover,.header .dashboard-button:hover{background:#ffffff14;color:#fff}
.header .account-links{display:inline-flex;align-items:center;gap:4px}
.header .dashboard-button{border:1px solid #d9d9d980;color:var(--gold)}
.header .logout-link{font-size:13px;color:var(--muted);padding:0 8px;white-space:nowrap}
.header .logout-link:hover{color:#fff}
@media(min-width:1600px){:root{--header:100px}.header{padding-left:60px;padding-right:60px}}
@media(max-width:1150px){.header{padding:0 26px;gap:20px}.header nav{margin-left:0;gap:19px}.header-tools{gap:10px}.search-box{width:250px}.brand{font-size:23px}}
/* "Development" menu: a <details> dropdown holding Activities and Programs. */
.header .nav-group summary{height:100%;display:flex;align-items:center;gap:3px;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent}
.header .nav-group summary::-webkit-details-marker{display:none}
.header .nav-group summary svg{width:15px;height:15px;transition:transform .2s}
.header .nav-group[open] summary svg{transform:rotate(180deg)}
.header nav>.nav-group[open],.header nav>.nav-group:has(.active){color:#efefef}
.header nav>.nav-group:has(.active):after{content:'';height:2px;background:var(--gold);position:absolute;bottom:-1px;left:0;right:0}
.header .nav-menu{position:absolute;top:calc(100% + 1px);left:-14px;z-index:40;min-width:240px;padding:6px;display:flex;flex-direction:column;background:#232323;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 34px #0009}
.header .nav-menu .nav-cat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:9px 12px;border-radius:7px;text-align:left;color:#efefef;font-size:14px;white-space:normal}
.header .nav-menu .nav-cat small{color:var(--muted);font-size:12px}
.header .nav-menu .nav-cat:hover,.header .nav-menu .nav-cat:focus-visible,.header .nav-menu .nav-cat.active{background:#2f2f2f}
.header .nav-menu .nav-cat:focus-visible{outline-offset:-2px}
/* Narrow screens: the nav becomes a second header row. */
@media(max-width:1080px){:root{--header:120px}.header{flex-wrap:wrap;align-content:flex-start;row-gap:0}.brand,.header-tools{height:76px}.header-tools{gap:5px}.header nav{order:3;width:100%;height:44px;margin:0;gap:22px}.header nav>*{flex:none;font-size:13px}}
/* Phones: search collapses to its icon and opens across the header when focused. */
@media(max-width:620px){:root{--header:115px}.header{padding:0 18px;gap:8px}.brand,.header-tools{height:71px}.brand{font-size:23px;gap:9px}.header-tools{gap:0}.header nav{gap:14px}.header nav>*{font-size:12.5px}.about-button{display:none}.search-box{width:36px;height:36px;padding:8px;border-color:transparent;background:none;cursor:text}.search-box svg{width:20px;height:20px}.search-shortcut{display:none}.search-box input{display:block;position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.search-box:focus-within{position:absolute;left:18px;right:18px;width:auto;background:#2c2c2c;border-color:var(--gold);z-index:30}.search-box:focus-within input{position:static;width:100%;height:auto;opacity:1;pointer-events:auto;font-size:14px}.header-tools:has(.search-box:not(:focus-within)){margin-left:auto}}
.header .contribute-button{display:inline-flex;align-items:center;height:38px;padding:0 16px;border:1px solid #d9d9d980;border-radius:20px;color:var(--gold);font-size:13px;font-weight:500;white-space:nowrap;transition:background .2s,color .2s}
.header .contribute-button:hover,.header .contribute-button:focus-visible{background:var(--gold);color:#232323}
@media(max-width:620px){.header .contribute-button{height:32px;padding:0 11px;font-size:12px;margin-right:4px}.header-tools:has(.search-box:focus-within) .contribute-button{visibility:hidden}}
/* Laptop and tablet widths: leave room for the full menu and the contributor button. */
@media(max-width:1360px) and (min-width:1081px){.search-box{width:210px}}
@media(max-width:1150px) and (min-width:1081px){.search-box{width:170px}.search-shortcut{display:none}}
@media(max-width:380px){.header nav{gap:10px}.header nav>*{font-size:12px}}
/* Phones: six menu items fit once "The island" (the logo goes there too) and "Civic" are dropped. */
@media(max-width:620px){.header .nav-long,.header nav>.nav-map{display:none}}
@media(max-width:620px){.header .login-button,.header .dashboard-button{height:32px;padding:0 9px;font-size:12px}.header .dashboard-button{border:0}.header .logout-link{font-size:12px;padding:0 4px}.header-tools:has(.search-box:focus-within) :is(.login-button,.account-links){visibility:hidden}}
/* Phones: seven menu items; the row scrolls sideways (the Development dropdown is pinned by bindNavMenus). */
@media(max-width:620px){.header nav{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:18px}.header nav::-webkit-scrollbar{display:none}.header nav>*{flex:none}}
/* Laptops (1081–1500px): seven menu items leave no room for the search box, so it is a magnifier that opens over the header when clicked. */
@media(min-width:1081px) and (max-width:1500px){.search-box{width:38px;height:38px;padding:9px;border-color:transparent;background:none;cursor:text}.search-shortcut{display:none}.search-box input{display:block;position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.search-box:focus-within{position:absolute;right:26px;top:50%;transform:translateY(-50%);width:min(460px,50vw);height:44px;background:#2c2c2c;border-color:var(--gold);z-index:30}.search-box:focus-within input{position:static;width:100%;height:auto;opacity:1;pointer-events:auto;font-size:14px}}
