can I get a hamburger please?

This commit is contained in:
SowinskiBraeden committed 2026-06-22 22:59:10 -07:00
1 parent 263cd0a6d3
commit 5d88180e02
4 files changed
+32 -41

No files matched your search

+1 -1
View File
@@ -8,7 +8,7 @@ BASE_DIR = Path(__file__).resolve().parent
DATA_PATH = BASE_DIR / "data" / "entries.csv" DATA_PATH = BASE_DIR / "data" / "entries.csv"
ELIGIBLE_MIN_SESSIONS = 3 ELIGIBLE_MIN_SESSIONS = 3
APP_VERSION = "1.8.4" APP_VERSION = "1.8.6"
def load_local_env(env_path: Path) -> None: def load_local_env(env_path: Path) -> None:
-3
View File
@@ -1,3 +0,0 @@
# Memory Index
- [Project overview](project_overview.md) — Flask poker ledger app, Graphite+Violet design system, append-only CSV event model
-26
View File
@@ -1,26 +0,0 @@
---
name: project-overview
description: Flask poker ledger app — design system, tech stack, key files
metadata:
type: project
---
Flask/Jinja app: poker session tracker and leaderboard. Append-only CSV event ledger (`data/entries.csv`).
**Design system (Graphite + Violet):** Implemented June 2026.
- `static/css/tokens.css` — all CSS custom properties (--accent: #9b8cf0 violet, not orange)
- `static/css/style.css` — component classes: .panel, .stat, .tbl, .badge, .segmented, .btn, .feed, etc.
- Fonts: Spectral (display), Hanken Grotesk (UI), IBM Plex Mono (numbers/labels)
**Pages:** leaderboard, sessions, session_detail, player_detail, admin_dashboard, admin_login.
**Key patterns:**
- Leaderboard has Eligible/All/Recent segmented control; `ELIGIBLE_MIN_SESSIONS = 3` in app.py
- Session detail has Compact/Full toggle for the table (`col-acct` class, `.is-full` on table)
- Chart.js colors: leaderboard uses CHART_PALETTE from template JS; bars use `net_tone()` from stats.py
- `--text-muted` and `--line` CSS vars kept as backward compat for Chart.js JS reads
- `.venv/bin/python` is the Python runtime
**Data model:** EventRow CSV → SessionEntry → SessionSummary, PlayerStats (via stats.py). No DB.
**Why:** Design ported from "Poker Ledger.dc.html" prototype spec per handoff document.
+31 -11
View File
@@ -95,25 +95,41 @@ h1, h2, h3, h4 { margin: 0; }
display: none; display: none;
width: 42px; width: 42px;
height: 42px; height: 42px;
place-items: center;
gap: 4px;
padding: 0; padding: 0;
border: 1px solid var(--border-strong); border: 1px solid var(--border-strong);
border-radius: 10px; border-radius: 10px;
background: var(--field); background: var(--field);
color: var(--text-2); color: var(--text-2);
position: relative;
transition: border-color 180ms ease, color 180ms ease, background 180ms ease;
} }
.nav-toggle span { .nav-toggle span {
display: block; display: block;
width: 18px; position: absolute;
left: 50%;
top: 50%;
width: 19px;
height: 2px; height: 2px;
border-radius: 2px; margin-left: -9.5px;
margin-top: -1px;
border-radius: 999px;
background: currentColor; background: currentColor;
transition: transform 160ms, opacity 160ms; transform-origin: 50% 50%;
transition:
transform 220ms cubic-bezier(.2,.8,.2,1),
opacity 160ms ease;
} }
.nav-is-open .nav-toggle span:nth-child(1) { transform: translateY(6px) rotate(45deg); } .nav-toggle span:nth-child(1) { transform: translateY(-6px); }
.nav-is-open .nav-toggle span:nth-child(2) { opacity: 0; } .nav-toggle span:nth-child(2) { transform: scaleX(.82); }
.nav-is-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); } .nav-toggle span:nth-child(3) { transform: translateY(6px); }
.nav-is-open .nav-toggle {
color: var(--text-strong);
border-color: var(--accent-chip-bd);
background: var(--accent-chip);
}
.nav-is-open .nav-toggle span:nth-child(1) { transform: rotate(45deg) scaleX(1.04); }
.nav-is-open .nav-toggle span:nth-child(2) { opacity: 0; transform: scaleX(.2); }
.nav-is-open .nav-toggle span:nth-child(3) { transform: rotate(-45deg) scaleX(1.04); }
.navlink { .navlink {
font-size: 13.5px; font-size: 13.5px;
font-weight: 600; font-weight: 600;
@@ -1851,15 +1867,19 @@ select.control { cursor: pointer; }
border-radius: 12px; border-radius: 12px;
background: rgba(22, 22, 28, .98); background: rgba(22, 22, 28, .98);
box-shadow: 0 18px 48px rgba(0,0,0,.42); box-shadow: 0 18px 48px rgba(0,0,0,.42);
transform: translateY(-8px); transform: translateY(-6px) scale(.985);
transform-origin: top center;
opacity: 0; opacity: 0;
pointer-events: none; pointer-events: none;
visibility: hidden; visibility: hidden;
transition: opacity 150ms, transform 150ms, visibility 150ms; transition:
opacity 180ms ease,
transform 220ms cubic-bezier(.2,.8,.2,1),
visibility 180ms;
overflow: hidden; overflow: hidden;
} }
.nav-is-open .mainnav { .nav-is-open .mainnav {
transform: translateY(0); transform: translateY(0) scale(1);
opacity: 1; opacity: 1;
pointer-events: auto; pointer-events: auto;
visibility: visible; visibility: visible;