Corillo CSS

Dark-first Design Framework · Sin dependencias · Variables CSS globales

Sin dependencias Dark-first 61.06 KB · 10.97 KB gz CSS puro 48 componentes
Descargar Documentación
<link rel="stylesheet" href="/assets/corillo.css">

Design Tokens

Variables CSS globales con el prefijo --crl-*. Aplicar en cualquier elemento.

VariableValorUso
--crl-ink#030a0eFondo principal
--crl-surface#071118Fondo secundario
--crl-panel#0d1c28Panels / modales
--crl-white#e8f6ffTexto principal
--crl-muted#3a6070Texto secundario
--crl-accent#00bfffCian — UI principal
--crl-live#e8c84aOro — en vivo
--crl-confirm#00ff9dVerde — éxito
--crl-hot#CE1126Rojo PR — alertas

Tipografía

Tres familias de fuentes: Display (Bebas Neue), Mono (Space Mono), Body (DM Sans).

--crl-2xs / .crl-2xs .7rem — Badges, stat labels, metadata mínima
--crl-xs / .crl-xs .75rem — Tags, mono labels, captions
--crl-sm / .crl-sm .85rem — Meta, descripciones secundarias
--crl-base / .crl-base 1rem — Body text
--crl-lg / .crl-lg 1.1rem — Subtítulos, énfasis
--crl-xl / .crl-xl 1.4rem — Títulos de sección
--crl-2xl / .crl-2xl 2rem — Page titles
.crl-display BEBAS NEUE — DISPLAY
.crl-mono Space Mono — monospaced labels
.crl-upper uppercase + letter-spacing
<p class="crl-display crl-2xl">Título grande</p>
<p class="crl-mono crl-xs crl-upper">Etiqueta mono</p>
<p class="crl-sm" style="color:var(--crl-muted)">Descripción muted</p>

Paleta Corillo

Colores base de la plataforma: cyan, amber y rojo.

--crl-ink
--crl-surface
--crl-panel
--crl-muted
--crl-accent
--crl-live
--crl-confirm
--crl-hot
--crl-accent --crl-live --crl-confirm --crl-hot --crl-muted --crl-white
<span class="crl-text-accent">cian</span>
<span class="crl-text-live">oro</span>
<span class="crl-text-confirm">verde</span>
<span class="crl-text-hot">rojo PR</span>

Botones

Variantes de color y tamaño. Base: .btn

<button class="btn btn-primary">Primary</button>
<button class="btn btn-gold">Gold</button>
<button class="btn btn-hot">Hot</button>
<button class="btn btn-sm btn-primary">Pequeño</button>
<button class="btn btn-icon btn-outline-accent"><i class="fa-solid fa-bell"></i></button>

Badges

Etiquetas pequeñas. Base: .badge

Default Accent En Vivo Confirm Hot Dim
<span class="badge badge-live">
  <i class="fa-solid fa-circle-dot"></i> En Vivo
</span>
<span class="badge badge-accent">Accent</span>
<span class="badge badge-hot">Hot</span>

Pills

Cápsulas de estado, más compactas que badges. Base: .pill

Offline En Vivo Streaming Bitrate alto
<span class="pill pill-live">
  <span class="dot dot-sm on"></span> En Vivo
</span>
<span class="pill pill-accent">Streaming</span>

Cards

Contenedores con borde sutil. Base: .card

Default

Fondo neutro, borde sutil. Para contenido genérico.

Accent

Destacar información cian.

Live

Canal en vivo, estado activo.

Confirm

Éxito, operación completada.

Hot

Alertas, advertencias críticas.

Dim

Inactivo, placeholder.

<div class="card card-accent">
  <p class="crl-mono crl-xs crl-text-accent crl-upper">Título</p>
  <p class="crl-sm">Contenido</p>
</div>

Dots

Indicadores de estado pequeños. .dot.on pulsa en oro.

offline
en vivo
accent
alerta
xs / base / lg
<span class="dot"></span>          // offline (muted)
<span class="dot on"></span>       // en vivo (gold, pulsa)
<span class="dot dot-sm on"></span>  // pequeño
<span class="dot dot-accent"></span> // cian
<span class="dot dot-hot"></span>    // rojo

Avatares

Letras o imágenes circulares. Rings de color disponibles.

K xs
T sm
M base
4 lg
E xl
K .ava-live
M .ava-accent
! .ava-hot
<span class="ava ava-lg ava-live"
      style="background:linear-gradient(135deg,#e8c84a,#c09020)">K</span>

<span class="ava ava-xl" style="background:...">
  <img src="foto.jpg" alt="Avatar">
</span>

Inputs

Campos de texto. Base: .input

<input class="input" placeholder="Texto...">
<input class="input input-mono" placeholder="stream_key...">
<input class="input input-sm" placeholder="Compacto...">

