2026-10-04 19:27:36 +01:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< meta name = "theme-color" content = "#132720" >
< meta name = "description" content = "A shared two-year Stardew Valley Community Center planner." >
< link rel = "icon" type = "image/svg+xml" href = "/favicon.svg" >
2026-10-05 22:56:06 +01:00
< link rel = "stylesheet" href = "/styles.css?v=1.4.0" >
2026-10-04 19:27:36 +01:00
< title > Valley Yearbook< / title >
< / head >
< body >
< div class = "app-shell" >
< header class = "topbar" >
< a class = "brand" href = "#today" aria-label = "Valley Yearbook home" >
< span class = "brand-mark" aria-hidden = "true" > < i > < / i > < i > < / i > < i > < / i > < i > < / i > < / span >
< span > < strong > Valley Yearbook< / strong > < small > Two years, one shared plan< / small > < / span >
< / a >
< div class = "sync-status" id = "sync-status" role = "status" aria-live = "polite" >
< span class = "sync-dot" > < / span > < span > Connecting…< / span >
< / div >
< / header >
< main >
< section class = "date-deck" aria-labelledby = "date-title" >
< div class = "date-heading" >
< div >
< p class = "eyebrow" > Farm calendar< / p >
< h1 id = "date-title" > < span id = "season-title" > Spring< / span > < span id = "day-title" > 1< / span > < / h1 >
< p id = "weekday-title" > Monday · Year 1< / p >
< / div >
< div class = "date-arrows" aria-label = "Change day" >
< button id = "previous-day" type = "button" aria-label = "Previous day" > − < / button >
< button id = "next-day" type = "button" aria-label = "Next day" > +< / button >
< / div >
< / div >
< div class = "year-switch" role = "group" aria-label = "Year" >
< button type = "button" data-year = "1" aria-pressed = "true" > Year one< / button >
< button type = "button" data-year = "2" aria-pressed = "false" > Year two< / button >
< / div >
< div class = "season-tabs" role = "tablist" aria-label = "Season" >
< button type = "button" role = "tab" data-season = "spring" aria-selected = "true" > < span > ✿< / span > Spring< / button >
< button type = "button" role = "tab" data-season = "summer" aria-selected = "false" > < span > ☀< / span > Summer< / button >
< button type = "button" role = "tab" data-season = "fall" aria-selected = "false" > < span > ◆< / span > Fall< / button >
< button type = "button" role = "tab" data-season = "winter" aria-selected = "false" > < span > ✦< / span > Winter< / button >
< / div >
< div class = "day-grid" id = "day-grid" aria-label = "Day of season" > < / div >
2026-10-05 19:54:15 +01:00
< p class = "calendar-key" > < span aria-hidden = "true" > 🎂< / span > Villager birthday< / p >
2026-10-04 19:27:36 +01:00
< / section >
< nav class = "section-nav" aria-label = "Planner sections" >
< a href = "#today" class = "active" > Today< / a >
< a href = "#crops" > Planting plan< / a >
< a href = "#bundles" > Community Center< / a >
< / nav >
< section id = "today" class = "content-section today-section" aria-labelledby = "today-heading" >
< div class = "section-heading" >
< div > < p class = "eyebrow" > At a glance< / p > < h2 id = "today-heading" > Today in the valley< / h2 > < / div >
2026-10-04 20:19:03 +01:00
< p id = "today-summary" > Tick a card when you’ ve handled it.< / p >
2026-10-04 19:27:36 +01:00
< / div >
< div id = "today-cards" class = "today-grid" > < / div >
< / section >
< section id = "crops" class = "content-section" aria-labelledby = "crops-heading" >
< div class = "section-heading" >
< div > < p class = "eyebrow" > No Speed-Gro assumed< / p > < h2 id = "crops-heading" > Planting plan< / h2 > < / div >
< p > Last safe dates assume the crop is watered on planting day.< / p >
< / div >
< div id = "crop-list" class = "crop-list" > < / div >
< / section >
< section id = "bundles" class = "content-section" aria-labelledby = "bundles-heading" >
< div class = "section-heading bundle-heading" >
< div > < p class = "eyebrow" > Standard bundles< / p > < h2 id = "bundles-heading" > Community Center< / h2 > < / div >
< div class = "progress-cluster" >
< span id = "progress-label" > 0 of 0 essentials< / span >
< div class = "progress-track" aria-hidden = "true" > < i id = "progress-bar" > < / i > < / div >
< / div >
< / div >
2026-10-05 19:10:19 +01:00
< div class = "priority-summary" id = "priority-summary" aria-label = "Season priorities" >
< button type = "button" data-filter = "now" aria-pressed = "false" >
< strong id = "needed-now-count" > 0< / strong >
< span > Needed now< / span >
< small id = "needed-now-detail" > Available this season< / small >
< / button >
< button type = "button" data-filter = "exclusive" aria-pressed = "false" >
< strong id = "exclusive-count" > 0< / strong >
< span > Season-only< / span >
< small id = "exclusive-detail" > Miss it, wait a year< / small >
< / button >
< button type = "button" data-filter = "weather" aria-pressed = "false" >
< strong id = "weather-count" > 0< / strong >
< span > Weather window< / span >
< small > Rain or sun required< / small >
< / button >
< / div >
2026-10-04 19:27:36 +01:00
< div class = "bundle-toolbar" role = "group" aria-label = "Bundle filter" >
< button type = "button" data-filter = "all" aria-pressed = "true" > All rooms< / button >
2026-10-05 19:10:19 +01:00
< button type = "button" data-filter = "now" aria-pressed = "false" > Needed now< / button >
< button type = "button" data-filter = "exclusive" aria-pressed = "false" > Season-only< / button >
< button type = "button" data-filter = "weather" aria-pressed = "false" > Weather-specific< / button >
< button type = "button" data-filter = "open" aria-pressed = "false" > All unfinished< / button >
2026-10-04 19:27:36 +01:00
< / div >
2026-10-05 19:10:19 +01:00
< p class = "availability-note" > < span aria-hidden = "true" > ◆< / span > Availability follows normal sources for the selected season; the Traveling Cart can occasionally provide exceptions.< / p >
2026-10-04 19:27:36 +01:00
< div id = "bundle-list" class = "bundle-list" > < / div >
< / section >
< / main >
< footer >
2026-10-05 19:54:15 +01:00
< p > Unofficial fan-made planner for Stardew Valley 1.6. Calendar, gift, and standard-bundle details are based on the < a href = "https://stardewvalleywiki.com/Calendar" rel = "noreferrer" > Stardew Valley Wiki< / a > .< / p >
2026-10-04 19:27:36 +01:00
< / footer >
< / div >
< div id = "toast" class = "toast" role = "alert" aria-live = "assertive" > < / div >
2026-10-05 22:56:06 +01:00
< script src = "/data.js?v=1.4.0" > < / script >
< script src = "/sync.js?v=1.4.0" > < / script >
< script src = "/availability.js?v=1.4.0" > < / script >
< script src = "/calendar.js?v=1.4.0" > < / script >
< script src = "/app.js?v=1.4.0" > < / script >
2026-10-04 19:27:36 +01:00
< / body >
< / html >