--- version: alpha name: burr-and-edge-design description: "A light steel-grey workshop canvas (#e6e8ea) with near-black ink (#22262a), a fourth light palette in the gallery but cooler and more industrial than the cream or stoneware systems built earlier the same batch. Steel blue (#2f6f8f) is the sharpened-edge accent, leather brown (#8a5a2e) marks the strop and nothing else. Chivo carries every headline in a bold grotesque, Hanken Grotesk carries prose and controls. The homepage draws one blade across four real sharpening grits, the edge profile visibly straightening and brightening at each stage." --- ## Brand Positioning Burr & Edge sharpens knives, and it exists because most sharpening-service sites sell "razor sharp" as a single claim instead of the actual process, four grits in a fixed order, each one undoing what the last one left behind. The bet here is to show the real progression, coarse to strop, and name the technical reason each stage exists, including the strop, which isn't sharpening at all, it's burr removal. If a component doesn't correspond to a real grit, a real stage, or the edge itself, it doesn't belong here. colors: accent: "#2f6f8f" accent-alt: "#8a5a2e" ink: "#22262a" ink-muted: "#585f66" canvas: "#e6e8ea" ## Logo / Wordmark System The mark is a whetstone in profile with a blade edge angled against it, mid-pass. It is not a knife alone, a sharpening steel, or a chef's-hat icon. ```svg ``` - **Lockup**: mark, then a `0.55rem` gap, then "Burr & Edge" in Chivo 700, sentence case. Mark always left of the wordmark. - **Minimum size**: mark not smaller than `18px` wide, below that the blade angle and the stone block merge. - **Clearspace**: empty margin equal to the mark's own width on all four sides. - **Don't**: don't recolor the blade line to anything but `--accent`, it's always the sharpened-edge color. Don't fill the blade shape solid, it stays an open angled line. Don't add a handle or a full knife silhouette, the mark shows the edge meeting the stone, not the whole tool. ## Color System ### Roles | Role | Token | Value | Used for | |---|---|---|---| | Canvas | `--bg` | `#e6e8ea` | Page background | | Surface | `--panel` | `#ffffff` | Nav, grit cards, table, form card | | Surface raised | `--raised` | `#eef0f1` | Row hover, cta band | | Border | `--border` | `#d7dbde` | Card edges, table rules, dividers | | Border strong | `--border-strong` | `#c2c8cc` | Decorative-only edges, bench plank | | Border UI | `--border-ui` | `#767e86` | Every interactive boundary: secondary button, input, select, stone and bench outline | | Ink | `--ink` | `#22262a` | Headlines, body copy, table cells | | Ink muted | `--dim` | `#585f66` | Labels, meta lines, helper text, dull edge lines | | Steel | `--accent` | `#2f6f8f` | Primary button, links, the sharpened edge line, mark's blade | | Leather | `--accent-alt` | `#8a5a2e` | The strop block, second-page status | Steel blue only appears on an edge once it's actually sharp, the first two (coarse, medium) draw in `--dim`, a dull grey, and only the fine and strop passes draw in `--accent`, so the color itself tracks the real physical change rather than decorating all four equally. Leather brown is the strop's own material color, reserved for that one block and the second page's status use. ### Contrast (computed from the hex values above via WCAG relative luminance) | Pairing | Ratio | Passes | |---|---|---| | `--ink` on `--bg` (headlines, body copy) | 12.40:1 | AAA | | `--ink` on `--panel` (card copy, table cells) | 15.23:1 | AAA | | `--dim` on `--bg` (labels, helper text) | 5.27:1 | AA | | `--dim` on `--panel` | 6.47:1 | AA | | `--dim` on `--raised` | 5.66:1 | AA | | `--accent` on `--bg` (links, stage labels) | 4.51:1 | AA | | `--accent` on `--panel` | 5.54:1 | AA | | `--accent` on `--raised` | 4.85:1 | AA | | `--accent-alt` on `--bg` | 4.77:1 | AA | | `--accent-alt` on `--panel` | 5.86:1 | AA | | `--accent-alt` on `--raised` | 5.13:1 | AA | | light label (`#f2f8fb`) on `--accent` fill (primary button) | 5.17:1 | AA | | `--border-ui` control edge on `--bg` (non-text, inputs) | 3.35:1 | AA (1.4.11) | | `--border-ui` control edge on `--panel` (non-text, secondary button) | 4.12:1 | AA (1.4.11) | `--border-strong` is kept for decorative-only uses, the bench plank, never a control boundary, `--border-ui` exists specifically so a real control never inherits that weaker value. typography: display: fontFamily: Chivo fontWeight: 700 body: fontFamily: Hanken Grotesk fontWeight: 400 ## Type Scale | Token | Size | Weight | Family | Line-height | Letter-spacing | Used for | |---|---|---|---|---|---|---| | `--text-display` | `clamp(2.1rem, 5vw, 3.4rem)` | 700 | Chivo | 1.1 | 0 | Homepage H1 | | `--text-page-h1` | `clamp(1.9rem, 4vw, 2.6rem)` | 700 | Chivo | 1.1 | 0 | Second-page H1 | | `--text-h2` | `1.5rem` | 700 | Chivo | 1.15 | 0 | Section headings | | `--text-h3` | `1.05rem` | 700 | Chivo | 1.2 | 0 | Grit stage names | | `--text-body` | `1rem` | 400 | Hanken Grotesk | 1.6 | 0 | Paragraph copy | | `--text-small` | `0.88rem` | 400 | Hanken Grotesk | 1.55 | 0 | Table cells, footer, meta lines | | `--text-label` | `0.78rem` | 700 | Hanken Grotesk | 1 | 0.05em, uppercase | Form labels, table headers, stage numbers | Chivo's bold grotesque reads as stamped and confident, reserved for headlines only. Hanken Grotesk carries every sentence and every control at 400 for prose and 700 for labels. ## Spacing Scale Base unit `8px`. Tokens in use: `--space-2: .5rem`, `--space-3: 1rem`, `--space-4: 1.5rem`, `--space-6: 2rem`, `--space-8: 3rem`, `--space-12: 4rem`. ## Shape `--radius: 4px` on cards, buttons, and inputs. Small and workshop-plain, reading as a bench and a stone block, not a decorative rounding choice. ## Iconography No icon library. The only non-text graphics are the logo mark and the hero's own bench-and-stones illustration (hand-built SVG). A grit number is always stated in text, never implied by color alone. ## Motion Principles Scroll draws one blade across four real grits in sequence. Each stage is a fixed-geometry edge-profile path, positioned above its own stone block, scaling from `0` to `1` with a slight overshoot as its own scroll segment completes, the same one-shot settle this gallery's other "N items arrive in sequence" systems use. The domain-specific detail is in the paths themselves, not the animation: each stage's zigzag amplitude is drawn smaller than the last, coarse jagged, strop nearly flat, and the stroke color shifts from `--dim` to `--accent` only once the edge is actually sharp (stage three onward), so the color change tracks a real physical fact rather than decorating every stage identically. Each stage's static shelf position and its animated scale live on separate nested groups from the first draft, per the lesson from Center & Pull and Rindwork earlier the same batch. One-shot sequence: nothing loops, and every stage is written out in the card grid regardless of scroll or script state. The scroll trigger measures the page's real available scroll room below the stage at load, minus a `16px` safety margin, and caps the distance at that figure (never more than `520px`). A viewport tall enough to leave under `20px` of room, or a `prefers-reduced-motion` visitor, gets all four stages already drawn and every card already visible, with no scroll listener attached at all. ## Voice & Tone Plain, technical, no macho knife-culture posturing. Burr & Edge talks like someone who actually runs the stones, not like a brand selling toughness. In practice: - **Primary button**: "Book sharpening", not "Unleash razor-sharp precision" - **Stage one copy**: "Aggressive, only used when the blade actually needs it.", not "Devastatingly sharp" - **Strop copy**: "The last pass, not a real sharpening step.", stated as a technical fact, not undersold or oversold - **Turnaround note**: named plainly on the service page (drop-off, pickup window), not implied - **Status**: "Drop-off open today, most knives ready same day." The tell that a sentence is off-brand: it reaches for toughness or intensity instead of naming the actual grit, stage, or turnaround time. ## Accessibility Baseline - **Focus ring**: `2px solid var(--accent)` at `2px` offset via `:focus-visible` on every link, button, input, and select, never removed. - **Reduced motion**: honored on the edge-drawing sequence, as described under Motion Principles. No scroll listener is attached at all when reduce is set, or when there's no real scroll room to attach one to meaningfully. - **The bench-and-stones graphic is `aria-hidden`.** It's a continuously changing illustration tied to scroll position. Nothing is communicated by it alone: every stage's grit number, name, and description is in the card grid below in plain markup at all times. - **Tap targets**: `44px` minimum height on every button, nav link, and form control. - **Structure**: one `