Spaces:
Running
Running
| title: README | |
| emoji: 🏃 | |
| colorFrom: green | |
| colorTo: indigo | |
| sdk: static | |
| pinned: false | |
| thumbnail: >- | |
| https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/-lbDR4njKiyD17zNsO3GG.png | |
| <style> | |
| /* ---------- scoped to .bsh so it can't leak into the README around it ---------- */ | |
| .bsh { | |
| --cream: #f6efe1; | |
| --paper: #fbf6e8; | |
| --walnut: #5a3a22; | |
| --bark: #3a2516; | |
| --ink: #2a2118; | |
| --copper:#c98a3c; | |
| --rust: #8a4a2b; | |
| --moss: #5a6b3a; | |
| --sage: #7a8c4a; | |
| --sun: #e6a85c; | |
| --mush: #b8553a; | |
| --line: #8a6a48; | |
| /* --- responsive helpers (no media queries) --- */ | |
| /* Fluid horizontal padding: 22px on narrow, up to 44px on wide */ | |
| --gutter: clamp(22px, 4.5vw, 44px); | |
| /* 0 below 760px, 1 at and above. Used to hide the seal. */ | |
| --wide: clamp(0px, (100vw - 760px) * 9999, 1px); | |
| max-width: 1000px; | |
| margin: 0 auto; | |
| padding: 0; | |
| color: var(--ink); | |
| font-family: Georgia, "Iowan Old Style", "Palatino Linotype", Palatino, serif; | |
| font-size: 16px; | |
| line-height: 1.55; | |
| background: | |
| radial-gradient(ellipse at 20% 10%, rgba(201,138,60,0.08), transparent 50%), | |
| radial-gradient(ellipse at 80% 90%, rgba(90,107,58,0.08), transparent 50%), | |
| repeating-linear-gradient(0deg, rgba(138,106,72,0.025) 0 1px, transparent 1px 3px), | |
| var(--cream); | |
| border: 2px solid var(--walnut); | |
| border-radius: 14px; | |
| box-shadow: | |
| inset 0 0 0 1px var(--cream), | |
| inset 0 0 0 6px var(--walnut), | |
| inset 0 0 0 8px var(--cream), | |
| inset 0 0 0 9px var(--copper), | |
| 0 6px 24px rgba(58,37,22,0.18); | |
| overflow: hidden; | |
| } | |
| .bsh * { box-sizing: border-box; } | |
| .bsh .pad { padding: 36px var(--gutter); } | |
| /* ---------- type ---------- */ | |
| .bsh h1, .bsh h2, .bsh h3 { font-family: Georgia, "Iowan Old Style", serif; color: var(--bark); margin: 0; letter-spacing: -0.01em; } | |
| /* h1: fluid between 40px and 56px */ | |
| .bsh h1 { font-size: clamp(40px, 7vw, 56px); line-height: 0.95; font-weight: 700; } | |
| .bsh h2 { font-size: 28px; line-height: 1.1; font-weight: 700; } | |
| .bsh h3 { font-size: 18px; line-height: 1.2; font-weight: 700; } | |
| .bsh p { margin: 0 0 12px 0; } | |
| .bsh .small { font-size: 13px; } | |
| .bsh .mono { font-family: "SFMono-Regular", Menlo, Consolas, monospace; } | |
| .bsh .caps { text-transform: uppercase; letter-spacing: 0.18em; font-size: 11px; font-weight: 700; } | |
| .bsh .muted { color: var(--walnut); opacity: 0.78; } | |
| .bsh a { color: var(--rust); text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 3px; } | |
| .bsh a:hover { color: var(--bark); text-decoration-style: solid; } | |
| /* ---------- top strip ---------- */ | |
| .bsh .strip { | |
| display: flex; align-items: center; justify-content: space-between; gap: 24px; | |
| padding: 14px var(--gutter); | |
| background: var(--bark); | |
| color: var(--cream); | |
| border-bottom: 1px dashed rgba(246,239,225,0.35); | |
| flex-wrap: wrap; | |
| } | |
| .bsh .strip .who { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; font-size: 12px; } | |
| .bsh .strip .who span.caps { color: var(--sun); letter-spacing: 0.06em; } | |
| .bsh .strip .dates { font-family: Georgia, serif; font-style: italic; font-size: 14px; color: var(--cream); } | |
| .bsh .strip .dates b { color: var(--sun); font-style: normal; font-weight: 700; letter-spacing: 0.02em; } | |
| /* ---------- sponsors section ---------- */ | |
| .bsh .sponsors { | |
| padding: 36px var(--gutter) 30px; | |
| /* No solid background here — leaving it transparent lets the parent | |
| .bsh inset box-shadow frame (copper + walnut) remain visible through | |
| this section. A subtle radial highlight is still painted on top. */ | |
| background: | |
| radial-gradient(ellipse at 50% 0%, rgba(201,138,60,0.10), transparent 60%); | |
| border-bottom: 1px solid rgba(138,106,72,0.25); | |
| position: relative; | |
| } | |
| .bsh .sponsors::before { | |
| content: "✦ ✦ ✦"; | |
| position: absolute; | |
| top: 14px; left: 50%; transform: translateX(-50%); | |
| color: var(--copper); | |
| letter-spacing: 0.6em; | |
| font-size: 10px; | |
| opacity: 0.6; | |
| } | |
| .bsh .sponsors .sponsor-head { | |
| text-align: center; | |
| margin-bottom: 22px; | |
| } | |
| .bsh .sponsors .sponsor-head .caps { | |
| color: var(--moss); | |
| display: inline-flex; align-items: center; gap: 10px; | |
| } | |
| .bsh .sponsors .sponsor-head .caps::before, | |
| .bsh .sponsors .sponsor-head .caps::after { | |
| content: "❋"; color: var(--copper); font-size: 12px; | |
| } | |
| .bsh .sponsors .sponsor-head h2 { | |
| margin-top: 8px; | |
| font-size: clamp(24px, 4vw, 32px); | |
| } | |
| .bsh .sponsors .sponsor-head h2 em { font-style: italic; color: var(--rust); } | |
| .bsh .sponsors .sponsor-head p { | |
| margin-top: 6px; | |
| font-size: 14px; | |
| color: var(--walnut); | |
| font-style: italic; | |
| } | |
| .bsh .tier-label { | |
| display: flex; align-items: center; gap: 14px; | |
| color: var(--rust); font-weight: 700; | |
| margin: 22px 0 14px; | |
| font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; | |
| } | |
| .bsh .tier-label::before, .bsh .tier-label::after { | |
| content: ""; flex: 1; height: 0; | |
| border-top: 1px dashed var(--walnut); | |
| opacity: 0.5; | |
| } | |
| /* host contribution card — Hugging Face's own stake in the pool */ | |
| .bsh .host-card { | |
| background: var(--paper); | |
| border: 2px solid var(--walnut); | |
| border-radius: 12px; | |
| padding: 18px 22px; | |
| display: flex; align-items: center; gap: 20px; | |
| flex-wrap: wrap; | |
| box-shadow: | |
| inset 0 0 0 1px var(--paper), | |
| inset 0 0 0 4px var(--moss), | |
| inset 0 0 0 5px var(--paper), | |
| 0 4px 0 rgba(58,37,22,0.14); | |
| transition: transform 0.18s ease; | |
| } | |
| .bsh .host-card:hover { transform: translateY(-2px); } | |
| .bsh .host-card .logo-slot-host { | |
| width: 140px; height: 90px; flex-shrink: 0; | |
| background: var(--cream); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 8px; | |
| display: flex; align-items: center; justify-content: center; | |
| padding: 10px; | |
| } | |
| .bsh .host-card .logo-slot-host img { | |
| max-height: 70px; max-width: 100%; object-fit: contain; | |
| } | |
| .bsh .host-card .meta { flex: 1; min-width: 240px; } | |
| .bsh .host-card .meta .name { | |
| font-weight: 700; color: var(--bark); font-size: 17px; line-height: 1.2; | |
| } | |
| .bsh .host-card .meta .desc { | |
| font-size: 14px; color: var(--ink); line-height: 1.5; margin-top: 4px; | |
| } | |
| .bsh .host-card .meta .desc b { color: var(--rust); } | |
| /* anchor cards — always one row, cards scale fluidly with viewport */ | |
| .bsh .anchors { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| gap: clamp(8px, 1.6vw, 20px); | |
| } | |
| .bsh .anchor-card { | |
| background: var(--paper); | |
| border: 2px solid var(--walnut); | |
| border-radius: 12px; | |
| padding: clamp(16px, 2.6vw, 28px) clamp(8px, 1.9vw, 22px) clamp(10px, 2vw, 22px); | |
| position: relative; | |
| min-width: 0; | |
| box-shadow: | |
| inset 0 0 0 1px var(--paper), | |
| inset 0 0 0 4px var(--copper), | |
| inset 0 0 0 5px var(--paper), | |
| 0 4px 0 rgba(58,37,22,0.14); | |
| transition: transform 0.18s ease, box-shadow 0.18s ease; | |
| } | |
| .bsh .anchor-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: | |
| inset 0 0 0 1px var(--paper), | |
| inset 0 0 0 4px var(--rust), | |
| inset 0 0 0 5px var(--paper), | |
| 0 8px 0 rgba(58,37,22,0.18); | |
| } | |
| .bsh .anchor-card .logo-slot { | |
| background: var(--cream); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 8px; | |
| height: clamp(56px, 8.5vw, 110px); | |
| display: flex; align-items: center; justify-content: center; | |
| margin-bottom: clamp(8px, 1.5vw, 16px); | |
| padding: clamp(6px, 1.2vw, 14px); | |
| position: relative; | |
| } | |
| .bsh .anchor-card .logo-slot img { | |
| max-height: clamp(38px, 6.5vw, 78px); | |
| max-width: 100%; | |
| object-fit: contain; | |
| } | |
| .bsh .anchor-card .logo-slot .logo-placeholder { | |
| color: var(--walnut); | |
| opacity: 0.45; | |
| font-size: clamp(7px, 0.9vw, 11px); | |
| letter-spacing: clamp(0.08em, 0.4vw, 0.22em); | |
| text-transform: uppercase; | |
| font-weight: 700; | |
| text-align: center; | |
| } | |
| .bsh .anchor-card h3 { | |
| font-size: clamp(15px, 1.9vw, 22px); | |
| margin-bottom: 10px; | |
| color: var(--bark); | |
| text-align: center; | |
| } | |
| .bsh .anchor-card .contribution { | |
| font-size: clamp(11px, 1.25vw, 14px); | |
| line-height: 1.55; | |
| color: var(--ink); | |
| margin-bottom: 0; | |
| text-align: center; | |
| overflow-wrap: break-word; | |
| } | |
| .bsh .anchor-card .contribution b { | |
| color: var(--rust); | |
| font-size: clamp(12px, 1.45vw, 16px); | |
| display: inline; | |
| } | |
| /* supporter row */ | |
| .bsh .supporters { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); | |
| gap: 14px; | |
| } | |
| .bsh .supporter-card { | |
| background: var(--paper); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 8px; | |
| padding: 14px 14px; | |
| display: flex; align-items: center; gap: 14px; | |
| transition: background 0.15s ease, transform 0.15s ease; | |
| } | |
| .bsh .supporter-card:hover { | |
| background: var(--cream); | |
| transform: translateY(-2px); | |
| } | |
| .bsh .supporter-card .logo-slot-sm { | |
| width: 110px; height: 88px; flex-shrink: 0; | |
| background: var(--cream); | |
| border: 1px dashed var(--walnut); | |
| border-radius: 6px; | |
| display: flex; align-items: center; justify-content: center; | |
| padding: 6px; | |
| } | |
| .bsh .supporter-card .logo-slot-sm img { | |
| max-height: 72px; max-width: 100%; object-fit: contain; | |
| } | |
| .bsh .supporter-card .logo-slot-sm .logo-placeholder { | |
| font-size: 9px; color: var(--walnut); opacity: 0.5; | |
| letter-spacing: 0.16em; text-transform: uppercase; | |
| text-align: center; line-height: 1.2; font-weight: 700; | |
| } | |
| .bsh .supporter-card .meta { flex: 1; min-width: 0; } | |
| .bsh .supporter-card .meta .name { | |
| font-weight: 700; color: var(--bark); font-size: 15px; line-height: 1.2; | |
| } | |
| .bsh .supporter-card .meta .desc { | |
| font-size: 13px; color: var(--ink); line-height: 1.45; margin-top: 4px; | |
| } | |
| .bsh .sponsor-total { | |
| margin-top: 22px; | |
| text-align: center; | |
| padding: 14px 16px; | |
| background: var(--paper); | |
| border: 1.5px solid var(--walnut); | |
| border-radius: 8px; | |
| font-family: Georgia, serif; | |
| } | |
| .bsh .sponsor-total .total-num { | |
| font-size: 28px; font-weight: 700; color: var(--rust); | |
| display: inline-block; | |
| } | |
| .bsh .sponsor-total .total-label { | |
| font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; | |
| color: var(--moss); font-weight: 700; display: block; margin-bottom: 4px; | |
| } | |
| .bsh .sponsor-total .total-note { | |
| font-size: 13px; color: var(--walnut); font-style: italic; margin-left: 8px; | |
| } | |
| /* ---------- status callout (post-event: judging underway) ---------- */ | |
| .bsh .must-register { | |
| margin: 0 var(--gutter); | |
| margin-top: 16px; | |
| padding: 26px 28px; | |
| background: | |
| repeating-linear-gradient(135deg, rgba(58,37,22,0.04) 0 10px, transparent 10px 20px), | |
| linear-gradient(180deg, #f3c790 0%, #e6a85c 100%); | |
| color: var(--bark); | |
| border: 2px solid var(--bark); | |
| border-radius: 12px; | |
| box-shadow: | |
| inset 0 0 0 1px #f3c790, | |
| inset 0 0 0 4px var(--bark), | |
| inset 0 0 0 5px #f3c790, | |
| 0 6px 0 rgba(58,37,22,0.2); | |
| position: relative; | |
| margin-bottom: 8px; | |
| display: flex; | |
| align-items: center; | |
| gap: 22px; | |
| flex-wrap: wrap; | |
| } | |
| .bsh .must-register::before { | |
| content: "⚑"; | |
| position: absolute; | |
| top: -14px; left: 22px; | |
| background: var(--bark); color: var(--sun); | |
| width: 32px; height: 32px; | |
| border-radius: 50%; | |
| display: flex; align-items: center; justify-content: center; | |
| font-size: 16px; | |
| border: 3px solid var(--cream); | |
| box-shadow: 0 2px 0 rgba(58,37,22,0.2); | |
| } | |
| .bsh .must-register .mr-text { | |
| flex: 1; min-width: 240px; | |
| } | |
| .bsh .must-register .mr-headline { | |
| font-family: Georgia, serif; | |
| font-size: 19px; | |
| font-weight: 700; | |
| color: var(--bark); | |
| line-height: 1.25; | |
| margin-bottom: 6px; | |
| } | |
| .bsh .must-register .mr-headline em { | |
| font-style: italic; | |
| color: var(--rust); | |
| text-decoration: underline; | |
| text-decoration-style: wavy; | |
| text-decoration-color: var(--rust); | |
| text-underline-offset: 4px; | |
| } | |
| .bsh .must-register .mr-sub { | |
| font-size: 14px; | |
| color: var(--bark); | |
| opacity: 0.85; | |
| line-height: 1.45; | |
| } | |
| .bsh .must-register .mr-sub b { | |
| font-weight: 700; | |
| color: var(--bark); | |
| opacity: 1; | |
| } | |
| .bsh .must-register .mr-button { | |
| display: inline-block; | |
| padding: 14px 24px; | |
| background: var(--bark); | |
| color: var(--sun); | |
| border: 2px solid var(--bark); | |
| border-radius: 999px; | |
| font-family: Georgia, serif; | |
| font-weight: 700; | |
| font-size: 15px; | |
| text-decoration: none; | |
| letter-spacing: 0.04em; | |
| box-shadow: 0 4px 0 rgba(0,0,0,0.22); | |
| transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, color 0.15s ease; | |
| white-space: nowrap; | |
| flex-shrink: 0; | |
| } | |
| .bsh .must-register .mr-button:hover { | |
| background: var(--rust); | |
| border-color: var(--rust); | |
| color: var(--cream); | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 0 rgba(0,0,0,0.26); | |
| text-decoration: none; | |
| } | |
| /* ---------- header ---------- */ | |
| .bsh .header { padding: 44px var(--gutter) 28px; position: relative; } | |
| .bsh .header::before { | |
| content: ""; | |
| position: absolute; left: var(--gutter); right: var(--gutter); bottom: 18px; height: 1px; | |
| background: var(--walnut); | |
| box-shadow: 0 4px 0 -1px var(--cream), 0 5px 0 -1px var(--walnut); | |
| } | |
| .bsh .eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--rust); font-weight: 700; } | |
| .bsh .eyebrow .dingbat { font-size: 16px; opacity: 0.7; } | |
| .bsh .title-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-top: 12px; flex-wrap: wrap; } | |
| .bsh .title-row h1 em { font-style: italic; color: var(--rust); } | |
| /* Seal: visible above 760px, collapsed to a 0×0 point below it. | |
| width/height/border collapse together so the dashed border doesn't | |
| leave a stray dot, and overflow:hidden clips the absolute pseudos. */ | |
| .bsh .seal { | |
| width: clamp(0px, (100vw - 760px) * 9999, 110px); | |
| height: clamp(0px, (100vw - 760px) * 9999, 110px); | |
| flex-shrink: 0; | |
| border-radius: 50%; | |
| background: var(--paper); | |
| border: clamp(0px, (100vw - 760px) * 9999, 2px) dashed var(--walnut); | |
| box-shadow: inset 0 0 0 6px var(--paper), inset 0 0 0 7px var(--copper); | |
| display: flex; align-items: center; justify-content: center; | |
| color: var(--bark); | |
| text-align: center; | |
| font-family: Georgia, serif; | |
| font-size: 11px; | |
| line-height: 1.15; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| font-weight: 700; | |
| transform: rotate(-6deg); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .bsh .seal::before { | |
| content: "✦"; position: absolute; top: 8px; left: 50%; transform: translateX(-50%); font-size: 10px; color: var(--copper); | |
| } | |
| .bsh .seal::after { | |
| content: "✦"; position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); font-size: 10px; color: var(--copper); | |
| } | |
| .bsh .seal .seal-inner { padding: 0 8px; } | |
| /* ---------- section header ---------- */ | |
| .bsh .section { padding: 40px var(--gutter); border-top: 1px solid rgba(138,106,72,0.25); position: relative; } | |
| .bsh .section.no-rule { border-top: none; } | |
| .bsh .section-label { | |
| display: inline-flex; align-items: center; gap: 10px; | |
| color: var(--moss); font-weight: 700; | |
| margin-bottom: 14px; | |
| } | |
| .bsh .section-label .ornament { color: var(--copper); } | |
| .bsh .section h2 { margin-bottom: 8px; } | |
| .bsh .lede { font-size: 17px; line-height: 1.6; max-width: 68ch; color: var(--bark); } | |
| /* ---------- intro pull ---------- */ | |
| .bsh .intro p + p { margin-top: 12px; } | |
| .bsh .intro .pull { | |
| border-left: 3px double var(--copper); | |
| padding: 4px 0 4px 16px; | |
| margin: 18px 0 6px; | |
| font-style: italic; | |
| color: var(--bark); | |
| font-size: 17px; | |
| } | |
| /* ---------- two-track grid ---------- */ | |
| /* auto-fit + min(100%, threshold) collapses to 1 column when the row can't | |
| hold two tracks at the threshold width. */ | |
| .bsh .tracks { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); | |
| gap: 22px; margin-top: 18px; | |
| } | |
| .bsh .track { | |
| background: var(--paper); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 10px; | |
| padding: 24px 22px 22px; | |
| position: relative; | |
| transition: transform 0.18s ease, box-shadow 0.18s ease; | |
| } | |
| .bsh .track:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 18px rgba(58,37,22,0.12); | |
| } | |
| .bsh .track .chap { | |
| position: absolute; top: -12px; left: 18px; | |
| background: var(--cream); color: var(--moss); | |
| padding: 2px 10px; border: 1px solid var(--moss); border-radius: 999px; | |
| font-size: 10px; letter-spacing: 0.18em; font-weight: 700; text-transform: uppercase; | |
| } | |
| .bsh .track .ico { | |
| font-size: 36px; line-height: 1; margin-bottom: 10px; | |
| filter: drop-shadow(0 2px 0 rgba(58,37,22,0.08)); | |
| } | |
| .bsh .track h3 { | |
| font-size: 22px; line-height: 1.15; margin-bottom: 8px; color: var(--bark); | |
| } | |
| .bsh .track p { font-size: 15px; line-height: 1.55; color: var(--ink); margin-bottom: 14px; } | |
| .bsh .track .judged { border-top: 1px dotted var(--line); padding-top: 12px; margin-top: 4px; } | |
| .bsh .track .judged .caps { color: var(--rust); margin-bottom: 8px; display: block; } | |
| .bsh .track ul { list-style: none; margin: 0; padding: 0; } | |
| .bsh .track ul li { font-size: 14px; line-height: 1.5; padding-left: 20px; position: relative; margin-bottom: 6px; color: var(--bark); } | |
| .bsh .track ul li::before { content: "✦"; position: absolute; left: 0; top: 0; color: var(--copper); font-size: 12px; } | |
| /* ---------- constraints ---------- */ | |
| .bsh .constraints { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); | |
| gap: 16px; margin-top: 18px; | |
| } | |
| .bsh .constraint { | |
| border: 1.5px solid var(--walnut); | |
| border-radius: 8px; | |
| padding: 20px 18px 18px; | |
| background: linear-gradient(180deg, var(--paper) 0%, var(--cream) 100%); | |
| position: relative; | |
| } | |
| .bsh .constraint .num { | |
| position: absolute; top: -16px; left: 16px; | |
| width: 32px; height: 32px; border-radius: 50%; | |
| background: var(--bark); color: var(--sun); | |
| display: flex; align-items: center; justify-content: center; | |
| font-family: Georgia, serif; font-weight: 700; font-size: 16px; | |
| border: 3px solid var(--cream); | |
| } | |
| .bsh .constraint h3 { font-size: 16px; margin-bottom: 6px; color: var(--bark); } | |
| .bsh .constraint p { font-size: 14px; line-height: 1.5; margin: 0; color: var(--ink); } | |
| .bsh .constraint p b { color: var(--rust); } | |
| /* ---------- merit badges ---------- */ | |
| .bsh .sash { | |
| margin-top: 22px; | |
| background: | |
| repeating-linear-gradient(135deg, rgba(58,37,22,0.04) 0 8px, transparent 8px 16px), | |
| var(--paper); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 12px; | |
| padding: 28px 26px 26px; | |
| position: relative; | |
| } | |
| .bsh .sash::before, .bsh .sash::after { | |
| content: ""; position: absolute; left: 50%; transform: translateX(-50%); | |
| width: 60px; height: 12px; | |
| background: | |
| linear-gradient(90deg, transparent 0 6px, var(--copper) 6px 100%) no-repeat, | |
| linear-gradient(90deg, var(--copper) 0 100%) no-repeat; | |
| background-size: 100% 2px, 100% 100%; | |
| background-position: 0 0, 0 0; | |
| } | |
| .bsh .sash::before { top: -1px; background: var(--copper); border-radius: 0 0 4px 4px; height: 6px; width: 80px; } | |
| .bsh .sash::after { bottom: -1px; background: var(--copper); border-radius: 4px 4px 0 0; height: 6px; width: 80px; } | |
| .bsh .badges { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); | |
| gap: 24px 20px; | |
| margin-top: 8px; | |
| } | |
| .bsh .badge { | |
| display: flex; gap: 14px; align-items: flex-start; | |
| padding: 8px; | |
| border-radius: 10px; | |
| transition: background 0.18s ease; | |
| } | |
| .bsh .badge:hover { background: rgba(201,138,60,0.10); } | |
| .bsh .badge .patch { | |
| width: 76px; height: 76px; flex-shrink: 0; | |
| border-radius: 50%; | |
| background: var(--cream); | |
| border: 2px dashed var(--walnut); | |
| box-shadow: | |
| inset 0 0 0 5px var(--cream), | |
| inset 0 0 0 6px var(--copper), | |
| 0 3px 0 rgba(58,37,22,0.12); | |
| display: flex; align-items: center; justify-content: center; | |
| font-size: 30px; | |
| transition: transform 0.25s ease, box-shadow 0.25s ease; | |
| position: relative; | |
| } | |
| .bsh .badge:hover .patch { | |
| transform: rotate(-6deg) scale(1.04); | |
| box-shadow: | |
| inset 0 0 0 5px var(--cream), | |
| inset 0 0 0 6px var(--rust), | |
| 0 5px 0 rgba(58,37,22,0.18); | |
| } | |
| .bsh .badge .patch.moss { background: #eaeed8; } | |
| .bsh .badge .patch.copper { background: #f6e3c4; } | |
| .bsh .badge .patch.rust { background: #f1d6c7; } | |
| .bsh .badge .patch.sun { background: #f7e8c6; } | |
| .bsh .badge .patch.cream { background: #f3e8d0; } | |
| .bsh .badge .patch.olive { background: #e8e7c8; } | |
| .bsh .badge .meta { flex: 1; min-width: 0; padding-top: 4px; } | |
| .bsh .badge .meta .name { font-weight: 700; font-size: 15px; color: var(--bark); margin-bottom: 2px; } | |
| .bsh .badge .meta .desc { font-size: 13px; line-height: 1.45; color: var(--ink); } | |
| .bsh .badge .meta .tag { | |
| display: inline-block; margin-top: 6px; | |
| font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 700; | |
| color: var(--moss); | |
| } | |
| .bsh .badge .meta .tag.tentative { color: var(--rust); } | |
| /* ---------- awards ---------- */ | |
| .bsh .awards-note { | |
| font-size: 14px; | |
| color: var(--walnut); | |
| font-style: italic; | |
| margin-top: 4px; | |
| } | |
| .bsh .podiums { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); | |
| gap: 22px; | |
| } | |
| .bsh .podium { | |
| background: var(--paper); | |
| border: 2px solid var(--walnut); | |
| border-radius: 12px; | |
| padding: 24px 22px 16px; | |
| position: relative; | |
| box-shadow: | |
| inset 0 0 0 1px var(--paper), | |
| inset 0 0 0 4px var(--copper), | |
| inset 0 0 0 5px var(--paper), | |
| 0 4px 0 rgba(58,37,22,0.14); | |
| transition: transform 0.18s ease; | |
| } | |
| .bsh .podium:hover { transform: translateY(-2px); } | |
| .bsh .podium .podium-head { | |
| display: flex; align-items: center; gap: 12px; | |
| margin-bottom: 6px; | |
| } | |
| .bsh .podium .podium-head .ico { font-size: 28px; line-height: 1; } | |
| .bsh .podium .podium-head h3 { font-size: 19px; color: var(--bark); } | |
| .bsh .podium .podium-sub { | |
| font-size: 13px; color: var(--walnut); font-style: italic; | |
| margin-bottom: 12px; | |
| } | |
| .bsh .prize-row { | |
| display: flex; justify-content: space-between; align-items: baseline; | |
| padding: 9px 4px; | |
| border-bottom: 1px dotted var(--line); | |
| } | |
| .bsh .prize-row:last-child { border-bottom: none; } | |
| .bsh .prize-row .place { | |
| font-size: 14px; color: var(--bark); font-weight: 700; | |
| display: flex; gap: 10px; align-items: center; | |
| } | |
| .bsh .prize-row .place .medal { | |
| width: 26px; height: 26px; flex-shrink: 0; | |
| border-radius: 50%; | |
| background: var(--cream); | |
| border: 1.5px solid var(--walnut); | |
| display: flex; align-items: center; justify-content: center; | |
| font-family: Georgia, serif; font-size: 11px; font-weight: 700; color: var(--bark); | |
| } | |
| .bsh .prize-row.gold .medal { background: var(--sun); border-color: var(--rust); } | |
| .bsh .prize-row .amt { | |
| font-family: Georgia, serif; font-weight: 700; | |
| color: var(--rust); font-size: 16px; | |
| white-space: nowrap; | |
| } | |
| .bsh .community-card { | |
| margin-top: 22px; | |
| background: var(--paper); | |
| border: 2px solid var(--walnut); | |
| border-radius: 12px; | |
| padding: 18px 22px; | |
| display: flex; align-items: center; gap: 18px; | |
| flex-wrap: wrap; | |
| box-shadow: | |
| inset 0 0 0 1px var(--paper), | |
| inset 0 0 0 4px var(--moss), | |
| inset 0 0 0 5px var(--paper), | |
| 0 4px 0 rgba(58,37,22,0.14); | |
| } | |
| .bsh .community-card .ico { font-size: 32px; flex-shrink: 0; } | |
| .bsh .community-card .meta { flex: 1; min-width: 220px; } | |
| .bsh .community-card .meta .name { font-weight: 700; color: var(--bark); font-size: 17px; } | |
| .bsh .community-card .meta .desc { font-size: 14px; color: var(--ink); margin-top: 2px; } | |
| .bsh .community-card .amt { | |
| font-family: Georgia, serif; font-weight: 700; | |
| color: var(--rust); font-size: 24px; white-space: nowrap; | |
| } | |
| .bsh .specials { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); | |
| gap: 20px 14px; | |
| margin-top: 6px; | |
| } | |
| .bsh .special-card { | |
| background: var(--paper); | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 10px; | |
| padding: 18px 16px 14px; | |
| position: relative; | |
| transition: background 0.15s ease, transform 0.15s ease; | |
| } | |
| .bsh .special-card:hover { | |
| background: var(--cream); | |
| transform: translateY(-2px); | |
| border-style: solid; | |
| } | |
| .bsh .special-card .amt-tag { | |
| position: absolute; top: -13px; right: 14px; | |
| background: var(--bark); color: var(--sun); | |
| padding: 3px 12px; border-radius: 999px; | |
| font-family: Georgia, serif; font-weight: 700; font-size: 13px; | |
| border: 2px solid var(--cream); | |
| box-shadow: 0 2px 0 rgba(58,37,22,0.18); | |
| } | |
| .bsh .special-card .name { | |
| font-weight: 700; color: var(--bark); font-size: 15px; | |
| display: flex; align-items: center; gap: 8px; | |
| margin-bottom: 4px; | |
| } | |
| .bsh .special-card .desc { font-size: 13px; line-height: 1.45; color: var(--ink); } | |
| /* ---------- header cta ---------- */ | |
| .bsh .header-cta { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 10px; | |
| margin-top: 10px; | |
| } | |
| .bsh .header-button { | |
| display: inline-block; | |
| padding: 12px 22px; | |
| background: var(--bark); | |
| color: var(--sun); | |
| border: 2px solid var(--bark); | |
| border-radius: 999px; | |
| font-family: Georgia, serif; | |
| font-weight: 700; | |
| font-size: 15px; | |
| text-decoration: none; | |
| letter-spacing: 0.04em; | |
| box-shadow: 0 4px 0 rgba(58,37,22,0.22); | |
| transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, color 0.15s ease; | |
| } | |
| .bsh .header-button:hover { | |
| background: var(--rust); | |
| border-color: var(--rust); | |
| color: var(--cream); | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 0 rgba(58,37,22,0.28); | |
| text-decoration: none; | |
| } | |
| .bsh .header-cta-info { | |
| font-family: Georgia, serif; | |
| font-style: italic; | |
| color: var(--rust); | |
| font-size: 14px; | |
| } | |
| .bsh .header-cta-info b { | |
| font-style: normal; | |
| color: var(--bark); | |
| font-weight: 700; | |
| } | |
| /* ---------- numbered ledger ---------- */ | |
| .bsh .ledger { | |
| border: 1px solid var(--walnut); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| background: var(--paper); | |
| margin-top: 18px; | |
| } | |
| .bsh .ledger .row { | |
| display: grid; grid-template-columns: 56px 1fr; align-items: stretch; | |
| border-bottom: 1px dashed rgba(138,106,72,0.45); | |
| } | |
| .bsh .ledger .row:last-child { border-bottom: none; } | |
| .bsh .ledger .row .n { | |
| background: var(--bark); color: var(--sun); | |
| display: flex; align-items: center; justify-content: center; | |
| font-family: Georgia, serif; font-weight: 700; font-size: 22px; | |
| border-right: 1px dashed rgba(246,239,225,0.3); | |
| } | |
| .bsh .ledger .row:hover .n { background: var(--rust); color: var(--cream); } | |
| .bsh .ledger .row .body { padding: 14px 18px; } | |
| .bsh .ledger .row .body .name { font-weight: 700; color: var(--bark); font-size: 16px; } | |
| .bsh .ledger .row .body .desc { font-size: 14px; color: var(--ink); margin-top: 2px; } | |
| .bsh .ledger .row .body .name .done-tag { | |
| display: inline-block; margin-left: 8px; | |
| font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; | |
| color: var(--cream); background: var(--moss); | |
| padding: 2px 8px; border-radius: 999px; | |
| vertical-align: middle; | |
| } | |
| /* ---------- accordion (post-event recap) ---------- */ | |
| .bsh .trail-accordion { | |
| border: 1.5px dashed var(--walnut); | |
| border-radius: 10px; | |
| background: var(--paper); | |
| overflow: hidden; | |
| margin-top: 16px; | |
| } | |
| .bsh .trail-accordion > summary { | |
| list-style: none; | |
| cursor: pointer; | |
| display: flex; align-items: center; justify-content: space-between; | |
| gap: 14px; | |
| padding: 16px 20px; | |
| font-family: Georgia, "Iowan Old Style", serif; | |
| font-weight: 700; | |
| font-size: 15px; | |
| color: var(--bark); | |
| user-select: none; | |
| } | |
| .bsh .trail-accordion > summary::-webkit-details-marker { display: none; } | |
| .bsh .trail-accordion > summary:hover { background: var(--cream); } | |
| .bsh .trail-accordion > summary .acc-icon { | |
| font-family: Georgia, serif; font-size: 22px; line-height: 1; color: var(--rust); | |
| transition: transform 0.2s ease; flex-shrink: 0; | |
| } | |
| .bsh .trail-accordion[open] > summary .acc-icon { transform: rotate(45deg); } | |
| .bsh .trail-accordion[open] > summary { border-bottom: 1px dashed rgba(138,106,72,0.45); } | |
| .bsh .trail-accordion .ledger { margin: 18px 20px 20px; } | |
| /* ---------- resources ---------- */ | |
| .bsh .resources { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); | |
| gap: 10px 22px; margin-top: 14px; | |
| } | |
| .bsh .resources a { | |
| display: flex; align-items: center; justify-content: space-between; | |
| padding: 10px 14px; border: 1px dashed var(--walnut); border-radius: 6px; | |
| background: var(--paper); text-decoration: none; color: var(--bark); | |
| font-size: 14px; font-weight: 700; | |
| transition: background 0.15s ease, transform 0.15s ease; | |
| } | |
| .bsh .resources a:hover { background: var(--cream); transform: translateX(2px); border-style: solid; } | |
| .bsh .resources a .arr { color: var(--rust); font-family: Georgia, serif; } | |
| /* ---------- timeline / map ---------- */ | |
| .bsh .map { | |
| margin-top: 18px; | |
| background: | |
| radial-gradient(circle at 12% 22%, rgba(90,107,58,0.10), transparent 22%), | |
| radial-gradient(circle at 88% 78%, rgba(201,138,60,0.10), transparent 24%), | |
| var(--paper); | |
| border: 1.5px solid var(--walnut); | |
| border-radius: 10px; | |
| padding: 22px 22px 18px; | |
| position: relative; | |
| } | |
| .bsh .map .map-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; } | |
| .bsh .map .map-head .compass { font-size: 22px; color: var(--rust); } | |
| .bsh .stops { position: relative; padding: 6px 0 0; } | |
| .bsh .stops::before { | |
| content: ""; position: absolute; left: 43px; top: 18px; bottom: 18px; | |
| border-left: 2px dashed var(--copper); | |
| } | |
| /* .stop: flex with the Switcher trick on .what so it wraps below pin+when | |
| when the row is narrower than ~500px. Pin stays anchored on the trail. */ | |
| .bsh .stop { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 4px 14px; | |
| padding: 10px 6px; border-radius: 6px; position: relative; | |
| transition: background 0.15s ease; | |
| } | |
| .bsh .stop:hover { background: rgba(201,138,60,0.08); } | |
| .bsh .stop .pin { | |
| width: 38px; height: 38px; border-radius: 50%; | |
| background: var(--cream); | |
| border: 2px solid var(--walnut); | |
| box-shadow: inset 0 0 0 3px var(--cream), inset 0 0 0 4px var(--copper); | |
| display: flex; align-items: center; justify-content: center; | |
| font-family: Georgia, serif; font-weight: 700; color: var(--bark); font-size: 14px; | |
| margin-left: 19px; position: relative; z-index: 1; | |
| flex-shrink: 0; | |
| } | |
| .bsh .stop:hover .pin { background: var(--sun); } | |
| .bsh .stop.stop-done .pin { background: var(--moss); color: var(--cream); border-color: var(--moss); } | |
| .bsh .stop.stop-now .pin { background: var(--sun); border-color: var(--rust); box-shadow: inset 0 0 0 3px var(--cream), inset 0 0 0 4px var(--rust); } | |
| .bsh .stop .when { | |
| flex: 0 1 160px; | |
| font-style: italic; color: var(--rust); font-size: 14px; | |
| } | |
| .bsh .stop .what { | |
| color: var(--bark); | |
| flex-grow: 1; | |
| /* Switcher: when (500px - 100%) is positive (narrow) the basis | |
| blows up and .what wraps to its own line; when negative (wide) | |
| it clamps and .what sits inline. */ | |
| flex-basis: calc((500px - 100%) * 999); | |
| min-width: 0; | |
| /* When wrapped (narrow), indent to align with .when (pin margin 19 + | |
| pin 38 + gap 14 = 71). When inline (wide), clamps to 0 — the flex | |
| gap handles spacing. */ | |
| padding-left: clamp(0px, (500px - 100%) * 9999, 71px); | |
| } | |
| .bsh .stop .what b { color: var(--bark); font-weight: 700; } | |
| .bsh .stop .what .note { display: block; font-size: 13px; color: var(--ink); opacity: 0.85; } | |
| /* ---------- final cta ---------- */ | |
| .bsh .cta { | |
| background: | |
| repeating-linear-gradient(45deg, rgba(58,37,22,0.04) 0 6px, transparent 6px 12px), | |
| linear-gradient(180deg, #2f1f12, var(--bark)); | |
| color: var(--cream); | |
| padding: 36px var(--gutter) 40px; | |
| text-align: center; | |
| border-top: 6px double var(--copper); | |
| position: relative; | |
| } | |
| .bsh .cta h2 { color: var(--cream); font-size: clamp(28px, 5vw, 38px); } | |
| .bsh .cta h2 em { color: var(--sun); font-style: italic; } | |
| .bsh .cta p { color: rgba(246,239,225,0.85); font-size: 16px; max-width: 56ch; margin: 10px auto 22px; } | |
| .bsh .cta .button { | |
| display: inline-block; padding: 14px 26px; | |
| background: var(--sun); color: var(--bark); | |
| border: 2px solid var(--sun); | |
| border-radius: 999px; | |
| font-weight: 700; font-size: 16px; text-decoration: none; | |
| letter-spacing: 0.04em; | |
| box-shadow: 0 4px 0 rgba(0,0,0,0.25); | |
| transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; | |
| } | |
| .bsh .cta .button:hover { | |
| background: var(--cream); border-color: var(--cream); | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 0 rgba(0,0,0,0.3); | |
| } | |
| .bsh .cta .links { margin-top: 18px; font-size: 13px; } | |
| .bsh .cta .links a { color: var(--sun); margin: 0 10px; } | |
| .bsh .cta .placeholder { display: block; margin-top: 10px; font-size: 11px; color: rgba(246,239,225,0.5); font-style: italic; letter-spacing: 0.1em; text-transform: uppercase; } | |
| /* ---------- decorative svg dividers ---------- */ | |
| .bsh .ornament-rule { | |
| display: flex; align-items: center; gap: 12px; | |
| color: var(--copper); | |
| margin: 18px 0 22px; | |
| } | |
| .bsh .ornament-rule::before, .bsh .ornament-rule::after { | |
| content: ""; flex: 1; height: 0; | |
| border-top: 1px solid var(--walnut); | |
| border-bottom: 1px solid var(--walnut); | |
| height: 3px; | |
| } | |
| </style> | |
| <div class="bsh"> | |
| <!-- banner --> | |
| <div style="padding: 0 11px;"> | |
| <img | |
| src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/Z0dKQfn56SAMmjVQTEaA0.png" | |
| alt="Build Small Hackathon — small models, big adventure" | |
| style="display: block; width: 100%; height: auto;" | |
| /> | |
| </div> | |
| <!-- top strip --> | |
| <div class="strip"> | |
| <div class="who"> | |
| <span><span class="caps">Hosted by</span> <b style="color:#f6efe1; font-family:Georgia,serif;">Gradio</b> · <b style="color:#f6efe1; font-family:Georgia,serif;">Hugging Face</b></span> | |
| <span><span class="caps">Anchor Sponsors</span> <b style="color:#f6efe1; font-family:Georgia,serif;">OpenBMB</b> · <b style="color:#f6efe1; font-family:Georgia,serif;">OpenAI</b> · <b style="color:#f6efe1; font-family:Georgia,serif;">NVIDIA</b> · <b style="color:#f6efe1; font-family:Georgia,serif;">Modal</b></span> | |
| <span><span class="caps">Cash & Prizes</span> <span class="mono" style="color:#f6efe1;"><b>$48k+</b></span></span> | |
| </div> | |
| </div> | |
| <!-- status callout: winners announced --> | |
| <div class="must-register"> | |
| <div class="mr-text"> | |
| <div class="mr-headline">🎉 The winners are <em>in!</em></div> | |
| <div class="mr-sub">The judges have spoken — <b>23 winning projects</b> across both tracks, the sponsor podiums, and the special & community awards are logged now in the <b>Prize Ledger</b> — including the <b>NVIDIA Nemotron</b> GPU, just awarded to <b>Figment</b>. Two sponsor podiums (Modal, OpenAI) — <b>6 prizes</b> — are still being decided; those land <b>next week</b>.</div> | |
| </div> | |
| <a href="https://huggingface.co/spaces/build-small-hackathon/prize-ledger" class="mr-button">→ See the Prize Ledger ←</a> | |
| </div> | |
| <!-- sponsors section --> | |
| <section class="sponsors"> | |
| <div class="sponsor-head"> | |
| <div class="caps">Our Trail Partners</div> | |
| <h2>Backed by the <em>best in AI.</em></h2> | |
| <p>The folks making this adventure possible — the full roster, locked in.</p> | |
| </div> | |
| <!-- host contribution --> | |
| <div class="tier-label">From Your Hosts</div> | |
| <div class="host-card"> | |
| <div class="logo-slot-host"> | |
| <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" /> | |
| </div> | |
| <div class="meta"> | |
| <div class="name">Hugging Face</div> | |
| <div class="desc"><b>$15,000</b> into the cash prize pool, plus <b>$20</b> in Hugging Face credits for <b>every participant</b>. We're not just hosting the trail — we're packing the provisions too.</div> | |
| </div> | |
| </div> | |
| <!-- anchor sponsors --> | |
| <div class="tier-label">Anchor Sponsors</div> | |
| <div class="anchors"> | |
| <div class="anchor-card"> | |
| <div class="logo-slot"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/mzMkyXIjLpnnqXOl8Lpk4.png" alt="OpenAI Logo" /> | |
| </div> | |
| <p class="contribution"><b>$10,000</b> in cash prizes, plus <b>$100</b> in Codex credits for the first <b>1,000</b> participants.</p> | |
| </div> | |
| <div class="anchor-card"> | |
| <div class="logo-slot"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/wYm-DlI9aieKgNaMOyZNG.png" alt="NVIDIA Logo" /> | |
| </div> | |
| <p class="contribution">Two <b>RTX 5080 GPUs🔥</b> as physical prizes.</p> | |
| </div> | |
| <div class="anchor-card"> | |
| <div class="logo-slot"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/pQinmWtp5Ry-KPqcjPjWQ.png" alt="Modal Logo" /> | |
| </div> | |
| <p class="contribution"><b>$250</b> in Modal credits for <b>every participant</b>, plus <b>$20,000</b> in credits for the winners.</p> | |
| </div> | |
| <div class="anchor-card"> | |
| <div class="logo-slot"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/yZ9NtM2v-1xdDGVyZIDlP.png" alt="OpenBMB Logo" /> | |
| </div> | |
| <p class="contribution"><b>$10,000</b> in special category prizes — split across both tracks for the standout OpenBMB picks.</p> | |
| </div> | |
| </div> | |
| <!-- supporting sponsors --> | |
| <div class="tier-label">Supporting Sponsors</div> | |
| <div class="supporters"> | |
| <div class="supporter-card"> | |
| <div class="logo-slot-sm"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/6u758uEg9TnK0pOPxYwY-.png" alt="Cohere Logo" /> | |
| </div> | |
| <div class="meta"> | |
| <div class="name">Cohere</div> | |
| <div class="desc"><b>$5,000</b> in cash prize contribution to the pool.</div> | |
| </div> | |
| </div> | |
| <div class="supporter-card"> | |
| <div class="logo-slot-sm"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/bSUIAOKwim9WUud6S2Pxk.png" alt="JetBrains Logo" /> | |
| </div> | |
| <div class="meta"> | |
| <div class="name">JetBrains</div> | |
| <div class="desc"><b>$5,000</b> in cash prize contribution to the pool.</div> | |
| </div> | |
| </div> | |
| <div class="supporter-card"> | |
| <div class="logo-slot-sm"> | |
| <img src="https://huggingface.co/proxy/cdn-uploads.huggingface.co/production/uploads/60d2dc1007da9c17c72708f8/ql37h0WxsPtgojRlupqG0.png" alt="Black Forest Labs Logo" /> | |
| </div> | |
| <div class="meta"> | |
| <div class="name">Black Forest Labs</div> | |
| <div class="desc"><b>$3,000</b> in cash prize contribution to the pool.</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="sponsor-total"> | |
| <span class="total-label">Total Prize Pool</span> | |
| <span class="total-num">$48,000+</span> | |
| <span class="total-note">in cash & physical prizes across both tracks — plus per-participant credits ($100 Codex · $250 Modal · $20 Hugging Face)</span> | |
| </div> | |
| </section> | |
| <!-- intro --> | |
| <section class="section no-rule intro"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Chapter Zero — Why this exists</div> | |
| <p style="margin-top: 14px;">The pace of AI over the last year has been anxiety-inducing. Labs release larger and larger models that do more of the things that make us feel human — writing, drawing, speaking, coding. No wonder more than half of us think the risks of AI outweigh the benefits.</p> | |
| <div class="pull">We're sponsoring a hackathon to take things back to how they felt in 2021 — when models were small enough to tinker with, and the vibe was fun and hopeful about how this technology could improve our lives.</div> | |
| <p style="margin-top: 14px;">This hackathon is different. Rather than using a giant LLM to ship yet another B2B SaaS, we wanted you to <b>think small</b>. Armed with only <b>32 billion parameters</b>, solve a problem someone you know is facing — or build something whimsical.</p> | |
| </section> | |
| <!-- two tracks --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Two Tracks · Pick your trail</div> | |
| <h2>Choose your own adventure.</h2> | |
| <div class="tracks"> | |
| <div class="track"> | |
| <span class="chap">Chapter One</span> | |
| <div class="ico">🏡</div> | |
| <h3>Backyard AI</h3> | |
| <p>Solve a real problem for someone you actually know. Pick a person — a neighbor, a parent, a small-business owner on your street — and build something that makes their day measurably better.</p> | |
| <div class="judged"> | |
| <span class="caps">Judged on</span> | |
| <ul> | |
| <li>Problem is specific and real</li> | |
| <li>The person actually <em>used it</em></li> | |
| <li>Honest fit between problem and the small-model constraint</li> | |
| <li>Polish of the Gradio app</li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="track"> | |
| <span class="chap">Chapter Two</span> | |
| <div class="ico">🍄</div> | |
| <h3>An Adventure in Thousand Token Wood</h3> | |
| <p>Build something delightful that wouldn't exist without AI. Wander somewhere weirder. A toy, a tiny game, a strange interactive story, an art experiment that surprises you. The AI should be doing the fun thing — not just helping you build it. Strange is good. Joyful is the bar.</p> | |
| <div class="judged"> | |
| <span class="caps">Judged on</span> | |
| <ul> | |
| <li>Genuinely delightful (would you show a friend?)</li> | |
| <li>AI is load-bearing for the experience</li> | |
| <li>Originality of concept</li> | |
| <li>Polish of the Gradio app</li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- constraints --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> The Constraints — Three rules of the trail</div> | |
| <h2>Pack light.</h2> | |
| <div class="constraints"> | |
| <div class="constraint"> | |
| <div class="num">1</div> | |
| <h3>Small Models Only</h3> | |
| <p>Total parameters must be <b>≤ 32 billion</b>. The model fits on a laptop. So should your ambition.</p> | |
| </div> | |
| <div class="constraint"> | |
| <div class="num">2</div> | |
| <h3>Built on Gradio</h3> | |
| <p>Your app must be a <b>Gradio app</b>, hosted as a <b>Hugging Face Space</b>. That's the canvas.</p> | |
| </div> | |
| <div class="constraint"> | |
| <div class="num">3</div> | |
| <h3>Show, Don't Tell</h3> | |
| <p>A short <b>demo video</b> and a <b>social-media post</b> are part of the submission. Make it sing.</p> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- bonus quests --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Bonus Quests · Six earnable merit badges</div> | |
| <h2>Stack 'em on your sash.</h2> | |
| <p class="lede" style="margin-top: 6px;">None required. Each one grants extra points for your submission. Hover a patch to see it lift.</p> | |
| <div class="sash"> | |
| <div class="badges"> | |
| <div class="badge"> | |
| <div class="patch sun">🔌</div> | |
| <div class="meta"> | |
| <div class="name">Off the Grid</div> | |
| <div class="desc">No cloud APIs. The whole thing runs on the model in front of you.</div> | |
| <span class="tag">Local-first</span> | |
| </div> | |
| </div> | |
| <div class="badge"> | |
| <div class="patch moss">🎯</div> | |
| <div class="meta"> | |
| <div class="name">Well-Tuned</div> | |
| <div class="desc">Your app uses a fine-tuned model you've published on Hugging Face.</div> | |
| <span class="tag">Fine-tuned</span> | |
| </div> | |
| </div> | |
| <div class="badge"> | |
| <div class="patch rust">🎨</div> | |
| <div class="meta"> | |
| <div class="name">Off-Brand</div> | |
| <div class="desc">A custom frontend that pushes past the default Gradio look (Hint: see `gr.Server`).</div> | |
| <span class="tag">Custom UI</span> | |
| </div> | |
| </div> | |
| <div class="badge"> | |
| <div class="patch copper">🦙</div> | |
| <div class="meta"> | |
| <div class="name">Llama Champion</div> | |
| <div class="desc">Your model runs through the llama.cpp runtime.</div> | |
| <span class="tag">llama.cpp</span> | |
| </div> | |
| </div> | |
| <div class="badge"> | |
| <div class="patch cream">📡</div> | |
| <div class="meta"> | |
| <div class="name">Sharing is Caring</div> | |
| <div class="desc">You shared your agent trace on the Hub for everyone to learn from.</div> | |
| <span class="tag">Open trace</span> | |
| </div> | |
| </div> | |
| <div class="badge"> | |
| <div class="patch olive">📓</div> | |
| <div class="meta"> | |
| <div class="name">Field Notes</div> | |
| <div class="desc">You wrote a blog post or report about what you built and what you learned.</div> | |
| <span class="tag">Write-up</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- awards --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> The Awards · What you're competing for</div> | |
| <h2>The trophy cabinet.</h2> | |
| <p class="awards-note">Every submission to a main track competes for that track's podium. Sponsor and special awards are separate categories on top — one great app can take home more than one.</p> | |
| <!-- main tracks --> | |
| <div class="tier-label">Main Track Awards · $18,000</div> | |
| <div class="podiums"> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🏡</span><h3>Backyard AI</h3></div> | |
| <div class="podium-sub">Top four submissions on this trail.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">1st</span> First Place</span><span class="amt">$4,000</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">2nd</span> Second Place</span><span class="amt">$2,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">3rd</span> Third Place</span><span class="amt">$1,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">4th</span> Fourth Place</span><span class="amt">$1,000</span></div> | |
| </div> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🍄</span><h3>Thousand Token Wood</h3></div> | |
| <div class="podium-sub">Top four submissions on this trail.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">1st</span> First Place</span><span class="amt">$4,000</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">2nd</span> Second Place</span><span class="amt">$2,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">3rd</span> Third Place</span><span class="amt">$1,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">4th</span> Fourth Place</span><span class="amt">$1,000</span></div> | |
| </div> | |
| </div> | |
| <!-- community choice --> | |
| <div class="community-card"> | |
| <span class="ico">🗳️</span> | |
| <div class="meta"> | |
| <div class="name">Community Choice — by Hugging Face</div> | |
| <div class="desc">One winner, voted by the community. The app the trail itself loved most.</div> | |
| </div> | |
| <span class="amt">$2,000</span> | |
| </div> | |
| <!-- sponsor awards --> | |
| <div class="tier-label">Sponsor Awards</div> | |
| <div class="podiums"> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🏮</span><h3>OpenBMB Awards</h3></div> | |
| <div class="podium-sub">$10,000 total — three prizes <b>in each</b> of the two tracks for the standout OpenBMB picks.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">1st</span> First, per track</span><span class="amt">$2,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">2nd</span> Second, per track</span><span class="amt">$1,500</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">3rd</span> Third, per track</span><span class="amt">$1,000</span></div> | |
| </div> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🌀</span><h3>OpenAI Track</h3></div> | |
| <div class="podium-sub">$10,000 total — OpenAI's own podium across all submissions.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">1st</span> First Place</span><span class="amt">$5,000</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">2nd</span> Second Place</span><span class="amt">$3,000</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">3rd</span> Third Place</span><span class="amt">$2,000</span></div> | |
| </div> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🟩</span><h3>NVIDIA Nemotron Quest</h3></div> | |
| <div class="podium-sub">A physical GPU for the standout Nemotron build — <b>awarded</b>.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">🏆</span> <a href="https://huggingface.co/spaces/build-small-hackathon/figment">Figment</a></span><span class="amt">RTX 5080</span></div> | |
| </div> | |
| <div class="podium"> | |
| <div class="podium-head"><span class="ico">🟢</span><h3>Modal Awards</h3></div> | |
| <div class="podium-sub">$20,000 in Modal credits for the top Modal-powered apps.</div> | |
| <div class="prize-row gold"><span class="place"><span class="medal">1st</span> First Place</span><span class="amt">$10,000 credits</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">2nd</span> Second Place</span><span class="amt">$7,000 credits</span></div> | |
| <div class="prize-row"><span class="place"><span class="medal">3rd</span> Third Place</span><span class="amt">$3,000 credits</span></div> | |
| </div> | |
| </div> | |
| <!-- special awards --> | |
| <div class="tier-label">Special Awards · $8,000</div> | |
| <div class="specials"> | |
| <div class="special-card"> | |
| <span class="amt-tag">$2,000</span> | |
| <div class="name">🎖️ Bonus Quest Champion</div> | |
| <div class="desc">The most merit badges stacked on a single sash. Collect 'em all.</div> | |
| </div> | |
| <div class="special-card"> | |
| <span class="amt-tag">$1,500</span> | |
| <div class="name">🎨 Off-Brand Award</div> | |
| <div class="desc">The best custom UI pushing past the default Gradio look. <code>gr.Server</code> is your friend.</div> | |
| </div> | |
| <div class="special-card"> | |
| <span class="amt-tag">$1,500</span> | |
| <div class="name">🐜 Tiny Titan</div> | |
| <div class="desc">The best app built on a genuinely tiny model — think ≤4B parameters.</div> | |
| </div> | |
| <div class="special-card"> | |
| <span class="amt-tag">$1,000</span> | |
| <div class="name">🎬 Best Demo</div> | |
| <div class="desc">The full package: great app, great demo video, great social post.</div> | |
| </div> | |
| <div class="special-card"> | |
| <span class="amt-tag">$1,000</span> | |
| <div class="name">🤖 Best Agent</div> | |
| <div class="desc">The best agentic app — all under the 32B cap, of course.</div> | |
| </div> | |
| <div class="special-card"> | |
| <span class="amt-tag">$1,000</span> | |
| <div class="name">🃏 Judges' Wildcard</div> | |
| <div class="desc">For the entry that's amazing but fits no category. We know you're out there.</div> | |
| </div> | |
| </div> | |
| <div class="sponsor-total"> | |
| <span class="total-label">All In</span> | |
| <span class="total-num">$48,000 cash</span> | |
| <span class="total-note">+ two RTX 5080 GPUs + $20,000 in Modal credits — across 29 separate awards</span> | |
| </div> | |
| </section> | |
| <!-- how it worked (collapsed recap) --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> How it worked</div> | |
| <h2>The trail, start to finish.</h2> | |
| <p class="awards-note">Registration and submissions are closed — here's the route every builder followed, kept for the record.</p> | |
| <details class="trail-accordion"> | |
| <summary><span class="acc-label">Review the four steps builders took</span><span class="acc-icon">+</span></summary> | |
| <div class="ledger"> | |
| <div class="row"> | |
| <div class="n">I</div> | |
| <div class="body"> | |
| <div class="name">Register <span class="done-tag">Closed</span></div> | |
| <div class="desc">Registrations closed June 3, 2026. Builders who registered and joined this org were set for the trail.</div> | |
| </div> | |
| </div> | |
| <div class="row"> | |
| <div class="n">II</div> | |
| <div class="body"> | |
| <div class="name">Find your people</div> | |
| <div class="desc">Builders met teammates, joined the AMAs, and connected with Gradio and HF folks in the Discord.</div> | |
| </div> | |
| </div> | |
| <div class="row"> | |
| <div class="n">III</div> | |
| <div class="body"> | |
| <div class="name">Build & ship</div> | |
| <div class="desc">Each team built a Gradio app and hosted it as a Space under this org.</div> | |
| </div> | |
| </div> | |
| <div class="row"> | |
| <div class="n">IV</div> | |
| <div class="body"> | |
| <div class="name">Submit</div> | |
| <div class="desc">Final submissions — a Space link, a short demo video, and a social post — landed by the June 15 deadline.</div> | |
| </div> | |
| </div> | |
| </div> | |
| </details> | |
| </section> | |
| <!-- what happens next --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Where things stand</div> | |
| <h2>The winners are in.</h2> | |
| <p class="lede" style="margin-top: 6px;">Judging's wrapped and the results are live. Here's what's decided — and the last few prizes still to come.</p> | |
| <div class="constraints"> | |
| <div class="constraint"> | |
| <div class="num">✓</div> | |
| <h3>Judged</h3> | |
| <p>Gradio, Hugging Face, and our sponsor teams reviewed every eligible submission against each track and prize rubric — verifying parameter caps and entry criteria along the way.</p> | |
| </div> | |
| <div class="constraint"> | |
| <div class="num">✓</div> | |
| <h3>Winners announced</h3> | |
| <p><b>23 winning projects</b> — both track podiums, the OpenBMB and community picks, six special awards, and the NVIDIA Nemotron GPU (Figment) — are up now in the <a href="https://huggingface.co/spaces/build-small-hackathon/prize-ledger">Prize Ledger</a>.</p> | |
| </div> | |
| <div class="constraint"> | |
| <div class="num">3</div> | |
| <h3>Still being decided</h3> | |
| <p><b>Six more prizes</b> — the <b>Modal</b> and <b>OpenAI</b> podiums — are still in judging. We'll announce those <b>next week</b>.</p> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- resources --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Tools for the trail</div> | |
| <h2>Useful trailheads.</h2> | |
| <div class="resources"> | |
| <a href="https://huggingface.co/proxy/build-small-hackathon-field-guide.hf.space/"><span>📖 The Field Guide — rules, prizes & kit</span><span class="arr">→</span></a> | |
| <a href="https://github.com/huggingface/ml-intern"><span>📓 ML Intern</span><span class="arr">→</span></a> | |
| <a href="https://www.gradio.app/guides/quickstart"><span>📚 Gradio Guides</span><span class="arr">→</span></a> | |
| <a href="https://huggingface.co/blog/introducing-gradio-server"><span>🛠 Gradio's gr.Server — fully custom UIs</span><span class="arr">→</span></a> | |
| <a href="https://github.com/ggml-org/llama.cpp"><span>🦙 Getting Started with Llama.cpp</span><span class="arr">→</span></a> | |
| </div> | |
| </section> | |
| <!-- timeline / map --> | |
| <section class="section"> | |
| <div class="section-label caps"><span class="ornament">❋</span> Timeline · A hand-drawn map</div> | |
| <h2>Two weekends in the woods.</h2> | |
| <div class="map"> | |
| <div class="map-head"> | |
| <span class="caps muted">Trail map</span> | |
| <span class="compass" aria-hidden="true">✦ N ✦</span> | |
| </div> | |
| <div class="stops"> | |
| <div class="stop stop-done"> | |
| <div class="pin">✓</div> | |
| <div class="when">May 07 – June 3, 2026</div> | |
| <div class="what"><b>Registration window.</b><span class="note">Closed. Sign-ups wrapped June 3.</span></div> | |
| </div> | |
| <div class="stop stop-done"> | |
| <div class="pin">✓</div> | |
| <div class="when">June 5, 2026</div> | |
| <div class="what"><b>Hack window began.</b><span class="note">Two weekends to build, ship, and demo.</span></div> | |
| </div> | |
| <div class="stop stop-done"> | |
| <div class="pin">✓</div> | |
| <div class="when">Mid-window</div> | |
| <div class="what"><b>Live AMA.</b><span class="note">Sponsors and the Gradio team answered your questions.</span></div> | |
| </div> | |
| <div class="stop stop-done"> | |
| <div class="pin">✓</div> | |
| <div class="when">June 15, 2026</div> | |
| <div class="what"><b>Submissions closed.</b><span class="note">Spaces, demo videos, and social posts locked in.</span></div> | |
| </div> | |
| <div class="stop stop-done"> | |
| <div class="pin">✓</div> | |
| <div class="when">July 10, 2026</div> | |
| <div class="what"><b>Winners announced.</b><span class="note">23 winning projects went up in the Prize Ledger — track podiums, sponsor & special awards.</span></div> | |
| </div> | |
| <div class="stop stop-now"> | |
| <div class="pin">★</div> | |
| <div class="when">Next week</div> | |
| <div class="what"><b>Final sponsor prizes.</b><span class="note">You are here. Modal & OpenAI — 6 prizes still being decided.</span></div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- final cta --> | |
| <div class="cta"> | |
| <h2>You built something <em>small</em>.</h2> | |
| <p>Two weekends. Two tracks. Hundreds of Spaces shipped on models that fit on a laptop — and 23 of them just took home the win. Thanks for hitting the trail.</p> | |
| <a href="https://huggingface.co/spaces/build-small-hackathon/prize-ledger" class="button">→ See the Prize Ledger ←</a> | |
| <p class="registration_info" style="color: rgba(255,255,255,0.65);"> | |
| 23 winners announced · 6 sponsor prizes still to come next week. | |
| </p> | |
| <div class="links"> | |
| <a href="https://huggingface.co/spaces/build-small-hackathon/prize-ledger">Prize Ledger</a> · <a href="https://huggingface.co/build-small-hackathon/spaces">Submissions</a> · <a href="https://discord.gg/YHECTft87Z">Discord</a> · <a href="https://huggingface.co/proxy/build-small-hackathon-field-guide.hf.space/">Field Guide</a> | |
| </div> | |
| </div> | |
| </div> |