diff --git a/.agents/skills/publication-review/SKILL.md b/.agents/skills/publication-review/SKILL.md
new file mode 100644
index 0000000..806a1b4
--- /dev/null
+++ b/.agents/skills/publication-review/SKILL.md
@@ -0,0 +1,55 @@
+---
+name: publication-review
+description: Find, vet, record, and publish Behavioral Data Science Lab paper candidates through the repository's recurring OpenAlex and human-review workflow. Use for publication scans, weekly paper review, include/exclude decisions, duplicate reconciliation, or preparing the publication review pull request.
+---
+
+# Publication review
+
+Apply the user's instructions first. Keep discovery, editorial judgment, and publication as separate stages so a source record never becomes site content without a recorded human decision.
+
+## Establish the current state
+
+Read these repository files before deciding anything:
+
+- `maintenance/publication-policy.json` for enforceable thresholds.
+- `docs/PUBLICATION_POLICY.md` for the interpretation of membership, identity, and version rules.
+- `maintenance/authors.json` and `content/people.json` for verified identities and membership intervals.
+- `maintenance/recent-review.md` for the concise current batch; consult `maintenance/review.json` for complete provenance and prior decisions.
+
+Run `python3 scripts/publication_pipeline.py status` and report the counts before collecting or editing.
+
+## Collect
+
+When the user asks for a new scan, run `python3 scripts/publication_pipeline.py collect`. Treat OpenAlex as candidate discovery, not ground truth. The command must leave `content/publications.json` unchanged. If the provider fails or returns a partial result, preserve the previous queue and report the failure.
+
+Use Google Scholar as a coverage cross-check when requested or when recent expected work is missing. Verify a candidate with a primary paper, proceedings, publisher, DOI, or arXiv page. Add source-only gaps to `maintenance/scholar-supplement.json`; never invent an OpenAlex ID.
+
+Supplement entries can have incomplete provider metadata and are not accepted by the OpenAlex decision command. Vet them with the same rule, then use the documented manual content workflow and record the decision in the supplement.
+
+## Vet each candidate
+
+Apply all of these checks:
+
+1. Confirm the full author list from primary evidence. Do not infer identity from a name or initial.
+2. Require Tim as an author plus at least one other distinct verified lab author. Tim alone is insufficient, and papers without Tim are ineligible even if they contain multiple lab members. Evaluate past members against membership at the publication date.
+3. Treat `needs-membership-review`, `identityReviewPersonIds`, missing dates, and mixed provider profiles as unresolved. Resolve them with evidence or keep the candidate pending.
+4. Compare DOI, arXiv ID, normalized title, complete author list, and existing site records. Prefer the final published version while retaining all source observations. Do not collapse datasets, responses, corrections, or errata solely by title.
+5. Review venue, year, publication state, ordered authors, URL, and whether the work belongs to the lab. Include qualifying preprints with both `status` and `type` set to `preprint` so the site labels them; prefer a final published version when one exists and do not create both versions.
+
+Map reviewer language as follows: include → `accept`, exclude → `reject`, unsure → leave pending or `defer` to an explicit future date. Rejections and deferrals stay in the durable queue.
+
+Record an OpenAlex decision with `python3 scripts/publication_pipeline.py decide CANDIDATE DECISION`. Acceptance requires repeated `--person PERSON_ID` arguments, including Tim's person ID. If membership or identity remains unresolved but the user explicitly approves an evidence-backed exception, also supply a concise `--reason` and one or more `--evidence URL` arguments. The pipeline stores that audit record and rejects undocumented overrides. An exception cannot waive the requirement that Tim be an author.
+
+## Validate and present
+
+Run `python3 scripts/publication_pipeline.py check` after decisions. Inspect the diff and summarize included, excluded, deferred, unresolved, and duplicate/version outcomes. Never describe a pending candidate as published.
+
+## Push a reviewed batch
+
+Pushing changes and opening a pull request are external mutations. Do this only when the user explicitly asks to push or open the review PR. Use the dedicated `codex/weekly-publication-review` branch and run:
+
+```sh
+python3 scripts/publication_pipeline.py publish --base BASE_BRANCH --confirm-push
+```
+
+The command must refuse unrelated working-tree or staged changes, run the full check, commit only review artifacts and approved publications, push the dedicated branch, and create or update one draft PR. It must never merge the PR or deploy the site.
diff --git a/.github/ISSUE_TEMPLATE/award.yml b/.github/ISSUE_TEMPLATE/award.yml
new file mode 100644
index 0000000..f66b659
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/award.yml
@@ -0,0 +1,34 @@
+name: Award or news
+description: Submit an award or lab update with a source
+title: "[News] "
+body:
+ - type: input
+ id: title
+ attributes:
+ label: Exact award name or update
+ validations:
+ required: true
+ - type: input
+ id: recipients
+ attributes:
+ label: Recipients or related lab members
+ validations:
+ required: true
+ - type: input
+ id: date
+ attributes:
+ label: Date
+ placeholder: YYYY-MM-DD
+ validations:
+ required: true
+ - type: input
+ id: source
+ attributes:
+ label: Source URL
+ validations:
+ required: true
+ - type: textarea
+ id: details
+ attributes:
+ label: Awarding organization, linked paper, and details
+ description: Public information only. New wording requires editorial review.
diff --git a/.github/ISSUE_TEMPLATE/profile.yml b/.github/ISSUE_TEMPLATE/profile.yml
new file mode 100644
index 0000000..d2c67f8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/profile.yml
@@ -0,0 +1,17 @@
+name: Profile or site correction
+description: Correct a profile, role, link, opportunity, or site detail
+title: "[Correction] "
+body:
+ - type: input
+ id: page
+ attributes:
+ label: Page or person
+ validations:
+ required: true
+ - type: textarea
+ id: change
+ attributes:
+ label: Requested change and source
+ description: Include the current value and proposed correction. Public information only.
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/publication.yml b/.github/ISSUE_TEMPLATE/publication.yml
new file mode 100644
index 0000000..0f27e71
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/publication.yml
@@ -0,0 +1,32 @@
+name: Publication
+description: Submit a paper or a bibliographic correction for review
+title: "[Publication] "
+body:
+ - type: input
+ id: source
+ attributes:
+ label: DOI or paper URL
+ validations:
+ required: true
+ - type: input
+ id: people
+ attributes:
+ label: Lab authors
+ validations:
+ required: true
+ - type: dropdown
+ id: status
+ attributes:
+ label: Publication state
+ options:
+ - Preprint
+ - Accepted
+ - Published
+ - Correction to existing entry
+ validations:
+ required: true
+ - type: textarea
+ id: links
+ attributes:
+ label: Code, dataset, project links, or correction
+ description: Public information only. Submissions are reviewed before publication.
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..ac41f0d
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,9 @@
+Describe the problem and resulting change.
+
+- [ ] Content sources and lab attribution reviewed, if applicable
+- [ ] No new prose without approval
+- [ ] `npm run check` passes
+- [ ] Preview reviewed for affected pages
+- [ ] Stable URLs, manual corrections, and review decisions preserved
+
+Deployment is a separate production action until the lab approves the Pages switch.
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
new file mode 100644
index 0000000..7d5b2c3
--- /dev/null
+++ b/.github/workflows/check.yml
@@ -0,0 +1,28 @@
+name: Check website
+on:
+ pull_request:
+ push:
+ branches: ["codex/**"]
+ workflow_dispatch:
+permissions:
+ contents: read
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v7.0.1
+ - uses: actions/setup-node@v7.0.0
+ with:
+ node-version: 24
+ cache: npm
+ - run: npm ci
+ - uses: actions/setup-python@v7.0.0
+ with:
+ python-version: '3.12'
+ - run: npm run check
+ - run: npm run test:skeleton
+ - uses: actions/upload-artifact@v7.0.1
+ with:
+ name: website-preview
+ path: out
+ include-hidden-files: true
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..6619121
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,38 @@
+# Manual until the lab approves switching production to React.
+# After the first approved deployment, add a push trigger for master if desired.
+name: Deploy React website
+on:
+ workflow_dispatch:
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+concurrency:
+ group: pages
+ cancel-in-progress: false
+jobs:
+ deploy:
+ if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
+ runs-on: ubuntu-latest
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ steps:
+ - uses: actions/checkout@v7.0.1
+ - uses: actions/setup-node@v7.0.0
+ with:
+ node-version: 24
+ cache: npm
+ - run: npm ci
+ - uses: actions/setup-python@v7.0.0
+ with:
+ python-version: '3.12'
+ - run: npm run check
+ - uses: actions/configure-pages@v6.0.0
+ - uses: actions/upload-pages-artifact@v5.0.0
+ with:
+ path: out
+ include-hidden-files: true
+ - name: Deploy
+ id: deployment
+ uses: actions/deploy-pages@v5.0.1
diff --git a/.github/workflows/discover.yml b/.github/workflows/discover.yml
new file mode 100644
index 0000000..a36e65c
--- /dev/null
+++ b/.github/workflows/discover.yml
@@ -0,0 +1,70 @@
+name: Collect publication candidates
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '17 15 * * 1'
+permissions:
+ contents: write
+ pull-requests: write
+ actions: write
+concurrency:
+ group: publication-review
+ cancel-in-progress: false
+jobs:
+ collect:
+ if: vars.WEBSITE_MAINTENANCE_ENABLED == 'true'
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ BASE_BRANCH: ${{ github.event.repository.default_branch }}
+ steps:
+ - uses: actions/checkout@v7.0.1
+ with:
+ ref: ${{ github.event.repository.default_branch }}
+ fetch-depth: 0
+ - uses: actions/setup-node@v7.0.0
+ with:
+ node-version: 24
+ cache: npm
+ - uses: actions/setup-python@v7.0.0
+ with:
+ python-version: '3.12'
+ - name: Continue the existing review branch without overwriting reviewer edits
+ run: |
+ git config user.name 'github-actions[bot]'
+ git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
+ branch='codex/weekly-publication-review'
+ if git show-ref --verify --quiet "refs/remotes/origin/$branch"; then
+ git switch -c "$branch" "origin/$branch"
+ git merge --no-edit "origin/$BASE_BRANCH"
+ else
+ git switch -c "$branch"
+ fi
+ - uses: actions/cache/restore@v6.1.0
+ with:
+ path: .cache
+ key: discovery-${{ github.run_id }}-${{ github.run_attempt }}
+ restore-keys: discovery-
+ - run: npm ci
+ - name: Validate enabled configuration
+ run: |
+ python3 scripts/validate-maintenance.py
+ python3 -c "import json; assert json.load(open('maintenance/config.json'))['enabled'], 'Enable maintenance/config.json before activation'"
+ - name: Discover candidates
+ env:
+ OPENALEX_API_KEY: ${{ secrets.OPENALEX_API_KEY }}
+ run: python3 scripts/publication_pipeline.py collect
+ - run: npm run check
+ - name: Publish review branch and request checks
+ run: python3 scripts/publish_batch.py
+ - uses: actions/cache/save@v6.1.0
+ with:
+ path: .cache
+ key: discovery-${{ github.run_id }}-${{ github.run_attempt }}
+ - uses: actions/upload-artifact@v7.0.1
+ with:
+ name: review-preview
+ path: out
+ include-hidden-files: true
+ retention-days: 14
diff --git a/.github/workflows/health.yml b/.github/workflows/health.yml
new file mode 100644
index 0000000..34ae566
--- /dev/null
+++ b/.github/workflows/health.yml
@@ -0,0 +1,22 @@
+name: Check maintenance health
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '43 16 * * *'
+permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+jobs:
+ health:
+ if: vars.WEBSITE_MAINTENANCE_ENABLED == 'true'
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ - uses: actions/checkout@v7.0.1
+ - uses: actions/setup-python@v7.0.0
+ with:
+ python-version: '3.12'
+ - run: python3 scripts/monitor.py
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index c0d8a9b..66a2466 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,14 @@
-_site/*
-_theme_packages/*
-
-Thumbs.db
+node_modules/
+.next/
+out/
+_review/
.DS_Store
+__pycache__/
+*.pyc
+.env*
+!.env.example
-!.gitkeep
-
-.rbenv-version
-.rvmrc
-
-.sass-cache
-.jekyll-metadata
-.jekyll-cache
-
-biblib/__pycache__
-
-Gemfile.lock
+# Machine-local pre-migration recovery inventory
+_planning/migration-backup.json
-__pycache__
\ No newline at end of file
+.cache/
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..a45fd52
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+24
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..643577d
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,9 @@
+
+
+# This is NOT the Next.js you know
+
+This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
+
+This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
+
+
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..43c994c
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1 @@
+@AGENTS.md
diff --git a/CODEBASE.md b/CODEBASE.md
new file mode 100644
index 0000000..f2eac89
--- /dev/null
+++ b/CODEBASE.md
@@ -0,0 +1,23 @@
+# Codebase map
+
+- `app/`: static Next.js pages, metadata, responsive CSS, and legacy route aliases.
+- `components/`: React navigation, publication filters/cards, related awards, news and projects.
+- `content/`: public JSON records, Markdown page prose, and site configuration. New editorial collections start empty.
+- `lib/`: content loading, relationship resolution, filters, citation formatting, and validation.
+- `public/`: original assets at historical URL paths; only public files belong here.
+- `maintenance/`: verified identity/configuration slots and a public review queue; discovery starts disabled.
+- `scripts/discovery.py`: paginated OpenAlex retrieval, normalization, deduplication and review proposals.
+- `scripts/review.py`: local accept/reject/defer/reopen decisions; no publishing.
+- `scripts/publication_pipeline.py`: repeatable collect/status/decide/check/publish entry point with a dedicated review branch and draft PR.
+- `scripts/publish_batch.py`: CI review-branch/draft-PR handoff, with no merge operation.
+- `scripts/monitor.py`: read-only health check suitable for an independent scheduler.
+- `scripts/prepare_publication.py`: separate one-off Crossref DOI helper.
+- `scripts/validate-*`, `check-export.py`, `export-aliases.mjs`: build-time contracts and URL preservation.
+- `scripts/test-skeleton.py`: isolated fixture build for future sections without modifying content.
+- `tests/`: content/relationship tests and review/provider failure cases using synthetic fixtures.
+- `.github/`: contribution forms, PR template, CI, gated discovery/health and manual deployment workflows.
+- `.agents/skills/publication-review/`: repository-scoped instructions for evidence-based recurring paper review.
+- `docs/`: content model and operational/activation/rollback runbook.
+- `_planning/`: roadmap, issues, migration report, and historical research.
+
+Start with README.md. No Jekyll, Ruby runtime, database, or production application server is required.
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 37f5eaa..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,2 +0,0 @@
-source 'https://rubygems.org'
-gem 'github-pages', group: :jekyll_plugins
diff --git a/README.md b/README.md
index 9e9de97..8d706f8 100644
--- a/README.md
+++ b/README.md
@@ -1,32 +1,71 @@
-# Behavioral Data Science Site
+# Behavioral Data Science website
-This is the website of our academic research group at UW CSE. It is based on the template provided by the [Allan Lab at Leiden University](https://www.allanlab.org/aboutwebsite.html).
+A static React website built with Next.js and plain CSS. Content is stored in JSON; the optional DOI helper uses Python's standard library. No Ruby, Jekyll, database, or application server is needed in production.
-## Modifying this Site
-This website is powered by [Jekyll](https://jekyllrb.com/) and some Bootstrap. To work on the site, clone this repo. If you want to preview your changes before committing them (recommended) you will need to install Jekyll and run a local server in your root directory with `jekyll serve`.
+## Run locally
-### Jerkyll Installation M1 Mac
-If you are having trouble installing Jerkyll on your m1 mac check out this [script](https://github.com/monfresh/laptop) which automatically installs it for you.
+Use Node 24 LTS (`nvm use` if you use nvm):
-### Worked for Ken 04192023 M1 Mac
-Ran the below in the root project folder
+```sh
+npm ci
+npm run dev
```
-gem install bundler jekyl
-bundle install
-bundle exec jekyll serve
+
+Open the URL printed by Next.js (normally http://127.0.0.1:3000).
+
+## Build and check
+
+```sh
+npm run check
+npm run test:skeleton
+npm run preview
```
-### Adding a Member
-Run `python add_person.py` from the root directory, and follow the prompts as they come up.
+The build validates the content and referenced assets, then exports static files into `out/`. Stop the development server before starting the static preview because both default to port 3000.
+
+## Update content
+
+| What to edit | Where |
+| --- | --- |
+| Publications | `content/publications.json` |
+| People, roles, status and interests | `content/people.json` |
+| Alumni from the original site | `content/alumni.json` |
+| News, newest date first | `content/news.json` |
+| Sponsors | `content/sponsors.json` |
+| Existing page prose (Markdown strings) | `content/pages.json` |
+| Awards, projects, opportunities, photos | `content/awards.json`, `projects.json`, `opportunities.json`, `gallery.json` |
+| Site domain and signup endpoint | `content/site.json` |
+| Page layout | `app/` |
+| Shared interface components | `components/` |
+| All styling | `app/globals.css` |
+| Images, PDFs and downloads | `public/` |
+
+See [Content model](docs/CONTENT_MODEL.md) for field definitions and [Maintenance runbook](docs/MAINTENANCE.md) for submissions, discovery, review, activation and recovery. Keep stable IDs when editing existing records: they determine page URLs. Ordinary papers do not require a thumbnail or local PDF. Do not modify the `legacy` metadata unless correcting an import; it preserves original bibliographic details.
+
+Publications support explicit `personIds`; existing imports retain name matching until the roster/content pass supplies verified links. The discovery pipeline uses only the explicitly verified identities in the populated `maintenance/authors.json` registry. Eight current-member identities are used for discovery, while verified past-member and split-profile identities can match coauthors without expanding discovery into their later work.
+
+## Review and deploy
+
+Create a branch and pull request. The check workflow runs content validation, tests and the production build, then saves the exported site as a downloadable artifact. Review the content and preview before merging.
+
+The React deployment workflow is **manual-only** until the lab approves the production switch. In the GitHub repository, set Pages → Source to GitHub Actions, then run “Deploy React website” after approval. It deploys `out/` at the existing organization site address. No production settings were changed during local migration. Once the lab wants automatic deployment, add a `push` trigger for `master`.
+
+Do not push the migration to the production branch while the old Pages branch-based Jekyll deployment remains enabled. Use a PR and coordinate the Pages source switch with the first React deployment.
+
+## Migration and remaining work
+
+See [Next steps and GitHub issues](_planning/NEXT_STEPS.md) for the current delivery plan and completion criteria.
+
+All 47 publication records, 22 people records, 11 legacy alumni entries, three news records, seven sponsors and original asset files were preserved. Old route names remain available, including `/team/`, `/publications/`, `/allnews/`, `/allnews.html`, `/vacancies/` and `/idiofid/`. A duplicated PDF path in the old GLOBEM entry was repaired.
+
+The current and past lab roster has been reviewed, and the publication rule requires Tim plus at least one other current or past lab member. Historical membership intervals, ambiguous author identities, and publication/award backfill still need work. No new papers or honors were added by the migration itself. The IdioFID form retains its existing Google Apps Script endpoint; a signup was not submitted during migration.
-### Adding a publication
-Use `add_pub.py` from the root directory.
+The migration backup location and inventory are recorded in `_planning/migration-backup.json`. It includes the pre-migration legacy source and staged/unstaged Git patches. Generated Jekyll output and installed Ruby dependencies were not archived. Git's existing commit history is intact.
-### Adding a News Item
-News items should be manually edited in the `_data/news.yml` collection.
+**Infrastructure first; content last.** Structured collections and related page skeletons, submission forms, OpenAlex discovery, deduplication, persistent review decisions, weekly draft-PR workflows, health checks, and deployment validation are implemented. Empty future collections contain no invented lab records.
-### Contibuting your changes
-Since the site is hosted with github pages, anything in the master branch is live (in production). When you make changes, create a new branch and make a pull request [(tutorial here)](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request). If there aren't any common problems then maybe soon anyone from bdata will be able to merge with master, but for now we'll limit it.
+**Live maintenance remains disabled.** Activation requires a verified author roster, configuration and reviewer ownership, repository permissions, and an independent scheduler/notification hookup. Two real weekly review cycles and the approved production switch remain to be done after the content pass. Private reviewer notes, credentials and signup addresses must stay out of this public repository.
-Copyright Allan Lab. Code released under the MIT License.
+## Credits
+The original website was based on the Allan Lab at Leiden University template. Its content and historical assets are retained with their existing attribution. The current implementation uses React and Next.js.
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index bee9f20..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-# Welcome to Jekyll!
-#
-# This config file is meant for settings that affect your whole blog, values
-# which you are expected to set up once and rarely need to edit after that.
-# For technical reasons, this file is *NOT* reloaded automatically when you use
-# 'jekyll serve'. If you change this file, please restart the server process.
-
-# Site settings
-title: Behavioral Data Dcience
-email: althoff@cs.washinton.edu
-description: > # this means to ignore newlines until "baseurl:"
- Behavioral Data Science @ UW CSE.
-baseurl: ""
-url: ""
-
-
-RESOURCES_PATH: resources
-include:
- - .htaccess
- - _pages
-
-collections:
- - people
- - publications
- - pubpdfs
-
-sass:
- sass_dir: _sass
-
-# Conversion
-markdown: kramdown
-highlighter: rouge
-lsi: false
-excerpt_separator: "\n\n"
-incremental: false
-
-
-
-# Markdown Processing
-kramdown:
- input: GFM
- hard_wrap: false
- auto_ids: true
- footnote_nr: 1
- entity_output: as_char
- toc_levels: 1..6
- smart_quotes: lsquo,rsquo,ldquo,rdquo
- enable_coderay: false
- parse_block_html: true # default for kramdown is false. This will enable using Markdown links
-
diff --git a/_data/alumni.yml b/_data/alumni.yml
deleted file mode 100644
index 9073886..0000000
--- a/_data/alumni.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-- name: Mike Merrill, PhD Student
- site: https://mikemerrill.io
-- name: Chris Rytting, Postdoc
- site: https://chrisrytting.github.io/
-- name: Ashish Sharma, PhD Student
- site: https://ash-shar.github.io/
-- name: Vinayak Gupta, Postdoc
- site: https://gvinayak.github.io/
-- name: Antonia Saravanou, Visiting Researcher
- site: https://antonia42.github.io/
-- name: Bret Nestor, Postdoc
- site: http://www.cs.toronto.edu/~bretnestor/
-- name: Jina Suh, PhD Student, Fall 2018 - Winter 2023
- site: https://www.microsoft.com/en-us/research/people/jinsuh/
-- name: Jacopo Mocellin, Visiting Master's Student, Spring 2022
-- name: Ethan Hsu, Visiting Master's Student, Summer 2021 - Winter 2022
- site: https://ethan5437.github.io/
-- name: Joy He-Yueya, Bachelor's Student Research Assistant, Fall 2019 - Spring 2021
- site: https://joyheyueya.github.io/
-- name: Remy Deshayes, Visiting Master's Student, Summer 2020 - Fall 2020
- site: https://remydeshayes.github.io/
-- name: Ge Zhang, Visiting Bachelor's Student, Fall 2019 - Fall 2020
- site: https://gezhangrp.com/
diff --git a/_data/news.yml b/_data/news.yml
deleted file mode 100644
index 76f84e5..0000000
--- a/_data/news.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-- date: September 2nd 2020
- headline: "Welcome to our new PhD Students Inna and Ken!"
-- date: June 10th 2021
- headline: "Tim, Inna, Ashish, and Galen win 4 Best Paper awards at WWW, ICWSM, and NLP4IF!"
-- date: November 2nd 2020
- headline: "Our fancy site is live!"
diff --git a/_data/sponsors.yml b/_data/sponsors.yml
deleted file mode 100644
index 03d5c1d..0000000
--- a/_data/sponsors.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-- path: /spons/adobe.jpg
- name: Adobe
-- path: /spons/ai2.png
- name: AI2
-- path: /spons/gates.png
- name: The Bill and Melinda Gates Foundation
-- path: /spons/msr.gif
- name: Microsoft Research
-- path: /spons/nih.png
- name: The National Institutes of Health
-- path: /spons/nsf.png
- name: The National Science Foundation
-- path: /spons/onr.png
- name: The Office of Naval Research
\ No newline at end of file
diff --git a/_includes/about.md b/_includes/about.md
deleted file mode 100644
index 2c06704..0000000
--- a/_includes/about.md
+++ /dev/null
@@ -1 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Turpis tincidunt id aliquet risus feugiat in ante metus. Lacus vel facilisis volutpat est velit egestas dui id ornare. Sed enim ut sem viverra aliquet eget.
\ No newline at end of file
diff --git a/_includes/analytics.html b/_includes/analytics.html
deleted file mode 100644
index 833e7a8..0000000
--- a/_includes/analytics.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
\ No newline at end of file
diff --git a/_includes/contact.md b/_includes/contact.md
deleted file mode 100644
index 6905bab..0000000
--- a/_includes/contact.md
+++ /dev/null
@@ -1,4 +0,0 @@
-- Email: mikeam@cs.washington.edu
-- [📚 Google Scholar](https://scholar.google.com/citations?user=lK6SO9IAAAAJ&hl=en)
-- [🐦 Twitter](https://twitter.com/Mike_A_Merrill)
-- [📄 CV](./resources/Mike_Merrill_CV.pdf)
\ No newline at end of file
diff --git a/_includes/footer.html b/_includes/footer.html
deleted file mode 100644
index bc6063c..0000000
--- a/_includes/footer.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/_pages/404.md b/_pages/404.md
deleted file mode 100755
index cd29c19..0000000
--- a/_pages/404.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: "Page Not Found"
-layout: default
-excerpt: "Page not found. We didn't predict this behavior."
-sitemap: false
-permalink: /404.html
----
-
-Sorry, but the page you were trying to view does not exist.
-
diff --git a/_pages/_home_pretty.md b/_pages/_home_pretty.md
deleted file mode 100644
index 0037a03..0000000
--- a/_pages/_home_pretty.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: "Behavioral Data Science - Home"
-layout: homelay
-excerpt: "Behavioral Data Science @ UW"
-sitemap: false
-permalink: /
----
-
-We are a research group at the [Paul G. Allen School of Computer Science of Engineering](http://cs.washington.edu). Our aim is to explore and understand behavioral through the lense of data science.
-
-
-
-
-
-
-
-To this end, we .... COPY THAT MAKES US LOOK GOOD
-
- **We are looking for passionate new PhD students, Postdocs, and Master students to join the team** [(more info)]({{ site.url }}{{ site.baseurl }}/vacancies) **!**
-
-
-We are grateful for funding from... WHO FUNDS US.
-
-
-
-
-
-
-
diff --git a/_pages/aboutwebsite.md b/_pages/aboutwebsite.md
deleted file mode 100644
index bd18ba1..0000000
--- a/_pages/aboutwebsite.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: "About the website"
-layout: textlay
-excerpt: "About the website."
-sitemap: false
-permalink: /aboutwebsite.html
----
-
-# Use this website as a template for your academic research group
-
-This website is powered by [Jekyll](https://jekyllrb.com) and uses some [Bootstrap](http://www.getbootstrap.com) and [Bootswatch](http://www.bootswatch.com). We tried to make it simple yet adaptable, so that it is easy for you to re-use it for your purpose.
-
-### Getting started
-All pages are written in [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) for easy editing, and [Jekyll](https://jekyllrb.com) uses Liquid for the data-driven pages. The publicaion list, news items, and group members are stored as `.yml` data sheets (plain text) in the `_data folder`, so that one can update the website easily. The pages are in the `_pages` folder. Updating and maintaining is easy using [Github](http://www.github.com) (not worldpress-easy, but there are other advantages (see e.g. [this](https://www.taniarascia.com/make-a-static-website-with-jekyll/), or [this](http://www.webdesignerdepot.com/2015/11/jekyll-against-the-rest-of-the-world/)). [Jekyll](https://jekyllrb.com) takes all the markdown and data files, and creates beautiful `html` files in the `_site` folder.
-
-If you never used [Jekyll](https://jekyllrb.com), read the [wikipedia article](https://en.wikipedia.org/wiki/Jekyll_(software)) article and check out [their website](https://jekyllrb.com). Same for [Github](http://www.github.com), which will host your first website draft.
-
-Create and open a github account, go to [our repository](https://github.com/allanlab/allanlab), and click 'fork'. This is now your copy of the website, and you can change and adapt it as you want. You don't have to link to us or mention us (but of course we appreciate it). Then change the name of the repository to "your_username" and the name of the branch to "gh-pages". Your website is now automatically published under *your_username.github.io/your_username/*. Except that it probably still looks like our website.
-
-To modify the webpage, you can either do everything on on github.com (go to a file, click "edit", then "commit", "push"), or install [Jekyll](https://jekyllrb.com) on your computer and play with your local copy that you sync with the branch on github.com. The former is much easier in the beginning, but a bit less convenient once you start rewriting everythint. To get it to work on your computer (and to learn a bit more about [Jekyll](https://jekyllrb.com)), [here](https://www.taniarascia.com/make-a-static-website-with-jekyll/) and [here](https://scotch.io/tutorials/getting-started-with-jekyll-plus-a-free-bootstrap-3-starter-theme) are tutorials on how to use it and how set it up locally. Also, consider using the [Github desktop app](http://www.desktop.github.com), I found it helpful.
-
-### Customization
-Now let's make this *your* website.
-
-First, go to the `news.ylm`, `publist.ylm`, and `team.ylm` files in the `_data` folder and insert your own data into the data fields. Watch out: [Jekyll](https://jekyllrb.com) is quite strict about extra or missing spaces etc. Adhere to the format. In the beginning, test each change: commit, push, and check the published website.
-
-For publications, you can add a "1" in the highlight field, then it will be featured prominently. You can add important news items (red, "news1"), and less important news items (blue, "news2").
-
-For the news items, just keep adding them. The first 10 will be displayed on the 'home' page.
-
-For the `team.ylm` file
-
-Next, change the content of all files in the `_pages` folder. To change the title in the homepage, go to `homelay.html` in the `_layout` folder.
-
-Lastly, change the footer and perhaps header appropriately (in `_include`).
-
-You might also want to change the style or theme. I imported style files (in sass) from Bootstrap/Bootwatch, you can replace them with your own (in the `_sass directory`). For small changes, just work on the override stuff in the `main.sass` file in the `CSS` folder. Or change some variables in the `_variables.sass` file, like the background color etc.
-
-As said, [Jekyll](https://jekyllrb.com) takes all the markdown and data files, and creates beautiful `html` files in the `_site` folder.In the end, either upload these files to your server, or buy yourself a domain and check the instructions on github on how to host it there.
-
-### Copyright / credit
-
-You can use this template as you please. You don't have to link to us or mention us (but of course we appreciate it). We also welcome it if you send us an email with a link to your website, perhaps we'll publish a list here at some point.
-
-Comments welcome.
-
-Code released under the MIT License.
-
-
-
diff --git a/_pages/allnews.md b/_pages/allnews.md
deleted file mode 100644
index 5ff3475..0000000
--- a/_pages/allnews.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: "News"
-layout: textlay
-excerpt: "Behavioral Data Science @ UW CSE"
-sitemap: false
-permalink: /allnews.html
----
-
-# News
-
-{% for article in site.data.news %}
-
{{ article.date }}
-{{ article.headline }}
-{% endfor %}
diff --git a/_pages/home.md b/_pages/home.md
deleted file mode 100644
index 8f23d9d..0000000
--- a/_pages/home.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "Behavioral Data Science - Home"
-layout: homelay
-excerpt: "Behavioral Data Science @ UW"
-sitemap: false
-permalink: /
----
-
-We are a research group at the [Paul G. Allen School of Computer Science of Engineering](http://cs.washington.edu). Our aim is to explore and understand behavior through the lens of data science.
-
-The Behavioral Data Science Group develops computational methods that leverage large-scale behavioral data to extract actionable insights about our lives, health and happiness through combining techniques from data science, social network analysis, and natural language processing. We currently work on research related to mental health, misinformation online, scientific reproducibility, and informing the COVID-19 response.
-
-We have a [postdoc position](https://docs.google.com/document/d/1h44Gz1wOMx6QhHUWv9QFB3Jnrn-JzEMPHC0WZhPMEqU/edit#) available.
-
-We are also looking for PhD students, especially in but not limited to deep learning, causal inference, data science and mobile health. If you're interested please apply to the UW Allen School. Go Dawgs!
-
-{% include group.md %}
diff --git a/_pages/idiofid.md b/_pages/idiofid.md
deleted file mode 100644
index 7496958..0000000
--- a/_pages/idiofid.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "Idiographic Fidelity Benchmark – Updates"
-layout: textlay
-excerpt: "Notification page for the Idiographic Fidelity Benchmark release."
-sitemap: false
-permalink: /idiofid/
----
-
-# Idiographic Fidelity Benchmark – Attitude (IdioFid-A)
-
-IdioFid-A is a benchmark for evaluating how well AI agents can infer a specific person’s attitudes from their real social media history. Leave your email to get a one-time notification when the benchmark, dataset, and code are public.
-
-
-
-
-
-
diff --git a/_pages/openings.md b/_pages/openings.md
deleted file mode 100644
index 2ab2d93..0000000
--- a/_pages/openings.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: "Behavioral Data Science - Vacancies"
-layout: textlay
-excerpt: "Openings"
-sitemap: false
-permalink: /vacancies
----
-
-# Open positions
-WRITE ABOUT OPEN POSITIONS HERE
diff --git a/_pages/pictures.md b/_pages/pictures.md
deleted file mode 100644
index 6760ea7..0000000
--- a/_pages/pictures.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: "Behavioral Data Science - Pictures"
-layout: piclay
-excerpt: "Behavioral Data Science -- Pictures"
-permalink: /pictures/
----
-
-# Pictures
-This page could contain pictures (once we're all together again!)
-
diff --git a/_pages/publications.md b/_pages/publications.md
deleted file mode 100644
index 5968115..0000000
--- a/_pages/publications.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: "Behavioral Data Science - Publications"
-layout: gridlay
-excerpt: "Behavioral Data Science -- Publications."
-sitemap: false
-permalink: /publications/
----
-
-
-# Publications
-
-## Group highlights
-(For a full list see [below](#full-list))
-
-{% assign highlights = site.publications | where_exp:"pub","pub.highlight>=1"%}
-
-
diff --git a/_pages/research.md b/_pages/research.md
deleted file mode 100644
index ed6875c..0000000
--- a/_pages/research.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "Behavioral Data Science - Research"
-layout: textlay
-excerpt: "Behavioral Data Science -- Research"
-sitemap: false
-permalink: /research/
----
-
-# Research
-
-This page would contain a more detailed description of our research.
-
-{: style="width: 300px; float: right; border: 10px"}
-
-
-{: style="width: 300px; float: left; border: 10px"}
-
diff --git a/_pages/team.md b/_pages/team.md
deleted file mode 100644
index f19fa97..0000000
--- a/_pages/team.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: "Behavioral Data Science - Team"
-layout: gridlay
-excerpt: "Behavioral Data Science: Team members"
-sitemap: false
-permalink: /team/
----
-
-{% include group.md %}
diff --git a/_people/advaitbhat.md b/_people/advaitbhat.md
deleted file mode 100644
index 2094eb5..0000000
--- a/_people/advaitbhat.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-headshot: advait.jpeg
-is_visiting: false
-name: Advait Bhat
-priority: 4
-research_areas:
- - Human-AI Interaction
- - Human-Computer Interaction
- - Natural Language Processing
- - Computational Social Science
-site: https://advaitmb.com/
-title: PhD Student
----
\ No newline at end of file
diff --git a/_people/antoniasaravanou.md b/_people/antoniasaravanou.md
deleted file mode 100644
index a0d9dc8..0000000
--- a/_people/antoniasaravanou.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: antoniasaravanou.jpg
-is_visiting: false
-name: Antonia Saravanou
-priority: 5
-research_areas: null
-site: https://antonia42.github.io/
-title: Visiting Researcher
-inactive: true
----
\ No newline at end of file
diff --git a/_people/ashishsharma.md b/_people/ashishsharma.md
deleted file mode 100644
index 7b78b52..0000000
--- a/_people/ashishsharma.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-headshot: ashishsharma.png
-is_visiting: false
-name: Ashish Sharma
-priority: 5
-research_areas:
- - NLP
- - Computational Social Science
-site: https://ash-shar.github.io/
-title: PhD Student
-inactive: true
----
diff --git a/_people/bretnestor.md b/_people/bretnestor.md
deleted file mode 100644
index c8e0722..0000000
--- a/_people/bretnestor.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: bretnestor.jpg
-is_visiting: false
-name: Bret Nestor
-priority: 5
-research_areas: null
-site: http://www.cs.toronto.edu/~bretnestor/
-title: Postdoc
-inactive: true
----
\ No newline at end of file
diff --git a/_people/deniznazarova.md b/_people/deniznazarova.md
deleted file mode 100644
index c015427..0000000
--- a/_people/deniznazarova.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-headshot: deniz.jpeg
-is_visiting: false
-name: Deniz Nazarova
-priority: 4
-research_areas:
- - AI in Therapy
- - NLP
- - Multilingual NLP
- - AI Bias
- - HCI
-site: https://gonzoden.github.io/
-title: PhD Student
----
\ No newline at end of file
diff --git a/_people/galenweld.md b/_people/galenweld.md
deleted file mode 100644
index 7387d00..0000000
--- a/_people/galenweld.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-headshot: galenweld.png
-is_visiting: false
-name: Galen Weld
-priority: 5
-research_areas:
-- causal inference
-- ' online communities'
-site: https://galenweld.com/
-title: PhD Student
----
diff --git a/_people/innalin.md b/_people/innalin.md
deleted file mode 100644
index 3e8bc9e..0000000
--- a/_people/innalin.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-headshot: innalin.jpg
-is_visiting: false
-name: Inna Lin
-priority: 5
-research_areas: null
-site: https://innawy.github.io
-title: PhD Student
----
diff --git a/_people/jinasuh.md b/_people/jinasuh.md
deleted file mode 100644
index 1b1a05c..0000000
--- a/_people/jinasuh.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-headshot: jinasuh.jpg
-is_visiting: false
-name: Jina Suh
-priority: 4
-research_areas:
- - Human-Centered Data Science
- - Human-Centered Design
- - Human-Centered AI
-site: https://www.microsoft.com/en-us/research/people/jinsuh/
-title: PhD
-inactive: true
----
diff --git a/_people/joyhe-yueya.md b/_people/joyhe-yueya.md
deleted file mode 100644
index 94c1ae8..0000000
--- a/_people/joyhe-yueya.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: joyhe-yueya.jpg
-is_visiting: false
-name: Joy He-Yueya
-priority: 8
-research_areas: null
-site: https://joyheyueya.github.io
-title: Bachelor's Student
-inactive: true
----
\ No newline at end of file
diff --git a/_people/kengu.md b/_people/kengu.md
deleted file mode 100644
index ac3c431..0000000
--- a/_people/kengu.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-headshot: kengu.jpg
-is_visiting: false
-name: Ken Gu
-priority: 5
-research_areas: null
-site: https://kenqgu.com/
-title: PhD Student
----
\ No newline at end of file
diff --git a/_people/margaretli.md b/_people/margaretli.md
deleted file mode 100644
index 0b0d048..0000000
--- a/_people/margaretli.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-headshot: margaretli.png
-is_visiting: false
-name: Margaret Li
-priority: 5
-research_areas:
-- NLP
-- Dialogue
-- ML
-site: https://margs.li
-title: PhD Student
----
\ No newline at end of file
diff --git a/_people/melihyilmaz.md b/_people/melihyilmaz.md
deleted file mode 100644
index ef50439..0000000
--- a/_people/melihyilmaz.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: melihyilmaz.png
-is_visiting: false
-name: Melih Yilmaz
-priority: 5
-research_areas: null
-site: null
-title: PhD Student
-inactive: true
----
\ No newline at end of file
diff --git a/_people/mickelliu.md b/_people/mickelliu.md
deleted file mode 100644
index 783b1bb..0000000
--- a/_people/mickelliu.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-headshot: mickelliu.png
-is_visiting: false
-name: Mickel Liu
-priority: 4
-research_areas:
- - Agent Alignment
- - Multi-Agent Systems
- - Large Language Models
- - Reinforcement Learning
-site: https://mickel-liu.github.io/
-title: PhD Student
----
\ No newline at end of file
diff --git a/_people/mikemerrill.md b/_people/mikemerrill.md
deleted file mode 100644
index bbe32c8..0000000
--- a/_people/mikemerrill.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: mikemerrill.jpeg
-is_visiting: false
-name: Mike Merrill
-priority: 5
-research_areas: null
-site: https://mikemerrill.io
-title: PhD Student
-inactive: true
----
\ No newline at end of file
diff --git a/_people/remydeshayes.md b/_people/remydeshayes.md
deleted file mode 100644
index dd395dc..0000000
--- a/_people/remydeshayes.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-headshot: remydeshayes.png
-is_visiting: true
-name: Remy Deshayes
-priority: 7
-research_areas: null
-site: https://remydeshayes.github.io/
-title: Master's Student
----
diff --git a/_people/timalthoff.md b/_people/timalthoff.md
deleted file mode 100644
index f463d86..0000000
--- a/_people/timalthoff.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-headshot: timalthoff.jpg
-is_visiting: false
-name: Tim Althoff
-priority: 2
-research_areas: null
-site: http://www.timalthoff.com/
-title: Assistant Professor
----
\ No newline at end of file
diff --git a/_people/vinayakgupta.md b/_people/vinayakgupta.md
deleted file mode 100644
index edbbc60..0000000
--- a/_people/vinayakgupta.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-headshot: vinayakgupta.png
-is_visiting: false
-name: Vinayak Gupta
-priority: 5
-research_areas: null
-site: https://gvinayak.github.io/
-title: Postdoc
-inactive: true
----
diff --git a/_people/xinyizhou.md b/_people/xinyizhou.md
deleted file mode 100644
index f6da3fa..0000000
--- a/_people/xinyizhou.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-headshot: xinyizhou.jpg
-is_visiting: false
-name: Xinyi Zhou
-priority: 3
-research_areas: null
-site: https://xinyizhou.xyz/
-title: Postdoc
----
\ No newline at end of file
diff --git a/_planning/MODERN_STACK_OPTIONS.md b/_planning/MODERN_STACK_OPTIONS.md
new file mode 100644
index 0000000..ee8c6c3
--- /dev/null
+++ b/_planning/MODERN_STACK_OPTIONS.md
@@ -0,0 +1,111 @@
+# Modern website tooling assessment
+
+**Historical audit/research:** See [NEXT_STEPS.md](NEXT_STEPS.md) for the current React implementation roadmap and issue tracker. Earlier Jekyll/Astro recommendations and delivery phases below are superseded.
+
+**Selected stack:** React + Next.js, plain CSS, JSON/Markdown content, Python maintenance helpers, and GitHub Pages. The React migration is implemented locally; automated weekly discovery and production deployment remain pending. Earlier framework comparisons below are historical research.
+Research memo, September 4, 2026. Proposals only; no packages installed, site rebuilt, services connected, or hosting changed. Based on the existing feature spec, repository audit, and a dedicated research sub-agent's findings.
+
+## Recommended direction
+
+**Preference update:** The user prioritizes a simple, familiar stack that future lab members can maintain and has not accepted Astro. The Astro recommendation below is retained as a researched option, not a selected stack. Reassess Jekyll modernization for Git-comfortable maintainers and managed WordPress for editors who need a graphical interface. React/Next.js is an alternative if maintainers already know React, but familiarity alone does not reduce its dependency and build requirements.
+
+Rebuild the public website with **Astro and TypeScript**, store approved people/paper/award records as schema-validated content in Git, add **Pagefind** for search, and build a separate **Python ingestion service** that proposes **one GitHub pull request per weekly review batch**. Keep GitHub Pages as the production host initially. Add a browser-based content editor only if the reviewers need it.
+
+This replaces the old presentation stack while preserving the repository, public address, assets, citation links and editorial history. The automation service handles content collection; changing the page framework alone will not keep papers or awards current.
+
+## Current dependencies and build environment
+
+Verified from source:
+
+- `Gemfile.lock`: `github-pages` 231, pinning Jekyll 3.9.5.
+- Loaded Bootstrap asset: 3.3.6.
+- `_includes/footer.html` loads jQuery 1.11.3 from a CDN. A separate jQuery 3.3.1 asset exists locally; it is not the footer's loaded version.
+- Markdown/YAML collections and manually maintained BibTeX helpers.
+- No tracked custom `.github` workflows in the audited commit.
+- Host tools: Node 23.6.1, Python 3.12.4, system Ruby 2.6.10. These are local tool versions, not a claim about GitHub's deployment runtime.
+
+For the new build, pin a supported Node LTS release with the package lockfile. Node's current release table lists 24 as LTS and 23 as end of life. Do not build on the host's default Node 23 simply because it is already installed. [Node releases](https://nodejs.org/en/about/previous-releases)
+
+## Framework comparison
+
+| Option | Fit for this lab | Tradeoff | Recommendation |
+| --- | --- | --- | --- |
+| Astro + TypeScript | Public research site with structured collections, generated profiles, papers, projects and selective interactive UI. | Templates and content references need migration; weekly review and discovery remain custom work. | Preferred rebuild. |
+| Next.js | Stronger fit if the product becomes a substantial signed-in application with a custom dashboard and server-side features. | More runtime/application concerns when using server features; static export cannot provide those features by itself. | Choose only if the editorial application becomes a central requirement. |
+| Modernize existing Jekyll | Retain existing templates and add search/import/review independently. | Least migration, but retains Liquid/Ruby tooling and requires deliberate theme cleanup. | Valid lower-effort alternative. |
+
+Astro provides typed content schemas and relationships between collections. Its official migration guide covers translating Jekyll content/templates, and its deployment guide supports static output on GitHub Pages. These capabilities are a good fit for the existing Markdown/YAML source. [Content collections](https://docs.astro.build/en/guides/content-collections/), [Jekyll migration](https://docs.astro.build/en/guides/migrate-to-astro/from-jekyll/), [GitHub Pages deployment](https://docs.astro.build/en/guides/deploy/github/)
+
+Use a maintained stable release verified at implementation time, rather than targeting an unverified newest patch. Record runtime compatibility in the project and CI configuration.
+
+Next.js documents the features unavailable in [static export mode](https://nextjs.org/docs/pages/guides/static-exports). Jekyll remains a maintained option; the older version pinned here should not be confused with the entire framework being obsolete. [Jekyll documentation](https://jekyllrb.com/docs/github-pages/)
+
+## Feature-to-tool mapping
+
+| Needed capability | Proposed tool | What it supplies | What we still build/configure |
+| --- | --- | --- | --- |
+| Fast, responsive public pages | Astro, TypeScript, modern CSS | Page generation, components, typed data access. | Lab visual design, navigation, layout, mobile behavior. |
+| People, papers, projects, awards | Astro content collections + Markdown/YAML/JSON | Schemas, validation and content references. | Lab schema, migration, author identity mapping, cross-linked views. |
+| Search and filters | Pagefind | Static search index, browser UI/API, metadata facets. | Person/year/topic/venue metadata, index boundaries, result design and empty states. |
+| Weekly review | GitHub PRs and required checks | Diffs, review history, branches, controlled merging. | Importer-generated batch, evidence summary, edits/rejections/defer actions, rejection memory. |
+| Browser-based manual editing | Optional Decap CMS | Forms over Git content and an editorial workflow. | Authentication, content schemas and previews. Its per-entry workflow is distinct from our multi-record batch. |
+| Paper discovery | OpenAlex or Semantic Scholar; Crossref; arXiv | Publication metadata, author lookup, DOI/preprint records. | Identity verification, lab-relevance policy, deduplication, version linkage and reconciliation. |
+| Awards and news | Source feeds/pages plus member submissions | Raw evidence and announcements. | Selected sources, extraction, exact recipients/award category, human approval. |
+| Deployment | GitHub Actions + GitHub Pages | Build and publish approved static output. | CI checks, permissions, old-route preservation, rollback, separate review previews if desired. |
+| Scheduled maintenance | Actions plus independent health check, or lab-owned external scheduler | Job execution. | Source state, retries, missed-run detection, owner and notification destination. |
+| Quality | Playwright + axe-core, schema checks, link checks | Browser assertions and automated accessibility checks. | Meaningful interaction tests, redirects, manual keyboard/visual review, content correctness tests. |
+| Release notifications | Preserve existing IdioFID integration initially | Existing signup flow. | Verify ownership, operation and whether it should be replaced; keep addresses outside the public content repository. |
+
+Pagefind indexes rendered HTML and ships a static search bundle, so it does not require a hosted search database. The site must emit searchable content and filter metadata correctly. [Pagefind](https://pagefind.app/)
+
+Playwright documents axe-core integration, while noting that automated checks cannot detect every accessibility problem. Include manual keyboard navigation and responsive review. [Accessibility testing](https://playwright.dev/docs/accessibility-testing)
+
+## Editing tools: the distinction that matters
+
+The user has chosen a weekly batch reviewed before publication. Start with a bot-generated GitHub PR that covers the entire batch, plus a readable change summary. This aligns with the current repository and needs no separate CMS account.
+
+Decap CMS is a candidate for convenient manual edits to people, news or opportunities. Its editorial mode creates a PR for each unpublished entry; it does not implement a weekly batch spanning multiple papers, people and awards. Keep those two paths explicit and do not promise that installing a CMS supplies the ingestion/reconciliation system. Direct saving is the default, so configure editorial mode if using Decap. [Decap editorial workflow](https://decapcms.org/docs/editorial-workflows/)
+
+A hosted CMS becomes worthwhile if nontechnical editors need a richer shared workspace and the lab accepts another service, access configuration and possible recurring costs. It should replace the relevant editing path rather than create competing authoritative copies of publication data.
+
+Decap's [GitHub backend](https://decapcms.org/docs/github-backend/) requires an OAuth server/service and repository push access for editors. [Keystatic GitHub mode](https://keystatic.com/docs/github-mode) is another credible Git-backed editing option, but introduces a GitHub App, secrets and collaborator access. Choose at most one editor after the pilot rather than layering several onto the same records.
+
+## External service choices
+
+- OpenAlex is the recommended first discovery provider. Current documentation describes a free API key with a daily usage allowance, so budget and instrument queries rather than assuming unlimited access. [Pricing](https://help.openalex.org/access/pricing/), [example costs](https://help.openalex.org/access/example-costs/)
+- Crossref supports DOI metadata lookup without signup. Use it to normalize publisher records. [REST API](https://www.crossref.org/documentation/retrieve-metadata/rest-api/)
+- Semantic Scholar is a secondary coverage option; verify access and rate limits when configuring it. [API](https://www.semanticscholar.org/product/api)
+- Healthchecks.io is a candidate for independent detection of missed jobs; an existing lab monitor can fill the same role. [How monitoring works](https://healthchecks.io/docs/)
+- Cloudflare Pages can provide branch previews if needed. Preview access must be configured deliberately, and per-file asset limits matter for existing PDFs. [Preview deployments](https://developers.cloudflare.com/pages/configuration/preview-deployments/), [platform limits](https://developers.cloudflare.com/pages/platform/limits/)
+
+These services need separate setup where chosen. The recommended public site and search can remain static; recurring costs are most likely to arise from optional editing, preview, monitoring, API or AI services. Assess quotas using a real import batch before committing to paid plans.
+
+## Hosting, previews and reliability
+
+Keep the existing `behavioral-data.github.io` address and Git repository. GitHub Pages can host Astro output, so framework migration does not require a production hosting migration. Preserve all existing routes and PDF links with a tested migration map.
+
+GitHub Pages production deployment and per-PR previews are separate requirements. Start with local previews or CI build artifacts; if reviewers need clickable previews for every batch, configure a preview service explicitly and check access. Public-repository branches and PR descriptions are public even when unpublished on the production website. Private submissions and reviewer notes need separate storage.
+
+GitHub scheduled jobs can be disabled after 60 days without repository activity. Add a missed-run monitor independent of the scheduled job, or use an external lab-owned scheduler. No-content-change runs must still record health somewhere appropriate. [GitHub workflow inactivity](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/disable-and-enable-workflows)
+
+When implementing the bot, test automated PR checks and deployment triggers end to end. GitHub documents special behavior for events created by `GITHUB_TOKEN`, including approval requirements for some automated PR workflows. Select explicit dispatch or a suitably scoped GitHub App when needed; do not assume all generated events trigger downstream checks. [Workflow triggering](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow)
+
+## Available implementation capabilities
+
+This workspace already has code/file editing, Git and GitHub tooling, current-web research, Python and Node runtimes, and built-in browser inspection. Additional project dependencies would be installed only during implementation.
+
+Sites building/hosting tools are also available for deployment previews and hosted applications. Their local documentation supports static output and Cloudflare Workers-backed capabilities, with managed database/object-storage options. The current repository has no Sites hosting configuration; those capabilities are alternatives, not an existing production integration. A separate hosted editor could use such a runtime if needed, but the public site does not currently need a database.
+
+No extra plugin is necessary to evaluate or start the rebuild. Hosted CMS access, scholarly API credentials, preview hosting, and lab-owned scheduling must be configured when selected; availability of a development tool does not imply those external accounts are connected.
+
+## Scope of custom work
+
+The largest custom component is the content maintenance pipeline: verified roster IDs, historical membership rules, merging preprints and final versions, field-level overrides, award evidence, suppression of rejected candidates, and a readable weekly review batch. A framework, CMS or AI service does not supply these lab-specific rules automatically.
+
+Preserve the existing papers, photos, PDFs, verified editorial text and repository history. Replace the Bootstrap/jQuery presentation layer, modernize the build tooling, and migrate records with count/link checks. Avoid adding a database, visitor accounts, a large React application, or AI-based search until a concrete requirement justifies them.
+
+## Proposed first implementation milestone
+
+The framework choice remains open under the simplicity preference above; the following Astro milestone is conditional, not authorized implementation.
+
+Build a local Astro proof of concept containing the homepage, one member profile, a searchable publication archive, one paper page, and a sample weekly review batch. Use existing content and a mock import fixture; establish that approve/reject and duplicate handling work before enabling live scheduled imports. Pin runtime/dependencies, preserve public URLs, and compare against the spec before replacing the live site.
diff --git a/_planning/NEXT_STEPS.md b/_planning/NEXT_STEPS.md
new file mode 100644
index 0000000..ed35847
--- /dev/null
+++ b/_planning/NEXT_STEPS.md
@@ -0,0 +1,166 @@
+# Completing the new lab website
+
+Current implementation: React + Next.js, plain CSS, JSON content, optional Python helpers, and static export for GitHub Pages. Jekyll has been removed. The initial migration preserves 47 papers, 21 people records, 12 legacy alumni entries, three news items, seven sponsors, and the original assets. The UI uses original lab prose and branding with minimal functional labels.
+
+This is the current implementation roadmap. WEBSITE_SPEC.md and MODERN_STACK_OPTIONS.md retain the earlier audit and research history; this document supersedes their old stack and delivery recommendations.
+
+## Decisions already made
+
+- Keep the website barebones. Use original prose; obtain approval for factual corrections or new wording.
+- Keep the stack familiar and simple: React/Next.js, plain CSS, structured files, Python where helpful, GitHub Pages.
+- Review one weekly batch before publishing. Automatic publication is not enabled or planned for this phase.
+- Keep the production switch separate from migration development. The existing live website is unchanged.
+
+## Delivery order
+
+**Updated direction: finish infrastructure and skeletons first; review and backfill content last.** The branch now includes structured content and relationship validation, related awards/news/projects, opportunity and gallery skeletons, explicit publication attribution fields, issue forms, OpenAlex collection, deduplication, review decisions, gated weekly draft-PR and health workflows, legacy export checks, and a maintainer runbook.
+
+The roster now reflects the maintainer-confirmed eight current members. Scholar profiles are confirmed; OpenAlex identities and a local review batch are available. The latest Scholar check yields 13 recent review papers after version grouping; see `maintenance/recent-review.md`. Publication attribution requires at least two lab authors, including Tim plus a current/past member; Tim alone is insufficient. A repository skill and single pipeline command now make collection, status, decisions, validation, and draft-PR publication repeatable; acceptance enforces the policy and records evidence-backed overrides. Resolve membership dates and remaining identity ambiguities before accepting candidates. Verified duplicate versions are grouped; source records are preserved. Awards, projects, opportunities, and gallery collections remain empty. Fixture tests exercise future sections in a temporary checkout; activation and two weekly review cycles, browser/signup QA, external monitoring setup, and production deployment remain pending. See [Publication policy](../docs/PUBLICATION_POLICY.md).
+
+Next, complete the content pass under issues #22–#25; configure real identities/owners and run the #27–#28 pilot; finish #26 launch QA; then perform the approved #29 production switch. The issues remain open because infrastructure alone does not complete their content or live-operation acceptance criteria. See [Maintenance runbook](../docs/MAINTENANCE.md) and [Content model](../docs/CONTENT_MODEL.md).
+
+## Work items
+
+| Work item | GitHub issue |
+| --- | --- |
+| 1. Verify the lab roster and publication attribution rules | [#22](https://github.com/behavioral-data/behavioral-data.github.io/issues/22) |
+| 2. Backfill missing publications and reconcile existing metadata | [#23](https://github.com/behavioral-data/behavioral-data.github.io/issues/23) |
+| 3. Verify and backfill awards and news with shared records | [#24](https://github.com/behavioral-data/behavioral-data.github.io/issues/24) |
+| 4. Review original page content, recruitment, sponsors, and barebones layout | [#25](https://github.com/behavioral-data/behavioral-data.github.io/issues/25) |
+| 5. Complete browser, accessibility, route, and signup checks | [#26](https://github.com/behavioral-data/behavioral-data.github.io/issues/26) |
+| 6. Implement publication discovery, normalization, and deduplication | [#27](https://github.com/behavioral-data/behavioral-data.github.io/issues/27) |
+| 7. Create weekly review batches, contributor intake, and monitoring | [#28](https://github.com/behavioral-data/behavioral-data.github.io/issues/28) |
+| 8. Launch React on GitHub Pages and document maintainer handoff | [#29](https://github.com/behavioral-data/behavioral-data.github.io/issues/29) |
+
+### 1. Verify the lab roster and publication attribution rules
+
+GitHub: [#22](https://github.com/behavioral-data/behavioral-data.github.io/issues/22)
+
+Phase: Before launch. Dependencies: none.
+
+The imported roster has 21 people records plus 12 legacy alumni entries. These are historical records, not a verified current membership list. Profile publications currently use name matching.
+
+- [ ] Have a lab maintainer confirm current members, alumni, visitors, roles, websites, headshots, ordering, and membership dates; reconcile duplicate alumni representations.
+- [ ] Record verified scholarly author IDs and aliases with source links; do not resolve identities from names alone.
+- [ ] Decide whether preprints are included and how pre-joining, post-departure, and continuing-collaboration work should be attributed.
+- [ ] Add explicit internal person links to reviewed publications and use those on profiles instead of relying on name matching.
+- [ ] Validate the new fields and check ambiguous names, visitors, and alumni against reviewed examples.
+
+Done when the roster and attribution policy are approved and each profile lists the intended lab work.
+
+### 2. Backfill missing publications and reconcile existing metadata
+
+GitHub: [#23](https://github.com/behavioral-data/behavioral-data.github.io/issues/23)
+
+Phase: Before launch. Dependencies: 1.
+
+The migrated archive contains 47 papers spanning 2014–2024. It needs a verified backfill, beginning with 2025 onward and then older omissions.
+
+- [ ] Reconcile publications for every verified member and relevant alumnus against authoritative author records, publisher pages, and personal bibliographies.
+- [ ] Submit candidates for human review with sources, lab-author links, ordered authors, dates, venue, DOI/arXiv IDs, and publication state.
+- [ ] Reconcile preprint/published versions and existing duplicates while retaining stable URLs and editorial descriptions.
+- [ ] Add available PDF, code, dataset, and project links; ordinary papers must not require a local PDF or thumbnail.
+- [ ] Verify current highlights with the lab; preserve original prose unless a replacement is explicitly approved.
+
+Done when an agreed bibliography has been reconciled, omissions or conflicts are recorded, and approved papers appear consistently in the archive and profiles.
+
+### 3. Verify and backfill awards and news with shared records
+
+GitHub: [#24](https://github.com/behavioral-data/behavioral-data.github.io/issues/24)
+
+Phase: Before launch. Dependencies: 1, 2.
+
+The current site imports three news items and three paper award fields. It has no verified general honors collection.
+
+- [ ] Collect missing paper awards, individual honors, and lab news from conference/award organizations, UW announcements, or member-submitted evidence.
+- [ ] Add structured award records with exact title, awarding body, date, recipients, optional paper link, and source URL.
+- [ ] Review the original award fields and news entries; migrate without changing their meaning or duplicating announcements.
+- [ ] Render approved awards consistently on relevant paper/profile pages and the news/awards view from shared records.
+- [ ] Require approval for new wording; do not generate promotional summaries or infer awards from citations.
+
+Done when the lab approves the initial backfill and editing one award updates all associated views.
+
+### 4. Review original page content, recruitment, sponsors, and barebones layout
+
+GitHub: [#25](https://github.com/behavioral-data/behavioral-data.github.io/issues/25)
+
+Phase: Before launch. Dependencies: none.
+
+The React draft intentionally uses original site prose and logos. Some original claims are old, including recruiting availability and research themes. Research, pictures, and about-website routes currently have only titles.
+
+- [ ] Ask the lab to verify the existing overview, postdoc document, PhD guidance, affiliation, and seven sponsor entries.
+- [ ] Remove or explicitly approve corrections to stale claims; add no new prose or taglines without approval.
+- [ ] Decide whether empty routes should remain, be hidden, or redirect; retain necessary template attribution in repository documentation.
+- [ ] Add an owner and review/expiry date for opportunities and other time-sensitive content.
+- [ ] Confirm page order, original logo variants, highlight selection, and which archive sections belong on the homepage.
+
+Done when the lab has approved the minimal content and navigation and no unverified current opening is advertised.
+
+### 5. Complete browser, accessibility, route, and signup checks
+
+GitHub: [#26](https://github.com/behavioral-data/behavioral-data.github.io/issues/26)
+
+Phase: Before launch. Dependencies: 4.
+
+Production builds, content validation, unit tests, and an internal exported-link check pass locally. Comprehensive browser and integration QA is still pending.
+
+- [ ] Exercise desktop/mobile layouts, original logos, keyboard navigation, focus, contrast, headings, alt text, and zoom in the built-in browser.
+- [ ] Check publication search, combined filters, reset/empty states, profiles, awards, and missing optional assets.
+- [ ] Build a legacy URL inventory from the original site and verify every required page/download. Include /team/, /publications/, /allnews/, /vacancies, /idiofid/, /aboutwebsite.html, and linked PDFs; add redirects or exported aliases for gaps.
+- [ ] Check canonical URLs, sitemap, robots, favicon, social/search metadata, and 404 behavior on a static Pages-like server.
+- [ ] Confirm ownership of the IdioFid Google Apps Script endpoint and coordinate one authorized test signup; verify the response without storing addresses in the repository.
+- [ ] Add durable automated checks for actual regressions found, especially URL preservation and content relationships.
+
+Done when launch-critical routes and interactions pass, the signup flow is verified, and remaining nonblocking defects are recorded.
+
+### 6. Implement publication discovery, normalization, and deduplication
+
+GitHub: [#27](https://github.com/behavioral-data/behavioral-data.github.io/issues/27)
+
+Phase: Maintenance pilot. Dependencies: 1, 2.
+
+scripts/prepare_publication.py currently prepares a local proposal from one Crossref DOI. It does not discover papers or edit approved content.
+
+- [ ] Choose one primary scholarly provider after checking current access, coverage, limits, and costs; query verified author IDs.
+- [ ] Implement paginated incremental retrieval with lookback, periodic reconciliation, caching, retries, and a request budget.
+- [ ] Normalize source IDs and metadata; use exact IDs for deduplication and send fuzzy matches or version conflicts to review.
+- [ ] Store candidates and provenance separately from approved content. Preserve manual corrections, rejected candidates, and deferrals across runs.
+- [ ] Flag withdrawals, corrections, missing source records, and changed metadata for review; never silently delete approved papers.
+- [ ] Test repeat runs, same-name researchers, preprint-to-publication transitions, source failures, and partial results.
+
+Done when fixture and live pilot runs produce evidence-backed candidates, repeat runs produce no duplicate changes, and no candidate publishes automatically.
+
+### 7. Create weekly review batches, contributor intake, and monitoring
+
+GitHub: [#28](https://github.com/behavioral-data/behavioral-data.github.io/issues/28)
+
+Phase: Maintenance pilot. Dependencies: 3, 6.
+
+The agreed policy is one weekly batch for human review before publication. No scheduled discovery or review automation is enabled yet.
+
+- [ ] Add a simple member submission path for DOI/URL, award evidence, and profile corrections; GitHub issue forms are sufficient initially.
+- [ ] Prepare one review pull request per weekly batch with additions, changed fields, source links, matched people, and conflicts; update an existing batch instead of duplicating it.
+- [ ] Support approve/edit/reject/defer and retain those decisions on subsequent imports; keep private reviewer notes and signup addresses outside the public repo.
+- [ ] Run content checks and provide a preview/artifact. Publish only after a maintainer approves and merges.
+- [ ] Assign primary and backup reviewers and select a lab-owned scheduler and notification destination.
+- [ ] Track last successful fetch, review, and deploy; detect missed runs independently and notify on actionable failures or overdue review, staying quiet on no-change runs.
+- [ ] Run at least two weekly review cycles and record missed papers, false matches, duplicates, failure recovery, and reviewer time.
+
+Done when the pilot demonstrates reliable collection and human-reviewed publication, with a documented operating owner. Automatic publication remains out of scope.
+
+### 8. Launch React on GitHub Pages and document maintainer handoff
+
+GitHub: [#29](https://github.com/behavioral-data/behavioral-data.github.io/issues/29)
+
+Phase: Launch. Dependencies: 1, 2, 3, 4, 5.
+
+The migration exports a static Next.js/React site. The existing live site remains on its old deployment; the new Pages workflow is manual-only.
+
+- [ ] Open and review the migration PR; run CI from a clean checkout with the documented Node version and validate the exported artifact.
+- [ ] Confirm the intended production branch/domain and record a known-good rollback revision and deployment procedure.
+- [ ] Obtain lab approval for the production switch, coordinate merging with changing Pages Source to GitHub Actions, and run the first React deployment.
+- [ ] Verify production routes, PDFs, assets, canonical domain, and signup behavior; confirm the rollback procedure is usable.
+- [ ] Enable deployment on approved merges only after the initial switch is verified, if agreed.
+- [ ] Give a primary and backup CS PhD maintainer a short runbook covering content edits, preview, validation, deployment, rollback, dependencies, and lab-owned credentials.
+
+Done when the approved React site is live and a second maintainer can make and roll back an update. The maintenance pilot can follow launch; do not imply that launch alone enables automatic discovery.
diff --git a/_planning/ROSTER_REVIEW.md b/_planning/ROSTER_REVIEW.md
new file mode 100644
index 0000000..ab92b75
--- /dev/null
+++ b/_planning/ROSTER_REVIEW.md
@@ -0,0 +1,29 @@
+# Roster review — September 5, 2026
+
+The lab maintainer confirmed this roster directly. This confirmation governs lab membership and displayed roles; public biographies are supplementary and may lag changes. All other imported people are past members. Dates of joining/leaving were not supplied and have not been invented.
+
+| Current member | Displayed role |
+| --- | --- |
+| Tim Althoff | PI |
+| Jina Suh | Principal Researcher |
+| Yige Yuan | Postdoc |
+| Advait Bhat | PhD Student |
+| Cheng Li | PhD Student |
+| Deniz Nazar | PhD Student |
+| Inna Lin | PhD Student |
+| Margaret Li | PhD Student |
+
+Galen Weld, Yasaman Sefidgar, Ken Gu, and Rongwu Danny Xu moved from the current roster to past members. Previously inactive people remain past members. Jina's duplicate alumni-list entry was removed from that display source and preserved in her `legacy.alumniEntry`, including its historical PhD dates.
+
+Deniz's existing internal ID `deniznazarova` is preserved so profile URLs remain stable. “Deniz Nazarova” remains an alias for publication matching. Other existing person IDs and historical publication records are unchanged. Yige's ID is `yigeyuan`.
+
+## Supporting public sources
+
+- [Yige Yuan's profile](https://yuanyige.github.io/) identifies the UW postdoctoral appointment with Tim Althoff. The profile still says incoming; the maintainer confirmed the current role. The maintainer supplied a square version of the headshot on September 5, 2026, copied without further alteration to `public/resources/headshots/yigeyuan.jpeg`.
+- [Jina Suh at Microsoft Research](https://www.microsoft.com/en-us/research/people/jinsuh/) identifies her as Principal Researcher; current lab membership comes from the maintainer.
+- [Deniz's profile](https://gonzoden.github.io/) uses Deniz Nazar (Nazarova); the maintainer selected Deniz Nazar for display.
+- [UW faculty directory](https://www.cs.washington.edu/people/faculty/tim-althoff/) lists Tim as Associate Professor. The roster uses the maintainer-requested lab role, PI.
+
+## Remaining before automated publication discovery
+
+The eight current Google Scholar profiles are confirmed. Initial OpenAlex IDs and known-paper anchors are recorded in `maintenance/authors.json`, including seven past members for coauthor recognition. The rule requires at least two lab authors; Tim alone is insufficient. Resolve mixed/split provider identities, preprint handling, and missing membership intervals before approving the first batch. Discovery stays disabled during the pilot. See `docs/PUBLICATION_POLICY.md`.
diff --git a/_planning/SCHOLAR_LATEST_REVIEW.md b/_planning/SCHOLAR_LATEST_REVIEW.md
new file mode 100644
index 0000000..8249fd4
--- /dev/null
+++ b/_planning/SCHOLAR_LATEST_REVIEW.md
@@ -0,0 +1,41 @@
+# Latest Google Scholar check
+
+Checked 2026-09-05 using the built-in browser, with each confirmed profile sorted by publication date. Inspected the first page (up to 20 entries per member; fewer when the profile had fewer papers). This is a recent-paper check, not a complete career bibliography. Scholar sometimes gives a proceedings paper a later year than the conference itself and can contain duplicate versions. Truncated Scholar author lists are not evidence that no other lab author exists.
+
+The resulting 13-paper review list is in `maintenance/recent-review.md`. All remain pending. The main OpenAlex queue retains source observations, with duplicate versions grouped rather than deleted. The source-only SynthWorlds entry is in `maintenance/scholar-supplement.json` until it is reviewed and imported through the manual content workflow.
+
+## Profiles checked
+
+| Member | Profile, newest first | Latest visible entries | Review findings |
+|---|---|---|---|
+| Tim Althoff | [Scholar](https://scholar.google.com/citations?user=yc4nBNgAAAAJ&hl=en&sortby=pubdate) | Capable language models can outgrow the benefits of collaboration; Responsible Evaluation of AI for Mental Health; Inferring events from time series using language models (2026) | Recovered missing papers from split OpenAlex IDs. CandorMD appeared twice. SynthWorlds needed a manual source entry. Responsible Evaluation of AI for Mental Health has only Tim among the known roster after checking the full primary-source list. |
+| Jina Suh | [Scholar](https://scholar.google.com/citations?user=LuNehzsAAAAJ&hl=en&sortby=pubdate) | “Always Want to Use it for Everything”: Understanding Young Adults' Perceptions of AI Dependence; Psychological Influences of Conversational AI; The agony of opacity (2026) | No additional two-lab-author match verified in this check. Several full author lists remain to be checked; do not treat an abbreviated “M Li” as Margaret. |
+| Yige Yuan | [Scholar](https://scholar.google.com/citations?user=lf6GtCIAAAAJ&hl=en&sortby=pubdate) | Co-harness: Co-evolving harnesses and model weights for LLM agents; Rethinking evaluation of harness evolution for agents; Do We Always Need Query-Level Workflows? (2026) | No additional two-lab-author match verified. OpenAlex profile has namesakes; do not assume every record belongs to Yige. |
+| Advait Bhat | [Scholar](https://scholar.google.com/citations?user=lFBWQb0AAAAJ&hl=en&sortby=pubdate) | SynthWorlds; Reactive Writers; Biased AI writing assistants shift users’ attitudes on societal issues (2026) | SynthWorlds added for review; Human Decision-making is Susceptible to AI-driven Manipulation was already present. Reactive Writers and Biased AI have only Advait among the known lab roster, so were not promoted to the lab review list. |
+| Cheng Li | [Scholar](https://scholar.google.com/citations?user=083GCIwAAAAJ&hl=en&sortby=pubdate) | VEglue; Seeing is believing; CultureVLM (2025) | No 2026 entry visible. No additional two-lab-author match verified. Same-name OpenAlex records require per-paper verification. |
+| Deniz Nazar | [Scholar](https://scholar.google.com/citations?user=ZxQO6oMAAAAJ&hl=en&sortby=pubdate) | Beyond One Output; NLP for Social Good (2026); a 2023 paper | Beyond One Output has Deniz with Emily Reif, Cindy Yang, Jena Hwang, Noah Smith, and Jeff Heer; no second known lab author. No additional lab candidate verified. |
+| Inna Lin | [Scholar](https://scholar.google.com/citations?user=LRrRtfwAAAAJ&hl=en&sortby=pubdate) | Muse Spark Safety & Preparedness Report (2026); Self-Improving VLM Judges Without Human Annotations (2025) | Recovered Tim's split identity on Self-Improving VLM Judges. CandorMD was found on Tim's profile but absent from Inna's visible list. The full Muse Spark author list contains no second known lab member. |
+| Margaret Li | [Scholar](https://scholar.google.com/citations?user=cUSS3fYAAAAJ&hl=en&sortby=pubdate) | Slicing and Dicing; Compute-Optimal Tokenization; Artificial Hivemind (Scholar: 2026) | Artificial Hivemind includes past member Mickel Liu, verified from arXiv. Full author lists for Compute Optimal Tokenization, FlexOlmo and Precise Information Control contain no second known lab member. |
+
+## Recovered candidates and primary evidence
+
+- **SynthWorlds** — Ken Gu, Advait Bhat, Mike Merrill and Tim Althoff appear in the [ICLR 2026 proceedings](https://proceedings.iclr.cc/paper_files/paper/2026/hash/b213d870740582dd6af77bbdaed900c9-Abstract-Conference.html). No matching OpenAlex work found; retained separately without inventing an ID.
+- **Inferring Events from Time Series using Language Models** — Mike Merrill and Tim; [ACL 2026 proceedings](https://aclanthology.org/2026.acl-long.157/).
+- **CandorMD** — Inna and Tim; [arXiv](https://arxiv.org/abs/2605.20701). Two OpenAlex records share this arXiv identifier and are grouped.
+- **Self-Improving VLM Judges Without Human Annotations** — Inna and Tim; [arXiv](https://arxiv.org/abs/2512.05145).
+- **RADAR** — Ken and Tim; [Google Research publication record](https://research.google/pubs/radar-benchmarking-language-models-on-imperfect-tabular-data/), [arXiv](https://arxiv.org/abs/2506.08249). Use NeurIPS 2025 pending review, despite Scholar displaying 2026.
+- **Artificial Hivemind** — Margaret and Mickel; [arXiv full author list](https://arxiv.org/abs/2510.22954). Use NeurIPS 2025 pending review, despite Scholar displaying 2026.
+- **Transforming wearable data into personal health insights using large language model agents** — Mike Merrill and Tim; [Nature Communications, January 2026](https://www.nature.com/articles/s41467-025-67922-y). The [2024 preprint](https://arxiv.org/abs/2406.06464) reports acceptance to Nature Communications and has the same full author list and PHIA study; grouped with the journal record.
+
+## Duplicate handling
+
+The recent list contains one Reddit Rules and Rulers item, one CandorMD item, and one item for each verified preprint/publication pair. [Capable language models can outgrow the benefits of collaboration](https://www.nature.com/articles/s42256-026-01268-y) explicitly links [Towards a Science of Scaling Agent Systems](https://arxiv.org/abs/2512.08296) as its preprint, despite the changed title.
+
+Automatic grouping uses matching DOI/arXiv IDs or matching normalized titles and complete author lists. It does not use fuzzy title similarity. Dataset versions, author responses, corrections and errata need shared identifiers or explicit evidence. Manually verified groups keep their sources and reasons in `review.json`. Rejected or deferred canonical items continue to suppress alternate versions.
+
+## Remaining coverage work
+
+- Additional full-author checks found only one known lab member in [Responsible Evaluation of AI for Mental Health](https://arxiv.org/abs/2602.00065), [Muse Spark](https://arxiv.org/abs/2606.12429), [Compute Optimal Tokenization](https://arxiv.org/abs/2605.01188), [FlexOlmo](https://arxiv.org/abs/2507.07024), and [Precise Information Control](https://arxiv.org/abs/2506.06589). [Standardizing and Scaffolding Healthcare AI-Chatbot Evaluation](https://www.medrxiv.org/content/10.1101/2024.07.21.24310774v1) lists Michael Lingzhi Li, not Margaret. Other abbreviated lists remain unverified; the check does not establish exhaustive coverage.
+- Confirm historical membership dates and whether each candidate belongs to the lab. Authorship alone is a candidate filter, not permission to publish.
+- Audit additional split author IDs before enabling broader automated discovery. New aliases are verified on cited works only and use `discover: false`; the weekly schedule remains disabled.
+- Scholar is a manual coverage cross-check. The automated collector remains OpenAlex, with primary-source/manual entries for gaps.
diff --git a/_planning/SCHOLAR_PROFILES.md b/_planning/SCHOLAR_PROFILES.md
new file mode 100644
index 0000000..5fa177a
--- /dev/null
+++ b/_planning/SCHOLAR_PROFILES.md
@@ -0,0 +1,27 @@
+# Google Scholar profiles
+
+Checked September 5, 2026. These are identity references for publication review. They do not activate discovery or approve any publications. OpenAlex author identities remain separate in `maintenance/authors.json`.
+
+| Member | Google Scholar | Verification |
+| --- | --- | --- |
+| Tim Althoff | [Profile](https://scholar.google.com/citations?user=yc4nBNgAAAAJ) | Verified — [source](https://homes.cs.washington.edu/~althoff/) |
+| Jina Suh | [Profile](https://scholar.google.com/citations?user=LuNehzsAAAAJ) | Verified — confirmed by Advait Bhat on September 5, 2026 |
+| Yige Yuan | [Profile](https://scholar.google.com/citations?user=lf6GtCIAAAAJ) | Verified — [source](https://yuanyige.github.io/) |
+| Advait Bhat | [Profile](https://scholar.google.com/citations?user=lFBWQb0AAAAJ) | Verified — [source](https://advaitmb.com/) |
+| Cheng Li | [Profile](https://scholar.google.com/citations?user=083GCIwAAAAJ) | Verified — [source](https://scholar.google.com/citations?user=083GCIwAAAAJ) |
+| Deniz Nazar | [Profile](https://scholar.google.com/citations?user=ZxQO6oMAAAAJ) | Verified — [source](https://gonzoden.github.io/) |
+| Inna Lin | [Profile](https://scholar.google.com/citations?user=LRrRtfwAAAAJ) | Verified — [source](https://innalin.notion.site/Inna-Wanyin-Lin-0f659924dd034fb18a1059393459a25e) |
+| Margaret Li | [Profile](https://scholar.google.com/citations?user=cUSS3fYAAAAJ) | Verified — [source](https://margs.li/) |
+
+## Evidence
+
+- **Tim Althoff:** Linked from personal faculty homepage.
+- **Jina Suh:** Confirmed by lab maintainer Advait Bhat on September 5, 2026. Originally discovered through a third-party index matching name, Microsoft/UW affiliation and research area.
+- **Yige Yuan:** Linked from personal homepage; original link uses scholar.google.com.hk.
+- **Advait Bhat:** Linked from personal homepage.
+- **Cheng Li:** Search-indexed Scholar profile lists University of Washington and verified uw.edu email. CultureLLM and CulturePark match the indexed personal homepage at https://chengli0228.github.io/; that homepage currently returns HTTP 404.
+- **Deniz Nazar:** Linked from personal homepage; removed language and tracking parameters.
+- **Inna Lin:** Linked from personal Notion homepage under Inna Wanyin Lin.
+- **Margaret Li:** Linked from personal homepage.
+
+Google Scholar blocked direct automated page reads with HTTP 403/429 on several profiles. Verification above is based on maintainer confirmation, explicit links from members’ own pages, or indexed Scholar content, not a complete live read of their publication lists.
diff --git a/_planning/WEBSITE_SPEC.md b/_planning/WEBSITE_SPEC.md
new file mode 100644
index 0000000..25422d0
--- /dev/null
+++ b/_planning/WEBSITE_SPEC.md
@@ -0,0 +1,166 @@
+# Behavioral Data Science website: inventory and maintenance spec
+
+**Historical audit/research:** See [NEXT_STEPS.md](NEXT_STEPS.md) for the current React implementation roadmap and issue tracker. Earlier Jekyll/Astro recommendations and delivery phases below are superseded.
+
+**Selected stack:** React + Next.js, plain CSS, JSON/Markdown content, Python maintenance helpers, and GitHub Pages. The React migration is implemented locally; automated weekly discovery and production deployment remain pending. Earlier framework comparisons below are historical research.
+Draft for discussion, September 4, 2026. This document proposes a system; it does not enable jobs, publish content, or establish a verified current lab roster.
+
+## Recommendation
+
+Keep a static website backed by structured content in Git. Add a service that discovers publication candidates, checks identities and duplicates, and prepares a weekly review batch. Members can submit a DOI, paper URL, award announcement, or profile correction through a short form. An editor approves changes once, and the site generates all affected pages from the same records.
+
+Confirmed user decision: prepare a weekly batch for review before publishing. Automatic publication is a possible later option requiring a separate decision and an explicit, tested matching policy. Continue reviewing awards, affiliation changes, editorial summaries, and ambiguous matches. Automating collection is practical; assuming every external author match or award mention is correct is not.
+
+The current Jekyll site can support the first version. A visual redesign can follow independently; a framework migration is not required to solve stale content.
+
+Follow-up tooling research now recommends **Astro + TypeScript + Pagefind** for a full rebuild, with the same separate ingestion and weekly review pipeline. Keeping Jekyll remains the smaller modernization option. See [Modern stack options](MODERN_STACK_OPTIONS.md) for the comparison, feature mapping and service requirements; this is a proposal, not an implemented migration.
+
+**Latest user constraint:** Prefer a simple, familiar stack that future lab members can maintain. Astro is not selected. Evaluate modernizing Jekyll and managed WordPress alongside mainstream React/Next.js, distinguishing the work of editing content from maintaining code. Weekly human review remains the confirmed publishing policy.
+
+## Audit scope and baseline
+
+Inspected the local source, committed source at `d6a7b92de79642aee11c2c5bfe60c94588beae79`, and public home, team, and publication pages. The earlier GitHub check found that commit at remote `master`, dated December 1, 2025, with a successful Pages deployment. No tracked custom `.github` workflows were present in that commit.
+
+There are significant unpublished local changes. They consolidate navigation into homepage sections, remove the separate team/publication page source files, adjust roster visibility, and reorganize maintenance scripts. They must be reconciled deliberately before implementing the redesign. The local CODEBASE.md still references some deleted pages, so it is not a definitive inventory.
+
+| Content measure | Committed source | Local working copy |
+| --- | --- | --- |
+| Publication records | 47, spanning 2014–2024 | 47, spanning 2014–2024 |
+| Publications marked as highlights | 5 | 5 |
+| Publications with an award field | 3 | 3 |
+| People records | 18, including 8 marked inactive | 21, including 11 marked inactive |
+| Alumni list entries | 12 | 12 |
+| News records | 3; latest dated June 10, 2021 | Same |
+| Sponsor entries | 7 | 7 |
+
+These are record counts, not a verified current membership count. The public team page displays nine people, alongside its alumni list. Publications from 2025 onward are absent from the collection; that establishes a gap in site content, not the complete set of missing papers. A verified bibliography backfill remains to be done.
+
+## Existing feature inventory
+
+| Feature | Existing behavior and evidence | Renewal requirement |
+| --- | --- | --- |
+| Home and lab overview | Introduction, research themes, UW/Allen School affiliation, branding, recruitment copy, people, sponsor logos. `_pages/home.md`, `_layouts/homelay.html`, shared includes. | Refresh editorial text; surface recent papers and news from shared records. |
+| Navigation and responsive layout | Published navigation has Home, Team, Publications; Bootstrap mobile menu and grid. Local draft uses homepage anchors. `_includes/header.html`, `css/main.scss`. | Accessible navigation with stable URLs; homepage summaries can coexist with dedicated archive pages. |
+| Team directory | Headshots, names, roles, personal websites, priority ordering, inactive filtering. `_people/`, `_includes/group.md`. | One people dataset with verified identities, role history, affiliation dates, research interests, and profile pages. |
+| Visitors | Visitor fields and template logic exist. Committed visitor heading condition has a variable typo; local logic has been revised. | Support visitor dates/status without assuming the current section works as intended. |
+| Alumni | Separate YAML list with optional website and role/date text. `_data/alumni.yml`. | Derive alumni from people records; retain historical lab contributions. |
+| Publications | Full list ordered by year, author/venue/year text, thumbnails, PDFs. `_publications/`; committed `_pages/publications.md`, local `_includes/publications.md`. | Search/filter by person, year, topic, venue, and type; stable paper pages and external IDs. |
+| Research highlights | Curated publication selection with descriptive text and optional code links. | Keep editorial selection; avoid requiring a thumbnail or summary for ordinary new papers. |
+| Paper awards | Three records have award text displayed as badges. | Structured award records with exact award name, awarding body, year, recipients, linked paper, and evidence. |
+| News | Three manual YAML entries and an archive template. The public `/allnews/` route currently shows Page Not Found. Homepage news include is commented out in committed source. The source template renders entries in file order, not sorted by date. | Visible, date-sorted updates generated from approved events; ISO dates and an archive. |
+| Recruiting | Home has a postdoc document link and PhD application guidance. `/vacancies` source is placeholder text. | Reviewed opportunities with owner, expiry/review date, and application link. Do not assume existing openings are still active. |
+| Research/gallery pages | `/research/` and `/pictures/` sources are placeholders rather than substantive maintained sections. | Publish only when populated; add topic/project pages as content becomes available. |
+| Project release signup | `/idiofid/` source describes IdioFid-A and posts an email form to a Google Apps Script endpoint. | Preserve the URL and intended flow, or replace deliberately. Verify endpoint ownership and operation; no form was submitted in this audit. |
+| Sponsor recognition | Seven logos from YAML. | Keep editable sponsor records and review dates. |
+| Assets and downloads | Local PDFs, publication thumbnails, headshots, logos and other downloads. | Preserve existing linked asset URLs; allow an external paper URL and fallback image. |
+| Site metadata and utilities | Titles, descriptions, canonical tag, favicon, custom 404, credits and UW footer. A legacy Universal Analytics snippet is present. | Configure canonical domain and metadata, check indexing/accessibility, decide whether analytics is wanted and validate any replacement. Presence of a snippet does not prove working analytics. |
+| Contributor tools | Python person-entry and BibTeX-to-publication helpers; paper helper requires a PDF and thumbnail. Manual YAML news editing. | DOI/URL intake, metadata lookup, optional assets, validation, preview, review history. |
+| Hosting and deployment | Jekyll/GitHub Pages; documented branch/PR workflow; latest checked deployment succeeded. | Continue automatic deployment of approved changes, with validation and rollback. |
+
+Not found in the inspected implementation: publication search/filter controls, automated literature discovery, person-to-paper identity links, a general honors directory, structured project/dataset catalog, editorial review inbox, content freshness monitoring, or an authenticated content editor.
+
+Public evidence: [home](https://behavioral-data.github.io/), [team](https://behavioral-data.github.io/team/), [publications](https://behavioral-data.github.io/publications/). Built-in browser verification confirmed Home/Team/Publications navigation, a Page Not Found response at `/allnews/`, and a visible email signup at `/idiofid/`. The form was not submitted. This was a content/source audit with focused browser checks, not a comprehensive visual, accessibility or integration QA pass.
+
+## Proposed visitor experience
+
+**Version 1:** Home, People, Publications, News & Awards, and Join/Contact. Home shows a concise lab description, selected work, and recent approved updates. People pages collect each member's papers, projects, and honors automatically. Publication cards offer DOI/publisher, preprint/PDF, code, dataset, project page, and BibTeX links where available. Missing optional assets should never block publishing a paper.
+
+**Later:** Curated research themes and project pages connecting people, papers, code, and datasets; photos if someone owns their upkeep; RSS for public updates. Keep the IdioFID release page and existing external links working throughout migration.
+
+Use dedicated archive URLs even if the homepage contains all key sections. Preserve `/team/`, `/publications/`, `/allnews/`, `/idiofid/`, and existing PDF links through retained routes or tested redirects. The current local consolidation needs these redirects before deployment.
+
+## Content model
+
+| Record | Minimum information |
+| --- | --- |
+| Person | Stable internal ID, preferred name, aliases, verified ORCID/OpenAlex/Semantic Scholar IDs when available, website, role, membership intervals, active/alumni/visitor state, profile review date. |
+| Publication | Internal ID, DOI/arXiv/provider IDs, title, ordered authors with internal person links when verified, venue, dates, preprint/accepted/published state, topic tags, external links, optional thumbnail and curated summary. |
+| Award | Exact title, awarding organization, date/year, recipients, optional paper/project, category, source URL and supporting excerpt, approval state. |
+| News event | Event type/date, headline/body, related entity IDs, source, editorial state. One event can appear on home, archive, and profile pages. |
+| Project | Title, short approved summary, people, papers, code, datasets, release status and external links. |
+| Opportunity | Role, application URL, owner, open/closed status, closing or review date. |
+| Editorial state | Source observations, last fetched/verified time, field-level overrides, approval/rejection history, and correction/suppression rules. |
+
+Separate imported observations from approved content and human overrides. An API refresh must not overwrite a corrected name, selected thumbnail, custom description, or rejected candidate. Keep reviewer notes, unpublished submissions, credentials, and signup addresses outside the public repository and generated site.
+
+## How updates work
+
+1. **Confirm the roster once.** Verify author IDs using personal/institutional pages and known papers. Track members beyond just the PI. Establish membership dates and how to treat work before joining or after leaving. Proposed default: archive lab-period work; allow explicitly linked continuing collaborations after departure.
+2. **Backfill.** Start with 2025–present, then reconcile older omissions. Query every verified member, including alumni needed for lab-period coverage. Import candidates into a review queue; do not label an entire name-search result set as lab work.
+3. **Discover weekly.** Use OpenAlex or Semantic Scholar author records for candidates; Crossref for publisher-deposited DOI metadata; arXiv for preprint discovery. Pick one primary provider during the pilot and add another only where measured coverage warrants it.
+4. **Normalize and match.** Prefer DOI and arXiv identifiers; preserve author order and publication state. Fuzzy title/author matching raises a review candidate, not an automatic merge. Link a preprint and its published version into one work with version records when evidence supports the relationship.
+5. **Prepare a review batch.** Show additions and changed fields, matched lab members, evidence, and conflicts. An editor can approve, edit, reject, or defer. A member can supply a DOI/URL or award source via a short form; the system fills the rest.
+6. **Publish once.** Approved records generate every relevant page, publication list, award badge, and optional news event. Use one event per meaningful change; do not create another announcement for a spelling correction or repeated import.
+7. **Check health.** Record each source's success/failure, candidate count, last successful sync, last approval, and last deploy. Keep the last good site on failure. Notify the designated owner about failures or overdue review batches; stay quiet on no-change runs.
+
+```mermaid
+flowchart LR
+ A[Scholarly APIs and member submissions] --> B[Normalize and match identities]
+ B --> C[Deduplicate and attach evidence]
+ C --> D[Review batch]
+ D --> E[Approved content in Git]
+ E --> F[Build and deploy]
+ F --> G[Home, people, papers, news and awards]
+```
+
+### Publication automation policy
+
+Initially review all additions. Potential later automatic additions require a verified author identity, an approved rule for lab relevance, an exact publication identifier, no duplicate/conflicting record, valid metadata and links, and no prior suppression. Preprints must remain visibly labeled. Name-only matches, ambiguous affiliation dates, author-profile merges, and changed titles/venues go to review.
+
+Publication dates and membership periods are evidence, not a complete definition of lab contribution: delayed publication and work spanning institutions require an override. Never silently delete a paper because one source no longer returns it. Flag corrections, withdrawals and retractions for review rather than treating them as ordinary metadata refreshes.
+
+### Awards, news, and people
+
+Use conference/award organization announcements, UW/Allen School news, and member-submitted evidence as the main inputs. A member's website may suggest a candidate that needs confirmation. Do not assume a literature index has complete coverage of personal honors or best-paper awards.
+
+AI can extract a draft award record and summarize a source, but an editor checks exact award type, recipients, year and wording. Distinguished paper, honorable mention, best paper and nomination remain distinct. Do not infer awards from citation counts or publish unsupported claims. Generate a linked news entry from an approved award so it only needs entering once.
+
+Review roster, titles, recruiting and sponsor text each quarter. Automated detection can suggest a change; it should not decide that someone left the lab based on a stale or missing page.
+
+## Technical and operating choices
+
+Use the existing Jekyll content collections for the first implementation, Python for ingestion/validation, and GitHub review/build/deployment. Begin with repository-native review to avoid building an admin system prematurely; add a small authenticated editor if reviewers need it. A member submission form should collect only the fields needed to prepare an update.
+
+Run the weekly workflow through a lab-owned scheduler or include an independent missed-run check. GitHub documents that public-repository schedules can be disabled after 60 days of inactivity, and scheduled runs can be delayed. A quiet lab website must not depend solely on an unchecked GitHub cron job. Select the scheduler and notification channel at implementation time; no monitor has been created by this spec.
+
+Use pagination, caching, incremental retrieval with a lookback window, occasional full reconciliation, retries/backoff, provider-specific limits, and a request budget. Track source licensing before importing full text or images; prefer metadata and external links. Store API credentials as service secrets, never in the client or public content. Treat fetched HTML and AI-produced text as untrusted input to sanitize and validate.
+
+Assign a primary maintainer and a backup, use lab-owned service accounts, and document credential renewal and rollback. Target a short weekly editorial review; measure effort during the pilot instead of promising zero maintenance. Exact service costs and access requirements depend on provider and hosting choices and must be checked when selecting them.
+
+## Delivery phases and acceptance criteria
+
+**Phase 1 — Reconcile and establish content.** Preserve current local work; agree on page structure and lab-work scope; verify roster/author IDs; normalize existing records; backfill missing papers and awards with sources. Produce a reviewed migration report and route/asset inventory.
+
+**Phase 2 — Pilot maintenance on the existing site.** Implement discovery, matching, deduplication, submission intake, one review batch, validation, build/deploy, and health tracking. Run at least two weekly review cycles and evaluate missed papers, false matches and editor time.
+
+**Phase 3 — Redesign.** Build the new visitor experience from approved records, retain redirects, and verify mobile/keyboard behavior, search, metadata and important external links. Add automatic publication only for a matching policy that passes the pilot review.
+
+Acceptance checks:
+
+- A reviewer-approved DOI import appears on the publication archive and each linked lab member's page, without manual page edits.
+- Reprocessing identical inputs produces no content diff, duplicate news event, or duplicate review request.
+- A preprint becoming published updates a linked work; different papers with similar titles remain distinguishable.
+- A same-name researcher and a post-departure unrelated paper cannot auto-publish under the default policy.
+- A paper with no PDF/thumbnail can publish with valid external links and a usable fallback layout.
+- Manual corrections and rejected candidates survive future syncs.
+- An award requires evidence and approval; all linked views display the same verified record.
+- API errors, missing scheduler runs and deployment failures are visible to an owner; existing published content stays available.
+- Approved test-set papers are all present; candidate false positives and unresolved matches are recorded for review. Do not claim exhaustive coverage solely because a sync succeeded.
+- Existing public routes and linked PDFs remain reachable, including IdioFID; its signup integration receives a separate authorized functional test.
+- A maintainer can undo a bad content change and redeploy using documented instructions.
+
+## Decisions for discussion
+
+1. Confirmed: review a weekly batch before publication. Future automatic publication remains undecided.
+2. Include preprints alongside published work with clear labels?
+3. Define lab work: membership-period work and continuing collaborations, or all work by current members?
+4. Who owns weekly review and the quarterly roster check, with whom as backup?
+5. Prefer GitHub review initially, or prioritize a web editor for contributors?
+
+## References for the proposed integrations
+
+- [OpenAlex authors](https://help.openalex.org/data/authors/): author identities, ORCID links, affiliations derived from works, and author-work lookup. Author identity still needs verification.
+- [Semantic Scholar API](https://www.semanticscholar.org/product/api): author/paper metadata and API access; [tutorial](https://webflow.semanticscholar.org/product/api/tutorial) covers author queries and batching.
+- [Crossref REST API](https://www.crossref.org/documentation/retrieve-metadata/rest-api/): publisher-deposited bibliographic metadata and DOI lookup.
+- [arXiv API manual](https://github.com/arXiv/arxiv-docs/blob/develop/source/help/api/user-manual.md): programmatic preprint discovery.
+- [GitHub schedule behavior](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule) and [workflow inactivity](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/disable-and-enable-workflows): scheduling limits and the 60-day inactivity rule.
diff --git a/_planning/migration-report.json b/_planning/migration-report.json
new file mode 100644
index 0000000..211df0a
--- /dev/null
+++ b/_planning/migration-report.json
@@ -0,0 +1,10 @@
+{
+ "people": 21,
+ "publications": 47,
+ "news": 3,
+ "missing_assets": [],
+ "repairs": [
+ "Corrected duplicated resources/pubpdfs prefix in xu2022GLOBEM PDF link."
+ ],
+ "asset_copy": "All legacy asset bytes verified before removing original paths."
+}
diff --git a/_plugins/markdown.rb b/_plugins/markdown.rb
deleted file mode 100644
index 727bf40..0000000
--- a/_plugins/markdown.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-=begin
- Jekyll tag to include Markdown text from _includes directory preprocessing with Liquid.
- Usage:
- {% markdown %}
- Dependency:
- - kramdown
-=end
-module Jekyll
- class MarkdownTag < Liquid::Tag
- def initialize(tag_name, text, tokens)
- super
- @text = text.strip
- end
- require "kramdown"
- def render(context)
- tmpl = File.read File.join Dir.pwd, "_includes", @text
- site = context.registers[:site]
- tmpl = (Liquid::Template.parse tmpl).render site.site_payload
- html = Kramdown::Document.new(tmpl).to_html
- end
- end
-end
-Liquid::Template.register_tag('markdown', Jekyll::MarkdownTag)
diff --git a/_publications/Gu2022UnderstandingAS.md b/_publications/Gu2022UnderstandingAS.md
deleted file mode 100644
index 7e70aa3..0000000
--- a/_publications/Gu2022UnderstandingAS.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-author: Ken Gu, Eunice Jun and Tim Althoff
-description: null
-highlight: 0
-journal: CHI
-pdf: Gu2022UnderstandingAS.pdf
-thumbnail: Gu2022UnderstandingAS.png
-title: Understanding and Supporting Debugging Workflows in Multiverse Analysis
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/Weld_Glenski_Althoff_2021.md b/_publications/Weld_Glenski_Althoff_2021.md
deleted file mode 100644
index 6ddd3d6..0000000
--- a/_publications/Weld_Glenski_Althoff_2021.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-abstractnote: As civil discourse increasingly takes place online, misinformation and
- the polarization of news shared in online communities have become ever more relevant
- concerns with real world harms across our society. Studying online news sharing
- at scale is challenging due to the massive volume of content which is shared by
- millions of users across thousands of communities. Therefore, existing research
- has largely focused on specific communities or specific interventions, such as bans.
- However, understanding the prevalence and spread of misinformation and polarization
- more broadly, across thousands of online communities, is critical for the development
- of governance strategies, interventions, and community design. Here, we conduct
- the largest study of news sharing on reddit to date, analyzing more than 550 million
- links spanning 4 years. We use non-partisan news source ratings from Media Bias/Fact
- Check to annotate links to news sources with their political bias and factualness.
- We find that, compared to left-leaning communities, right-leaning communities have
- 105% more variance in the political bias of their news sources, and more links to
- relatively-more biased sources, on average. We observe that reddit users’ voting
- and re-sharing behaviors generally decrease the visibility of extremely biased and
- low factual content, which receives 20% fewer upvotes and 30% fewer exposures from
- crossposts than more neutral or more factual content. This suggests that reddit
- is more resilient to low factual content than Twitter. We show that extremely biased
- and low factual content is very concentrated, with 99% of such content being shared
- in only 0.5% of communities, giving credence to the recent strategy of community-wide
- bans and quarantines.
-author: Weld, Galen and Glenski, Maria and Althoff, Tim
-description: Studying news shared online is challenging due to the massive volume of content which is shared. In this work, we conduct the largest study of news sharing to date, analyzing more than 550 million links to news articles posted on reddit over four years. Using non-partisan news source ratings of sources' political bias and factualness, we find that up- and down-voting mechanisms generally decrease the visibility of biased and low factual content, and that such content is very concentrated, being mostly shared in only a small fraction of all communities.
-highlight: 1
-journal: ICWSM
-month: May
-number: '1'
-pages: 796-807
-pdf: Weld_Glenski_Althoff_2021.pdf
-award: Best Paper (Outstanding Analysis)
-thumbnail: Weld_Glenski_Althoff_2021.jpg
-title: Political Bias and Factualness in News Sharing across more than 100,000 Online
- Communities
-url: https://ojs.aaai.org/index.php/ICWSM/article/view/18104
-volume: '15'
-year: '2021'
----
\ No newline at end of file
diff --git a/_publications/althoff2014ask.md b/_publications/althoff2014ask.md
deleted file mode 100644
index 8f16bba..0000000
--- a/_publications/althoff2014ask.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-author: Althoff, Tim and Danescu-Niculescu-Mizil, Cristian and Jurafsky, Dan
-booktitle: ICWSM
-description: ''
-highlight: 0
-pdf: althoff2014ask.pdf
-thumbnail: althoff2014ask.png
-title: 'How to Ask for a Favor: A Case Study on the Success of Altruistic Requests.'
-year: '2014'
----
\ No newline at end of file
diff --git a/_publications/althoff2015donor.md b/_publications/althoff2015donor.md
deleted file mode 100644
index ff612e1..0000000
--- a/_publications/althoff2015donor.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-author: Althoff, Tim and Leskovec, Jure
-booktitle: WWW
-description: ''
-highlight: 0
-optbooktitle: Proceedings of the 24th International Conference on World Wide Web
-optorganization: International World Wide Web Conferences Steering Committee
-optpages: 34--44
-pdf: althoff2015donor.pdf
-thumbnail: althoff2015donor.png
-title: 'Donor retention in online crowdfunding communities: A case study of DonorsChoose.org'
-year: '2015'
----
\ No newline at end of file
diff --git a/_publications/althoff2016counseling.md b/_publications/althoff2016counseling.md
deleted file mode 100644
index ca6e863..0000000
--- a/_publications/althoff2016counseling.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-author: Althoff, Tim and Clark, Kevin and Leskovec, Jure
-description: ''
-highlight: 0
-journal: TACL
-optjournal: Transactions of the Association for Computational Linguistics
-pdf: althoff2016counseling.pdf
-thumbnail: althoff2016counseling.png
-title: 'Large-scale Analysis of Counseling Conversations: {An} Application of Natural
- Language Processing to Mental Health'
-year: '2016'
----
\ No newline at end of file
diff --git a/_publications/althoff2016onlineappendix.md b/_publications/althoff2016onlineappendix.md
deleted file mode 100644
index 5db51e2..0000000
--- a/_publications/althoff2016onlineappendix.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-author: Althoff, Tim and Horvitz, Eric and White, Ryen W and Zeitzer, Jamie
-booktitle: WWW
-description: ''
-highlight: 0
-note: \url{http://stanford.io/2ejFPhD}
-optauthor: Althoff, Tim and others
-pdf: althoff2016onlineappendix.pdf
-thumbnail: althoff2016onlineappendix.png
-title: 'Harnessing the Web for Population-Scale Physiological Sensing: A Case Study
- of Sleep and Performance. '
-year: '2017'
----
\ No newline at end of file
diff --git a/_publications/althoff2016pokemon.md b/_publications/althoff2016pokemon.md
deleted file mode 100644
index 0feceee..0000000
--- a/_publications/althoff2016pokemon.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-author: Althoff, Tim and White, Ryen W and Horvitz, Eric
-description: ''
-highlight: 0
-journal: JMIR
-optday: '06'
-optdoi: 10.2196/jmir.6759
-optmonth: Dec
-optnote: doi:10.2196/jmir.6759
-optnumber: '12'
-optpages: e315
-opttitle: 'Influence of Pokémon Go on Physical Activity: Study and Implications'
-opturl: http://www.jmir.org/2016/12/e315/
-optvolume: '18'
-pdf: althoff2016pokemon.pdf
-thumbnail: althoff2016pokemon.png
-title: Influence of Pokémon Go on Physical Activity
-year: '2016'
----
\ No newline at end of file
diff --git a/_publications/althoff2017large.md b/_publications/althoff2017large.md
deleted file mode 100644
index b387b24..0000000
--- a/_publications/althoff2017large.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-author: Althoff, Tim and Sosic, Rok and Hicks, Jennifer L and King, Abby C and Delp,
- Scott L and Leskovec, Jure
-description: ''
-highlight: 0
-journal: Nature
-optpublisher: Nature Research
-pdf: althoff2017large.pdf
-thumbnail: althoff2017large.png
-title: Large-scale physical activity data reveal worldwide activity inequality
-year: '2017'
----
\ No newline at end of file
diff --git a/_publications/althoff2017onlineactions.md b/_publications/althoff2017onlineactions.md
deleted file mode 100644
index 3096378..0000000
--- a/_publications/althoff2017onlineactions.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-author: Althoff, Tim and Jindal, Pranav and Leskovec, Jure
-booktitle: WSDM
-description: ''
-highlight: 0
-pdf: althoff2017onlineactions.pdf
-thumbnail: althoff2017onlineactions.png
-title: 'Online Actions with Offline Impact: How Online Social Networks Influence Online
- and Offline User Behavior'
-year: '2017'
----
\ No newline at end of file
diff --git a/_publications/althoff2017population.md b/_publications/althoff2017population.md
deleted file mode 100644
index 2e4e9d4..0000000
--- a/_publications/althoff2017population.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-author: Althoff, Tim
-description: ''
-highlight: 0
-journal: IEEE Pervasive Computing
-number: '4'
-pages: 75--79
-pdf: althoff2017population.pdf
-publisher: IEEE
-thumbnail: althoff2017population.png
-title: Population-Scale Pervasive Health
-volume: '16'
-year: '2017'
----
\ No newline at end of file
diff --git a/_publications/althoff2018psychomotor.md b/_publications/althoff2018psychomotor.md
deleted file mode 100644
index 27751c5..0000000
--- a/_publications/althoff2018psychomotor.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-author: Althoff, Tim and Horvitz, Eric and White, Ryen W
-description: ''
-highlight: 0
-journal: 'NPJ Digital Medicine'
-optnumber: '1'
-optpages: '3'
-optpublisher: Nature Publishing Group
-optvolume: '1'
-pdf: althoff2018psychomotor.pdf
-thumbnail: althoff2018psychomotor.png
-title: Psychomotor function measured via online activity predicts motor vehicle fatality
- risk
-year: '2018'
----
\ No newline at end of file
diff --git a/_publications/althoff2022diet.md b/_publications/althoff2022diet.md
deleted file mode 100644
index 2e72e78..0000000
--- a/_publications/althoff2022diet.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-author: Althoff, Tim and Nilforoshan, Hamed and Hua, Jenna and Leskovec, Jure
-description: null
-highlight: 0
-journal: Nature Communications
-number: '1'
-optpublisher: Nature Publishing Group UK London
-pages: '267'
-pdf: althoff2022diet.pdf
-thumbnail: althoff2022diet.png
-title: Large-scale diet tracking data reveal disparate associations between food environment
- and diet
-volume: '13'
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/althoffModeration.md b/_publications/althoffModeration.md
deleted file mode 100644
index fcd1c18..0000000
--- a/_publications/althoffModeration.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-author: David Wadden and Tal August and Qisheng Li and Tim Althoff
-description: ''
-highlight: 0
-journal: ICWSM
-award: Best Paper (Outstanding Study Design)
-note: Under submission.
-pdf: althoffModeration.pdf
-thumbnail: althoffModeration.png
-title: The Effect of Moderation on Online Mental Health Conversations
-year: '2021'
----
\ No newline at end of file
diff --git a/_publications/althoffPocketskills.md b/_publications/althoffPocketskills.md
deleted file mode 100644
index 63c761b..0000000
--- a/_publications/althoffPocketskills.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-author: Jessica Schroeder and Jina Suh and Chelsey Wilks and Mary Czerwinski and Sean
- Munson and James Fogarty and Tim Althoff
-description: ''
-highlight: 0
-journal: EAI Pervasive Health
-note: Under submission.
-pdf: althoffPocketskills.pdf
-thumbnail: althoffPocketskills.png
-title: Data-Driven Implications for Translating Evidence-Based Psychotherapies into
- Technology-Delivered Interventions
-year: '2020'
----
\ No newline at end of file
diff --git a/_publications/althoffTalklifeEngagement.md b/_publications/althoffTalklifeEngagement.md
deleted file mode 100644
index 1081250..0000000
--- a/_publications/althoffTalklifeEngagement.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-author: Ashish Sharma and Monojit Choudhury and Tim Althoff and Amit Sharma
-description: ''
-highlight: 0
-journal: ICWSM
-note: Under submission.
-pdf: althoffTalklifeEngagement.pdf
-thumbnail: althoffTalklifeEngagement.png
-title: 'Engagement Patterns of Peer-to-Peer Interactions on Mental Health Platforms'
-year: '2020'
----
diff --git a/_publications/gordonactivity2019.md b/_publications/gordonactivity2019.md
deleted file mode 100644
index b2df911..0000000
--- a/_publications/gordonactivity2019.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-abstract: 'Activity tracking apps often make use of goals as one of their core motivational
- tools. There are two critical components to this tool: setting a goal, and subsequently
- achieving that goal. Despite its crucial role in how a number of prominent self-tracking
- apps function, there has been relatively little investigation of the goal-setting
- and achievement aspects of self-tracking apps. Here we explore this issue, investigating
- a particular goal setting and achievement process that is extensive, recorded, and
- crucial for both the app and its users'' success: weight loss goals in MyFitnessPal.
- We present a large-scale study of 1.4 million users and weight loss goals, allowing
- for an unprecedented detailed view of how people set and achieve their goals. We
- find that, even for difficult long-term goals, behavior within the first 7 days
- predicts those who ultimately achieve their goals, that is, those who lose at least
- as much weight as they set out to, and those who do not. For instance, high amounts
- of early weight loss, which some researchers have classified as unsustainable, leads
- to higher goal achievement rates. We also show that early food intake, self-monitoring
- motivation, and attitude towards the goal are important factors. We then show that
- we can use our findings to predict goal achievement with an accuracy of 79% ROC
- AUC just 7 days after a goal is set. Finally, we discuss how our findings could
- inform steps to improve goal achievement in self-tracking apps.'
-address: New York, NY, USA
-author: Gordon, Mitchell and Althoff, Tim and Leskovec, Jure
-booktitle: ''
-description: ''
-doi: 10.1145/3308558.3313432
-highlight: 0
-isbn: '9781450366748'
-location: San Francisco, CA, USA
-numpages: '12'
-pages: 571–582
-pdf: gordonactivity2019.pdf
-publisher: Association for Computing Machinery
-series: WWW '19
-thumbnail: gordonactivity2019.png
-title: 'Goal-Setting And Achievement In Activity Tracking Apps: A Case Study Of MyFitnessPal'
-url: https://doi.org/10.1145/3308558.3313432
-year: '2019'
----
\ No newline at end of file
diff --git a/_publications/gu2024blade.md b/_publications/gu2024blade.md
deleted file mode 100644
index 9db80df..0000000
--- a/_publications/gu2024blade.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Gu, Ken and Shang, Ruoxi and Jiang, Ruien and Kuang, Keying and Lin, Richard-John and Althoff, Tim
-booktitle: Findings of the 2024 Conference on Empirical Methods in Natural Language Processing
-title: BLADE - Benchmarking Language Model Agents for Data-Driven Science
-year: '2024'
-pdf: guBLADEBenchmarkingLanguage2024a.pdf
-thumbnail: guBLADE.png
----
\ No newline at end of file
diff --git a/_publications/gu2024how_analysts.md b/_publications/gu2024how_analysts.md
deleted file mode 100644
index 23ceda0..0000000
--- a/_publications/gu2024how_analysts.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Gu, Ken and Grunde-McLaughlin, Madeleine and McNutt, Andrew M. and Heer, Jeffrey and Althoff, Tim
-booktitle: Proceedings of the 2024 CHI Conference on Human Factors in Computing Systems
-title: How Do Data Analysts Respond to AI Assistance? A Wizard-of-Oz Study
-year: '2024'
-pdf: guHowDoDataAnalysts2024.pdf
-thumbnail: guHowDoDataAnalysts.png
----
\ No newline at end of file
diff --git a/_publications/gu2024how_understand.md b/_publications/gu2024how_understand.md
deleted file mode 100644
index b331514..0000000
--- a/_publications/gu2024how_understand.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Gu, Ken and Shang, Ruoxi and Althoff, Tim and Wang, Chenglong and Drucker, Steven M.
-booktitle: Proceedings of the 2024 CHI Conference on Human Factors in Computing Systems
-title: How Do Analysts Understand and Verify AI-Assisted Data Analyses?
-year: '2024'
-pdf: guHowDoAnalystsUnderstand2024.pdf
-thumbnail: guHowDoDataAnalystsUnderstand.png
----
\ No newline at end of file
diff --git a/_publications/hicks2022leveraging.md b/_publications/hicks2022leveraging.md
deleted file mode 100644
index f8e20b5..0000000
--- a/_publications/hicks2022leveraging.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-author: Hicks, Jennifer L and Boswell, Melissa A and Althoff, Tim and Crum, Alia J
- and Ku, Joy P and Landay, James A and Moya, Paula ML and Murnane, Elizabeth L and
- Snyder, Michael P and King, Abby C and others
-description: null
-highlight: 0
-journal: Annual Review of Public Health
-pdf: hicks2022leveraging.pdf
-publisher: Annual Reviews
-thumbnail: hicks2022leveraging.png
-title: 'Leveraging Mobile Technology for Public Health Promotion: A Multidisciplinary
- Perspective'
-volume: '44'
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/kurashima2018tipas.md b/_publications/kurashima2018tipas.md
deleted file mode 100644
index 83cd762..0000000
--- a/_publications/kurashima2018tipas.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-author: Kurashima, Takeshi and Althoff, Tim and Leskovec, Jure
-booktitle: WWW
-description: ''
-highlight: 0
-note: Online Appendix. \url{http://bit.ly/2stjpB4}
-optjournal: foo
-optnote: \url{http://bit.ly/2gGUnWb}
-opttitle: '{Online appendix of this paper}'
-pdf: kurashima2018tipas.pdf
-thumbnail: kurashima2018tipas.png
-title: 'Modeling Interdependent and Periodic Real-World Action Sequences'
-year: '2018'
----
\ No newline at end of file
diff --git a/_publications/lin-etal-2022-gendered.md b/_publications/lin-etal-2022-gendered.md
deleted file mode 100644
index daaba19..0000000
--- a/_publications/lin-etal-2022-gendered.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-abstract: 'Mental health stigma prevents many individuals from receiving the appropriate
- care, and social psychology studies have shown that mental health tends to be overlooked
- in men. In this work, we investigate gendered mental health stigma in masked language
- models. In doing so, we operationalize mental health stigma by developing a framework
- grounded in psychology research: we use clinical psychology literature to curate
- prompts, then evaluate the models{''} propensity to generate gendered words. We
- find that masked language models capture societal stigma about gender in mental
- health: models are consistently more likely to predict female subjects than male
- in sentences about having a mental health condition (32{\%} vs. 19{\%}), and this
- disparity is exacerbated for sentences that indicate treatment-seeking behavior.
- Furthermore, we find that different models capture dimensions of stigma differently
- for men and women, associating stereotypes like anger, blame, and pity more with
- women with mental health conditions than with men. In showing the complex nuances
- of models{''} gendered mental health stigma, we demonstrate that context and overlapping
- dimensions of identity are important considerations when assessing computational
- models{''} social biases.'
-address: Abu Dhabi, United Arab Emirates
-author: Lin, Inna and Njoo, Lucille and Field, Anjalie and Sharma, Ashish and Reinecke,
- Katharina and Althoff, Tim and Tsvetkov, Yulia
-booktitle: EMNLP
-description: If you have ever considered using NLP for Mental Health applications,
- it’s vital to know what the models have inadvertently learned about people with
- mental health issues. In our EMNLP 2022 paper, we find that masked LMs capture societal
- stigma about gender in mental health.
-highlight: 1
-month: December
-pages: 2152--2170
-pdf: lin-etal-2022-gendered.pdf
-publisher: Association for Computational Linguistics
-thumbnail: lin-etal-2022-gendered.png
-title: Gendered Mental Health Stigma in Masked Language Models
-url: https://aclanthology.org/2022.emnlp-main.139
-year: '2022'
----
diff --git a/_publications/lin2024imbue.md b/_publications/lin2024imbue.md
deleted file mode 100644
index 8cc5d95..0000000
--- a/_publications/lin2024imbue.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Lin, Inna and Sharma, Ashish and Rytting, Christopher and Miner, Adam and Suh, Jina and Althoff, Tim
-booktitle: Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics
-title: IMBUE - Improving Interpersonal Effectiveness through Simulation and Just-in-time Feedback with Human-Language Model Interaction
-year: '2024'
-pdf: linIMBUE2024.pdf
-thumbnail: linIMBUE.png
----
\ No newline at end of file
diff --git a/_publications/liupaths2020.md b/_publications/liupaths2020.md
deleted file mode 100644
index 88c5c58..0000000
--- a/_publications/liupaths2020.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-abstract: Drawing reliable inferences from data involves many, sometimes arbitrary,
- decisions across phases of data collection, wrangling, and modeling. As different
- choices can lead to diverging conclusions, understanding how researchers make analytic
- decisions is important for supporting robust and replicable analysis. In this study,
- we pore over nine published research studies and conduct semi-structured interviews
- with their authors. We observe that researchers often base their decisions on methodological
- or theoretical concerns, but subject to constraints arising from the data, expertise,
- or perceived interpretability. We confirm that researchers may experiment with choices
- in search of desirable results, but also identify other reasons why researchers
- explore alternatives yet omit findings. In concert with our interviews, we also
- contribute visualizations for communicating decision processes throughout an analysis.
- Based on our results, we identify design opportunities for strengthening end-to-end
- analysis, for instance via tracking and meta-analysis of multiple decision paths.
-address: New York, NY, USA
-author: Liu, Yang and Althoff, Tim and Heer, Jeffrey
-booktitle: 'CHI'
-description: ''
-doi: 10.1145/3313831.3376533
-highlight: 0
-isbn: '9781450367080'
-keywords: reproducibility, analytic decision making, garden of forking paths, data
- analysis, multiverse analysis, interview study
-location: Honolulu, HI, USA
-numpages: '14'
-pages: 1–14
-pdf: liupaths2020.pdf
-publisher: Association for Computing Machinery
-series: CHI '20
-thumbnail: liupaths2020.png
-title: 'Paths Explored, Paths Omitted, Paths Obscured: Decision Points & Selective
- Reporting in End-to-End Data Analysis'
-url: https://doi.org/10.1145/3313831.3376533
-year: '2020'
----
\ No newline at end of file
diff --git a/_publications/merrill2024language.md b/_publications/merrill2024language.md
deleted file mode 100644
index 2946c98..0000000
--- a/_publications/merrill2024language.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Merrill, Mike A. and Tan, Mingtian and Gupta, Vinayak and Hartvigsen, Tom and Althoff, Tim
-booktitle: Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing
-title: Language Models Still Struggle to Zero-shot Reason about Time Series
-year: '2024'
-pdf: merrillLanguageModelsStill2024.pdf
-thumbnail: merrillLanguageModels.png
----
\ No newline at end of file
diff --git a/_publications/merrillHomekit2020BenchmarkTime2023.md b/_publications/merrillHomekit2020BenchmarkTime2023.md
deleted file mode 100644
index 1fb10e0..0000000
--- a/_publications/merrillHomekit2020BenchmarkTime2023.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-abstract: 'Despite increased interest in wearables as tools for detecting various
- health conditions, there are not as of yet any large public benchmarks for such
- mobile sensing data. The few datasets that are available do not contain data from
- more than dozens of individuals, do not contain high-resolution raw data or do not
- include dataloaders for easy integration into machine learning pipelines. Here,
- we present Homekit2020: the first large-scale public benchmark for time series classification
- of wearable sensor data. Our dataset contains over 14 million hours of minute-level
- multimodal FitBit data, symptom reports, and ground-truth laboratory PCR influenza
- test results, along with an evaluation framework that mimics realistic model deployments
- and efficiently characterizes statistical uncertainty in model selection in the
- presence of extreme class imbalance. Furthermore, we implement and evaluate nine
- neural and non-neural time series classification models on our benchmark across
- 450 total training runs in order to establish state of the art performance.'
-author: Merrill, Mike A and Safranchik, Esteban and Kolbeinsson, Arinbjorn and Gade,
- Piyusha and Ramirez, Ernesto and Schmidt, Ludwig and Foshchini, Luca and Althoff,
- Tim
-description: 'Despite increased interest in wearables as tools for detecting various
- health conditions, there are not as of yet any large public benchmarks for such
- mobile sensing data. Our dataset contains over 14 million hours of minute-level
- multimodal FitBit data, symptom reports, and ground-truth laboratory PCR influenza
- test results, along with an evaluation framework that mimics realistic model deployments
- and efficiently characterizes statistical uncertainty in model selection in the
- presence of extreme class imbalance.'
-highlight: 1
-code: https://github.com/behavioral-data/Homekit2020
-file: /Users/michaelmerrill/Zotero/storage/S72M77YC/Merrill et al. - Homekit2020 A
- Benchmark for Time Series Classific.pdf
-journal: Conference on Health, Inference, and Learning
-langid: english
-month: March
-pdf: merrillHomekit2020BenchmarkTime2023.pdf
-thumbnail: merrillHomekit2020BenchmarkTime2023.png
-title: 'Homekit2020: A Benchmark for Time Series Classification on a Large
- Mobile Sensing Dataset with Laboratory Tested Ground Truth of Influenza
- Infections'
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/merrillSelfsupervisedPretrainingTransfer2023.md b/_publications/merrillSelfsupervisedPretrainingTransfer2023.md
deleted file mode 100644
index 43f2d87..0000000
--- a/_publications/merrillSelfsupervisedPretrainingTransfer2023.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-abstract: Detailed mobile sensing data from phones, watches, and fitness trackers
- offer an unparalleled opportunity to quantify and act upon previously unmeasurable
- behavioral changes in order to improve individual health and accelerate responses
- to emerging diseases. Unlike in natural language processing and computer vision,
- deep representation learning has yet to broadly impact this domain, in which the
- vast majority of research and clinical applications still rely on manually defined
- features and boosted tree models or even forgo predictive modeling altogether due
- to insufficient accuracy. This is due to unique challenges in the behavioral health
- domain, including very small datasets (\textasciitilde 10\^1 participants), which
- frequently contain missing data, consist of long time series with critical long-range
- dependencies (length{$>$}10\^4), and extreme class imbalances ({$>$}10\^3:1).
-archiveprefix: arxiv
-author: Merrill, Mike A. and Althoff, Tim
-description: null
-eprint: '2205.13607'
-file: /Users/michaelmerrill/Zotero/storage/QRXUFB52/Merrill and Althoff - 2022 - Self-supervised
- Pretraining and Transfer Learning .pdf;/Users/michaelmerrill/Zotero/storage/TNEAQ9SK/2205.html
-highlight: 0
-journal: Conference on Health, Inference, and Learning
-keywords: Computer Science - Human-Computer Interaction,Computer Science - Machine
- Learning
-month: March
-pdf: merrillSelfsupervisedPretrainingTransfer2023.pdf
-primaryclass: cs
-thumbnail: merrillSelfsupervisedPretrainingTransfer2023.png
-title: Self-Supervised Pretraining and Transfer Learning Enable Flu and COVID-19
- Predictions in Small Mobile Sensing Datasets
-urldate: '2022-06-02'
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/merrill_multiverse_2021.md b/_publications/merrill_multiverse_2021.md
deleted file mode 100644
index 7e1e529..0000000
--- a/_publications/merrill_multiverse_2021.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-abstract: Data analyses are based on a series of “decision points” including data
- filtering, feature operationalization and selection, model specification, and parametric
- assumptions. “Multiverse Analysis” research has shown that a lack of exploration
- of these decisions can lead to non-robust conclusions based on highly sensitive
- decision points. Importantly, even if myopic analyses are technically correct, analysts’
- focus on one set of decision points precludes them from exploring alternate formulations
- that may produce very different results. Prior work has also shown that analysts’
- exploration is often limited based on their training, domain, and personal experience.
- However, supporting analysts in exploring alternative approaches is challenging
- and typically requires expert feedback that is costly and hard to scale.
-address: Virtual Event Singapore
-author: Merrill, Mike A. and Zhang, Ge and Althoff, Tim
-booktitle: KDD
-description: Data analyses are based on a series of “decision points” including data
- filtering, feature operationalization and selection, model specification, and parametric
- assumptions. In this work we mine Kaggle for hundreds of thousands of decision points
- and train a novel language model to suggest alternative analyses.
-doi: 10.1145/3447548.3467455
-file: Merrill et al. - 2021 - MULTIVERSE Mining Collective Data Science Knowled.pdf:/Users/michaelmerrill/Zotero/storage/5SIZTGV6/Merrill
- et al. - 2021 - MULTIVERSE Mining Collective Data Science Knowled.pdf:application/pdf
-highlight: 0
-isbn: 978-1-4503-8332-5
-language: en
-month: August
-pages: 1212--1222
-pdf: merrill_multiverse_2021.pdf
-publisher: ACM
-shorttitle: '{MULTIVERSE}'
-thumbnail: merrill_multiverse_2021.png
-title: 'MULTIVERSE: Mining Collective Data Science Knowledge from Code on the Web
- to Suggest Alternative Analysis Approaches'
-url: https://dl.acm.org/doi/10.1145/3447548.3467455
-urldate: '2021-08-30'
-year: '2021'
----
\ No newline at end of file
diff --git a/_publications/mezlini2021estimating.md b/_publications/mezlini2021estimating.md
deleted file mode 100644
index bd4d363..0000000
--- a/_publications/mezlini2021estimating.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-author: Mezlini, Aziz and Shapiro, Allison and Daza, Eric J and Caddigan, Eamon and
- Ramirez, Ernesto and Althoff, Tim and Foschini, Luca
-description: null
-highlight: 0
-journal: JAMA Network Open
-optpublisher: ''
-pdf: mezlini2021estimating.pdf
-thumbnail: mezlini2021estimating.png
-title: Estimating the Burden of Influenza on Daily Activity at Population Scale Using
- Commercial Wearable Sensors
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/miner2022computational.md b/_publications/miner2022computational.md
deleted file mode 100644
index 3ded42d..0000000
--- a/_publications/miner2022computational.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-author: Miner, Adam S and Fleming, Scott L and Haque, Albert and Fries, Jason A and
- Althoff, Tim and Wilfley, Denise E and Agras, W Stewart and Milstein, Arnold and
- Hancock, Jeff and Asch, Steven M and others
-description: null
-highlight: 0
-journal: npj Mental Health Research
-number: '1'
-optpublisher: Nature Publishing Group UK London
-pages: '19'
-pdf: miner2022computational.pdf
-thumbnail: miner2022computational.png
-title: A computational approach to measure the linguistic characteristics of psychotherapy
- timing, responsiveness, and consistency
-volume: '1'
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/sefidgarpassively2020.md b/_publications/sefidgarpassively2020.md
deleted file mode 100644
index 5c59f98..0000000
--- a/_publications/sefidgarpassively2020.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-abstract: 'A deep understanding of how discrimination impacts psychological health
- and well-being of students could allow us to better protect individuals at risk
- and support those who encounter discrimination. While the link between discrimination
- and diminished psychological and physical well-being is well established, existing
- research largely focuses on chronic discrimination and long-term outcomes. A better
- understanding of the short-term behavioral correlates of discrimination events could
- help us to concretely quantify such experiences, which in turn could support policy
- and intervention design. In this paper we specifically examine, for the first time,
- what behaviors change and in what ways in relation to discrimination. We use actively-reported
- and passively-measured markers of health and well-being in a sample of 209 first-year
- college students over the course of two academic quarters. We examine changes in
- indicators of psychological state in relation to reports of unfair treatment in
- terms of five categories of behaviors: physical activity, phone usage, social interaction,
- mobility, and sleep. We find that students who encounter unfair treatment become
- more physically active, interact more with their phone in the morning, make more
- calls in the evening, and spend more time in bed on the day of the event. Some of
- these patterns continue the next day. Our results further our understanding of the
- impact of discrimination and can inform intervention work.'
-address: New York, NY, USA
-articleno: '114'
-author: Sefidgar, Yasaman S. and Seo, Woosuk and Kuehn, Kevin S. and Althoff, Tim
- and Browning, Anne and Riskin, Eve and Nurius, Paula S. and Dey, Anind K. and Mankoff,
- Jennifer
-description: ''
-doi: 10.1145/3359216
-highlight: 0
-issue_date: November 2019
-journal: 'CSCW'
-keywords: discrimination, mobile health, microaggression, mobile sensing
-month: November
-number: CSCW
-numpages: '29'
-pdf: sefidgarpassively2020.pdf
-publisher: Association for Computing Machinery
-thumbnail: sefidgarpassively2020.png
-title: Passively-Sensed Behavioral Correlates of Discrimination Events in College
- Students
-url: https://doi.org/10.1145/3359216
-volume: '3'
-year: '2019'
----
\ No newline at end of file
diff --git a/_publications/shameli2017gamification.md b/_publications/shameli2017gamification.md
deleted file mode 100644
index f01110a..0000000
--- a/_publications/shameli2017gamification.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-author: Shameli, Ali and Althoff, Tim and Saberi, Amin and Leskovec, Jure
-booktitle: WWW
-description: ''
-highlight: 0
-optbooktitle: Proceedings of the 26th International Conference on World Wide Web Companion
-optorganization: International World Wide Web Conferences Steering Committee
-optpages: 455--463
-pdf: shameli2017gamification.pdf
-thumbnail: shameli2017gamification.png
-title: 'How gamification affects physical activity: Large-scale analysis of walking
- challenges in a mobile application'
-year: '2017'
----
\ No newline at end of file
diff --git a/_publications/sharma2020computational.md b/_publications/sharma2020computational.md
deleted file mode 100644
index e83bf98..0000000
--- a/_publications/sharma2020computational.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-archiveprefix: arXiv
-author: Ashish Sharma and Adam S. Miner and David C. Atkins and Tim Althoff
-journal: EMNLP
-description: ''
-eprint: '2009.08441'
-highlight: 0
-pdf: sharma2020computational.pdf
-primaryclass: cs.CL
-thumbnail: sharma2020computational.png
-title: A Computational Approach to Understanding Empathy Expressed in Text-Based Mental
- Health Support
-year: '2020'
----
\ No newline at end of file
diff --git a/_publications/sharma2021facilitating.md b/_publications/sharma2021facilitating.md
deleted file mode 100644
index a4fb670..0000000
--- a/_publications/sharma2021facilitating.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-author: Sharma, Ashish and Lin, Inna W and Miner, Adam S and Atkins, David C and Althoff,
- Tim
-booktitle: WWW
-award: Best Paper (single award across all 1736 submissions)
-description: Access to mental health care is a global challenge that online peer support
- platforms like TalkLife can help mitigate. Millions of people seek and provide support
- online but they struggle to have effective conversations. In this paper, we work
- towards improving empathy in online mental health support conversations. We introduce
- empathic rewriting, a new task for transforming low-empathy conversations to higher
- empathy. We propose PARTNER, a deep reinforcement learning agent that learns to
- make sentence-level edits to conversations in order to increase the expressed level
- of empathy while maintaining conversation quality through specificity, fluency,
- and diversity.
-highlight: 0
-pdf: sharma2021facilitating.pdf
-thumbnail: sharma2021facilitating.png
-title: 'Towards Facilitating Empathic Conversations in Online Mental Health Support:
- A Reinforcement Learning Approach'
-year: '2021'
----
diff --git a/_publications/sharma2023human.md b/_publications/sharma2023human.md
deleted file mode 100644
index fcbd869..0000000
--- a/_publications/sharma2023human.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-author: Sharma, Ashish and Lin, Inna W and Miner, Adam S and Atkins, David C and Althoff,
- Tim
-description: How can AI help improve access to mental health care? Our Nature Machine
- Intelligence paper shows that human-AI collaboration can empower people to respond
- more empathically in online peer-to-peer mental health support.
-highlight: 1
-journal: Nature Machine Intelligence
-pages: 1--12
-pdf: sharma2023human.pdf
-publisher: Nature Publishing Group UK London
-thumbnail: sharma2023human.png
-title: Human-AI Collaboration Enables More Empathic Conversations in Text-based Peer-to-Peer
- Mental Health Support
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/sharma2024computational.md b/_publications/sharma2024computational.md
deleted file mode 100644
index 3b253a7..0000000
--- a/_publications/sharma2024computational.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Chiu, Yu Ying* and Sharma, Ashish* and Lin, Inna and Althoff, Tim
-booktitle: Preprint
-title: A Computational Framework for Behavioral Assessment of LLM Therapists
-year: '2024'
-pdf: sharma2024computational.pdf
-thumbnail: sharmaComputational.png
----
\ No newline at end of file
diff --git a/_publications/sharma2024facilitating.md b/_publications/sharma2024facilitating.md
deleted file mode 100644
index 33d1043..0000000
--- a/_publications/sharma2024facilitating.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Sharma, Ashish and Rushton, Kevin and Lin, Inna and Nguyen, Theresa and Althoff, Tim
-booktitle: Proceedings of the 2024 CHI Conference on Human Factors in Computing Systems
-title: Facilitating Self-Guided Mental Health Interventions Through Human-Language Model Interaction - A Case Study of Cognitive Restructuring
-year: '2024'
-pdf: sharmaFacilitatingSelf-Guided2024.pdf
-thumbnail: sharmafacilitating.png
----
\ No newline at end of file
diff --git a/_publications/suh2020populationscale.md b/_publications/suh2020populationscale.md
deleted file mode 100644
index 7be8617..0000000
--- a/_publications/suh2020populationscale.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-archiveprefix: arXiv
-author: Jina Suh and Eric Horvitz and Ryen W. White and Tim Althoff
-description: The COVID-19 pandemic has fundamentally changed our lives beyond just our physical health. To understand the impact of the pandemic and associated policy decisions on a multitude of human needs, we propose a computational methodology, building on Maslow's hierarchy of needs, that can capture a holistic view of relative changes in needs following the pandemic through a difference-in-differences approach that corrects for seasonality and volume variations. When applied to over 35 billion search interactions spanning over 36000 ZIP codes in the US, we found that the expression of basic human needs has increased exponentially while higher-level aspirations declined, that the durations of shelter-in-place mandates significantly impacted social-emotional needs, and that there are potential barriers to meeting critical needs online.
-eprint: "2008.07045"
-highlight: 0
-pdf: suh2020populationscale.pdf
-primaryclass: cs.CY
-journal: WSDM
-thumbnail: suh2020populationscale.png
-title:
- "Population-Scale Study of Human Needs During the COVID-19 Pandemic: Analysis
- and Implications"
-year: "2021"
----
diff --git a/_publications/suhDisparateImpactsOnline2022.md b/_publications/suhDisparateImpactsOnline2022.md
deleted file mode 100644
index 06fe78c..0000000
--- a/_publications/suhDisparateImpactsOnline2022.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-abstract: Abstract The COVID-19 pandemic has stimulated important changes in online
- information access as digital engagement became necessary to meet the demand for
- health, economic, and educational resources. Our analysis of 55 billion everyday
- web search interactions during the pandemic across 25,150 US ZIP codes reveals that
- the extent to which different communities of internet users enlist digital resources
- varies based on socioeconomic and environmental factors. For example, we find that
- ZIP codes with lower income intensified their access to health information to a
- smaller extent than ZIP codes with higher income. We show that ZIP codes with higher
- proportions of Black or Hispanic residents intensified their access to unemployment
- resources to a greater extent, while revealing patterns of unemployment site visits
- unseen by the claims data. Such differences frame important questions on the relationship
- between differential information search behaviors and the downstream real-world
- implications on more and less advantaged populations.
-author: Suh, Jina and Horvitz, Eric and White, Ryen W. and Althoff, Tim
-description: The pandemic prompted increased digital engagement for health, economic, and educational resources. Analyzing 55 billion web searches across 25,150 US ZIP codes, we found differing use of digital resources based on socioeconomic and environmental factors. Lower-income areas accessed health information less than higher-income ones. ZIP codes with more Black or Hispanic residents used unemployment resources more, with unique patterns. These disparities raise important questions about the impact of information search behaviors on disadvantaged populations.
-doi: 10.1038/s41467-022-34592-z
-file: Suh et al. - 2022 - Disparate impacts on online information access dur.pdf:/Users/michaelmerrill/Zotero/storage/L83KGF2X/Suh
- et al. - 2022 - Disparate impacts on online information access dur.pdf:application/pdf
-highlight: 1
-issn: 2041-1723
-journal: Nature Communications
-language: en
-month: November
-number: '1'
-pages: '7094'
-pdf: suhDisparateImpactsOnline2022.pdf
-thumbnail: suhDisparateImpactsOnline2022.png
-title: Disparate impacts on online information access during the Covid-19 pandemic
-url: https://www.nature.com/articles/s41467-022-34592-z
-urldate: '2023-05-08'
-volume: '13'
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/weld2022adjusting_confounders.md b/_publications/weld2022adjusting_confounders.md
deleted file mode 100644
index 896c2dc..0000000
--- a/_publications/weld2022adjusting_confounders.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-author: Galen Weld, Peter West, Maria Glenski, David Arbour, Ryan Rossi, and Tim Althoff
-booktitle: ICWSM
-description: null
-highlight: 0
-pdf: weld2022adjusting_confounders.pdf
-thumbnail: weld2022adjusting_confounders.JPG
-title: 'Adjusting for Confounders with Text: Challenges and an Empirical Evaluation
- Framework for Causal Inference'
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/weld2022community_values.md b/_publications/weld2022community_values.md
deleted file mode 100644
index de3d061..0000000
--- a/_publications/weld2022community_values.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-author: Weld, Galen and Zhang, Amy X. and Althoff, Tim
-booktitle: ICWSM
-description: null
-highlight: 0
-pdf: weld2022community_values.pdf
-thumbnail: weld2022community_values.jpg
-title: What Makes Online Communities 'Better'? Measuring Values, Consensus, and Conflict
- across Thousands of Subreddits
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/weld2024making.md b/_publications/weld2024making.md
deleted file mode 100644
index ddd2221..0000000
--- a/_publications/weld2024making.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Weld, Galen and Zhang, Amy X. and Althoff, Tim
-booktitle: Proceedings of the Eighteenth International AAAI Conference on Web and Social Media
-title: Making Online Communities 'Better': A Taxonomy of Community Values on Reddit
-year: '2024'
-pdf: weldMakingOnlineCommunities2024.pdf
-thumbnail: weldmaking.png
----
\ No newline at end of file
diff --git a/_publications/xu2022GLOBEM.md b/_publications/xu2022GLOBEM.md
deleted file mode 100644
index 99210c3..0000000
--- a/_publications/xu2022GLOBEM.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-author: Xuhai Xu, Han Zhang, Yasaman Sefidgar, Yiyi Ren, Xin Liu, Woosuk Seo, Jennifer
- Brown, Kevin Kuehn, Mike A. Merrill, Paula Nurius, Shwetak Patel, Tim Althoff, Margaret
- E. Morris, Eve Riskin, Jennifer Mankoff, and Anind K. Dey
-copyright: Creative Commons Attribution 4.0 International
-doi: 10.48550/ARXIV.2211.02733
-journal: NeurIPS
-key: xu2022GLOBEM
-keywords: 'Machine Learning (cs.LG), Artificial Intelligence (cs.AI), Human-Computer
- Interaction (cs.HC), FOS: Computer and information sciences, FOS: Computer and information
- sciences, I.2.1; E.m, 68T09'
-pdf: resources/pubpdfs/xu2022GLOBEM.pdf
-publisher: arXiv
-thumbnail: xu2022GLOBEM.png
-title: ' Globem dataset: Multi-year datasets for longitudinal human behavior modeling
- generalization'
-url: https://arxiv.org/abs/2211.02733
-year: '2022'
----
\ No newline at end of file
diff --git a/_publications/xu2023globemimwut.md b/_publications/xu2023globemimwut.md
deleted file mode 100644
index 187344c..0000000
--- a/_publications/xu2023globemimwut.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-author: Xu, Xuhai and Liu, Xin and Zhang, Han and Wang, Weichen and Nepal, Subigya
- and Sefidgar, Yasaman and Seo, Woosuk and Kuehn, Kevin S and Huckins, Jeremy F and
- Morris, Margaret E and Nurius, Paula S. and Riskin, Eve A. and Patel, Shwetak and
- Althoff, Tim and Campell, Andrew and Dey, Anind K. and Mankoff, Jennifer C.
-description: null
-highlight: 0
-journal: ACM IMWUT
-optjournal: Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous
- Technologies
-optnumber: '4'
-optpages: 1--34
-optpublisher: ACM New York, NY, USA
-optvolume: '6'
-pdf: xu2023globemimwut.pdf
-thumbnail: xu2023globemimwut.png
-title: 'GLOBEM: Cross-Dataset Generalization of Longitudinal Human Behavior Modeling'
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/xuleveraging2019.md b/_publications/xuleveraging2019.md
deleted file mode 100644
index a03abc6..0000000
--- a/_publications/xuleveraging2019.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-abstract: The rate of depression in college students is rising, which is known to
- increase suicide risk, lower academic performance and double the likelihood of dropping
- out of school. Existing work on finding relationships between passively sensed behavior
- and depression, as well as detecting depression, mainly derives relevant unimodal
- features from a single sensor. However, co-occurrence of values in multiple sensors
- may provide better features, because such features can describe behavior in context.
- We present a new method to extract contextually filtered features from passively
- collected, time-series mobile data via association rule mining. After calculating
- traditional unimodal features from the data, we extract rules that relate unimodal
- features to each other using association rule mining. We extract rules from each
- class separately (e.g., depression vs. non-depression). We introduce a new metric
- to select a subset of rules that distinguish between the two classes. From these
- rules, which capture the relationship between multiple unimodal features, we automatically
- extract contextually filtered features. These features are then fed into a traditional
- machine learning pipeline to detect the class of interest (in our case, depression),
- defined by whether a student has a high BDI-II score at the end of the semester.
- The behavior rules generated by our methods are highly interpretable representations
- of differences between classes. Our best model uses contextually-filtered features
- to significantly outperform a standard model that uses only unimodal features, by
- an average of 9.7% across a variety of metrics. We further verified the generalizability
- of our approach on a second dataset, and achieved very similar results.
-address: New York, NY, USA
-articleno: '116'
-author: Xu, Xuhai and Chikersal, Prerna and Doryab, Afsaneh and Villalba, Daniella
- K. and Dutcher, Janine M. and Tumminia, Michael J. and Althoff, Tim and Cohen, Sheldon
- and Creswell, Kasey G. and Creswell, J. David and Mankoff, Jennifer and Dey, Anind
- K.
-description: ''
-doi: 10.1145/3351274
-highlight: 0
-issue_date: September 2019
-journal: IMWUT
-keywords: Passive sensing, Depression detection, Behavior mining, Association rule
- mining
-month: September
-number: '3'
-numpages: '33'
-pdf: xuleveraging2019.pdf
-publisher: Association for Computing Machinery
-thumbnail: xuleveraging2019.png
-title: Leveraging Routine Behavior and Contextually-Filtered Features for Depression
- Detection among College Students
-url: https://doi.org/10.1145/3351274
-volume: '3'
-year: '2019'
----
\ No newline at end of file
diff --git a/_publications/zech2023mhatsengagement.md b/_publications/zech2023mhatsengagement.md
deleted file mode 100644
index 8ca8346..0000000
--- a/_publications/zech2023mhatsengagement.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-author: Zech, James M and Johnson, Morgan and Pullman, Michael D and Hull, Thomas
- D and Althoff, Tim and Munson, Sean A and Fridling, Nicole and Litvin, Boris and
- Wu, Jerilyn and Areán, Patricia A
-description: null
-highlight: 0
-journal: JMIR Formative Research
-pdf: zech2023mhatsengagement.pdf
-thumbnail: zech2023mhatsengagement.png
-title: 'Mapping User Engagement in Digital Psychotherapy: An Integrative Engagement
- Model'
-year: '2023'
----
\ No newline at end of file
diff --git a/_publications/zhou2024correcting.md b/_publications/zhou2024correcting.md
deleted file mode 100644
index 95fcce2..0000000
--- a/_publications/zhou2024correcting.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-author: Zhou, Xinyi and Sharma, Ashish and Zhang, Amy and Althoff, Tim
-booktitle: Preprint
-title: Correcting misinformation on social media with a large language model
-year: '2024'
-pdf: zhouCorrectingMisinformation2024.pdf
-thumbnail: zhouCorrectingMis.png
----
\ No newline at end of file
diff --git a/_sass/_bootstrap.scss b/_sass/_bootstrap.scss
deleted file mode 100644
index 9babefd..0000000
--- a/_sass/_bootstrap.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-// Core variables and mixins
-@import "bootstrap/variables";
-@import "bootstrap/mixins";
-
-// Reset and dependencies
-@import "bootstrap/normalize";
-@import "bootstrap/print";
-@import "bootstrap/glyphicons";
-
-// Core CSS
-@import "bootstrap/scaffolding";
-@import "bootstrap/type";
-@import "bootstrap/code";
-@import "bootstrap/grid";
-@import "bootstrap/tables";
-@import "bootstrap/forms";
-@import "bootstrap/buttons";
-
-// Components
-@import "bootstrap/component-animations";
-@import "bootstrap/dropdowns";
-@import "bootstrap/button-groups";
-@import "bootstrap/input-groups";
-@import "bootstrap/navs";
-@import "bootstrap/navbar";
-@import "bootstrap/breadcrumbs";
-@import "bootstrap/pagination";
-@import "bootstrap/pager";
-@import "bootstrap/labels";
-@import "bootstrap/badges";
-@import "bootstrap/jumbotron";
-@import "bootstrap/thumbnails";
-@import "bootstrap/alerts";
-@import "bootstrap/progress-bars";
-@import "bootstrap/media";
-@import "bootstrap/list-group";
-@import "bootstrap/panels";
-@import "bootstrap/responsive-embed";
-@import "bootstrap/wells";
-@import "bootstrap/close";
-
-// Components w/ JavaScript
-@import "bootstrap/modals";
-@import "bootstrap/tooltip";
-@import "bootstrap/popovers";
-@import "bootstrap/carousel";
-
-// Utility classes
-@import "bootstrap/utilities";
-@import "bootstrap/responsive-utilities";
-@import "bootstrap/bootswatch";
-
diff --git a/_sass/bootstrap/_alerts.scss b/_sass/bootstrap/_alerts.scss
deleted file mode 100644
index 7d1e1fd..0000000
--- a/_sass/bootstrap/_alerts.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
- padding: $alert-padding;
- margin-bottom: $line-height-computed;
- border: 1px solid transparent;
- border-radius: $alert-border-radius;
-
- // Headings for larger alerts
- h4 {
- margin-top: 0;
- // Specified for the h4 to prevent conflicts of changing $headings-color
- color: inherit;
- }
-
- // Provide class for links that match alerts
- .alert-link {
- font-weight: $alert-link-font-weight;
- }
-
- // Improve alignment and spacing of inner content
- > p,
- > ul {
- margin-bottom: 0;
- }
-
- > p + p {
- margin-top: 5px;
- }
-}
-
-// Dismissible alerts
-//
-// Expand the right padding and account for the close button's positioning.
-
-.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
-.alert-dismissible {
- padding-right: ($alert-padding + 20);
-
- // Adjust close link position
- .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit;
- }
-}
-
-// Alternate styles
-//
-// Generate contextual modifier classes for colorizing the alert.
-
-.alert-success {
- @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
-}
-
-.alert-info {
- @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
-}
-
-.alert-warning {
- @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
-}
-
-.alert-danger {
- @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
-}
diff --git a/_sass/bootstrap/_badges.scss b/_sass/bootstrap/_badges.scss
deleted file mode 100644
index 70002e0..0000000
--- a/_sass/bootstrap/_badges.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Badges
-// --------------------------------------------------
-
-
-// Base class
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: $font-size-small;
- font-weight: $badge-font-weight;
- color: $badge-color;
- line-height: $badge-line-height;
- vertical-align: middle;
- white-space: nowrap;
- text-align: center;
- background-color: $badge-bg;
- border-radius: $badge-border-radius;
-
- // Empty badges collapse automatically (not available in IE8)
- &:empty {
- display: none;
- }
-
- // Quick fix for badges in buttons
- .btn & {
- position: relative;
- top: -1px;
- }
-
- .btn-xs &,
- .btn-group-xs > .btn & {
- top: 0;
- padding: 1px 5px;
- }
-
- // [converter] extracted a& to a.badge
-
- // Account for badges in navs
- .list-group-item.active > &,
- .nav-pills > .active > a > & {
- color: $badge-active-color;
- background-color: $badge-active-bg;
- }
-
- .list-group-item > & {
- float: right;
- }
-
- .list-group-item > & + & {
- margin-right: 5px;
- }
-
- .nav-pills > li > a > & {
- margin-left: 3px;
- }
-}
-
-// Hover state, but only for links
-a.badge {
- &:hover,
- &:focus {
- color: $badge-link-hover-color;
- text-decoration: none;
- cursor: pointer;
- }
-}
diff --git a/_sass/bootstrap/_bootswatch.scss b/_sass/bootstrap/_bootswatch.scss
deleted file mode 100644
index 2d35f52..0000000
--- a/_sass/bootstrap/_bootswatch.scss
+++ /dev/null
@@ -1,523 +0,0 @@
-// Lumen 3.3.7
-// Bootswatch
-// -----------------------------------------------------
-
-$web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic" !default;
-@import url($web-font-path);
-
-@mixin shadow($width: 4px){
- border-width: 0 1px $width 1px;
-}
-
-// Navbar =====================================================================
-
-.navbar {
- @include shadow();
-}
-
-// Buttons ====================================================================
-
-.btn {
- padding: ($padding-base-vertical + 2) $padding-base-horizontal $padding-base-vertical;
- @include shadow();
- font-size: 12px;
- font-weight: bold;
- text-transform: uppercase;
-
- &:hover {
- margin-top: 1px;
- border-bottom-width: 3px;
- }
-
- &:active {
- margin-top: 2px;
- border-bottom-width: 2px;
- @include box-shadow(none);
- }
-
- &-lg,
- &-group-lg > .btn {
- padding: ($padding-large-vertical + 2) $padding-large-horizontal $padding-large-vertical;
- line-height: 15px;
- }
-
- &-sm,
- &-group-sm > .btn {
- padding: ($padding-small-vertical + 2) $padding-small-horizontal $padding-small-vertical;
- }
-
- &-xs,
- &-group-xs > .btn {
- padding: ($padding-xs-vertical + 2) $padding-xs-horizontal $padding-xs-vertical;
- }
-
- &-default:hover,
- &-default:focus,
- &-group.open .dropdown-toggle.btn-default {
- background-color: $btn-default-bg;
- border-color: $btn-default-border;
- }
-
- &-primary:hover,
- &-primary:focus,
- &-group.open .dropdown-toggle.btn-primary {
- background-color: $btn-primary-bg;
- border-color: $btn-primary-border;
- }
-
- &-success:hover,
- &-success:focus,
- &-group.open .dropdown-toggle.btn-success {
- background-color: $btn-success-bg;
- border-color: $btn-success-border;
- }
-
- &-info:hover,
- &-info:focus,
- &-group.open .dropdown-toggle.btn-info {
- background-color: $btn-info-bg;
- border-color: $btn-info-border;
- }
-
- &-warning:hover,
- &-warning:focus,
- &-group.open .dropdown-toggle.btn-warning {
- background-color: $btn-warning-bg;
- border-color: $btn-warning-border;
- }
-
- &-danger:hover,
- &-danger:focus,
- &-group.open .dropdown-toggle.btn-danger {
- background-color: $btn-danger-bg;
- border-color: $btn-danger-border;
- }
-
- &-group.open .dropdown-toggle {
- @include box-shadow(none);
- }
-}
-
-.navbar-btn {
- &:hover {
- margin-top: 8px
- }
-
- &:active {
- margin-top: 9px
- }
-
- &.btn-sm {
- &:hover {
- margin-top: 11px
- }
-
- &:active {
- margin-top: 12px
- }
- }
-
- &.btn-xs {
- &:hover {
- margin-top: 15px
- }
-
- &:active {
- margin-top: 16px
- }
- }
-}
-
-.btn-group-vertical {
- .btn + .btn {
- &:hover {
- border-top-width: 1px;
- }
-
- &:active {
- border-top-width: 2px;
- }
- }
-}
-
-// Typography =================================================================
-
-.text-primary,
-.text-primary:hover {
- color: $brand-primary;
-}
-
-.text-success,
-.text-success:hover {
- color: $brand-success;
-}
-
-.text-danger,
-.text-danger:hover {
- color: $brand-danger;
-}
-
-.text-warning,
-.text-warning:hover {
- color: $brand-warning;
-}
-
-.text-info,
-.text-info:hover {
- color: $brand-info;
-}
-
-// Tables =====================================================================
-
-table,
-.table {
-
- a:not(.btn) {
- text-decoration: underline;
- }
-
- .dropdown-menu a {
- text-decoration: none;
- }
-
- .success,
- .warning,
- .danger,
- .info {
- color: #fff;
-
- a:not(.btn) {
- color: #fff;
- }
- }
-
- &:not(.table-bordered) {
- > thead > tr > th,
- > tbody > tr > th,
- > tfoot > tr > th,
- > thead > tr > td,
- > tbody > tr > td,
- > tfoot > tr > td {
- border-color: transparent;
- }
- }
-}
-
-// Forms ======================================================================
-
-.form-control {
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
-}
-
-label {
- font-weight: normal;
-}
-
-.has-warning {
- .help-block,
- .control-label,
- .radio,
- .checkbox,
- .radio-inline,
- .checkbox-inline,
- &.radio label,
- &.checkbox label,
- &.radio-inline label,
- &.checkbox-inline label,
- .form-control-feedback {
- color: $brand-warning;
- }
-
- .form-control,
- .form-control:focus {
- border: 1px solid $brand-warning;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
- }
-
- .input-group-addon {
- border: 1px solid $brand-warning;
- }
-}
-
-.has-error {
- .help-block,
- .control-label,
- .radio,
- .checkbox,
- .radio-inline,
- .checkbox-inline,
- &.radio label,
- &.checkbox label,
- &.radio-inline label,
- &.checkbox-inline label,
- .form-control-feedback {
- color: $brand-danger;
- }
-
- .form-control,
- .form-control:focus {
- border: 1px solid $brand-danger;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
- }
-
- .input-group-addon {
- border: 1px solid $brand-danger;
- }
-}
-
-.has-success {
- .help-block,
- .control-label,
- .radio,
- .checkbox,
- .radio-inline,
- .checkbox-inline,
- &.radio label,
- &.checkbox label,
- &.radio-inline label,
- &.checkbox-inline label,
- .form-control-feedback {
- color: $brand-success;
- }
-
- .form-control,
- .form-control:focus {
- border: 1px solid $brand-success;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
- }
-
- .input-group-addon {
- border: 1px solid $brand-success;
- }
-}
-
-// Navs =======================================================================
-
-.nav {
- .open > a,
- .open > a:hover,
- .open > a:focus {
- border-color: transparent;
- }
-}
-
-.nav-tabs {
-
- > li > a {
- margin-top: 6px;
- border-color: $navbar-default-border;
- color: $gray-dark;
- @include transition(all 0.2s ease-in-out);
- }
-
- > li > a:hover,
- > li > a:focus,
- > li.active > a,
- > li.active > a:hover,
- > li.active > a:focus,
- .open > a,
- .open > a:hover,
- .open > a:focus {
- padding-bottom: ($padding-large-vertical + 3);
- margin-top: 0;
- }
-
- .open > a,
- .open > a:hover,
- .open > a:focus {
- border-color: $navbar-default-border;
- }
-
- > li.disabled > a:hover,
- > li.disabled > a:focus {
- padding-top: 10px;
- padding-bottom: 10px;
- margin-top: 6px;
- }
-
- &.nav-justified > li {
- vertical-align: bottom;
- }
-}
-
-.dropdown-menu {
- margin-top: 0;
- @include shadow();
- border-top-width: 1px;
- @include box-shadow(none);
-}
-
-.breadcrumb {
- border-color: darken($breadcrumb-bg, 5%);
- border-style: solid;
- @include shadow();
-}
-
-.pagination,
-.pager {
-
- > li > a,
- > li > span {
- position: relative;
- top: 0;
- @include shadow();
- color: $pagination-color;
- font-size: 12px;
- font-weight: bold;
- text-transform: uppercase;
-
- &:hover {
- top: 1px;
- border-bottom-width: 3px;
- }
-
- &:active {
- top: 2px;
- border-bottom-width: 2px;
- }
- }
-
- > .disabled > a,
- > .disabled > span {
-
- &:hover {
- top: 0;
- @include shadow();
- }
-
- &:active {
- top: 0;
- @include shadow();
- }
- }
-}
-
-.pager {
-
- > li > a,
- > li > span,
- > .disabled > a,
- > .disabled > span {
-
- &,
- &:hover,
- &:active {
- border-left-width: 2px;
- border-right-width: 2px;
- }
- }
-}
-
-// Indicators =================================================================
-
-.close {
- color: #fff;
- text-decoration: none;
- opacity: 0.4;
-
- &:hover,
- &:focus {
- color: #fff;
- opacity: 1;
- }
-}
-
-.alert {
- @include shadow();
-
- .alert-link {
- font-weight: normal;
- color: #fff;
- text-decoration: underline;
- }
-}
-
-.label {
- font-weight: normal;
-}
-
-// Progress bars ==============================================================
-
-.progress {
- border: 1px solid $navbar-default-border;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.1));
-
- &-bar {
- @include box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.15));
- }
-}
-
-// Containers =================================================================
-
-.well {
- border: 1px solid $navbar-default-border;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
-}
-
-a.list-group-item {
-
- &.active,
- &.active:hover,
- &.active:focus {
- border-color: $list-group-border;
- }
-
- &-success {
- &.active {
- background-color: $state-success-bg;
- }
-
- &.active:hover,
- &.active:focus {
- background-color: darken($state-success-bg, 5%);
- }
- }
-
- &-warning {
- &.active {
- background-color: $state-warning-bg;
- }
-
- &.active:hover,
- &.active:focus {
- background-color: darken($state-warning-bg, 5%);
- }
- }
-
- &-danger {
- &.active {
- background-color: $state-danger-bg;
- }
-
- &.active:hover,
- &.active:focus {
- background-color: darken($state-danger-bg, 5%);
- }
- }
-}
-
-.jumbotron {
- border: 1px solid $navbar-default-border;
- @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
-}
-
-.panel {
- border: 1px solid $navbar-default-border;
- @include shadow();
-
- &-default {
- .close {
- color: $text-color;
- }
- }
-}
-
-.modal {
- .close {
- color: $text-color;
- }
-}
-
-.popover {
- color: $text-color;
-}
diff --git a/_sass/bootstrap/_breadcrumbs.scss b/_sass/bootstrap/_breadcrumbs.scss
deleted file mode 100644
index b61f0c7..0000000
--- a/_sass/bootstrap/_breadcrumbs.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
- padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;
- margin-bottom: $line-height-computed;
- list-style: none;
- background-color: $breadcrumb-bg;
- border-radius: $border-radius-base;
-
- > li {
- display: inline-block;
-
- + li:before {
- // [converter] Workaround for https://github.com/sass/libsass/issues/1115
- $nbsp: "\00a0";
- content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
- padding: 0 5px;
- color: $breadcrumb-color;
- }
- }
-
- > .active {
- color: $breadcrumb-active-color;
- }
-}
diff --git a/_sass/bootstrap/_button-groups.scss b/_sass/bootstrap/_button-groups.scss
deleted file mode 100644
index 4b385f5..0000000
--- a/_sass/bootstrap/_button-groups.scss
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Button groups
-// --------------------------------------------------
-
-// Make the div behave like a button
-.btn-group,
-.btn-group-vertical {
- position: relative;
- display: inline-block;
- vertical-align: middle; // match .btn alignment given font-size hack above
- > .btn {
- position: relative;
- float: left;
- // Bring the "active" button to the front
- &:hover,
- &:focus,
- &:active,
- &.active {
- z-index: 2;
- }
- }
-}
-
-// Prevent double borders when buttons are next to each other
-.btn-group {
- .btn + .btn,
- .btn + .btn-group,
- .btn-group + .btn,
- .btn-group + .btn-group {
- margin-left: -1px;
- }
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
- margin-left: -5px; // Offset the first child's margin
- @include clearfix;
-
- .btn,
- .btn-group,
- .input-group {
- float: left;
- }
- > .btn,
- > .btn-group,
- > .input-group {
- margin-left: 5px;
- }
-}
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
- margin-left: 0;
- &:not(:last-child):not(.dropdown-toggle) {
- @include border-right-radius(0);
- }
-}
-// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
- @include border-left-radius(0);
-}
-
-// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
-.btn-group > .btn-group {
- float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group > .btn-group:first-child:not(:last-child) {
- > .btn:last-child,
- > .dropdown-toggle {
- @include border-right-radius(0);
- }
-}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
- @include border-left-radius(0);
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0;
-}
-
-
-// Sizing
-//
-// Remix the default button sizing classes into new ones for easier manipulation.
-
-.btn-group-xs > .btn { @extend .btn-xs; }
-.btn-group-sm > .btn { @extend .btn-sm; }
-.btn-group-lg > .btn { @extend .btn-lg; }
-
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
-}
-
-// The clickable button for toggling the menu
-// Remove the gradient and set the same inset shadow as the :active state
-.btn-group.open .dropdown-toggle {
- @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
-
- // Show no shadow for `.btn-link` since it has no other button styles.
- &.btn-link {
- @include box-shadow(none);
- }
-}
-
-
-// Reposition the caret
-.btn .caret {
- margin-left: 0;
-}
-// Carets in other button sizes
-.btn-lg .caret {
- border-width: $caret-width-large $caret-width-large 0;
- border-bottom-width: 0;
-}
-// Upside down carets for .dropup
-.dropup .btn-lg .caret {
- border-width: 0 $caret-width-large $caret-width-large;
-}
-
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
- > .btn,
- > .btn-group,
- > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
- }
-
- // Clear floats so dropdown menus can be properly placed
- > .btn-group {
- @include clearfix;
- > .btn {
- float: none;
- }
- }
-
- > .btn + .btn,
- > .btn + .btn-group,
- > .btn-group + .btn,
- > .btn-group + .btn-group {
- margin-top: -1px;
- margin-left: 0;
- }
-}
-
-.btn-group-vertical > .btn {
- &:not(:first-child):not(:last-child) {
- border-radius: 0;
- }
- &:first-child:not(:last-child) {
- @include border-top-radius($btn-border-radius-base);
- @include border-bottom-radius(0);
- }
- &:last-child:not(:first-child) {
- @include border-top-radius(0);
- @include border-bottom-radius($btn-border-radius-base);
- }
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) {
- > .btn:last-child,
- > .dropdown-toggle {
- @include border-bottom-radius(0);
- }
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
- @include border-top-radius(0);
-}
-
-
-// Justified button groups
-// ----------------------
-
-.btn-group-justified {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: separate;
- > .btn,
- > .btn-group {
- float: none;
- display: table-cell;
- width: 1%;
- }
- > .btn-group .btn {
- width: 100%;
- }
-
- > .btn-group .dropdown-menu {
- left: auto;
- }
-}
-
-
-// Checkbox and radio options
-//
-// In order to support the browser's form validation feedback, powered by the
-// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
-// `display: none;` or `visibility: hidden;` as that also hides the popover.
-// Simply visually hiding the inputs via `opacity` would leave them clickable in
-// certain cases which is prevented by using `clip` and `pointer-events`.
-// This way, we ensure a DOM element is visible to position the popover from.
-//
-// See https://github.com/twbs/bootstrap/pull/12794 and
-// https://github.com/twbs/bootstrap/pull/14559 for more information.
-
-[data-toggle="buttons"] {
- > .btn,
- > .btn-group > .btn {
- input[type="radio"],
- input[type="checkbox"] {
- position: absolute;
- clip: rect(0,0,0,0);
- pointer-events: none;
- }
- }
-}
diff --git a/_sass/bootstrap/_buttons.scss b/_sass/bootstrap/_buttons.scss
deleted file mode 100644
index 6452b70..0000000
--- a/_sass/bootstrap/_buttons.scss
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-.btn {
- display: inline-block;
- margin-bottom: 0; // For input.btn
- font-weight: $btn-font-weight;
- text-align: center;
- vertical-align: middle;
- touch-action: manipulation;
- cursor: pointer;
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
- border: 1px solid transparent;
- white-space: nowrap;
- @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
- @include user-select(none);
-
- &,
- &:active,
- &.active {
- &:focus,
- &.focus {
- @include tab-focus;
- }
- }
-
- &:hover,
- &:focus,
- &.focus {
- color: $btn-default-color;
- text-decoration: none;
- }
-
- &:active,
- &.active {
- outline: 0;
- background-image: none;
- @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
- }
-
- &.disabled,
- &[disabled],
- fieldset[disabled] & {
- cursor: $cursor-disabled;
- @include opacity(.65);
- @include box-shadow(none);
- }
-
- // [converter] extracted a& to a.btn
-}
-
-a.btn {
- &.disabled,
- fieldset[disabled] & {
- pointer-events: none; // Future-proof disabling of clicks on `` elements
- }
-}
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-.btn-default {
- @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
-}
-.btn-primary {
- @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
-}
-// Success appears as green
-.btn-success {
- @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
-}
-// Info appears as blue-green
-.btn-info {
- @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
-}
-// Warning appears as orange
-.btn-warning {
- @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
-}
-// Danger and error appear as red
-.btn-danger {
- @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
-}
-
-
-// Link buttons
-// -------------------------
-
-// Make a button look and behave like a link
-.btn-link {
- color: $link-color;
- font-weight: normal;
- border-radius: 0;
-
- &,
- &:active,
- &.active,
- &[disabled],
- fieldset[disabled] & {
- background-color: transparent;
- @include box-shadow(none);
- }
- &,
- &:hover,
- &:focus,
- &:active {
- border-color: transparent;
- }
- &:hover,
- &:focus {
- color: $link-hover-color;
- text-decoration: $link-hover-decoration;
- background-color: transparent;
- }
- &[disabled],
- fieldset[disabled] & {
- &:hover,
- &:focus {
- color: $btn-link-disabled-color;
- text-decoration: none;
- }
- }
-}
-
-
-// Button Sizes
-// --------------------------------------------------
-
-.btn-lg {
- // line-height: ensure even-numbered height of button next to large input
- @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large);
-}
-.btn-sm {
- // line-height: ensure proper height of button next to small input
- @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
-}
-.btn-xs {
- @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
-}
-
-
-// Block button
-// --------------------------------------------------
-
-.btn-block {
- display: block;
- width: 100%;
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
- &.btn-block {
- width: 100%;
- }
-}
diff --git a/_sass/bootstrap/_carousel.scss b/_sass/bootstrap/_carousel.scss
deleted file mode 100644
index 823476a..0000000
--- a/_sass/bootstrap/_carousel.scss
+++ /dev/null
@@ -1,270 +0,0 @@
-//
-// Carousel
-// --------------------------------------------------
-
-
-// Wrapper for the slide container and indicators
-.carousel {
- position: relative;
-}
-
-.carousel-inner {
- position: relative;
- overflow: hidden;
- width: 100%;
-
- > .item {
- display: none;
- position: relative;
- @include transition(.6s ease-in-out left);
-
- // Account for jankitude on images
- > img,
- > a > img {
- @include img-responsive;
- line-height: 1;
- }
-
- // WebKit CSS3 transforms for supported devices
- @media all and (transform-3d), (-webkit-transform-3d) {
- @include transition-transform(0.6s ease-in-out);
- @include backface-visibility(hidden);
- @include perspective(1000px);
-
- &.next,
- &.active.right {
- @include translate3d(100%, 0, 0);
- left: 0;
- }
- &.prev,
- &.active.left {
- @include translate3d(-100%, 0, 0);
- left: 0;
- }
- &.next.left,
- &.prev.right,
- &.active {
- @include translate3d(0, 0, 0);
- left: 0;
- }
- }
- }
-
- > .active,
- > .next,
- > .prev {
- display: block;
- }
-
- > .active {
- left: 0;
- }
-
- > .next,
- > .prev {
- position: absolute;
- top: 0;
- width: 100%;
- }
-
- > .next {
- left: 100%;
- }
- > .prev {
- left: -100%;
- }
- > .next.left,
- > .prev.right {
- left: 0;
- }
-
- > .active.left {
- left: -100%;
- }
- > .active.right {
- left: 100%;
- }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- width: $carousel-control-width;
- @include opacity($carousel-control-opacity);
- font-size: $carousel-control-font-size;
- color: $carousel-control-color;
- text-align: center;
- text-shadow: $carousel-text-shadow;
- background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
- // We can't have this transition here because WebKit cancels the carousel
- // animation if you trip this while in the middle of another animation.
-
- // Set gradients for backgrounds
- &.left {
- @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.0001));
- }
- &.right {
- left: auto;
- right: 0;
- @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.0001));
- }
-
- // Hover/focus state
- &:hover,
- &:focus {
- outline: 0;
- color: $carousel-control-color;
- text-decoration: none;
- @include opacity(.9);
- }
-
- // Toggles
- .icon-prev,
- .icon-next,
- .glyphicon-chevron-left,
- .glyphicon-chevron-right {
- position: absolute;
- top: 50%;
- margin-top: -10px;
- z-index: 5;
- display: inline-block;
- }
- .icon-prev,
- .glyphicon-chevron-left {
- left: 50%;
- margin-left: -10px;
- }
- .icon-next,
- .glyphicon-chevron-right {
- right: 50%;
- margin-right: -10px;
- }
- .icon-prev,
- .icon-next {
- width: 20px;
- height: 20px;
- line-height: 1;
- font-family: serif;
- }
-
-
- .icon-prev {
- &:before {
- content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
- }
- }
- .icon-next {
- &:before {
- content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
- }
- }
-}
-
-// Optional indicator pips
-//
-// Add an unordered list with the following class and add a list item for each
-// slide your carousel holds.
-
-.carousel-indicators {
- position: absolute;
- bottom: 10px;
- left: 50%;
- z-index: 15;
- width: 60%;
- margin-left: -30%;
- padding-left: 0;
- list-style: none;
- text-align: center;
-
- li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- border: 1px solid $carousel-indicator-border-color;
- border-radius: 10px;
- cursor: pointer;
-
- // IE8-9 hack for event handling
- //
- // Internet Explorer 8-9 does not support clicks on elements without a set
- // `background-color`. We cannot use `filter` since that's not viewed as a
- // background color by the browser. Thus, a hack is needed.
- // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
- //
- // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
- // set alpha transparency for the best results possible.
- background-color: #000 \9; // IE8
- background-color: rgba(0,0,0,0); // IE9
- }
- .active {
- margin: 0;
- width: 12px;
- height: 12px;
- background-color: $carousel-indicator-active-bg;
- }
-}
-
-// Optional captions
-// -----------------------------
-// Hidden by default for smaller viewports
-.carousel-caption {
- position: absolute;
- left: 15%;
- right: 15%;
- bottom: 20px;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: $carousel-caption-color;
- text-align: center;
- text-shadow: $carousel-text-shadow;
- & .btn {
- text-shadow: none; // No shadow for button elements in carousel-caption
- }
-}
-
-
-// Scale up controls for tablets and up
-@media screen and (min-width: $screen-sm-min) {
-
- // Scale up the controls a smidge
- .carousel-control {
- .glyphicon-chevron-left,
- .glyphicon-chevron-right,
- .icon-prev,
- .icon-next {
- width: ($carousel-control-font-size * 1.5);
- height: ($carousel-control-font-size * 1.5);
- margin-top: ($carousel-control-font-size / -2);
- font-size: ($carousel-control-font-size * 1.5);
- }
- .glyphicon-chevron-left,
- .icon-prev {
- margin-left: ($carousel-control-font-size / -2);
- }
- .glyphicon-chevron-right,
- .icon-next {
- margin-right: ($carousel-control-font-size / -2);
- }
- }
-
- // Show and left align the captions
- .carousel-caption {
- left: 20%;
- right: 20%;
- padding-bottom: 30px;
- }
-
- // Move up the indicators
- .carousel-indicators {
- bottom: 20px;
- }
-}
diff --git a/_sass/bootstrap/_close.scss b/_sass/bootstrap/_close.scss
deleted file mode 100644
index 3b74d8a..0000000
--- a/_sass/bootstrap/_close.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
- float: right;
- font-size: ($font-size-base * 1.5);
- font-weight: $close-font-weight;
- line-height: 1;
- color: $close-color;
- text-shadow: $close-text-shadow;
- @include opacity(.2);
-
- &:hover,
- &:focus {
- color: $close-color;
- text-decoration: none;
- cursor: pointer;
- @include opacity(.5);
- }
-
- // [converter] extracted button& to button.close
-}
-
-// Additional properties for button version
-// iOS requires the button element instead of an anchor tag.
-// If you want the anchor version, it requires `href="#"`.
-// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
-button.close {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
-}
diff --git a/_sass/bootstrap/_code.scss b/_sass/bootstrap/_code.scss
deleted file mode 100644
index caa5f06..0000000
--- a/_sass/bootstrap/_code.scss
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// Code (inline and block)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-kbd,
-pre,
-samp {
- font-family: $font-family-monospace;
-}
-
-// Inline code
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: $code-color;
- background-color: $code-bg;
- border-radius: $border-radius-base;
-}
-
-// User input typically entered via keyboard
-kbd {
- padding: 2px 4px;
- font-size: 90%;
- color: $kbd-color;
- background-color: $kbd-bg;
- border-radius: $border-radius-small;
- box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
-
- kbd {
- padding: 0;
- font-size: 100%;
- font-weight: bold;
- box-shadow: none;
- }
-}
-
-// Blocks of code
-pre {
- display: block;
- padding: (($line-height-computed - 1) / 2);
- margin: 0 0 ($line-height-computed / 2);
- font-size: ($font-size-base - 1); // 14px to 13px
- line-height: $line-height-base;
- word-break: break-all;
- word-wrap: break-word;
- color: $pre-color;
- background-color: $pre-bg;
- border: 1px solid $pre-border-color;
- border-radius: $border-radius-base;
-
- // Account for some code outputs that place code tags in pre tags
- code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border-radius: 0;
- }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
- max-height: $pre-scrollable-max-height;
- overflow-y: scroll;
-}
diff --git a/_sass/bootstrap/_component-animations.scss b/_sass/bootstrap/_component-animations.scss
deleted file mode 100644
index ca3b43c..0000000
--- a/_sass/bootstrap/_component-animations.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// Component animations
-// --------------------------------------------------
-
-// Heads up!
-//
-// We don't use the `.opacity()` mixin here since it causes a bug with text
-// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
-
-.fade {
- opacity: 0;
- @include transition(opacity .15s linear);
- &.in {
- opacity: 1;
- }
-}
-
-.collapse {
- display: none;
-
- &.in { display: block; }
- // [converter] extracted tr&.in to tr.collapse.in
- // [converter] extracted tbody&.in to tbody.collapse.in
-}
-
-tr.collapse.in { display: table-row; }
-
-tbody.collapse.in { display: table-row-group; }
-
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- @include transition-property(height, visibility);
- @include transition-duration(.35s);
- @include transition-timing-function(ease);
-}
diff --git a/_sass/bootstrap/_dropdowns.scss b/_sass/bootstrap/_dropdowns.scss
deleted file mode 100644
index aac8459..0000000
--- a/_sass/bootstrap/_dropdowns.scss
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Dropdown arrow/caret
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- margin-left: 2px;
- vertical-align: middle;
- border-top: $caret-width-base dashed;
- border-top: $caret-width-base solid \9; // IE8
- border-right: $caret-width-base solid transparent;
- border-left: $caret-width-base solid transparent;
-}
-
-// The dropdown wrapper (div)
-.dropup,
-.dropdown {
- position: relative;
-}
-
-// Prevent the focus on the dropdown toggle when closing dropdowns
-.dropdown-toggle:focus {
- outline: 0;
-}
-
-// The dropdown menu (ul)
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: $zindex-dropdown;
- display: none; // none by default, but block on "open" of the menu
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0; // override default ul
- list-style: none;
- font-size: $font-size-base;
- text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
- background-color: $dropdown-bg;
- border: 1px solid $dropdown-fallback-border; // IE8 fallback
- border: 1px solid $dropdown-border;
- border-radius: $border-radius-base;
- @include box-shadow(0 6px 12px rgba(0,0,0,.175));
- background-clip: padding-box;
-
- // Aligns the dropdown menu to right
- //
- // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
- &.pull-right {
- right: 0;
- left: auto;
- }
-
- // Dividers (basically an hr) within the dropdown
- .divider {
- @include nav-divider($dropdown-divider-bg);
- }
-
- // Links within the dropdown menu
- > li > a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: $line-height-base;
- color: $dropdown-link-color;
- white-space: nowrap; // prevent links from randomly breaking onto new lines
- }
-}
-
-// Hover/Focus state
-.dropdown-menu > li > a {
- &:hover,
- &:focus {
- text-decoration: none;
- color: $dropdown-link-hover-color;
- background-color: $dropdown-link-hover-bg;
- }
-}
-
-// Active state
-.dropdown-menu > .active > a {
- &,
- &:hover,
- &:focus {
- color: $dropdown-link-active-color;
- text-decoration: none;
- outline: 0;
- background-color: $dropdown-link-active-bg;
- }
-}
-
-// Disabled state
-//
-// Gray out text and ensure the hover/focus state remains gray
-
-.dropdown-menu > .disabled > a {
- &,
- &:hover,
- &:focus {
- color: $dropdown-link-disabled-color;
- }
-
- // Nuke hover/focus effects
- &:hover,
- &:focus {
- text-decoration: none;
- background-color: transparent;
- background-image: none; // Remove CSS gradient
- @include reset-filter;
- cursor: $cursor-disabled;
- }
-}
-
-// Open state for the dropdown
-.open {
- // Show the menu
- > .dropdown-menu {
- display: block;
- }
-
- // Remove the outline when :focus is triggered
- > a {
- outline: 0;
- }
-}
-
-// Menu positioning
-//
-// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
-// menu with the parent.
-.dropdown-menu-right {
- left: auto; // Reset the default from `.dropdown-menu`
- right: 0;
-}
-// With v3, we enabled auto-flipping if you have a dropdown within a right
-// aligned nav component. To enable the undoing of that, we provide an override
-// to restore the default dropdown menu alignment.
-//
-// This is only for left-aligning a dropdown menu within a `.navbar-right` or
-// `.pull-right` nav component.
-.dropdown-menu-left {
- left: 0;
- right: auto;
-}
-
-// Dropdown section headers
-.dropdown-header {
- display: block;
- padding: 3px 20px;
- font-size: $font-size-small;
- line-height: $line-height-base;
- color: $dropdown-header-color;
- white-space: nowrap; // as with > li > a
-}
-
-// Backdrop to catch body clicks on mobile, etc.
-.dropdown-backdrop {
- position: fixed;
- left: 0;
- right: 0;
- bottom: 0;
- top: 0;
- z-index: ($zindex-dropdown - 10);
-}
-
-// Right aligned dropdowns
-.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-//
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-
-.dropup,
-.navbar-fixed-bottom .dropdown {
- // Reverse the caret
- .caret {
- border-top: 0;
- border-bottom: $caret-width-base dashed;
- border-bottom: $caret-width-base solid \9; // IE8
- content: "";
- }
- // Different positioning for bottom up menu
- .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 2px;
- }
-}
-
-
-// Component alignment
-//
-// Reiterate per navbar.less and the modified component alignment there.
-
-@media (min-width: $grid-float-breakpoint) {
- .navbar-right {
- .dropdown-menu {
- right: 0; left: auto;
- }
- // Necessary for overrides of the default right aligned menu.
- // Will remove come v4 in all likelihood.
- .dropdown-menu-left {
- left: 0; right: auto;
- }
- }
-}
diff --git a/_sass/bootstrap/_forms.scss b/_sass/bootstrap/_forms.scss
deleted file mode 100644
index ac26a6a..0000000
--- a/_sass/bootstrap/_forms.scss
+++ /dev/null
@@ -1,617 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-
-// Normalize non-controls
-//
-// Restyle and baseline non-control form elements.
-
-fieldset {
- padding: 0;
- margin: 0;
- border: 0;
- // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
- // so we reset that to ensure it behaves more like a standard block element.
- // See https://github.com/twbs/bootstrap/issues/12359.
- min-width: 0;
-}
-
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: $line-height-computed;
- font-size: ($font-size-base * 1.5);
- line-height: inherit;
- color: $legend-color;
- border: 0;
- border-bottom: 1px solid $legend-border-color;
-}
-
-label {
- display: inline-block;
- max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
- margin-bottom: 5px;
- font-weight: bold;
-}
-
-
-// Normalize form controls
-//
-// While most of our form styles require extra classes, some basic normalization
-// is required to ensure optimum display with or without those classes to better
-// address browser inconsistencies.
-
-// Override content-box in Normalize (* isn't specific enough)
-input[type="search"] {
- @include box-sizing(border-box);
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9; // IE8-9
- line-height: normal;
-}
-
-input[type="file"] {
- display: block;
-}
-
-// Make range inputs behave like textual form controls
-input[type="range"] {
- display: block;
- width: 100%;
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
- height: auto;
-}
-
-// Focus for file, radio, and checkbox
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- @include tab-focus;
-}
-
-// Adjust output element
-output {
- display: block;
- padding-top: ($padding-base-vertical + 1);
- font-size: $font-size-base;
- line-height: $line-height-base;
- color: $input-color;
-}
-
-
-// Common form controls
-//
-// Shared size and type resets for form controls. Apply `.form-control` to any
-// of the following form controls:
-//
-// select
-// textarea
-// input[type="text"]
-// input[type="password"]
-// input[type="datetime"]
-// input[type="datetime-local"]
-// input[type="date"]
-// input[type="month"]
-// input[type="time"]
-// input[type="week"]
-// input[type="number"]
-// input[type="email"]
-// input[type="url"]
-// input[type="search"]
-// input[type="tel"]
-// input[type="color"]
-
-.form-control {
- display: block;
- width: 100%;
- height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
- padding: $padding-base-vertical $padding-base-horizontal;
- font-size: $font-size-base;
- line-height: $line-height-base;
- color: $input-color;
- background-color: $input-bg;
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
- border: 1px solid $input-border;
- border-radius: $input-border-radius; // Note: This has no effect on