/* Shared structural base. Each site's theme.css defines the variables and its own look. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);font-size:var(--fs-body,1rem);line-height:1.65;color:var(--ink);background:var(--bg)}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--link,var(--brand))}a:hover{text-decoration-thickness:2px}
h1,h2,h3,h4{font-family:var(--font-head);line-height:1.2;color:var(--ink-strong,var(--ink));margin:0 0 .5em}
p{margin:0 0 1em}
.container{width:min(100% - 2.5rem, var(--max,1180px));margin-inline:auto}
.skip-link{position:absolute;left:-999px;top:0;z-index:100;background:#000;color:#fff;padding:.6rem 1rem}.skip-link:focus{left:1rem;top:1rem}
:focus-visible{outline:3px solid var(--focus,#2563eb);outline-offset:2px}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.icon{width:1.25em;height:1.25em;flex:none}.icon--lg{width:2.2rem;height:2.2rem}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.8em 1.4em;border-radius:var(--radius-btn,8px);font-weight:700;text-decoration:none;border:2px solid transparent;cursor:pointer;font:inherit;font-weight:700;line-height:1.2;transition:transform .15s ease,background-color .15s ease,box-shadow .15s ease}
.btn:hover{transform:translateY(-1px)}.btn--lg{padding:1em 1.8em;font-size:1.05rem}.btn--block{width:100%;margin-top:.6rem}
.btn--primary{background:var(--accent);color:var(--on-accent,#fff)}.btn--primary:hover{background:var(--accent-dark,var(--accent))}
.btn--ghost{border-color:currentColor;color:inherit;background:transparent}
/* layout */
.section{padding-block:clamp(3rem,6vw,5.5rem)}.section--alt{background:var(--bg-alt)}
.section-title{font-size:clamp(1.6rem,3vw,2.3rem);margin-bottom:1.4rem}
.grid{display:grid;gap:clamp(1rem,2.5vw,1.75rem)}.grid--2{grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr))}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr))}.grid--4{grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}
.split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:start}
@media (max-width:860px){.split{grid-template-columns:1fr}}
.prose{max-width:46rem}.prose--narrow{margin-inline:auto}.prose h2{margin-top:1.6em}
.lead{font-size:clamp(1.05rem,1.6vw,1.25rem);max-width:44rem}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.8rem;font-weight:700;color:var(--eyebrow,var(--accent));margin-bottom:.6rem}
/* cards & panels */
.card{background:var(--card,#fff);border-radius:var(--radius,12px);padding:1.5rem;border:1px solid var(--line);display:flex;flex-direction:column;gap:.4rem}
.card h2,.card h3{font-size:1.2rem;margin:.4rem 0}.card p{margin:0}.card__title a{color:inherit;text-decoration:none}.card__title a:hover{text-decoration:underline}
.card__icon{color:var(--accent)}.card--project{padding:0;overflow:hidden}.card__media{position:relative;display:block;aspect-ratio:3/2;background:var(--bg-alt)}
.card__media img{width:100%;height:100%;object-fit:cover}.card__body{padding:1.25rem 1.4rem 1.5rem;display:flex;flex-direction:column;gap:.35rem}
.card__meta{font-size:.85rem;color:var(--muted);margin:0}
.badge{position:absolute;top:.75rem;left:.75rem;background:rgba(0,0,0,.72);color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.25rem .6rem;border-radius:99px}
.panel{background:var(--panel,var(--bg-alt));border-radius:var(--radius,12px);padding:1.6rem;border:1px solid var(--line)}
.panel h3{font-size:1.15rem}.panel h3:not(:first-child),.panel h4{margin-top:1.4rem}.panel--sticky{position:sticky;top:6rem}
.link-arrow{display:inline-flex;align-items:center;gap:.35em;font-weight:700;text-decoration:none;margin-top:auto;padding-top:.6rem}
.checklist{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.6rem}.checklist li{display:flex;gap:.6rem;align-items:flex-start}
.checklist .icon{color:var(--accent);margin-top:.2em}.checklist--cols{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}
.plain-links{list-style:none;padding:0;margin:0;display:grid;gap:.35rem}
.facts{display:grid;gap:.7rem;margin:1rem 0}.facts div{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px dashed var(--line);padding-bottom:.5rem}
.facts dt{font-weight:700}.facts dd{margin:0;text-align:right}
.tag-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.tag-list li{background:var(--chip-bg,var(--bg));border:1px solid var(--line);border-radius:99px;padding:.3rem .8rem;font-size:.9rem}
.steps{padding-left:1.2rem;display:grid;gap:.5rem}
.notice{display:flex;gap:.8rem;align-items:flex-start;background:var(--notice-bg,#fff8e1);border:1px solid var(--notice-line,#f3d27a);color:var(--notice-ink,#5b4300);border-radius:10px;padding:.9rem 1.1rem;margin-bottom:1.6rem}
.notice p{margin:0}.notice .icon{margin-top:.15em}
.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}
.chip{border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);padding:.45rem 1rem;border-radius:99px;font:inherit;font-weight:600;cursor:pointer}
.chip.is-active,.chip:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent,#fff)}
.is-hidden{display:none!important}
.project-hero{border-radius:var(--radius,12px);margin-bottom:1.5rem;width:100%}
/* contact list */
.contact-list{list-style:none;padding:0;margin:0;display:grid;gap:1rem}.contact-list li{display:flex;gap:.8rem}.contact-list .icon{color:var(--accent);margin-top:.25em}
.contact-list div{display:flex;flex-direction:column}.contact-list span{color:var(--muted)}
/* forms */
.form-card{background:var(--card,#fff);border:1px solid var(--line);border-radius:var(--radius,12px);padding:clamp(1.25rem,3vw,2rem)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.2rem}@media (max-width:640px){.form-grid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:.35rem}.field--wide{grid-column:1/-1}
.field label,.field legend{font-weight:700;font-size:.95rem}.req{color:var(--danger,#b42318)}
.field input,.field select,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--input-bg,#fff);border:1.5px solid var(--input-line,var(--line));border-radius:var(--radius-input,8px);padding:.7rem .85rem}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--ring,rgba(37,99,235,.2))}
.field--error input,.field--error select,.field--error textarea{border-color:var(--danger,#b42318)}
.error-text{color:var(--danger,#b42318);font-weight:600}.help{color:var(--muted)}
fieldset{border:0;padding:0;margin:0}.radio-row{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:.3rem}.radio{display:flex;gap:.4rem;align-items:center;font-weight:500}
.radio input{width:auto}
.form-note{font-size:.88rem;color:var(--muted);margin:1.2rem 0}
.alert{padding:1rem 1.2rem;border-radius:10px;margin-bottom:1.2rem;font-weight:600}.alert--success{background:#e7f6ec;color:#14532d;border:1px solid #9ad5ae}
.alert--error{background:#fdecec;color:#7f1d1d;border:1px solid #f1a9a9}.alert--info{background:#e8f1fd;color:#123e74;border:1px solid #a9c7f1}
/* cta band */
.cta-band{background:var(--cta-bg,var(--brand));color:var(--cta-ink,#fff);padding-block:clamp(2.5rem,5vw,4rem)}
.cta-band h2{color:inherit;margin-bottom:.3rem}.cta-band p{margin:0;opacity:.9}
.cta-band__inner{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:center;justify-content:space-between}.cta-band__actions{display:flex;flex-wrap:wrap;gap:.75rem}
/* nav toggle (JS adds .is-open) */
.nav-toggle{display:none;background:none;border:0;color:inherit;padding:.5rem;cursor:pointer}
@media (max-width:900px){.nav-toggle{display:inline-flex}.site-nav{display:none}.site-nav.is-open{display:block}}
.error-page{min-height:50vh}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
