.tracker-container{
display:flex;
-webkit-display:flex;
width:100%;
max-width:640px;
margin:0 auto 48px auto;
border-radius:12px;
overflow:hidden;
box-shadow: 0 6px 0 #967bb6;
font-family: 'Rajdhani', sans-serif;
font-weight:bold;
font-size:22px;
text-transform:uppercase;
}
.tracker-label{
padding:24px;
text-align:center;
background-color:#613290;
color:#ffffff;
width:65%;
}
.tracker-number{
padding:24px;
text-align:center;
background-color:#7a57a2;
color:#ffffff;
width:35%;
}
.images{
display:flex;
justify-content:center;
}
.button{
display:inline-block;
padding:8px 12px;
font-weight: 700;
text-decoration:none;
background-color:#fff;
color:#582c83;
border:1px solid #582c83;
transition:.15s;
font-family: 'Rajdhani', sans-serif;
text-transform:uppercase;
position:relative;
z-index:2;
}
.button:after{
content:'';
display:block;
position:absolute;
left:0;
top:0;
height:100%;
width:0;
transition:.15s;
z-index:-1;
background:#582c83;
}
.button:hover{
color:#fff;
}
.button:hover:after{
width:100%;
}
.headsup{
display:flex;
flex-wrap:wrap;
}
PLEASE NOTE: THE 2025 READING PROGRAM HAS CONCLUDED, WITH 230 KIDS READING OVER 3,482 BOOKS IN THE MONTH OF MARCH! CHECK BACK IN FEBRUARY 2026 FOR NEXT YEAR'S PROGRAM.
Every March, Northwestern Athletics encourages youth to get out and read! Local students in grades K-8 can earn prizes by reading books throughout the month. For every three books read, up to 18 books, students can earn a prize from Northwestern Athletics and Willie the Wildcat!
There are two ways to get involved.
Participate as a classroom:
Local organizations – such as schools, individual classrooms, and before and after school programs can participate as a collective. To participate, your teacher or group leader can email rebekah.sigman@northwestern.edu with the estimated number of participants and your group name. Your group leader can submit one list via email for all students, including the number of books read by each student, by 5:00 pm on April 1, 2025. Prize packs will be delivered to your organization on April 3rd.
Participate as an individual:
If your child is interested in the reading program and they are not affiliated with a classroom or organization already participating, a parent or guardian can complete our online submission form. At any time between March 1 and April 1, complete the sign-up form below indicating the number of books the student has read. Prizes can then be picked up on April 4th from 9:00-11:30 or 2:00-3:45 at 2701 Ashland Avenue. You can email rebekah.sigman@northwestern.edu with any questions.
PLEASE NOTE: THIS FORM IS NO LONGER ACCEPTING SUBMISSIONS AND WILL REOPEN IN 2026.
Submit Your ReadINg Total & Claim Your Prize
Click here to download the Book Tracker.
var image = document.getElementById("img1");
var src = ["/images/2021/1/27/Rose_Coloring.png", "/images/2021/1/27/IMG_7713_71.JPG", "/images/2022/6/28/20211102_080030.jpg", "/images/2022/6/28/20211102_081715.jpg", "/images/2022/6/28/20211102_081709.jpg", "/images/2022/6/28/20211102_081729.jpg", "/images/2022/6/28/20211102_081741.jpg", "/images/2021/1/27/Books_for_Buckets_Palchak2_71.jpg",];
var home = "default";
var alt =["Books for Buckets Rose", "Books for Buckets image 2", "Books for Buckets image 3", "Books for Buckets image 4", "Books for Buckets image 5", "Books for Buckets image 6", "Books for Buckets image 7", "Books for Buckets image 1"]
if (home == "mscr") {
image.src = "scr_img.jpg";
image.alt = "Men's Soccer Facilities Photo"
} else if (home == "wtrk") {
image.src = "wtrk_img.jpg";
image.alt = "Women's Track Facilities Photo"
} else {
var step=0
function slideit() {
image.src = src[step];
image.alt = alt[step];
if(step<7){
step++;
}else{
step=0;
}
}
setInterval(slideit,5000);
}
.footer{
margin: auto;
width: 100%;
text-align: center;
padding: 10px;
background-color:#003DA5;
border: 1px solid #fff;
color:#fff;
}
.footer a{
color:#fff;
}
.carousel-wrapper {
overflow: hidden;
box-sizing: border-box;
}
.carousel-wrapper-two {
overflow: hidden;
width:50%;
margin:auto;
box-sizing: border-box;
}
.carousel {
transform-style: preserve-3d;
}
.carousel__photo {
opacity: 0;
position: absolute;
top:0;
width: 100%;
margin: auto;
padding: 1rem 4rem;
z-index: 100;
transition: transform .5s, opacity .5s, z-index .5s;
}
.carousel__photo.initial,
.carousel__photo.active {
opacity: 1;
position: relative;
z-index: 900;
}
.carousel__photo.prev,
.carousel__photo.next {
z-index: 800;
}
.carousel__photo.prev {
transform: translateX(-100%); /* Move 'prev' item to the left */
}
.carousel__photo.next {
transform: translateX(100%); /* Move 'next' item to the right */
}
.carousel__button--prev,
.carousel__button--next {
position: absolute;
top:50%;
width: 3rem;
height: 3rem;
background-color:rgba(255,255,255,0.0);
transform: translateY(-50%);
border-radius: 50%;
cursor: pointer;
z-index: 1001; /* Sit on top of everything */
}
.carousel__button--prev {
left:0;
}
.carousel__button--next {
right:0;
}
.carousel__button--prev::after,
.carousel__button--next::after {
content: " ";
position: absolute;
width: 10px;
height: 10px;
top: 50%;
left: 54%;
border-right: 2px solid black;
border-bottom: 2px solid black;
transform: translate(-50%, -50%) rotate(135deg);
}
.carousel__button--next::after {
left: 47%;
transform: translate(-50%, -50%) rotate(-45deg);
}
.carousel-two {
transform-style: preserve-3d;
}
.carousel__photo-two {
opacity: 0;
position: absolute;
top:0;
width: 100%;
margin: auto;
padding: 1rem 4rem;
z-index: 100;
transition: transform .5s, opacity .5s, z-index .5s;
}
.carousel__photo-two.initial,
.carousel__photo-two.active {
opacity: 1;
position: relative;
z-index: 900;
}
.carousel__photo-two.prev,
.carousel__photo-two.next {
z-index: 800;
}
.carousel__photo-two.prev {
transform: translateX(-100%); /* Move 'prev' item to the left */
}
.carousel__photo-two.next {
transform: translateX(100%); /* Move 'next' item to the right */
}
.carousel__button-two--prev,
.carousel__button-two--next {
position: absolute;
top:50%;
width: 3rem;
height: 3rem;
background-color:rgba(255,255,255,0.0);
transform: translateY(-50%);
border-radius: 50%;
cursor: pointer;
z-index: 1001; /* Sit on top of everything */
}
.carousel__button-two--prev {
left:0;
}
.carousel__button-two--next {
right:0;
}
.carousel__button-two--prev::after,
.carousel__button-two--next::after {
content: " ";
position: absolute;
width: 10px;
height: 10px;
top: 50%;
left: 54%;
border-right: 2px solid black;
border-bottom: 2px solid black;
transform: translate(-50%, -50%) rotate(135deg);
}
.carousel__button-two--next::after {
left: 47%;
transform: translate(-50%, -50%) rotate(-45deg);
}
@media screen and (max-width: 800px) {
.carousel-wrapper-two {
width:100%;
}
}
!(function(d){
// Variables to target our base class, get carousel items, count how many carousel items there are, set the slide to 0 (which is the number that tells us the frame we're on), and set motion to true which disables interactivity.
var itemClassName = "carousel__photo";
items = d.getElementsByClassName(itemClassName),
totalItems = items.length,
slide = 0,
moving = true;
// To initialise the carousel we'll want to update the DOM with our own classes
function setInitialClasses() {
// Target the last, initial, and next items and give them the relevant class.
// This assumes there are three or more items.
items[totalItems - 1].classList.add("prev");
items[0].classList.add("active");
items[1].classList.add("next");
}
// Set click events to navigation buttons
function setEventListeners() {
var next = d.getElementsByClassName('carousel__button--next')[0],
prev = d.getElementsByClassName('carousel__button--prev')[0];
next.addEventListener('click', moveNext);
prev.addEventListener('click', movePrev);
}
// Disable interaction by setting 'moving' to true for the same duration as our transition (0.5s = 500ms)
function disableInteraction() {
moving = true;
setTimeout(function(){
moving = false
}, 500);
}
function moveCarouselTo(slide) {
// Check if carousel is moving, if not, allow interaction
if(!moving) {
// temporarily disable interactivity
disableInteraction();
// Preemptively set variables for the current next and previous slide, as well as the potential next or previous slide.
var newPrevious = slide - 1,
newNext = slide + 1,
oldPrevious = slide - 2,
oldNext = slide + 2;
// Test if carousel has more than three items
if ((totalItems - 1) > 3) {
// Checks if the new potential slide is out of bounds and sets slide numbers
if (newPrevious <= 0) {
oldPrevious = (totalItems - 1);
} else if (newNext >= (totalItems - 1)){
oldNext = 0;
}
// Check if current slide is at the beginning or end and sets slide numbers
if (slide === 0) {
newPrevious = (totalItems - 1);
oldPrevious = (totalItems - 2);
oldNext = (slide + 1);
} else if (slide === (totalItems -1)) {
newPrevious = (slide - 1);
newNext = 0;
oldNext = 1;
}
// Now we've worked out where we are and where we're going, by adding and removing classes, we'll be triggering the carousel's transitions.
// Based on the current slide, reset to default classes.
items[oldPrevious].className = itemClassName;
items[oldNext].className = itemClassName;
// Add the new classes
items[newPrevious].className = itemClassName + " prev";
items[slide].className = itemClassName + " active";
items[newNext].className = itemClassName + " next";
}
}
}
// Next navigation handler
function moveNext() {
// Check if moving
if (!moving) {
// If it's the last slide, reset to 0, else +1
if (slide === (totalItems - 1)) {
slide = 0;
} else {
slide++;
}
// Move carousel to updated slide
moveCarouselTo(slide);
}
}
// Previous navigation handler
function movePrev() {
// Check if moving
if (!moving) {
// If it's the first slide, set as the last slide, else -1
if (slide === 0) {
slide = (totalItems - 1);
} else {
slide--;
}
// Move carousel to updated slide
moveCarouselTo(slide);
}
}
// Initialise carousel
function initCarousel() {
setInitialClasses();
setEventListeners();
// Set moving to false now that the carousel is ready
moving = false;
}
// make it rain
initCarousel();
}(document));
!(function(b){
// Variables to target our base class, get carousel items, count how many carousel items there are, set the slide to 0 (which is the number that tells us the frame we're on), and set motion to true which disables interactivity.
var itemClassN = "carousel__photo-two";
itemz = b.getElementsByClassName(itemClassN),
totalItemz = itemz.length,
slyde = 0,
movin = true;
// To initialise the carousel we'll want to update the DOM with our own classes
function setInitClasses() {
// Target the last, initial, and next items and give them the relevant class.
// This assumes there are three or more items.
itemz[totalItemz - 1].classList.add("prev");
itemz[0].classList.add("active");
itemz[1].classList.add("next");
}
// Set click events to navigation buttons
function setEvntListeners() {
var next = b.getElementsByClassName('carousel__button-two--next')[0],
prev = b.getElementsByClassName('carousel__button-two--prev')[0];
next.addEventListener('click', moveNxt);
prev.addEventListener('click', movePrv);
}
// Disable interaction by setting 'moving' to true for the same duration as our transition (0.5s = 500ms)
function disInteraction() {
movin = true;
setTimeout(function(){
movin = false
}, 500);
}
function moveCarouselT(slyde) {
// Check if carousel is moving, if not, allow interaction
if(!movin) {
// temporarily disable interactivity
disInteraction();
// Preemptively set variables for the current next and previous slyde, as well as the potential next or previous slide.
var newPrev = slyde - 1,
newNxt = slyde + 1,
oldPrev = slyde - 2,
oldNxt = slyde + 2;
// Test if carousel has more than three items
if ((totalItemz - 1) > 3) {
// Checks if the new potential slide is out of bounds and sets slide numbers
if (newPrev <= 0) {
oldPrev = (totalItemz - 1);
} else if (newNxt >= (totalItemz - 1)){
oldNxt = 0;
}
// Check if current slide is at the beginning or end and sets slide numbers
if (slyde === 0) {
newPrev = (totalItemz - 1);
oldPrev = (totalItemz - 2);
oldNxt = (slyde + 1);
} else if (slyde === (totalItemz -1)) {
newPrev = (slyde - 1);
newNxt = 0;
oldNxt = 1;
}
// Now we've worked out where we are and where we're going, by adding and removing classes, we'll be triggering the carousel's transitions.
// Based on the current slide, reset to default classes.
itemz[oldPrev].className = itemClassN;
itemz[oldNxt].className = itemClassN;
// Add the new classes
itemz[newPrev].className = itemClassN + " prev";
itemz[slyde].className = itemClassN + " active";
itemz[newNxt].className = itemClassN + " next";
}
}
}
// Next navigation handler
function moveNxt() {
// Check if moving
if (!movin) {
// If it's the last slide, reset to 0, else +1
if (slyde === (totalItemz - 1)) {
slyde = 0;
} else {
slyde++;
}
// Move carousel to updated slide
moveCarouselT(slyde);
}
}
// Previous navigation handler
function movePrv() {
// Check if moving
if (!movin) {
// If it's the first slide, set as the last slide, else -1
if (slyde === 0) {
slyde = (totalItemz - 1);
} else {
slyde--;
}
// Move carousel to updated slide
moveCarouselT(slyde);
}
}
// Initialise carousel
function iCarousel() {
setInitClasses();
setEvntListeners();
// Set moving to false now that the carousel is ready
movin = false;
}
// make it rain
iCarousel();
}(document));

