/* Shared foundations, components and page layouts. */
:root { color-scheme:dark; --bg:#0b0b0b; --fg:#e9e8e3; --muted:rgba(233,232,227,.48); --faint:rgba(233,232,227,.28); --line:rgba(233,232,227,.1); --font-label:11px; --font-small:13px; --font-body:15px; --font-heading:20px; }
:root[data-theme="light"] { color-scheme:light; --bg:#f3f2ed; --fg:#161616; --muted:rgba(22,22,22,.56); --faint:rgba(22,22,22,.34); --line:rgba(22,22,22,.12); }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
html { scrollbar-gutter:stable; }
html,body { min-height:100%; }
site-header,site-footer { display:block; }
body { margin:0; min-height:100svh; display:grid; grid-template-rows:auto 1fr auto; background:var(--bg); color:var(--fg); font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; -webkit-font-smoothing:antialiased; }
.site-header,.site-footer { width:min(1180px,100%); margin:auto; padding-left:clamp(20px,3.5vw,48px); padding-right:clamp(20px,3.5vw,48px); }
.site-header { display:flex; align-items:center; justify-content:space-between; gap:28px; padding-top:22px; }
.logo img { display:block; width:auto; height:38px; object-fit:contain; }
.menu { display:flex; align-items:center; gap:24px; }
.menu a,.auth-button,.auth-menu button,.site-footer a { color:var(--muted); font:700 var(--font-label)/1 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; letter-spacing:.13em; text-decoration:none; text-transform:uppercase; }
.menu a:hover,.menu a:focus-visible,.auth-button:hover,.auth-button:focus-visible,.auth-menu button:hover,.auth-menu button:focus-visible,.site-footer a:hover,.site-footer a:focus-visible { color:var(--fg); }
.auth-control { position:relative; }
.auth-button,.auth-menu button { padding:0; border:0; background:none; cursor:pointer; }
.auth-button:disabled { cursor:wait; opacity:.45; }
.auth-menu { position:absolute; z-index:10; top:calc(100% + 14px); right:0; min-width:130px; padding:8px 0; border:1px solid var(--line); background:var(--bg); }
.auth-menu[hidden] { display:none; }
.auth-menu a,.auth-menu button { display:block; width:100%; padding:10px 14px; text-align:left; white-space:nowrap; }
.auth-menu .admin-action-count { display:inline-grid; min-width:18px; height:18px; margin-left:7px; padding:0 5px; place-items:center; border:1px solid currentColor; border-radius:999px; font-size:9px; letter-spacing:0; line-height:1; }
.auth-menu .admin-action-count[hidden] { display:none; }
main { width:min(880px,100%); margin:0 auto; padding:clamp(70px,12vh,140px) clamp(20px,4vw,56px); }
.kicker { margin:0 0 18px; color:var(--faint); font-size:var(--font-label); font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
h1 { margin:0 0 18px; font-size:clamp(2.6rem,5vw,4.6rem); font-weight:500; line-height:1; letter-spacing:-.055em; }
.lead { max-width:610px; margin:0 0 16px; color:var(--muted); font-size:clamp(17px,2vw,21px); line-height:1.55; letter-spacing:-.015em; }
.updated { margin:0 0 clamp(65px,10vh,110px); color:var(--faint); font-size:var(--font-label); }
section { display:grid; grid-template-columns:minmax(140px,.42fr) 1fr; gap:24px 48px; margin:0; padding:30px 0; border-top:1px solid var(--line); }
section:last-of-type { border-bottom:1px solid var(--line); }
h2 { margin:2px 0 0; font-size:var(--font-body); font-weight:600; line-height:1.4; letter-spacing:-.01em; }
p,li { color:var(--muted); font-size:var(--font-body); line-height:1.75; }
p { margin:0 0 14px; }
ul { margin:0; padding-left:20px; }
main a { color:var(--fg); }
.contact-email { margin:24px 0 0; }
.opportunity-table-wrap { width:100%; overflow-x:auto; }
.opportunity-table { width:100%; border-collapse:collapse; text-align:left; }
.opportunity-table th { padding:0 14px 15px; border-bottom:1px solid var(--line); color:var(--faint); font-size:var(--font-label); font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.opportunity-table td { padding:24px 14px; border-bottom:1px solid var(--line); color:var(--muted); font-size:var(--font-body); line-height:1.5; vertical-align:top; }
.opportunity-table th:first-child,.opportunity-table td:first-child { padding-left:0; }
.opportunity-table th:last-child,.opportunity-table td:last-child { padding-right:0; text-align:right; }
.opportunity-table strong { color:var(--fg); font-weight:600; }
.opportunity-table a { padding:0; border:0; background:none; color:var(--fg); font-family:inherit; font-size:var(--font-small); font-weight:700; letter-spacing:.07em; text-decoration:none; text-transform:uppercase; cursor:pointer; }
.opportunity-table a:hover { color:var(--muted); }
.application-dialog { width:min(560px,calc(100% - 32px)); padding:32px; border:1px solid var(--line); background:var(--bg); color:var(--fg); }
.application-dialog::backdrop { background:rgba(0,0,0,.7); }
.application-dialog .dialog-close { position:absolute; top:16px; right:18px; padding:0; border:0; background:none; color:var(--muted); font-family:inherit; font-size:26px; font-weight:400; line-height:1; cursor:pointer; }
.application-dialog h2 { max-width:430px; margin:0 0 20px; font-size:var(--font-heading); }
.application-dialog p,.application-dialog li { font-size:var(--font-body); line-height:1.65; }
.application-dialog ul { margin:14px 0 20px; padding-left:20px; }
.dialog-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:14px 22px; margin-top:28px; }
.dialog-actions form { margin:0; }
.dialog-actions button,.dialog-actions a { padding:0; border:0; background:none; color:var(--muted); font-family:inherit; font-size:var(--font-small); font-weight:700; letter-spacing:.08em; text-decoration:none; text-transform:uppercase; cursor:pointer; }
.dialog-actions a { color:var(--fg); }
.dialog-actions button:hover,.dialog-actions a:hover { color:var(--fg); }
.profile-signed-out { padding:30px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.profile-signed-out h2 { margin-bottom:8px; }
.profile-form { display:grid; max-width:610px; gap:10px; }
.profile-form[hidden] { display:none; }
.profile-form label { margin-top:17px; color:var(--fg); font-size:var(--font-small); font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.profile-form input { width:100%; padding:13px 14px; border:1px solid var(--line); border-radius:0; outline:none; background:transparent; color:var(--fg); font:inherit; font-size:var(--font-body); }
.profile-form input:focus { border-color:var(--muted); }
.profile-form input[readonly] { color:var(--muted); background:var(--line); cursor:not-allowed; }
.mobile-fields { display:grid; grid-template-columns:130px 1fr; gap:14px; }
.mobile-fields > div { display:grid; gap:10px; }
.field-note { margin:0; color:var(--faint); font-size:var(--font-small); line-height:1.55; }
.profile-actions { display:flex; align-items:center; gap:18px; margin-top:22px; }
.profile-actions button { padding:12px 15px; border:1px solid var(--fg); background:var(--fg); color:var(--bg); font-family:inherit; font-size:var(--font-small); font-weight:700; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; }
.profile-actions button:disabled { cursor:wait; opacity:.5; }
.profile-status { margin:0; font-size:var(--font-small); }
.profile-status[data-type="success"] { color:#39a96b; }
.profile-status[data-type="error"] { color:#e05a5a; }
.project-browser { display:grid; grid-template-columns:180px 1fr; gap:24px 44px; }
.filters { position:sticky; top:28px; align-self:start; }
.filter-title,.result-count { margin:0 0 16px; color:var(--faint); font-size:var(--font-label); font-weight:700; letter-spacing:.13em; text-transform:uppercase; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.project-toolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; }
.project-toolbar .result-count { flex:0 0 auto; margin:0; }
.project-search { width:min(310px,100%); }
.project-search input { width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:0; outline:none; background:transparent; color:var(--fg); font:inherit; font-size:var(--font-small); }
.project-search input::placeholder { color:var(--faint); }
.project-search input:focus { border-color:var(--muted); }
.filters label { display:flex; align-items:center; gap:10px; margin:0 0 7px; padding:10px 11px; border:1px solid var(--line); color:var(--muted); font-size:var(--font-small); cursor:pointer; transition:border-color 160ms ease,color 160ms ease; }
.filters label:hover { border-color:var(--faint); color:var(--fg); }
.filters input { width:15px; height:15px; margin:0; accent-color:var(--fg); }
.opportunity-filter { display:flex; width:100%; align-items:center; gap:9px; margin:0 0 18px; padding:11px; border:1px solid var(--line); background:transparent; color:var(--muted); font-family:inherit; font-size:var(--font-label); font-weight:700; line-height:1.25; letter-spacing:.08em; text-align:left; text-transform:uppercase; cursor:pointer; }
.opportunity-filter:hover,.opportunity-filter[aria-pressed="true"] { border-color:var(--muted); color:var(--fg); }
.opportunity-filter[aria-pressed="true"] { background:var(--line); }
.opportunity-filter i { flex:0 0 auto; width:7px; height:7px; border-radius:50%; background:#39a96b; box-shadow:0 0 0 0 rgba(57,169,107,.55); animation:opportunity-pulse 1.8s ease-out infinite; }
.project-cards { display:grid; gap:12px; }
.project-card { position:relative; display:block; min-height:150px; padding:25px 24px; border:1px solid var(--line); color:var(--fg); text-decoration:none; transition:transform 180ms ease,border-color 180ms ease; }
.project-card:hover { transform:translateY(-2px); border-color:var(--faint); }
.project-card[hidden] { display:none; }
.project-card h2 { margin:0 0 9px; font-size:var(--font-heading); font-weight:600; }
.project-card.has-opportunity h2 { max-width:calc(100% - 150px); }
.project-card p { max-width:none; margin:0; font-size:var(--font-body); line-height:1.65; }
.tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:19px; }
.project-card .tags { padding-right:38px; }
.tags span { padding:4px 7px; background:var(--line); color:var(--muted); font-size:var(--font-label); font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.card-side { position:absolute; top:25px; right:24px; bottom:25px; display:flex; min-width:132px; align-items:flex-end; justify-content:space-between; flex-direction:column; pointer-events:none; }
.opportunity { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:var(--font-label); font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.opportunity i { width:7px; height:7px; border-radius:50%; background:#39a96b; box-shadow:0 0 0 0 rgba(57,169,107,.55); animation:opportunity-pulse 1.8s ease-out infinite; }
@keyframes opportunity-pulse { 0% { box-shadow:0 0 0 0 rgba(57,169,107,.55); } 70%,100% { box-shadow:0 0 0 7px rgba(57,169,107,0); } }
.arrow { margin-top:auto; color:var(--muted); font-size:20px; transition:transform 180ms ease; }
.project-card:hover .arrow { transform:translateX(4px); }
@media (prefers-reduced-motion:reduce) { .opportunity i,.opportunity-filter i { animation:none; } }
.pagination { display:flex; justify-content:flex-end; align-items:center; gap:6px; margin-top:24px; }
.pagination button { min-width:36px; height:36px; padding:0 10px; border:1px solid var(--line); background:transparent; color:var(--muted); font:inherit; font-size:var(--font-label); cursor:pointer; }
.pagination button:hover:not(:disabled),.pagination button[aria-current="page"] { border-color:var(--muted); color:var(--fg); }
.pagination button[aria-current="page"] { background:var(--line); font-weight:700; }
.pagination button:disabled { cursor:default; opacity:.3; }
.site-footer { display:grid; grid-template-columns:1fr auto; gap:24px 48px; align-items:start; padding-top:24px; padding-bottom:24px; border-top:1px solid var(--line); color:var(--faint); font-size:var(--font-label); line-height:1.65; letter-spacing:.09em; text-transform:uppercase; }
.site-footer address { max-width:54ch; font-style:normal; }
.legal { text-align:right; }
.legal p { margin:0; color:inherit; font-size:inherit; line-height:inherit; }
.legal-links,.theme-control { display:flex; align-items:center; gap:7px; margin-top:7px; }
.theme-control { justify-content:flex-end; color:var(--faint); }
.theme-choice { padding:0; border:0; background:none; color:inherit; font:inherit; letter-spacing:inherit; text-transform:inherit; cursor:pointer; }
.theme-choice[aria-pressed="true"] { color:var(--fg); font-weight:900; }
a:focus-visible,button:focus-visible { outline:1px solid var(--fg); outline-offset:6px; }
@media (max-width:650px) { .site-header{align-items:flex-start}.logo img{height:22px}.menu{max-width:240px;gap:12px 14px;flex-wrap:wrap;justify-content:flex-end}main{padding-top:80px}.updated{margin-bottom:50px}section{grid-template-columns:1fr;gap:12px;padding:25px 0}h2{font-size:var(--font-body)}.opportunity-table thead{display:none}.opportunity-table,.opportunity-table tbody,.opportunity-table tr,.opportunity-table td{display:block;width:100%}.opportunity-table tr{padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.opportunity-table td{display:grid;grid-template-columns:92px 1fr;gap:12px;padding:9px 0;border:0}.opportunity-table td::before{content:attr(data-label);color:var(--faint);font-size:var(--font-label);font-weight:700;letter-spacing:.12em;text-transform:uppercase}.opportunity-table th:last-child,.opportunity-table td:last-child{text-align:left}.project-browser{grid-template-columns:1fr}.filters{position:static;display:flex;overflow-x:auto;gap:7px;padding-bottom:4px}.filter-title{display:none}.filters label{flex:0 0 auto;margin:0}.project-toolbar{align-items:flex-start;flex-direction:column}.project-search{width:100%}.project-card{min-height:165px;padding:21px 18px}.card-side{min-width:56px}.pagination{justify-content:flex-start}.site-footer{grid-template-columns:1fr}.legal{text-align:left}.theme-control{justify-content:flex-start}.mobile-fields{grid-template-columns:110px 1fr}.profile-actions{align-items:flex-start;flex-direction:column} }
