:root{--navy:#062b59;--orange:#f15a24;--red:#d60b18;--warm:#f7f4ef;--ink:#151515}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font-family:Inter,Arial,sans-serif}a{color:inherit}.wrap{width:min(1180px,calc(100% - 64px));margin-inline:auto}h1,h2,h3{font-family:"Barlow Condensed",Impact,sans-serif;text-transform:uppercase;margin:0}

/* Visible keyboard focus. Matters everywhere, and especially here. */
a:focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:3px}
.final-buttons a:focus-visible,.footer-links a:focus-visible,.announce a:focus-visible{outline-color:#fff}

/* The inline icon sprite is definitions only and must never render. */
.sprite{display:none}

/* Announcement bar. Sits above <main> in normal flow, so the inline reveal
   script in index.html costs no layout shift. The campaign message leads and
   the required disclosure plus the entry links sit under it in smaller type.
   Both entry links carry the same weight on purpose: the free path is the one
   that keeps this a lawful drawing, so it must not read as the lesser option.
   Links stay white on hover rather than turning orange like the footer's do.
   Orange on this navy measures 4.16:1, under the 4.5:1 floor for text this
   size, so the hover is carried by the underline instead. */
.announce{background:var(--navy);color:#fff}
.announce__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 26px;padding-block:10px}
.announce p{margin:0}
.announce__message{flex:1 1 380px}
.announce__text{font-size:14px;line-height:1.5}
.announce__text strong{font-family:"Barlow Condensed",Impact,sans-serif;text-transform:uppercase;font-weight:700;font-size:18px;letter-spacing:.3px}
.announce__legal{font-size:12px;color:#d2d9e1;margin-top:2px}
.announce__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}

/* Donation entry is the primary action, at the client's direction. It reuses
   the page's existing .action-button language rather than inventing a smaller
   one, and that size is load-bearing: white on this orange measures 3.37:1,
   which clears the 3:1 floor only because 19px bold counts as large text. Shrink
   this button and it fails contrast. If it ever needs to be smaller, change the
   ground, not the type size. */
.announce__cta{display:inline-flex;align-items:center;gap:9px;background:var(--orange);color:#fff;text-decoration:none;text-transform:uppercase;font-family:"Barlow Condensed",Impact,sans-serif;font-weight:700;font-size:19px;letter-spacing:.3px;padding:8px 17px;border-radius:6px;white-space:nowrap;transition:.2s}
.announce__cta span{font-size:24px;line-height:.6}
.announce__cta:hover,.announce__cta:focus-visible{filter:brightness(.9);transform:translateY(-1px)}

/* Rules, then complimentary entry, stacked and subordinate to the button. The
   hierarchy is carried by size and weight only. Both stay pure white on the
   navy at 14:1, because dimming the free entry link would trade a legal
   affordance for decoration. */
.announce__minor{display:flex;flex-direction:column;gap:3px}
.announce__minor a{color:#fff;text-decoration:none;white-space:nowrap;border-bottom:1px solid #ffffff80;align-self:flex-start;transition:.2s}
.announce__minor a:hover,.announce__minor a:focus-visible{border-bottom-color:#fff}
.announce__rules{font-size:13px;font-weight:600}
.announce__free{font-size:12px}
@media(max-width:900px){.announce__inner{gap:9px 18px}.announce__text{font-size:13.5px}.announce__text strong{font-size:17px}}
/* Phones land here straight off a printed QR code, and the bar cannot be
   dismissed, so it is kept as short as it can be without shrinking the
   disclosure or the entry links out of comfortable reach. */
@media(max-width:600px){.announce__inner{gap:9px;padding-block:10px}.announce__text{font-size:13px;line-height:1.4}.announce__text strong{font-size:16px}.announce__legal{font-size:11.5px;line-height:1.45}.announce__actions{width:100%;justify-content:flex-start;gap:6px 16px}
 /* Padding shrinks on small screens, type does NOT. 19px bold is what keeps
    white on orange above the 3:1 large-text floor at 3.37:1. At 18px this
    button silently fails contrast. */
 .announce__cta{padding:9px 16px}
 /* Comfortable hit areas once the links are the only tap targets in reach of a
    thumb. Padding rather than font size, so the visual hierarchy is unchanged. */
 .announce__minor a{padding-block:5px}}

.hero-graphic{width:100%;margin:0;background:#fff;overflow:hidden}.hero-graphic picture{display:block}.hero-graphic img{display:block;width:100%;height:auto}
.mission{display:grid;grid-template-columns:57% 43%;padding-block:16px 18px}.mission-copy{padding-right:34px;border-right:1px solid #bbb}.mission h1,.mission h2{color:var(--navy);font-size:30px}.mission-copy h2{color:var(--orange);font-size:25px;margin:12px 0 2px}.mission h3{color:var(--navy);font-size:22px;margin-top:10px}.mission-copy p{max-width:640px;font-size:14px;line-height:1.43;margin:5px 0}
.florida-panel{position:relative;min-height:310px;overflow:hidden}.florida-map-image{position:absolute;z-index:0;inset:0 0 auto auto;width:100%;height:100%;object-fit:contain;object-position:right center}.map-caption{position:absolute;left:18px;bottom:12px;z-index:2;padding:8px 10px;background:rgba(255,255,255,.86);border-radius:7px;box-shadow:0 2px 12px rgba(6,43,89,.08)}.map-caption h2{font-size:24px;line-height:.95}.map-caption p{font-size:13px;line-height:1.35;margin:5px 0 0}
.actions{padding-block:28px 38px}.section-heading{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:22px;margin-bottom:25px}.section-heading>span{height:2px;background:var(--orange)}.section-heading h2{color:var(--navy);font-size:27px;text-align:center}
.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.action-card{background:var(--warm);border-radius:14px;overflow:hidden;position:relative;box-shadow:0 8px 22px rgba(6,43,89,.1)}
.card-photo{height:165px;overflow:hidden;background:#dbe2e7}.card-photo picture{display:block;height:100%}.card-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 40%}.card-1 .card-photo img{object-position:center 42%}.card-2 .card-photo img{object-position:center 38%}.card-3 .card-photo img{object-position:center 45%}

/* Icon medallions. Previously Unicode dingbats sized with font-size; now inline
   SVG sized explicitly, which renders identically on every platform. */
.action-icon{position:absolute;top:22px;left:28px;z-index:2;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;color:#fff;border:3px solid #fff;box-shadow:0 2px 8px #7776}
.action-icon svg{width:38px;height:38px;fill:currentColor}
.orange{background:var(--orange)}.navy{background:var(--navy)}
.card-content{padding:18px 28px 22px}.card-content h3{font-size:28px;color:var(--orange)}.card-2 h3{color:var(--navy)}.card-content p{font-size:14px;line-height:1.45;min-height:61px}
.action-button{display:flex;justify-content:center;align-items:center;gap:12px;color:#fff;text-decoration:none;text-transform:uppercase;font-family:"Barlow Condensed";font-weight:700;font-size:19px;padding:12px;border-radius:6px;transition:.2s}.action-button span{font-size:26px;line-height:.6}.action-button:hover,.action-button:focus-visible{filter:brightness(.88);transform:translateY(-1px)}

.impact{background:var(--navy);color:#fff;padding:26px 0}.impact-grid{display:grid;grid-template-columns:repeat(4,1fr)}.impact article{display:flex;gap:15px;align-items:center;padding:4px 22px;border-right:1px solid #ffffff75}.impact article:last-child{border:0}
.impact-icon{color:var(--orange);display:flex;flex:0 0 auto}.impact-icon svg{width:42px;height:42px;fill:currentColor}
.impact h3{font-size:20px;line-height:1.05}.impact p{font-size:11px;line-height:1.4;margin:7px 0 0}

.final-cta{background:linear-gradient(100deg,#c90814,#e0101c);color:#fff;padding:26px 0;position:relative;overflow:hidden}.final-cta:before,.final-cta:after{content:"";position:absolute;width:150px;height:100%;top:0;background-image:radial-gradient(#fff 1px,transparent 1px);background-size:8px 8px;opacity:.35}.final-cta:before{left:-50px}.final-cta:after{right:-50px}
.final-inner{display:flex;justify-content:space-between;align-items:center;gap:30px;position:relative;z-index:1}.final-message{display:flex;align-items:center;gap:15px}
.final-icon{display:flex;color:#ffd51f;flex:0 0 auto}.final-icon svg{width:58px;height:58px;fill:currentColor}
.final-message h2{font-size:31px}.final-message p{margin:0;color:#ffd51f;font-family:"Barlow Condensed";font-size:30px;font-weight:700;font-style:italic;text-transform:uppercase}
.final-buttons{display:flex;gap:12px}.final-buttons a{display:flex;align-items:center;gap:9px;border:2px solid #fff;border-radius:6px;padding:12px 17px;text-decoration:none;text-transform:uppercase;font-family:"Barlow Condensed";font-weight:700;font-size:17px;transition:.2s}.final-buttons a svg{width:19px;height:19px;fill:currentColor;flex:0 0 auto}.final-buttons a:hover,.final-buttons a:focus-visible{background:#fff;color:var(--red)}

/* Official Rules page (rules.html, served at /rules). Long-form legal text, so
   it is set for reading rather than for scanning: one measured column, generous
   line height, and section headings that are clearly subordinate to the title.
   Body copy is 15px, larger than the campaign page's 14px, because this is the
   document a visitor actually has to read, on a disability services site. */
.legal-masthead{background:var(--navy);color:#fff;padding:12px 0}
.legal-masthead__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 20px}
.legal-home{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:"Barlow Condensed",Impact,sans-serif;text-transform:uppercase;font-weight:700;font-size:19px;letter-spacing:.3px}
.legal-home__mark{display:flex;color:var(--orange)}
.legal-home__mark svg{width:22px;height:22px;fill:currentColor}
.legal-back{font-size:13px;text-decoration:none;border-bottom:1px solid #ffffff55;padding-bottom:2px;transition:.2s}
.legal-back:hover,.legal-back:focus-visible{border-bottom-color:#fff}
.legal-masthead a:focus-visible{outline-color:#fff}

.legal{max-width:760px;padding-block:34px 46px}
.legal h1{color:var(--navy);font-size:38px;line-height:1.05}
.legal-subtitle{font-family:"Barlow Condensed",Impact,sans-serif;text-transform:uppercase;font-weight:700;font-size:22px;color:var(--orange);margin:4px 0 0}
.legal-banner{margin:22px 0 0;padding:14px 18px;background:var(--warm);border-left:5px solid var(--orange);border-radius:0 8px 8px 0;font-weight:600;font-size:15px;line-height:1.5;letter-spacing:.2px}
.legal section{margin-top:30px}
.legal h2{color:var(--navy);font-size:23px;margin-bottom:8px}
.legal p{font-size:15px;line-height:1.62;margin:0 0 11px}
.legal p:last-child{margin-bottom:0}
.legal-address{padding-left:18px;border-left:2px solid #ccc;color:#3b3b3b}
.legal-disclosure{margin-top:40px;padding-top:26px;border-top:2px solid var(--navy)}
.legal-disclosure p{font-size:12.5px;line-height:1.6;color:#3b3b3b}
.legal-attachment{margin-top:26px}
.legal-attachment a{display:inline-flex;align-items:center;gap:9px;padding:10px 15px;border:1px solid #c3ccd6;border-radius:8px;background:var(--warm);color:var(--navy);text-decoration:none;font-size:14px;font-weight:600;transition:.2s}
.legal-attachment a:hover,.legal-attachment a:focus-visible{border-color:var(--navy);background:#eee9e1}
.legal-attachment__icon{display:flex;color:var(--orange)}
.legal-attachment__icon svg{width:19px;height:19px;fill:currentColor}
@media(max-width:600px){.legal{padding-block:24px 34px}.legal h1{font-size:31px}.legal-subtitle{font-size:19px}.legal h2{font-size:21px}}

.site-footer{background:var(--navy);color:#fff;padding:26px 0 28px}
.footer-inner{display:flex;flex-wrap:wrap;gap:16px 40px;justify-content:space-between;align-items:flex-start}
.footer-org{font-family:"Barlow Condensed",Impact,sans-serif;text-transform:uppercase;font-weight:700;font-size:20px;line-height:1.1;margin:0}
.footer-partner{font-size:12px;margin:4px 0 0;color:#ffffffc4}
.footer-links{display:flex;flex-wrap:wrap;gap:18px}
.footer-links a{font-size:13px;text-decoration:none;border-bottom:1px solid #ffffff55;padding-bottom:2px;transition:.2s}
.footer-links a:hover,.footer-links a:focus-visible{color:var(--orange);border-bottom-color:var(--orange)}
.footer-legal{flex-basis:100%;font-size:11px;line-height:1.55;color:#ffffffab;margin:0;max-width:860px}
.footer-copyright{flex-basis:100%;font-size:11px;color:#ffffff8c;margin:0;border-top:1px solid #ffffff2e;padding-top:14px}

@media(max-width:900px){.wrap{width:min(100% - 40px,760px)}.mission{grid-template-columns:1fr;padding-block:18px}.mission-copy{border:0;padding:0}.florida-panel{border-top:1px solid #ccc;margin-top:14px;min-height:350px}.florida-map-image{width:88%;right:0}.action-grid{grid-template-columns:1fr 1fr}.action-card:last-child{grid-column:1/-1}.impact-grid{grid-template-columns:1fr 1fr}.impact article:nth-child(2){border:0}.impact article{margin:8px 0}.final-inner{flex-direction:column}}
@media(max-width:600px){.wrap{width:calc(100% - 32px)}.mission{padding-block:14px}.florida-panel{min-height:330px;margin-top:10px}.florida-map-image{width:100%;height:100%}.map-caption{left:6px;bottom:6px}.action-grid{grid-template-columns:1fr}.action-card:last-child{grid-column:auto}.section-heading{grid-template-columns:30px 1fr 30px;gap:10px}.impact-grid{grid-template-columns:1fr}.impact article{border-right:0;border-bottom:1px solid #ffffff75;padding:13px 8px}.final-buttons{width:100%;flex-direction:column}.final-buttons a{justify-content:center}.final-message h2{font-size:25px}.final-icon svg{width:44px;height:44px}.footer-inner{flex-direction:column;gap:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
