From 5d88180e028128bac7cabe07e048829915d4956c Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Mon, 22 Jun 2026 22:59:10 -0700 Subject: [PATCH] can I get a hamburger please? --- config.py | 2 +- memory/MEMORY.md | 3 --- memory/project_overview.md | 26 ----------------------- static/css/style.css | 42 ++++++++++++++++++++++++++++---------- 4 files changed, 32 insertions(+), 41 deletions(-) delete mode 100644 memory/MEMORY.md delete mode 100644 memory/project_overview.md diff --git a/config.py b/config.py index 6927f24..0df2473 100644 --- a/config.py +++ b/config.py @@ -8,7 +8,7 @@ BASE_DIR = Path(__file__).resolve().parent DATA_PATH = BASE_DIR / "data" / "entries.csv" ELIGIBLE_MIN_SESSIONS = 3 -APP_VERSION = "1.8.4" +APP_VERSION = "1.8.6" def load_local_env(env_path: Path) -> None: diff --git a/memory/MEMORY.md b/memory/MEMORY.md deleted file mode 100644 index 98e9838..0000000 --- a/memory/MEMORY.md +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Index - -- [Project overview](project_overview.md) — Flask poker ledger app, Graphite+Violet design system, append-only CSV event model diff --git a/memory/project_overview.md b/memory/project_overview.md deleted file mode 100644 index 3eef37a..0000000 --- a/memory/project_overview.md +++ /dev/null @@ -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. diff --git a/static/css/style.css b/static/css/style.css index 8719b34..c57957e 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -95,25 +95,41 @@ h1, h2, h3, h4 { margin: 0; } display: none; width: 42px; height: 42px; - place-items: center; - gap: 4px; padding: 0; border: 1px solid var(--border-strong); border-radius: 10px; background: var(--field); color: var(--text-2); + position: relative; + transition: border-color 180ms ease, color 180ms ease, background 180ms ease; } .nav-toggle span { display: block; - width: 18px; + position: absolute; + left: 50%; + top: 50%; + width: 19px; height: 2px; - border-radius: 2px; + margin-left: -9.5px; + margin-top: -1px; + border-radius: 999px; 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-is-open .nav-toggle span:nth-child(2) { opacity: 0; } -.nav-is-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); } +.nav-toggle span:nth-child(1) { transform: translateY(-6px); } +.nav-toggle span:nth-child(2) { transform: scaleX(.82); } +.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 { font-size: 13.5px; font-weight: 600; @@ -1851,15 +1867,19 @@ select.control { cursor: pointer; } border-radius: 12px; background: rgba(22, 22, 28, .98); box-shadow: 0 18px 48px rgba(0,0,0,.42); - transform: translateY(-8px); + transform: translateY(-6px) scale(.985); + transform-origin: top center; opacity: 0; pointer-events: none; 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; } .nav-is-open .mainnav { - transform: translateY(0); + transform: translateY(0) scale(1); opacity: 1; pointer-events: auto; visibility: visible;