Ctrl K
ComunidadGuías…

src/widget.scss

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
:root {
	--altcha-border-color: var(--altcha-color-neutral);
	--altcha-border-width: 1px;
	--altcha-border-radius: 6px;
	--altcha-color-base: light-dark(oklch(100% 0.00011 271.152), oklch(20.904% 0.00002 271.152));
	--altcha-color-base-content: light-dark(
		oklch(20.904% 0.00002 271.152),
		oklch(100% 0.00011 271.152)
	);
	--altcha-color-error: oklch(51.284% 0.20527 28.678);
	--altcha-color-error-content: oklch(100% 0.00011 271.152);
	--altcha-color-neutral: light-dark(oklch(83.591% 0.0001 271.152), oklch(46.04% 0.00005 271.152));
	--altcha-color-neutral-content: light-dark(
		oklch(46.76% 0.00005 271.152),
		oklch(100% 0.00011 271.152)
	);
	--altcha-color-primary: oklch(40.279% 0.2449 268.131);
	--altcha-color-primary-content: oklch(100% 0.00011 271.152);
	--altcha-color-success: oklch(55.748% 0.18968 142.511);
	--altcha-color-success-content: oklch(100% 0.00011 271.152);
	--altcha-checkbox-border-color: light-dark(
		oklch(66.494% 0.00233 15.434),
		oklch(51.028% 0.00006 271.152)
	);
	--altcha-checkbox-border-radius: 5px;
	--altcha-checkbox-border-width: var(--altcha-border-width);
	--altcha-checkbox-outline: 2px solid var(--altcha-checkbox-outline-color);
	--altcha-checkbox-outline-color: -webkit-focus-ring-color;
	--altcha-checkbox-outline-offset: 2px;
	--altcha-checkbox-size: 22px;
	--altcha-checkbox-transition-duration: var(--altcha-transition-duration);
	--altcha-input-background-color: var(--altcha-color-base);
	--altcha-input-border-radius: 3px;
	--altcha-input-border-width: 1px;
	--altcha-input-color: var(--altcha-color-base-content);
	--altcha-max-width: 320px;
	--altcha-padding: 0.75rem;
	--altcha-popover-arrow-size: 6px;
	--altcha-popover-color: var(--altcha-border-color);
	--altcha-shadow: drop-shadow(3px 3px 6px oklch(0% 0 0 / 0.2));
	--altcha-spinner-color: var(--altcha-color-base-content);
	--altcha-switch-background-color: var(--altcha-color-neutral);
	--altcha-switch-border-radius: calc(infinity * 1px);
	--altcha-switch-height: var(--altcha-checkbox-size);
	--altcha-switch-padding: 0.25rem;
	--altcha-switch-width: calc(var(--altcha-checkbox-size) * 1.75);
	--altcha-switch-toggle-border-radius: 100%;
	--altcha-switch-toggle-color: var(--altcha-color-neutral-content);
	--altcha-switch-toggle-size: calc(
		var(--altcha-switch-height) - calc(var(--altcha-switch-padding) * 2)
	);
	--altcha-transition-duration: 0.6s;
	--altcha-z-index: 99999999;
	--altcha-z-index-popover: 999999999;
}

@supports (-moz-appearance: none) {
	:root {
		--altcha-checkbox-outline-color: var(--altcha-color-primary);
	}
}

