Panda, animal health since 1994

A system for caring without rushing

The building blocks of the Panda Clínica Veterinaria app. They come from the logo, forest green and sage, plus a lime reserved for anything you can tap. Everything on this page runs on the same code as the prototype.

Principles

Clinical calm

People usually open the app when they're worried. Light backgrounds, plenty of air and one important thing per screen. Nothing moves unless it has to.

Urgency has its own color

Coral is only for the 24-hour ER, allergies and out-of-range values. Never for decoration or promotions, so it keeps its weight.

One main action

Every screen has one primary button, and only one. On light backgrounds it's forest; on forest, it's lime.

Talk like the front desk

Short sentences, the pet's name whenever possible, no unnecessary medical jargon. Say what's happening and what to do next.

Color

Primitives sampled from the logo, plus a supporting lime and coral. Code always uses the semantic tokens, never raw hex values.

Semantic tokens

TokenValueUse

Approved pairings

Lime is never used as text on light backgrounds: it doesn't meet contrast. It works as a button fill on forest, as an active indicator, or as a badge.

Typography

Young Serif for titles and large numbers: it carries the weight and rounded terminals of the logo's serif. Albert Sans for everything else, readable from 12 px. Nothing below 12 px and no sustained all caps.

Spacing, radius and elevation

4 px grid. 20 px side margins, 10 px between sibling cards, 28 px between sections. Radius grows with the size of the element instead of one value for everything.

Radius

Elevation

FlatCards, lists and almost everything else. Contrast with the background is enough.
FloatingToasts and the center button. --e-float
SheetBottom sheets over a scrim. --e-sheet

Icons

2 px stroke on a 24 px grid, rounded caps. In lists they sit inside a 40 px sage container; in the tab bar they stand alone.

Buttons

52 px tall, pill shaped. The label says exactly what happens: "Confirm appointment", not "OK".

Primary: forest on light, lime on forest. Urgent: only for the ER and actions that can't be undone. Cancel is a secondary button with coral text, so it never competes with the primary.

Selection and forms

Large option and tile

Selected items get a 2 px forest border and a light lime fill. No shadows: the border change is enough and the layout doesn't jump.

Cards, lists and notices

Mora's next appointment

Today, 5:30 pm

Check-up with Dr. Ferreyra

Balance due

$8,750

Mora's feline distemper vaccine

Forest card: one per screen, for the most important thing. White card: everything else.

List row

Badges and notices

Up to dateIn 5 daysReviewProcessing24 h MTPM

Pets are shown with their initial on a soft color, never with stock illustrations. A real photo replaces it when the owner adds one.

Booking components

Unavailable days and times are struck through and outlined, never hidden. That way it reads as a full schedule, not as missing information.

Voice and tone

Like Panda's best front-desk person: warm, clear and to the point. The app ships in Rioplatense Spanish, so it uses vos, the pet's name and concrete verbs. English translations below.

Do

Mora tiene turno hoy a las 17:30Mora has an appointment today at 5:30 pm

La creatinina está un poco alta. No es urgente.Creatinine is a bit high. It's not urgent.

Cancelaste la ecografía de ThorYou canceled Thor's ultrasound

Falta el dominio. Por ejemplo, @gmail.comThe domain is missing. For example, @gmail.com

Don't

Recordatorio: cita programadaReminder: scheduled appointment

Valor fuera de rango de referenciaValue outside reference range

Operación realizada con éxitoOperation completed successfully

Error: email inválidoError: invalid email