quartermaster/docs/mockups/month-condensed-sans.html
archeious 761336c71d docs: keep design mockups alongside the shipped UI
Three iterations captured under docs/mockups/ with shared logo
assets:

* month-editorial-ledger.html — first pass, loose spacing, Fraunces
  serif throughout, no logo.
* month-editorial-ledger-dense.html — tightened spacing, logo
  integrated as masthead and behind the zero widget.
* month-condensed-sans.html — the shipped direction. Logo in the
  zero hero, Barlow Condensed everywhere, masthead dropped.

These give a paper trail for why the app looks the way it does and
a sandbox for future typographic experiments without touching the
live CSS.

Refs #17

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 16:58:22 -06:00

814 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Quartermaster · April 2026 · Condensed Ledger</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600&family=Barlow:ital,wght@0,400;0,500;1,400&display=swap" rel="stylesheet">
<style>
:root {
--paper: #f5efe0;
--paper-deep: #efe7d4;
--paper-soft: #faf5e8;
--paper-stripe: #f1ead9;
--ink: #1a1814;
--ink-soft: #3a362e;
--muted: #7e7668;
--rule: #c8bfa8;
--rule-soft: #dcd4bf;
--accent: #732629;
--accent-dark: #4d1214;
--accent-soft: #a13a40;
--ochre: #9c6b1a;
--sage: #2d4a30;
--sage-soft: #6a8870;
--indigo: #353a5e;
--sans: "Barlow Condensed", "Oswald", sans-serif;
--sans-wide: "Barlow", "Helvetica Neue", sans-serif;
}
*, *::before, *::after { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
color: var(--ink);
background: var(--paper);
font-family: var(--sans);
font-weight: 400;
font-feature-settings: "lnum" 1;
line-height: 1.35;
background-image:
radial-gradient(circle at 18% 10%, rgba(200, 191, 168, 0.16) 0, transparent 42%),
radial-gradient(circle at 84% 82%, rgba(200, 191, 168, 0.12) 0, transparent 50%);
}
.page {
max-width: 880px;
margin: 0 auto;
padding: 1.25rem 1.25rem 3rem;
position: relative;
}
/* =============== MONTH NAV — top line =============== */
.month-line {
display: grid;
grid-template-columns: 1fr auto 1fr auto auto;
align-items: baseline;
gap: 1rem;
padding: 0.4rem 0 0.55rem;
border-bottom: 1px solid var(--ink);
}
.nav-month {
font-family: var(--sans);
font-weight: 400;
font-style: italic;
font-size: 1rem;
color: var(--muted);
text-decoration: none;
transition: color 0.12s;
letter-spacing: 0.02em;
}
.nav-month:hover { color: var(--ink); }
.nav-month.prev { text-align: right; }
.nav-month .chev { font-style: normal; margin: 0 0.25em; }
.month-title {
font-family: var(--sans);
font-weight: 600;
font-size: 1.45rem;
letter-spacing: 0.12em;
text-transform: uppercase;
margin: 0;
white-space: nowrap;
}
.month-title .year {
font-weight: 300;
font-style: italic;
margin-left: 0.35em;
letter-spacing: 0.06em;
color: var(--muted);
}
.state {
font-family: var(--sans);
font-weight: 500;
font-size: 0.85rem;
color: var(--sage);
letter-spacing: 0.22em;
text-transform: uppercase;
}
.state::before { content: "· "; opacity: 0.5; letter-spacing: 0; }
.state::after { content: " ·"; opacity: 0.5; letter-spacing: 0; }
.state.planning { color: var(--indigo); }
.state.closed { color: var(--muted); }
.btn-close {
font-family: var(--sans);
font-weight: 600;
font-size: 0.85rem;
color: var(--ink);
background: var(--paper-soft);
border: 1px solid var(--ink);
padding: 0.25rem 0.9rem 0.3rem;
cursor: pointer;
letter-spacing: 0.12em;
text-transform: uppercase;
transition: background 0.12s ease, color 0.12s ease;
}
.btn-close:hover { background: var(--ink); color: var(--paper); }
.btn-close::after { content: " →"; margin-left: 0.15em; font-weight: 400; }
.back-link-row {
display: flex;
justify-content: flex-end;
padding: 0.3rem 0 0;
}
.back-link {
font-family: var(--sans);
font-weight: 500;
font-size: 0.7rem;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--muted);
text-decoration: none;
}
.back-link:hover { color: var(--ink); }
/* =============== ZERO HERO — logo left + applied / zero / planned =============== */
.zero {
display: grid;
grid-template-columns: auto 1fr auto 1fr;
align-items: center;
gap: 1.8rem;
padding: 1rem 0.25rem 1rem;
border-bottom: 3px double var(--ink);
}
.zero .brand {
justify-self: start;
}
.zero .brand img {
height: 132px;
width: auto;
display: block;
mix-blend-mode: multiply;
}
.zero .side {
display: flex;
flex-direction: column;
gap: 0.05rem;
}
.zero .side.left { text-align: right; padding-right: 0.3rem; }
.zero .side.right { text-align: left; padding-left: 0.3rem; }
.zero .sublabel {
font-family: var(--sans);
font-weight: 500;
font-size: 0.7rem;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--muted);
}
.zero .subvalue {
font-family: var(--sans);
font-weight: 500;
font-size: 1.45rem;
color: var(--ink);
font-feature-settings: "lnum" 1, "tnum" 1;
}
.zero .subvalue .cent { font-size: 0.7em; vertical-align: 0.4em; color: var(--muted); margin-left: 0.08em; }
.zero .center { text-align: center; padding: 0 0.4rem; }
.zero .zlabel {
font-family: var(--sans);
font-weight: 500;
font-size: 0.72rem;
letter-spacing: 0.36em;
text-transform: uppercase;
color: var(--muted);
margin: 0 0 0.15rem;
}
.zero .zvalue {
font-family: var(--sans);
font-weight: 500;
font-size: clamp(3rem, 7vw, 4.4rem);
line-height: 0.95;
letter-spacing: -0.015em;
margin: 0;
color: var(--sage);
font-feature-settings: "lnum" 1, "tnum" 1;
}
.zero .zvalue .dollar { font-size: 0.5em; vertical-align: 0.4em; color: var(--muted); margin-right: 0.04em; font-weight: 400; }
.zero .zvalue .cent { font-size: 0.38em; vertical-align: 1em; color: var(--muted); margin-left: 0.05em; font-weight: 400; }
.zero .zvalue.positive { color: var(--ochre); }
.zero .zvalue.negative { color: var(--accent); }
.zero .zcaption {
font-family: var(--sans);
font-style: italic;
font-weight: 400;
font-size: 0.88rem;
color: var(--muted);
margin: 0.2rem 0 0;
letter-spacing: 0.02em;
}
/* =============== GROUPS =============== */
.ledger-group { border-bottom: 1px solid var(--ink); }
.ledger-group[open] { padding-bottom: 0.6rem; }
.ledger-group > summary {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 0.75rem;
align-items: baseline;
padding: 0.6rem 0 0.4rem;
cursor: pointer;
list-style: none;
user-select: none;
border-bottom: 1px solid var(--rule);
}
.ledger-group > summary::-webkit-details-marker { display: none; }
.ledger-group[open] > summary { border-bottom: none; }
.ledger-group .chev {
display: inline-block;
width: 0.7rem;
height: 0.7rem;
position: relative;
transform: rotate(-90deg);
transition: transform 0.15s ease;
}
.ledger-group .chev::before {
content: "";
position: absolute; top: 50%; left: 0;
width: 0.7rem; height: 1px;
background: var(--ink); transform: translateY(-0.5px);
}
.ledger-group .chev::after {
content: "";
position: absolute; top: 50%; left: 50%;
width: 1px; height: 0.7rem;
background: var(--ink); transform: translate(-50%, -50%);
transition: opacity 0.15s ease;
}
.ledger-group[open] > summary .chev { transform: rotate(0); }
.ledger-group[open] > summary .chev::after { opacity: 0; }
.group-name {
font-family: var(--sans);
font-weight: 700;
font-size: 1.25rem;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.group-total {
font-family: var(--sans);
font-weight: 500;
font-size: 1rem;
font-feature-settings: "lnum" 1, "tnum" 1;
}
.group-total .slash { color: var(--rule); margin: 0 0.15em; font-weight: 300; }
.group-total .planned { color: var(--muted); font-size: 0.92em; font-weight: 400; }
/* =============== SECTIONS =============== */
.ledger-section {
padding: 0.4rem 0 0.4rem;
display: grid;
grid-template-columns: minmax(0, 1fr);
}
.ledger-section + .ledger-section { border-top: 1px dashed var(--rule); }
.section-header {
display: grid;
grid-template-columns: 1fr auto;
gap: 0.5rem;
align-items: baseline;
padding: 0.15rem 0.25rem 0.2rem;
}
.section-title {
font-family: var(--sans);
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.26em;
text-transform: uppercase;
color: var(--ink-soft);
margin: 0;
}
.section-subtotal {
font-family: var(--sans);
font-weight: 500;
font-size: 0.9rem;
color: var(--ink-soft);
font-feature-settings: "lnum" 1, "tnum" 1;
}
.section-subtotal .slash { color: var(--rule); margin: 0 0.2em; font-weight: 300; }
.section-subtotal .planned { color: var(--muted); font-weight: 400; }
/* =============== ENTRY ROWS — very dense =============== */
.entries { display: grid; grid-template-columns: minmax(0, 1fr); }
.entry {
display: grid;
grid-template-columns: minmax(0, 1fr) 5.5rem 5.5rem 1.2rem;
gap: 0.6rem;
align-items: baseline;
padding: 0.26rem 0.25rem 0.28rem;
position: relative;
border-bottom: 1px dotted var(--rule);
}
.entry:hover { background: var(--paper-stripe); }
.entry::after {
content: "";
position: absolute;
left: 0; right: 0; bottom: -1px;
height: 2px;
background: var(--sage-soft);
width: min(100%, calc(var(--ratio, 1) * 100%));
transition: width 0.25s ease;
opacity: 0.7;
}
.entry.over::after { background: var(--accent); opacity: 0.85; width: 100%; }
.entry.over::before {
content: "";
position: absolute;
left: 0; right: 0; bottom: -3px;
height: 2px;
background: var(--accent);
width: calc((var(--ratio, 1) - 1) * 100%);
transform: translateX(100%);
transform-origin: left;
opacity: 0.7;
}
.entry.under::after { background: var(--ochre); opacity: 0.5; }
.entry.at::after { background: var(--sage); opacity: 0.85; }
.entry-name {
font-family: var(--sans);
font-weight: 500;
font-size: 1.02rem;
color: var(--ink);
letter-spacing: 0.01em;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.entry-name input {
font: inherit;
color: inherit;
background: transparent;
border: none;
border-bottom: 1px solid transparent;
padding: 0;
width: 100%;
outline: none;
transition: border-color 0.12s;
}
.entry-name input:hover { border-bottom-color: var(--rule); }
.entry-name input:focus { border-bottom-color: var(--ink); }
.entry-num {
font-family: var(--sans);
font-weight: 500;
font-size: 1rem;
color: var(--ink);
font-feature-settings: "lnum" 1, "tnum" 1;
text-align: right;
min-width: 0;
}
.entry-num input {
font: inherit;
font-variant-numeric: tabular-nums;
color: inherit;
background: transparent;
border: none;
border-bottom: 1px solid transparent;
padding: 0;
width: 100%;
outline: none;
text-align: right;
transition: border-color 0.12s;
}
.entry-num input:hover { border-bottom-color: var(--rule); }
.entry-num input:focus { border-bottom-color: var(--ink); }
.entry-num.planned { color: var(--muted); font-weight: 400; }
.entry-num.planned input { color: var(--muted); font-weight: 400; }
.entry .delete {
font-family: var(--sans);
font-size: 1.2rem;
line-height: 1;
color: var(--rule);
background: none;
border: none;
cursor: pointer;
padding: 0;
opacity: 0;
transition: color 0.12s ease, opacity 0.12s ease;
align-self: center;
font-weight: 400;
}
.entry:hover .delete { opacity: 1; }
.entry .delete:hover { color: var(--accent); }
.entry-notes {
grid-column: 1 / -1;
font-family: var(--sans);
font-style: italic;
font-weight: 400;
font-size: 0.85rem;
color: var(--muted);
margin: 0;
padding: 0;
line-height: 1.3;
}
.entry-notes input {
font: inherit;
font-style: italic;
color: inherit;
background: transparent;
border: none;
padding: 0;
width: 100%;
outline: none;
}
.entry-notes input::placeholder {
color: var(--rule);
font-style: italic;
}
.entry-notes:has(input:placeholder-shown) { display: none; }
.entry:hover .entry-notes:has(input:placeholder-shown) { display: block; opacity: 0.5; }
.tag {
font-family: var(--sans);
font-size: 0.58rem;
font-weight: 600;
letter-spacing: 0.26em;
text-transform: uppercase;
padding: 0.03rem 0.4rem 0.05rem;
margin-left: 0.45rem;
vertical-align: 0.15em;
border: 1px solid currentColor;
color: var(--ochre);
}
.tag.new { color: var(--indigo); }
/* =============== PRIMARY DEBT TARGET =============== */
.target-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 5.5rem 5.5rem 1.2rem;
gap: 0.6rem;
align-items: baseline;
padding: 0.4rem 0.25rem 0.4rem 0.75rem;
border-left: 3px solid var(--accent);
background: linear-gradient(90deg, rgba(115, 38, 41, 0.05), transparent 40%);
position: relative;
}
.target-row::before {
content: "↳";
position: absolute;
left: -1.1rem;
top: 0.35rem;
color: var(--accent);
font-family: var(--sans);
font-size: 1rem;
font-weight: 400;
}
.target-row .label {
font-family: var(--sans);
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.26em;
text-transform: uppercase;
color: var(--accent);
margin-right: 0.6rem;
}
.target-row .name {
font-family: var(--sans);
font-weight: 600;
font-size: 1.02rem;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.target-row .detail {
font-family: var(--sans);
font-size: 0.75rem;
color: var(--muted);
font-style: italic;
margin-left: 0.5rem;
letter-spacing: 0.01em;
}
.target-row .amount {
font-family: var(--sans);
font-weight: 500;
font-size: 1rem;
font-feature-settings: "lnum" 1, "tnum" 1;
text-align: right;
}
/* =============== ADD LINK =============== */
.add-link {
font-family: var(--sans);
font-style: italic;
font-weight: 400;
font-size: 0.85rem;
color: var(--muted);
background: none;
border: none;
padding: 0.15rem 0.25rem;
cursor: pointer;
letter-spacing: 0.02em;
transition: color 0.12s ease;
text-align: left;
justify-self: start;
}
.add-link:hover { color: var(--ink); }
.add-link::before { content: "+ "; font-style: normal; color: var(--rule); }
/* =============== COLOPHON =============== */
.colophon {
text-align: center;
margin: 2rem 0 0;
padding-top: 1rem;
border-top: 1px solid var(--rule);
font-family: var(--sans);
font-style: italic;
font-weight: 400;
font-size: 0.78rem;
color: var(--muted);
letter-spacing: 0.08em;
}
.colophon .signoff {
font-family: var(--sans);
font-size: 0.62rem;
font-style: normal;
font-weight: 600;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--muted);
margin-top: 0.2rem;
}
/* =============== RESPONSIVE =============== */
@media (max-width: 640px) {
.zero { grid-template-columns: 1fr; gap: 0.5rem; text-align: center; padding: 0.75rem 0.25rem; }
.zero .brand { justify-self: center; }
.zero .brand img { height: 100px; }
.zero .side.left, .zero .side.right { text-align: center; padding: 0; }
.zero .center { padding: 0.25rem 0; }
}
@media (max-width: 520px) {
.page { padding: 1rem 0.85rem 2rem; }
.month-line { grid-template-columns: 1fr 1fr; gap: 0.4rem; }
.month-line .month-title { grid-column: 1 / -1; text-align: center; font-size: 1.1rem; }
.month-line .state,
.month-line .btn-close { grid-column: 1 / -1; text-align: center; justify-self: center; }
.entry { grid-template-columns: minmax(0, 1fr) 4.6rem 4.6rem 1rem; gap: 0.4rem; }
.target-row { grid-template-columns: minmax(0, 1fr) 4.6rem 4.6rem 1rem; }
}
</style>
</head>
<body>
<div class="page">
<!-- MONTH NAV — top line -->
<nav class="month-line">
<a class="nav-month prev" href="#"><span class="chev"></span> <em>March</em></a>
<h2 class="month-title">April<span class="year">MMXXVI</span></h2>
<a class="nav-month next" href="#"><em>May</em> <span class="chev"></span></a>
<span class="state">Active</span>
<button class="btn-close">Close month</button>
</nav>
<div class="back-link-row">
<a class="back-link" href="#">Back to Budget </a>
</div>
<!-- ZERO HERO with logo on left -->
<section class="zero">
<div class="brand">
<img src="assets/logo-full.png" alt="Quartermaster">
</div>
<div class="side left">
<div class="sublabel">Applied</div>
<div class="subvalue">$2,500<span class="cent">.00</span></div>
</div>
<div class="center">
<p class="zlabel">Zero Amount</p>
<h2 class="zvalue"><span class="dollar">$</span>0<span class="cent">.00</span></h2>
<p class="zcaption">the month balances</p>
</div>
<div class="side right">
<div class="sublabel">Planned</div>
<div class="subvalue">$2,500<span class="cent">.00</span></div>
</div>
</section>
<!-- INCOME -->
<details class="ledger-group" open>
<summary>
<span class="chev" aria-hidden="true"></span>
<span class="group-name">Income</span>
<span class="group-total">$2,500.00 <span class="slash">/</span> <span class="planned">$2,500.00</span></span>
</summary>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Incomes</h3>
<div class="section-subtotal">$2,500.00 <span class="slash">/</span> <span class="planned">$2,500.00</span></div>
</header>
<div class="entries">
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Paycheck" aria-label="Name"></span>
<span class="entry-num planned"><input value="2500.00" aria-label="Planned"></span>
<span class="entry-num"><input value="2500.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="biweekly deposit, direct to checking" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add income</button>
</section>
</details>
<!-- COMMITTED -->
<details class="ledger-group" open>
<summary>
<span class="chev" aria-hidden="true"></span>
<span class="group-name">Committed</span>
<span class="group-total">$1,720.00 <span class="slash">/</span> <span class="planned">$1,720.00</span></span>
</summary>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Fixed Amount Bills</h3>
<div class="section-subtotal">$1,280.00 <span class="slash">/</span> <span class="planned">$1,280.00</span></div>
</header>
<div class="entries">
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Rent" aria-label="Name"></span>
<span class="entry-num planned"><input value="1200.00" aria-label="Planned"></span>
<span class="entry-num"><input value="1200.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="ACH 1st, acct …4421" aria-label="Notes" placeholder="notes..."></p>
</div>
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Internet" aria-label="Name"></span>
<span class="entry-num planned"><input value="80.00" aria-label="Planned"></span>
<span class="entry-num"><input value="80.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add fixed bill</button>
</section>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Debt Minimums</h3>
<div class="section-subtotal">$70.00 <span class="slash">/</span> <span class="planned">$70.00</span></div>
</header>
<div class="entries">
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Card B" aria-label="Name"></span>
<span class="entry-num planned"><input value="30.00" aria-label="Planned"></span>
<span class="entry-num"><input value="30.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="15.99% APR, min only" aria-label="Notes" placeholder="notes..."></p>
</div>
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Card C" aria-label="Name"></span>
<span class="entry-num planned"><input value="40.00" aria-label="Planned"></span>
<span class="entry-num"><input value="40.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="21.4% APR, min only" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add debt minimum</button>
</section>
<div class="target-row">
<span><span class="label">Primary Debt Target</span><span class="name">Card A</span><span class="detail">28.9% APR · avalanche focus</span></span>
<span class="amount planned" style="color: var(--muted); font-weight: 400;">370.00</span>
<span class="amount">370.00</span>
<span></span>
</div>
</details>
<!-- SAVINGS (collapsed) -->
<details class="ledger-group">
<summary>
<span class="chev" aria-hidden="true"></span>
<span class="group-name">Savings</span>
<span class="group-total">$300.00 <span class="slash">/</span> <span class="planned">$300.00</span></span>
</summary>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Sinking Funds</h3>
<div class="section-subtotal">$300.00 <span class="slash">/</span> <span class="planned">$300.00</span></div>
</header>
<div class="entries">
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Emergency fund" aria-label="Name"></span>
<span class="entry-num planned"><input value="300.00" aria-label="Planned"></span>
<span class="entry-num"><input value="300.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="target: 3 mo expenses (~$11k)" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add sinking fund</button>
</section>
</details>
<!-- FLEXIBLE -->
<details class="ledger-group" open>
<summary>
<span class="chev" aria-hidden="true"></span>
<span class="group-name">Flexible</span>
<span class="group-total">$480.00 <span class="slash">/</span> <span class="planned">$470.00</span></span>
</summary>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Food and Essentials</h3>
<div class="section-subtotal">$430.00 <span class="slash">/</span> <span class="planned">$400.00</span></div>
</header>
<div class="entries">
<div class="entry over" style="--ratio: 1.075">
<span class="entry-name"><input value="Groceries" aria-label="Name"><span class="tag">modified</span></span>
<span class="entry-num planned"><input value="400.00" aria-label="Planned"></span>
<span class="entry-num"><input value="430.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="over by $30, store run 28th" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add food entry</button>
</section>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Subscriptions</h3>
<div class="section-subtotal">$30.00 <span class="slash">/</span> <span class="planned">$40.00</span></div>
</header>
<div class="entries">
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Streaming" aria-label="Name"></span>
<span class="entry-num planned"><input value="15.00" aria-label="Planned"></span>
<span class="entry-num"><input value="15.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input aria-label="Notes" placeholder="notes..."></p>
</div>
<div class="entry under" style="--ratio: 0.6">
<span class="entry-name"><input value="Cloud backup" aria-label="Name"></span>
<span class="entry-num planned"><input value="25.00" aria-label="Planned"></span>
<span class="entry-num"><input value="15.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="prorated, billed mid-cycle" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add subscription</button>
</section>
<section class="ledger-section">
<header class="section-header">
<h3 class="section-title">Other</h3>
<div class="section-subtotal">$20.00 <span class="slash">/</span> <span class="planned">$30.00</span></div>
</header>
<div class="entries">
<div class="entry under" style="--ratio: 0.666">
<span class="entry-name"><input value="Parking" aria-label="Name"></span>
<span class="entry-num planned"><input value="30.00" aria-label="Planned"></span>
<span class="entry-num"><input value="20.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input aria-label="Notes" placeholder="notes..."></p>
</div>
<div class="entry at" style="--ratio: 1">
<span class="entry-name"><input value="Mother's Day gift" aria-label="Name"><span class="tag new">new this month</span></span>
<span class="entry-num planned"><input value="0.00" aria-label="Planned"></span>
<span class="entry-num"><input value="0.00" aria-label="Applied"></span>
<button class="delete" aria-label="Delete">×</button>
<p class="entry-notes"><input value="~$40 first week of May" aria-label="Notes" placeholder="notes..."></p>
</div>
</div>
<button class="add-link">add other</button>
</section>
</details>
<footer class="colophon">
the art of giving every dollar a job
<div class="signoff">Quartermaster · MMXXVI</div>
</footer>
</div>
</body>
</html>