About:
PLEASE NOTE: THE 2025 READING PROGRAM HAS CONCLUDED, WITH 230 KIDS READING OVER 3,482 BOOKS IN THE MONTH OF MARCH! CHECK BACK IN FEBRUARY 2026 FOR NEXT YEAR'S PROGRAM. Every March, Northwestern Athletics encourages youth to get out and read! Local students in grades K-8 can earn prizes by reading books throughout the month. For every three books read, up to 18 books, students can earn a prize from Northwestern Athletics and Willie the Wildcat!
There are two ways to get involved.
Participate as a classroom:
Local organizations – such as schools, individual classrooms, and before and after school programs can participate as a collective. To participate, your teacher or group leader can email rebekah.sigman@northwestern.edu with the estimated number of participants and your group name. Your group leader can submit one list via email for all students, including the number of books read by each student, by 5:00 pm on April 1, 2025. Prize packs will be delivered to your organization on April 3rd.
Participate as an individual:
If your child is interested in the reading program and they are not affiliated with a classroom or organization already participating, a parent or guardian can complete our online submission form. At any time between March 1 and April 1, complete the sign-up form below indicating the number of books the student has read. Prizes can then be picked up on April 4th from 9:00-11:30 or 2:00-3:45 at 2701 Ashland Avenue. You can email rebekah.sigman@northwestern.edu with any questions.
PLEASE NOTE: THIS FORM IS NO LONGER ACCEPTING SUBMISSIONS AND WILL REOPEN IN 2026.
Submit Your ReadINg Total & Claim Your Prize
Northwestern University’s student-athletes visited with students ages 5-12 at Books for Breakfast, a before school program offering a nutritious breakfast, homework assistance, and emotional care to Evanston students. Students who read 18 books won the grand prize package.