/* Campaña Gym · composición de la referencia enviada por el club. */
#gym-campaign{padding:0;background:#faf9f6;color:#25483e;overflow:hidden}
.gym-inner{max-width:1600px;margin:auto}
.gym-poster{position:relative;container-type:inline-size;aspect-ratio:1448/1086;background:url('/assets/gym-campaign-scene-20260912.png') center top/100% auto no-repeat}
.gym-campaign-header{position:absolute;left:3.9%;right:2.8%;top:3.7%;display:grid;grid-template-columns:29.5% 42.5% 28%;align-items:start}
.gym-brand{display:flex;align-items:center;gap:1.9cqw;min-width:0;padding-left:1.3cqw}
.gym-crest{display:block;width:5.7cqw;height:7.45cqw;flex:none;overflow:hidden;clip-path:polygon(50% 2%,98% 12%,98% 64%,88% 80%,50% 99%,14% 82%,2% 64%,2% 12%)}
.gym-brand-name{font:500 2.3cqw/1.25 var(--body);letter-spacing:.11em;text-transform:uppercase;white-space:nowrap}
.gym-brand-name span{display:block;text-align:center;margin-top:.35em;font-size:1.35cqw;letter-spacing:.43em}
.gym-heading{text-align:center;padding:.5cqw 1.2cqw 0 0}
#gym-campaign h2{font:700 italic 4.6cqw/.95 'Times New Roman',Georgia,serif;letter-spacing:-.035em;color:#203f36;text-transform:none}
#gym-campaign h2 span{display:block;white-space:nowrap}
.gym-heading p{display:flex;align-items:center;justify-content:center;gap:1cqw;margin-top:1.2cqw;font-size:.84cqw;letter-spacing:.16em;line-height:1.4;text-transform:uppercase;font-weight:600;white-space:nowrap}
.gym-heading p::before,.gym-heading p::after{content:'';height:1px;flex:1;min-width:1.4cqw;background:var(--dorado)}
.gym-funding{border-left:1px solid var(--dorado);padding-left:3cqw;margin-top:1.3cqw;min-width:0}
.gym-label{display:block;font:500 .94cqw/1.2 var(--body);letter-spacing:.15em;text-transform:uppercase}
.gym-goal{display:block;font:600 2.5cqw/1.25 var(--body);letter-spacing:-.03em;white-space:nowrap}
.gym-progress-wrap{position:relative;margin:.55cqw 0 1.65cqw}
.gym-progress{display:block;appearance:none;width:100%;height:1.65cqw;border:0;border-radius:99px;overflow:hidden;background:#d7d6d1;color:#25483e}
.gym-progress::-webkit-progress-bar{background:#d7d6d1;border-radius:99px}
.gym-progress::-webkit-progress-value{background:linear-gradient(90deg,#24463b,#365b4e);border-radius:99px;transition:width .6s ease}
.gym-progress::-moz-progress-bar{background:#25483e;border-radius:99px}
.gym-percent{position:absolute;top:0;left:.85cqw;font-size:.82cqw;line-height:1.65cqw;color:#fff;font-weight:600;text-shadow:0 1px 3px #18342e}
.gym-totals{display:grid;grid-template-columns:1fr 1fr;gap:1.4cqw}
.gym-totals>div+div{border-left:1px solid var(--dorado);padding-left:1.3cqw;text-align:right}
.gym-totals strong{display:block;font:500 1.43cqw/1.35 var(--body);white-space:nowrap;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.gym-totals .gym-label{font-size:.9cqw;letter-spacing:.13em;margin-bottom:.2cqw}
.gym-copy{position:absolute;left:3.9%;top:14.1%;width:17.8%;font:400 1.31cqw/1.36 var(--body)}
.gym-copy::before{content:'';display:block;width:9.3cqw;height:1px;background:var(--dorado);margin-bottom:1cqw}
.gym-copy strong{display:block;margin-top:.45cqw;font:bold 1.45cqw/1.2 Georgia,'Times New Roman',serif;white-space:nowrap;letter-spacing:-.035em}
.gym-mobile-scene{display:none}
.gym-build{position:absolute;top:47.7%;left:3.9%;right:3.7%;margin:0}
.gym-wall{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(10,2.7cqw);gap:.28cqw}
.gym-brick{position:relative;min-width:0;border:1px solid #d2d0ca;background:linear-gradient(145deg,#e9e7e2,#d9d7d1);border-radius:4px;isolation:isolate;box-shadow:inset 0 1px 3px #ffffffa0}
.gym-brick::after{content:'+';position:absolute;inset:0;display:grid;place-items:center;color:#858982;font-size:1.35cqw;font-weight:300;z-index:-1}
.gym-brick-fill{position:absolute;inset:-1px auto -1px -1px;width:var(--fill,0%);background:linear-gradient(115deg,#2d5044,#25473c);border-radius:4px;box-shadow:inset 0 1px 4px #ffffff30,inset 0 -2px 4px #00000010}
.gym-brick-label{position:relative;display:flex;align-items:center;justify-content:center;height:100%;padding:3px 4px;text-align:center;font-size:.9cqw;line-height:1.15;overflow:hidden;overflow-wrap:anywhere;white-space:pre-line;color:white}
.gym-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.gym-brick.has-contributor::after{display:none}
.gym-brick.has-unfilled-label .gym-brick-label{color:#183b2f;text-shadow:0 0 3px white,0 0 5px white,0 0 7px white}
.gym-brick{grid-row:var(--row);grid-column:var(--column)}
.gym-brick-logo{position:absolute;inset:5px;width:calc(100% - 10px);height:calc(100% - 10px);object-fit:contain;padding:3px;background:#fff;border-radius:2px;opacity:0}
.gym-brick.has-logo .gym-brick-logo{opacity:1}
.gym-brick.has-logo .gym-brick-label{visibility:hidden}
.gym-brick.has-dark-logo .gym-brick-logo{background:#183b2f}
.gym-brick.is-placing .gym-brick-logo{animation:gym-place .65s var(--ease) both;animation-delay:var(--delay,0ms)}
.gym-brick.is-placing .gym-brick-label{animation:gym-place .65s var(--ease) both;animation-delay:var(--delay,0ms)}
.gym-brick.is-placing .gym-brick-fill{animation:gym-place .65s var(--ease) both;animation-delay:var(--delay,0ms)}
@keyframes gym-place{0%{opacity:0;transform:translateY(-16px) rotate(-3deg)}65%{opacity:1;transform:translateY(2px) rotate(0)}100%{opacity:1;transform:translateY(0)}}
.gym-wall-caption{display:flex;justify-content:space-between;gap:12px;max-width:70%;margin:.75cqw auto 0;font-size:.75cqw;line-height:1.4;color:#4f625a}
.gym-wall-caption b{font-weight:500}
.gym-tagline{position:absolute;top:91.2%;left:29.3%;right:29.3%;display:flex;align-items:center;justify-content:center;gap:1.5cqw;white-space:nowrap;font:500 1.2cqw/1.4 var(--body);letter-spacing:.2em;text-transform:uppercase}
.gym-tagline::before,.gym-tagline::after{content:'';height:1px;background:var(--dorado);flex:1;min-width:5cqw}
.gym-participate{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;column-gap:26px;row-gap:12px;padding:0 6% 35px;background:#faf9f6}
.gym-sponsors-band{background:#fff;padding:22px 4% 30px;margin-bottom:28px}
#gym-campaign .gym-sponsors-band h3{text-align:center;font:500 11px/1.4 var(--body);letter-spacing:.2em;text-transform:uppercase;color:#315447;margin:0 0 22px}
.gym-sponsors{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px 28px;list-style:none;margin:0;padding:0;align-items:center}
.gym-sponsor{height:60px;min-width:0;display:flex;align-items:center;justify-content:center;padding:5px;font:600 16px/1.2 var(--body);color:#234c3b;text-align:center}
.gym-sponsor img,.gym-sponsor svg{display:block;width:100%;height:100%;object-fit:contain}
.gym-sponsor-monochrome{filter:brightness(0);opacity:.85}
.gym-sponsor-dark{background:#183b2f;border-radius:2px;padding:9px}
@media(max-width:700px){.gym-sponsors-band{padding:22px 5% 26px}.gym-sponsors{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 14px}.gym-sponsor{height:44px;padding:2px;font-size:13px}.gym-sponsor-dark{padding:6px}}
#gym-campaign .gym-cta{display:inline-flex;align-items:center;gap:28px;min-height:48px;padding:14px 24px;background:linear-gradient(115deg,#2d5044,#25473c);color:white;border:1px solid #315447;border-radius:5px;font:600 .78rem/1.3 var(--body);letter-spacing:.06em;text-decoration:none;transition:transform .2s,background .2s}
#gym-campaign .gym-cta:hover{background:#1e3a30;transform:translateY(-2px)}
#gym-campaign a:focus-visible{outline:3px solid var(--dorado);outline-offset:5px}
.gym-project-link{font-size:.8rem;text-underline-offset:4px}
.gym-contact-note,.gym-status,.gym-updated{width:100%;text-align:center;font-size:.72rem;line-height:1.5}
.gym-status:empty,.gym-updated:empty{display:none}
@media(max-width:900px){
 .gym-poster{aspect-ratio:auto;background:none;padding-top:28px}
 .gym-campaign-header{position:static;display:flex;flex-direction:column;align-items:center;gap:26px;margin:0 6%}
 .gym-brand{gap:18px;padding:0}.gym-crest{width:53px;height:67px}.gym-brand-name{font-size:23px}.gym-brand-name span{font-size:12px}
 .gym-heading{padding:0;width:100%}#gym-campaign h2{font-size:clamp(30px,7.2vw,58px);letter-spacing:-.055em;line-height:1.02}
 .gym-heading p{white-space:normal;font-size:9px;letter-spacing:.15em;margin:15px auto 0;max-width:420px;gap:10px}
 .gym-heading p::before,.gym-heading p::after{min-width:22px;max-width:35px}
 .gym-funding{width:min(100%,430px);border:0;border-top:1px solid var(--dorado);padding:20px 0 0;margin:0}
 .gym-label{font-size:11px;letter-spacing:.18em}.gym-goal{font-size:32px;margin-top:3px}
 .gym-progress-wrap{margin:8px 0 17px}.gym-progress{height:22px}.gym-percent{font-size:11px;line-height:22px;left:12px}
 .gym-totals{gap:20px}.gym-totals>div+div{padding-left:20px}.gym-totals strong{font-size:21px}.gym-totals .gym-label{font-size:10px;margin-bottom:3px}
 .gym-copy{position:static;width:min(88%,440px);margin:24px auto 0;text-align:center;font-size:13px;line-height:1.5}.gym-copy::before{display:none}.gym-copy strong{font-size:21px;margin-top:6px}
 .gym-mobile-scene{display:block;height:32vw;margin-top:2px;background:url('/assets/gym-campaign-scene-20260912.png') center -14.3vw/132% auto no-repeat}
 .gym-build{position:relative;top:auto;left:auto;right:auto;margin:-2px 4% 0}
 .gym-wall{grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(10,48px);gap:3px}
 .gym-brick::after{font-size:14px}.gym-brick-label{font-size:9px;padding:2px}
 .gym-wall-caption{max-width:none;font-size:10px;margin-top:9px;flex-wrap:wrap;gap:3px 12px}
 .gym-tagline{position:static;margin:26px 7% 30px;font-size:11px;letter-spacing:.15em;gap:12px}.gym-tagline::before,.gym-tagline::after{min-width:16px}
 .gym-participate{padding-bottom:28px;column-gap:20px}.gym-contact-note,.gym-status,.gym-updated{font-size:11px}
}
@media(max-width:700px){
 .gym-wall{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(20,48px)}
 .gym-brick-label{font-size:11px}
 .gym-brick{grid-row:var(--mobile-row);grid-column:var(--mobile-column)}
}
@media(max-width:480px){
 .gym-brand-name{font-size:21px}.gym-copy{font-size:12px;max-width:285px}
}
@media(prefers-reduced-motion:reduce){#gym-campaign *,#gym-campaign *::before,#gym-campaign *::after{animation:none!important;transition:none!important}}