Animaciones

Clases utilitarias para animaciones. Respeta prefers-reduced-motion.

blink
pulse
ping
spin
fade-up
<span class="dot on crl-animate-blink"></span>
<i class="fa-solid fa-circle-notch crl-animate-spin"></i>
<div class="crl-animate-fade-up">aparece desde abajo</div>

Layout Utilities

Helpers de flexbox y espaciado.

K KATATONIA
En Vivo
Gaming Aibonito PR Host
<div class="crl-flex crl-items-center crl-justify-between">
  <div class="crl-flex crl-items-center crl-gap-sm">...</div>
  <span class="pill pill-live">En Vivo</span>
</div>

/* Clases disponibles */
.crl-flex          → display: flex
.crl-flex-col      → flex-direction: column
.crl-items-center  → align-items: center
.crl-justify-between → justify-content: space-between
.crl-justify-center  → justify-content: center
.crl-wrap          → flex-wrap: wrap
.crl-gap-xs/sm/md/lg → gap (4/8/16/24px)
.crl-w-full        → width: 100%
.crl-min-w-0       → min-width: 0

Code Block

Bloques de código con tokens de color. .crl-code

/* Tokens de color */
.tok-tag   → --crl-accent (cian)
.tok-attr  → --crl-live (oro)
.tok-str   → --crl-confirm (verde)
.tok-com   → --crl-muted (gris)

<pre class="crl-code">
  <span class="tok-tag">cyan</span>
  <span class="tok-attr">gold</span>
  <span class="tok-str">green</span>
</pre>

Divisores

Separadores de contenido.

.crl-divider — línea sólida


.crl-divider-fade — gradiente


<hr class="crl-divider">
<hr class="crl-divider-fade">
<p class="crl-section-label">Sección</p> // línea auto via ::after

Stream Card

Card reusable para canales en vivo, VODs destacados o galerías de homepage. Combina media, overlays, metadata y acciones sin depender de CSS inline.

<a class="crl-stream-card">
  <div class="crl-stream-card-media">
    <img src="/thumb.jpg" alt="">
    <div class="crl-stream-card-top">
      <span class="badge badge-live">Live</span>
      <span class="badge badge-dim">12</span>
    </div>
  </div>
  <div class="crl-stream-card-body">
    <div class="crl-stream-card-head">...</div>
    <div class="crl-stream-card-tags">...</div>
    <div class="crl-stream-card-actions">...</div>
  </div>
</a>

// opcional: .is-featured para destacar la card

Filter Panel

Panel para filtros activos, chips y contadores. Pensado para multiplayer, listings y dashboards.

Ver
3 activos

Empty Hero

Versión más expresiva del empty state para páginas principales.

NADIE EN VIVO
Cuando alguien inicie stream aparecerá aquí.

Stat Grid

Grid compacto para métricas rápidas en dashboards, player panels o paneles internos.

Bitrate
4.1 Mbps
Buffer
2.6s
Latencia
860ms
Retries
1

Player Shell

Base estructural del player: nav sticky, layout principal, video shell, panel overlay, stats y chat panel.

C CANAL
VIDEO SHELL
K
KATATONIA
Gaming · Aibonito
4.1 Mbps
Bitrate
2.3s
Buffer
840ms
Latencia
CHAT
@bot Dale play.
KATATONIA Estamos activos.

Player Rail

Lista lateral o inferior para enlaces del canal y bloques compactos como "Otros en vivo".

Player VODs

Carrusel horizontal para las últimas transmisiones del canal, con soporte para hover preview y versión responsive en grid.

Form Group

Campos con label, hint y estados de validación. Añade has-error · has-success · has-warning al .crl-form-group.

Solo letras, números y guión bajo.
Formato inválido
Email verificado
Puede causar drops en conexiones lentas
/* Estado de error */
<div class="crl-form-group has-error">
  <label class="crl-label">Stream key</label>
  <div class="crl-input-wrap">
    <input class="crl-input crl-input-mono" type="text">
    <button class="crl-input-action"><i class="fa-solid fa-eye"></i></button>
  </div>
  <span class="crl-hint crl-error">Formato inválido</span>
</div>

/* Otros estados: has-success · has-warning */
/* Hints:        .crl-success · .crl-warning */

Tablas

Contenedor scrolleable para datos tabulares. Base: .crl-table-wrap > .crl-table

Canal Estado Viewers Kbps
K KATATONIA
En Vivo 24 4,200
M MARCOS
Streaming 8 3,500
T TEA
Offline
<div class="crl-table-wrap">
  <table class="crl-table">
    <thead><tr>
      <th>Canal</th>
      <th class="crl-table-num">Viewers</th>  // alinea derecha
    </tr></thead>
    <tbody>
      <tr><td>KATATONIA</td><td class="crl-table-num">24</td></tr>
    </tbody>
  </table>
