/**
 * Estilos del portal de clientes (frontal).
 * Autónomos (funcionan con cualquier tema). Si el Despacho Theme está activo,
 * heredan sus tokens --ddk-* para integrarse con la marca.
 */
.ddk-portal {
	--_primary: var(--ddk-color-primary, #1b2a4a);
	--_accent: var(--ddk-color-accent, #b08d57);
	--_surface: var(--ddk-color-surface, #ffffff);
	--_border: var(--ddk-color-border, #e0e4ea);
	--_text: var(--ddk-color-text, #222833);
	--_muted: var(--ddk-color-text-muted, #6b7688);

	max-width: 820px;
	margin: 2rem auto;
	padding: 0 1rem;
	color: var(--_text);
	font-family: var(--ddk-font-body, inherit);
}

/* Tipografía de marca: el portal sigue las fuentes elegidas en el
   Personalizador (titulares y cuerpo), igual que el resto de la web. */
.ddk-portal h1,
.ddk-portal h2,
.ddk-portal h3,
.ddk-portal h4,
.ddk-portal .ddk-desk__brand,
.ddk-portal .ddk-portal__case-ref {
	font-family: var(--ddk-font-heading, inherit);
}

/* Blindaje: los estilos de enlaces del contenido del tema no deben
   filtrarse dentro del portal. */
.ddk-portal a { text-decoration: none; }
.ddk-portal .ddk-desk__side .ddk-desk__link,
.ddk-portal .ddk-desk__side .ddk-desk__logout { color: rgba(255, 255, 255, 0.82); }
.ddk-portal .ddk-desk__side .ddk-desk__link:hover,
.ddk-portal .ddk-desk__side .ddk-desk__logout:hover { color: #fff; }
.ddk-portal .ddk-desk__side .ddk-desk__link.is-active { color: #fff; }
.ddk-portal .ddk-cases .ddk-cases__manage,
.ddk-portal .ddk-portal__row-actions a,
.ddk-portal .ddk-portal__mini { color: var(--_primary); }
.ddk-portal .ddk-portal__mini--wa { color: #1da851; }
.ddk-portal .ddk-portal__delete { color: #a33; }
.ddk-portal .ddk-portal__button { color: #fff; }
.ddk-portal .ddk-portal__button--ghost { color: var(--_primary); }
.ddk-portal .ddk-portal__button--wa { color: #fff; }

.ddk-portal__bar {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1.5rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--_border);
}

.ddk-portal__title { margin: 0; color: var(--_primary); }
.ddk-portal__welcome { margin: 0.25rem 0 0; color: var(--_muted); }

.ddk-portal__card {
	background: var(--_surface);
	border: 1px solid var(--_border);
	border-radius: 12px;
	padding: 2rem;
	box-shadow: 0 1px 3px rgba(18, 21, 28, 0.08);
}

.ddk-portal__login { max-width: 420px; margin: 2rem auto; }
.ddk-portal__intro { color: var(--_muted); margin-bottom: 1.25rem; }
.ddk-portal__help { margin-top: 1rem; font-size: 0.9rem; }

/* El formulario de login nativo de WP. */
.ddk-portal .login-username,
.ddk-portal .login-password { margin-bottom: 1rem; }
.ddk-portal label { display: block; font-weight: 600; margin-bottom: 0.35rem; }
.ddk-portal input[type="text"],
.ddk-portal input[type="password"] {
	width: 100%;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--_border);
	border-radius: 8px;
	font: inherit;
}
.ddk-portal .login-remember { font-weight: 400; margin: 0.5rem 0 1rem; }
.ddk-portal .button,
.ddk-portal input[type="submit"] {
	display: inline-block;
	background: var(--_primary);
	color: #fff;
	border: 0;
	border-radius: 8px;
	padding: 0.7rem 1.4rem;
	font-weight: 600;
	cursor: pointer;
}

/* Tarjeta de expediente (acordeón). */
.ddk-portal__case {
	background: var(--_surface);
	border: 1px solid var(--_border);
	border-radius: 12px;
	padding: 0;
	margin-bottom: 1.25rem;
	box-shadow: 0 1px 3px rgba(18, 21, 28, 0.06);
	overflow: hidden;
}
.ddk-portal__case-summary {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
	justify-content: space-between;
	padding: 1.25rem 1.75rem;
	cursor: pointer;
	list-style: none;
	user-select: none;
}
.ddk-portal__case-summary::-webkit-details-marker { display: none; }
.ddk-portal__case-summary::marker { content: ''; }
.ddk-portal__case-summary:hover { background: rgba(0, 0, 0, 0.02); }
.ddk-portal__case-meta { display: inline-flex; align-items: center; gap: 0.75rem; }
.ddk-portal__chevron { color: var(--_muted); transition: transform 0.2s ease; }
.ddk-portal__case[open] > .ddk-portal__case-summary { border-bottom: 1px solid var(--_border); }
.ddk-portal__case[open] > .ddk-portal__case-summary .ddk-portal__chevron { transform: rotate(180deg); }
.ddk-portal__case-body { padding: 1.25rem 1.75rem 1.5rem; }
.ddk-portal__case-ref {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--_primary);
}
.ddk-portal__updated { color: var(--_muted); margin: 0 0 1rem; }
.ddk-portal__obs h3 { margin: 0 0 0.5rem; font-size: 1rem; color: var(--_primary); }
.ddk-portal__muted { color: var(--_muted); }

/* Badge de estado. */
.ddk-portal__badge {
	display: inline-block;
	padding: 0.25rem 0.7rem;
	border-radius: 9999px;
	font-size: 0.8rem;
	font-weight: 600;
	background: #eef1f5;
	color: #363e4c;
}
.ddk-portal__badge--open { background: rgba(58, 90, 140, 0.12); color: #3a5a8c; }
.ddk-portal__badge--in_progress { background: rgba(176, 132, 43, 0.15); color: #96701f; }
.ddk-portal__badge--on_hold { background: rgba(107, 118, 136, 0.15); color: #4d5666; }
.ddk-portal__badge--closed { background: rgba(46, 125, 91, 0.14); color: #2e7d5b; }
.ddk-portal__badge--on { background: rgba(46, 125, 91, 0.14); color: #2e7d5b; }
.ddk-portal__badge--off { background: rgba(170, 51, 51, 0.12); color: #8c2b2b; }

/* Enlaces de acción compactos (tabla de clientes). */
.ddk-portal__mini {
	display: inline-block;
	margin-left: 0.4rem;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--_primary);
	text-decoration: none;
	white-space: nowrap;
}
.ddk-portal__mini:hover { text-decoration: underline; }
.ddk-portal__mini--wa { color: #1da851; }
.ddk-portal__notify .ddk-portal__mini:first-child { margin-left: 0; }

/* Aviso "mensaje de WhatsApp listo". */
.ddk-portal__wa-action { margin: 0.75rem 0 0; }
.ddk-portal__button--wa {
	background: #1da851;
	border-color: #1da851;
}

.ddk-portal__logout {
	display: inline-block;
	padding: 0.5rem 1rem;
	border: 1px solid var(--_border);
	border-radius: 8px;
	color: var(--_text);
	text-decoration: none;
	font-weight: 600;
}
.ddk-portal__logout:hover { border-color: var(--_primary); color: var(--_primary); }

/* Documentos del cliente. */
.ddk-portal__docs h3 { margin: 1rem 0 0.5rem; font-size: 1rem; color: var(--_primary); }
.ddk-portal__doc-list { list-style: none; margin: 0; padding: 0; }
.ddk-portal__doc-list li {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 0.75rem;
	align-items: baseline;
	padding: 0.55rem 0;
	border-bottom: 1px solid var(--_border);
}
.ddk-portal__doc-list li:last-child { border-bottom: 0; }
.ddk-portal__doc-list a { font-weight: 600; color: var(--_primary); text-decoration: none; }
.ddk-portal__doc-list a:hover { text-decoration: underline; }
.ddk-portal__delete { color: #a33 !important; font-weight: 500 !important; margin-left: auto; }

/* ------------------------------------------------------------------ */
/* Escritorio del abogado: dashboard a pantalla completa.              */
/* ------------------------------------------------------------------ */

/* Rompe el contenedor centrado del tema y ocupa todo el ancho. */
.ddk-portal--desk {
	max-width: none;
	width: 100vw;
	margin: 0 0 0 calc(50% - 50vw);
	padding: 0;
}
body:has(.ddk-portal--desk) { overflow-x: hidden; }

/* En cualquier vista del portal (login incluido): oculta el título de la
   página y las migas de pan del tema. */
body:has(.ddk-portal) .ddk-breadcrumb,
body:has(.ddk-portal) .ddk-article__header { display: none; }

/* Modo dashboard (abogado y cliente): elimina además el relleno del artículo. */
body:has(.ddk-portal--desk) .ddk-article { padding-block: 0; }
body:has(.ddk-portal--desk) .ddk-article__content { font-size: 1rem; }

/* Modo pantalla completa (solo el escritorio del abogado): oculta además
   la cabecera, el pie y el botón de WhatsApp del tema. */
body:has(.ddk-portal--fullscreen) .ddk-header,
body:has(.ddk-portal--fullscreen) .ddk-footer,
body:has(.ddk-portal--fullscreen) .ddk-whatsapp { display: none; }

.ddk-desk {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	align-items: stretch;
	min-height: calc(100vh - var(--wp-admin--admin-bar--height, 0px));
	background: rgba(0, 0, 0, 0.025);
	background: color-mix(in srgb, var(--_border) 25%, transparent);
}

/* --- Barra lateral (fija: acompaña el scroll hasta abajo) ------------ */
.ddk-desk__side {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	padding: 1.75rem 1.25rem;
	background: var(--_primary);
	color: #fff;
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	height: calc(100vh - var(--wp-admin--admin-bar--height, 0px));
	overflow-y: auto;
	align-self: start;
}
.ddk-desk__brand {
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.65;
}
.ddk-desk__user {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}
.ddk-desk__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	flex: 0 0 40px;
	border-radius: 50%;
	background: var(--_accent);
	color: #fff;
	font-weight: 700;
	font-size: 1.05rem;
}
.ddk-desk__user-name {
	font-weight: 600;
	font-size: 0.95rem;
	overflow-wrap: anywhere;
}
.ddk-desk__nav { display: flex; flex-direction: column; gap: 0.25rem; flex: 1; }
.ddk-desk__link,
.ddk-desk__logout {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	padding: 0.7rem 0.9rem;
	border-radius: 8px;
	color: rgba(255, 255, 255, 0.82);
	text-decoration: none;
	font-weight: 600;
	font-size: 0.95rem;
}
.ddk-desk__link svg,
.ddk-desk__logout svg { flex: 0 0 auto; opacity: 0.85; }
.ddk-desk__link:hover,
.ddk-desk__logout:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }
.ddk-desk__link.is-active {
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	box-shadow: inset 3px 0 0 var(--_accent);
}
.ddk-desk__logout { border: 1px solid rgba(255, 255, 255, 0.2); justify-content: center; }

/* --- Contenido ------------------------------------------------------- */
.ddk-desk__main {
	padding: clamp(1.25rem, 3vw, 2.5rem);
	min-width: 0;
}
.ddk-desk__main > * { max-width: 1400px; }

/* Variante cliente: convive con la cabecera y el pie del sitio. */
.ddk-portal--client .ddk-portal__welcome { margin: 0; }
.ddk-portal__topbar { display: flex; flex-wrap: wrap; gap: 0.9rem; align-items: center; }
.ddk-portal__topbar .ddk-portal__button {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	padding: 0.5rem 1rem;
	font-size: 0.9rem;
}

/* --- Listado de casos del abogado (filas acordeón) -------------------- */
.ddk-cases {
	background: var(--_surface);
	border: 1px solid var(--_border);
	border-radius: 12px;
	box-shadow: 0 1px 3px rgba(18, 21, 28, 0.06);
	overflow: hidden;
}
.ddk-cases__head,
.ddk-cases__summary {
	display: grid;
	grid-template-columns: 2fr 1.4fr 1fr 1.6fr auto;
	gap: 1rem;
	align-items: center;
	padding: 0.85rem 1.25rem;
}
.ddk-cases__head {
	font-size: 0.8rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--_muted);
	border-bottom: 1px solid var(--_border);
}
.ddk-cases__row { border-bottom: 1px solid var(--_border); }
.ddk-cases__row:last-of-type { border-bottom: 0; }
.ddk-cases__summary { cursor: pointer; list-style: none; user-select: none; }
.ddk-cases__summary::-webkit-details-marker { display: none; }
.ddk-cases__summary::marker { content: ''; }
.ddk-cases__summary:hover { background: rgba(0, 0, 0, 0.02); }
.ddk-cases__row[open] > .ddk-cases__summary { background: rgba(0, 0, 0, 0.02); }
.ddk-cases__row[open] > .ddk-cases__summary .ddk-portal__chevron { transform: rotate(180deg); }
.ddk-cases__cell { min-width: 0; font-size: 0.95rem; }
.ddk-cases__cell--ref .ddk-portal__ref-link { display: block; }
.ddk-cases__cell--actions {
	display: flex;
	gap: 0.75rem;
	align-items: center;
	justify-content: flex-end;
}
.ddk-cases__manage { font-weight: 700; color: var(--_primary); text-decoration: none; }
.ddk-cases__manage:hover { text-decoration: underline; }
.ddk-cases__body {
	padding: 1.1rem 1.5rem 1.25rem;
	border-top: 1px dashed var(--_border);
	background: rgba(0, 0, 0, 0.015);
}
.ddk-cases__body-title { margin: 0 0 0.25rem; font-size: 0.95rem; color: var(--_primary); }

@media (max-width: 760px) {
	.ddk-cases__head { display: none; }
	.ddk-cases__summary { grid-template-columns: 1fr; gap: 0.4rem; }
	.ddk-cases__cell::before {
		content: attr(data-label) ': ';
		font-weight: 600;
		color: var(--_muted);
	}
	.ddk-cases__cell--ref::before,
	.ddk-cases__cell--actions::before { content: ''; }
	.ddk-cases__cell--actions { justify-content: flex-start; }
}

/* --- Historial de actuaciones (línea de tiempo) ----------------------- */
.ddk-portal__history h3 { margin: 1rem 0 0.5rem; font-size: 1rem; color: var(--_primary); }
.ddk-timeline {
	list-style: none;
	margin: 1rem 0 0;
	padding: 0;
	position: relative;
}
.ddk-timeline::before {
	content: '';
	position: absolute;
	top: 0.4rem;
	bottom: 0.4rem;
	left: 0.45rem;
	width: 2px;
	background: var(--_border);
}
.ddk-timeline__item {
	position: relative;
	padding: 0 0 1.4rem 2rem;
}
.ddk-timeline__item:last-child { padding-bottom: 0.25rem; }
.ddk-timeline__item::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.35rem;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--_accent);
	border: 2px solid var(--_surface);
	box-shadow: 0 0 0 2px var(--_accent);
}
.ddk-timeline__item--private::before {
	background: var(--_muted);
	box-shadow: 0 0 0 2px var(--_muted);
}
.ddk-timeline__date {
	display: inline-block;
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--_muted);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin-bottom: 0.25rem;
}
.ddk-timeline__body p { margin: 0.25rem 0; }
.ddk-timeline__head { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.ddk-timeline__entity { font-weight: 700; color: var(--_primary); }
.ddk-timeline__tag {
	display: inline-block;
	padding: 0.1rem 0.55rem;
	border-radius: 9999px;
	font-size: 0.75rem;
	font-weight: 600;
	background: rgba(107, 118, 136, 0.15);
	color: #4d5666;
}
.ddk-timeline__result { color: var(--_text); }
.ddk-timeline__result strong { color: var(--_primary); }
.ddk-timeline__doc a,
.ddk-timeline__meta a { font-weight: 600; color: var(--_primary); text-decoration: none; }
.ddk-timeline__doc a:hover,
.ddk-timeline__meta a:hover { text-decoration: underline; }
.ddk-timeline__meta { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: baseline; }
.ddk-timeline__meta .ddk-portal__delete { margin-left: auto; }
.ddk-portal__event-form {
	margin: 1rem 0 1.5rem;
	padding: 1.25rem;
	border: 1px dashed var(--_border);
	border-radius: 10px;
	background: rgba(0, 0, 0, 0.015);
}
.ddk-portal__history-empty { margin-top: 1rem; }

/* --- Visor de documentos (modal de vista previa) ---------------------- */
body.ddk-viewer-open { overflow: hidden; }
.ddk-viewer {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
}
.ddk-viewer[hidden] { display: none; }
.ddk-viewer__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(15, 20, 30, 0.7);
}
.ddk-viewer__dialog {
	position: relative;
	display: flex;
	flex-direction: column;
	width: min(960px, 100%);
	height: min(85vh, 100%);
	background: var(--ddk-color-surface, #fff);
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.ddk-viewer__bar {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
	justify-content: space-between;
	padding: 0.75rem 1rem;
	border-bottom: 1px solid var(--ddk-color-border, #e0e4ea);
	background: var(--ddk-color-primary, #1b2a4a);
	color: #fff;
}
.ddk-viewer__title {
	font-weight: 600;
	font-size: 0.95rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 55%;
}
.ddk-viewer__actions { display: flex; gap: 0.5rem; align-items: center; }
.ddk-viewer__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.45rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 8px;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font: inherit;
	font-size: 0.88rem;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}
.ddk-viewer__btn:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }
.ddk-viewer__btn--ghost {
	border: 0;
	background: transparent;
	font-size: 1.4rem;
	line-height: 1;
	padding: 0.25rem 0.6rem;
}
.ddk-viewer__frame {
	flex: 1;
	width: 100%;
	border: 0;
	background: #525659;
}

@media (max-width: 640px) {
	.ddk-viewer { padding: 0; }
	.ddk-viewer__dialog { width: 100%; height: 100%; border-radius: 0; }
	.ddk-viewer__title { max-width: 100%; order: 2; }
}

/* --- Paginación ------------------------------------------------------ */
.ddk-portal__pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
	justify-content: space-between;
	margin-top: 1rem;
}
.ddk-portal__page-info { color: var(--_muted); font-size: 0.9rem; }
.ddk-portal__page-links { display: flex; gap: 0.35rem; }
.ddk-portal__page {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	height: 2.25rem;
	padding: 0 0.5rem;
	border: 1px solid var(--_border);
	border-radius: 8px;
	background: var(--_surface);
	color: var(--_text);
	font-weight: 600;
	font-size: 0.9rem;
	text-decoration: none;
}
.ddk-portal__page:hover { border-color: var(--_primary); color: var(--_primary); }
.ddk-portal__page.is-current { background: var(--_primary); border-color: var(--_primary); color: #fff; }
.ddk-portal__page--gap { border: 0; background: transparent; color: var(--_muted); }

/* --- Responsive: lateral colapsa arriba ------------------------------ */
@media (max-width: 900px) {
	.ddk-desk { grid-template-columns: 1fr; min-height: 0; }
	.ddk-desk__side {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: 0.75rem;
		padding: 1rem;
		height: auto;
		overflow-y: visible;
		z-index: 30;
	}
	.ddk-desk__brand { display: none; }
	.ddk-desk__user { padding-bottom: 0; border-bottom: 0; margin-right: auto; }
	.ddk-desk__avatar { width: 34px; height: 34px; flex-basis: 34px; font-size: 0.9rem; }
	.ddk-desk__user-name { display: none; }
	.ddk-desk__nav { flex-direction: row; flex: 0 1 auto; }
	.ddk-desk__link,
	.ddk-desk__logout { padding: 0.55rem 0.8rem; font-size: 0.9rem; }
	.ddk-desk__link.is-active { box-shadow: inset 0 -3px 0 var(--_accent); }
}

.ddk-portal__notice {
	padding: 0.85rem 1.1rem;
	border-radius: 8px;
	margin-bottom: 1.25rem;
	font-size: 0.95rem;
}
.ddk-portal__notice--ok { background: rgba(46, 125, 91, 0.12); color: #235f46; border: 1px solid rgba(46, 125, 91, 0.35); }
.ddk-portal__notice--error { background: rgba(170, 51, 51, 0.1); color: #8c2b2b; border: 1px solid rgba(170, 51, 51, 0.3); }
.ddk-portal__notice code { background: rgba(0, 0, 0, 0.06); padding: 0.1rem 0.4rem; border-radius: 4px; }

.ddk-portal__section-bar {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
}
.ddk-portal__section-title { margin: 0; color: var(--_primary); }
.ddk-portal__subtitle { margin: 0 0 0.5rem; color: var(--_primary); font-size: 1.05rem; }

.ddk-portal__button {
	display: inline-block;
	background: var(--_primary);
	color: #fff !important;
	border: 1px solid var(--_primary);
	border-radius: 8px;
	padding: 0.6rem 1.2rem;
	font: inherit;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}
.ddk-portal__button:hover { opacity: 0.92; }
.ddk-portal__button--ghost {
	background: transparent;
	color: var(--_primary) !important;
	border-color: var(--_border);
}
.ddk-portal__button--ghost:hover { border-color: var(--_primary); opacity: 1; }

/* Tabla de gestión: scroll interno vertical con cabecera pegada. */
.ddk-portal__table-wrap {
	overflow: auto;
	max-height: min(62vh, 640px);
	background: var(--_surface);
	border: 1px solid var(--_border);
	border-radius: 12px;
	box-shadow: 0 1px 3px rgba(18, 21, 28, 0.06);
}
.ddk-portal__table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
.ddk-portal__table th,
.ddk-portal__table td { padding: 0.8rem 1rem; text-align: left; border-bottom: 1px solid var(--_border); vertical-align: middle; }
.ddk-portal__table thead th {
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--_muted);
	background: var(--_surface);
	position: sticky;
	top: 0;
	z-index: 2;
	box-shadow: inset 0 -1px 0 var(--_border);
}
.ddk-portal__table tbody tr:last-child td { border-bottom: 0; }
.ddk-portal__table tbody tr:hover { background: rgba(0, 0, 0, 0.02); }
.ddk-portal__ref-link { font-weight: 700; color: var(--_primary); text-decoration: none; display: block; }
.ddk-portal__ref-link:hover { text-decoration: underline; }
.ddk-portal__ref-link + .ddk-portal__muted { display: block; font-size: 0.85rem; }
.ddk-portal__row-actions a { font-weight: 600; color: var(--_primary); }

/* Formularios del escritorio. */
.ddk-portal__form { margin: 0; }
.ddk-portal__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 0 1.5rem;
}
.ddk-portal__field { margin: 0 0 1rem; }
.ddk-portal__field label { display: block; font-weight: 600; margin-bottom: 0.35rem; }
.ddk-portal__field .ddk-portal__muted { display: block; font-weight: 400; font-size: 0.85rem; margin-top: 0.35rem; }
.ddk-portal--desk input[type="text"],
.ddk-portal--desk input[type="email"],
.ddk-portal--desk input[type="password"],
.ddk-portal--desk select,
.ddk-portal--desk textarea {
	width: 100%;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--_border);
	border-radius: 8px;
	font: inherit;
	background: var(--_surface);
	color: var(--_text);
}
.ddk-portal--desk input[type="file"] { font: inherit; }
.ddk-portal__check { font-weight: 400 !important; }
.ddk-portal__check input { margin-right: 0.4rem; }
.ddk-portal__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; margin: 0.5rem 0 0; }
.ddk-portal__upload { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px dashed var(--_border); }

/* Tabla apilada en móvil. */
@media (max-width: 640px) {
	.ddk-portal__table thead { display: none; }
	.ddk-portal__table tbody tr { display: block; padding: 0.5rem 0; }
	.ddk-portal__table tbody td {
		display: flex;
		gap: 0.75rem;
		justify-content: space-between;
		border-bottom: 0;
		padding: 0.35rem 1rem;
	}
	.ddk-portal__table tbody td::before {
		content: attr(data-label);
		font-weight: 600;
		color: var(--_muted);
	}
	.ddk-portal__table tbody tr + tr { border-top: 1px solid var(--_border); }
	.ddk-portal__table td.ddk-portal__row-actions::before { content: ''; }
}
