diff --git a/.agent/working-memory/plan-ui-refactor-docsy-theme.md b/.agent/working-memory/plan-ui-refactor-docsy-theme.md new file mode 100644 index 00000000..3476ac5d --- /dev/null +++ b/.agent/working-memory/plan-ui-refactor-docsy-theme.md @@ -0,0 +1,171 @@ +# Plan: Docsy UI Refactor and Color System Refresh + +**Date:** 2026-04-15 +**Site:** Open Modeling Foundation Hugo + Docsy gateway +**Primary style files:** +- `assets/scss/_variables_project.scss` +- `assets/scss/_styles_project.scss` +- `assets/scss/_sidebar-tree-with-links.scss` + +--- + +## Goal + +Refactor the visual system so the site reads as a modern scientific/editorial platform with stronger brand consistency, improved accessibility, and clearer hierarchy across homepage, docs pages, and resource content. + +## Non-goals + +- No information architecture changes (menus/routes/content structure stay as-is). +- No JavaScript framework migration. +- No component rewrite outside existing Docsy/Hugo templates unless required for styling hooks. + +--- + +## Proposed visual direction + +**Theme concept:** Scientific Editorial + +- Trust-first dark blue primary foundation +- Crisp teal for links and interactive affordances +- Warm amber accent reserved for key actions/highlights +- Light neutral surfaces for long-form readability +- Distinctive serif/sans pairing for stronger voice and scanability + +### Candidate palette (recommended) + +- `--omf-primary`: `#0F2742` +- `--omf-secondary`: `#0E7490` +- `--omf-accent`: `#F59E0B` +- `--omf-surface-1`: `#F7FAFC` +- `--omf-surface-2`: `#EAF1F6` +- `--omf-text`: `#1F2937` +- `--omf-text-muted`: `#4B5563` +- `--omf-border`: `#CBD5E1` + +Map these to Bootstrap/Docsy Sass variables (`$primary`, `$secondary`, `$light`, `$dark`, `$link-color`, etc.) in `_variables_project.scss`. + +--- + +## Work plan + +### Phase 1: Foundations (variables + typography) + +1. Replace ad-hoc colors with a coherent tokenized palette in `_variables_project.scss`. +2. Define heading/body font stacks with non-generic defaults. +3. Normalize link contrast and states (default/hover/focus/visited where applicable). +4. Keep navbar/footer colors aligned with the new tokens. + +**Deliverable:** Stable theme primitives with no page-level regressions. + +### Phase 2: Global components + +1. Refine card visual language (radius, border, depth, hover). +2. Improve sidebar readability and active states. +3. Standardize focus-visible styles across nav, content links, buttons. +4. Harmonize spacing rhythm for headings, paragraphs, and section blocks. + +**Deliverable:** Consistent interaction and hierarchy across standard Docsy layouts. + +### Phase 3: Homepage and hero polish + +1. Increase narrative hierarchy in hero section typography. +2. Improve section separation using controlled background contrast. +3. Tune icon block spacing and heading weights. +4. Introduce subtle motion only where it reinforces orientation. + +**Deliverable:** Distinct, intentional landing experience without visual noise. + +### Phase 4: Resource/doc page refinement + +1. Ensure resource-heavy pages (including awesome list) inherit the new system cleanly. +2. Recheck long-form content readability (line length, heading rhythm, lists). +3. Tighten metadata/callout card styling for consistency. + +**Deliverable:** High readability and cohesive branding in content-dense pages. + +--- + +## Implementation details + +### Files likely to edit + +- `assets/scss/_variables_project.scss` + - Color and typography tokens + - Bootstrap variable overrides +- `assets/scss/_styles_project.scss` + - Footer, cards, sidebar active indicators, docs content rhythm + - Homepage block enhancements + - Awesome list style alignment +- `content/en/_index.html` (optional/minimal) + - Minor semantic wrappers or utility classes for layout hooks + +### Guardrails + +- Preserve existing URL structure and menu behavior. +- Preserve Docsy compatibility and upgradeability. +- Avoid introducing heavy custom JS. +- Keep animation subtle and accessible (reduced-motion friendly). + +--- + +## Accessibility and quality criteria + +1. Contrast: + - Body text and interactive text must meet WCAG 2.2 AA. +2. Keyboard: + - All interactive elements show visible focus indicators. +3. Readability: + - Paragraph line length targets ~60-80 characters where practical. +4. Motion: + - Respect `prefers-reduced-motion`. +5. Regression: + - No broken layouts at mobile, tablet, and desktop breakpoints. + +--- + +## Validation plan + +Run in containerized environment: + +1. `docker compose run --rm --no-deps --entrypoint sh hugo -c '.github/scripts/build-site.sh'` +2. Spot-check representative pages in `public/`: + - home + - one standards page + - one working-group page + - resources index + - awesome-list page +3. HTML parse check for touched rendered pages using `xmllint --html --noout`. +4. Visual regression check by comparing before/after screenshots for key templates. + +--- + +## Risks and mitigations + +- **Risk:** New palette reduces contrast in existing components. + - **Mitigation:** Run targeted contrast checks before finalizing tokens. + +- **Risk:** Docsy defaults conflict with custom overrides. + - **Mitigation:** Keep overrides scoped and rely on variable-level changes first. + +- **Risk:** Typography choice increases layout shift/perf cost. + - **Mitigation:** Use performant font loading strategy and fallback stacks. + +--- + +## Suggested execution order + +1. Palette + link/focus tokens +2. Sidebar + card system +3. Homepage polish +4. Resource and awesome-list final pass +5. Build, validate, and document changes + +--- + +## Definition of done + +- Unified color system implemented and documented. +- Sidebar, cards, and content typography visibly improved and consistent. +- Homepage visual hierarchy is stronger and more intentional. +- Awesome-list and other long-form pages match the new design language. +- Container build passes and HTML parse checks pass for touched pages. diff --git a/.agent/working-memory/session.md b/.agent/working-memory/session.md index 80959dc7..f2a32777 100644 --- a/.agent/working-memory/session.md +++ b/.agent/working-memory/session.md @@ -4,10 +4,20 @@ - awesome-modeling-practices embed plan is ready: `.agent/working-memory/plan-awesome-list.md`. - navigation/resources refactor issue plan is ready: `.agent/working-memory/plan-navigation-resources-refactor.md`. -- Next step on request: implement the planned integration. +- UI refactor plan artifact is ready: `.agent/working-memory/plan-ui-refactor-docsy-theme.md`. +- Next step on request: complete visual QA pass for key pages and tune any contrast/spacing edge cases. ## Notes by date (newest first) +### 2026-04-15 + +- Resumed UI theme refactor handoff and implemented Phase 1 + Phase 2 baseline in SCSS: + - `assets/scss/_variables_project.scss`: tokenized Scientific Editorial palette, typography stacks, Bootstrap variable remap, focus ring tuning, reduced-motion handling. + - `assets/scss/_styles_project.scss`: global readability/focus updates, navbar/section backgrounds, footer restyle, card and sidebar interaction polish, awesome-list alignment. + - `assets/scss/_sidebar-tree-with-links.scss`: page-meta link contrast, hover/focus states, and typography weight adjustments. +- Validation run completed with containerized workflow: `make render` succeeded on 2026-04-15 22:45 UTC. +- Build warning observed (pre-existing): Hugo deprecation for `.Site.AllPages` in theme/template code, unrelated to this SCSS refactor. + ### 2026-03-31 - `Makefile` maintenance completed: fixed `make shell`, refactored shared Docker Compose flags, removed global `.NOTPARALLEL`, and simplified `clean` with a merged `find`. diff --git a/.github/scripts/download-fonts.sh b/.github/scripts/download-fonts.sh new file mode 100755 index 00000000..a48b970c --- /dev/null +++ b/.github/scripts/download-fonts.sh @@ -0,0 +1,139 @@ +#!/usr/bin/env bash +set -euo pipefail + +IFS=$'\n\t' + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +repo_root="$(cd "${script_dir}/../.." && pwd)" +cd "$repo_root" + +fonts_root="static/fonts" +tmpdir="$(mktemp -d)" + +cleanup() { + rm -rf "$tmpdir" +} +trap cleanup EXIT + +mkdir -p "$fonts_root" + +declare -a FONT_SPECS=() + +font_spec() { + FONT_SPECS+=("${1}|${2}|${3}|${4}|${5}") +} + +download() { + local url="$1" + local out="$2" + + curl \ + --fail \ + --location \ + --silent \ + --show-error \ + --proto '=https' \ + --tlsv1.2 \ + "$url" \ + -o "$out" +} + +verify_integrity() { + local package_spec="$1" + local tarball="$2" + local expected_integrity expected_b64 actual_b64 + + expected_integrity="$(npm view "$package_spec" dist.integrity --json | tr -d '"')" + if [[ -z "$expected_integrity" || "$expected_integrity" == "null" ]]; then + echo "Missing dist.integrity for $package_spec" >&2 + exit 1 + fi + + case "$expected_integrity" in + sha512-*) expected_b64="${expected_integrity#sha512-}" ;; + *) + echo "Unexpected integrity format for $package_spec: $expected_integrity" >&2 + exit 1 + ;; + esac + + actual_b64="$(openssl dgst -sha512 -binary "$tarball" | openssl base64 -A)" + + if [[ "$actual_b64" != "$expected_b64" ]]; then + echo "Integrity mismatch for $package_spec" >&2 + echo "expected: $expected_integrity" >&2 + echo "actual: sha512-$actual_b64" >&2 + exit 1 + fi +} + +copy_license() { + local package_dir="$1" + local dest_dir="$2" + + for candidate in LICENSE OFL.txt LICENSE.txt LICENSE.md; do + if [[ -f "$package_dir/$candidate" ]]; then + install -m 0644 "$package_dir/$candidate" "$dest_dir/OFL.txt" + return + fi + done + + echo "No license file found in $package_dir" >&2 + exit 1 +} + +install_family() { + local display_name="$1" + local family_slug="$2" + local package="$3" + local version="$4" + local files_csv="$5" + + local package_spec="${package}@${version}" + local tarball_url tarball unpack dest_dir + + tarball_url="$(npm view "$package_spec" dist.tarball --json | tr -d '"')" + tarball="$tmpdir/${family_slug}.tgz" + unpack="$tmpdir/${family_slug}" + dest_dir="$fonts_root/$family_slug" + + mkdir -p "$dest_dir" "$unpack" + download "$tarball_url" "$tarball" + verify_integrity "$package_spec" "$tarball" + tar -xzf "$tarball" -C "$unpack" + + local file + IFS=',' read -r -a files <<< "$files_csv" + for file in "${files[@]}"; do + install -m 0644 "$unpack/package/files/$file" "$dest_dir/" + done + + copy_license "$unpack/package" "$dest_dir" + echo "Installed $display_name $version" +} + +source "$script_dir/fonts.env" + +for spec in "${FONT_SPECS[@]}"; do + IFS='|' read -r display_name family_slug package version files_csv <<< "$spec" + install_family "$display_name" "$family_slug" "$package" "$version" "$files_csv" +done + +{ + echo "This directory contains self-hosted WOFF2 fonts used by the site." + echo + echo "Families:" + for spec in "${FONT_SPECS[@]}"; do + IFS='|' read -r display_name family_slug package version files_csv <<< "$spec" + echo "- ${display_name} (${version})" + done + echo + echo "Each family directory includes its upstream license file as OFL.txt." +} > "$fonts_root/README.md" + +ls -lh \ + "$fonts_root/public-sans" \ + "$fonts_root/source-serif-4" \ + "$fonts_root/ibm-plex-mono" + +echo "Font files and license files downloaded and installed successfully." diff --git a/.github/scripts/fonts.env b/.github/scripts/fonts.env new file mode 100644 index 00000000..aea24686 --- /dev/null +++ b/.github/scripts/fonts.env @@ -0,0 +1,8 @@ +font_spec "Public Sans" "public-sans" "@fontsource/public-sans" "5.2.7" \ + "public-sans-latin-300-normal.woff2,public-sans-latin-400-normal.woff2,public-sans-latin-600-normal.woff2" + +font_spec "Source Serif 4" "source-serif-4" "@fontsource/source-serif-4" "5.2.9" \ + "source-serif-4-latin-400-normal.woff2,source-serif-4-latin-600-normal.woff2,source-serif-4-latin-700-normal.woff2" + +font_spec "IBM Plex Mono" "ibm-plex-mono" "@fontsource/ibm-plex-mono" "5.2.7" \ + "ibm-plex-mono-latin-400-normal.woff2,ibm-plex-mono-latin-500-normal.woff2,ibm-plex-mono-latin-600-normal.woff2" diff --git a/assets/scss/_sidebar-tree-with-links.scss b/assets/scss/_sidebar-tree-with-links.scss index d1dcbf4b..e41675b9 100644 --- a/assets/scss/_sidebar-tree-with-links.scss +++ b/assets/scss/_sidebar-tree-with-links.scss @@ -2,9 +2,20 @@ .td-page-meta { a { display: block; - font-weight: $font-weight-light; - padding-bottom: .25rem; - font-weight: $font-weight-medium; + font-weight: 600; + padding-bottom: 0.25rem; + color: var(--omf-text-muted); + text-decoration-thickness: 0.06em; + text-underline-offset: 0.14em; + border-radius: 0.25rem; + transition: background-color 0.2s ease, color 0.2s ease; + } + + a:hover, + a:focus-visible { + color: $primary; + background-color: rgba($secondary, 0.1); + text-decoration-color: rgba($secondary, 0.72); } } } diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 1df27fc9..357bff16 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -1,5 +1,234 @@ +body { + color: var(--omf-text); + background: + radial-gradient(circle at 12% -8%, rgba($secondary, 0.11), transparent 45%), + radial-gradient(circle at 87% 0%, rgba($primary, 0.08), transparent 42%), + var(--omf-surface-1); +} + +.td-main { + h1, .h1, + h2, .h2, + h3, .h3, + h4, .h4, + .td-alert-heading { + color: $primary; + letter-spacing: 0.01em; + text-wrap: balance; + } + + p, + li { + color: var(--omf-text); + line-height: 1.72; + } +} + +a, +.td-content a { + text-underline-offset: 0.12em; + text-decoration-thickness: 0.08em; +} + +.omf-skip-link { + position: absolute; + left: 0.75rem; + top: -3rem; + z-index: 1100; + padding: 0.55rem 0.9rem; + border-radius: 0.35rem; + background: $primary; + color: $white; + text-decoration: none; + font-weight: 600; + transition: top 0.15s ease; + + &:focus-visible { + top: 0.75rem; + outline: 3px solid rgba($orange, 0.72); + outline-offset: 2px; + } +} + +a:focus-visible, +button:focus-visible, +.btn:focus-visible, +input:focus-visible, +select:focus-visible, +textarea:focus-visible, +[role="button"]:focus-visible, +[tabindex]:focus-visible { + outline: 3px solid rgba($orange, 0.72); + outline-offset: 2px; + box-shadow: none; +} + +.td-navbar { + background: linear-gradient(98deg, $primary 5%, mix($primary, $dark, 70%) 55%, $dark 100%); + box-shadow: 0 10px 24px rgba($primary, 0.24); + + .nav-link, + .navbar-brand { + letter-spacing: 0.01em; + } + + .nav-link { + &:hover, + &:focus-visible { + color: $orange; + } + } +} + +.td-box { + position: relative; + + &::before { + content: ""; + position: absolute; + inset: 0; + pointer-events: none; + background: linear-gradient(130deg, rgba($white, 0.09), transparent 46%); + } + + .container, + .row { + position: relative; + z-index: 1; + } +} + +.td-box--primary { + background: linear-gradient(140deg, $primary 0%, mix($primary, #14355b, 70%) 70%, #193f67 100%); + + h1, .h1, + h2, .h2, + h3, .h3, + h4, .h4, + .td-alert-heading, + p, + li { + color: rgba($white, 0.94); + } +} + +.td-box--dark { + background: linear-gradient(120deg, #0b2038 0%, #102945 70%, #12324f 100%); + + h1, + h2, + h3, + h4, + p, + li, + .h1, + .h2, + .h3, + .h4, + i { + color: rgba($white, 0.94); + } + + .omf-standard-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.85rem; + padding: 1.5rem 1.2rem 1.35rem; + border: 1px solid rgba($white, 0.1); + border-radius: 1rem; + background: linear-gradient(180deg, rgba($white, 0.06), rgba($white, 0.025)); + box-shadow: 0 18px 32px -28px rgba($black, 0.72); + backdrop-filter: blur(2px); + } + + .omf-standard-card .h1, + .omf-standard-card .h2, + .omf-standard-card .h3, + .omf-standard-card .h4, + .omf-standard-card .td-alert-heading, + .omf-standard-card p { + margin-bottom: 0; + } + + .omf-standard-card .mb-0 { + flex: 1 1 auto; + } + + .omf-standard-card .btn { + margin-top: auto; + min-width: 9.5rem; + border-radius: 999px; + font-weight: 600; + } +} + +.td-box--light { + background: + linear-gradient(178deg, rgba($white, 0.64), rgba($white, 0.64)), + repeating-linear-gradient(45deg, rgba($primary, 0.03), rgba($primary, 0.03) 8px, transparent 8px, transparent 16px); + + .omf-feature-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.8rem; + padding: 1.45rem 1.2rem 1.25rem; + border: 1px solid rgba($primary, 0.12); + border-radius: 1rem; + background: linear-gradient(180deg, rgba($white, 0.9), rgba($white, 0.74)); + box-shadow: 0 14px 28px -24px rgba($primary, 0.38); + + .h1, + .h2, + .h3, + .h4, + .td-alert-heading, + p { + margin-bottom: 0; + } + + .mb-0 { + flex: 1 1 auto; + color: var(--omf-text); + } + + > p:last-child { + margin-top: auto; + } + + > p:last-child a { + display: inline-block; + min-width: 9.5rem; + padding: 0.44rem 1rem; + border-radius: 999px; + border: 1px solid rgba($secondary, 0.42); + background: rgba($secondary, 0.14); + color: $primary; + font-weight: 600; + text-decoration: none; + transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; + } + + > p:last-child a:hover, + > p:last-child a:focus-visible { + background: rgba($secondary, 0.24); + border-color: rgba($secondary, 0.58); + color: mix($primary, $dark, 75%); + } + } + + @include media-breakpoint-down(md) { + .omf-feature-card { + margin-bottom: 1rem !important; + } + } +} + footer { min-height: 160px; + background: linear-gradient(175deg, #0b1b31, #0a1627 70%); + border-top: 2px solid rgba($secondary, 0.35); .logo { max-width: 60%; @@ -7,16 +236,30 @@ footer { } a { - color: orange !important; - } + color: rgba($orange, 0.96) !important; + transition: color 0.2s ease, text-decoration 0.2s ease; - a:hover { - color: white !important; - text-decoration: underline; + &:hover, + &:focus-visible { + color: $white !important; + text-decoration: underline; + } } @include media-breakpoint-down(md) { - min-height: 200px; + min-height: 200px; + } +} + +.card { + border: 1px solid rgba($primary, 0.08); + box-shadow: 0 14px 28px -24px rgba($primary, 0.55); + transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; + + &:hover { + transform: translateY(-2px); + box-shadow: 0 20px 30px -22px rgba($primary, 0.48); + border-color: rgba($secondary, 0.4); } } @@ -36,7 +279,7 @@ footer { word-wrap: break-word; .card-body { - font-weight: bold; + font-weight: $font-weight-bold; padding: 0; } @@ -77,47 +320,63 @@ footer { .td-toc a { font-size: 0.9rem; - font-weight: normal; + font-weight: 400; line-height: 1.35; padding-bottom: 0.5rem; + color: var(--omf-text-muted); } // active page indicator .td-sidebar-nav-active-item { color: $primary; + font-weight: 600; + &:before { - position: relative; - left: -0.5rem; + position: absolute; + left: -0.65rem; content: ""; - border-left: 3px solid $btn-primary; - margin-left: -3px; + height: 1.1rem; + border-left: 3px solid $orange; } } // normalize links that appear to be top-level regardless of whether they are // one page or a section with 1 index page -.td-sidebar-nav .td-sidebar-link__page { - font-weight: 400; - color: #222; - line-height: 1.35; - padding-bottom: 0.75rem; -} - +.td-sidebar-nav .td-sidebar-link__page, .td-sidebar-nav .td-sidebar-link__section { font-weight: 400; - color: #222; + color: var(--omf-text); line-height: 1.35; padding-bottom: 0.75rem; } .foldable .td-sidebar-link { - font-weight: 200; + font-weight: 300; } .td-search { width: 100%; } +.td-sidebar { + background: linear-gradient(180deg, rgba($white, 0.92), rgba($omf-surface-2, 0.86)); + border-right: 1px solid rgba($primary, 0.08); +} + +.td-sidebar-nav { + .td-sidebar-link { + border-radius: 0.35rem; + transition: background-color 0.2s ease, color 0.2s ease; + + &:hover, + &:focus-visible { + background-color: rgba($secondary, 0.1); + color: $primary; + text-decoration: none; + } + } +} + // Adjust anchors vs the fixed menu. @include media-breakpoint-up(md) { .td-offset-anchor:target { @@ -137,16 +396,14 @@ footer { } .awesome-list-content { - max-width: 78ch; - .awesome-list-intro { - color: $gray-700; + color: var(--omf-text-muted); font-size: 1.05rem; margin-bottom: 1.25rem; } .awesome-list-meta { - border-left: 4px solid $secondary; + border-left: 4px solid $orange; background: rgba($secondary, 0.06); } @@ -192,37 +449,35 @@ footer { border: 1px solid rgba($secondary, 0.35); border-radius: 999px; padding: 0.35rem 0.7rem; - transition: all 0.2s ease; - } - - a:hover, - a:focus-visible { - background: rgba($secondary, 0.22); - border-color: rgba($secondary, 0.55); - outline: none; + transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; + text-underline-offset: 0.14em; + + &:hover, + &:focus-visible { + background: rgba($secondary, 0.22); + border-color: rgba($secondary, 0.55); + } + + &:focus-visible { + background: rgba($secondary, 0.22); + border-color: rgba($secondary, 0.55); + outline: 2px solid rgba($secondary, 0.8); + outline-offset: 2px; + border-radius: 2px; + } } } ul { padding-left: 1.25rem; - } - - ul li { - margin-bottom: 0.55rem; - } - ul li::marker { - color: $secondary; - } - - a { - text-underline-offset: 0.14em; - } + li { + margin-bottom: 0.55rem; - a:focus-visible { - outline: 2px solid rgba($secondary, 0.8); - outline-offset: 2px; - border-radius: 2px; + &::marker { + color: $secondary; + } + } } } @@ -237,3 +492,54 @@ footer { } } } + +.omf-minutes-page { + .td-content > h2 { + margin-top: 2.1rem; + margin-bottom: 1rem; + padding: 0.7rem 0.9rem; + border-left: 4px solid rgba($secondary, 0.52); + border-radius: 0.35rem; + background: linear-gradient(90deg, rgba($secondary, 0.11), rgba($secondary, 0.03) 62%, transparent); + font-size: clamp(1.15rem, 1.5vw, 1.35rem); + line-height: 1.35; + } + + .td-content > h3 { + margin-top: 1.45rem; + margin-bottom: 0.45rem; + font-size: clamp(1.02rem, 1.15vw, 1.13rem); + text-wrap: pretty; + } + + .td-content p, + .td-content li { + line-height: 1.75; + } + + .td-content hr { + margin: 2rem 0 1.5rem; + border-color: rgba($primary, 0.2); + } + + .td-content ul { + margin-bottom: 0.8rem; + } + + .td-content li { + margin-bottom: 0.34rem; + } + + @include media-breakpoint-down(md) { + .td-content > h2 { + padding: 0.62rem 0.72rem; + } + } +} + +@media (prefers-reduced-motion: reduce) { + * { + transition: none !important; + animation: none !important; + } +} diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index f3fa82bd..b70cf32a 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -1,42 +1,183 @@ $enable-gradients: false; -$enable-shadows: false; +$enable-shadows: true; // -// Color system +// OMF Scientific Editorial palette // -$white: #fff; -$black: #000; -$orange: #ff9800; -$primary: #18182b; -$secondary: #03a9f4; -$light: #f5fafd; -$dark: #2F415B; -$btn-primary: #03a9f4; +$white: #fff; +$black: #000; -$link-color: $secondary; +// +// Self-hosted font loading (WOFF2 only) +// + +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: + local("Public Sans Light"), + local("PublicSans-Light"), + url("/fonts/public-sans/public-sans-latin-300-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: + local("Public Sans Regular"), + local("PublicSans-Regular"), + url("/fonts/public-sans/public-sans-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: + local("Public Sans SemiBold"), + local("PublicSans-SemiBold"), + url("/fonts/public-sans/public-sans-latin-600-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Source Serif 4"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: + local("Source Serif 4 Regular"), + local("SourceSerif4-Regular"), + url("/fonts/source-serif-4/source-serif-4-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Source Serif 4"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: + local("Source Serif 4 SemiBold"), + local("SourceSerif4-SemiBold"), + url("/fonts/source-serif-4/source-serif-4-latin-600-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Source Serif 4"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: + local("Source Serif 4 Bold"), + local("SourceSerif4-Bold"), + url("/fonts/source-serif-4/source-serif-4-latin-700-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: + local("IBM Plex Mono"), + local("IBMPlexMono-Regular"), + url("/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: + local("IBM Plex Mono Medium"), + local("IBMPlexMono-Medium"), + url("/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: + local("IBM Plex Mono SemiBold"), + local("IBMPlexMono-SemiBold"), + url("/fonts/ibm-plex-mono/ibm-plex-mono-latin-600-normal.woff2") format("woff2"); +} + +$omf-primary: #0f2742; +$omf-secondary: #0e7490; +$omf-accent: #f59e0b; +$omf-surface-1: #f7fafc; +$omf-surface-2: #eaf1f6; +$omf-text: #1f2937; +$omf-text-muted: #4b5563; +$omf-border: #cbd5e1; + +$primary: $omf-primary; +$secondary: $omf-secondary; +$light: $omf-surface-1; +$dark: #0c1f34; +$btn-primary: $omf-secondary; +$orange: $omf-accent; + +$body-bg: $omf-surface-1; +$body-color: $omf-text; +$border-color: $omf-border; + +$link-color: $omf-secondary; +$link-hover-color: darken($omf-secondary, 8%); $link-decoration: underline; -$font-weight-light: 200; +$font-family-sans-serif: "Public Sans", "Avenir Next", "Segoe UI", sans-serif; +$headings-font-family: "Source Serif 4", "Iowan Old Style", "Palatino Linotype", serif; +$font-family-monospace: "IBM Plex Mono", "SFMono-Regular", Menlo, Consolas, monospace; + +$font-weight-light: 300; $font-weight-normal: 400; -$font-weight-bold: 550; +$font-weight-bold: 600; +$headings-font-weight: 650; + +$navbar-dark-color: rgba($white, 0.92); +$navbar-dark-hover-color: $white; +$navbar-dark-active-color: $white; + +$card-border-radius: 0.9rem; +$card-cap-bg: $omf-surface-2; + +$focus-ring-color: rgba($omf-accent, 0.42); + +:root { + --omf-primary: #{$omf-primary}; + --omf-secondary: #{$omf-secondary}; + --omf-accent: #{$omf-accent}; + --omf-surface-1: #{$omf-surface-1}; + --omf-surface-2: #{$omf-surface-2}; + --omf-text: #{$omf-text}; + --omf-text-muted: #{$omf-text-muted}; + --omf-border: #{$omf-border}; +} html { scroll-behavior: smooth; } - .title { - font-size: 4rem; + font-size: clamp(2.5rem, 4vw, 4rem); } .subtitle { - font-size: 2.35rem; + font-size: clamp(1.45rem, 2.5vw, 2.35rem); } .arrow-scroll { - animation: fade-slide-up 1s 1s ease-out forwards, - pulse 3s 3s ease-out infinite; + animation: fade-slide-up 1s 1s ease-out forwards, pulse 3s 3s ease-out infinite; opacity: 0; } @@ -45,6 +186,7 @@ html { opacity: 0; transform: translateY(4rem); } + 100% { opacity: 1; transform: none; @@ -56,12 +198,25 @@ html { opacity: 1; transform: none; } + 50% { - opacity: .8; - transform: scale(.9); + opacity: 0.8; + transform: scale(0.9); } + 100% { opacity: 1; transform: none; } } + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + .arrow-scroll { + animation: none; + opacity: 1; + } +} diff --git a/content/en/_index.html b/content/en/_index.html index 444f791e..ab908690 100644 --- a/content/en/_index.html +++ b/content/en/_index.html @@ -6,7 +6,7 @@ {{< blocks/section color="primary" >}}
- OMF Logo + OMF Logo

