diff --git a/_includes/camelot_banner.html b/_includes/camelot_banner.html index f34d9962..36997b7a 100644 --- a/_includes/camelot_banner.html +++ b/_includes/camelot_banner.html @@ -1,49 +1,75 @@
-
-
- Drawing of the future cabin -
-
-

Camelot Bunkhouse Project

-

- A core part of the MITOC community, and in particular our access to the - mountains, continues to be our well-loved “Camelot” cabin, located in - central New Hampshire. As you may know, Camelot was built in the 1970s - (on a shoestring budget), and it is nearing the end of its useful life. - Since 2013, the Outing Club has been working to build new, safe and - modern sleeping quarters on the Camelot property, which will ensure that - MITOC can fulfill our mission for decades to come. -

+ + +
+ +
+ +
diff --git a/_layouts/bunkhouse.html b/_layouts/bunkhouse.html index 3e1282b7..b7f2af0f 100644 --- a/_layouts/bunkhouse.html +++ b/_layouts/bunkhouse.html @@ -4,7 +4,7 @@

Camelot bunkhouse

-

Coming 2025

+

Coming 2027

Site construction has started!

Green = MITOC events and office hours Red = Camelot reservations diff --git a/_pages/camelot/faqs.md b/_pages/camelot/faqs.md index 4f9d07cb..936e04a8 100644 --- a/_pages/camelot/faqs.md +++ b/_pages/camelot/faqs.md @@ -59,11 +59,11 @@ Yes, it is possible to donate by check! Please make your check payable to MIT F ### When will construction start? -We signed the contract for site preparation, including construction of the new parking lot and access trail, in December 2023. This construction started in summer 2024 and will wrap up in spring 2025. Funding permitting, the bunkhouse structure itself will be erected starting in summer 2025. +We signed the contract for site preparation, including construction of the new parking lot and access trail, in December 2023. This construction started in summer 2024 and will wrap up in spring 2025. Funding permitting, the bunkhouse structure itself will be erected starting in summer 2027. ### How long will construction take? -Construction of the bunkhouse will take about six months, but needs to be paused for winter weather. In the best case, the bunkhouse could be finished in 2025. If fundraising proceeds more slowly, construction would slip into 2026. +Construction of the bunkhouse will take about six months, but needs to be paused for winter weather. In the best case, the bunkhouse could be finished in 2028. If fundraising proceeds more slowly, construction would slip into 2027. ### Will the bunkhouse be heated? diff --git a/_pages/camelot/index.md b/_pages/camelot/index.md index d7be0cbb..f892c2ae 100644 --- a/_pages/camelot/index.md +++ b/_pages/camelot/index.md @@ -7,6 +7,6 @@ The MIT Outing Club’s “Camelot” cabin, set on 20 acres near Rumney, NH, ha The bunkhouse project has been in discussion for almost a decade. Active development was kick-started in 2018 by a generous initial donation in memory of Joris Naiman. From 2019 through 2021, the Outing Club worked with Maclay Architects to create a bunkhouse design that complies with all modern building codes, is satisfactory to MIT Facilities and the local town board, and yet maintains the wilderness ethos of the Outing Club and its Camelot property. This is no small feat! -With these designs in hand, the Outing Club kicked off fundraising in the fall of 2022. The project was approved by the Groton planning board in June 2023. Construction work started in summer of 2024, and the new bridge and access trail to the bunkhouse site are expected to be completed in spring 2025. With an estimated total cost of $500,000, we need your help in raising the funds to finish construction of the bunkhouse in 2025. If you are able, please consider donating to ensure MITOC can fulfill its mission for the next generation of MITOCers. +With these designs in hand, the Outing Club kicked off fundraising in the fall of 2022. The project was approved by the Groton planning board in June 2023. Construction work started in summer of 2024, and the new bridge and access trail to the bunkhouse site are expected to be completed in spring 2025. With an estimated total cost of $500,000, we need your help in raising the funds to finish construction of the bunkhouse in 2027. If you are able, please consider donating to ensure MITOC can fulfill its mission for the next generation of MITOCers. On behalf of the MIT Outing Club community, we look forward to seeing you in the near future at the new MITOC Camelot bunkhouse. diff --git a/_pages/events/screenings.md b/_pages/events/screenings.md index e828c6ee..de4113ac 100644 --- a/_pages/events/screenings.md +++ b/_pages/events/screenings.md @@ -175,7 +175,7 @@ and click on Pay to enter your credit card information.
-No Man's Land Film Festival is an all-woman adventure film festival based out of the Rocky Mountains of Colorado that meets a need and desire to highlight and connect individuals who identify as women in pursuit of the radical. We are a collaboration and celebration of humans who are deeply engaged in enhancing the female presence in the adventure arena. The goal of this festival is to connect like-minded individuals who are action-oriented, wish to support a shared vision of gender equality, have a desire to experience their passions and environments through a uniquely female lens, and above all, love adventure. Along with cultivating a deep interest in exploring the vastness of our planet from a female point of view, No Man's Land strives to create a history of motivating audiences to implement and inspire change. Our mission transcends the films presented; this festival acts as a platform for progressive thought and movement in the outdoor industry.  At No Man's Land, we aim to **un-****define feminine** in adventure and sport through film.  +No Man's Land Film Festival is an all-woman adventure film festival based out of the Rocky Mountains of Colorado that meets a need and desire to highlight and connect individuals who identify as women in pursuit of the radical. We are a collaboration and celebration of humans who are deeply engaged in enhancing the female presence in the adventure arena. The goal of this festival is to connect like-minded individuals who are action-oriented, wish to support a shared vision of gender equality, have a desire to experience their passions and environments through a uniquely female lens, and above all, love adventure. Along with cultivating a deep interest in exploring the vastness of our planet from a female point of view, No Man's Land strives to create a history of motivating audiences to implement and inspire change. Our mission transcends the films presented; this festival acts as a platform for progressive thought and movement in the outdoor industry. At No Man's Land, we aim to un-define 'feminine' in adventure and sport through film. * * * @@ -255,7 +255,7 @@ MITOC and [MIT LSC](http://lsc.mit.edu/) are pleased to bring you ### "[Reel Rock 12](https://reelrocktour.com/)" -on **Friday, Decemer 8th @ 7:30 PM** in [MIT Building 26-100](http://whereis.mit.edu/?go=26) +on **Friday, December 8th @ 7:30 PM** in [MIT Building 26-100](http://whereis.mit.edu/?go=26) **_$5 with a valid MIT ID or $10 for General Admission_** @@ -416,7 +416,7 @@ on **Tuesday, March 15th @ 7:30 PM** in [**MIT Building 26-100**](http://whereis Professional skier and filmmaker **[Kt Miller](http://www.ktmiller.photo/Website-Content/Pages/About)** is an ambassador for the Winter Wildlands Alliance and will help MIT's Outing Club host the Backcountry Film Festival. Her film about a skiing and sailing expedition from Iceland to Greenland, Shifting Ice + Changing Tides, won the festival's award for Best Environmental Message. During Intermission, Kt will give a talk about her work as a professional skier, photographer, and environmentalist, and the push by groups like the Winter Wildlands Alliance to preserve our winters. Further Bio:
-Kt is a Montana gal with a zest for adventure and knack for storytelling. She is one of only a handful of female adventure photographers capturing imagery in some of the wildest corners of the planet. Her raw storytelling is both thought provoking and inspiring. Along with her media skills she is an accomplished athlete in her own right and has skied many high level routes and first descents around the world. As a professional athlete for Dynafit,LowePro, and Winter Wildlands Alliance Kt specializes in human powered adventure. Each fall Kt spends a few months working in the Arctic with Polar Bears International as a media specialist, troubleshooting wireless internet on the tundra, photographing polar bears, and hosting the worlds leading polar bear and climate scientists for large digital outreach initiatives. She hopes her work inspires others to take action on climate change, connect more with the natural world, and become better stewards of the environment. +Kt is a Montana gal with a zest for adventure and knack for storytelling. She is one of only a handful of female adventure photographers capturing imagery in some of the wildest corners of the planet. Her raw storytelling is both thought provoking and inspiring. Along with her media skills she is an accomplished athlete in her own right and has skied many high level routes and first descents around the world. As a professional athlete for Dynafit,LowePro, and Winter Wildlands Alliance Kt specializes in human powered adventure. Each fall Kt spends a few months working in the Arctic with Polar Bears International as a media specialist, troubleshooting wireless internet on the tundra, photographing polar bears, and hosting the world's leading polar bear and climate scientists for large digital outreach initiatives. She hopes her work inspires others to take action on climate change, connect more with the natural world, and become better stewards of the environment. * * * diff --git a/_pages/index.md b/_pages/index.md index f41adfe1..9e5c437f 100644 --- a/_pages/index.md +++ b/_pages/index.md @@ -16,35 +16,446 @@ layout: default if (redirections[window.location.hash]) { window.location = redirections[window.location.hash] } + + // Decide early whether to use the static poster fallback instead of video + (function() { + try { + var conn = navigator.connection || navigator.mozConnection || navigator.webkitConnection; + var useFallback = false; + if (conn) { + // saveData users or very slow connections -> use fallback + if (conn.saveData) useFallback = true; + var slowTypes = ['slow-2g','2g']; + if (conn.effectiveType && slowTypes.indexOf(conn.effectiveType) !== -1) useFallback = true; + if (conn.downlink && conn.downlink < 0.8) useFallback = true; + } + // If we already decided fallback, apply a class so CSS can hide the video early + if (useFallback) document.documentElement.classList.add('use-fallback'); + // Also add a small timeout: if the video hasn't loaded metadata within 2500ms, switch to fallback + window.addEventListener('load', function() { + try { + var vid = document.querySelector('.home-background-media'); + if (!vid) return; + var switched = false; + var timeout = setTimeout(function() { + if (!switched && (!vid.readyState || vid.readyState < 1)) { + document.documentElement.classList.add('use-fallback'); + switched = true; + } + }, 2500); + vid.addEventListener('loadedmetadata', function() { clearTimeout(timeout); }); + // Ensure the video restarts after finishing unless we've switched to fallback + vid.addEventListener('ended', function() { + try { + if (!document.documentElement.classList.contains('use-fallback')) { + // Reset to start and attempt to play again (some browsers require this) + vid.currentTime = 0; + vid.play().catch(function(){}); + } + } catch (e) {} + }); + vid.addEventListener('error', function() { document.documentElement.classList.add('use-fallback'); clearTimeout(timeout); }); + } catch (e) {} + }); + } catch (e) {} + })(); + + function toggleCalendar() { + const panel = document.querySelector('.home-calendar-panel'); + const button = document.querySelector('.home-calendar-toggle'); + panel.classList.toggle('collapsed'); + const isCollapsed = panel.classList.contains('collapsed'); + button.textContent = isCollapsed ? 'Calendar ▶' : 'Calendar ▼'; + button.setAttribute('aria-expanded', !isCollapsed); + } + + function updateArrowVisibility() { + const arrow = document.querySelector('.home-scroll-arrow'); + if (!arrow) return; + // hide arrow when user is roughly 20% into the last section (not just absolute bottom) + const lastSection = document.getElementById('home-details'); + if (lastSection) { + const rect = lastSection.getBoundingClientRect(); + const lastTop = window.scrollY + rect.top; // document Y of last section top + // compute hide threshold: when page scroll reaches lastTop minus 20% of viewport + const hideAt = lastTop - (window.innerHeight * 0.2); + if (window.scrollY >= hideAt) { + arrow.classList.add('hidden'); + return; + } + } + + // fallback: hide when within 150px of page bottom + const fallbackThreshold = 150; + const scrolledNearBottom = (window.innerHeight + window.scrollY) >= (document.documentElement.scrollHeight - fallbackThreshold); + if (scrolledNearBottom) arrow.classList.add('hidden'); else arrow.classList.remove('hidden'); + } + + // run on load, scroll, and resize + window.addEventListener('load', updateArrowVisibility); + window.addEventListener('scroll', updateArrowVisibility, {passive: true}); + window.addEventListener('resize', updateArrowVisibility); + + // hide arrow shortly after clicking it (smooth scroll may be in effect) + document.addEventListener('click', function (e) { + const target = e.target.closest && e.target.closest('.home-scroll-arrow'); + if (target) setTimeout(updateArrowVisibility, 450); + }); + + // On every non-hash load, scroll down half a viewport to avoid the large header. + window.addEventListener('load', function () { + try { + if (window.location.hash) return; // respect anchors + // Desktop default ~45% viewport; reduce on smaller screens for better UX + // Reduced scroll fractions because banner height was halved + var fraction = 0.30; + if (window.innerWidth <= 768) { + // Mobile: scroll much less so header and hero remain visible + fraction = 0.15; + } else if (window.innerWidth <= 992) { + // Tablet/smaller laptops: slightly less than desktop + fraction = 0.20; + } + const startY = Math.round(window.innerHeight * fraction); + window.scrollTo({ top: startY, left: 0, behavior: 'auto' }); + } catch (e) { + // silent fallback + } + }); - + + + + + + + -
-
- + +
+
+

The MIT Outing Club (MITOC) is dedicated to helping the MIT and Cambridge community enjoy the great outdoors.

+

Join MITOC

-
+ + +
+
+

If you're new to MITOC, you should start by joining some of our mailing lists, which are used to announce club events and organize informal trips. Our calendar and trip signup are also good places to find upcoming MITOC events.

+

If you're interested in renting gear from MITOC, please read the gear rental information before coming to office hours.

+

If you want to sign up for a MITOC-organized trip or rent gear from us, you'll have to become a member.

+
+
diff --git a/_pages/mailing-lists.md b/_pages/mailing-lists.md index bd5b66ef..0b3506bf 100644 --- a/_pages/mailing-lists.md +++ b/_pages/mailing-lists.md @@ -76,7 +76,7 @@ If you're a MITOC member or alum living outside the Boston area, check out these ### Other Lists **[cabin-helpers](http://mailman.mit.edu/mailman/listinfo/cabin-helpers)** -: For anyone who wants to help out with the cabin's ongoing improvements and maintanence. +: For anyone who wants to help out with the cabin's ongoing improvements and maintenance. **[mitoc-gear](http://mailman.mit.edu/mailman/listinfo/mitoc-gear)** : gear tips and tricks, questions about gear, available sales and deals diff --git a/_pages/rentals/camelot.md b/_pages/rentals/camelot.md index c0642be3..1cd6c41f 100644 --- a/_pages/rentals/camelot.md +++ b/_pages/rentals/camelot.md @@ -8,7 +8,7 @@ - /images/camelot/pic4.jpg --- -Camelot is a rustic cabin located near Rumney, NH. The cabin is situated on 20 acres of forest and can accomodate groups of 40 or more people. Camelot is a 2.5 hour drive from Boston and is within 15 minutes of Rattlesnake Mountain and the world-famous sport climbing at Rumney. The cabin is set back about 1000 feet from the road and is only accessible by a rough foot trail. +Camelot is a rustic cabin located near Rumney, NH. The cabin is situated on 20 acres of forest and can accommodate groups of 40 or more people. Camelot is a 2.5 hour drive from Boston and is within 15 minutes of Rattlesnake Mountain and the world-famous sport climbing at Rumney. The cabin is set back about 1000 feet from the road and is only accessible by a rough foot trail. **Prior permission from the Camelot managers is required for ALL USES of the cabin or grounds. Contact [camelot-mgr@mit.edu](mailto:camelot-mgr@mit.edu) to request permission. Use of the cabin or grounds without permission is trespassing and we will call the police.** All MITOC members may request permission to camp on the grounds, but only trained keyholders may reserve the cabin itself. Check the [cabins](/rentals/cabins) page for more information. @@ -16,7 +16,7 @@ Camelot is a rustic cabin located near Rumney, NH. The cabin is situated on 20 a Camelot has electricity supplied by the Groton Wind project. There is a cell phone charging station with AC outlets and USB ports in the back left corner of the living room. The cabin is heated to about 60 degrees F by two wood-burning stoves. It takes two hours from when the wood-burning stoves are started for the cabin to heat up, so be prepared for cold conditions if you are the first to arrive on a cold day. -The cabin has no running water and users must bring their own drinking water. There is a stream through the property which flows year round except during extreme dry periods. Stream water is suitable for cooking and washing dishes _only if has been boiled first_. There is a pump system for delivering water from the stream to the cabin, but it is currently out of order. +The cabin has no running water and users must bring their own drinking water. There is a stream through the property which flows year round except during extreme dry periods. Stream water is suitable for cooking and washing dishes _only if it has been boiled first_. There is a pump system for delivering water from the stream to the cabin, but it is currently out of order. There is a kitchen with complete cooking facilities, including a high-end electric range. The kitchen also has an induction cooktop for ultra-fast boiling water. The induction cooktop only works with steel pots. The kitchen is well stocked with dishes and utensils. Disposable cutlery is recommended for large groups due to the difficulty of washing dishes without running water. @@ -26,15 +26,15 @@ There are lots of options for sleeping outside. A sturdy lean-to with space for ### General guidelines -The parking lot is a dirt pull-off at the side of the road. Vehicles must be entirely off the pavement. Park as close as possible to any other cars which are already in the parking lot. This maximimizes capacity for busy weekends and also helps with plowing in case it snows during your visit. +The parking lot is a dirt pull-off at the side of the road. Vehicles must be entirely off the pavement. Park as close as possible to any other cars which are already in the parking lot. This maximizes capacity for busy weekends and also helps with plowing in case it snows during your visit. Campfires are only allowed in the fire ring in front of the cabin. Burn only dead wood from around the grounds or split logs from under the cabin. **Wood in the wood shed is for heating only and may not be used for campfires.** Do not cut down or otherwise damage standing trees. Do not use any accelerants. Keep campfires small and ensure that they are attended at all times. -Users are expected to thororughly clean the cabin before departure. There is no trash collection, so you must take all trash and perishable food with you. Always sweep the floors and sterilize all the counters. We have mice and squirrels that can get into the cabin, so please don't leave them anything to eat! +Users are expected to thoroughly clean the cabin before departure. There is no trash collection, so you must take all trash and perishable food with you. Always sweep the floors and sterilize all the counters. We have mice and squirrels that can get into the cabin, so please don't leave them anything to eat! Although Camelot is in a remote location, our closest neighbors are within earshot (you can just barely see their house though the trees in the winter). Please be respectful and keep the noise down at night. Occasionally we find trash dumped in the parking area. Even if it is not your trash, please take it with you so that our property does not become an eyesore. -When a keyholder opens the cabin, they are taking final responsibility for the everything that happens within the cabin. Non-keyholders will be admitted into the cabin at the keyholder's discretion and may be kicked out by the keyholder at any time. If you are camping on the property, do not assume that a keyholder from a different group will invite you into the cabin. (That happens frequently, but you can't count on it!) +When a keyholder opens the cabin, they are taking final responsibility for everything that happens within the cabin. Non-keyholders will be admitted into the cabin at the keyholder's discretion and may be kicked out by the keyholder at any time. If you are camping on the property, do not assume that a keyholder from a different group will invite you into the cabin. (That happens frequently, but you can't count on it!) This summary does not substitute for attending a keyholder training day and is not meant as a comprehensive manual. We hold keyholder trainings once every few months. Keyholder trainings are announced on the MITOC [mailing lists](/mailing-lists) a few weeks in advance. Contact [camelot-mgr@mit.edu](mailto:camelot-mgr@mit.edu) with any questions. diff --git a/_pages/rentals/index.md b/_pages/rentals/index.md index 5b1ca6c2..68144c58 100644 --- a/_pages/rentals/index.md +++ b/_pages/rentals/index.md @@ -35,7 +35,7 @@ Deposit checks are mandatory and must be _personal checks_. NO EXCEPTIONS UNDER ANY CIRCUMSTANCES. We will not accept money orders, cashier's checks, cash, credit cards, IDs, valuables, or anything else as collateral for rentals. Do not try to pressure deskworkers to bend this rule. -2. **Come by the [MITOC office (Student center, 4th floor, room 461)](https://whereis.mit.edu/?go=W20) during office hours.** Office hours can be found on our [calendar](/calendar) and are usually Tuesday and Thursday evenings and ocasionally Friday afternoons. Check the calendar to make sure a volunteer desk worker has signed up before coming in to the office. An event titled "Office Hours" without names appended to it means that nobody has signed up for that shift yet (note that shifts are usually staffed a few days beforehand, it's perfectly normal for future shifts to not have a name alongside them). +2. **Come by the [MITOC office (Student center, 4th floor, room 461)](https://whereis.mit.edu/?go=W20) during office hours.** Office hours can be found on our [calendar](/calendar) and are usually Tuesday and Thursday evenings and occasionally Friday afternoons. Check the calendar to make sure a volunteer desk worker has signed up before coming in to the office. An event titled "Office Hours" without names appended to it means that nobody has signed up for that shift yet (note that shifts are usually staffed a few days beforehand, it's perfectly normal for future shifts to not have a name alongside them). 3. **Go outside and have fun! Yay!** ### Returning Gear diff --git a/_pages/rentals/intervale-manual.md b/_pages/rentals/intervale-manual.md index 92b35d93..8e4d1819 100644 --- a/_pages/rentals/intervale-manual.md +++ b/_pages/rentals/intervale-manual.md @@ -17,7 +17,7 @@ This document is intended as an instruction set for Intervale Keyholders. It is Every group that uses Intervale must be accompanied by a Keyholder, even if the cabin itself is not being used. The purpose of this policy is to ensure that there is always at least one person at the property who is familiar with the property and the situation surrounding it, and who will be explicitly responsible for the duration of the stay. -A Keyholder is a person who has attended a full-day training trip at Intervale. These trainings teach members how to properly access and close the cabin. Keyholder training is initally valid for 2 years. Validity may be extended at the cabin managers' discretion for regular visitors of the cabin who have demonstrated continued knowledge of Intervale rules and procedures. If you are uncertain about the validity of your training status, please reach out to the Intervale managers. + A Keyholder is a person who has attended a full-day training trip at Intervale. These trainings teach members how to properly access and close the cabin. Keyholder training is initially valid for 2 years. Validity may be extended at the cabin managers' discretion for regular visitors of the cabin who have demonstrated continued knowledge of Intervale rules and procedures. If you are uncertain about the validity of your training status, please reach out to the Intervale managers. The Keyholder is responsible for the actions of the group and is the organizer for the stay. If there are any problems with members of the group it is then up to the Keyholder to enforce proper behavior. When the Keyholder first determines that a problem is occurring, she should first inform the group members as to how to correct the situation. If that does not resolve the problem, the Keyholder should contact the Cabin Managers upon return to Boston who will then follow up with the situation. @@ -108,7 +108,7 @@ In order to make a reservation a Keyholder must: ### Reservation Procedure for Official MITOC Programming -Please get in touch with us as early as possible about official club programming. Major club events (e.g. Winter School) typically recieve extra support from the cabin managers. + Please get in touch with us as early as possible about official club programming. Major club events (e.g. Winter School) typically receive extra support from the cabin managers. 1. Fill out the [Reservation Request Form](https://goo.gl/forms/mw87HujKgeDa6IHF3). **NOTE:** You can simply link the mitoc-trips page as opposed to providing full contact information for your group. For club programming like School of Rock, you may ask us to block out weekends months in advance while you finalize your plans. 1. A Cabin Manager will confirm receipt of your request and block off the relevant days on the calendar. Official club programming is exempt from the property exclusive fee. @@ -187,7 +187,7 @@ The Institute does not intend through its guidelines or policies to restrict the #### Stove -Once the gas is turned on, lighting the burners is rather straightforward. Turn the knob of the appropriate burned to the setting marked “light”. The stove is equipped with a battery for the lighter. If the lighter isn’t working due to a dead battery touch a match to the burner. The oven is also gas, and is lit using the same battery lighter. If the battery is dead you can light the oven with a match by carefully lighting the oven pilot under the stove toward the back. Don’t try this if you haven’t been shown how. Please make sure that the stove top is clean and sparkly white before you leave. + Once the gas is turned on, lighting the burners is rather straightforward. Turn the knob of the appropriate burner to the setting marked “light”. The stove is equipped with a battery for the lighter. If the lighter isn’t working due to a dead battery touch a match to the burner. The oven is also gas, and is lit using the same battery lighter. If the battery is dead you can light the oven with a match by carefully lighting the oven pilot under the stove toward the back. Don’t try this if you haven’t been shown how. Please make sure that the stove top is clean and sparkly white before you leave. #### Lighting the Lamps diff --git a/css/mitoc.css b/css/mitoc.css index 417704f1..8eee00cb 100644 --- a/css/mitoc.css +++ b/css/mitoc.css @@ -82,7 +82,7 @@ p img { background-image: url(/images/bunkhouse/bunkhouse-exterior-rendering.jpg); background-position-y: 34%; background-position-x: 50%; - min-height: 57vh; + min-height: 14vh; display: flex; flex-direction: column; justify-content: center; @@ -221,3 +221,92 @@ p img { justify-content: space-around; } } + +.camelot-banner-wrapper { + /* much smaller collapsed height to reduce visual dominance */ + max-height: 80px; + overflow: hidden; + position: relative; /* ensure this is the positioned ancestor for the toggle */ + transition: max-height 0.45s ease; +} +.camelot-banner-wrapper.expanded { + max-height: 2000px; /* large enough to reveal full content */ +} +.camelot-banner-toggle { + display: flex; + justify-content: center; + margin-top: -54px; /* move toggle up to sit higher on smaller collapsed banner */ + z-index: 40; +} +.camelot-toggle-btn { + background: transparent; + color: #0b3d91; /* make V black */ + border: none; + min-width: 72px; + height: 36px; + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 999px; + cursor: pointer; + padding: 6px 0; +} + +.camelot-toggle-icon { + transition: transform 0.25s ease; + transform: rotate(0deg) scaleX(1); + display: block; +} +.camelot-toggle-btn.is-expanded .camelot-toggle-icon { + transform: rotate(180deg) scaleX(1); +} + +/* Remove default focus outline for the toggle button (visual only) */ +.camelot-toggle-btn:focus { + outline: none; + box-shadow: none; +} + +/* Remove browser default focus rings and inner borders for the toggle */ +.camelot-toggle-btn { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-tap-highlight-color: transparent; +} +.camelot-toggle-btn:focus, +.camelot-toggle-btn:active, +.camelot-toggle-btn:focus-visible { + outline: none !important; + box-shadow: none !important; +} +.camelot-toggle-btn::-moz-focus-inner { border: 0; } +.camelot-toggle-btn:focus { + outline: 2px solid #ddd; +} + +@media (max-width: 767px) { + .camelot-banner-wrapper { max-height: 120px; } +} + +.alert.alert-info { position: static; } + +/* Fade the banner text near the bottom when the banner is collapsed */ +.camelot-banner-wrapper.collapsed { + -webkit-mask-image: linear-gradient(180deg, black 55%, transparent 100%); + mask-image: linear-gradient(180deg, black 55%, transparent 100%); + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; +} +.camelot-banner-wrapper.expanded { + -webkit-mask-image: none; + mask-image: none; +} + +@media (max-width: 767px) { + .camelot-banner-wrapper.collapsed { + -webkit-mask-image: linear-gradient(180deg, black 55%, transparent 100%); + mask-image: linear-gradient(180deg, black 55%, transparent 100%); + } +} diff --git a/images/main_page/mitoc_winter_Florian_2024.jpg b/images/main_page/mitoc_winter_Florian_2024.jpg new file mode 100644 index 00000000..66afafe6 Binary files /dev/null and b/images/main_page/mitoc_winter_Florian_2024.jpg differ diff --git a/images/main_page/mitoc_winter_ashay_fast.mp4 b/images/main_page/mitoc_winter_ashay_fast.mp4 new file mode 100644 index 00000000..9190286b Binary files /dev/null and b/images/main_page/mitoc_winter_ashay_fast.mp4 differ diff --git a/netlify.toml b/netlify.toml index 6621d15f..2bcd9796 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,3 +1,13 @@ [build] publish = "_site" command = "jekyll build" + +[[headers]] + for = "/images/main_page/*.webm" + [headers.values] + Cache-Control = "public, max-age=31536000, immutable" + +[[headers]] + for = "/images/main_page/*.mp4" + [headers.values] + Cache-Control = "public, max-age=31536000, immutable"