Hero Image
Hero Image
Hero Image

Growing India's FOSS Ecosystem

FOSS United is a non-profit foundation that aims at promoting & strengthening the Free and Open Source Software (FOSS) ecosystem in India.

󠀠

GOALS

01

To promote the spirit of hacking and tinkering.

Goal Icon

GOALS

02

To build quality FOSS for public good.

Goal Icon

GOALS

03

To evangelise the use of FOSS in different sectors.

Goal Icon
Used by .v3-accent-* utilities below. */ --event-accent: var(--v3-primary-button); /* fallback: FOSS green */ --v3-card-bg: hsla(0, 0%, 98%, 1); --v3-main-bg: hsla(0, 0%, 94%, 1); --v3-button-border: hsla(0, 0%, 90%, 1); --v3-text-color: hsla(0, 0%, 8%, 1); --v3-text-color2: hsla(0, 0%, 29%, 1); --v3-text-color3: hsla(0, 0%, 40%, 1); --v3-primary-button: hsla(144, 92%, 37%, 1); --v3-dark-green: hsla(145, 63%, 18%, 1); --v3-pale-green: hsla(145, 92%, 86%, 1); --v3-live-button: hsla(144, 92%, 37%, 0.15); --v3-link-blue: hsla(211, 95%, 57%, 1); --v3-warning-bg: hsla(41, 88%, 45%, 0.15); --v3-warning-text: hsla(41, 88%, 46%, 1); --v3-error-bg: hsla(0, 53%, 52%, 0.15); --v3-error-text: hsla(0, 53%, 52%, 1); } [data-theme='dark'] { --v3-card-bg: hsla(0, 0%, 11%, 1); --v3-main-bg: hsla(0, 0%, 8%, 1); --v3-button-border: hsla(0, 0%, 29%, 1); --v3-text-color: hsla(0, 0%, 94%, 1); --v3-text-color2: hsla(0, 0%, 90%, 1); --v3-text-color3: hsla(0, 0%, 80%, 1); --v3-primary-button: hsla(144, 92%, 60%, 1); --v3-dark-green: hsla(145, 63%, 18%, 1); --v3-live-button: hsla(144, 92%, 37%, 0.15); --v3-pale-green: hsla(145, 92%, 86%, 1); --v3-link-blue: hsla(211, 95%, 75%, 1); --v3-warning-bg: hsla(41, 88%, 45%, 0.2); --v3-warning-text: hsla(41, 88%, 65%, 1); --v3-error-bg: hsla(0, 53%, 52%, 0.2); --v3-error-text: hsla(0, 53%, 65%, 1); } /* V3 Base Typography - Inter font for all v3 pages */ .v3-page, body:has(.v3-page) { background: var(--v3-main-bg); font-family: 'Inter', sans-serif; } .v3-page *:not(.no-font-inherit) { font-family: inherit; } /* V3 Links - No underline, opacity on hover */ .v3-page a { text-decoration: none; transition: opacity 0.2s; } .v3-page a:hover { text-decoration: none; opacity: 0.9; } /* V3 Clickable Div - For divs that act as links */ .v3-clickable { cursor: pointer; transition: opacity 0.2s; text-decoration: none; color: inherit; } .v3-clickable:hover { opacity: 0.8; } /* V3 Container - Max width 840px */ .v3-container { max-width: 840px; margin: 0 auto; padding: 0 1.25rem; } /* V3 Card - 24px padding, 32px gap between cards */ .v3-card { background: var(--v3-card-bg); border-radius: 1rem; border: 1px solid var(--v3-button-border); padding: 1.5rem; /* 24px */ box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.06); } [data-theme='dark'] .v3-card { box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.7); } /* V3 Grid - 32px gap */ .v3-grid { display: flex; flex-direction: column; gap: 2rem; /* 32px */ margin-bottom: 2rem; } /* V3 Button */ .v3-btn { padding: 0.75rem 1.25rem; /* 12px 20px */ border-radius: 0.5rem; border: none; font-size: 0.875rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.07rem; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; text-decoration: none; z-index: 999; white-space: nowrap; } .v3-btn:hover { background: var(--v3-button-border); } .v3-btn i { font-size: 1.2rem; line-height: 1; } .v3-btn-group { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); align-items: stretch; } .v3-btn-group > .v3-btn-icon-only { justify-self: start; } .v3-btn-primary { background: var(--v3-primary-button); color: var(--v3-main-bg); } .v3-btn-primary:hover { background: var(--v3-primary-button); color: var(--v3-main-bg); opacity: 0.9; } .v3-btn-secondary { background: var(--v3-button-border); color: var(--v3-text-color); } .v3-btn-secondary:hover { background: var(--v3-button-border); color: var(--v3-text-color); opacity: 0.8; } .v3-btn-dark { background: var(--v3-text-color); color: var(--v3-main-bg); } .v3-btn-dark:hover { opacity: 0.8; background: var(--v3-text-color); color: var(--v3-main-bg); } .v3-text-success { color: var(--v3-primary-button); } /* V3 Typography - Inherit font from parent */ .v3-text-primary, .v3-text-primary * { color: var(--v3-text-color) !important; overflow-wrap: anywhere; } .v3-text-secondary, .v3-text-secondary * { color: var(--v3-text-color2) !important; overflow-wrap: anywhere; } .v3-text-tertiary, .v3-text-tertiary * { color: var(--v3-text-color3) !important; overflow-wrap: anywhere; } .v3-text-primary h1, .v3-text-secondary h1, .v3-text-tertiary h1 { font-size: 2rem; } .v3-text-primary h2, .v3-text-secondary h2, .v3-text-tertiary h2 { font-size: 1.8rem; } .v3-text-primary h3, .v3-text-secondary h3, .v3-text-tertiary h3 { font-size: 1.5rem; } .v3-text-primary h4, .v3-text-secondary h4, .v3-text-tertiary h4 { font-size: 1.3rem; } .v3-text-primary :is(h5, h6), .v3-text-secondary :is(h5, h6), .v3-text-tertiary :is(h5, h6) { font-size: 1.1rem; } .v3-text-primary blockquote, .v3-text-secondary blockquote, .v3-text-tertiary blockquote { margin: 1rem 0; padding: 1rem; font-style: italic; background: var(--v3-card-bg); border-left: 3px solid var(--v3-button-border); } /* V3 Section Title */ .v3-header { display: flex; flex-direction: column; gap: 1.5rem; } .v3-section-header { display: flex; align-items: center; gap: 0.5rem; margin: 2rem 0 1.25rem; } .v3-section-title { display: flex; align-items: center; gap: 0.25rem; font-size: 1rem; font-weight: 600; margin-bottom: 1.5rem; color: var(--v3-text-color); } .v3-section-header > .v3-section-title { margin: 0; } .v3-section-title + hr { flex: 1; height: 1px; border: none; background: var(--v3-text-color2); margin: 0; min-width: 20px; } .v3-section-title i { font-size: 1.3rem; } /* CFP Card V3 - Responsive placement */ .cfp-card-v3 { background: linear-gradient(102deg, var(--v3-text-color2) 0%, var(--v3-text-color) 100%); padding: 1.5rem; /* 24px */ border-radius: 1rem; border: 1px solid var(--v3-button-border); text-decoration: none; display: block; transition: opacity 0.2s; color: var(--v3-card-bg) !important; margin-bottom: 1rem; } [data-theme='dark'] .cfp-card-v3 { background: linear-gradient(102deg, #f7f7f7 0%, #fcfcfc 100%); } .cfp-card-v3:hover { text-decoration: none; opacity: 0.9; } /* V3 Banner Image - Fixed square with border-radius */ .v3-banner-wrap { width: 100%; display: flex; flex-direction: column; align-items: flex-end; gap: 0.5rem; } .v3-banner { width: 100%; aspect-ratio: 1; border-radius: 0.5rem; border: 0.5px solid var(--v3-button-border); object-fit: cover; background: none; } /* V3 Component Styles */ .v3-breadcrumb { color: var(--v3-text-color2); font-size: 0.875rem; margin: 1rem 0; } .v3-breadcrumb a:hover { text-decoration: underline; } .v3-main-card { width: 100%; max-width: 840px; } .v3-content-main { display: flex; flex-direction: column; gap: 1rem; } .v3-content-sidebar { display: flex; flex-direction: column; gap: 1rem; } /* Volunteers Card Component */ .v3-volunteers-card { display: grid; grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr)); gap: 0.5rem; } .v3-volunteer-item { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; text-decoration: none; width: 5rem; } .v3-volunteer-name { color: var(--v3-text-color3); font-size: 0.75rem; text-align: center; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Agenda/Schedule Card Component */ .v3-schedule-list { display: flex; flex-direction: column; gap: 1.5rem; } .v3-schedule-date-group { margin-bottom: 0rem; } .v3-schedule-date-title { color: var(--v3-text-color); font-size: 1.125rem; font-weight: 600; margin-bottom: 1rem; } .v3-schedule-hall-title { color: var(--v3-text-color2); font-size: 0.875rem; font-weight: 600; margin-bottom: 0.75rem; text-transform: uppercase; } .v3-schedule-item { display: flex; flex-direction: column; gap: 0.25rem; margin-bottom: 1rem; text-decoration: none; color: inherit; } .v3-schedule-item:last-child { margin-bottom: 0; } .v3-schedule-header { display: flex; align-items: center; gap: 0.875rem; } .v3-schedule-time { color: var(--v3-text-color); font-size: 1rem; font-weight: 600; text-transform: uppercase; } .v3-schedule-badge { padding: 0.25rem 0.5rem; background: var(--v3-button-border); border-radius: 0.5rem; font-size: 0.75rem; font-weight: 600; color: var(--v3-text-color); text-transform: uppercase; } .v3-schedule-content { display: flex; gap: 1rem; padding: 0.5rem 0; } .v3-speaker-imgs { width: 4.5rem; height: 4.5rem; display: grid; gap: 0.125rem; flex-shrink: 0; } .v3-speaker-imgs.cols-1 { grid-template-columns: 1fr; } .v3-speaker-imgs.cols-2 { grid-template-columns: 1fr 1fr; } .v3-speaker-imgs.cols-3 { grid-template-columns: 1fr 1fr 1fr; } .v3-speaker-imgs.cols-4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; } .v3-speaker-img { aspect-ratio: 1 / 1; width: 100%; height: 100%; border-radius: 0.5rem; object-fit: cover; } .v3-schedule-details { flex: 1; } .v3-schedule-title { color: var(--v3-text-color); font-size: 1rem; line-height: 1.5rem; margin-bottom: 0.5rem; } .v3-speaker-names { display: flex; flex-wrap: wrap; gap: 0.125rem; } .v3-speaker-name { color: var(--v3-text-color2); font-size: 0.875rem; font-weight: 500; padding-right: 1rem; } /* Speaker Card Component */ .v3-speakers-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: 1rem; } /* Sponsor Card Component */ .v3-sponsor-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; } .v3-sponsor-link { color: var(--v3-text-color3); font-size: 0.875rem; text-decoration: underline; } .v3-sponsor-tier { margin-bottom: 1rem; } .v3-sponsor-tier-name { color: var(--v3-text-color3); font-size: 1rem; margin-bottom: 1rem; } .v3-sponsor-grid { display: flex; flex-wrap: wrap; align-items: center; /* justify-content: center; */ } .v3-sponsor-grid.tier-1 { gap: 1.25rem; padding: 0.5rem 0; } .v3-sponsor-grid.tier-2, .v3-sponsor-grid.tier-3 { gap: 0.8rem; } .v3-sponsor { border: 1px solid var(--v3-button-border); border-radius: 0.25rem; display: flex; align-items: center; justify-content: center; } .v3-sponsor.tier-1 { width: 9.375rem; aspect-ratio: 2/1; padding: 0.625rem 1rem; background: #fff; } .v3-sponsor.tier-2 { width: 7.6rem; aspect-ratio: 2/1; padding: 0.625rem 1rem; background: #fff; } .v3-sponsor.tier-3 { width: 7rem; aspect-ratio: 2/1; padding: 0.625rem 1rem; background: #fff; } .v3-sponsor img { max-width: 100%; max-height: 100%; object-fit: contain; } /* People Card (Volunteers & Speakers) - Unified List Layout */ .v3-people-list { display: flex; flex-direction: column; gap: 1rem; } .v3-people-item { display: flex; align-items: center; gap: 0.625rem; padding: 0; text-decoration: none; max-width: 233px; } .v3-people-avatar { width: 2.5rem; height: 2.5rem; border-radius: 0.5rem; border: 1px solid var(--v3-button-border); object-fit: cover; flex-shrink: 0; } .v3-people-name { flex: 1; color: var(--v3-text-color); font-weight: 400; line-height: 1.1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* People Card Expand/Collapse Functionality */ .v3-people-container { position: relative; overflow: hidden; transition: max-height 0.3s ease; } .v3-people-container[data-expanded='false'] .v3-people-list { max-height: 209px; overflow: hidden; position: relative; } .v3-people-container[data-expanded='false']::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 60px; pointer-events: none; } .v3-people-container[data-expanded='true']::after { display: none; } .v3-card.has-view-all .v3-people-container::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 60px; background: linear-gradient(to bottom, transparent, var(--v3-card-bg)); pointer-events: none; opacity: 1; transition: opacity 0.3s ease; } .v3-theme-toggle { background: var(--v3-card-bg); border: 1px solid var(--v3-button-border); border-radius: 8px; padding: 8px 12px; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--v3-text-color2); transition: all 0.2s; } .v3-theme-toggle:hover { background: var(--v3-text-color); color: var(--v3-main-bg); opacity: 0.8; } .navbar-toggler { /* not able to get hamburger icon cause they use svg */ background: #fafafa !important; } .navbar, .navbar-light, .nav-link, .navbar-nav, .web-footer, .navbar-brand { background: var(--v3-card-bg); color: var(--v3-text-color) !important; border-bottom: 0; } .v3-content-main .v3-card, .v3-content-sidebar .v3-card { margin-bottom: 1rem; } .v3-gradient-text { background: linear-gradient(135deg, var(--v3-primary-button), var(--v3-dark-green)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* mobile first cfp layout */ /* Grants page */ .v3-grant-icon { font-size: 3rem; color: var(--v3-primary-button); } .v3-grant-icon-sm { font-size: 1.5rem; } .v3-grant-title { font-size: 1.75rem; font-weight: 600; } .v3-grant-card-title { font-size: 1.25rem; font-weight: 600; } .v3-grant-description { font-size: 0.875rem; } .v3-grant-stat-number { font-size: 1.25rem; font-weight: 600; color: var(--v3-primary-button); } .v3-grant-stat-label { font-size: 0.875rem; } .v3-grant-stat-divider { height: 3.75rem; width: 1px; background: var(--v3-button-border); } .v3-grant-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.5rem; } .v3-grant-grid > :only-child { grid-column: 1 / -1; } .v3-grant-meta-label { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.05625rem; } .v3-grant-meta-value { font-size: 1rem; } .v3-grant-year-section { margin-bottom: 2.5rem; } .v3-grant-year-content { gap: 1.5rem; } .v3-grant-year-content.hidden { display: none !important; } .v3-grant-count-box { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 16px; border-radius: 16px; border: 1px solid var(--v3-button-border); background: var(--v3-card-bg); text-align: center; min-width: auto; } .v3-grant-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; } .v3-grant-tag { display: inline-flex; align-items: center; justify-content: center; padding: 2px 8px; border-radius: 16px; background: var(--v3-button-border); color: var(--v3-text-color); font-size: 0.875rem; font-weight: 500; white-space: nowrap; } .v3-grant-tag.active { background: var(--v3-text-color2); color: var(--v3-main-bg); } .v3-grant-tag:hover { background: var(--v3-text-color); color: var(--v3-main-bg) !important; } /* Toggle Icon */ .v3-toggle-icon { transition: transform 0.3s ease; flex-shrink: 0; margin-left: 0.5rem; } .v3-toggle-icon.rotated { transform: rotate(180deg); } /* Search Input */ .v3-search-input { background: var(--v3-card-bg); border: 1px solid var(--v3-button-border); border-radius: 8px; padding: 8px 12px; display: flex; align-items: center; gap: 8px; flex: 1; max-width: 352px; height: 36px; } .v3-search-input input { flex: 1; border: none; background: none; font-size: 14px; outline: none; color: var(--v3-text-color3); } .v3-search-input input:focus { border-color: var(--v3-text-color3); } /* Select Dropdown */ .v3-select { padding: 0.5rem 2rem 0.5rem 0.75rem; background: var(--v3-card-bg); color: var(--v3-text-color3); border: 1px solid var(--v3-button-border); border-radius: 8px; font-size: 14px; cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.8535 4.64648C11.0488 4.84175 11.0488 5.15825 10.8535 5.35352C10.6583 5.54878 10.3417 5.54878 10.1465 5.35352L8 3.20703L5.85352 5.35352C5.65825 5.54878 5.34175 5.54878 5.14648 5.35352C4.95122 5.15825 4.95122 4.84175 5.14648 4.64648L7.64648 2.14648C7.84175 1.95122 8.15825 1.95122 8.35352 2.14648L10.8535 4.64648ZM10.8535 10.6465C11.0488 10.8417 11.0488 11.1583 10.8535 11.3535L8.35352 13.8535C8.15825 14.0488 7.84175 14.0488 7.64648 13.8535L5.14648 11.3535C4.95122 11.1583 4.95122 10.8417 5.14648 10.6465C5.34175 10.4512 5.65825 10.4512 5.85352 10.6465L8 12.793L10.1465 10.6465C10.3417 10.4512 10.6583 10.4512 10.8535 10.6465Z' fill='%23666666'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.5rem center; } .v3-select:focus { border-color: var(--v3-text-color3); } [data-theme='dark'] .v3-select { background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.8535 4.64648C11.0488 4.84175 11.0488 5.15825 10.8535 5.35352C10.6583 5.54878 10.3417 5.54878 10.1465 5.35352L8 3.20703L5.85352 5.35352C5.65825 5.54878 5.34175 5.54878 5.14648 5.35352C4.95122 5.15825 4.95122 4.84175 5.14648 4.64648L7.64648 2.14648C7.84175 1.95122 8.15825 1.95122 8.35352 2.14648L10.8535 4.64648ZM10.8535 10.6465C11.0488 10.8417 11.0488 11.1583 10.8535 11.3535L8.35352 13.8535C8.15825 14.0488 7.84175 14.0488 7.64648 13.8535L5.14648 11.3535C4.95122 11.1583 4.95122 10.8417 5.14648 10.6465C5.34175 10.4512 5.65825 10.4512 5.85352 10.6465L8 12.793L10.1465 10.6465C10.3417 10.4512 10.6583 10.4512 10.8535 10.6465Z' fill='%23CCCCCC'/%3E%3C/svg%3E"); } .v3-container-wide { max-width: 1024px; } .mb-8 { margin-bottom: 2.5rem; } .p-5 { padding: 1.5rem; } .pr-8 { padding-right: 2rem; } /* gaps. Why cant bootstrap v4 do gaps? */ .gap-1 { gap: 0.5rem; } .gap-2 { gap: 1rem; } .gap-3 { gap: 1.25rem; } .gap-4 { gap: 2.5rem; } /* bootstrap v5 has this as: text-decoration-underline*/ a.underline { text-decoration: underline; } a.hover-underline:hover { text-decoration: underline; } /* Controls wrapper */ .v3-controls { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; } /* Left group (search + actions) */ .v3-controls-left { display: flex; align-items: center; gap: 0.75rem; flex: 1; min-width: 0; } /* Right group (sort) */ .v3-controls-right { display: flex; align-items: center; gap: 0.5rem; white-space: nowrap; } /* Wider search on desktop */ .v3-search-wide { max-width: 450px; flex: 1; } .v3-status { padding: 0.25rem 0.5rem; border-radius: 0.5rem; display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.875rem; font-weight: 600; line-height: 1; } .v3-status--success { background: rgba(16, 185, 129, 0.15); color: rgba(16, 185, 129, 1); } .v3-status--warning { background: var(--v3-warning-bg); color: var(--v3-warning-text); } .v3-status--error { background: var(--v3-error-bg); color: var(--v3-error-text); } /* dot */ .v3-status-dot { position: relative; width: 8px; height: 8px; border-radius: 50%; background: currentColor; } /* ping animation */ .v3-status--success .v3-status-dot::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: currentColor; opacity: 0.75; animation: v3-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; } @keyframes v3-ping { 75%, 100% { transform: scale(2); opacity: 0; } } .v3-dropdown-item { padding: 8px 12px; cursor: pointer; background: var(--v3-main-bg); color: var(--v3-text-color2); } .v3-dropdown-item:hover { background: var(--v3-button-border); } /* Base Event Card - Used everywhere */ .v3-event-card { position: relative; width: 100%; max-width: 310px; height: 310px; display: block; text-decoration: none; transition: box-shadow 0.2s ease; border-radius: 16px; } .v3-event-card:hover { box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.06); text-decoration: none; } [data-theme='dark'] .v3-event-card:hover { box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.7); } .v3-event-card__inner { position: relative; width: 100%; height: 100%; overflow: visible; clip-path: inset(0 round 16px); } .v3-event-card__banner { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; border-radius: 16px; } .v3-event-card__overlay { position: absolute; inset: 0; background: linear-gradient( to top, rgba(20, 20, 20, 0.35) 0%, rgba(20, 20, 20, 0.15) 40%, rgba(20, 20, 20, 0) 100% ); z-index: 2; transition: opacity 0.3s ease; border-radius: 20px; box-shadow: none; } .v3-event-card:hover .v3-event-card__overlay { opacity: 0; } .v3-event-card__content { position: absolute; bottom: 0; left: 0; right: 0; z-index: 3; display: flex; flex-direction: column; } /* Chapter badge with curved corner */ .v3-event-card__chapter-wrap { display: flex; justify-content: flex-end; align-items: flex-end; } .v3-event-card__corner-svg { position: relative; fill: var(--v3-main-bg); } .v3-event-card__chapter-badge { padding: 12px 12px 0 12px; background: var(--v3-main-bg); border-top-left-radius: 8px; display: inline-flex; justify-content: center; align-items: center; max-width: 90%; } .v3-event-card__chapter-badge { display: inline-flex; max-width: 90%; } .v3-event-card__chapter-inner { min-width: 0; max-width: 100%; height: 32px; overflow: hidden; border-radius: 8px; display: flex; align-items: center; background: var(--v3-text-color); padding: 8px 6.4px; white-space: nowrap; text-overflow: ellipsis; } /* Allow the brand block to shrink */ .v3-event-card__chapter-inner .chapter-brand-block { width: 100%; min-width: 0; display: flex; align-items: center; gap: 0.25rem; } .v3-event-card__chapter-inner .chapter-brand-block > span { flex: 1 1 auto; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .v3-event-card__chapter-inner:has(.club-brand) { background: none; } .v3-event-card__details { background: var(--v3-main-bg); padding: 8px 12px 12px 12px; display: flex; flex-direction: column; gap: 8px; } .v3-event-card__title { font-size: 18px; font-weight: 600; line-height: 22.32px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-wrap: break-word; color: var(--v3-text-color); } .v3-event-card__meta { display: flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 400; line-height: 21px; color: var(--v3-text-color2); } .v3-tag { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.5rem; border-radius: 0.5rem; font-size: 0.75rem; font-weight: 600; white-space: nowrap; line-height: 1; width: fit-content; } .v3-tag svg { width: 9px; height: 8px; } /* Tag variants */ .v3-tag--must { background: var(--v3-text-color2); color: var(--v3-card-bg); } .v3-tag--category { background: var(--v3-button-border); color: var(--v3-text-color3); } .v3-tag--success { background: var(--v3-live-button); color: var(--v3-primary-button); } .v3-tag--clickable { cursor: pointer; transition: all 0.2s; } .v3-tag--clickable:hover { background: var(--v3-text-color); color: var(--v3-main-bg); } .v3-tag--clickable.active { background: var(--v3-text-color2); color: var(--v3-main-bg); } /* Tag groups */ /* TODO: Use this for all tags used in pages? */ .v3-tags { display: flex; gap: 0.5rem; flex-wrap: wrap; } /* Timeline grid with vertical line */ .v3-timeline-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 1.5rem; border-left: 1px solid var(--v3-text-color2); padding-left: 0.8rem; margin-left: 0.4rem; } .lazy-img { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: v3-shimmer 1.5s infinite; } [data-theme='dark'] .lazy-img { background: linear-gradient(90deg, #2a2a2a 25%, #1a1a1a 50%, #2a2a2a 75%); } @keyframes v3-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .v3-pagination { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: center; } .v3-pagination__btn { padding: 0.5rem 1rem; border: 1px solid var(--v3-button-border); background: var(--v3-card-bg); color: var(--v3-text-color2); border-radius: 0.5rem; cursor: pointer; font-size: 0.875rem; font-weight: 500; transition: all 0.2s; } .v3-pagination__btn:hover { background: var(--v3-button-border); } .v3-pagination__btn--active { background: var(--v3-text-color2); color: var(--v3-main-bg); border-color: var(--v3-text-color2); } .v3-pagination__btn--active:hover { color: var(--v3-text-color); } .v3-pagination__divider { width: 100%; height: 1px; background: var(--v3-button-border); margin: 1rem 0; } /* ===== Tablet ===== */ @media (min-width: 768px) { .v3-btn-group { flex-direction: row; } .v3-header { flex-direction: row; } .v3-banner-wrap { width: 18rem; } .v3-banner { width: 17.5rem; height: 17.5rem; } } /* ===== Desktop ===== */ @media (min-width: 840px) { .v3-grid { display: grid; grid-template-columns: 1fr 20rem; gap: 2rem; } .cfp-card-v3-desktop { display: block; } } /* ===== Small screens only ===== */ @media (max-width: 768px) { .v3-card { padding: 1.2rem; } .v3-section-title { margin-bottom: 0.8rem; } .v3-content-main .v3-card, .v3-content-sidebar .v3-card, .cfp-card-v3 { margin-bottom: 0.5rem; } .v3-controls { align-items: stretch; } .v3-controls-left { width: 100%; } .v3-search-wide { max-width: none; } .v3-controls-right { width: 100%; justify-content: flex-start; flex-wrap: wrap; } .v3-grant-count-box { width: 100%; } .v3-container { padding: 0 0.5rem; } .v3-pagination { justify-content: left; } } /* TODO: Replace .events-grid-4, .members-grid-6, etc. */ .v3-grid-auto { display: grid; gap: 1.5rem; } /* Responsive grid variants */ .v3-grid-auto--events { grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); } .v3-grid-auto--members { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); } .v3-grid-auto--projects { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); } .v3-grid-auto--sponsors-lg { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1.25rem; } .v3-grid-auto--sponsors-md { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.8rem; } /* ============================================ Utility Classes to use like tailwindcss for pages ============================================ */ /* --- Gap (Bootstrap 4 missing utilities) --- */ .gap-0 { gap: 0; } .gap-1 { gap: 0.25rem; } .gap-2 { gap: 0.5rem; } .gap-3 { gap: 0.75rem; } .gap-4 { gap: 1rem; } .gap-5 { gap: 1.25rem; } .gap-6 { gap: 1.5rem; } .gap-8 { gap: 2rem; } .gap-x-1 { column-gap: 0.25rem; } .gap-x-2 { column-gap: 0.5rem; } .gap-x-3 { column-gap: 0.75rem; } .gap-x-4 { column-gap: 1rem; } .gap-y-1 { row-gap: 0.25rem; } .gap-y-2 { row-gap: 0.5rem; } .gap-y-3 { row-gap: 0.75rem; } .gap-y-4 { row-gap: 1rem; } /* --- Fit content --- */ .w-fit { width: fit-content; } .h-fit { height: fit-content; } /* --- Cursor --- */ .cursor-pointer { cursor: pointer; } .cursor-default { cursor: default; } /* --- Backgrounds (colour-only, use Bootstrap for layout) --- */ .v3-bg-primary { background: var(--v3-main-bg); color: var(--v3-text-color); } .v3-bg-card { background: var(--v3-card-bg); color: var(--v3-text-color); } .v3-bg-subtle { background: var(--v3-button-border); color: var(--v3-text-color); } .v3-bg-brand { background: var(--v3-primary-button); color: var(--v3-main-bg); } .v3-bg-inverse { background: var(--v3-text-color); color: var(--v3-main-bg); } /* --- Whitespace --- */ .ws-nowrap { white-space: nowrap; } .ls-wide { letter-spacing: 0.07rem; } /* --- Border --- */ .v3-border { border: 1px solid var(--v3-button-border) !important; } .v3-divider { border-top: 1px solid var(--v3-button-border); } /* --- Event accent (per-page via --event-accent CSS variable) future usecase if jeswin plans --- */ .v3-accent-bg { background: var(--event-accent); color: #fff; } .v3-accent-bg-dim { background: color-mix(in srgb, var(--event-accent) 12%, transparent); } .v3-accent-text { color: var(--event-accent); } .v3-accent-border { border-color: var(--event-accent) !important; } .v3-accent-ring { box-shadow: 0 0 0 3px color-mix(in srgb, var(--event-accent) 30%, transparent); } /* v3-badge — replaces badge.html Tailwind classes */ .v3-badge { display: inline-flex; align-items: center; gap: 0.25rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; line-height: 1.5; white-space: nowrap; } /* sizes */ .v3-badge-sm { min-height: 1rem; padding: 0.125rem 0.375rem; font-size: 0.75rem; } .v3-badge-md { min-height: 1.25rem; padding: 0.125rem 0.375rem; font-size: 0.75rem; } .v3-badge-lg { min-height: 1.5rem; padding: 0.25rem 0.5rem; font-size: 0.875rem; } /* subtle — muted bg + coloured text */ .v3-badge--subtle-gray { background: var(--v3-button-border); color: var(--v3-text-color2); } .v3-badge--subtle-green { background: rgba(22, 163, 74, 0.15); color: #16a34a; } .v3-badge--subtle-red { background: rgba(220, 38, 38, 0.15); color: #dc2626; } .v3-badge--subtle-orange { background: rgba(234, 88, 12, 0.15); color: #ea580c; } .v3-badge--subtle-blue { background: rgba( 37, 99, 235, 0.15); color: #2563eb; } /* solid — filled background */ .v3-badge--solid-gray { background: var(--v3-text-color); color: var(--v3-main-bg); } .v3-badge--solid-green { background: #16a34a; color: #fff; } .v3-badge--solid-red { background: #dc2626; color: #fff; } .v3-badge--solid-orange { background: #ea580c; color: #fff; } .v3-badge--solid-blue { background: #2563eb; color: #fff; } /* outline — border only */ .v3-badge--outline-gray { border: 1px solid var(--v3-button-border); color: var(--v3-text-color2); } .v3-badge--outline-green { border: 1px solid #86efac; color: #16a34a; } .v3-badge--outline-red { border: 1px solid #fca5a5; color: #dc2626; } .v3-badge--outline-orange { border: 1px solid #fdba74; color: #ea580c; } .v3-badge--outline-blue { border: 1px solid #93c5fd; color: #2563eb; } /* ghost — text colour only */ .v3-badge--ghost-gray { color: var(--v3-text-color2); } .v3-badge--ghost-green { color: #16a34a; } .v3-badge--ghost-red { color: #dc2626; } .v3-badge--ghost-orange { color: #ea580c; } .v3-badge--ghost-blue { color: #2563eb; } .events-list-section { display: flex; align-items: center; justify-content: center; } .events-list-container { display: flex; align-items: flex-start; gap: 2rem; flex-direction: column; width: 100%; } .upcoming-events-header { display: flex; flex-direction: column; gap: 1rem; } .upcoming-events-header h4 { font-size: var(--text-2xl); font-weight: var(--fw-semibold); } .view-events-link { color: hsl(var(--clr-foss-mint-500)); font-weight: 550; line-height: 100%; /* 0.875rem */ letter-spacing: -0.035rem; } .view-events-link:hover { text-decoration: none; color: hsl(var(--clr-foss-mint-500)); } @media screen and (max-width: 768px) { .events-list-section { padding-bottom: 4rem; } }
ip-handshake
Industry Partnership

The foundation was started as a collaboration between the teams at Frappe, the publisher of ERPNext, one of the largest FOSS projects out of India, and Zerodha. Currently we have two more partners supporting us, and we invite more organisations to join the movement.

View Current Partners ↗

Get in Touch

Write to us at foundation@fossunited.org or post a message on the forum.

Join our Matrix Community or our Telegram Community.