Paw Forecast · sample
80205 · Denver
Open until 10:30
Sample morning. Not a live forecast.
Air 61°F
Pavement Low
Wind 6 mph
-
PavementLow
-
ColdLow
-
SmokeLow
Guidance, not veterinary advice.
B Bravo · phonetic
A living style guide for a meteorologist’s pet-safety brand. Warm, specific, and built for a phone in a driveway. Sand, blue-black ink, canyon copper, and aspen. Not purple, and not a food brand.
Paw Forecast · sample
80205 · Denver
Open until 10:30
Sample morning. Not a live forecast.
Air 61°F
Pavement Low
Wind 6 mph
Guidance, not veterinary advice.
Field manual v0 DEN B · Bravo Sand / ink / copper / aspen No purple Not pet food
01
A trusted neighbor who happens to forecast the weather. Praise-first, never baby talk, never a lecture. Name the hazard, the time, and the next action.
Walk before 10:30. After that, hold the back of your hand on the pavement. If you can’t keep it there, neither can their paws.
Clipped horses: medium blanket tonight. Unclipped horses with shelter can stay bare. If the coat gets wet, look again.
Give a clock time and a place. “Shade the rest of the loop” beats “be careful out there.”
Say “good dog” like a person, not a brand mascot.
Cite the threshold when you state a risk, and keep the veterinary disclaimer in the same view.
Don’t write “Your fur baby is gonna fry!!!” Alarm is not care.
Don’t write “As per the meteorological assessment, ambulation is contraindicated.” The desk is plain language.
Don’t sell, name, or joke about food, treats, chews, or supplements.
02
Tokens live as custom properties in src/styles/02-tokens.css, inside @layer tokens. Components consume the semantic names, never raw hex.
Front Range light on the page, a forecaster’s blue-black ink for type, canyon copper for action, aspen for “go.” Sky is support for cold and links. Heat is only a risk color. Purple is reserved for the example of what not to do.
Use copper for the one action you want. Use aspen only when the window is actually open. Pair every risk color with a word: Low, Moderate, High, Extreme.
Don’t introduce purple, violet, or a generic indigo as a brand color. This button meets contrast and is still off-brand.
Newsreader carries headlines and the briefing voice. Atkinson Hyperlegible, from the Braille Institute, carries UI and body copy so a hazard is readable in driveway sun. IBM Plex Mono is the station instrument: ZIP codes, temperatures, eyebrows. Nothing smaller than 12px.
Walk before it bites.
Blanket call for the Front Range.
Good dog. Good timing.
If you can’t hold the back of your hand on the pavement, it is too hot for paws. Booties or a grass detour, or wait for the next window.
80205 · 61°F · open until 10:30
Buttons, the theme control, the menu toggle, and tab labels use --radius-button (10px). Credit chips and avatars stay on --radius-xs (2px). Cards keep --radius-md. Page width stops at --container-lg (72rem).
Durations are 80, 160, 240, and 480ms, with a quick ease-out. Risk meters fill once. An open-window dot breathes. Scroll-driven rules draw in where animation-timeline exists. Theme changes use a view transition when the user has not asked for less motion.
Under prefers-reduced-motion: reduce, durations drop to 0 and decorative animation is removed. The information stays. Surfaces are opaque; if you add translucency, also honor prefers-reduced-transparency.
| Token | Use |
|---|---|
| --duration-fast | Hover and toggles, 160ms |
| --duration-base | Theme view transition, 240ms |
| --duration-slow | Meter fill, 480ms |
| --z-dropdown | Mobile navigation panel |
| --z-modal | Reserved for dialog layering notes. Native dialog uses the top layer. |
The mark is a sand tile, a paw, and a copper pennant. The pennant is the weather signal. There is no exclamation mark, no bone, and no cartoon dog. The wordmark sets “Bravo” in Newsreader and “Pet” in Atkinson. “Weather & Care” is the descriptor, in mono.
Files: favicon.svg, favicon.ico, apple touch icon, mark.svg.
One sprite, 24px viewBox, 1.75 stroke, round caps and joins. Weather and animals share the stroke. Decorative icons are aria-hidden. A control that is only an icon still needs a text name.
03
People look for the animal first. Photography is part of the system, in the same way type and copper are. The hero on this page is the pattern: a real outdoor dog, a squared frame with copper corner ticks, and the walk window sitting on the picture.
Real, warm, and candid. Outdoors, or a window with weather on the other side. Colorado light when we have it: dry grass, high-country rock, a pasture before dusk. No cheesy studio sets, no costumes, no cartoon filters, and no pictures that make BravoPet look like a food brand.
Show the animal large enough to recognize. Name the place and the hour in the caption. Pair the photo with a walk-window badge when the picture is about timing.
Write alt text that says what is in the frame. If the photo is a placeholder, say so. If the name is already in a heading, the avatar can stay short.
Don’t use purple duotones, stock smiles on white seamless, or text baked into the JPEG. Don’t put a sentence on the fur unless it sits on the paper credit chip.
Don’t describe a placeholder as one of the family’s pets. Juniper, Cinder, and Pebble are sample names.
The build writes AVIF, WebP, and JPEG at several widths. Pages use picture, srcset, and sizes. The hero image is eager and preloaded. Everything below the fold is lazy. Width and height travel with the file so the layout does not jump.
| Use | Ratio | Treatment |
|---|---|---|
| Hero | 3:2, 4:3 from 60rem | Cover crop, copper corner ticks, paper credit chip |
| Photo card | 3:2 | Same frame, a warm copper wash, badge in the corner |
| Mosaic | 4:5 lead, 3:2 rest | One tall tile, the others stack beside it |
| Avatar | 1:1 | Squared --radius-xs (2px), tighter than a button |
Avatars are 1:1 cover crops at 2px radius, so a face does not turn into a social-app circle. Buttons are a separate 10px radius.
The picture carries the feeling. The badge carries the decision. Color is never the only signal, and the caption says the photo is a sample.
Open until 10:30
80205 · morning window
Dirt road, sample. Not a live forecast. Photo · Alvan Nee
Medium blanket
Pasture · tonight
Horses in the same system as dogs. Photo · Pavan Naik
A gallery for a household: dogs first, then another pet at the window. Horses sit in the forecast cards above. On a narrow screen the tiles stack. From 48rem the lead tile is tall and the others sit beside it.
Tall grass
Photo · Jan Antonin Kolar
Open grass
Photo · Jamie Street
Window watch
Photo · Gaelle Marcel
Placeholders are Unsplash photographs under the Unsplash License, which allows commercial use. The family’s pictures replace them by dropping a file in src/photos/household/. The full record is the credits file.
04
HTML first. JavaScript is for the theme toggle and for opening a dialog. Menus, tabs, and forms work without it.
Links navigate. Buttons act. A copper button is the one primary action in a view. The amber tick on its leading edge is a legend swatch, not decoration for its own sake.
Read the accessibility notes before adding a color. Forecast facts point at the National Weather Service (external).
A link, because it navigates.
A button pretending to be navigation. Use an anchor.
The signature component. Corner ticks mark it as an instrument, not a marketing card. Status is a word plus a meter, never color alone.
Paw Forecast · sample afternoon
80205 · Denver
Stay in after 11:00
Sample. Not a live forecast.
Air 91°F
Pavement High
Smoke Moderate
Guidance, not veterinary advice. Stripes on Extreme stay readable if the hue is lost.
Blanket Call · sample
Medium blanket
Clipped horses get a medium blanket. Unclipped horses with shelter can stay bare.
Sample, from extension guidance. Not a guarantee. Illustration is original and geometric, on the same stroke as the icons.
These specimens are quiet on purpose. In the product, a warning inserted after load uses role="alert". A status that can wait uses role="status". Don’t put either role on content that is present at first paint.
Window open
Walk before 10:30. Pavement is comfortable right now.
Smoke is drifting in
Shorten the loop if the air looks thick. This is a sample, not today’s air quality.
Narrow window
You have until noon. After that, use grass or booties.
Pavement can burn
Sample: after 11:00 this surface is too hot for paws. Cross in the grass or wait.
Guidance, not veterinary advice.
A radio group, so it works with no script. Arrow keys move between the labels. The visible panel is the checked choice.
Native dialog. Opening it needs the small script. Closing uses the dialog form method, Escape, or a click on the backdrop. Focus returns to the button that opened it.
This is the static shape, so the guide still shows it with scripts off and in screenshots.
Guidance, not veterinary advice.
| Desk | Signal | Sample reading | What we say |
|---|---|---|---|
| Paw Forecast | Pavement | 77°F air, full sun | Asphalt can run near 125°F. Say so, and cite the source on the live page. |
| Blanket Call | Cold, dry | Unclipped, sheltered | Often no blanket. Clipped, thin, or wet horses are a different call. |
| Trail Desk | Water | Algae advisory | When in doubt, stay out. Link the official notice. |
Passport covers dogs, horses, and other pets in one household. These three are samples, not a real family’s records.
Sample · Dog
Senior · double coat
Sample · Horse
Clipped · medium blanket
Sample · Other
Indoor · carrier by the door
05
:focus-visible. In forced colors the ring is Highlight. Every control is reachable from the keyboard.aria-pressed is true when dark is on. Other controls stay at least 48px on the short side. Body text stays at least 12px, inputs at 16px.h1, a skip link, and landmarks on every page. Photos have alt text. Forms have labels and text errors.prefers-color-scheme sets the first visit. The header toggle stores light or dark in localStorage under bravopet-theme. The icon crossfade is a short rotate and fade, and it is off when motion is reduced.prefers-reduced-motion removes the meter fill, the badge pulse, the scroll-drawn rule, the icon swap, and the theme crossfade.prefers-contrast: more darkens secondary text and thickens borders. forced-colors keeps borders and text, and maps meter fills to CanvasText.script-src 'self' and style-src 'self'.06
“Bravo” is B in the phonetic alphabet, a call-sign sibling of Whiskey Delta. It also reads as “well done.” The logo does not use an exclamation mark.
A live registration, “BRAVO!”, covers animal food. BravoPet is weather, records, and media. It does not sell pet food, treats, chews, or supplements, and pages must not look like they do. Position the desk as pet weather and care.
Health copy is guidance with a cited threshold and a veterinary disclaimer. It is not a diagnosis. Passport worksheets, when they exist, are notes to take to an attorney, not legal documents.
Forecasts and care notes are guidance, not veterinary advice, and not a guarantee. BravoPet does not sell pet food, treats, chews, or supplements.