/*
 * FILE: public/css/gff.css
 * GFF design system. Mobile first and accessible. No CSS frameworks required.
 * BRAND COLORS: change values below to adjust the entire website.
 */
:root{
  --white:#fff;--ink:#20262b;--navy:#152f46;--navy-deep:#102638;--teal:#087b7a;
  --aqua:#00d2cd;--soft:#f4f7f8;--soft-blue:#ecf3f5;--stroke:#d7e1e5;
  --muted:#4d5c66;--radius:18px;--shadow:0 22px 50px rgba(17,43,60,.11);
  --max:1200px;--body-size:17px;--focus:#006d6a;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:var(--white);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:var(--body-size);line-height:1.68;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}img{height:auto}
a{color:var(--teal);text-decoration-thickness:1.5px;text-underline-offset:4px}
a:hover{text-decoration-color:currentColor}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:4px;border-radius:3px}
::selection{color:var(--navy);background:#a9eeeb}
.container{width:min(calc(100% - 36px),var(--max));margin-inline:auto}
.narrow{max-width:780px}
h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:760;line-height:1.15;letter-spacing:-.035em;color:var(--navy)}h1{font-size:clamp(2.75rem,7vw,5.1rem)}h2{font-size:clamp(2rem,5vw,3.45rem)}h3{font-size:clamp(1.32rem,2.2vw,1.7rem)}
p{margin-bottom:1.1rem}small{font-size:.83rem}
.skip-link{position:fixed;z-index:999;top:-90px;left:15px;background:#fff;padding:10px 18px;border:2px solid var(--teal);color:var(--navy)}.skip-link:focus{top:14px}
.eyebrow{font-size:.82rem;line-height:1.4;font-weight:830;letter-spacing:.15em;color:var(--teal);text-transform:uppercase;margin-bottom:18px}
.eyebrow-light{color:#77ebe5}.eyebrow-mark{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--teal);margin-right:8px}
.section-pad{padding:clamp(65px,8vw,115px) 0}.section-soft{background:var(--soft)}.lead{font-size:clamp(1.08rem,1.8vw,1.3rem);line-height:1.58;color:#3b4a54}
.section-heading{max-width:680px;margin-bottom:36px}.section-heading h2{margin-bottom:18px}.section-heading>p:last-child{color:var(--muted)}
.button{min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:13px;border:2px solid transparent;border-radius:9px;padding:13px 23px;text-decoration:none;font-weight:760;font-size:.96rem;line-height:1.35;transition:background .16s,color .16s,transform .16s}
.button:hover{transform:translateY(-1px)}.button-primary{background:var(--teal);color:#fff}.button-primary:hover{background:#065f60;color:#fff}.button-light{background:#fff;color:var(--navy)}.button-light:hover{color:#fff;background:var(--teal)}.button-ghost{color:var(--navy);background:transparent;border-color:#a6b4bb}.button-ghost:hover{border-color:var(--teal);color:var(--teal)}.text-link{display:inline-flex;gap:8px;align-items:center;font-weight:760;color:var(--teal);text-decoration:none;border-bottom:2px solid currentColor;line-height:1.5;padding-bottom:2px}.text-link:hover{color:var(--navy)}
/* HEADER: simple navigation, large touch controls. */
.site-header{position:relative;z-index:30;background:#fff;border-bottom:1px solid #e2eaed}
.utility-bar{background:var(--navy);color:#e1eeee;font-size:.85rem;font-weight:620}
.utility-inner{min-height:36px;display:flex;align-items:center;justify-content:center;gap:18px}
.utility-inner a{color:#fff;text-decoration:none}
.utility-inner span{display:none}
.header-main{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;gap:9px;align-items:center;text-decoration:none;min-width:0;color:var(--navy)}.brand-icon{object-fit:contain;width:46px;height:47px}.brand-copy{display:flex;flex-direction:column;gap:0;line-height:1}.brand-copy strong{font-size:clamp(.97rem,2vw,1.16rem);letter-spacing:.04em;color:var(--navy);white-space:nowrap}.brand-copy small{font-size:.65rem;font-weight:740;letter-spacing:.2em;color:var(--teal);margin-top:8px;white-space:nowrap}
.desktop-nav{display:none;gap:0;align-items:center}.desktop-nav a{display:inline-flex;padding:12px 13px;color:var(--navy);font-size:1rem;font-weight:690;text-decoration:none;border-radius:9px}.desktop-nav a:not(.nav-cta):hover,.desktop-nav a.is-active:not(.nav-cta){color:var(--teal);background:#e8f4f4}.desktop-nav .nav-cta{background:var(--teal);color:#fff;margin-left:9px;gap:10px;padding:12px 17px}.desktop-nav .nav-cta:hover{background:#066464}
.mobile-menu-button{min-height:50px;min-width:60px;border:1px solid #cbd8dd;background:var(--white);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 14px;color:var(--navy)}.menu-lines{display:flex;flex-direction:column;gap:4px}.menu-lines span{display:block;width:21px;height:2px;background:var(--navy);border-radius:2px}.menu-word{font-size:.68rem;font-weight:760}
.mobile-nav{padding:12px 18px 19px;border-top:1px solid var(--stroke);background:white}.mobile-nav a{display:block;padding:13px 10px;min-height:48px;border-bottom:1px solid #edf1f2;font-weight:720;color:var(--navy);text-decoration:none}.mobile-nav .mobile-subitem{padding-left:27px;color:var(--muted);font-weight:600}.mobile-nav a.mobile-contact{background:var(--teal);color:#fff;text-align:center;border-radius:8px;margin-top:14px}.js .mobile-nav:not(.is-open){display:none}
/* HERO: intentional bespoke layout built around official GFF logo. */
.home-hero{overflow:hidden;padding:64px 0 74px;background:linear-gradient(158deg,#fbfcfc 0%,#f0f7f8 100%)}
.home-hero-grid{display:grid;gap:46px;align-items:center}.home-hero-copy{max-width:670px;position:relative;z-index:2}
.home-hero h1{margin:0 0 23px;font-size:clamp(2.8rem,7.5vw,5.75rem);line-height:1.08;letter-spacing:-.055em;font-weight:800}
.home-hero h1 em{display:block;color:var(--teal);font-style:normal}.hero-intro{font-size:clamp(1.08rem,2.3vw,1.24rem);color:#3b4b55;line-height:1.6;max-width:580px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:27px}.hero-location{margin:23px 0 0;font-size:.83rem;color:#586970;font-weight:660}
.home-hero-media{position:relative;min-height:390px;padding:17px 10px 20px;display:flex;align-items:center;justify-content:center}
.hero-orbit{position:absolute;width:min(100%,560px);aspect-ratio:1;border:1.5px solid #c2dadc;border-radius:50%;transform:translate(8%,-3%)}
.hero-orbit:after{content:"";position:absolute;inset:12%;border:1px solid #cfdddf;border-radius:50%}
.hero-brand-tile{position:relative;z-index:1;min-height:390px;width:min(90%,390px);border-radius:19px;padding:23px 28px 25px;background:var(--navy);box-shadow:25px 25px 0 rgba(0,131,130,.14),var(--shadow);display:flex;align-items:center;flex-direction:column;justify-content:center;transform:rotate(-2deg)}
.hero-brand-tile:before{content:"";position:absolute;inset:11px;border:1px solid rgba(152,218,218,.2);border-radius:12px;pointer-events:none}
.hero-brand-logo{width:min(78%,240px);height:280px;object-fit:contain}
.hero-brand-rule{height:3px;width:62px;background:var(--aqua);margin:9px 0 14px}
.hero-brand-tile p{color:#d4e5ea;letter-spacing:.17em;text-align:center;font-weight:790;font-size:.59rem;margin:0}
.hero-small-tag{position:absolute;z-index:2;right:0;bottom:8px;background:#fff;padding:14px 18px;border:1px solid #d4e6e5;box-shadow:0 14px 28px rgba(17,45,56,.12);font-size:.72rem;font-weight:760;line-height:1.4;color:var(--navy);border-radius:7px;transform:rotate(5deg)}.hero-small-tag strong{color:var(--teal)}
/* SERVICES */
.home-services-heading{margin-bottom:36px}.service-cards{display:grid;grid-template-columns:1fr;gap:21px}
.service-card{border:1px solid var(--stroke);border-radius:var(--radius);overflow:hidden;background:#fff;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.service-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.service-art{height:225px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}
.service-art-printing{background:#e6f0f2}.service-art-embroidery{background:#ecf5f2}.service-art-fundraising{background:#f0f1f7}
.service-art img{height:200px;width:260px;object-fit:contain}.service-card-number{position:absolute;left:17px;top:13px;color:#274958;font-weight:850;font-size:.8rem;letter-spacing:.15em}
.service-card-body{padding:25px 25px 28px;flex:1;display:flex;align-items:flex-start;flex-direction:column}
.service-card-body h3{margin-bottom:10px}.service-card-body p{color:var(--muted);font-size:.98rem;flex:1}.service-card .text-link{font-size:.94rem}
/* STORY */
.section-story{border-top:1px solid #e9edef}.story-layout{display:grid;gap:20px}.story-layout h2{max-width:590px;margin-bottom:0}.story-layout p{color:var(--muted)}.story-layout .story-lead{font-size:clamp(1.12rem,2vw,1.45rem);color:var(--navy);font-weight:620;line-height:1.55}
/* FEATURE: fundraiser centerpiece */
.fundraising-feature{background:var(--navy);color:#fff;overflow:hidden}.fundraising-feature-grid{display:grid;gap:40px;align-items:center}
.fundraise-graphic{min-height:370px;padding:35px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(145deg,#066f75 0%,#083b56 68%);border:1px solid rgba(255,255,255,.2);border-radius:18px;position:relative;isolation:isolate;overflow:hidden}
.fundraise-graphic:before{content:"";position:absolute;right:-120px;top:-70px;width:330px;height:330px;border-radius:50%;border:52px solid rgba(0,211,208,.26);z-index:-1}
.fundraise-graphic:after{content:"";position:absolute;left:-75px;bottom:-150px;width:310px;height:310px;border-radius:50%;border:2px solid rgba(255,255,255,.2);z-index:-1}
.graphic-label,.graphic-tail{color:#c2f5f0;font-weight:760;letter-spacing:.14em;font-size:.7rem}.graphic-main{font-size:clamp(3.4rem,10vw,6rem);line-height:.95;letter-spacing:-.065em;font-weight:900;color:#fff}.graphic-main i{color:var(--aqua);font-style:normal}
.fundraising-feature-copy h2{color:#fff}.fundraising-feature-copy p:not(.eyebrow){color:#d3e5ec}.fundraising-feature-copy .button{margin-top:15px}
/* GALLERY & AUDIENCE */
.gallery-preview{background:#fff}.split-heading{max-width:none;display:flex;gap:12px;justify-content:space-between;align-items:end;flex-wrap:wrap}
.gallery-coming{display:grid;gap:24px;border:1px solid var(--stroke);border-radius:var(--radius);background:#f7faf9;padding:25px;align-items:center}.gallery-coming-art{background:#e8f3f2;border-radius:12px;min-height:260px;display:flex;align-items:center;justify-content:center}.gallery-coming-art img{max-height:240px;object-fit:contain}.gallery-coming h3{margin-bottom:10px}.gallery-coming p{color:var(--muted)}
.gallery-grid{display:grid;grid-template-columns:1fr;gap:19px}.gallery-item{margin:0;border-radius:15px;overflow:hidden;border:1px solid var(--stroke);background:#fff}.gallery-item img{width:100%;aspect-ratio:5/4;object-fit:cover}.gallery-item figcaption{padding:18px;display:flex;gap:5px;flex-direction:column}.gallery-item figcaption strong{color:var(--navy)}.gallery-item figcaption span{color:var(--muted);font-size:.91rem}
.audience-section{background:var(--soft)}.audience-grid{display:grid;gap:30px}.audience-grid p:not(.eyebrow){color:var(--muted)}.audience-tags{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:center}.audience-tags span{padding:16px 12px;border:1px solid #ccdfe3;border-radius:9px;background:white;font-size:.91rem;font-weight:730;text-align:center;color:var(--navy)}
/* CTA */
.section-close-cta{background:#fff}.contact-cta-panel{background:var(--navy);padding:35px 24px;border-radius:17px;display:flex;align-items:flex-start;flex-direction:column;gap:18px;position:relative;overflow:hidden}.contact-cta-panel:after{content:"";position:absolute;width:230px;height:230px;border:44px solid rgba(6,202,198,.11);border-radius:50%;right:-80px;top:-100px;pointer-events:none}
.contact-cta-panel h2{color:#fff;margin-bottom:15px;position:relative;z-index:1}.contact-cta-panel p:not(.eyebrow){color:#d2e2e9;max-width:700px;position:relative;z-index:1}.contact-cta-panel .button{z-index:2}
/* INNER PAGE HERO */
.page-hero{background:#eff5f6;overflow:hidden;padding-top:73px;padding-bottom:74px}.page-hero-inner{display:grid;grid-template-columns:1fr;gap:28px;align-items:center}
.page-hero-content{position:relative;z-index:2}.page-hero h1{max-width:860px;font-size:clamp(2.8rem,6.6vw,4.8rem);margin-bottom:23px}.page-hero .lead{max-width:710px}.page-hero .button{margin-top:9px}
.page-hero-mark{display:none;position:relative;justify-content:center;align-items:center;width:100%;min-height:250px;border:1px solid #cadfdf;border-radius:50%;color:#bdd6db;font-size:clamp(3.5rem,8vw,8rem);letter-spacing:-.1em;font-weight:920;transform:rotate(-11deg)}
.page-hero-mark:before{content:"";position:absolute;width:78%;aspect-ratio:1;border:1px solid #d1e0e0;border-radius:50%}
.tile-grid{display:grid;grid-template-columns:1fr;gap:18px}.info-tile{background:#fff;border:1px solid var(--stroke);border-radius:13px;padding:29px}.tile-index{color:var(--teal);font-weight:870;letter-spacing:.11em;display:block;margin-bottom:36px;font-size:.81rem}.info-tile h3{margin-bottom:13px}.info-tile p{color:var(--muted);margin:0}
.simple-split{display:grid;gap:22px}.simple-split p{color:var(--muted)}.simple-split h2{max-width:520px}.steps-grid{list-style:none;margin:0;padding:0;display:grid;gap:14px}.steps-grid li{border:1px solid var(--stroke);border-radius:13px;padding:28px;background:#fff}.steps-grid li>span{display:inline-flex;align-items:center;justify-content:center;width:51px;height:51px;border-radius:50%;background:#ddf2ef;color:#075f60;font-weight:850;margin-bottom:27px}.steps-grid li h3{margin-bottom:12px}.steps-grid li p{font-size:.97rem;color:var(--muted);margin:0}
/* FAQ accessible native disclosure */
.faq-narrow{max-width:820px}.faq-item{border-bottom:1px solid var(--stroke);margin:0}.faq-item:first-of-type{border-top:1px solid var(--stroke)}
.faq-item summary{font-size:clamp(1rem,1.8vw,1.17rem);list-style:none;position:relative;padding:24px 44px 24px 0;color:var(--navy);font-weight:745;cursor:pointer;line-height:1.4;min-height:60px}
.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:'+';position:absolute;right:7px;top:18px;color:var(--teal);font-size:1.75rem;line-height:1}.faq-item[open] summary:after{content:'−'}
.faq-item>div{color:var(--muted);padding:0 28px 24px 0}.faq-second-heading{margin-top:65px}.faq-footer{padding-top:35px}.faq-footer p{color:var(--muted)}
/* CONTACT */
.contact-grid{display:grid;gap:40px}.contact-details h2{max-width:440px}.contact-details>p{color:var(--muted)}
.contact-list{display:grid;gap:18px;margin:30px 0}.contact-list>div{padding-bottom:17px;border-bottom:1px solid var(--stroke)}.contact-list dt{color:var(--muted);font-size:.85rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.contact-list dd{margin:4px 0 0;font-size:1.12rem;overflow-wrap:anywhere;font-weight:670;color:var(--navy)}.contact-list a{color:var(--navy);text-decoration:none}.contact-list a:hover{color:var(--teal)}.fine-print{font-size:.84rem}
.form-panel{padding:25px 20px;border:1px solid var(--stroke);border-radius:var(--radius);box-shadow:0 14px 38px rgba(16,38,56,.05);background:#fff}
.form-panel h2{font-size:clamp(1.75rem,3vw,2.3rem);margin-bottom:9px}.form-panel>p{color:var(--muted);font-size:.97rem}
.form-row{display:grid;grid-template-columns:1fr;gap:16px}.form-field{margin-top:18px}.form-field label{display:block;margin-bottom:7px;color:var(--navy);font-weight:720;font-size:.93rem}.form-field label span{color:#8d3833}
.form-field input,.form-field select,.form-field textarea{background:#fff;border:1.5px solid #aabdc7;border-radius:8px;padding:13px 14px;min-height:50px;width:100%;color:var(--ink);font-size:1rem;line-height:1.45}
.form-field textarea{resize:vertical;min-height:136px}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--teal);outline:2px solid rgba(8,123,122,.22)}
.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:#9e3131}.field-error{color:#982a2a;display:block;margin-top:5px}
.check-field{display:flex;align-items:flex-start;gap:12px;margin:26px 0}.check-field input{width:23px;height:23px;flex:0 0 auto;accent-color:var(--teal);margin:3px 0}.check-field label{font-size:.89rem;color:var(--muted);line-height:1.5}
.button-wide{width:100%;border:0}.form-footnote{color:var(--muted);font-size:.81rem;text-align:center;margin:13px 0 0}.form-alert{padding:13px 16px;border-radius:8px;margin-bottom:12px;font-size:.95rem}.form-success{background:#e4f4ee;color:#13553f;border:1px solid #b4d9c9}.form-error{background:#fdf0ec;color:#7b2e29;border:1px solid #e4bbb7}.honeypot{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
/* LEGAL pages */
.legal-heading{padding-bottom:35px;background:var(--soft)}.legal-heading h1{font-size:clamp(2.7rem,5vw,4.1rem)}.legal-content{padding-top:60px}.legal-content h2{font-size:1.48rem;margin:33px 0 12px}.legal-content p{color:#35454f}.legal-note{border-left:3px solid var(--teal);background:var(--soft);padding:17px;font-size:.9rem;margin-top:33px}
/* FOOTER */
.site-footer{background:var(--navy-deep);color:#d4e6ec;padding:55px 0 0}
.footer-grid{display:grid;grid-template-columns:1fr;gap:36px;padding-bottom:40px}.footer-brand-block{max-width:400px}.footer-logo{width:132px;height:auto;max-height:178px;object-fit:contain;object-position:left center;margin-bottom:10px}.footer-brand-block p{font-size:.95rem;color:#bed0d9;max-width:330px}
.footer-nav-group h2{color:white;font-size:1.1rem;letter-spacing:0;margin:0 0 15px}.footer-nav-group ul{padding:0;list-style:none;margin:0}.footer-nav-group li{padding:3px 0}.footer-nav-group a{color:#e3eef2;text-decoration:none;font-size:.96rem}.footer-nav-group a:hover{text-decoration:underline;color:#fff}.footer-nav-group address{font-style:normal;line-height:1.95;color:#d4e6ec}.footer-facebook{display:inline-block;margin-top:16px}
.footer-bottom{border-top:1px solid rgba(255,255,255,.17);padding:20px 0 26px;display:flex;flex-direction:column;gap:12px;align-items:flex-start;font-size:.9rem}.footer-bottom p{margin:0;color:#b6ced6}.footer-legal{display:flex;gap:15px;flex-wrap:wrap}.footer-legal a{color:#d6e5e9;text-decoration:none}.footer-legal a:hover{text-decoration:underline}
.error-page{display:flex;align-items:center;min-height:70vh;padding:50px 0}.error-page h1{font-size:clamp(2.6rem,5.8vw,4.6rem)}
/* TABLET */
@media(min-width:660px){.container{width:min(calc(100% - 60px),var(--max))}.utility-inner{justify-content:space-between}.utility-inner span{display:block}.service-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.service-cards .service-card:last-child:nth-child(odd){grid-column:1/-1}.tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.steps-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-coming{grid-template-columns:1fr 1fr}.form-row{grid-template-columns:1fr 1fr}.form-panel{padding:35px}.footer-grid{grid-template-columns:1.4fr 1fr;gap:36px}.footer-bottom{flex-direction:row;align-items:center;justify-content:space-between}}
@media(min-width:800px){.home-hero-grid{grid-template-columns:1.1fr .9fr;gap:26px}.home-hero-media{min-height:460px}.hero-brand-tile{min-height:415px}.story-layout{grid-template-columns:.93fr 1.07fr;gap:85px}.fundraising-feature-grid{grid-template-columns:1fr 1.1fr;gap:65px}.audience-grid{grid-template-columns:1.1fr .9fr;gap:50px}.simple-split{grid-template-columns:1fr 1fr;gap:90px}.page-hero-inner{grid-template-columns:1fr 205px}.page-hero-mark{display:flex}.contact-grid{grid-template-columns:.82fr 1.18fr;gap:70px}.footer-grid{grid-template-columns:1.4fr 1fr 1fr}}
@media(min-width:960px){.header-main{min-height:90px}.desktop-nav{display:flex}.mobile-menu-button,.mobile-nav{display:none!important}.home-hero{padding:95px 0 110px}.service-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.service-cards .service-card:last-child:nth-child(odd){grid-column:auto}.tile-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-coming{padding:40px 65px}.contact-cta-panel{padding:58px 65px;flex-direction:row;justify-content:space-between;align-items:center;gap:35px}.contact-cta-panel .button{flex-shrink:0}.page-hero-inner{grid-template-columns:1fr 270px}}
@media(max-width:410px){.brand-icon{width:42px;height:42px}.brand-copy strong{font-size:.9rem}.brand-copy small{font-size:.55rem}.home-hero{padding-top:49px}.home-hero h1{font-size:2.66rem}.hero-actions .button{width:100%}.hero-brand-tile{width:91%}.audience-tags{grid-template-columns:1fr}.footer-logo{width:115px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