</div>

Tabs

Navegación por pestañas. Base: .crl-tabs > .crl-tab[data-tab]

Bio, avatar, links externos y paneles del canal.

Lista de últimas transmisiones con thumbnail y duración.

Métricas: viewers promedio, bitrate, horas en vivo este mes.

<div class="crl-tabs">
  <button class="crl-tab active" data-tab="perfil">Perfil</button>
  <button class="crl-tab" data-tab="vods">VODs</button>
</div>
<div class="crl-tab-panels">
  <div class="crl-tab-panel active" data-panel="perfil">...</div>
  <div class="crl-tab-panel" data-panel="vods">...</div>
</div>

// JS — activar tab
tabs.forEach(t => t.addEventListener('click', () => {
  tabs.forEach(x => x.classList.remove('active'));
  panels.forEach(p => p.classList.remove('active'));
  t.classList.add('active');
  container.querySelector(`[data-panel="${t.dataset.tab}"]`).classList.add('active');
}));

Accordion

Collapse animado vía grid-template-rows: 0fr → 1fr. Requiere <div> wrapper dentro del content.

Regístrate en Corillo, configura OBS con tu stream key y conecta via RTMP. Revisa la guía en /configuracion/.

RTMP con H.264 y AAC. Resolución hasta 1080p60, bitrate recomendado 3,000–5,000 Kbps.

Sí, si tienes VODs habilitado en tu perfil. Plan free conserva los últimos 5, plan pro es ilimitado.

<div class="crl-accordion">
  <div class="crl-accordion-item open">  // .open = abierto
    <button class="crl-accordion-trigger">
      <span>Pregunta</span>
      <i class="fa-solid fa-chevron-down crl-accordion-icon"></i>
    </button>
    <div class="crl-accordion-content">
      <div>Respuesta aquí</div>  // wrapper requerido
    </div>
  </div>
</div>

Select

Dropdown nativo estilizado. Flecha SVG inline — no depende de Font Awesome. Tamaño .crl-select-sm disponible.

<div class="crl-select-wrap">
  <select class="crl-select">
    <option>Opción A</option>
    <option>Opción B</option>
  </select>
</div>

// Tamaño compacto
<select class="crl-select crl-select-sm">...</select>

KPI Cards

Cards de métricas con delta de tendencia. .crl-kpi-delta.up verde · .down rojo · .flat muted.

Viewers promedio

18

+33%

vs semana pasada

Horas en vivo

24.5h

+2h

este mes

Bitrate medio

4.1k

sin cambio

Kbps promedio

Drops detectados

2

peor que ayer

último stream

<div class="crl-kpi-grid">
  <div class="crl-kpi">
    <p class="crl-kpi-label">Viewers promedio</p>
    <p class="crl-kpi-value">18</p>
    <p class="crl-kpi-delta up">+33%</p>
    <p class="crl-kpi-sub">vs semana pasada</p>
  </div>
</div>

// Delta: .up (verde) · .down (rojo) · .flat (muted)

Lo que viene

Corillo CSS crece con la plataforma. Lo que está listo, lo que viene y lo que se está pensando.

v1.0 — Listo
Tokens --crl-*
Tipografía + escala
Botones (5 variantes)
Badges (5 variantes)
Pills (3 variantes)
Cards (5 variantes)
Dots + animación
Avatares + rings
Inputs + Form group
Divisores
Layout flex utilities
Animaciones (6)
Code block + Copy
Light mode
Topbar / Nav
Dropdown menu
Drawer + Backdrop
Modal / Dialog
Overlay (estados)
Empty state
Stats row
Filter pills
Responsive grid
Aspect ratio
Scroll horizontal
Line clamp (1/2/3)
Hover lift
Backdrop blur
Position utilities
Hero section
Theme button
Border radius utils
Section label
Desplegado en Corillo.live — 6 páginas
v1.2 — Listo
Table component
Form validation states
Accordion / Collapse
Tabs
Select / Combobox
Stat / KPI card
Prefijo crl-* en todos los componentes
Desplegado en Corillo.live — 9 páginas
v1.3 — Listo
crl-stream-card
crl-filter-panel
crl-gallery layouts
crl-page-header
crl-empty-hero
crl-stat-grid
Base lista para migrar multiplayer
v1.4 — En progreso
crl-player-shell
crl-chat-panel
crl-player-dropdown
crl-player-rail
crl-player-vods
Migración parcial del player en producción
v1.5 — Próximo
crl-site-footer v2
corillo-ui.js opcional
v2.0 — Futuro
npm package
CSS @layer support
Playground live editor
Figma kit
Sass / PostCSS
Container queries