# Panel lateral

> Panel que entra desde un borde sobre la página: derecha, izquierda, sin botón de cerrar y abajo en el celular.

Categoría: Feedback · Solar v0.8.0

Usa este HTML tal cual, con Tailwind y ccs-tailwind-config.js cargados (ver https://utiliza.me/solar/instalacion.html).

## Guía: Cuándo usarlo

- Para editar o ver un detalle sin perder la página de fondo.
- Abajo, en el celular, para filtros y opciones.
- Si es una decisión corta, es un Modal; si es un trámite largo, va en su propia página.

## Derecha · estándar

384 px (max-w-sm), el ancho por defecto. Para el detalle de un ítem, un formulario de pocos campos o acciones sobre lo que se está viendo en la página. La derecha es el lado de «qué hago con esto».

```html
<div class="flex flex-wrap items-start justify-center gap-8"><button type="button" commandfor="panel-perfil" command="show-modal" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:pen-outline" class="shrink-0 text-[18px] " aria-hidden="true"></iconify-icon>Editar perfil</button><dialog closedby="any" id="panel-perfil" aria-labelledby="panel-perfil-t" class="p-0 bg-white text-ccs-ink shadow-ccs backdrop:bg-ccs-ink/60 dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:ring-1 dark:ring-ccs-dark-line m-0 ml-auto h-full max-h-full w-full max-w-sm"><form method="dialog" class="relative flex h-full flex-col"><div class="p-6 pr-14"><h2 id="panel-perfil-t" class="text-lg font-semibold">Editar perfil</h2><p class="mt-1 text-sm text-ccs-slate dark:text-ccs-dark-text-2">Cambia tus datos y guarda al terminar.</p></div><div class="px-6 space-y-4"><div><label for="pp-n" class="block text-sm font-medium mb-1.5">Nombre</label><input id="pp-n" name="nombre" autocomplete="name" value="Carolina Rojas" class="w-full h-11 px-4 rounded-lg border border-ccs-line-strong bg-white text-sm text-ccs-ink placeholder:text-ccs-slate outline-none focus:border-ccs-blue focus:ring-2 focus:ring-ccs-blue/15 dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:placeholder:text-ccs-dark-text-2 dark:focus:border-ccs-dark-accent dark:focus:ring-ccs-dark-accent/25" /></div><div><label for="pp-c" class="block text-sm font-medium mb-1.5">Cargo</label><input id="pp-c" name="cargo" value="Jefa de ventas" class="w-full h-11 px-4 rounded-lg border border-ccs-line-strong bg-white text-sm text-ccs-ink placeholder:text-ccs-slate outline-none focus:border-ccs-blue focus:ring-2 focus:ring-ccs-blue/15 dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:placeholder:text-ccs-dark-text-2 dark:focus:border-ccs-dark-accent dark:focus:ring-ccs-dark-accent/25" /></div></div><div class="mt-auto p-6 flex flex-col gap-2"><button type="submit" value="guardar"  class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm bg-ccs-blue text-white hover:bg-ccs-blue-mid shadow-ccs-sm dark:bg-ccs-blue-mid dark:hover:bg-ccs-blue active:scale-95 motion-reduce:active:scale-100">Guardar cambios</button><button type="submit" value="cancelar" formnovalidate class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100">Cancelar</button></div><button type="submit" value="cerrar" formnovalidate aria-label="Cerrar" class="absolute top-4 right-4 grid place-items-center w-8 h-8 rounded-ccs text-ccs-ink hover:bg-ccs-hover dark:text-ccs-dark-text dark:hover:bg-ccs-dark-hover transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:close-outline" class="shrink-0 text-[20px] " aria-hidden="true"></iconify-icon></button></form></dialog></div>
```

## Izquierda · compacto

288 px (w-72). Solo para navegar: menús y listas de enlaces. La izquierda es el lado de «dónde estoy», por eso no se usa para el detalle de un ítem ni para formularios.

```html
<div class="flex flex-wrap items-start justify-center gap-8"><button type="button" commandfor="panel-menu" command="show-modal" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:hamburger-menu-outline" class="shrink-0 text-[18px] " aria-hidden="true"></iconify-icon>Menú</button><dialog closedby="any" id="panel-menu" aria-labelledby="panel-menu-t" class="p-0 bg-white text-ccs-ink shadow-ccs backdrop:bg-ccs-ink/60 dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:ring-1 dark:ring-ccs-dark-line m-0 mr-auto h-full max-h-full w-72 max-w-[85vw]"><div class="relative h-full"><div class="p-6 pr-14"><h2 id="panel-menu-t" class="text-lg font-semibold">Menú</h2></div><nav aria-label="Principal" class="px-3 space-y-1"><a href="#" class="flex items-center gap-3 h-10 px-3 rounded-lg text-sm bg-ccs-hover font-medium dark:bg-ccs-dark-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg" aria-current="page"><iconify-icon icon="solar:home-2-outline" class="shrink-0 text-[18px] text-ccs-slate dark:text-ccs-dark-text-2" aria-hidden="true"></iconify-icon>Inicio</a><a href="#" class="flex items-center gap-3 h-10 px-3 rounded-lg text-sm hover:bg-ccs-hover dark:hover:bg-ccs-dark-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg" ><iconify-icon icon="solar:document-text-outline" class="shrink-0 text-[18px] text-ccs-slate dark:text-ccs-dark-text-2" aria-hidden="true"></iconify-icon>Documentos</a><a href="#" class="flex items-center gap-3 h-10 px-3 rounded-lg text-sm hover:bg-ccs-hover dark:hover:bg-ccs-dark-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg" ><iconify-icon icon="solar:calendar-outline" class="shrink-0 text-[18px] text-ccs-slate dark:text-ccs-dark-text-2" aria-hidden="true"></iconify-icon>Calendario</a><a href="#" class="flex items-center gap-3 h-10 px-3 rounded-lg text-sm hover:bg-ccs-hover dark:hover:bg-ccs-dark-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg" ><iconify-icon icon="solar:settings-outline" class="shrink-0 text-[18px] text-ccs-slate dark:text-ccs-dark-text-2" aria-hidden="true"></iconify-icon>Configuración</a></nav><form method="dialog"><button type="submit" value="cerrar" formnovalidate aria-label="Cerrar" class="absolute top-4 right-4 grid place-items-center w-8 h-8 rounded-ccs text-ccs-ink hover:bg-ccs-hover dark:text-ccs-dark-text dark:hover:bg-ccs-dark-hover transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:close-outline" class="shrink-0 text-[20px] " aria-hidden="true"></iconify-icon></button></form></div></dialog></div>
```

## Derecha · sin botón de cerrar

Mismo ancho estándar, sin la ×: para cuando hay que elegir una de las opciones antes de seguir. Escape tampoco lo cierra. Úsalo solo si de verdad no hay una salida neutra.

```html
<div class="flex flex-wrap items-start justify-center gap-8"><button type="button" commandfor="panel-envio" command="show-modal" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm bg-ccs-blue text-white hover:bg-ccs-blue-mid shadow-ccs-sm dark:bg-ccs-blue-mid dark:hover:bg-ccs-blue active:scale-95 motion-reduce:active:scale-100">Enviar solicitud</button><dialog closedby="any" id="panel-envio" aria-labelledby="panel-envio-t" aria-describedby="panel-envio-d" class="p-0 bg-white text-ccs-ink shadow-ccs backdrop:bg-ccs-ink/60 dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:ring-1 dark:ring-ccs-dark-line m-0 ml-auto h-full max-h-full w-full max-w-sm"><form method="dialog" class="flex h-full flex-col"><div class="p-6"><h2 id="panel-envio-t" class="text-lg font-semibold">Confirmar envío</h2><p id="panel-envio-d" class="mt-1 text-sm text-ccs-slate dark:text-ccs-dark-text-2">Revisa el resumen antes de enviar la solicitud.</p></div><dl class="px-6 text-sm divide-y divide-ccs-line dark:divide-ccs-dark-line"><div class="flex justify-between py-2.5"><dt class="text-ccs-slate dark:text-ccs-dark-text-2">Trámite</dt><dd class="font-medium">Certificado</dd></div><div class="flex justify-between py-2.5"><dt class="text-ccs-slate dark:text-ccs-dark-text-2">Copias</dt><dd class="font-medium">2</dd></div><div class="flex justify-between py-2.5"><dt class="text-ccs-slate dark:text-ccs-dark-text-2">Total</dt><dd class="font-medium">$12.000</dd></div></dl><div class="mt-auto p-6 flex flex-col gap-2"><button type="submit" value="enviar"  class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm bg-ccs-blue text-white hover:bg-ccs-blue-mid shadow-ccs-sm dark:bg-ccs-blue-mid dark:hover:bg-ccs-blue active:scale-95 motion-reduce:active:scale-100">Enviar solicitud</button><button type="submit" value="cancelar" formnovalidate class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100">Volver</button></div></form></dialog></div>
```

## Derecha · lectura

672 px (max-w-2xl). Documentos y texto largo que hay que leer sin salir de la página: un convenio, unas bases, un informe. A este ancho la columna de texto queda en unos 620 px, cerca de 80 caracteres por línea.

```html
<div class="flex flex-wrap items-start justify-center gap-8"><button type="button" commandfor="panel-convenio" command="show-modal" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:document-text-outline" class="shrink-0 text-[18px] " aria-hidden="true"></iconify-icon>Ver convenio</button><dialog closedby="any" id="panel-convenio" aria-labelledby="panel-convenio-t" class="p-0 bg-white text-ccs-ink shadow-ccs backdrop:bg-ccs-ink/60 dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:ring-1 dark:ring-ccs-dark-line m-0 ml-auto h-full max-h-full w-full max-w-2xl"><form method="dialog" class="flex h-full flex-col"><div class="flex items-start justify-between gap-3 border-b border-ccs-line p-6 dark:border-ccs-dark-line"><div class="min-w-0"><h2 id="panel-convenio-t" class="text-lg font-semibold">Convenio marco de colaboración</h2><p class="mt-1 text-sm text-ccs-slate dark:text-ccs-dark-text-2">Retail Andes · vigente hasta el 31-12-2027</p></div><button type="submit" value="cerrar" formnovalidate aria-label="Cerrar" class="-mr-2 -mt-2 shrink-0 grid place-items-center w-8 h-8 rounded-ccs text-ccs-ink hover:bg-ccs-hover dark:text-ccs-dark-text dark:hover:bg-ccs-dark-hover transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:close-outline" class="shrink-0 text-[20px] " aria-hidden="true"></iconify-icon></button></div><div class="ccs-corte-scroll min-h-0 flex-1 space-y-4 overflow-y-auto p-6 text-sm leading-relaxed text-ccs-slate dark:text-ccs-dark-text-2"><p><strong>Primero. Objeto.</strong> El convenio tiene por objeto establecer un marco de cooperación para el desarrollo de actividades de capacitación, difusión e intercambio de información de interés común.</p><p><strong>Segundo. Vigencia.</strong> Regirá por veinticuatro meses contados desde su suscripción, y se renovará por períodos iguales salvo aviso escrito de cualquiera de las partes con sesenta días de anticipación.</p><p><strong>Tercero. Confidencialidad.</strong> Las partes mantendrán reserva de la información que reciban con ocasión de este convenio y que no sea de dominio público, por tres años después de su término.</p><p><strong>Cuarto. Propiedad intelectual.</strong> Cada parte conserva la titularidad de los derechos sobre el material que aporte. Lo elaborado en conjunto se regirá por lo que acuerden por escrito en cada caso.</p><p><strong>Quinto. Coordinación.</strong> Cada parte designará una contraparte técnica responsable de coordinar la ejecución e informar del avance a lo menos semestralmente.</p><p><strong>Sexto. Término anticipado.</strong> Cualquiera de las partes podrá ponerle término con aviso escrito de treinta días, sin expresión de causa y sin derecho a indemnización.</p></div><div class="flex flex-col gap-2 border-t border-ccs-line p-6 sm:flex-row sm:justify-end dark:border-ccs-dark-line"><button type="submit" value="cerrar" formnovalidate class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100">Cerrar</button><button type="submit" value="descargar" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm bg-ccs-blue text-white hover:bg-ccs-blue-mid shadow-ccs-sm dark:bg-ccs-blue-mid dark:hover:bg-ccs-blue active:scale-95 motion-reduce:active:scale-100">Descargar PDF</button></div></form></dialog></div>
```

## Abajo, en el celular

Ancho completo desde el borde inferior, hasta 85 dvh de alto. Para filtros y opciones en pantallas chicas, donde el pulgar llega abajo y no al costado. En escritorio este caso va a la derecha.

```html
<div class="flex flex-wrap items-start justify-center gap-8"><button type="button" commandfor="panel-filtros" command="show-modal" class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm border border-ccs-line-strong bg-white text-ccs-ink hover:border-ccs-blue hover:text-ccs-blue dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:hover:border-ccs-dark-text active:scale-95 motion-reduce:active:scale-100"><iconify-icon icon="solar:tuning-2-outline" class="shrink-0 text-[18px] " aria-hidden="true"></iconify-icon>Filtros</button><dialog closedby="any" id="panel-filtros" aria-labelledby="panel-filtros-t" class="p-0 bg-white text-ccs-ink shadow-ccs backdrop:bg-ccs-ink/60 dark:bg-ccs-dark-surface dark:text-ccs-dark-text dark:ring-1 dark:ring-ccs-dark-line m-0 mt-auto w-full max-w-full max-h-[85dvh] rounded-t-ccs"><form method="dialog"><div class="mx-auto mt-3 h-1.5 w-12 rounded-full bg-ccs-line dark:bg-ccs-dark-line" aria-hidden="true"></div><div class="px-6 pt-4 text-center"><h2 id="panel-filtros-t" class="text-lg font-semibold">Filtros</h2><p class="mt-1 text-sm text-ccs-slate dark:text-ccs-dark-text-2">Elige uno o más rubros.</p></div><fieldset class="px-6 mt-2"><legend class="sr-only">Rubro</legend><label class="flex items-center gap-3 py-2 text-sm cursor-pointer"><input type="checkbox" name="rubro" value="comercio" checked class="ccs-check w-4 h-4 rounded border border-ccs-line-strong bg-white text-ccs-blue focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ccs-blue focus-visible:ring-offset-2 dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-surface dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-blue-mid" />Comercio</label><label class="flex items-center gap-3 py-2 text-sm cursor-pointer"><input type="checkbox" name="rubro" value="servicios"  class="ccs-check w-4 h-4 rounded border border-ccs-line-strong bg-white text-ccs-blue focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ccs-blue focus-visible:ring-offset-2 dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-surface dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-blue-mid" />Servicios</label><label class="flex items-center gap-3 py-2 text-sm cursor-pointer"><input type="checkbox" name="rubro" value="industria" checked class="ccs-check w-4 h-4 rounded border border-ccs-line-strong bg-white text-ccs-blue focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ccs-blue focus-visible:ring-offset-2 dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-surface dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-blue-mid" />Industria</label><label class="flex items-center gap-3 py-2 text-sm cursor-pointer"><input type="checkbox" name="rubro" value="tecnología"  class="ccs-check w-4 h-4 rounded border border-ccs-line-strong bg-white text-ccs-blue focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ccs-blue focus-visible:ring-offset-2 dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-surface dark:border-ccs-dark-line-strong dark:bg-ccs-dark-surface dark:text-ccs-blue-mid" />Tecnología</label></fieldset><div class="p-6 pt-4 flex flex-col gap-2"><button type="submit" value="aplicar"  class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm bg-ccs-blue text-white hover:bg-ccs-blue-mid shadow-ccs-sm dark:bg-ccs-blue-mid dark:hover:bg-ccs-blue active:scale-95 motion-reduce:active:scale-100">Ver 128 resultados</button><button type="submit" value="limpiar" formnovalidate class="inline-flex items-center justify-center gap-2 rounded-ccs font-medium transition whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ccs-blue dark:focus-visible:ring-ccs-dark-accent dark:focus-visible:ring-offset-ccs-dark-bg h-10 px-4 text-sm text-ccs-ink hover:bg-ccs-hover dark:text-ccs-dark-text dark:hover:bg-ccs-dark-hover active:scale-95 motion-reduce:active:scale-100">Limpiar filtros</button></div></form></dialog></div>
```

## Guía: Comportamiento

Igual que Modal: se abre con commandfor y command="show-modal", sin script. Los botones van en <form method="dialog"> y Escape cierra. Mientras está abierto, el foco no sale del panel y la página de fondo no se desplaza; al cerrar, el foco vuelve al botón que lo abrió.
El lado lo dan los márgenes del <dialog>: m-0 ml-auto a la derecha, m-0 mr-auto a la izquierda y m-0 mt-auto abajo. En pantallas de 640 px o menos, el panel derecho ocupa todo el ancho.
El lado y el ancho no se eligen por separado ni al gusto: cada combinación tiene su caso, y cada caso tiene su ejemplo acá arriba, con su botón para abrirlo.

- Izquierda, compacto (288 px) — navegar. Menús y listas de enlaces. La izquierda es el lado donde la gente espera la navegación: usarla para el detalle de un ítem confunde. Ejemplo: Izquierda · compacto.
- Derecha, estándar (384 px) — trabajar sobre lo que se ve. El detalle de un ítem, un formulario corto, filtros. Es el ancho por defecto. Ejemplos: Derecha · estándar y Derecha · sin botón de cerrar.
- Derecha, lectura (672 px) — leer. Documentos y texto largo. Ejemplo: Derecha · lectura.
- Abajo, ancho completo — el celular. Filtros y opciones en pantallas chicas. En escritorio ese mismo caso va a la derecha. Ejemplo: Abajo, en el celular.
La medida de lectura no es decorativa: a 672 px la columna de texto queda en unos 620 px, cerca de 80 caracteres por línea. A 384 px el mismo documento se pica en columnas de cuatro palabras, y a más de 672 px la vista se pierde al volver al inicio de cada línea. No hay ancho completo en escritorio a propósito: si tapas la página de atrás, pierdes el contexto que justifica usar un panel y no una página.
