:root{font-family:Inter,Arial,Helvetica,sans-serif;color:#142034;background:#f4f5f7;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0}a{color:inherit}img{display:block;max-width:100%}.wrap{width:min(1200px,calc(100% - 48px));margin-inline:auto}.site-header{position:absolute;z-index:5;top:0;left:0;width:100%;color:#fff}.header-inner{min-height:106px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #ffffff5c}.brand{display:block;width:175px;flex:none}.brand img{width:100%;height:auto}nav{display:flex;align-items:center;gap:30px}nav a{text-decoration:none;font-weight:700;font-size:.91rem}nav a:hover{text-decoration:underline;text-underline-offset:5px}.lang{display:flex;gap:10px;border-left:1px solid #ffffff77;padding-left:20px}.lang [aria-current=page]{color:#fff;text-decoration:underline;text-decoration-color:#ee2737;text-decoration-thickness:3px;text-underline-offset:6px}a:focus-visible{outline:3px solid #f67d87;outline-offset:4px}.hero{position:relative;isolation:isolate;min-height:710px;display:flex;align-items:center;background:#12263c;color:#fff;overflow:hidden}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:55% center;z-index:-2}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0d1d31f2 0%,#0d1d31c8 43%,#0d1d3136 100%),linear-gradient(0deg,#0d1d31d4,transparent 40%);z-index:-1}.hero-content{padding-block:170px 100px}.eyebrow,.section-kicker{text-transform:uppercase;letter-spacing:.19em;font-size:.77rem;font-weight:850}.eyebrow{color:#ff7780}.hero h1{font-size:clamp(3.3rem,7.4vw,7rem);line-height:.96;letter-spacing:-.07em;max-width:840px;margin:24px 0 25px}.hero h1 em{font-style:normal;color:#ff6171}.hero p{font-size:clamp(1.06rem,1.8vw,1.3rem);line-height:1.55;max-width:590px;color:#e2e8ef}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:13px 21px;border:1px solid transparent;border-radius:2px;text-decoration:none;font-weight:800;font-size:.92rem;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button.primary{background:#ec2939;color:#fff}.button.primary:hover{background:#c91a2a}.button.outline{border-color:#ffffffad;color:#fff}.button.outline:hover{background:#ffffff24}.hero-caption{position:absolute;bottom:32px;right:max(24px,calc((100vw - 1200px)/2));font-size:.78rem;color:#e4eaf1}.intro{padding:95px 0 60px;background:#fff}.intro-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:80px;align-items:start}.section-kicker{color:#ce2534;margin:0 0 18px}.intro h2,.events h2,.contact h2{font-size:clamp(2.45rem,4.5vw,4.9rem);line-height:1.04;letter-spacing:-.055em;margin:0}.intro p:last-child{font-size:1.18rem;line-height:1.7;color:#4b5a69;margin:0}.events{padding:85px 0 105px;background:#f3f4f5}.events-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:36px}.events-head p:last-child{max-width:390px;color:#556474;line-height:1.6;margin:0}.feature{display:grid;grid-template-columns:1.08fr .92fr;background:#fff;box-shadow:0 25px 55px #0d22300f;min-height:500px}.feature-image{min-height:440px;overflow:hidden}.feature-image img{height:100%;width:100%;object-fit:cover;object-position:center}.feature-content{display:flex;flex-direction:column;justify-content:center;padding:clamp(30px,5vw,74px)}.pill{align-self:start;border:1px solid #e3a3aa;color:#bb2534;padding:8px 11px;font-size:.7rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.feature h3{font-size:clamp(2.1rem,3.5vw,3.8rem);line-height:1.06;letter-spacing:-.055em;margin:26px 0 18px}.feature p{color:#4f5e6e;line-height:1.66;font-size:1.05rem}.feature-link{margin-top:22px;color:#c82433;font-weight:800;text-underline-offset:5px}.event-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}.event-note{border-top:2px solid #dd2636;padding:22px 4px 0}.event-note strong{display:block;font-size:1.1rem}.event-note p{margin:8px 0;color:#526171;line-height:1.55}.triathlon{background:#112840;color:#fff;padding:90px 0}.triathlon-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.triathlon-image{height:330px;width:100%;object-fit:cover}.triathlon .section-kicker{color:#ff6d79}.triathlon h2{font-size:clamp(2.3rem,4vw,4.3rem);letter-spacing:-.055em;line-height:1.05;margin:0 0 20px}.triathlon p:not(.section-kicker){line-height:1.65;color:#d2dbe5;font-size:1.08rem}.triathlon a{color:#fff;font-weight:800;text-underline-offset:5px}.contact{padding:88px 0;background:#fff}.contact-grid{display:flex;align-items:end;justify-content:space-between;gap:30px}.contact p:last-child{color:#516171;font-size:1.08rem;line-height:1.6;max-width:620px}.contact .button{flex:none}.footer{background:#0d1e31;color:#d5dfe9;padding:30px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:25px;flex-wrap:wrap;font-size:.83rem}.footer a{text-underline-offset:4px}@media(max-width:900px){nav{gap:16px}.intro-grid,.triathlon-grid{gap:36px}.feature{grid-template-columns:1fr 1fr}}@media(max-width:700px){.wrap{width:min(100% - 36px,1200px)}.header-inner{min-height:84px}.brand{width:120px}nav{gap:13px}nav>a:not(.contact-nav){display:none}.lang{padding-left:12px;gap:6px}.hero{min-height:650px}.hero-content{padding-block:150px 100px}.hero-photo{object-position:60% center}.hero-caption{right:18px;bottom:18px}.intro,.events,.triathlon,.contact{padding-block:65px}.intro-grid,.triathlon-grid,.feature{grid-template-columns:1fr}.events-head{display:block}.events-head p:last-child{margin-top:17px}.feature-image{min-height:0;height:300px}.feature-content{padding:32px 24px 40px}.event-notes{grid-template-columns:1fr}.triathlon-image{height:260px}.contact-grid{display:block}.contact .button{margin-top:10px}}@media(max-width:360px){.brand{width:100px}.contact-nav{font-size:.78rem}.lang a{font-size:.78rem}}

/* 2027 Gran Canaria cycling camp */
.camp{display:grid;grid-template-columns:minmax(225px,.36fr) 1fr;margin-bottom:24px;background:#132a42;color:#fff;box-shadow:0 25px 55px #0d223015;scroll-margin-top:24px}.camp-date{display:flex;flex-direction:column;justify-content:center;padding:40px 34px;background:#e52c3d;color:#fff}.camp-date span{font-size:clamp(2.8rem,5vw,5.2rem);font-weight:900;letter-spacing:-.07em;line-height:1}.camp-date strong{font-size:1.25rem;line-height:1.16;letter-spacing:.08em;margin-top:12px}.camp-date small{font-size:.95rem;margin-top:40px}.camp-content{padding:clamp(30px,4vw,55px)}.camp .pill{border-color:#f18b95;color:#ff9da5}.camp h3{font-size:clamp(2rem,3.4vw,3.6rem);letter-spacing:-.055em;line-height:1.05;margin:22px 0}.camp h3 em{font-style:normal;color:#ff8a95}.camp p{color:#dce5ee;line-height:1.6;max-width:700px;font-size:1.04rem}.camp-facts{display:flex;flex-wrap:wrap;gap:10px 23px;padding:0;margin:25px 0 27px;list-style:none}.camp-facts li{border-top:1px solid #ffffff5a;padding-top:10px;color:#f2f5f8;font-weight:650;font-size:.92rem}.camp-link{color:#fff;font-weight:800;text-decoration-color:#fb6574;text-decoration-thickness:2px;text-underline-offset:6px}@media(max-width:700px){.camp{grid-template-columns:1fr}.camp-date{padding:22px 25px;display:grid;grid-template-columns:auto 1fr;column-gap:18px;align-items:center}.camp-date span{font-size:2.6rem}.camp-date strong{font-size:.92rem;margin:0}.camp-date small{grid-column:1/-1;margin-top:8px}.camp-content{padding:30px 24px 38px}}

.intro-link{display:inline-block;color:#c82433;font-weight:800;text-underline-offset:5px;white-space:nowrap;margin-top:8px}

.camp-promoters{margin-top:25px}.camp-promoters h4{margin:0 0 12px;font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:#ff9da5}.camp-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.camp-person{display:flex;align-items:center;gap:13px;background:#ffffff12;border:1px solid #ffffff27;padding:8px}.camp-person img{width:100px;height:90px;flex:none;object-fit:cover;object-position:40% 30%}.camp-person:nth-child(2) img{object-position:center 38%}.camp-person strong,.camp-person span{display:block}.camp-person strong{font-size:1rem}.camp-person span{color:#dce5ee;font-size:.82rem;line-height:1.4;margin-top:3px}@media(max-width:1000px){.camp-people{grid-template-columns:1fr}}@media(max-width:700px){.camp-person img{width:90px;height:84px}}

.camp-scene{grid-column:1/-1;position:relative;height:255px;margin:0;overflow:hidden}.camp-scene img{width:100%;height:100%;object-fit:cover;object-position:center 45%}.camp-scene figcaption{position:absolute;right:15px;bottom:13px;background:#0d1d31bf;color:#fff;padding:6px 10px;font-size:.72rem}@media(max-width:700px){.camp-scene{height:205px}.camp-scene img{object-position:center 47%}}

/* Complete group photo, short biographies and accessible photo zoom. */
.camp-scene{width:min(100%,900px);max-width:900px;height:auto;margin:0 auto 28px;overflow:visible}.camp-scene img{width:100%;height:auto;object-fit:contain}.camp-scene .photo-link{display:block}.camp-person{align-items:flex-start}.camp-person .photo-link{flex:none}.camp-person .camp-bio{font-size:.82rem;line-height:1.48;margin:9px 0 0;color:#dce5ee}.photo-link{display:block;cursor:zoom-in}.photo-link:hover img{filter:brightness(1.09)}.feature-image .photo-link{height:100%}.hero-photo-link{position:absolute;inset:0;z-index:0;cursor:zoom-in}.hero-photo-link .hero-photo{z-index:auto}.hero:after{z-index:1;pointer-events:none}.hero-content{position:relative;z-index:2;pointer-events:none}.hero-content a{pointer-events:auto}.hero-caption{z-index:2;pointer-events:none}.hero-zoom-hint{position:absolute;bottom:30px;left:max(24px,calc((100vw - 1200px)/2));z-index:2;background:#0d1d31ab;padding:7px 10px;font-size:.75rem;font-weight:700;color:#fff}.photo-lightbox{border:0;border-radius:3px;background:#0b1829;color:#fff;padding:24px;max-width:min(96vw,1500px);max-height:96vh;box-shadow:0 30px 90px #0008}.photo-lightbox::backdrop{background:#07111de8}.photo-lightbox img{max-width:calc(96vw - 48px);max-height:calc(96vh - 105px);width:auto;height:auto;object-fit:contain;margin:auto}.photo-lightbox p{text-align:center;margin:12px 40px 0;font-size:.85rem}.photo-lightbox-close{position:absolute;top:4px;right:8px;border:0;background:#142b43;color:#fff;font-size:2rem;line-height:1;width:42px;height:42px;cursor:pointer}.photo-lightbox-close:focus-visible{outline:3px solid #ff7780}@media(max-width:700px){.camp-scene{height:auto}.camp-scene img{height:auto;object-fit:contain}.hero-zoom-hint{left:18px;bottom:18px}.photo-lightbox{padding:15px}.photo-lightbox img{max-width:calc(96vw - 30px);max-height:calc(96vh - 95px)}}

/* Fill the full blue camp panel while keeping the cyclists in frame. */
.camp-scene{width:100%;max-width:none;aspect-ratio:9/5;height:auto;margin:0;overflow:hidden}.camp-scene .photo-link{height:100%}.camp-scene img{width:100%;height:100%;object-fit:cover;object-position:center 56%}@media(max-width:700px){.camp-scene{aspect-ratio:3/2;height:auto}.camp-scene img{height:100%;object-fit:cover;object-position:center}}

.bikerides{display:grid;grid-template-columns:minmax(225px,.36fr) 1fr;background:#fff;margin:0 0 24px;box-shadow:0 18px 38px #0d22300d;scroll-margin-top:24px}.bikerides-label{display:flex;flex-direction:column;justify-content:center;padding:30px 34px;background:#e8edf0;border-left:5px solid #e52c3d}.bikerides-label span{font-size:.76rem;font-weight:850;color:#be2736;letter-spacing:.12em;text-transform:uppercase}.bikerides-label strong{font-size:clamp(2.8rem,5vw,4.5rem);line-height:1;letter-spacing:-.07em;margin:17px 0 5px}.bikerides-label small{font-size:1rem;color:#485a69}.bikerides-content{padding:clamp(28px,3.5vw,45px)}.bikerides h3{font-size:clamp(2rem,3vw,3.3rem);letter-spacing:-.055em;line-height:1.07;margin:18px 0}.bikerides p{color:#4f5e6e;line-height:1.6;max-width:700px}.bikerides ul{margin:17px 0 22px;padding-left:20px;color:#435363;line-height:1.65}.bikerides a{color:#c82433;font-weight:800;text-underline-offset:5px}@media(max-width:700px){.bikerides{grid-template-columns:1fr}.bikerides-label{padding:22px 24px}.bikerides-label strong{font-size:2.7rem;margin:6px 0}.bikerides-content{padding:28px 24px 35px}}

.camp-content p a{color:#fff;text-decoration-color:#ff8a95;text-underline-offset:3px}
