:root{
–black:#1A1A18;
–black-2:#211F1B;
–black-3:#2A2824;
–green:#3D6B3A;
–green-lt:#8FCB88;
–green-dk:#26401F;
–off:#F2F0EB;
–stone:#E4E0D6;
–stone-2:#D8D5CC;
–paper:#FBFAF7;
–text:#1A1A18;
–text-mid:#4A483F;
–text-faint:#847F72;
–cream:#F7F5F0;
–cream-60:rgba(247,245,240,.6);
–cream-40:rgba(247,245,240,.4);
–cream-25:rgba(247,245,240,.25);
–cream-12:rgba(247,245,240,.12);
–cream-08:rgba(247,245,240,.08);
–max:1180px;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
html{scroll-behavior:auto;}
*{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
}
body{
font-family:’Inter’,-apple-system,BlinkMacSystemFont,sans-serif;
background:var(–paper);
color:var(–text);
line-height:1.5;
-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:’Fraunces’,Georgia,serif;font-weight:500;letter-spacing:-.01em;}
em{font-style:italic;}
a{color:inherit;}
.fsb-wrap{max-width:var(–max);margin:0 auto;padding:0 32px;}
.fsb-eyebrow{
font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
display:flex;align-items:center;gap:10px;
}
.fsb-eyebrow .fsb-rule{width:28px;height:1px;background:currentColor;opacity:.5;display:inline-block;}
section{position:relative;}
.sec-pad{padding:112px 0;}
@media (max-width:760px){.sec-pad{padding:76px 0;}}
/* ———- Buttons ———- */
.fsb-btn{
display:inline-flex;align-items:center;gap:8px;
font-size:14px;font-weight:600;letter-spacing:.01em;
padding:14px 26px;border-radius:2px;text-decoration:none;
transition:transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
cursor:pointer;
}
.fsb-btn:hover{transform:translateY(-1px);}
.fsb-btn-primary{background:var(–green-lt);color:var(–black);}
.fsb-btn-primary:hover{background:#a4d89e;}
.fsb-btn-outline-dark{border:1px solid var(–cream-25);color:var(–cream);background:transparent;}
.fsb-btn-outline-dark:hover{border-color:var(–green-lt);color:var(–green-lt);}
.fsb-btn-outline-light{border:1px solid rgba(26,26,24,.2);color:var(–text);background:transparent;}
.fsb-btn-outline-light:hover{border-color:var(–green);color:var(–green);}
.fsb-btn-arrow{transition:transform .18s ease;}
.fsb-btn:hover .fsb-btn-arrow{transform:translateX(3px);}
/* ———- Nav ———- */
header{
position:fixed;top:0;left:0;right:0;z-index:100;
background:rgba(26,26,24,.88);backdrop-filter:blur(10px);
border-bottom:1px solid var(–cream-08);
}
nav.fsb-wrap{display:flex;align-items:center;justify-content:space-between;height:76px;}
.fsb-brand{display:flex;align-items:center;gap:12px;text-decoration:none;}
.fsb-brand-mark{flex-shrink:0;}
.fsb-brand-text{display:flex;flex-direction:column;line-height:1.15;}
.fsb-brand-name{font-family:’Fraunces’,serif;font-size:18px;color:var(–cream);letter-spacing:-.01em;}
.fsb-brand-name .fsb-accent{color:var(–green-lt);}
.fsb-brand-sub{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(–cream-40);margin-top:2px;}
.fsb-nav-links{display:flex;align-items:center;gap:34px;}
.fsb-nav-links a{font-size:13px;color:var(–cream-60);text-decoration:none;letter-spacing:.02em;transition:color .15s;}
.fsb-nav-links a:hover{color:var(–cream);}
.fsb-nav-cta{display:flex;align-items:center;gap:20px;}
.fsb-nav-cta .fsb-btn{padding:10px 20px;font-size:13px;}
.fsb-menu-btn{display:none;background:none;border:none;color:var(–cream);cursor:pointer;padding:8px;}
@media (max-width:900px){
.fsb-nav-links{display:none;}
.fsb-nav-cta .fsb-btn-outline-dark{display:none;}
.fsb-menu-btn{display:block;}
}
.fsb-mobile-menu{
display:none;flex-direction:column;gap:0;background:var(–black-2);
border-bottom:1px solid var(–cream-08);
}
.fsb-mobile-menu.fsb-open{display:flex;}
.fsb-mobile-menu a{
padding:16px 32px;font-size:14px;color:var(–cream-60);text-decoration:none;
border-top:1px solid var(–cream-08);
}
/* ———- Hero ———- */
.fsb-hero{
background:var(–black);color:var(–cream);
padding:180px 0 96px;
position:relative;overflow:hidden;
}
.fsb-hero::before{
content:””;position:absolute;inset:0;pointer-events:none;
background-image:repeating-linear-gradient(115deg, rgba(255,255,255,.025) 0px, rgba(255,255,255,.025) 1px, transparent 1px, transparent 64px);
opacity:.9;
}
.fsb-hero-inner{position:relative;z-index:1;}
.fsb-hero .fsb-eyebrow{color:var(–green-lt);margin-bottom:28px;}
.fsb-hero h1{
font-size:clamp(38px,5.6vw,68px);line-height:1.06;max-width:920px;color:var(–cream);
}
.fsb-hero h1 em{color:var(–green-lt);display:block;font-size:.72em;margin-top:.2em;}
.fsb-hero-sub{
max-width:600px;margin-top:30px;font-size:17px;line-height:1.65;color:var(–cream-60);
}
.fsb-hero-ctas{display:flex;gap:16px;margin-top:44px;flex-wrap:wrap;}
.fsb-hero-stats{
display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:88px;
border-top:1px solid var(–cream-08);padding-top:34px;max-width:900px;
}
.fsb-hero-stat-num{font-family:’Fraunces’,serif;font-size:28px;color:var(–green-lt);}
.fsb-hero-stat-label{font-size:12px;color:var(–cream-40);margin-top:6px;letter-spacing:.03em;}
@media (max-width:700px){
.fsb-hero{padding:150px 0 64px;}
.fsb-hero-stats{grid-template-columns:1fr;gap:22px;}
}
/* ———- Truth band ———- */
.fsb-truth{background:var(–off);padding:120px 0;}
.fsb-truth .fsb-eyebrow{color:var(–green);margin-bottom:32px;justify-content:center;}
.fsb-truth blockquote{
font-family:’Fraunces’,serif;font-style:italic;font-weight:500;
font-size:clamp(24px,3.6vw,42px);line-height:1.32;text-align:center;
max-width:880px;margin:0 auto;color:var(–text);
}
.fsb-truth-sub{
max-width:620px;margin:34px auto 0;text-align:center;font-size:15.5px;color:var(–text-mid);line-height:1.7;
}
@media (max-width:700px){.fsb-truth{padding:80px 0;}}
/* ———- Founder ———- */
.fsb-founder{background:var(–off);padding:112px 0;}
.fsb-founder .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-founder-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:start;}
.fsb-founder-photo{
aspect-ratio:4/5;background:var(–black);border:1px solid var(–stone-2);
display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
}
.fsb-founder-photo::before{
content:””;position:absolute;inset:0;
background-image:repeating-linear-gradient(115deg, rgba(255,255,255,.03) 0px, rgba(255,255,255,.03) 1px, transparent 1px, transparent 64px);
}
.fsb-founder-initials{font-family:’Fraunces’,serif;font-size:64px;color:var(–green-lt);letter-spacing:.02em;position:relative;z-index:1;}
.fsb-founder-photo-cap{
position:absolute;bottom:0;left:0;right:0;padding:18px 22px;
background:linear-gradient(to top, rgba(0,0,0,.75), transparent);
font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(–cream-60);
}
.fsb-founder-name{font-size:26px;color:var(–text);margin-bottom:6px;}
.fsb-founder-title{font-size:13px;color:var(–text-faint);letter-spacing:.04em;text-transform:uppercase;margin-bottom:24px;}
.fsb-founder-bio{font-size:15px;color:var(–text-mid);line-height:1.75;max-width:560px;margin-bottom:36px;}
.fsb-founder-stats{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px;border-top:1px solid var(–stone-2);padding-top:28px;}
.fsb-founder-stat{}
.fsb-founder-stat-num{font-family:’Fraunces’,serif;font-size:22px;color:var(–green);}
.fsb-founder-stat-label{font-size:13px;color:var(–text-mid);margin-top:6px;line-height:1.5;}
.fsb-founder-stat-wide{
text-align:center;margin-top:28px;padding-top:28px;
border-top:1px solid var(–stone-2);
}
@media (max-width:800px){
.fsb-founder-grid{grid-template-columns:1fr;gap:36px;}
.fsb-founder-photo{max-width:280px;}
.fsb-founder-stats{grid-template-columns:1fr 1fr;}
}
/* ———- Personas ———- */
.fsb-personas{background:var(–black);color:var(–cream);padding:112px 0;}
.fsb-sec-head{max-width:640px;margin-bottom:56px;}
.fsb-personas .fsb-eyebrow{color:var(–green-lt);margin-bottom:20px;}
.fsb-personas .fsb-sec-head h2{color:var(–cream);}
.fsb-sec-head h2{font-size:clamp(28px,3.4vw,40px);color:var(–text);line-height:1.2;}
.fsb-personas .fsb-sec-head p{color:var(–cream-60);margin-top:16px;font-size:15.5px;line-height:1.7;}
.fsb-persona-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:44px;}
.fsb-persona-card{position:relative;padding-top:8px;}
.fsb-persona-card:nth-child(2){margin-top:36px;}
.fsb-persona-card:nth-child(3){margin-top:12px;}
.fsb-persona-num{
font-family:’Fraunces’,serif;font-size:64px;line-height:1;color:var(–cream-08);
position:absolute;top:-6px;right:0;pointer-events:none;
}
.fsb-persona-tag{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(–green-lt);margin-bottom:16px;}
.fsb-persona-card h3{font-size:19px;color:var(–cream);line-height:1.3;margin-bottom:16px;}
.fsb-persona-card p{font-size:14px;color:var(–cream-40);line-height:1.65;}
@media (max-width:900px){
.fsb-persona-grid{grid-template-columns:1fr;gap:40px;}
.fsb-persona-card:nth-child(2), .fsb-persona-card:nth-child(3){margin-top:0;}
}
/* ———- What we do ———- */
.fsb-whatwedo{background:var(–paper);padding:112px 0;}
.fsb-whatwedo .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-whatwedo .fsb-sec-head p{color:var(–text-mid);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-whatwedo .fsb-sec-head{max-width:700px;}
.fsb-scope-list{border-top:1px solid var(–stone-2);}
.fsb-scope-item{
display:grid;grid-template-columns:160px 1fr;gap:32px;
padding:32px 0;border-bottom:1px solid var(–stone-2);
align-items:start;
}
.fsb-scope-mark{display:flex;align-items:flex-end;gap:3px;height:26px;}
.fsb-scope-mark i{display:block;width:4px;background:var(–green);border-radius:1px;}
.fsb-scope-item h3{font-size:19px;color:var(–text);}
.fsb-scope-item p{font-size:14.5px;color:var(–text-mid);margin-top:8px;line-height:1.7;max-width:560px;}
@media (max-width:700px){
.fsb-scope-item{grid-template-columns:1fr;gap:14px;}
}
/* ———- Gallery / Carousel ———- */
.fsb-gallery{background:var(–paper);padding:112px 0 96px;}
.fsb-gallery .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-gallery .fsb-sec-head p{color:var(–text-mid);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-gallery-outer{position:relative;}
.fsb-carousel{
display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;
padding:6px 4px 28px;margin:0 -4px;
scrollbar-width:thin;scrollbar-color:var(–stone-2) transparent;
-webkit-overflow-scrolling:touch;
}
.fsb-carousel::-webkit-scrollbar{height:6px;}
.fsb-carousel::-webkit-scrollbar-thumb{background:var(–stone-2);border-radius:3px;}
.fsb-slide{
flex:0 0 auto;width:340px;scroll-snap-align:start;
}
.fsb-slide-frame{
aspect-ratio:4/3;background:var(–black);border:1px solid var(–stone-2);
display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
}
.fsb-slide-frame::before{
content:””;position:absolute;inset:0;
background-image:repeating-linear-gradient(115deg, rgba(255,255,255,.03) 0px, rgba(255,255,255,.03) 1px, transparent 1px, transparent 64px);
}
.fsb-slide-frame-label{
position:relative;z-index:1;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
color:var(–cream-40);border:1px solid var(–cream-12);padding:8px 14px;border-radius:2px;
}
.fsb-slide-cap{margin-top:14px;font-size:13.5px;color:var(–text-mid);}
.fsb-slide-cap strong{color:var(–text);font-weight:600;}
.fsb-car-controls{display:flex;align-items:center;justify-content:space-between;margin-top:8px;}
.fsb-car-dots{display:flex;gap:8px;}
.fsb-car-dot{width:7px;height:7px;border-radius:50%;background:var(–stone-2);border:none;padding:0;cursor:pointer;transition:background .2s;}
.fsb-car-dot.fsb-active{background:var(–green);}
.fsb-car-btns{display:flex;gap:10px;}
.fsb-car-btn{
width:40px;height:40px;border-radius:50%;border:1px solid var(–stone-2);background:var(–paper);
display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s, background .2s;
color:var(–text);
}
.fsb-car-btn:hover{border-color:var(–green);background:var(–off);}
.fsb-gallery-note{margin-top:36px;font-size:12.5px;color:var(–text-faint);border-top:1px solid var(–stone-2);padding-top:20px;}
@media (max-width:640px){
.fsb-slide{width:82vw;}
}
/* ———- Industries ———- */
.fsb-industries{background:var(–black);color:var(–cream);padding:112px 0;}
.fsb-industries .fsb-eyebrow{color:var(–green-lt);margin-bottom:20px;}
.fsb-industries .fsb-sec-head h2{color:var(–cream);}
.fsb-industries .fsb-sec-head p{color:var(–cream-60);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-ind-list{border-top:1px solid var(–cream-08);}
.fsb-ind-row{
display:grid;grid-template-columns:120px 1fr 1.4fr;gap:32px;
padding:38px 0;border-bottom:1px solid var(–cream-08);align-items:baseline;
}
.fsb-ind-row-num{font-family:’Fraunces’,serif;font-size:34px;color:var(–cream-12);}
.fsb-ind-num{font-size:11px;color:var(–green-lt);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;}
.fsb-ind-row h3{font-size:20px;color:var(–cream);line-height:1.35;}
.fsb-ind-row p{font-size:14px;color:var(–cream-40);line-height:1.7;}
@media (max-width:800px){
.fsb-ind-row{grid-template-columns:1fr;gap:10px;padding:28px 0;}
.fsb-ind-row-num{display:none;}
}
/* ———- What actually goes wrong ———- */
.fsb-whatgoeswrong{background:var(–paper);padding:112px 0;}
.fsb-whatgoeswrong .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-whatgoeswrong .fsb-sec-head p{color:var(–text-mid);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-whatgoeswrong .fsb-sec-head{max-width:680px;}
.fsb-wrong-list{display:grid;grid-template-columns:1fr 1fr;gap:0 48px;border-top:1px solid var(–stone-2);}
.fsb-wrong-row{display:flex;gap:20px;align-items:flex-start;padding:28px 0;border-bottom:1px solid var(–stone-2);}
.fsb-wrong-row .fsb-icon-circle{width:40px;height:40px;margin-bottom:0;}
.fsb-wrong-row .fsb-icon-circle svg{width:18px;height:18px;}
.fsb-wrong-row h4{font-family:’Inter’;font-size:15.5px;font-weight:600;color:var(–text);margin-bottom:6px;}
.fsb-wrong-row p{font-size:14px;color:var(–text-mid);line-height:1.65;}
@media (max-width:800px){.fsb-wrong-list{grid-template-columns:1fr;}}
/* ———- Why us ———- */
.fsb-whyus{background:var(–off);padding:112px 0;}
.fsb-whyus .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-whyus .fsb-sec-head p{color:var(–text-mid);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-whyus-split{display:grid;grid-template-columns:.85fr 1.3fr;gap:64px;margin-bottom:80px;align-items:start;}
.fsb-whyus-intro{position:sticky;top:110px;}
.fsb-whyus-intro .fsb-sec-head{margin-bottom:0;}
.fsb-diff-list{border-top:1px solid var(–stone-2);}
.fsb-diff-row{
display:flex;gap:20px;align-items:flex-start;
padding:26px 0;border-bottom:1px solid var(–stone-2);
}
.fsb-diff-row .fsb-icon-circle{width:40px;height:40px;margin-bottom:0;}
.fsb-diff-row .fsb-icon-circle svg{width:18px;height:18px;}
.fsb-diff-row h4{font-family:’Inter’;font-size:15.5px;font-weight:600;color:var(–text);margin-bottom:6px;}
.fsb-diff-row p{font-size:14px;color:var(–text-mid);line-height:1.65;}
@media (max-width:850px){
.fsb-whyus-split{grid-template-columns:1fr;gap:36px;}
.fsb-whyus-intro{position:static;}
}
.fsb-compare-wrap{overflow-x:auto;border:1px solid var(–stone-2);background:var(–paper);}
table.fsb-compare{width:100%;border-collapse:collapse;min-width:640px;}
table.fsb-compare th{
text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
color:var(–text-faint);padding:18px 24px;border-bottom:1px solid var(–stone-2);font-weight:600;
}
table.fsb-compare td{
padding:22px 24px;font-size:13.5px;color:var(–text-mid);border-bottom:1px solid var(–stone-2);
vertical-align:top;line-height:1.6;
}
table.fsb-compare tr:last-child td{border-bottom:none;}
table.fsb-compare td:first-child, table.fsb-compare th:first-child{
font-weight:600;color:var(–text);width:190px;white-space:nowrap;
}
table.fsb-compare tr.fsb-highlight td{background:var(–green-dk);color:var(–cream-60);}
table.fsb-compare tr.fsb-highlight td:first-child{color:var(–green-lt);}
/* ———- Service styles ———- */
.fsb-styles{background:var(–black);color:var(–cream);padding:112px 0;}
.fsb-styles .fsb-eyebrow{color:var(–green-lt);margin-bottom:20px;}
.fsb-styles .fsb-sec-head h2{color:var(–cream);}
.fsb-styles .fsb-sec-head p{color:var(–cream-60);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-style-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px 40px;align-items:start;position:relative;}
.fsb-style-card{padding:0;display:flex;flex-direction:column;position:relative;}
.fsb-style-connector{
display:none;position:absolute;top:26px;left:100%;width:40px;height:1px;
background:var(–cream-12);
}
.fsb-style-card:not(:last-child) .fsb-style-connector{display:block;}
.fsb-style-card h3{font-size:19px;color:var(–cream);margin-bottom:12px;line-height:1.35;}
.fsb-style-card p{font-size:14px;color:var(–cream-40);line-height:1.7;flex:1;}
@media (max-width:900px){
.fsb-style-grid{grid-template-columns:1fr;gap:36px;}
.fsb-style-connector{display:none !important;}
}
/* ———- Footprint ———- */
.fsb-footprint{background:var(–paper);padding:100px 0;}
.fsb-fp-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center;}
.fsb-fp-grid .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-fp-grid h2{font-size:clamp(26px,3vw,34px);line-height:1.25;max-width:520px;}
.fsb-fp-grid p{margin-top:18px;font-size:15px;color:var(–text-mid);line-height:1.75;max-width:520px;}
.fsb-fp-markets{display:flex;flex-direction:column;gap:0;}
.fsb-fp-market{
display:flex;justify-content:space-between;align-items:center;
padding:20px 0;border-bottom:1px solid var(–stone-2);
}
.fsb-fp-market:first-child{border-top:1px solid var(–stone-2);}
.fsb-fp-market-name{font-family:’Fraunces’,serif;font-size:19px;}
.fsb-fp-market-tag{font-size:11px;color:var(–text-faint);letter-spacing:.05em;text-transform:uppercase;}
@media (max-width:800px){.fsb-fp-grid{grid-template-columns:1fr;}}
/* ———- CTA / Contact form ———- */
.fsb-cta{background:var(–green-dk);color:var(–cream);padding:96px 0;}
.fsb-cta-head{text-align:center;max-width:700px;margin:0 auto 56px;}
.fsb-cta-head h2{font-size:clamp(28px,4vw,44px);line-height:1.25;}
.fsb-cta-head p{margin-top:18px;color:var(–cream-60);font-size:15.5px;}
.fsb-contact-form{max-width:680px;margin:0 auto;}
.fsb-form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.fsb-field{margin-bottom:20px;display:flex;flex-direction:column;gap:8px;}
.fsb-field label{font-size:12px;letter-spacing:.04em;color:var(–cream-60);text-transform:uppercase;}
.fsb-field input, .fsb-field select, .fsb-field textarea{
background:rgba(255,255,255,.06);border:1px solid var(–cream-12);
color:var(–cream);font-family:’Inter’;font-size:14.5px;
padding:13px 14px;border-radius:2px;outline:none;
transition:border-color .15s ease, background .15s ease;
}
.fsb-field select{cursor:pointer;}
.fsb-field select option{background:var(–green-dk);color:var(–cream);}
.fsb-field input:focus, .fsb-field select:focus, .fsb-field textarea:focus{
border-color:var(–green-lt);background:rgba(255,255,255,.1);
}
.fsb-field textarea{resize:vertical;min-height:110px;font-family:’Inter’;}
.fsb-form-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-top:8px;}
.fsb-form-note{font-size:12.5px;color:var(–cream-40);}
.fsb-form-status{font-size:13.5px;color:var(–green-lt);margin-top:16px;display:none;}
.fsb-form-status.fsb-show{display:block;}
@media (max-width:600px){.fsb-form-row{grid-template-columns:1fr;}}
/* ———- Footer ———- */
footer{background:var(–black);color:var(–cream-40);padding:56px 0 40px;}
.fsb-foot-top{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:40px;padding-bottom:40px;border-bottom:1px solid var(–cream-08);}
.fsb-foot-brand .fsb-brand-name{font-size:20px;}
.fsb-foot-brand p{margin-top:10px;font-size:13px;color:var(–cream-40);max-width:280px;line-height:1.6;}
.fsb-foot-cols{display:flex;gap:64px;flex-wrap:wrap;}
.fsb-foot-col h5{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(–cream-25);margin-bottom:16px;}
.fsb-foot-col a{display:block;font-size:13.5px;color:var(–cream-60);text-decoration:none;margin-bottom:10px;}
.fsb-foot-col a:hover{color:var(–green-lt);}
.fsb-foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:28px;flex-wrap:wrap;gap:14px;}
.fsb-foot-bottom span{font-size:12px;color:var(–cream-25);}
/* ———- Wave dividers ———- */
.fsb-wave-divider{display:block;width:100%;height:50px;margin-bottom:-1px;}
@media (max-width:700px){.fsb-wave-divider{height:28px;}}
/* ———- Icons ———- */
.fsb-icon{display:block;flex-shrink:0;}
.fsb-icon-circle{
width:52px;height:52px;border-radius:50%;
display:flex;align-items:center;justify-content:center;flex-shrink:0;
margin-bottom:22px;
}
.fsb-icon-circle.fsb-on-dark{background:rgba(143,203,136,.1);}
.fsb-icon-circle.fsb-on-light{background:var(–green-dk);}
.fsb-icon-circle svg{width:24px;height:24px;}
/* ———- Stat band ———- */
.fsb-statband{background:var(–black-2);padding:88px 0;}
.fsb-statband-grid{
display:flex;flex-wrap:wrap;justify-content:space-between;gap:40px 24px;
}
.fsb-statband-item{flex:1 1 180px;min-width:160px;}
.fsb-statband-num{font-family:’Fraunces’,serif;font-size:clamp(34px,4.2vw,52px);color:var(–green-lt);line-height:1;}
.fsb-statband-label{font-size:13px;color:var(–cream-40);margin-top:12px;line-height:1.5;max-width:220px;}
/* ———- FAQ ———- */
.fsb-faq{background:var(–paper);padding:112px 0;}
.fsb-faq .fsb-eyebrow{color:var(–green);margin-bottom:20px;}
.fsb-faq .fsb-sec-head p{color:var(–text-mid);margin-top:16px;font-size:15.5px;line-height:1.75;}
.fsb-faq-list{max-width:820px;border-top:1px solid var(–stone-2);}
.fsb-faq-item{border-bottom:1px solid var(–stone-2);}
.fsb-faq-item summary{
list-style:none;cursor:pointer;padding:24px 0;
display:flex;align-items:center;justify-content:space-between;gap:20px;
font-size:16.5px;font-weight:600;color:var(–text);
}
.fsb-faq-item summary::-webkit-details-marker{display:none;}
.fsb-faq-icon{
flex-shrink:0;width:26px;height:26px;border-radius:50%;border:1px solid var(–stone-2);
display:flex;align-items:center;justify-content:center;position:relative;transition:transform .2s ease, border-color .2s ease;
}
.fsb-faq-icon::before,.fsb-faq-icon::after{content:””;position:absolute;background:var(–text);transition:transform .2s ease, opacity .2s ease;}
.fsb-faq-icon::before{width:10px;height:1.5px;}
.fsb-faq-icon::after{width:1.5px;height:10px;}
.fsb-faq-item[open] .fsb-faq-icon{border-color:var(–green);transform:rotate(180deg);}
.fsb-faq-item[open] .fsb-faq-icon::after{opacity:0;}
.fsb-faq-item p{font-size:14.5px;color:var(–text-mid);line-height:1.75;padding-bottom:26px;max-width:640px;}
.fsb-reveal{opacity:1;}
html.fsb-js-ready .fsb-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease, transform .7s ease;}
html.fsb-js-ready .fsb-reveal.fsb-in{opacity:1;transform:translateY(0);}
Fieldset Brands
Brand Activation
Put your product in front of the right people.The boost behind your brand in the field.
Fieldset Brands is the outsourced brand activation team behind on-premise and off-premise programs across the Mid-Atlantic. Strategy through execution, in-house media on every engagement, one team, one invoice.
“The best way to make a sale is to put the product in the hands of its buyer.”
Brand owners, marketing managers, and field sales teams across beverage and CPG all agree on this. The budget source is different. The need is the same: get your product into the hands, and the mouths, of the people who buy it.
Photo coming soon
Andrew Hueston
Fieldset Brands is built on a career spent on both sides of the table. Andrew has spent over two decades in hospitality, beverage, and CPG trade, including more than a decade as a key buyer for multi-million dollar hospitality companies, deciding which brands get on the shelf and in the well, and which activations actually earn a second look. That perspective shapes how Fieldset Brands runs a program: built the way a buyer would want to be sold to.
Three buyers. Three different reasons to work with us.
Brand owners, marketing managers, and field sales teams come to Fieldset Brands with different budgets and different goals. What stays the same is the execution: on time, on brand, and built around the outcome each of them is actually measured on.
Building your first on-premise or retail presence
Every activation is planned around your target buyer, not a generic crowd. We track attendance, engagement, and follow-up interest at each event, so the program gets sharper and better targeted with every activation.
Extending your program into new markets
We integrate with your existing infrastructure, follow your brand standards, and deliver the execution your internal team doesn’t have the bandwidth to run. Every event is built with one goal underneath it: move units, not just impressions.
Deploying activation budget to hit depletion goals
A place to put activation budget that works as hard as you do. We build every program around your depletion targets and KPIs, so the spend has a direct line to the numbers you’re accountable for, backed by post-event data that makes the case for next quarter’s budget.
End-to-end activation. On-premise and off-premise.
We are not a staffing agency. We are not an event vendor. We manage the full scope of your field activation program, from strategy through execution, with a full in-house staff of creative event leads, photographers, and A/V engineers.
On-Premise Activation
Bar takeovers, brand nights, bartender training, custom recipe development built around your product, cocktail menu integration, and VIP trade tastings.
Off-Premise & Retail
Compliant sampling at liquor stores, grocery, and specialty retail, plus street festivals and community events.
Trade & Buyer Engagement
Buyer dinners, distributor showcases, portfolio tastings, and rep education nights, delivered at production quality.
In-House Media
Photographers and A/V engineers on every engagement. HD gallery and social-ready assets delivered within 48 hours, included.
What an activation actually looks like.
Photos from Fieldset Brands activations will live here. Each slot below is a placeholder ready for real event photography.
Swipe or use the arrows to browse. Each frame above is sized and ready, drop in real activation photos as they come in.
Category-specific execution, not a one-size approach.
Every category moves differently, so the program is built around how that category actually sells. Here’s how the work shifts across the four spaces we operate in most.
On-premise, built for velocity
Account placement, bartender relationships, managed bar nights, custom recipes built around your product, and VIP trade tastings, all built around the metrics distillers and importers are measured on.
Retail and off-premise trial
Sampling programs, shelf velocity, and consumer trial across grocery and specialty retail, run for brands that live and die by repeat purchase.
Compliance-forward, category-fluent
Compliance first: certifications and category-specific regulatory requirements are handled before anything else, then the same craft-spirits-level attention to detail as any other beverage line.
Enterprise-scale portfolio events
Buyer dinners, distributor showcases, and rep education nights built for suppliers and distributors managing a full portfolio, not a single SKU. Programs are built for sustained velocity, not a one-time spike that fades the week after.
You don’t need to hire a field team to enter a market.
Fieldset Brands handles the ground-level execution, so your team walks into soft leads and closes deals instead of doing the footwork.
Existing buyer relationships
Deep relationships across the NJ, PA, and NYC on-premise and off-premise market. Warm introductions shorten the pre-sale period in ways cold outreach cannot.
The Fieldset Standard: everything in-house
Creative event leads, photographers, and A/V engineers on staff, not subcontracted. No vendor coordination, no patchwork crews, no third-party delays. One team, every engagement.
Hospitality operations expertise
We understand the venue side as fluently as the brand side: front and back of house, bar programming, compliance, and point of sale.
Built-in discovery layer
Every activation gets listed on BarAndRestaurantEvents.com, our own events platform, for an added layer of visibility and reach.
Integrity-based representation
We represent brands we believe in and approach buyers thoughtfully. Selectivity protects our network and your reputation.
Flexible engagement model
No enterprise minimums, no long-term lock-in. Scale up, pause, or expand by market as your program needs it.
| Category | What they offer vs. Fieldset Brands |
|---|---|
| National agencies | Enterprise minimums, long contracts, and limited hospitality expertise. Production is often subcontracted to third-party vendors, adding delays and a layer you don’t control. Not built for mid-market or field sales budgets. |
| Staffing agencies | Brand ambassadors only. No strategy, no A/V, no production, no bar builds, no ROI reporting. Clients still need three or four additional subcontracted vendors to fill the gaps. |
| Freelance ambassadors | Execution only, with no strategy or program management, no media production, and no buyer relationships to draw on. |
| Fieldset Brands | A full-scope outsourced activation team, nothing subcontracted. Strategy through execution, in-house media, existing buyer relationships, ROI reporting, a flexible engagement model, and one invoice. |
The parts of an activation nobody plans for, until they happen.
Every activation runs into something. What separates a good partner from a risky one is what happens next, before it becomes your problem.
Permits & venue approval
A venue cancels a booking or a permit gets held up. We keep backup venues and standing relationships in place so a single fall-through doesn’t sink the date.
Inventory & logistics
Product doesn’t arrive on time, or a distributor delivery slips. We track it and adjust the program in real time instead of running an empty table.
Weather
An outdoor activation gets rained out. Contingency plans get built into every outdoor program from the start, not improvised after the forecast changes.
Regulatory & compliance
A local ordinance or state requirement changes mid-program. We stay current on the compliance landscape across every market we operate in, so you don’t find out the hard way.
There’s no package to pick from. Every program is built around what you need.
Budget, timeline, and goals are different for every brand, so scope isn’t decided in advance. Here’s what that can look like in practice, from a first event to an ongoing partnership.
Might start as one activation
Testing a market, running a one-off event, or working with a limited budget. A focused, well-executed way to see what a Fieldset activation looks like before committing to more.
Could grow into a recurring calendar
A regular cadence of on-premise and off-premise activations across your priority accounts, backed by consistent reporting so every event builds on the last.
Or become a retained partnership
Fieldset functioning as your outsourced field team across multiple markets on a continuous, quarter-over-quarter basis. Wherever the relationship lands, the scope is built around you.
What people usually want to know first.
The short version of how this works, before you reach out.
How do we get started?
Reach out through the form below with a bit about your brand and market. We’ll set up a call to understand your goals and budget, then scope a first activation from there. No lengthy onboarding required.
What markets do you cover?
Philadelphia metro, South Jersey, and New York City are our core markets. We take on engagements across the broader Mid-Atlantic on a case-by-case basis.
Do you handle licensing and compliance?
Yes. Alcohol sampling and on-premise activation come with state-specific certification and compliance requirements, and we manage that as part of every program so you don’t have to track it separately.
Is there a minimum commitment?
No. There are no enterprise minimums or long-term contracts. Most relationships start with a single activation and scale up from there based on results.
What do you need from us to kick off a program?
Product, a sense of your target markets or accounts, and your goals or KPIs. We handle sourcing venues, staffing, compliance, and execution from there.
How is pricing structured?
Engagement-based and flexible, depending on scope, whether that’s a single activation, an ongoing calendar, or a retained partnership. Reach out for a quote specific to your program.
Rooted in Philadelphia. Built to move across the Mid-Atlantic.
Our geographic focus aligns with existing relationships, deep knowledge of the regulatory environment, and a professional network built over 22-plus years in hospitality and trade.
Home Market
Core Market
Core Market
By Engagement
Ready to put your product in front of the right people?
Tell us about your brand, your market, and what you’re trying to move. We’ll follow up within one business day.
Liquor & Spirits
RTD & CPG
THC & Hemp Beverages
Distributor & Trade
Other
Philadelphia Metro
South Jersey
New York City
Other / Multiple markets
Or reach us directly at hello@fieldsetbrands.com / @fieldsetbrands
Thanks, your email client should have opened with everything filled in. Just hit send.
const menuBtn = document.getElementById(‘fsb-menuBtn’);
const mobileMenu = document.getElementById(‘fsb-mobileMenu’);
menuBtn.addEventListener(‘click’, () => mobileMenu.classList.toggle(‘fsb-open’));
mobileMenu.querySelectorAll(‘a’).forEach(a => a.addEventListener(‘click’, () => mobileMenu.classList.remove(‘fsb-open’)));
const revealEls = document.querySelectorAll(‘.fsb-reveal’);
if (‘IntersectionObserver’ in window) {
document.documentElement.classList.add(‘fsb-js-ready’);
const io = new IntersectionObserver((entries) => {
entries.forEach(e => { if(e.isIntersecting){ e.target.classList.add(‘fsb-in’); io.unobserve(e.target); } });
}, {threshold:.15});
revealEls.forEach(el => io.observe(el));
}
/*
GALLERY CAROUSEL
The slides are natively swipeable (CSS scroll-snap), so the carousel
already works with zero JS. Everything below is progressive
enhancement: arrow buttons and clickable dot indicators. If this
script fails to run for any reason, visitors can still browse the
gallery by touch, trackpad, or scrollbar — it never depends on JS
to be usable.
TO ADD REAL PHOTOS: replace each “.fsb-slide-frame” placeholder div with
an
tag, or set it as a CSS
background-image. Keep the same “slide” wrapper and aspect ratio.
*/
const carousel = document.getElementById(‘fsb-carousel’);
if (carousel) {
const slides = carousel.querySelectorAll(‘.fsb-slide’);
const dotsWrap = document.getElementById(‘fsb-carDots’);
const prevBtn = document.getElementById(‘fsb-carPrev’);
const nextBtn = document.getElementById(‘fsb-carNext’);
slides.forEach((_, i) => {
const dot = document.createElement(‘button’);
dot.className = ‘fsb-car-dot’ + (i === 0 ? ‘ fsb-active’ : ”);
dot.setAttribute(‘aria-label’, ‘Go to photo ‘ + (i + 1));
dot.addEventListener(‘click’, () => {
slides[i].scrollIntoView({behavior:’smooth’, inline:’start’, block:’nearest’});
});
dotsWrap.appendChild(dot);
});
const dots = dotsWrap.querySelectorAll(‘.fsb-car-dot’);
function updateActiveDot() {
let closestIdx = 0, closestDist = Infinity;
slides.forEach((slide, i) => {
const dist = Math.abs(slide.offsetLeft – carousel.scrollLeft);
if (dist d.classList.toggle(‘fsb-active’, i === closestIdx));
}
carousel.addEventListener(‘scroll’, () => {
window.requestAnimationFrame(updateActiveDot);
}, {passive:true});
prevBtn.addEventListener(‘click’, () => {
carousel.scrollBy({left: -(slides[0].offsetWidth + 20), behavior:’smooth’});
});
nextBtn.addEventListener(‘click’, () => {
carousel.scrollBy({left: slides[0].offsetWidth + 20, behavior:’smooth’});
});
}
/*
CONTACT FORM — current behavior:
This is a static HTML file with no backend, so submitting builds a
pre-filled mailto: link and opens the visitor’s email client. That
works everywhere with zero setup, but it does depend on the visitor
having a mail client configured.
To upgrade to a true in-page submit (no email client required) once
this is hosted, swap this handler for one of:
– Formspree (formspree.io) — add a form action URL, no code change needed
– Netlify Forms — add data-netlify=”true” to the tag if hosting on Netlify
– WPForms / Gravity Forms — if this gets rebuilt inside WordPress
*/
const form = document.getElementById(‘fsb-contactForm’);
const status = document.getElementById(‘fsb-formStatus’);
form.addEventListener(‘submit’, function(e){
e.preventDefault();
const name = document.getElementById(‘fsb-cf-name’).value;
const company = document.getElementById(‘fsb-cf-company’).value;
const category = document.getElementById(‘fsb-cf-category’).value;
const market = document.getElementById(‘fsb-cf-market’).value;
const email = document.getElementById(‘fsb-cf-email’).value;
const message = document.getElementById(‘fsb-cf-message’).value;
const subject = `New inquiry: ${company} (${category})`;
const body =
`Name: ${name}
Brand / Company: ${company}
Category: ${category}
Market: ${market}
Email: ${email}
Message:
${message}`;
const mailto = `mailto:hello@fieldsetbrands.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
window.location.href = mailto;
status.classList.add(‘fsb-show’);
});