The Open Modeling Foundation is an alliance of modeling organizations that coordinates and administers a common, community developed body of standards and best practices among @@ -41,7 +41,7 @@

{{< blocks/section color="light" type="row" >}} {{% blocks/feature icon="fas fa-project-diagram" title="How to Participate" url="/contribute" url_text="How to contribute" %}} - You can [contribute to OMF activities]({{< relref "contribute" >}}) as a representative of a member organization or + [Contribute to OMF activities]({{< relref "contribute" >}}) as a representative of a member organization or as an individual in a [Working Group]({{< relref "/working-groups" >}}). {{% /blocks/feature %}} @@ -50,6 +50,6 @@

{{% /blocks/feature %}} {{% blocks/feature icon="fab fa-github" title="Latest updates" url="https://github.com/openmodelingfoundation/openmodelingfoundation.github.io" %}} - Follow the latest in OMF developments on our [GitHub](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io) repository and [GitHub discussion forums](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io/discussions). + Follow OMF development on our [GitHub](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io) repository and [discussion forums](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io/discussions). {{% /blocks/feature %}} {{< /blocks/section >}} diff --git a/content/en/governance/_index.md b/content/en/governance/_index.md index 4e25b635..4830f3cc 100644 --- a/content/en/governance/_index.md +++ b/content/en/governance/_index.md @@ -11,7 +11,7 @@ menu: weight: 20 --- -### *Enabling next generation modeling of human and natural systems* +### Enabling next generation modeling of human and natural systems The Open Modeling Foundation is an alliance of modeling organizations that coordinates and administers a common, community developed body of standards and best practices among diverse communities of modeling scientists. diff --git a/content/en/resources/publications.md b/content/en/resources/publications.md index 098b926d..5f345ae7 100644 --- a/content/en/resources/publications.md +++ b/content/en/resources/publications.md @@ -1,10 +1,9 @@ --- title: "Publications" linkTitle: "Publications" +description: "Published artifacts from OMF activities (reports, manuscripts, presentations, etc.)" weight: 20 --- -Publications and documents resulting from Open Modeling Foundation Working Group activities. - - [Ten simple rules for good model-sharing practices](https://doi.org/10.1371/journal.pcbi.1012702) - Standards-related manuscripts and reports developed by OMF working groups will be added here as they are published. \ No newline at end of file diff --git a/content/en/resources/repositories.md b/content/en/resources/repositories.md index 70ecdab8..94d3ddbb 100644 --- a/content/en/resources/repositories.md +++ b/content/en/resources/repositories.md @@ -1,12 +1,13 @@ --- title: "Repositories" linkTitle: "Repositories" +description: "Open Git repositories for community-driven development" type: "docs" weight: 30 --- -The following OMF repositories and open infrastructure welcome community contributions and oversight. +The following OMF repositories and infrastructure welcome community contributions and oversight. -- This website's source: [openmodelingfoundation/openmodelingfoundation.github.io](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io) +- This website: [openmodelingfoundation/openmodelingfoundation.github.io](https://github.com/openmodelingfoundation/openmodelingfoundation.github.io) - [Awesome Modeling Practices](/resources/awesome-modeling-practices/) (source: [openmodelingfoundation/awesome-modeling-practices](https://github.com/openmodelingfoundation/awesome-modeling-practices)) - [OMF Agent Skills](https://github.com/openmodelingfoundation/skills) **coming soon** \ No newline at end of file diff --git a/content/en/working-groups/early-career-scholars/meeting-minutes-template.md b/content/en/working-groups/early-career-scholars/meeting-minutes-template.md new file mode 100644 index 00000000..aba581ee --- /dev/null +++ b/content/en/working-groups/early-career-scholars/meeting-minutes-template.md @@ -0,0 +1,56 @@ +--- +title: "Template: Early Career Scholars Meeting Minutes" +linkTitle: "Minutes Template" +build: + render: never + list: never + publishResources: false +--- + + + +## YYYY-MM-DD HH:MM GMT+X + +### Attendees + +- Name 1 +- Name 2 +- Name 3 + +### Highlights + +- Key update 1 +- Key update 2 + +### Discussion Topics + +#### Topic Name + +- Point 1 +- Point 2 + +#### Topic Name + +- Point 1 +- Point 2 + +### Decisions + +- Decision 1 +- Decision 2 + +### Next Meeting + +- Proposed date/time: +- Follow-up scheduling notes: + +### Action Items + +- TAG - Owner: Task description (Due: YYYY-MM-DD) +- TAG - Owner: Task description (Due: YYYY-MM-DD) +- TAG - Owner: Task description (Due: YYYY-MM-DD) + +--- diff --git a/content/en/working-groups/early-career-scholars/meeting-minutes.md b/content/en/working-groups/early-career-scholars/meeting-minutes.md index 71792316..2500bec8 100644 --- a/content/en/working-groups/early-career-scholars/meeting-minutes.md +++ b/content/en/working-groups/early-career-scholars/meeting-minutes.md @@ -1,21 +1,31 @@ --- title: "Early Career Scholars WG Meeting Minutes" linkTitle: "Meeting Minutes" +body_class: "omf-minutes-page" aliases: - /about/working-groups/early-career-scholars/meeting-minutes/ --- -## Dec 10, 2025 8:00 AM GMT+1 +This page uses a portable Markdown format for minutes to be copied from Google Docs with minimal cleanup. -Attendees: -Tati Micheletti, Takuya Iwanaga, Pedro Almeida, Vitor Hirata Sanches, Zhu Zhiyi, Mahnaz Ahmadi +Editor template: [Minutes Template](https://raw.githubusercontent.com/openmodelingfoundation/openmodelingfoundation.github.io/develop/content/en/working-groups/early-career-scholars/meeting-minutes-template.md) + +## 2025-12-10 08:00 GMT+1 + +### Attendees + +- Tati Micheletti +- Takuya Iwanaga +- Pedro Almeida +- Vitor Hirata Sanches +- Zhu Zhiyi +- Mahnaz Ahmadi ### OMF Meeting in Adelaide Takuya provided a recap of the recent meeting. - A highlight of the discussion was Physics-Informed AI (Neural Networks). - - The group discussed the mechanics of how these methods work in practice. ### Dublin Hackathon @@ -29,8 +39,7 @@ Pedro is interested in co-leading the event. ### "Awesome List" and Website Resources - A link to the "Awesome List" will be added to the minutes to encourage collaboration. Please add to the list any interesting and helpful material you have crossed paths with. - -- [https://github.com/openmodelingfoundation/awesome-modeling-practices](https://github.com/openmodelingfoundation/awesome-modeling-practices) +- [Awesome Modeling Practices](https://github.com/openmodelingfoundation/awesome-modeling-practices) - Pedro will lead (with Tati’s assistance) a new section in the Awesome List dedicated to AI-guided science, envisioning a "How-To" guide with a focus on coding. - Tati will provide AI Lecture material to kick-start this section. - There is a need to clarify how these materials are included on the official website (see Action Items). @@ -42,68 +51,55 @@ Proposed for the end of March 2026. - 8:00 AM CET was agreed upon as a suitable time by those present. - Tati will circulate a Doodle poll. If you wish to join but this time is problematic, please contact Tati directly. -### Action items - -1. **HACKATHON:** Tati will check with Charlotte to see if OMF can support funding for the event for Pedro to attend. - -2. **MINUTES:** Tati will send minutes including a specific section for Hackathon discussion and the link to the "Awesome List": [https://github.com/openmodelingfoundation/awesome-modeling-practices](https://github.com/openmodelingfoundation/awesome-modeling-practices) - -3. **WEBSITE:** Tati will ask Charlotte and Allen about the inclusion of the awesome list on the website (perhaps via new tab as ‘Resources’) and the update workflow from the website. - -4. **AWESOME LIST:** Tati will provide AI Lecture material to kick-start the AI-guided science section. +### Action Items -5. **AWESOME LIST:** Pedro will lead the creation of the AI-guided science section. +- HACKATHON - Tati: Check with Charlotte whether OMF can support funding for Pedro to attend. +- MINUTES - Tati: Send minutes including a Hackathon section and the Awesome List link: [Awesome Modeling Practices](https://github.com/openmodelingfoundation/awesome-modeling-practices) +- WEBSITE - Tati: Ask Charlotte and Allen about including the Awesome List on the website (for example under Resources) and define the update workflow. +- AWESOME LIST - Tati: Provide AI lecture material to kick-start the AI-guided science section. +- AWESOME LIST - Pedro: Lead creation of the AI-guided science section. +- RESOURCES - Tati: Upload material for the Scientific Programming and Reproducible Workflow Workshop. +- NEXT MEETING - Tati: Send the Doodle poll for the end of March. -6. **RESOURCES:** Tati will upload the available material for the Scientific Programming and Reproducible Workflow Workshop. +--- -7. **NEXT MEETING:** Tati will send the Doodle poll for the end of March. +## 2025-05-05 08:00 GMT+2 -## May 5, 2025 8:00 AM GMT+2 +### Attendees -Attendees: -Takuya Iwanaga, Tati Micheletti, Pedro Almeida, Vitor Hirata Sanches, Caroline Rosello, Jonas Letschert +- Takuya Iwanaga +- Tati Micheletti +- Pedro Almeida +- Vitor Hirata Sanches +- Caroline Rosello +- Jonas Letschert ### Notes -- Interesting Upcoming Conferences: - -- iEMS 2026: [https://conference.iemss.org/](https://conference.iemss.org/) (if anyone is interested in helping out, please reach out to Takuya) - -- MODSIM2025: [https://www.mssanz.org.au/modsim2025/](https://www.mssanz.org.au/modsim2025/) - -- Introducing Jonas Letschert: Works on ABMs in fisheries / bio-economic models - -- In this context, lots of data available on fish catch - -- In their ABMs, the agents are the fishers, parameterised from theory/available literature - -- Caroline Rosello: Would like to see more discussion aligning perspectives with model/tool purpose - -- Discussed the status of the paper in review at Socio-Environmental Systems Modelling: "*Good enough" model reproducibility: A practical guide for Early Career Scholars in Socio-Environmental Modelling* (see action Items) - -- Revisited ideas from our last meeting and assigning leads for initiatives (**see action Items**) - -- Summer Course at TU Dresden on Scientific Programming and Workflow (Tati offering). Focused on TUD students but open to OMF members: [https://forms.gle/N8BbFoYLFY7xPNvs9](https://forms.gle/N8BbFoYLFY7xPNvs9) - -- Vitor suggestion: "Awesome lists" (e.g., of awesome packages developed/in use by OMF members) on OMF github, either website or new website under the OMF organisational repo. - -- Hackathon at iEMS (Dublin, July 2026) - -- How to circulate meeting minutes? - -- Google Docs / similar: problematic for our Chinese colleagues - -- Posting on OMF’s website (need to check with Allen – **See action items**) +- Interesting upcoming conferences: + - iEMS 2026: [conference.iemss.org](https://conference.iemss.org/) (if anyone is interested in helping out, please reach out to Takuya) + - MODSIM2025: [mssanz.org.au/modsim2025](https://www.mssanz.org.au/modsim2025/) +- Introducing Jonas Letschert: + - Works on ABMs in fisheries and bio-economic models. + - In this context, there is a lot of available fish-catch data. + - In their ABMs, agents are fishers, parameterized from theory and available literature. +- Caroline Rosello would like to see more discussion aligning perspectives with model and tool purpose. +- Discussed paper status at Socio-Environmental Systems Modelling: + - "Good enough" model reproducibility: A practical guide for Early Career Scholars in Socio-Environmental Modelling (see Action Items). +- Revisited ideas from the previous meeting and assigned leads for initiatives (see Action Items). +- Summer Course at TU Dresden on Scientific Programming and Workflow (offered by Tati): + - Focused on TU Dresden students but open to OMF members. + - Registration: [forms.gle/N8BbFoYLFY7xPNvs9](https://forms.gle/N8BbFoYLFY7xPNvs9) +- Vitor suggested building Awesome Lists (for example, packages developed or used by OMF members) in OMF GitHub resources. +- Hackathon at iEMS (Dublin, July 2026). +- How to circulate meeting minutes: + - Google Docs can be problematic for colleagues in China. + - Posting minutes on the OMF website is preferred (check with Allen; see Action Items). ### Action Items -- **PAPER:** Takuya will send out reviewer comments. Interested parties can get in touch with him. - -- **EVENTS**: - -1. Ask iEMSs Office requirements for hosting a workshop (Question sent, waiting on answer – **Takuya leading, Pedro offered to help**) - -2. Tati and Takuya will coordinate to sending email with meetings minutes (Document created: https://docs.google.com/document/d/1HI5I-90EUXXmWiz7a5yEJAustCcp55H35HYXF3ETSqY/edit?usp=sharing) - -3. Talk to Charlotte about hosting a repository with reproducibility information on the OMF website (Question sent – waiting on answer – **Tati leading**) +- PAPER - Takuya: Send reviewer comments. Interested parties can contact him directly. +- EVENTS - Takuya (Pedro offered support): Ask iEMSs Office for workshop hosting requirements. Question sent and awaiting answer. +- MINUTES - Tati and Takuya: Coordinate and send meeting minutes by email. Working document: [Google Doc](https://docs.google.com/document/d/1HI5I-90EUXXmWiz7a5yEJAustCcp55H35HYXF3ETSqY/edit?usp=sharing) +- WEBSITE - Tati: Talk to Charlotte about hosting a reproducibility-information repository on the OMF website. Question sent and awaiting answer. diff --git a/layouts/docs/baseof.html b/layouts/docs/baseof.html index 57bdfd2b..f21f2413 100644 --- a/layouts/docs/baseof.html +++ b/layouts/docs/baseof.html @@ -4,6 +4,7 @@ {{ partial "head.html" . }} + Skip to main content
{{ partial "navbar.html" . }}
@@ -18,7 +19,7 @@ {{ partial "taxonomy_terms_clouds.html" . }} {{ partial "page-meta-links.html" . }} -
+
{{ partial "version-banner.html" . }} {{ if not .Site.Params.ui.breadcrumb_disable }}{{ partial "breadcrumb.html" . }}{{ end }} {{ block "main" . }}{{ end }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 75f0ceb4..3ef94f6a 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -2,7 +2,7 @@
- + Digital Research Alliance of Canada
This work was enabled in part by generous support from the Alfred P. Sloan Foundation @@ -11,7 +11,7 @@ {{ with .Site.Params.copyright }}© {{ now.Year }} {{ .}} {{ T "footer_all_rights_reserved" }}{{ end }}
- +
diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html index f3231620..5452d53e 100644 --- a/layouts/partials/hooks/head-end.html +++ b/layouts/partials/hooks/head-end.html @@ -2,3 +2,16 @@ {{ template "_internal/google_analytics.html" . }} {{ end }} +{{- $fontPreloads := slice + "fonts/public-sans/public-sans-latin-400-normal.woff2" + "fonts/public-sans/public-sans-latin-600-normal.woff2" + "fonts/source-serif-4/source-serif-4-latin-600-normal.woff2" + "fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2" +-}} + +{{- range $path := $fontPreloads -}} + {{- if fileExists (printf "static/%s" $path) -}} + + {{- end -}} +{{- end -}} + diff --git a/layouts/partials/page-meta-links.html b/layouts/partials/page-meta-links.html index 18b9aa2e..8d4de923 100644 --- a/layouts/partials/page-meta-links.html +++ b/layouts/partials/page-meta-links.html @@ -6,7 +6,6 @@ {{ $gh_subdir := ($.Param "github_subdir") }} {{ $gh_project_repo := ($.Param "github_project_repo") }} {{ $gh_branch := (default "develop" ($.Param "github_branch")) }} - {{ $gh_repo := (.Param "github_repo") }} {{ $issue_template_page := (.Site.GetPage "/issue_templates") }} {{ $issue_metadata := ($issue_template_page.Resources.GetMatch $gh_issue_template)}} {{ $queryString := (querify "assignees" ($issue_metadata.Param "assignees") "labels" ($issue_metadata.Param "labels") "projects" ($issue_metadata.Param "projects" | default "") "template" $gh_issue_template) }} diff --git a/layouts/shortcodes/blocks/feature.html b/layouts/shortcodes/blocks/feature.html new file mode 100644 index 00000000..dff759be --- /dev/null +++ b/layouts/shortcodes/blocks/feature.html @@ -0,0 +1,21 @@ +{{/* + Keep this shortcode aligned with upstream Docsy to minimize drift. + Upstream reference: layouts/_shortcodes/blocks/feature.html (docsy v0.14.3). + Intentional local delta: add `omf-feature-card` on the wrapper div for + maintainable, semantic styling hooks independent of grid utility classes. +*/ -}} + +{{ $icon := .Get "icon" | default "fa-lightbulb" -}} +{{ $url_text := .Get "url_text" -}} +
+
+ +
+

+ {{- .Get "title" | markdownify -}} +

+
+ {{ .Inner }} +
+ {{ with .Get "url" }}

{{ with $.Get "url_text" }}{{ . }}{{ else }}{{ T "ui_read_more" }}{{ end }}

{{ end }} +
diff --git a/layouts/shortcodes/blocks/standard.html b/layouts/shortcodes/blocks/standard.html index 554d56df..5c87de55 100644 --- a/layouts/shortcodes/blocks/standard.html +++ b/layouts/shortcodes/blocks/standard.html @@ -1,6 +1,6 @@ {{ $icon := .Get "icon" | default "fa-lightbulb" -}} {{ $url_text := .Get "url_text" -}} -
+
diff --git a/static/fonts/README.md b/static/fonts/README.md new file mode 100644 index 00000000..5590e876 --- /dev/null +++ b/static/fonts/README.md @@ -0,0 +1,8 @@ +This directory contains self-hosted WOFF2 fonts used by the site. + +Families: +- Public Sans (5.2.7) +- Source Serif 4 (5.2.9) +- IBM Plex Mono (5.2.7) + +Each family directory includes its upstream license file as OFL.txt. diff --git a/static/fonts/ibm-plex-mono/OFL.txt b/static/fonts/ibm-plex-mono/OFL.txt new file mode 100644 index 00000000..83eac827 --- /dev/null +++ b/static/fonts/ibm-plex-mono/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-ThinItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-ExtraLight.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-ExtraLightItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-Light.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-LightItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-Regular.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-Italic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-Medium.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-MediumItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-SemiBold.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-SemiBoldItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-Bold.ttf: Copyright 2017 IBM Corp. All rights reserved. IBMPlexMono-BoldItalic.ttf: Copyright 2017 IBM Corp. All rights reserved. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2 b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2 new file mode 100644 index 00000000..0804aaff Binary files /dev/null and b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2 differ diff --git a/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2 b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2 new file mode 100644 index 00000000..090f82f7 Binary files /dev/null and b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2 differ diff --git a/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-600-normal.woff2 b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-600-normal.woff2 new file mode 100644 index 00000000..67aeeb01 Binary files /dev/null and b/static/fonts/ibm-plex-mono/ibm-plex-mono-latin-600-normal.woff2 differ diff --git a/static/fonts/public-sans/OFL.txt b/static/fonts/public-sans/OFL.txt new file mode 100644 index 00000000..a6cb63a6 --- /dev/null +++ b/static/fonts/public-sans/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2015 The Public Sans Project Authors (https://github.com/uswds/public-sans) PublicSans-Italic[wght].ttf: Copyright 2015 The Public Sans Project Authors (https://github.com/uswds/public-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/static/fonts/public-sans/public-sans-latin-300-normal.woff2 b/static/fonts/public-sans/public-sans-latin-300-normal.woff2 new file mode 100644 index 00000000..fd4cab7d Binary files /dev/null and b/static/fonts/public-sans/public-sans-latin-300-normal.woff2 differ diff --git a/static/fonts/public-sans/public-sans-latin-400-normal.woff2 b/static/fonts/public-sans/public-sans-latin-400-normal.woff2 new file mode 100644 index 00000000..e303daba Binary files /dev/null and b/static/fonts/public-sans/public-sans-latin-400-normal.woff2 differ diff --git a/static/fonts/public-sans/public-sans-latin-600-normal.woff2 b/static/fonts/public-sans/public-sans-latin-600-normal.woff2 new file mode 100644 index 00000000..86089d18 Binary files /dev/null and b/static/fonts/public-sans/public-sans-latin-600-normal.woff2 differ diff --git a/static/fonts/source-serif-4/OFL.txt b/static/fonts/source-serif-4/OFL.txt new file mode 100644 index 00000000..046fc664 --- /dev/null +++ b/static/fonts/source-serif-4/OFL.txt @@ -0,0 +1,93 @@ +Google Inc. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/static/fonts/source-serif-4/source-serif-4-latin-400-normal.woff2 b/static/fonts/source-serif-4/source-serif-4-latin-400-normal.woff2 new file mode 100644 index 00000000..e8c6f71d Binary files /dev/null and b/static/fonts/source-serif-4/source-serif-4-latin-400-normal.woff2 differ diff --git a/static/fonts/source-serif-4/source-serif-4-latin-600-normal.woff2 b/static/fonts/source-serif-4/source-serif-4-latin-600-normal.woff2 new file mode 100644 index 00000000..fcbd11d2 Binary files /dev/null and b/static/fonts/source-serif-4/source-serif-4-latin-600-normal.woff2 differ diff --git a/static/fonts/source-serif-4/source-serif-4-latin-700-normal.woff2 b/static/fonts/source-serif-4/source-serif-4-latin-700-normal.woff2 new file mode 100644 index 00000000..34a307f5 Binary files /dev/null and b/static/fonts/source-serif-4/source-serif-4-latin-700-normal.woff2 differ diff --git a/static/images/digital-research-alliance-canada.svg b/static/images/digital-research-alliance-canada.svg index 5e9819cb..1752ae9d 100644 --- a/static/images/digital-research-alliance-canada.svg +++ b/static/images/digital-research-alliance-canada.svg @@ -1 +1 @@ - \ No newline at end of file +