.altcha {
	all: revert-layer;
	display: none;
	font-family: inherit;
	font-size: inherit;
	position: relative;

	&[data-visible] {
		display: block;
	}

	&-popover,
	&-popover * {
		all: revert-layer;
		box-sizing: border-box;
		font-family: inherit;
		font-size: inherit;
		line-height: 1.25;
	}

	& * {
		all: revert-layer;
		box-sizing: border-box;
		font-family: inherit;
		font-size: inherit;
		line-height: 1.25;
	}

	& a,
	&-popover a {
		color: currentColor;
		text-decoration: none;

		&:hover {
			color: currentColor;
		}
	}

	&-main {
		align-items: start;
		background-color: var(--altcha-color-base);
		border: var(--altcha-border-width, 1px) solid var(--altcha-border-color);
		border-radius: var(--altcha-border-radius, 0);
		color: var(--altcha-color-base-content);
		display: flex;
		flex-direction: column;
		gap: 0.5rem;
		justify-content: space-between;
		padding: var(--altcha-padding);
		max-width: var(--altcha-max-width, 100%);

		& > * {
			display: flex;
			width: 100%;

			&:first-child {
				flex-grow: 1;
			}
		}
	}

	&-checkbox-wrap {
		align-items: center;
		display: flex;
		flex-direction: row;
		flex-grow: 1;
		gap: 0.5rem;

		& > * {
			display: flex;
		}
	}

	&-logo {
		opacity: 0.7;
	}

	&-footer {
		align-items: center;
		display: flex;
		flex-grow: 1;
		gap: 0.5rem;
		justify-content: flex-end;
		font-size: 0.7rem;
		opacity: 0.7;

		& p {
			margin: 0;
			padding: 0;
		}
	}

	&-error {
		font-size: 0.85rem;
	}

	&-button {
		align-items: center;
		background: var(--altcha-color-primary);
		border: var(--altcha-input-border-width) solid var(--altcha-color-primary);
		border-radius: var(--altcha-input-border-radius);
		color: var(--altcha-color-primary-content);
		cursor: pointer;
		display: flex;
		font-size: 0.9rem;
		gap: 0.5rem;
		padding: 0.35rem;

		&:focus {
			border-color: var(--altcha-color-primary);
			outline: var(--altcha-checkbox-outline);
			outline-offset: var(--altcha-checkbox-outline-offset);
		}
	}

	&-button > &-spinner,
	&-button > svg {
		height: 20px;
		width: 20px;
	}

	&-button-secondary {
		background: transparent;
		border-color: var(--altcha-color-neutral);
		color: var(--altcha-color-neutral-content);
	}

	&-input {
		background: var(--altcha-input-background-color);
		border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);
		border-radius: var(--altcha-input-border-radius);
		color: var(--altcha-input-color);
		flex-grow: 1;
		font-size: 1rem;
		min-width: 0;
		padding: 0.25rem;
		width: auto;

		&:focus {
			border-color: var(--altcha-color-primary);
			outline: var(--altcha-checkbox-outline);
			outline-offset: var(--altcha-checkbox-outline-offset);
		}
	}

	&-spinner {
		animation: altcha-rotate 0.6s linear infinite;
		border-radius: 100%;
		border: var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);
		border-bottom-color: transparent;
		border-right-color: transparent;
		opacity: 0.7;
	}

	&-popover {
		background-color: var(--altcha-color-base);
		border: var(--altcha-border-width) solid var(--altcha-border-color);
		border-radius: var(--altcha-border-radius);
		color: var(--altcha-color-base-content);
		filter: var(--altcha-shadow);
		position: absolute;
		left: calc(var(--altcha-padding) / 2);
		max-width: calc(var(--altcha-max-width) - var(--altcha-padding));
		top: calc(
			var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size)
		);
		z-index: var(--altcha-z-index-popover);

		&-arrow {
			border: var(--altcha-popover-arrow-size) solid transparent;
			border-bottom-color: var(--altcha-popover-color);
			content: '';
			height: 0;
			left: calc(var(--altcha-checkbox-size) / 2);
			position: absolute;
			top: calc(var(--altcha-popover-arrow-size) * -2);
			width: 0;
		}

		&-content {
			max-height: 100dvh;
			overflow: auto;
			padding: var(--altcha-padding);
		}

		&[data-top='true'][data-display='standard'] {
			bottom: calc(100% - (var(--altcha-padding) - var(--altcha-popover-arrow-size)));
			top: auto;
		}

		&[data-top='true'][data-display='standard'] &-arrow {
			border-bottom-color: transparent;
			border-top-color: var(--altcha-popover-color);
			bottom: calc(var(--altcha-popover-arrow-size) * -2);
			top: auto;
		}

		&[data-variant='error'] {
			--altcha-popover-color: var(--altcha-color-error);
			background-color: var(--altcha-color-error);
			border-color: var(--altcha-color-error);
			color: var(--altcha-color-error-content);
		}

		&[data-variant='error'] &-content {
			padding: calc(var(--altcha-padding) / 1.5) var(--altcha-padding);
		}

		&[data-display='overlay'] {
			animation: altcha-overlay-slidein 0.5s forwards;
			left: 50%;
			position: fixed;
			top: 45%;
			transform: translate(-50%, -50%);
			width: var(--altcha-max-width);
			z-index: var(--altcha-z-index);
		}

		&[data-display='bottomsheet'] {
			animation: altcha-bottomsheet-slideup 0.5s forwards;
			border-bottom-left-radius: 0;
			border-bottom-right-radius: 0;
			border-bottom: 0;
			bottom: -100%;
			left: 50%;
			position: fixed;
			top: auto;
			transform: translate(-50%, 0);
			width: var(--altcha-max-width);
			z-index: var(--altcha-z-index);
		}

		&[data-display='bottomsheet'] &-content {
			padding-bottom: calc(var(--altcha-padding) * 2);
		}

		&-backdrop {
			background: var(--altcha-color-base-content);
			bottom: 0;
			left: 0;
			opacity: 0.1;
			position: fixed;
			right: 0;
			top: 0;
			transition: opacity 0.5s;
			z-index: var(--altcha-z-index);
		}

		&-close {
			color: var(--altcha-color-base-content);
			cursor: pointer;
			display: inline-block;
			font-size: 1rem;
			height: 1.25rem;
			line-height: 0.95;
			position: absolute;
			right: 0;
			text-align: center;
			text-shadow: 0 0 1px var(--altcha-color-base);
			top: -1.5rem;
			width: 1.25rem;
			z-index: var(--altcha-z-index);
		}
	}

	[dir='rtl'] &-popover {
		left: auto;
		right: calc(var(--altcha-padding) / 2);

		&-arrow {
			left: auto;
			right: calc(var(--altcha-checkbox-size) / 2);
		}

		&-close {
			left: 0;
			right: auto;
		}
	}

	&-popover[data-display='bottomsheet'] &-footer,
	&-popover[data-display='overlay'] &-footer {
		align-items: center;
		justify-content: center;
		padding-top: 1rem;
		gap: 0.5rem;

		& svg {
			height: 18px;
			width: 18px;
			vertical-align: middle;
		}
	}

	&-code-challenge {
		& > form {
			display: flex;
			flex-direction: column;
			gap: 0.5rem;
		}

		&-title {
			font-weight: 600;
		}

		&-text {
			font-size: 0.85rem;
		}

		&-image {
			background: white;
			border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);
			border-radius: var(--altcha-input-border-radius);
			object-fit: contain;
			height: 50px;
		}

		&-row {
			display: flex;
			gap: 0.5rem;
		}

		&-buttons {
			align-items: center;
			display: flex;
			flex-direction: column;
			gap: 0.5rem;
			margin-top: var(--altcha-padding);
			justify-content: space-between;

			& button {
				justify-content: center;
				width: 100%;
			}
		}
	}

	&-checkbox {
		cursor: pointer;
		height: var(--altcha-checkbox-size);
		position: relative;
		width: var(--altcha-checkbox-size);

		& input {
			appearance: none;
			background: var(--altcha-input-background-color);
			border: var(--altcha-checkbox-border-width, 2px) solid var(--altcha-checkbox-border-color);
			border-radius: var(--altcha-checkbox-border-radius);
			cursor: pointer;
			height: var(--altcha-checkbox-size);
			left: 0;
			margin: 0;
			padding: 0;
			position: absolute;
			top: 0;
			width: var(--altcha-checkbox-size);

			@supports (hanging-punctuation: first) and (font: -apple-system-body) and
				(-webkit-appearance: none) {
				/* Safari-only: fixes focus outline */
				&:focus {
					outline-width: 2px;
					outline-style: solid;
				}
			}

			&:before {
				border-radius: var(--altcha-checkbox-border-radius);
				content: '';
				width: 100%;
				height: 100%;
				background: var(--altcha-color-neutral);
				display: block;
				transform: scale(0);
			}

			&:checked {
				background-color: var(--altcha-color-success);
				border-color: var(--altcha-color-success);
			}

			&:checked::before {
				background-color: var(--altcha-color-success);
				opacity: 0;
				transform: scale(2.2);
				transition: all var(--altcha-checkbox-transition-duration) ease;
				transition-delay: 0.1s;
			}
		}

		& svg {
			--altcha-radio-svg-size: calc(var(--altcha-checkbox-size) * 0.5);
			--altcha-radio-svg-offset: calc(var(--altcha-checkbox-size) * 0.25);

			fill: none;
			left: var(--altcha-radio-svg-offset);
			height: var(--altcha-radio-svg-size);
			opacity: 0;
			position: absolute;
			stroke: currentColor;
			stroke-width: 2;
			stroke-linecap: round;
			stroke-linejoin: round;
			stroke-dasharray: 16px;
			stroke-dashoffset: 16px;
			top: var(--altcha-radio-svg-offset);
			transform: translate3d(0, 0, 0);
			width: var(--altcha-radio-svg-size);
		}

		& input:checked + svg {
			color: var(--altcha-color-success-content);
			opacity: 1;
			stroke-dashoffset: 0;
			transition: all var(--altcha-checkbox-transition-duration) ease;
			transition-delay: 0.1s;
		}

		&-spinner {
			display: none;
			left: 0;
			height: var(--altcha-checkbox-size);
			position: absolute;
			top: 0;
			width: var(--altcha-checkbox-size);
		}

		&[data-loading='true'] input {
			appearance: none;
			opacity: 0;
			pointer-events: none;
		}

		&[data-loading='true'] &-spinner {
			display: block;
		}
	}

	&-checkbox-native {
		height: var(--altcha-checkbox-size);
		position: relative;
		width: var(--altcha-checkbox-size);

		& input {
			height: var(--altcha-checkbox-size);
			margin: 0;
			width: var(--altcha-checkbox-size);
		}

		&-spinner {
			display: none;
			left: 0;
			height: var(--altcha-checkbox-size);
			position: absolute;
			top: 0;
			width: var(--altcha-checkbox-size);
		}

		&[data-loading='true'] input {
			appearance: none;
			opacity: 0;
			pointer-events: none;
		}

		&[data-loading='true'] &-spinner {
			display: block;
		}
	}

	&-switch {
		align-items: center;
		border-radius: var(--altcha-switch-border-radius);
		background-color: var(--altcha-switch-background-color);
		display: flex;
		height: var(--altcha-switch-height);
		padding: var(--altcha-switch-padding);
		position: relative;
		width: var(--altcha-switch-width);

		&:focus-within {
			outline: var(--altcha-checkbox-outline);
			outline-offset: var(--altcha-checkbox-outline-offset);
		}

		& input {
			appearance: none;
			cursor: pointer;
			height: 100%;
			left: 0;
			opacity: 0;
			position: absolute;
			top: 0;
			width: 100%;
		}

		&-toggle {
			align-items: center;
			background-color: var(--altcha-switch-toggle-color);
			border-radius: var(--altcha-switch-toggle-border-radius);
			cursor: pointer;
			display: flex;
			height: var(--altcha-switch-toggle-size);
			justify-content: center;
			left: var(--altcha-switch-padding);
			position: absolute;
			transition:
				width 150ms ease-out,
				left 150ms ease-out;
			width: var(--altcha-switch-toggle-size);
		}

		&-spinner {
			display: none;
			height: var(--altcha-switch-toggle-size);
			width: var(--altcha-switch-toggle-size);
		}

		&[data-loading='true'] {
			pointer-events: none;
		}

		&[data-loading='true'] &-spinner {
			display: block;
		}

		&[data-loading='true'] &-toggle {
			background-color: transparent;
			left: calc(50% - (var(--altcha-switch-toggle-size) / 2));
		}

		[data-state='verified'] & {
			--altcha-switch-background-color: var(--altcha-color-success);

			&-toggle {
				background-color: var(--altcha-color-success-content);
				left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));
			}
		}

		[dir='rtl'] &-toggle {
			left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));
		}

		[dir='rtl'][data-state='verified'] &-toggle {
			left: var(--altcha-switch-padding);
		}
	}

	&-floating-arrow {
		border: 6px solid transparent;
		border-bottom-color: var(--altcha-border-color);
		content: '';
		height: 0;
		left: 12px;
		position: absolute;
		top: -12px;
		width: 0;
	}

	&-overlay-backdrop {
		bottom: 0;
		left: 0;
		position: fixed;
		right: 0;
		top: 0;
		transition: opacity var(--altcha-transition-duration);
		z-index: var(--altcha-z-index);
	}

	&-overlay-close {
		display: inline-block;
		color: currentColor;
		cursor: pointer;
		font-size: 1rem;
		height: 1rem;
		line-height: 0.85;
		position: absolute;
		right: 0;
		text-align: center;
		text-shadow: 0 0 1px var(--altcha-color-base);
		top: -1.5rem;
		width: 1rem;
		z-index: var(--altcha-z-index);
	}

	&[data-display='overlay'] {
		animation: altcha-overlay-slidein var(--altcha-transition-duration) forwards;
		filter: var(--altcha-shadow);
		left: 50%;
		opacity: 0;
		position: fixed;
		top: 45%;
		transform: translate(-50%, -50%);
		z-index: var(--altcha-z-index);
	}

	&[data-display='overlay'] &-main {
		width: var(--altcha-max-width);
	}

	&[data-display='floating'] {
		display: none;
		filter: var(--altcha-shadow);
		left: var(--altcha-floating-left, -100%);
		position: fixed;
		top: var(--altcha-floating-top, -100%);
		z-index: var(--altcha-z-index);
	}

	&[data-display='floating'] &-main {
		width: var(--altcha-max-width);
	}

	&[data-display='floating'][data-floating-position='top'] &-floating-arrow {
		border-bottom-color: transparent;
		border-top-color: var(--altcha-border-color);
		bottom: -12px;
		top: auto;
	}

	&[data-display='floating'][data-visible] {
		display: flex;
	}

	&[data-display='bar'] {
		bottom: -100%;
		filter: var(--altcha-shadow);
		left: 0;
		position: fixed;
		right: 0;
		transition:
			bottom var(--altcha-transition-duration),
			top var(--altcha-transition-duration);
		z-index: var(--altcha-z-index);
	}

	&[data-display='bar'] &-main {
		align-items: center;
		border-radius: 0;
		border-width: var(--altcha-border-width) 0 0 0;
		flex-direction: row;
		max-width: 100% !important;

		& > * {
			width: auto;
		}
	}

	&[data-display='bar'][data-placement='top'] {
		bottom: auto;
		top: -100%;
	}

	&[data-display='bar'][data-placement='top'] &-main {
		border-width: 0 0 var(--altcha-border-width) 0;
	}

	&[data-display='bar'][data-placement='bottom']:not([data-state='unverified']) {
		bottom: 0;
	}

	&[data-display='bar'][data-placement='top']:not([data-state='unverified']) {
		top: 0;
	}

	&[data-display='invisible'] {
		display: none;
	}
}

@keyframes altcha-rotate {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}

@keyframes altcha-bottomsheet-slideup {
	100% {
		bottom: 0;
	}
}

@keyframes altcha-overlay-slidein {
	100% {
		opacity: 1;
		top: 50%;
	}
}