Design Specification — Cámara Oficial de Comercio, Industria y Servicios de la provincia de Huesca
| Field | Value |
| Site / Project | https://www.camarahuesca.com |
| Analyzed on | 2026-09-02 |
| Analysis mode | Automated code extraction (no AI) |
Overview
This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#A3002A). Display headings use a distinct face (var(--font-serif)) over the body stack (var(--font-sans)). Detected font weights: 300, 400, 500, 600, 700, 800. Detected style signatures: glassmorphism; soft-ui / layered elevation; rounded / pill-heavy.
Logo asset(s): https://www.camarahuesca.com/wp-content/themes/camara-huesca/assets/img/logo-camara-huesca-322.png · https://www.camarahuesca.com/wp-content/uploads/2022/07/logo-fundesa.jpg
Color System
Detected palette (by frequency)
| Hex | RGB | HSL | Count |
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 59 |
#C2002F | 194, 0, 47 | 345° 100% 38% | 27 |
#000000 | 0, 0, 0 | 0° 0% 0% | 27 |
#A3002A | 163, 0, 42 | 345° 100% 32% | 5 |
#F9FAFB | 249, 250, 251 | 210° 20% 98% | 4 |
#25D366 | 37, 211, 102 | 142° 70% 49% | 3 |
#7C3AED | 124, 58, 237 | 262° 83% 58% | 3 |
#334155 | 51, 65, 85 | 215° 25% 27% | 3 |
#DC2626 | 220, 38, 38 | 0° 72% 51% | 3 |
#DDDDDD | 221, 221, 221 | 0° 0% 87% | 2 |
#1F2937 | 31, 41, 55 | 215° 28% 17% | 2 |
#4B5563 | 75, 85, 99 | 215° 14% 34% | 2 |
#E5E7EB | 229, 231, 235 | 220° 13% 91% | 2 |
#6B7280 | 107, 114, 128 | 220° 9% 46% | 2 |
#E2E8F0 | 226, 232, 240 | 214° 32% 91% | 2 |
#991B1B | 153, 27, 27 | 0° 70% 35% | 2 |
#7A00DF | 122, 0, 223 | 273° 100% 44% | 1 |
#007CBA | 0, 124, 186 | 200° 100% 36% | 1 |
#006BA1 | 0, 107, 161 | 200° 100% 32% | 1 |
#005A87 | 0, 90, 135 | 200° 100% 26% | 1 |
Assigned roles
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
--color-primary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-accent | #A3002A | 163, 0, 42 | 345° 100% 32% |
--color-background | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-surface | #F9FAFB | 249, 250, 251 | 210° 20% 98% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #334155 | 51, 65, 85 | 215° 25% 27% |
--color-border | #DDDDDD | 221, 221, 221 | 0° 0% 87% |
--color-on-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
Surface ramp (derived from detected light neutrals)
| Token | Hex |
--color-surface-container-lowest | #FFFFFF |
--color-surface-container-low | #F9FAFB |
--color-surface-container | #F3F4F6 |
--color-surface-container-high | #E2E8F0 |
--color-surface-container-highest | #E5E7EB |
Gradients
linear-gradient(to bottom,transparent 0,rgba(255,255,255,.9) 50%,#fff 100%)
linear-gradient(135deg,#c2002f 0,#9e0127 100%)
linear-gradient(135deg,#d10032 0,#c2002f 100%)
linear-gradient(135deg,#faf5ff 0,#ede9fe 100%)
linear-gradient(to bottom,#fff 0,#f1f4f8 100%)
linear-gradient(135deg,#c2002f 0,#a3002a 100%)
radial-gradient(circle,rgba(255,255,255,.1) 0,transparent 70%)
Typography
Primary typeface: var(--font-sans) — stack: var(--font-sans)
Display / heading typeface: var(--font-serif) (used for large headings; body uses the primary stack)
Font stacks (most used first)
var(--font-sans)
var(--font-serif)
'Inter'
'Playfair Display'
inherit
Derived type scale
| Token | Size |
| headline-lg | 40px |
| headline-md | 28px |
| title-lg | 22px |
| body-lg | 18px |
| body-md | 16px |
| label-md | 14px |
| label-sm | 12px |
Font sizes (by frequency)
| Size | Count |
| .875rem | 18 |
| .75rem | 11 |
| .8125rem | 11 |
| 1rem | 8 |
| .9375rem | 8 |
| 1.125rem | 6 |
| 2.5rem | 5 |
| 1.25rem | 4 |
| 1.75rem | 4 |
| 2rem | 4 |
| 15px | 3 |
| 14px | 3 |
| 1.0625rem | 3 |
| .625rem | 2 |
| .5rem | 2 |
| 1.5rem | 2 |
| 1em | 1 |
| 22px | 1 |
| 16px | 1 |
| 20px | 1 |
Weights in use: 300, 400, 500, 600, 700, 800
Line heights (by frequency)
| Value | Count |
| 1.2 | 9 |
| 1.7 | 6 |
| 1.6 | 5 |
| 1.3 | 4 |
| 1.5 | 4 |
| 1.4 | 3 |
| 1 | 2 |
| 1.1 | 1 |
| 1.25 | 1 |
Letter spacing (by frequency)
| Value | Count |
| .05em | 3 |
| .025em | 3 |
| .1em | 2 |
| .08em | 1 |
Spacing
Derived spacing scale
| Token | Value |
| unit | 8px |
| xs | 4px |
| sm | 8px |
| md | 16px |
| lg | 32px |
| xl | 64px |
Raw values (by frequency)
| Value | Count |
| .5rem | 36 |
| 1rem | 23 |
| .75rem | 18 |
| 2rem | 12 |
| 1.5rem | 11 |
| 3rem | 10 |
| 2.5rem | 6 |
| 1.25rem | 6 |
| .375rem | 6 |
| .25rem | 6 |
| 4rem | 6 |
| 12px | 5 |
| 5rem | 5 |
| .875rem | 4 |
| 16px | 2 |
| 20px | 2 |
Borders & Radius
Derived radius tokens
| Token | Value |
| sm | 2px |
| md | 8px |
| lg | 24px |
| pill | 50% |
Raw values (resolved, by frequency)
| Radius | Count |
50% | 8 |
.5rem | 8 |
1rem | 5 |
16px | 4 |
.75rem | 4 |
8px | 3 |
6px | 3 |
1.5rem | 3 |
9999px | 2 |
.625rem | 2 |
2px | 1 |
0 0 .5rem .5rem | 1 |
Shadows
Derived elevation
| Token | Value |
| sm | 0 4px 8px rgba(194, 0, 47, 0.2) |
| md | 0 12px 30px -10px rgba(0,0,0,.15) |
| lg | 0 6px 20px rgba(37, 211, 102, 0.6) |
All detected shadows
0 4px 8px rgba(194, 0, 47, 0.2)
0 10px 40px rgba(0,0,0,.15)
0 25px 50px -12px rgba(0,0,0,.15)
0 10px 25px -5px rgba(0,0,0,.15)
0 4px 20px -5px rgba(0,0,0,.08)
0 12px 30px -10px rgba(0,0,0,.15)
0 25px 50px -12px rgba(0,0,0,.2)
0 0 0 3px
0 4px 12px rgba(37, 211, 102, 0.4)
0 6px 20px rgba(37, 211, 102, 0.6)
Layout
Container max-width: 768px
Grid columns (largest detected grid): 6
Breakpoints
- 400px
- 480px
- 640px
- 767px
- 768px
- 1023px
- 1024px
- 1200px
Animation & Motion
Transitions
all 0.3s ease
all 0.2s ease
color 0.2s
top .2s
all .3s ease
color .2s
all .2s ease
all .2s
transform .3s ease
opacity .2s ease,visibility .2s
transform .2s ease
opacity .3s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease
Keyframes
@keyframes ccSlideUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes ccFadeOut { 0% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(20px); } }
@keyframes slideInUp { from { opacity: 0; transform: translateY(100px); } to{ opacity: 1; transform: translateY(0); } }
@keyframes bounceDown { 0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(4px)} }
@keyframes aviso-ring { 0%{transform:scale(1);opacity:.6}80%{transform:scale(1.5);opacity:0}100%{transform:scale(1.5);opacity:0} }
@keyframes aviso-chevron-nudge { 0%,100%,60%{transform:translateX(0)}80%{transform:translateX(4px)} }
@keyframes camara-live-pulse { 0%{box-shadow:0 0 0 0 rgba(220,38,38,.7)}70%{box-shadow:0 0 0 .4rem rgba(220,38,38,0)}100%{box-shadow:0 0 0 0 rgba(220,38,38,0)} }
@keyframes heart-glow { 0%,100%{opacity:.5;filter:brightness(.8)}50%{opacity:1;filter:brightness(1.2)} }
@keyframes heart-pop { 0%{transform:scale(1)}50%{transform:scale(1.4)}100%{transform:scale(1)} }
Animations
ccFadeOut 0.8s ease-out forwards
slideInUp 0.5s ease-out
bounceDown 1.5s ease-in-out infinite
none
heart-glow 6s ease-in-out infinite
heart-glow 3s ease-in-out infinite
heart-pop .3s ease-out
CTA labels found on page
- Institución
- Sede electrónica
- Contactar Ahora
- Suscribirme
- Más información
- ¡Contacta con nosotros!
- ¡Únete al club!
Effects
- backdrop-filter:
blur(12px)
- backdrop-filter:
blur(10px)
Source Design Tokens (CSS custom properties)
:root {
--wp-block-synced-color: #7a00df;
--wp-block-synced-color--rgb: 122,0,223;
--wp-bound-block-color: var(--wp-block-synced-color);
--wp-editor-canvas-background: #ddd;
--wp-admin-theme-color: #007cba;
--wp-admin-theme-color--rgb: 0,124,186;
--wp-admin-theme-color-darker-10: #006ba1;
--wp-admin-theme-color-darker-10--rgb: 0,107,160.5;
--wp-admin-theme-color-darker-20: #005a87;
--wp-admin-theme-color-darker-20--rgb: 0,90,135;
--wp-admin-border-width-focus: 2px;
--wp--preset--font-size--normal: 16px;
--wp--preset--font-size--huge: 42px;
--primary: #fff;
}
Do's and Don'ts
Do
- Do reserve the accent
#A3002A for interactive highlights and key moments — it is used sparingly on the source page.
- Do keep the canvas at
#FFFFFF; surfaces should stay within the detected neutral ramp.
- Do set large headings in
var(--font-serif), and body copy in the primary stack.
- Do stick to the detected font weight(s): 300, 400, 500, 600, 700, 800.
- Do align spacing to the 8px base unit derived from the page.
Don't
- Don't introduce colors outside the detected palette — every hue above was found in the source.
Design Tokens (copy-paste)
:root {
--color-primary: #FFFFFF;
--color-accent: #A3002A;
--color-background: #FFFFFF;
--color-surface: #F9FAFB;
--color-text-primary: #000000;
--color-secondary: #000000;
--color-text-secondary: #334155;
--color-border: #DDDDDD;
--color-on-primary: #000000;
--color-on-secondary: #FFFFFF;
--color-on-accent: #FFFFFF;
--color-surface-container-lowest: #FFFFFF;
--color-surface-container-low: #F9FAFB;
--color-surface-container: #F3F4F6;
--color-surface-container-high: #E2E8F0;
--color-surface-container-highest: #E5E7EB;
--font-sans: var(--font-sans);
--font-size-headline-lg: 40px;
--font-size-headline-md: 28px;
--font-size-title-lg: 22px;
--font-size-body-lg: 18px;
--font-size-body-md: 16px;
--font-size-label-md: 14px;
--font-size-label-sm: 12px;
--radius-sm: 2px;
--radius-md: 8px;
--radius-lg: 24px;
--radius-pill: 50%;
--shadow-sm: 0 4px 8px rgba(194, 0, 47, 0.2);
--shadow-md: 0 12px 30px -10px rgba(0,0,0,.15);
--shadow-lg: 0 6px 20px rgba(37, 211, 102, 0.6);
--space-xs: 4px;
--space-sm: 8px;
--space-md: 16px;
--space-lg: 32px;
--space-xl: 64px;
--font-display: var(--font-serif);
--tracking-label: .05em;
--container-max: 768px;
}