/* Control Icons For Accordions * ============================= */ .vc_tta { .vc_tta-controls-icon { display: inline-block; vertical-align: middle; height: @vc_tta-control-icon-size; width: @vc_tta-control-icon-size; position: relative; font-size: inherit; margin: 0; &:before, &:after { -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } } .vc_tta-title-text:not(:empty) { ~ .vc_tta-controls-icon { margin-left: 0; } } } /* Control Icons * ============================= */ .vc_tta { .vc_tta-controls-icon { // Plus Control Icon &.vc_tta-controls-icon-plus { &::before { content: ''; display: block; position: absolute; box-sizing: border-box; left: 0; right: 0; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); border-style: solid; border-width: @vc_tta-control-icon-width 0 0 0; } &::after { content: ''; display: block; position: absolute; box-sizing: border-box; left: 50%; bottom: 0; top: 0; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); border-style: solid; border-width: 0 0 0 @vc_tta-control-icon-width; } } // Chevron Control Icon &.vc_tta-controls-icon-chevron { &::before { content: ''; display: block; position: absolute; box-sizing: border-box; left: @vc_tta-control-icon-width; right: @vc_tta-control-icon-width; top: @vc_tta-control-icon-width; bottom: @vc_tta-control-icon-width; border-style: solid; border-width: 0 @vc_tta-control-icon-width @vc_tta-control-icon-width 0; -webkit-transform: rotate(45deg) translate(-25%, -25%); -ms-transform: rotate(45deg) translate(-25%, -25%); transform: rotate(45deg) translate(-25%, -25%); } } // Triangle Control Icon &.vc_tta-controls-icon-triangle { &::before { content: ''; display: block; position: absolute; box-sizing: border-box; left: 0; right: 0; top: 0; bottom: 0; border-style: solid; border-width: floor(@vc_tta-control-icon-size / 2); border-bottom-color: transparent !important; border-right-color: transparent !important; border-left-color: transparent !important; -webkit-transform: translateY(25%); -ms-transform: translateY(25%); transform: translateY(25%); } } } // active icon .vc_active { .vc_tta-controls-icon { // Plus Control Icon &.vc_tta-controls-icon-plus { &::after { display: none; } } // Chevron Control Icon &.vc_tta-controls-icon-chevron { &::before { -webkit-transform: rotate(225deg) translate(-25%, -25%); -ms-transform: rotate(225deg) translate(-25%, -25%); transform: rotate(225deg) translate(-25%, -25%); } } // Triangle Control Icon &.vc_tta-controls-icon-triangle { &::before { -webkit-transform: rotate(180deg) translateY(25%); -ms-transform: rotate(180deg) translateY(25%); transform: rotate(180deg) translateY(25%); } } } } } /* Control Icons Positions * ============================= */ .vc_tta { &.vc_tta-accordion { // Icon From Left .vc_tta-controls-icon-position-left { &.vc_tta-panel-title { > a { padding-left: @vc_tta-panels-padding-horizontal + @vc_tta-icon-spacing + @vc_tta-control-icon-size; } } .vc_tta-controls-icon { position: absolute; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); left: @vc_tta-panels-padding-horizontal; } } // Icon From Right .vc_tta-controls-icon-position-right { &.vc_tta-panel-title { > a { padding-right: @vc_tta-panels-padding-horizontal * 1.5 + @vc_tta-control-icon-size; } } .vc_tta-controls-icon { position: absolute; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); right: @vc_tta-panels-padding-horizontal; } } } } /*! elementor-pro - v4.2.0 - 31-08-2026 */ [data-editable-elementor-document]{position:relative}[data-editable-elementor-document]:after,[data-editable-elementor-document]:before{content:"";display:table}[data-editable-elementor-document] .elementor-document-handle{border:2px solid var(--e-a-color-primary,#f3bafd);cursor:pointer;display:none;inset:0;position:absolute;z-index:2147483620}[data-editable-elementor-document] .elementor-document-handle:before{background:var(--e-a-color-primary,#f3bafd);content:"";inset:0;opacity:.3;position:absolute}[data-editable-elementor-document] .elementor-document-handle__inner{align-items:center;background:var(--e-a-color-primary,#f3bafd);border-radius:0 0 3px 3px;color:var(--e-p-border-global-invert,#0c0d0e);display:none;font-family:Roboto,Arial,Helvetica,sans-serif;font-size:12px;gap:8px;left:50%;line-height:14px;padding:8px 16px;position:absolute;top:0;transform:translateX(-50%)}[data-editable-elementor-document] .elementor-document-handle__inner:after,[data-editable-elementor-document] .elementor-document-handle__inner:before{border:solid transparent;content:"";position:absolute}[data-editable-elementor-document] .elementor-document-handle__inner:before{border-inline-end-color:var(--e-a-color-primary,#f3bafd);border-width:0 14px 30px 0;right:calc(100% - 1px)}[data-editable-elementor-document] .elementor-document-handle__inner:after{border-inline-start-color:var(--e-a-color-primary,#f3bafd);border-width:0 0 30px 14px;left:calc(100% - 1px)}[data-editable-elementor-document].e-embedded-document-active .elementor-document-handle:not(.elementor-document-save-back-handle),[data-editable-elementor-document].elementor-widget-container .elementor-document-handle:not(.elementor-document-save-back-handle){border-block-end:unset;bottom:unset}[data-editable-elementor-document].e-embedded-document-active .elementor-document-handle:not(.elementor-document-save-back-handle):before,[data-editable-elementor-document].elementor-widget-container .elementor-document-handle:not(.elementor-document-save-back-handle):before{bottom:unset;display:none}.elementor-editor-active [data-editable-elementor-document]:not(.elementor-edit-mode):hover .elementor-document-handle:not(.elementor-document-save-back-handle),.elementor-editor-active [data-editable-elementor-document]:not(.elementor-edit-mode):hover .elementor-document-handle:not(.elementor-document-save-back-handle):before{display:block}.elementor-editor-active [data-editable-elementor-document]:not(.elementor-edit-mode):hover .elementor-document-handle:not(.elementor-document-save-back-handle) .elementor-document-handle__inner{display:flex}.elementor-editor-active [data-editable-elementor-document].loading{opacity:.5}.elementor-editor-active [data-editable-elementor-document][data-elementor-type=single]>.elementor-document-handle{border-radius:3px 3px 0 0;transform:translateX(-50%) translateY(-100%)}.elementor-editor-active [data-editable-elementor-document][data-elementor-type=single]>.elementor-document-handle:before{border-width:30px 14px 0 0}.elementor-editor-active [data-editable-elementor-document][data-elementor-type=single]>.elementor-document-handle:after{border-width:30px 0 0 14px}[data-elementor-post-type=elementor_library]>.elementor-document-handle{border:2px solid var(--e-p-border-global,#5eead4)}[data-elementor-post-type=elementor_library]>.elementor-document-handle .elementor-document-handle__inner,[data-elementor-post-type=elementor_library]>.elementor-document-handle:before{background-color:var(--e-p-border-global,#5eead4)}[data-elementor-post-type=elementor_library]>.elementor-document-handle .elementor-document-handle__inner:before{border-inline-end-color:var(--e-p-border-global,#5eead4)}[data-elementor-post-type=elementor_library]>.elementor-document-handle .elementor-document-handle__inner:after{border-inline-start-color:var(--e-p-border-global,#5eead4)}.elementor-widget.elementor-sticky--effects .elementor-editor-widget-settings{right:-14px}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid var(--e-p-border-global)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget.elementor-element-editable,.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget.elementor-element-editable:hover{box-shadow:0 0 0 2px var(--e-p-border-global)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-color:var(--e-p-border-global)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting{background-color:var(--e-p-border-global);color:var(--e-p-border-global-invert)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:var(--e-p-border-global-hover)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save,.elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty)+#elementor-add-new-section{display:none}.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-add-section,.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-add-section-inline,.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-element-overlay,.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-empty,.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-empty-view,.elementor-editor-preview .elementor-edit-area-active[data-elementor-type=loop-item] .elementor-widget-empty{display:initial}.elementor.elementor-edit-area-active .elementor-document-handle.elementor-document-save-back-handle{border:unset;bottom:unset;display:block}.elementor.elementor-edit-area-active .elementor-document-handle.elementor-document-save-back-handle:before{display:none}.elementor.elementor-edit-area-active .elementor-document-handle.elementor-document-save-back-handle>.elementor-document-handle__inner{display:flex;opacity:1}.elementor-document-handle.elementor-document-save-back-handle .elementor-document-handle__inner{border-radius:3px 3px 0 0;transform:translateX(-50%) translateY(-100%)}.elementor-document-handle.elementor-document-save-back-handle .elementor-document-handle__inner:before{border-width:30px 14px 0 0}.elementor-document-handle.elementor-document-save-back-handle .elementor-document-handle__inner:after{border-width:30px 0 0 14px}.elementor-document-handle.elementor-document-save-back-handle .eicon-arrow-left,.elementor-document-handle.elementor-document-save-back-handle .eicon-arrow-right{margin-inline-end:5px}.elementor-loop-container>div.elementor-edit-area-active:first-of-type,div[class*=elementor-widget-loop] .elementor-edit-area-active.e-loop-first-edit:first-of-type,div[class*=elementor-widget-loop] .elementor-edit-area-active.swiper-slide-active,div[class*=elementor-widget-loop] .elementor-edit-area-active[data-editable-elementor-document]{border:2px solid #5eead4}div[class*=elementor-widget-loop] .elementor-edit-area-active .elementor-document-save-back-handle{display:flex;line-height:normal;white-space:nowrap}div[class*=elementor-widget-loop] #elementor-add-new-section{margin:30px auto}div[class*=elementor-widget-loop] .elementor-add-section-inner{padding:15px 0}.elementor-edit-area-active[data-elementor-type=loop-item] .elementor-section-wrap:not(:empty)+#elementor-add-new-section{display:none}.elementor-edit-area-active[data-elementor-type=loop-item] .elementor-section-wrap:empty{min-height:0}.elementor-editor-active [class*=elementor-widget-loop] .elementor:not([data-editable-elementor-document]):not(.e-loop-alternate-template):hover{box-shadow:none}.elementor-editor-active [class*=elementor-widget-loop]:hover .elementor-document-handle:not(.elementor-document-save-back-handle){display:flex;line-height:normal;white-space:nowrap}.elementor-editor-active [class*=elementor-widget-loop]:hover .elementor-document-handle:not(.elementor-document-save-back-handle):before{display:block}.elementor-editor-active [class*=elementor-widget-loop]:hover .elementor-document-handle:not(.elementor-document-save-back-handle) .elementor-document-handle__inner{display:flex}.elementor-editor-active [class*=elementor-widget-loop]:hover .e-loop-alternate-template{box-shadow:0 0 0 1px #9da5ae}.e-loop-template-canvas{align-items:center;display:flex;justify-content:center;min-height:100vh}.e-loop-template-canvas [data-elementor-type=loop-item].e-loop-item{max-width:var(--preview-width,410px);width:var(--preview-width,410px)}.e-loop-template-canvas [data-elementor-type=loop-item].e-loop-item #elementor-add-new-section{width:var(--preview-width,410px)}/** * Schema runtime service. * * Reads PHP-provided schema contracts and exposes explicit runtime helpers * consumed by core editor/save modules. * * Exposes: * SFE.SchemaRuntime * SFE.SchemaV2 */ ( function() { 'use strict'; window.MWP = window.MWP || {}; window.MWP.SFE = window.MWP.SFE || {}; const SFE = window.MWP.SFE; SFE.ManagerData = SFE.ManagerData || {}; const RAW_SCHEMA_DATA = window.MWPSFE_Schema_Data || { version: 1, schemas: {} }; const VALID_COMPONENT_TYPES = new Set( [ 'text', 'file' ] ); const VALID_BLOCK_TYPES = new Set( [ 'text', 'media' ] ); const VALID_MEDIA_TYPES = new Set( [ 'image', 'audio', 'video', 'file', 'image_or_video', 'icon' ] ); const VALID_BINDING_SOURCES = new Set( [ 'html', 'plaintext', 'textalignment', 'columnalignment', 'url', 'id', 'media_type', 'list_block' ] ); const VALID_TARGET_SCOPES = new Set( [ 'component', 'block', 'column' ] ); const VALID_ENTER_MODES = new Set( [ 'auto', 'always', 'never', 'linebreak' ] ); const VALID_LINK_UI_MODES = new Set( [ 'auto', 'manual' ] ); const VALID_TAB_ACTIONS = new Set( [ 'none', 'indent', 'outdent', 'nextComponent', 'previousComponent' ] ); const VALID_MISSING_UI_MODES = new Set( [ 'ghost' ] ); const VALID_MISSING_UI_PLACEMENTS = new Set( [ 'append', 'prepend' ] ); const GHOST_COMPONENT_ATTR = 'data-mwp-sfe-ghost-component'; const GHOST_FLAG_ATTR = 'data-mwp-sfe-ghost'; const GHOST_CLASS = 'mwp-sfe-ghost-component'; function isPlainObject( value ) { return !!value && typeof value === 'object' && !Array.isArray( value ); } function isElementNode( value ) { return !!value && value.nodeType === Node.ELEMENT_NODE; } function normalizeBindingDefinition( rawBinding ) { if ( !isPlainObject( rawBinding ) ) return null; const path = typeof rawBinding.path === 'string' ? rawBinding.path.trim() : ''; const source = typeof rawBinding.source === 'string' ? rawBinding.source.trim().toLowerCase() : ''; if ( !path || !VALID_BINDING_SOURCES.has( source ) ) return null; const binding = { path, source }; if ( rawBinding.resolved === true ) { binding.resolved = true; } if ( typeof rawBinding.value === 'string' && rawBinding.value.trim() ) { binding.value = rawBinding.value.trim(); } return binding; } function normalizeEditorExtractionOptions( rawOptions ) { if ( !isPlainObject( rawOptions ) ) return null; const options = {}; if ( rawOptions.preserveNewlines === true ) { options.preserveNewlines = true; } if ( rawOptions.newlinesToBR === true ) { options.newlinesToBR = true; } return Object.keys( options ).length ? options : null; } function normalizeEditorTabMode( rawTabMode ) { if ( !isPlainObject( rawTabMode ) ) return null; const tab = typeof rawTabMode.tab === 'string' ? rawTabMode.tab.trim() : ''; const shiftTab = typeof rawTabMode.shiftTab === 'string' ? rawTabMode.shiftTab.trim() : ''; const normalized = {}; if ( tab && VALID_TAB_ACTIONS.has( tab ) ) { normalized.tab = tab; } if ( shiftTab && VALID_TAB_ACTIONS.has( shiftTab ) ) { normalized.shiftTab = shiftTab; } return Object.keys( normalized ).length ? normalized : null; } function normalizeEditorTarget( rawTarget ) { if ( typeof rawTarget === 'string' ) { const value = rawTarget.trim(); return value || null; } if ( !isPlainObject( rawTarget ) ) return null; const scope = typeof rawTarget.scope === 'string' ? rawTarget.scope.trim().toLowerCase() : ''; if ( scope && !VALID_TARGET_SCOPES.has( scope ) ) return null; const selector = typeof rawTarget.selector === 'string' ? rawTarget.selector.trim() : ''; const contextKey = typeof rawTarget.contextKey === 'string' ? rawTarget.contextKey.trim() : 'column'; return { scope: scope || 'component', selector, contextKey, }; } function normalizeEditorFormats( rawFormats, depth = 0 ) { if ( depth > 3 || !Array.isArray( rawFormats ) ) return null; const normalized = []; rawFormats.forEach( item => { if ( typeof item === 'string' ) { const token = item.trim(); if ( token ) { normalized.push( token ); } return; } if ( Array.isArray( item ) ) { const group = normalizeEditorFormats( item, depth + 1 ); if ( Array.isArray( group ) && group.length ) { normalized.push( group ); } } } ); return normalized.length ? normalized : null; } function normalizeInlineFormatCapability( rawCapability ) { if ( !isPlainObject( rawCapability ) ) return null; const tag = typeof rawCapability.tag === 'string' ? rawCapability.tag.trim().toLowerCase() : ''; if ( !tag ) return null; const normalizeStringArray = rawValue => { if ( !Array.isArray( rawValue ) ) return null; const values = rawValue .map( value => ( typeof value === 'string' ? value.trim() : '' ) ) .filter( Boolean ); return values.length ? values : null; }; const normalized = { tag }; const attributes = normalizeStringArray( rawCapability.attributes ); const requiredAttributes = normalizeStringArray( rawCapability.requiredAttributes ); const allowedTargets = normalizeStringArray( rawCapability.allowedTargets ); const allowedRelTokens = normalizeStringArray( rawCapability.allowedRelTokens ); const allowedProtocols = normalizeStringArray( rawCapability.allowedProtocols ); if ( attributes ) normalized.attributes = attributes; if ( requiredAttributes ) normalized.requiredAttributes = requiredAttributes; if ( allowedTargets ) normalized.allowedTargets = allowedTargets; if ( allowedRelTokens ) normalized.allowedRelTokens = allowedRelTokens; if ( allowedProtocols ) normalized.allowedProtocols = allowedProtocols; if ( typeof rawCapability.allowsRelativeUrls === 'boolean' ) { normalized.allowsRelativeUrls = rawCapability.allowsRelativeUrls; } if ( typeof rawCapability.allowsAnchorLinks === 'boolean' ) { normalized.allowsAnchorLinks = rawCapability.allowsAnchorLinks; } if ( typeof rawCapability.autoProtocol === 'string' && rawCapability.autoProtocol.trim() ) { normalized.autoProtocol = rawCapability.autoProtocol.trim().toLowerCase(); } if ( typeof rawCapability.preservesUnknownRelTokens === 'boolean' ) { normalized.preservesUnknownRelTokens = rawCapability.preservesUnknownRelTokens; } return normalized; } function normalizeInlineFormatCapabilities( rawCapabilities ) { if ( !isPlainObject( rawCapabilities ) ) return null; const normalized = {}; Object.keys( rawCapabilities ).forEach( key => { const cleanKey = typeof key === 'string' ? key.trim() : ''; if ( !cleanKey ) return; const capability = normalizeInlineFormatCapability( rawCapabilities[ key ] ); if ( capability ) { normalized[ cleanKey ] = capability; } } ); return Object.keys( normalized ).length ? normalized : null; } function normalizeEditorAttributeCapabilityValues( rawValues ) { if ( !Array.isArray( rawValues ) ) return null; const values = rawValues.filter( value => ( typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || value === null ) ); return values.length ? values : null; } function normalizeEditorAttributeCapability( rawCapability ) { if ( !isPlainObject( rawCapability ) ) return null; const normalized = {}; const attribute = typeof rawCapability.attribute === 'string' ? rawCapability.attribute.trim() : ''; const attributes = Array.isArray( rawCapability.attributes ) ? rawCapability.attributes .map( value => ( typeof value === 'string' ? value.trim() : '' ) ) .filter( Boolean ) : null; if ( attribute ) { normalized.attribute = attribute; } else if ( attributes && attributes.length ) { normalized.attributes = attributes; } else { return null; } const values = normalizeEditorAttributeCapabilityValues( rawCapability.values ); if ( values ) { normalized.values = values; } if ( rawCapability.tagChange === true ) { normalized.tagChange = true; } if ( rawCapability.preview === 'inline_style' ) { normalized.preview = 'inline_style'; } if ( Object.prototype.hasOwnProperty.call( rawCapability, 'unsetValue' ) && ( typeof rawCapability.unsetValue === 'string' || typeof rawCapability.unsetValue === 'number' || typeof rawCapability.unsetValue === 'boolean' || rawCapability.unsetValue === null ) ) { normalized.unsetValue = rawCapability.unsetValue; } return normalized; } function normalizeEditorAttributeCapabilities( rawCapabilities ) { if ( !isPlainObject( rawCapabilities ) ) return null; const normalized = {}; Object.keys( rawCapabilities ).forEach( key => { const cleanKey = typeof key === 'string' ? key.trim() : ''; if ( !cleanKey ) return; const capability = normalizeEditorAttributeCapability( rawCapabilities[ key ] ); if ( capability ) { normalized[ cleanKey ] = capability; } } ); return Object.keys( normalized ).length ? normalized : null; } function cloneEditorFormats( formats ) { if ( !Array.isArray( formats ) ) return null; return formats.map( item => ( Array.isArray( item ) ? cloneEditorFormats( item ) : item ) ); } function cloneInlineFormatCapabilities( capabilities ) { if ( !isPlainObject( capabilities ) ) return null; const cloned = {}; Object.keys( capabilities ).forEach( key => { const capability = normalizeInlineFormatCapability( capabilities[ key ] ); if ( !capability ) return; cloned[ key ] = capability; } ); return Object.keys( cloned ).length ? cloned : null; } function cloneEditorAttributeCapabilities( capabilities ) { if ( !isPlainObject( capabilities ) ) return null; const cloned = {}; Object.keys( capabilities ).forEach( key => { const capability = capabilities[ key ]; if ( !isPlainObject( capability ) ) return; cloned[ key ] = { ...capability }; if ( Array.isArray( capability.attributes ) ) { cloned[ key ].attributes = [ ...capability.attributes ]; } if ( Array.isArray( capability.values ) ) { cloned[ key ].values = [ ...capability.values ]; } } ); return Object.keys( cloned ).length ? cloned : null; } function normalizeEditorOperationValues( rawValues ) { if ( !Array.isArray( rawValues ) ) return null; const values = rawValues.filter( value => ( typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || value === null ) ); return values.length ? values : null; } function normalizeEditorOperationStringArray( rawValues ) { if ( !Array.isArray( rawValues ) ) return null; const values = rawValues .map( value => ( typeof value === 'string' ? value.trim() : '' ) ) .filter( Boolean ); return values.length ? values : null; } function normalizeEditorOperation( rawOperation ) { if ( !isPlainObject( rawOperation ) ) return null; const id = typeof rawOperation.id === 'string' ? rawOperation.id.trim() : ''; const kind = typeof rawOperation.kind === 'string' ? rawOperation.kind.trim() : ''; const component = typeof rawOperation.component === 'string' ? rawOperation.component.trim() : ''; if ( !id || !kind || !component ) return null; const normalized = { id, kind, component }; const attribute = typeof rawOperation.attribute === 'string' ? rawOperation.attribute.trim() : ''; const format = typeof rawOperation.format === 'string' ? rawOperation.format.trim() : ''; const attributes = normalizeEditorOperationStringArray( rawOperation.attributes ); const formats = normalizeEditorOperationStringArray( rawOperation.formats ); const targetModes = normalizeEditorOperationStringArray( rawOperation.targetModes ); const values = normalizeEditorOperationValues( rawOperation.values ); if ( attribute ) { normalized.attribute = attribute; } if ( attributes ) { normalized.attributes = attributes; } if ( format ) { normalized.format = format; } if ( formats ) { normalized.formats = formats; } if ( targetModes ) { normalized.targetModes = targetModes; } if ( values ) { normalized.values = values; } if ( Object.prototype.hasOwnProperty.call( rawOperation, 'unsetValue' ) ) { normalized.unsetValue = rawOperation.unsetValue; } if ( typeof rawOperation.preserveInlineFormatting === 'boolean' ) { normalized.preserveInlineFormatting = rawOperation.preserveInlineFormatting; } if ( typeof rawOperation.preserveUnchangedText === 'boolean' ) { normalized.preserveUnchangedText = rawOperation.preserveUnchangedText; } if ( typeof rawOperation.preserveUnspecifiedAttributes === 'boolean' ) { normalized.preserveUnspecifiedAttributes = rawOperation.preserveUnspecifiedAttributes; } if ( typeof rawOperation.mergeRelTokens === 'boolean' ) { normalized.mergeRelTokens = rawOperation.mergeRelTokens; } if ( rawOperation.tagChange === true ) { normalized.tagChange = true; } return normalized; } function cloneEditorOperations( operations ) { if ( !Array.isArray( operations ) ) return null; const cloned = operations .map( normalizeEditorOperation ) .filter( Boolean ); return cloned.length ? cloned : null; } function normalizeEditorDefinition( rawEditor ) { if ( !isPlainObject( rawEditor ) ) return null; const normalized = {}; const enterMode = typeof rawEditor.enterMode === 'string' ? rawEditor.enterMode.trim().toLowerCase() : ''; if ( enterMode && VALID_ENTER_MODES.has( enterMode ) ) { normalized.enterMode = enterMode; } const linkUIMode = typeof rawEditor.linkUIMode === 'string' ? rawEditor.linkUIMode.trim().toLowerCase() : ''; if ( linkUIMode && VALID_LINK_UI_MODES.has( linkUIMode ) ) { normalized.linkUIMode = linkUIMode; } const tabMode = normalizeEditorTabMode( rawEditor.tabMode ); if ( tabMode ) { normalized.tabMode = tabMode; } if ( isPlainObject( rawEditor.formatTargets ) ) { const formatTargets = {}; Object.keys( rawEditor.formatTargets ).forEach( key => { const cleanKey = typeof key === 'string' ? key.trim() : ''; if ( !cleanKey ) return; const normalizedTarget = normalizeEditorTarget( rawEditor.formatTargets[ key ] ); if ( normalizedTarget ) { formatTargets[ cleanKey ] = normalizedTarget; } } ); if ( Object.keys( formatTargets ).length ) { normalized.formatTargets = formatTargets; } } const formats = normalizeEditorFormats( rawEditor.formats ); if ( formats ) { normalized.formats = formats; } const inlineFormatCapabilities = normalizeInlineFormatCapabilities( rawEditor.inlineFormatCapabilities ); if ( inlineFormatCapabilities ) { normalized.inlineFormatCapabilities = inlineFormatCapabilities; } const attributeCapabilities = normalizeEditorAttributeCapabilities( rawEditor.attributeCapabilities ); if ( attributeCapabilities ) { normalized.attributeCapabilities = attributeCapabilities; } const operations = cloneEditorOperations( rawEditor.operations ); if ( operations ) { normalized.operations = operations; } const options = normalizeEditorExtractionOptions( rawEditor.options ); if ( options ) { normalized.options = options; } return Object.keys( normalized ).length ? normalized : null; } function normalizeRepeatDefinition( rawRepeat ) { if ( !isPlainObject( rawRepeat ) ) return null; const mode = typeof rawRepeat.mode === 'string' ? rawRepeat.mode.trim().toLowerCase() : ''; if ( mode === 'tree_path' ) { const itemSelector = typeof rawRepeat.itemSelector === 'string' ? rawRepeat.itemSelector.trim() : ''; const pathKey = typeof rawRepeat.pathKey === 'string' ? rawRepeat.pathKey.trim() : 'path'; if ( !itemSelector || !pathKey ) return null; return { mode: 'tree_path', itemSelector, pathKey, }; } const rowSelector = typeof rawRepeat.rowSelector === 'string' ? rawRepeat.rowSelector.trim() : ''; const cellSelector = typeof rawRepeat.cellSelector === 'string' ? rawRepeat.cellSelector.trim() : ''; if ( !rowSelector || !cellSelector ) return null; return { rowSelector, cellSelector }; } function normalizeFileTargetDefinition( rawTarget ) { if ( !isPlainObject( rawTarget ) ) return null; const selector = typeof rawTarget.selector === 'string' ? rawTarget.selector.trim() : ''; const attribute = typeof rawTarget.attribute === 'string' ? rawTarget.attribute.trim().toLowerCase() : ''; const mediaType = typeof rawTarget.mediaType === 'string' ? rawTarget.mediaType.trim().toLowerCase() : ''; if ( !selector || !attribute || !VALID_MEDIA_TYPES.has( mediaType ) ) { return null; } return { selector, attribute, mediaType, }; } function normalizeMissingUIDefinition( rawMissingUI ) { if ( !isPlainObject( rawMissingUI ) ) return null; const mode = typeof rawMissingUI.mode === 'string' ? rawMissingUI.mode.trim().toLowerCase() : ''; const mountSelector = typeof rawMissingUI.mountSelector === 'string' ? rawMissingUI.mountSelector.trim() : ''; const placement = typeof rawMissingUI.placement === 'string' ? rawMissingUI.placement.trim().toLowerCase() : 'append'; const tag = typeof rawMissingUI.tag === 'string' ? rawMissingUI.tag.trim().toLowerCase() : ''; if ( !VALID_MISSING_UI_MODES.has( mode ) || !mountSelector || !VALID_MISSING_UI_PLACEMENTS.has( placement ) || !tag ) { return null; } const attributes = {}; if ( isPlainObject( rawMissingUI.attributes ) ) { Object.keys( rawMissingUI.attributes ).forEach( key => { const attrName = typeof key === 'string' ? key.trim() : ''; const attrValue = typeof rawMissingUI.attributes[ key ] === 'string' ? rawMissingUI.attributes[ key ].trim() : ''; if ( attrName && attrValue ) { attributes[ attrName ] = attrValue; } } ); } let when = null; if ( isPlainObject( rawMissingUI.when ) ) { const path = typeof rawMissingUI.when.path === 'string' ? rawMissingUI.when.path.trim() : ''; const hasEquals = Object.prototype.hasOwnProperty.call( rawMissingUI.when, 'equals' ); const equals = hasEquals ? rawMissingUI.when.equals : undefined; const isComparableScalar = ( typeof equals === 'string' || typeof equals === 'number' || typeof equals === 'boolean' || equals === null ); if ( path && hasEquals && isComparableScalar ) { when = { path, equals }; } } let placementWhen = null; if ( isPlainObject( rawMissingUI.placementWhen ) ) { const path = typeof rawMissingUI.placementWhen.path === 'string' ? rawMissingUI.placementWhen.path.trim() : ''; const hasEquals = Object.prototype.hasOwnProperty.call( rawMissingUI.placementWhen, 'equals' ); const equals = hasEquals ? rawMissingUI.placementWhen.equals : undefined; const conditionalPlacement = typeof rawMissingUI.placementWhen.placement === 'string' ? rawMissingUI.placementWhen.placement.trim().toLowerCase() : ''; const isComparableScalar = ( typeof equals === 'string' || typeof equals === 'number' || typeof equals === 'boolean' || equals === null ); if ( path && hasEquals && isComparableScalar && VALID_MISSING_UI_PLACEMENTS.has( conditionalPlacement ) ) { placementWhen = { path, equals, placement: conditionalPlacement }; } } return { mode, mountSelector, placement, tag, attributes: Object.keys( attributes ).length ? attributes : {}, when, placementWhen, }; } function normalizeComponentDefinition( rawComponent ) { if ( !isPlainObject( rawComponent ) ) return null; const id = typeof rawComponent.id === 'string' ? rawComponent.id.trim() : ''; const label = typeof rawComponent.label === 'string' ? rawComponent.label.trim() : ''; const type = typeof rawComponent.type === 'string' ? rawComponent.type.trim().toLowerCase() : ''; const selector = typeof rawComponent.selector === 'string' ? rawComponent.selector.trim() : ''; if ( !id || !label || !selector || !VALID_COMPONENT_TYPES.has( type ) ) { return null; } const bindings = Array.isArray( rawComponent.bindings ) ? rawComponent.bindings .map( normalizeBindingDefinition ) .filter( Boolean ) : []; if ( !bindings.length ) { return null; } const normalized = { id, label, type, selector, bindings, default: !!rawComponent.default, uiEditable: rawComponent.uiEditable !== false, }; const placeholder = typeof rawComponent.placeholder === 'string' ? rawComponent.placeholder.trim() : ''; if ( placeholder ) { normalized.placeholder = placeholder; } const repeat = normalizeRepeatDefinition( rawComponent.repeat ); if ( repeat ) { normalized.repeat = repeat; } const editor = normalizeEditorDefinition( rawComponent.editor ); if ( editor ) { normalized.editor = editor; } if ( type === 'text' ) { const missingUI = normalizeMissingUIDefinition( rawComponent.missingUI ); if ( missingUI ) { normalized.missingUI = missingUI; } normalized.required = rawComponent.required === true; } if ( type === 'file' ) { const target = normalizeFileTargetDefinition( rawComponent.target ); if ( !target ) return null; normalized.target = target; } return normalized; } function normalizeSchemaDefinition( rawSchema, handlerId ) { if ( !isPlainObject( rawSchema ) ) return null; const version = Number.parseInt( rawSchema.version, 10 ); if ( !Number.isInteger( version ) || version < 1 ) return null; if ( !isPlainObject( rawSchema.block ) ) return null; const blockName = typeof rawSchema.block.name === 'string' ? rawSchema.block.name.trim() : ''; if ( !blockName ) return null; const blockType = typeof rawSchema.block.type === 'string' ? rawSchema.block.type.trim().toLowerCase() : ''; if ( !VALID_BLOCK_TYPES.has( blockType ) ) return null; const components = Array.isArray( rawSchema.components ) ? rawSchema.components .map( normalizeComponentDefinition ) .filter( Boolean ) : []; if ( !components.length ) return null; return { handlerId, version, block: { name: blockName, type: blockType, }, components, }; } function buildSchemaRegistry( rawData ) { if ( !isPlainObject( rawData ) || !isPlainObject( rawData.schemas ) ) { return {}; } const registry = {}; Object.keys( rawData.schemas ).forEach( handlerId => { const normalized = normalizeSchemaDefinition( rawData.schemas[ handlerId ], handlerId ); if ( normalized ) { registry[ handlerId ] = normalized; } } ); return registry; } function getSchemaForHandler( handler, registry ) { if ( !handler || typeof handler.id !== 'string' ) return null; return registry[ handler.id ] || null; } function findScopedElements( rootElement, selector ) { if ( !isElementNode( rootElement ) || !selector ) return []; const scoped = []; if ( rootElement.matches( selector ) ) { const owner = rootElement.closest( '[data-mwp-sfe-uuid]' ); if ( !owner || owner === rootElement ) { scoped.push( rootElement ); } } const matches = rootElement.querySelectorAll( selector ); matches.forEach( candidate => { const owner = candidate.closest( '[data-mwp-sfe-uuid]' ); if ( !owner || owner === rootElement ) { scoped.push( candidate ); } } ); return scoped; } function findScopedElement( rootElement, selector ) { const matches = findScopedElements( rootElement, selector ); return matches.length ? matches[ 0 ] : null; } function isGhostElement( element ) { return isElementNode( element ) && element.getAttribute( GHOST_FLAG_ATTR ) === '1'; } function findRealScopedElements( rootElement, selector ) { return findScopedElements( rootElement, selector ).filter( element => !isGhostElement( element ) ); } function getManagedMissingComponentElements( rootElement, componentId ) { if ( !isElementNode( rootElement ) || !componentId ) return []; return Array.from( rootElement.querySelectorAll( `[${ GHOST_COMPONENT_ATTR }]` ) ).filter( element => ( element.getAttribute( GHOST_COMPONENT_ATTR ) === componentId ) ); } function getManagedMissingComponentElement( rootElement, componentId ) { const matches = getManagedMissingComponentElements( rootElement, componentId ); return matches.length ? matches[ 0 ] : null; } function getGhostComponentElements( rootElement, componentId ) { return getManagedMissingComponentElements( rootElement, componentId ).filter( isGhostElement ); } function getGhostComponentElement( rootElement, componentId ) { const matches = getGhostComponentElements( rootElement, componentId ); return matches.length ? matches[ 0 ] : null; } function removeGhostComponentElements( rootElement, componentId ) { getGhostComponentElements( rootElement, componentId ).forEach( element => element.remove() ); } function resolveGhostMountElement( rootElement, mountSelector ) { const selector = typeof mountSelector === 'string' ? mountSelector.trim() : ''; if ( !selector ) return null; if ( selector === ':scope' ) return rootElement; return findScopedElement( rootElement, selector ); } function applyGhostShellAttributes( ghostElement, componentDefinition ) { if ( !isElementNode( ghostElement ) || !componentDefinition ) return; const ghostAttributes = isPlainObject( componentDefinition?.missingUI?.attributes ) ? componentDefinition.missingUI.attributes : {}; Object.keys( ghostAttributes ).forEach( attrName => { const attrValue = ghostAttributes[ attrName ]; if ( typeof attrValue === 'string' && attrValue ) { if ( attrName === 'class' ) { attrValue.split( /\s+/ ).filter( Boolean ).forEach( cls => ghostElement.classList.add( cls ) ); } else { ghostElement.setAttribute( attrName, attrValue ); } } } ); ghostElement.setAttribute( GHOST_COMPONENT_ATTR, componentDefinition.id ); } function insertGhostElement( mountElement, ghostElement, placement ) { if ( !isElementNode( mountElement ) || !isElementNode( ghostElement ) ) return; if ( placement === 'prepend' ) { mountElement.insertBefore( ghostElement, mountElement.firstChild ); return; } mountElement.appendChild( ghostElement ); } function resolveComponentAttributeState( options = {} ) { const directAttributeState = isPlainObject( options.attributeState ) ? options.attributeState : null; if ( directAttributeState ) { return directAttributeState; } const blockAttributes = isPlainObject( options.blockAttributes ) ? options.blockAttributes : null; const attributeChanges = isPlainObject( options.attributeChanges ) ? options.attributeChanges : null; if ( blockAttributes && attributeChanges ) { return applyAttributeChangesToAttributes( blockAttributes, attributeChanges ); } if ( blockAttributes ) { return deepCloneAttributes( blockAttributes ); } if ( attributeChanges ) { return applyAttributeChangesToAttributes( {}, attributeChanges ); } return null; } function isRequiredTextComponent( componentDefinition ) { return !!( componentDefinition && componentDefinition.type === 'text' && componentDefinition.required === true ); } function supportsGhostManagedTextComponent( componentDefinition ) { return !!( componentDefinition && componentDefinition.type === 'text' && componentDefinition?.missingUI?.mode === 'ghost' ); } function shouldMaterializeGhostComponent( componentDefinition, options = {} ) { if ( !componentDefinition || componentDefinition.type !== 'text' || componentDefinition?.missingUI?.mode !== 'ghost' ) { return false; } const when = isPlainObject( componentDefinition.missingUI.when ) ? componentDefinition.missingUI.when : null; if ( when?.path ) { const attributeState = resolveComponentAttributeState( options ); if ( !attributeState ) { return false; } if ( getValueByPath( attributeState, when.path ) !== when.equals ) { return false; } } return true; } function hasMeaningfulManagedComponentContent( element ) { if ( !isElementNode( element ) ) return false; const placeholderApi = SFE.RichTextPlaceholder || null; if ( placeholderApi && typeof placeholderApi.hasMeaningfulContent === 'function' ) { return placeholderApi.hasMeaningfulContent( element ); } const text = String( element.textContent || '' ) .replace( /\uFEFF/g, '' ) .replace( /\u00A0/g, ' ' ) .trim(); if ( text.length ) { return true; } return !!element.querySelector?.( 'img, audio, video, iframe, embed, object, svg, canvas, hr, input, textarea, select, button, table' ); } function hasMeaningfulComponentBindingValue( value, source ) { if ( value === undefined || value === null ) return false; if ( source === 'plaintext' ) { return String( value ) .replace( /\uFEFF/g, '' ) .replace( /\u00A0/g, ' ' ) .trim() .length > 0; } if ( source === 'html' ) { const html = String( value || '' ); if ( !html.trim() ) { return false; } const probe = document.createElement( 'div' ); probe.innerHTML = html; return hasMeaningfulManagedComponentContent( probe ); } return !!value; } function componentHasMeaningfulAttributeContent( componentDefinition, attributeState ) { if ( !componentDefinition || !Array.isArray( componentDefinition.bindings ) || !attributeState ) { return false; } return componentDefinition.bindings.some( binding => { if ( !binding || ( binding.source !== 'html' && binding.source !== 'plaintext' ) ) { return false; } return hasMeaningfulComponentBindingValue( getValueByPath( attributeState, binding.path ), binding.source ); } ); } function resolveAttributeStateFromRawContent( rawContent ) { const content = typeof rawContent === 'string' ? rawContent.trim() : ''; if ( !content || !window.wp?.blocks?.parse ) { return null; } try { const parsedBlocks = wp.blocks.parse( content ); const parsedBlock = Array.isArray( parsedBlocks ) ? parsedBlocks[ 0 ] : null; return isPlainObject( parsedBlock?.attributes ) ? parsedBlock.attributes : {}; } catch ( error ) { console.error( 'FrontEdit Schema: failed to parse raw block content for rendered snapshot reconciliation', error ); return null; } } /** * Reconcile a cloned live block snapshot against canonical schema attrs. * * Keeps full-page/theme-aware DOM classes from the rendered block while removing * empty optional missingUI shells that no longer exist in the serialized block * payload. This prevents batch-edit state from restoring stale optional markup. * * @param {HTMLElement} rootElement Snapshot root to mutate. * @param {Object} handler Active edit handler. * @param {Object} options Reconciliation options. * @returns {HTMLElement|null} The mutated root element, or null when no schema applies. */ function reconcileRenderedSnapshot( rootElement, handler, options = {} ) { if ( !isElementNode( rootElement ) || !handler ) return null; const schema = getSchemaForHandler( handler, schemaRegistry ); if ( !schema || !Array.isArray( schema.components ) ) { return null; } const attributeState = resolveComponentAttributeState( options ) || resolveAttributeStateFromRawContent( options.rawContent || '' ); if ( !attributeState ) { return rootElement; } schema.components.forEach( componentDefinition => { if ( !supportsGhostManagedTextComponent( componentDefinition ) ) { return; } const shouldMaterialize = shouldMaterializeGhostComponent( componentDefinition, { attributeState, } ); const hasCanonicalContent = componentHasMeaningfulAttributeContent( componentDefinition, attributeState ); if ( shouldMaterialize && hasCanonicalContent ) { return; } findScopedElements( rootElement, componentDefinition.selector ).forEach( element => { if ( hasMeaningfulManagedComponentContent( element ) ) { return; } element.remove(); } ); } ); return rootElement; } /** * Synchronize schema-managed optional component shell state. * * @param {HTMLElement} element Candidate schema component element. * @param {?Object} componentDefinition Optional schema component definition. * @param {Object} options Sync options. * @param {boolean} options.removeInactiveEmpty Remove empty inactive shells. * @param {boolean} options.forceRemoveInactive Remove inactive empties even when block root is still marked editing-active. * @returns {void} */ function syncManagedMissingComponentState( element, componentDefinition = null, options = {} ) { if ( !isElementNode( element ) ) return; const managesGhostState = !!element.getAttribute( GHOST_COMPONENT_ATTR ) || supportsGhostManagedTextComponent( componentDefinition ); if ( !managesGhostState ) return; const persistGhostFlag = !!element.getAttribute( GHOST_COMPONENT_ATTR ); if ( hasMeaningfulManagedComponentContent( element ) ) { element.classList.remove( GHOST_CLASS ); element.removeAttribute( GHOST_FLAG_ATTR ); return; } const removeInactiveEmpty = options?.removeInactiveEmpty !== false; const forceRemoveInactive = options?.forceRemoveInactive === true; const ownerElement = element.closest( '[data-mwp-sfe-uuid]' ); const ownerIsInlineEditing = !!( isElementNode( ownerElement ) && ( ownerElement.classList.contains( 'mwp-sfe-element-active' ) || ownerElement.classList.contains( 'mwp-sfe-editing-active' ) || ownerElement.classList.contains( 'mwp-sfe-inline-editor' ) ) ); const isInactiveManagedComponent = ( element.getAttribute( 'contenteditable' ) !== 'true' && !element.getAttribute( 'data-mwp-sfe-active-component' ) && !element.classList.contains( 'mwp-sfe-component-active' ) && !element.classList.contains( 'mwp-sfe-inline-editor' ) && !element.classList.contains( 'mwp-sfe-editable-component' ) ); if ( removeInactiveEmpty && isInactiveManagedComponent && ( forceRemoveInactive || !ownerIsInlineEditing ) ) { element.remove(); return; } element.classList.add( GHOST_CLASS ); if ( persistGhostFlag ) { element.setAttribute( GHOST_FLAG_ATTR, '1' ); return; } element.removeAttribute( GHOST_FLAG_ATTR ); } /** * Resolve the schema-declared placement for one optional ghost component. * * @param {Object} componentDefinition Normalized component schema. * @param {Object} options Runtime block attribute state. * @returns {'append'|'prepend'} Effective ghost placement. */ function resolveGhostPlacement( componentDefinition, options = {} ) { const missingUI = componentDefinition?.missingUI || null; const placementWhen = isPlainObject( missingUI?.placementWhen ) ? missingUI.placementWhen : null; const attributeState = resolveComponentAttributeState( options ); if ( placementWhen?.path && attributeState && getValueByPath( attributeState, placementWhen.path ) === placementWhen.equals ) { return placementWhen.placement; } return missingUI?.placement || 'append'; } /** * Materialize one schema-managed optional text component when its canonical * node is absent from rendered markup. * * @param {HTMLElement} rootElement Block root element. * @param {Object} componentDefinition Normalized component schema. * @param {Object} options Runtime block attribute state. * @returns {HTMLElement|null} Materialized ghost element, if active. */ function materializeGhostComponentElement( rootElement, componentDefinition, options = {} ) { if ( !isElementNode( rootElement ) || !componentDefinition || componentDefinition.type !== 'text' || componentDefinition?.missingUI?.mode !== 'ghost' ) { return null; } const mountElement = resolveGhostMountElement( rootElement, componentDefinition.missingUI.mountSelector ); if ( !mountElement ) { removeGhostComponentElements( rootElement, componentDefinition.id ); return null; } const existingManaged = getManagedMissingComponentElements( rootElement, componentDefinition.id ); let ghostElement = existingManaged.find( element => element.parentNode ) || null; existingManaged.slice( ghostElement ? 1 : 0 ).forEach( element => element.remove() ); const desiredTag = componentDefinition.missingUI.tag.toUpperCase(); if ( ghostElement && ghostElement.tagName !== desiredTag ) { ghostElement.remove(); ghostElement = null; } if ( !ghostElement ) { ghostElement = document.createElement( componentDefinition.missingUI.tag ); } applyGhostShellAttributes( ghostElement, componentDefinition ); if ( ghostElement.parentNode !== mountElement ) { insertGhostElement( mountElement, ghostElement, resolveGhostPlacement( componentDefinition, options ) ); } // Sync ghost lifecycle only after the shell is attached so owner-state // checks can see whether the block is actually active. When this runs // outside an edit session, empty optional shells are removed immediately // instead of lingering as bare DOM nodes. syncManagedMissingComponentState( ghostElement, componentDefinition ); return ghostElement.parentNode ? ghostElement : null; } function materializeRepeatedComponentElements( rootElement, componentDefinition ) { if ( !isElementNode( rootElement ) || !componentDefinition?.repeat || componentDefinition.repeat.mode !== 'tree_path' ) { return []; } const listTracker = SFE.ListBlockTracker || null; if ( listTracker && typeof listTracker.syncEditableTextSurfaces === 'function' ) { listTracker.syncEditableTextSurfaces( rootElement ); } return findRealScopedElements( rootElement, componentDefinition.selector ); } function resolveSchemaComponentElements( rootElement, componentDefinition, options = {} ) { if ( !isElementNode( rootElement ) || !componentDefinition ) return []; const { materializeGhost = false, } = options; let realMatches = findRealScopedElements( rootElement, componentDefinition.selector ); if ( !realMatches.length ) { realMatches = materializeRepeatedComponentElements( rootElement, componentDefinition ); } if ( realMatches.length ) { removeGhostComponentElements( rootElement, componentDefinition.id ); return realMatches; } if ( componentDefinition.type !== 'text' || componentDefinition?.missingUI?.mode !== 'ghost' ) { removeGhostComponentElements( rootElement, componentDefinition.id ); return []; } if ( !shouldMaterializeGhostComponent( componentDefinition, options ) ) { removeGhostComponentElements( rootElement, componentDefinition.id ); return []; } const ghostElement = materializeGhost ? materializeGhostComponentElement( rootElement, componentDefinition, options ) : getManagedMissingComponentElement( rootElement, componentDefinition.id ); return ghostElement ? [ ghostElement ] : []; } function resolveLiveComponentElement( rootElement, component ) { if ( !isElementNode( rootElement ) || !component || typeof component !== 'object' ) { return null; } const existingElement = component.element; if ( isElementNode( existingElement ) && rootElement.contains( existingElement ) ) { return existingElement; } const selector = typeof component.selector === 'string' ? component.selector.trim() : ''; if ( selector ) { const resolvedBySelector = findScopedElement( rootElement, selector ); if ( resolvedBySelector ) { return resolvedBySelector; } } if ( typeof component.id === 'string' && component.id ) { const ghostElement = getManagedMissingComponentElement( rootElement, component.id ); if ( ghostElement ) { return ghostElement; } } return isElementNode( existingElement ) ? existingElement : null; } function getNthOfTypeIndex( node ) { let index = 1; let cursor = node; while ( cursor && cursor.previousElementSibling ) { cursor = cursor.previousElementSibling; if ( cursor.tagName === node.tagName ) { index++; } } return index; } function buildSelectorWithinRoot( rootElement, targetElement ) { if ( !isElementNode( rootElement ) || !isElementNode( targetElement ) ) return ''; if ( targetElement === rootElement ) return ':scope'; const segments = []; let cursor = targetElement; while ( cursor && cursor !== rootElement ) { const tag = cursor.tagName.toLowerCase(); const nth = getNthOfTypeIndex( cursor ); segments.unshift( `${ tag }:nth-of-type(${ nth })` ); cursor = cursor.parentElement; } if ( cursor !== rootElement ) return ''; return segments.join( ' > ' ); } function resolveRepeatedContext( rootElement, element, repeatDefinition ) { if ( repeatDefinition?.mode === 'tree_path' ) { const itemSelector = typeof repeatDefinition.itemSelector === 'string' ? repeatDefinition.itemSelector.trim() : ''; const pathKey = typeof repeatDefinition.pathKey === 'string' ? repeatDefinition.pathKey.trim() : 'path'; const itemNode = itemSelector ? element.closest( itemSelector ) : null; if ( !itemNode || !rootElement.contains( itemNode ) ) { return null; } const indexes = []; let currentItem = itemNode; while ( currentItem && rootElement.contains( currentItem ) ) { const parentList = currentItem.parentElement; if ( !isElementNode( parentList ) ) { return null; } const siblingItems = Array.from( parentList.children || [] ).filter( child => child.tagName === 'LI' ); const itemIndex = siblingItems.indexOf( currentItem ); if ( itemIndex < 0 ) { return null; } indexes.unshift( itemIndex ); const nextItem = parentList.closest( itemSelector ); if ( !nextItem || !rootElement.contains( nextItem ) ) { break; } currentItem = nextItem; } if ( !indexes.length ) { return null; } const humanPath = indexes.map( index => index + 1 ).join( '.' ); return { [ pathKey ]: indexes.join( '_' ), pathLabel: humanPath, depth: indexes.length - 1, }; } const rowNodes = findScopedElements( rootElement, repeatDefinition.rowSelector ); const rowNode = element.closest( repeatDefinition.rowSelector ); if ( !rowNode ) return null; const rowIndex = rowNodes.indexOf( rowNode ); if ( rowIndex < 0 ) return null; const rowChildren = Array.from( rowNode.children ).filter( isElementNode ); let columnIndex = Number.isInteger( element?.cellIndex ) ? element.cellIndex : -1; // Prefer the DOM cellIndex (true sibling position) so column targets stay aligned // across mixed th/td rows; fall back to selector-filtered indexing for non-table cases. if ( columnIndex < 0 || columnIndex >= rowChildren.length || rowChildren[ columnIndex ] !== element ) { const cellNodes = rowChildren.filter( child => child.matches( repeatDefinition.cellSelector ) ); columnIndex = cellNodes.indexOf( element ); } if ( columnIndex < 0 ) return null; return { row: rowIndex, column: columnIndex, }; } function applyContextTokens( template, context ) { return template.replace( /\{([a-zA-Z0-9_]+)\}/g, ( _, token ) => { if ( Object.prototype.hasOwnProperty.call( context, token ) ) { return String( context[ token ] ); } return ''; } ); } function buildRuntimeComponentId( componentDefinition, context, fallbackIndex ) { if ( !componentDefinition.repeat ) { return componentDefinition.id; } if ( typeof context?.path === 'string' && context.path.trim() ) { return `${ componentDefinition.id }__p${ context.path.trim() }`; } const parts = []; if ( Number.isInteger( context.row ) ) { parts.push( `r${ context.row }` ); } if ( Number.isInteger( context.column ) ) { parts.push( `c${ context.column }` ); } if ( !parts.length ) { parts.push( String( fallbackIndex ) ); } return `${ componentDefinition.id }__${ parts.join( '_' ) }`; } function resolveRuntimeFormatTarget( targetDefinition, context ) { if ( typeof targetDefinition === 'string' ) { return targetDefinition; } if ( !isPlainObject( targetDefinition ) ) return ''; if ( targetDefinition.scope === 'block' ) { return 'block'; } if ( targetDefinition.scope === 'component' ) { return 'selection'; } if ( targetDefinition.scope === 'column' ) { const selector = typeof targetDefinition.selector === 'string' ? targetDefinition.selector.trim() : ''; const contextKey = targetDefinition.contextKey || 'column'; const contextValue = Number.parseInt( context[ contextKey ], 10 ); if ( !selector || !Number.isInteger( contextValue ) || contextValue < 0 ) { return ''; } return `all:${ selector }:nth-child(${ contextValue + 1 })`; } if ( targetDefinition.selector ) { return targetDefinition.selector; } return ''; } function buildRuntimeEditorOptions( componentDefinition, context ) { const editorDefinition = componentDefinition.editor; if ( !editorDefinition ) { return null; } const editorOptions = {}; if ( editorDefinition.enterMode ) { editorOptions.enterMode = editorDefinition.enterMode; } if ( editorDefinition.linkUIMode ) { editorOptions.linkUIMode = editorDefinition.linkUIMode; } if ( isPlainObject( editorDefinition.tabMode ) ) { editorOptions.tabMode = { ...editorDefinition.tabMode }; } if ( isPlainObject( editorDefinition.formatTargets ) ) { const formatTargets = {}; Object.keys( editorDefinition.formatTargets ).forEach( key => { const resolved = resolveRuntimeFormatTarget( editorDefinition.formatTargets[ key ], context ); if ( resolved ) { formatTargets[ key ] = resolved; } } ); if ( Object.keys( formatTargets ).length ) { editorOptions.formatTargets = formatTargets; } } if ( Array.isArray( editorDefinition.formats ) ) { editorOptions.formats = cloneEditorFormats( editorDefinition.formats ); } if ( isPlainObject( editorDefinition.inlineFormatCapabilities ) ) { const inlineFormatCapabilities = cloneInlineFormatCapabilities( editorDefinition.inlineFormatCapabilities ); if ( inlineFormatCapabilities ) { editorOptions.inlineFormatCapabilities = inlineFormatCapabilities; } } if ( isPlainObject( editorDefinition.attributeCapabilities ) ) { const attributeCapabilities = cloneEditorAttributeCapabilities( editorDefinition.attributeCapabilities ); if ( attributeCapabilities ) { editorOptions.attributeCapabilities = attributeCapabilities; } } if ( Array.isArray( editorDefinition.operations ) ) { const operations = cloneEditorOperations( editorDefinition.operations ); if ( operations ) { editorOptions.operations = operations; } } if ( isPlainObject( editorDefinition.options ) ) { editorOptions.options = { ...editorDefinition.options }; } return Object.keys( editorOptions ).length ? editorOptions : null; } function buildRuntimeFromSchema( rootElement, schema, options = {} ) { if ( !schema || !isElementNode( rootElement ) ) return null; const runtime = { schemaHandlerId: schema.handlerId, blockName: schema.block.name, mode: 'text', editableComponents: [], componentsById: {}, mediaComponent: null, primaryTextComponent: null, }; let defaultAssigned = false; let hasTextComponent = false; let hasFileComponent = false; schema.components.forEach( componentDefinition => { const matches = resolveSchemaComponentElements( rootElement, componentDefinition, { materializeGhost: true, blockAttributes: options.blockAttributes, attributeChanges: options.attributeChanges, } ); if ( !matches.length ) return; matches.forEach( ( matchedElement, matchIndex ) => { const context = componentDefinition.repeat ? resolveRepeatedContext( rootElement, matchedElement, componentDefinition.repeat ) : {}; if ( componentDefinition.repeat && !context ) { return; } const resolvedBindings = componentDefinition.bindings.map( binding => ( { path: applyContextTokens( binding.path, context || {} ), source: binding.source, resolved: !!binding.resolved, value: typeof binding.value === 'string' ? binding.value : '', } ) ); const selector = buildSelectorWithinRoot( rootElement, matchedElement ); if ( !selector ) return; const runtimeId = buildRuntimeComponentId( componentDefinition, context || {}, matchIndex ); const editorOptions = buildRuntimeEditorOptions( componentDefinition, context || {} ); const label = buildRuntimeComponentLabel( componentDefinition, context || {} ); if ( componentDefinition.type === 'file' ) { hasFileComponent = true; const target = componentDefinition.target || null; if ( !target ) return; const urlBinding = resolvedBindings.find( binding => binding.source === 'url' ) || null; const idBinding = resolvedBindings.find( binding => binding.source === 'id' ) || null; const mediaDescriptor = { componentId: runtimeId, scopeSelector: selector, targetSelector: target.selector, attribute: target.attribute, mediaType: target.mediaType, }; const editableComponent = { id: runtimeId, label, selector, element: matchedElement, type: 'file', default: !!componentDefinition.default && !defaultAssigned, target: { selector: target.selector, attribute: target.attribute, mediaType: target.mediaType, }, mediaDescriptor, urlBindingPath: urlBinding?.path || '', idBindingPath: idBinding?.path || '', }; if ( editorOptions ) { editableComponent.editor = editorOptions; } if ( editableComponent.default ) { defaultAssigned = true; } if ( componentDefinition.uiEditable !== false ) { runtime.editableComponents.push( editableComponent ); } runtime.componentsById[ runtimeId ] = { id: runtimeId, label, element: matchedElement, selector, type: 'file', uiEditable: componentDefinition.uiEditable !== false, bindings: resolvedBindings, schemaSelector: componentDefinition.selector, mediaDescriptor, target: { selector: target.selector, attribute: target.attribute, mediaType: target.mediaType, }, editorOptions: editorOptions || null, }; if ( !runtime.mediaComponent ) { runtime.mediaComponent = { id: runtimeId, selector, mediaDescriptor, target: { selector: target.selector, attribute: target.attribute, mediaType: target.mediaType, }, bindings: resolvedBindings, }; } return; } const contentBinding = resolvedBindings.find( binding => ( binding.source === 'html' || binding.source === 'plaintext' || binding.source === 'list_block' ) ); if ( !contentBinding ) return; hasTextComponent = true; const editableComponent = { id: runtimeId, label, selector, element: matchedElement, attribute: contentBinding.path, type: 'text', default: !!componentDefinition.default && !defaultAssigned, isGhost: isGhostElement( matchedElement ), }; if ( componentDefinition.placeholder ) { editableComponent.placeholder = componentDefinition.placeholder; } if ( componentDefinition.missingUI ) { editableComponent.missingUI = componentDefinition.missingUI; } editableComponent.required = componentDefinition.required === true; if ( editorOptions ) { editableComponent.editor = editorOptions; } if ( editableComponent.default ) { defaultAssigned = true; } if ( componentDefinition.uiEditable !== false ) { runtime.editableComponents.push( editableComponent ); } runtime.componentsById[ runtimeId ] = { id: runtimeId, label, element: matchedElement, selector, type: 'text', uiEditable: componentDefinition.uiEditable !== false, bindings: resolvedBindings, schemaSelector: componentDefinition.selector, missingUI: componentDefinition.missingUI || null, required: componentDefinition.required === true, editorOptions: editorOptions || null, }; } ); } ); if ( !runtime.editableComponents.length ) { return null; } if ( !runtime.editableComponents.some( component => component.default ) ) { runtime.editableComponents[ 0 ].default = true; } const primaryTextComponent = runtime.editableComponents.find( component => component.type === 'text' && component.default ) || runtime.editableComponents.find( component => component.type === 'text' ) || null; if ( primaryTextComponent ) { runtime.primaryTextComponent = { selector: primaryTextComponent.selector, attribute: primaryTextComponent.attribute, }; } if ( hasTextComponent && hasFileComponent ) { runtime.mode = 'mixed'; } else if ( hasTextComponent ) { runtime.mode = 'text'; } else if ( hasFileComponent ) { runtime.mode = 'media'; } else { return null; } return runtime; } function createSchemaAwareHandler( handler, runtime ) { const baseConfig = isPlainObject( handler.client_config ) ? { ...handler.client_config } : {}; const runtimeHandler = { ...handler, client_config: baseConfig, }; if ( runtime.mode === 'text' || runtime.mode === 'mixed' ) { runtimeHandler.contentType = 'text'; runtimeHandler.client_config.editableComponents = runtime.editableComponents; return runtimeHandler; } if ( runtime.mode === 'media' && runtime.mediaComponent ) { runtimeHandler.contentType = 'media'; runtimeHandler.client_config.editableComponents = runtime.editableComponents; return runtimeHandler; } return runtimeHandler; } function readTextAlignmentFromElement( element ) { if ( !isElementNode( element ) || !element.classList ) return undefined; const dataAlign = typeof element.getAttribute === 'function' ? String( element.getAttribute( 'data-align' ) || '' ).trim().toLowerCase() : ''; if ( dataAlign === 'left' || dataAlign === 'center' || dataAlign === 'right' || dataAlign === 'justify' ) { return dataAlign; } if ( element.classList.contains( 'has-text-align-justify' ) ) return 'justify'; if ( element.classList.contains( 'has-text-align-right' ) ) return 'right'; if ( element.classList.contains( 'has-text-align-center' ) ) return 'center'; if ( element.classList.contains( 'has-text-align-left' ) ) return 'left'; return undefined; } function isVideoUrl( url ) { return /\.(mp4|webm|ogv|mov|avi|wmv|m4v)(\?.*)?$/i.test( String( url || '' ) ); } function splitBindingPath( path ) { return String( path || '' ) .split( '.' ) .map( segment => segment.trim() ) .filter( Boolean ) .map( segment => ( /^\d+$/.test( segment ) ? Number.parseInt( segment, 10 ) : segment ) ); } /** * Determine whether one existing nested attribute container matches the * structure required by the next path segment. * * WordPress can round-trip empty nested style objects such as * `style.typography` back into array-shaped containers. When that happens we * must coerce the container back to an object before assigning a nested key, * otherwise JSON serialization silently drops string-key writes on arrays. * * @param {*} value Existing nested container candidate. * @param {number|string} nextKey Upcoming path segment. * @returns {boolean} True when the container already has the required shape. */ function isCompatiblePathContainer( value, nextKey ) { return ( typeof nextKey === 'number' ) ? Array.isArray( value ) : isPlainObject( value ); } /** * Determine whether one nested attribute value is structurally empty. * * Empty objects/arrays left behind after unsetting one deep attribute should * be pruned so default/unset block attrs disappear cleanly instead of * persisting as `style: { typography: [] }`. * * @param {*} value Candidate nested value. * @returns {boolean} True when the value is an empty container. */ function isEmptyPathContainer( value ) { if ( Array.isArray( value ) ) { return value.length === 0 && Object.keys( value ).length === 0; } if ( !isPlainObject( value ) ) { return false; } return Object.keys( value ).length === 0; } function setValueByPath( target, path, value ) { const parts = splitBindingPath( path ); if ( !parts.length ) return; let cursor = target; const parentTrail = []; for ( let i = 0; i < parts.length - 1; i++ ) { const key = parts[ i ]; const nextKey = parts[ i + 1 ]; if ( typeof key === 'number' ) { if ( !Array.isArray( cursor ) ) return; if ( cursor[ key ] === undefined || cursor[ key ] === null || !isCompatiblePathContainer( cursor[ key ], nextKey ) ) { cursor[ key ] = ( typeof nextKey === 'number' ) ? [] : {}; } parentTrail.push( { container: cursor, key } ); cursor = cursor[ key ]; continue; } if ( !isPlainObject( cursor ) && !Array.isArray( cursor ) ) return; if ( cursor[ key ] === undefined || cursor[ key ] === null || !isCompatiblePathContainer( cursor[ key ], nextKey ) ) { cursor[ key ] = ( typeof nextKey === 'number' ) ? [] : {}; } parentTrail.push( { container: cursor, key } ); cursor = cursor[ key ]; } const finalKey = parts[ parts.length - 1 ]; if ( typeof finalKey === 'number' ) { if ( !Array.isArray( cursor ) ) return; cursor[ finalKey ] = value; return; } if ( value === undefined || value === null ) { if ( isPlainObject( cursor ) || Array.isArray( cursor ) ) { delete cursor[ finalKey ]; for ( let i = parentTrail.length - 1; i >= 0; i-- ) { const parentEntry = parentTrail[ i ]; const childValue = parentEntry?.container?.[ parentEntry.key ]; if ( !isEmptyPathContainer( childValue ) ) { break; } delete parentEntry.container[ parentEntry.key ]; } } return; } cursor[ finalKey ] = value; } function getValueByPath( source, path ) { const parts = splitBindingPath( path ); if ( !parts.length ) return undefined; let cursor = source; for ( let i = 0; i < parts.length; i++ ) { const key = parts[ i ]; if ( cursor === undefined || cursor === null ) { return undefined; } if ( typeof key === 'number' ) { if ( !Array.isArray( cursor ) ) { return undefined; } cursor = cursor[ key ]; continue; } if ( !isPlainObject( cursor ) && !Array.isArray( cursor ) ) { return undefined; } cursor = cursor[ key ]; } return cursor; } function stripEditorPlaceholderChars( value ) { return ( typeof value === 'string' ) ? value.replace( /\uFEFF/g, '' ) : value; } function extractBindingValue( binding, component, editorState, componentMeta = null ) { const ElementPrep = SFE.ElementPrep; const element = component?.element || null; const editorOptions = isPlainObject( componentMeta?.editorOptions ) ? componentMeta.editorOptions : null; const extractionOptions = isPlainObject( editorOptions?.options ) ? editorOptions.options : null; if ( binding.source === 'url' ) { const mediaChanges = element?._mwpMediaChanges || editorState?.element?._mwpMediaChanges || null; if ( !mediaChanges ) { return undefined; } if ( binding.resolved ) { const resolvedValueKey = binding.value === 'width' ? 'resolvedWidth' : ( binding.value === 'height' ? 'resolvedHeight' : 'resolvedUrl' ); const resolvedValue = mediaChanges?.[ resolvedValueKey ]; return ( resolvedValue === undefined || resolvedValue === null ) ? undefined : resolvedValue; } return mediaChanges.url || undefined; } if ( binding.source === 'id' ) { const idValue = element?._mwpMediaChanges?.id ?? editorState?.element?._mwpMediaChanges?.id; return ( idValue === undefined || idValue === null ) ? undefined : idValue; } if ( binding.source === 'media_type' ) { const urlValue = element?._mwpMediaChanges?.url || editorState?.element?._mwpMediaChanges?.url || ''; if ( typeof urlValue !== 'string' || !urlValue.trim() ) { return undefined; } return isVideoUrl( urlValue ) ? 'video' : 'image'; } if ( !element || !ElementPrep || typeof ElementPrep.clean !== 'function' ) { return undefined; } const cleaned = ElementPrep.clean( element, { removeIdentity: true, removeControls: true, clone: true, } ); if ( binding.source === 'html' ) { let html = cleaned.innerHTML; if ( extractionOptions?.preserveNewlines ) { const clone = cleaned.cloneNode( true ); clone.querySelectorAll( 'br' ).forEach( br => { br.replaceWith( '\n' ); } ); html = clone.innerHTML; } if ( extractionOptions?.newlinesToBR && typeof html === 'string' ) { html = html.replace( /\n/g, '
' ); } if ( typeof html === 'string' ) { html = html.replace( /(?:\u00A0| | )/g, ' ' ); } return stripEditorPlaceholderChars( html ); } if ( binding.source === 'plaintext' ) { return stripEditorPlaceholderChars( cleaned.textContent.replace( /\u00A0/g, ' ' ).trim() ); } if ( binding.source === 'textalignment' || binding.source === 'columnalignment' ) { return readTextAlignmentFromElement( element ); } return undefined; } function deepCloneAttributes( attrs ) { try { return JSON.parse( JSON.stringify( attrs || {} ) ); } catch ( error ) { return { ...( attrs || {} ) }; } } /** * Clone one attribute change payload value so schema merges never retain * live references back into editor state. * * @param {*} value Attribute change value. * @returns {*} Cloned value when structured, otherwise the original scalar. */ function cloneAttributeChangeValue( value ) { if ( Array.isArray( value ) || isPlainObject( value ) ) { try { return JSON.parse( JSON.stringify( value ) ); } catch ( error ) { if ( Array.isArray( value ) ) { return [ ...value ]; } return { ...value }; } } return value; } /** * Apply unsaved editor attr changes onto canonical block attrs using the * same dotted-path semantics exposed through the schema contract. * * @param {?Object} baseAttributes Canonical parsed block attrs. * @param {?Object} attributeChanges Unsaved editor attr mutations. * @returns {Object} Merged attribute snapshot. */ function applyAttributeChangesToAttributes( baseAttributes, attributeChanges ) { const mergedAttributes = deepCloneAttributes( baseAttributes || {} ); if ( !isPlainObject( attributeChanges ) ) { return mergedAttributes; } Object.keys( attributeChanges ).forEach( rawPath => { const path = typeof rawPath === 'string' ? rawPath.trim() : ''; if ( !path ) { return; } const value = attributeChanges[ rawPath ]; if ( path.indexOf( '.' ) === -1 && isPlainObject( value ) && isPlainObject( mergedAttributes[ path ] ) ) { mergedAttributes[ path ] = applyAttributeChangesToAttributes( mergedAttributes[ path ], value ); return; } setValueByPath( mergedAttributes, path, cloneAttributeChangeValue( value ) ); } ); return mergedAttributes; } function isListElement( element ) { return !!element && ( element.tagName === 'UL' || element.tagName === 'OL' ); } function findSchemaListBindingState( rootElement, editorState, runtime ) { const editableComponents = Array.isArray( editorState?.editableComponents ) ? editorState.editableComponents : []; for ( const component of editableComponents ) { const componentMeta = runtime?.componentsById?.[ component.id ]; if ( !componentMeta || !Array.isArray( componentMeta.bindings ) ) { continue; } const hasListBinding = componentMeta.bindings.some( binding => binding.source === 'list_block' ); if ( !hasListBinding ) { continue; } const liveComponentElement = resolveLiveComponentElement( rootElement, component ); if ( liveComponentElement && component.element !== liveComponentElement ) { component.element = liveComponentElement; } const componentElement = liveComponentElement || component.element || null; let listElement = null; if ( isListElement( componentElement ) ) { listElement = componentElement; } else if ( componentElement && typeof componentElement.querySelector === 'function' ) { listElement = componentElement.querySelector( ':scope > ul, :scope > ol' ) || componentElement.querySelector( 'ul, ol' ); } if ( !isListElement( listElement ) ) { return { component, componentMeta, listElement: null, }; } return { component, componentMeta, listElement, }; } return null; } function buildRuntimeComponentLabel( componentDefinition, context ) { if ( typeof context?.pathLabel === 'string' && context.pathLabel.trim() ) { return `${ componentDefinition.label } (${ context.pathLabel.trim() })`; } if ( Number.isInteger( context?.row ) && Number.isInteger( context?.column ) ) { return `${ componentDefinition.label } (${ context.row + 1 },${ context.column + 1 })`; } return componentDefinition.label; } /** * Determine whether a list item contains meaningful inline or nested-list * content after placeholder artifacts have been stripped. * * Empty parent items that only own empty descendants should still fail * required validation, while parent items with meaningful nested list content * remain valid even if their own inline text span is blank. * * @param {HTMLElement|null} listItem List item to inspect. * @returns {boolean} True when the list item is meaningfully populated. */ function listItemHasMeaningfulSchemaContent( listItem ) { if ( !isElementNode( listItem ) || listItem.tagName !== 'LI' ) { return false; } const directText = Array.from( listItem.childNodes || [] ).some( node => { if ( !node ) return false; if ( node.nodeType === Node.TEXT_NODE ) { return String( node.textContent || '' ) .replace( /\uFEFF/g, '' ) .replace( /\u00A0/g, ' ' ) .trim() .length > 0; } if ( node.nodeType !== Node.ELEMENT_NODE ) { return false; } if ( node.tagName === 'OL' || node.tagName === 'UL' || node.tagName === 'BR' ) { return false; } return hasMeaningfulManagedComponentContent( node ); } ); if ( directText ) { return true; } const nestedLists = Array.from( listItem.children || [] ).filter( child => ( child.tagName === 'OL' || child.tagName === 'UL' ) ); return nestedLists.some( nestedList => ( Array.from( nestedList.children || [] ).some( child => listItemHasMeaningfulSchemaContent( child ) ) ) ); } /** * Validate that a required list component does not contain empty list items. * * @param {Object|null} listBindingState Resolved list binding state. * @returns {string|null} Validation error message when the list is invalid. */ function validateRequiredSchemaListBindingState( listBindingState ) { const componentMeta = listBindingState?.componentMeta || null; const listElement = listBindingState?.listElement || null; if ( !isRequiredTextComponent( componentMeta ) ) { return null; } if ( !isListElement( listElement ) ) { return `${ listBindingState?.component?.label || 'Required text field' } is missing and cannot be saved empty. Add some text or cancel to restore original.`; } const allListItems = Array.from( listElement.querySelectorAll( 'li' ) ); const hasEmptyItem = allListItems.some( listItem => !listItemHasMeaningfulSchemaContent( listItem ) ); if ( hasEmptyItem ) { return `${ listBindingState?.component?.label || 'Required text field' } cannot contain empty items. Add text to each item or cancel to restore original.`; } return null; } function buildSchemaListPayload( listBindingState, editorState, attrChanges ) { const ListBlockTracker = SFE.ListBlockTracker; const listElement = listBindingState?.listElement || null; const tracker = editorState?.listTracker || listElement?._mwpListTracker || ListBlockTracker?.active || null; if ( !listElement || !ListBlockTracker || typeof ListBlockTracker.parseListToBlock !== 'function' || !tracker ) { return null; } const parsedListBlock = ListBlockTracker.parseListToBlock( listElement, tracker ); if ( !parsedListBlock || typeof parsedListBlock !== 'object' ) { return null; } const safeAttrChanges = isPlainObject( attrChanges ) ? { ...attrChanges } : {}; if ( Object.prototype.hasOwnProperty.call( safeAttrChanges, 'ordered' ) ) { delete safeAttrChanges.ordered; } const nextBlock = { ...parsedListBlock, attributes: applyAttributeChangesToAttributes( parsedListBlock.attributes || {}, safeAttrChanges ), }; let serialized = ''; try { serialized = wp.blocks.serialize( [ nextBlock ] ); } catch ( error ) { console.error( 'FrontEdit Schema: wp.blocks.serialize failed for list binding', error ); return null; } return { _type: 'raw_block_content', rawContent: serialized, }; } function applySchemaBindingToAttributes( attrs, binding, component, editorState, componentMeta = null ) { if ( binding.source === 'list_block' ) { return; } const value = extractBindingValue( binding, component, editorState, componentMeta ); // URL/id bindings are sparse patch values; when unchanged, preserve attrs from parsed raw block content. if ( ( binding.source === 'url' || binding.source === 'id' || binding.source === 'media_type' ) && ( value === undefined || value === null ) ) { return; } setValueByPath( attrs, binding.path, value ); } function validateRequiredSchemaTextComponents( rootElement, editorState, runtime ) { if ( !runtime || !Array.isArray( editorState?.editableComponents ) ) { return null; } for ( const component of editorState.editableComponents ) { const componentMeta = runtime.componentsById?.[ component?.id ] || null; if ( !isRequiredTextComponent( componentMeta ) ) { continue; } const liveComponentElement = resolveLiveComponentElement( rootElement, component ); if ( liveComponentElement && component.element !== liveComponentElement ) { component.element = liveComponentElement; } const componentElement = liveComponentElement || component?.element || null; if ( !isElementNode( componentElement ) ) { return `${ component?.label || 'Required text field' } is missing and cannot be saved empty. Add some text or cancel to restore original.`; } if ( !hasMeaningfulManagedComponentContent( componentElement ) ) { return `${ component?.label || 'Required text field' } cannot be empty. Add some text or cancel to restore original.`; } } return null; } function buildSchemaPayload( element, editorState ) { const runtime = editorState?._mwpSchemaRuntime; const blockState = editorState?.blockState; if ( !runtime || !blockState?.rawContent ) return null; if ( !window.wp?.blocks?.parse || !window.wp?.blocks?.serialize ) return null; let parsedBlock = null; try { [ parsedBlock ] = wp.blocks.parse( blockState.rawContent ); } catch ( error ) { console.error( 'FrontEdit Schema: failed to parse raw block content', error ); return null; } if ( !parsedBlock ) return null; const attrChanges = { ...( isPlainObject( editorState?.attributeChanges ) ? editorState.attributeChanges : {} ), ...( isPlainObject( element?._mwpEditor?.attributeChanges ) ? element._mwpEditor.attributeChanges : {} ), ...( isPlainObject( element?._mwpMediaChanges ) ? element._mwpMediaChanges : {} ), }; const listBindingState = findSchemaListBindingState( element, editorState, runtime ); if ( listBindingState ) { const requiredListValidationError = validateRequiredSchemaListBindingState( listBindingState ); if ( requiredListValidationError ) { throw new Error( requiredListValidationError ); } const listPayload = buildSchemaListPayload( listBindingState, editorState, attrChanges ); if ( listPayload ) { return listPayload; } return null; } const requiredValidationError = validateRequiredSchemaTextComponents( element, editorState, runtime ); if ( requiredValidationError ) { throw new Error( requiredValidationError ); } const newAttrs = applyAttributeChangesToAttributes( parsedBlock.attributes || {}, attrChanges ); if ( runtime.mode === 'media' && runtime.mediaComponent ) { const mediaComponentMeta = runtime.componentsById?.[ runtime.mediaComponent.id ] || null; runtime.mediaComponent.bindings.forEach( binding => { applySchemaBindingToAttributes( newAttrs, binding, { element }, editorState, mediaComponentMeta ); } ); } const editableComponents = Array.isArray( editorState.editableComponents ) ? editorState.editableComponents : []; editableComponents.forEach( component => { const componentMeta = runtime.componentsById[ component.id ]; if ( !componentMeta ) return; const liveComponentElement = resolveLiveComponentElement( element, component ); if ( liveComponentElement && component.element !== liveComponentElement ) { component.element = liveComponentElement; } const componentState = liveComponentElement ? { ...component, element: liveComponentElement } : component; componentMeta.bindings.forEach( binding => { applySchemaBindingToAttributes( newAttrs, binding, componentState, editorState, componentMeta ); } ); } ); const nextBlock = { ...parsedBlock, attributes: newAttrs, }; let serialized = ''; try { serialized = wp.blocks.serialize( [ nextBlock ] ); } catch ( error ) { console.error( 'FrontEdit Schema: wp.blocks.serialize failed', error ); return null; } return { _type: 'raw_block_content', rawContent: serialized, }; } /** * Sync schema placeholders and optional missingUI shell lifecycle for a block. * * @param {HTMLElement} rootElement Block root element. * @param {Object} handler Active edit handler. * @param {Object} options Runtime options. * @param {Object|null} options.blockAttributes Canonical block attributes. * @param {Object|null} options.attributeChanges Unsaved attribute changes. * @param {boolean} options.removeInactiveEmpty Remove empty inactive shells. * @returns {void} */ function syncSchemaPlaceholders( rootElement, handler, options = {} ) { const placeholderApi = SFE.RichTextPlaceholder || null; if ( !isElementNode( rootElement ) || !handler || !placeholderApi || typeof placeholderApi.syncElement !== 'function' ) { return; } const schema = getSchemaForHandler( handler, schemaRegistry ); if ( !schema || !Array.isArray( schema.components ) ) { return; } schema.components.forEach( componentDefinition => { if ( !componentDefinition || componentDefinition.type !== 'text' ) { return; } const matches = resolveSchemaComponentElements( rootElement, componentDefinition, { materializeGhost: true, blockAttributes: options.blockAttributes, attributeChanges: options.attributeChanges, } ); if ( !matches.length ) return; matches.forEach( matchedElement => { if ( typeof componentDefinition.placeholder === 'string' && componentDefinition.placeholder.trim() ) { placeholderApi.syncElement( matchedElement, componentDefinition.placeholder ); } syncManagedMissingComponentState( matchedElement, componentDefinition, { removeInactiveEmpty: options.removeInactiveEmpty !== false, } ); } ); } ); } function syncExistingBoundPlaceholders() { if ( typeof document === 'undefined' ) return; document.querySelectorAll( '[data-mwp-sfe-uuid]' ).forEach( element => { const handlers = Array.isArray( element._mwpSfeHandlers ) ? element._mwpSfeHandlers : []; const editHandler = handlers.find( handler => handler?.capability === 'edit' ) || null; if ( editHandler ) { syncSchemaPlaceholders( element, editHandler ); } } ); } /** * Sync missingUI shell visibility/removal for a concrete component element. * * @param {HTMLElement} element Component element. * @param {?Object} componentDefinition Optional schema component definition. * @param {Object} options Sync options. * @param {boolean} options.removeInactiveEmpty Remove empty inactive shells. * @returns {void} */ function syncManagedMissingComponentStateForElement( element, componentDefinition = null, options = {} ) { if ( !isElementNode( element ) ) return; syncManagedMissingComponentState( element, componentDefinition, options ); } const schemaRegistry = buildSchemaRegistry( RAW_SCHEMA_DATA ); /** * Resolve schema runtime metadata for an edit session. * * @param {HTMLElement} rootElement Block root element. * @param {Object} handler Candidate edit handler. * @param {Object} options Resolution options. * @param {?Object} options.blockState Block-state payload containing attrs. * @param {?Object} options.blockAttributes Canonical block attrs. * @param {?Object} options.attributeChanges Unsaved attribute overrides. * @param {boolean} options.removeInactiveEmpty Remove empty inactive shells. * @returns {?Object} Schema resolution bundle, or null when not schema-backed. */ function resolveForEditing( rootElement, handler, options = {} ) { if ( !isElementNode( rootElement ) || !handler ) return null; const schema = getSchemaForHandler( handler, schemaRegistry ); if ( !schema ) return null; const blockAttributes = isPlainObject( options.blockState?.attrs ) ? options.blockState.attrs : ( isPlainObject( options.blockAttributes ) ? options.blockAttributes : null ); const attributeChanges = isPlainObject( options.attributeChanges ) ? options.attributeChanges : null; syncSchemaPlaceholders( rootElement, handler, { blockAttributes, attributeChanges, removeInactiveEmpty: options.removeInactiveEmpty !== false, } ); const runtime = buildRuntimeFromSchema( rootElement, schema, { blockAttributes, attributeChanges, } ); if ( !runtime ) return null; return { schema, runtime, runtimeHandler: createSchemaAwareHandler( handler, runtime ), }; } function refreshEditorState( editorState, options = {} ) { if ( !editorState?.element || !editorState?.handler ) return null; const resolved = resolveForEditing( editorState.element, editorState.handler, { blockState: options.blockState || editorState.blockState || null, blockAttributes: options.blockAttributes || null, attributeChanges: options.attributeChanges || editorState.attributeChanges || null, } ); if ( !resolved?.runtimeHandler ) { return null; } editorState.handler = resolved.runtimeHandler; editorState._mwpSchemaRuntime = resolved.runtime; editorState._mwpSchemaHandlerId = resolved.schema?.handlerId || editorState.handler.id || ''; return resolved; } function runtimeHasListBinding( runtime ) { if ( !runtime || !isPlainObject( runtime.componentsById ) ) return false; const componentIds = Object.keys( runtime.componentsById ); for ( const id of componentIds ) { const componentMeta = runtime.componentsById[ id ]; if ( !componentMeta || !Array.isArray( componentMeta.bindings ) ) { continue; } if ( componentMeta.bindings.some( binding => binding.source === 'list_block' ) ) { return true; } } return false; } function hasListBinding( editorState, runtimeOverride = null ) { const runtime = runtimeOverride || editorState?._mwpSchemaRuntime || null; return runtimeHasListBinding( runtime ); } function collectRuntimeMediaUrlBindingPaths( runtime, editorState = null ) { if ( !runtime ) return []; const paths = []; const seen = new Set(); const addPath = path => { const cleanPath = typeof path === 'string' ? path.trim() : ''; if ( !cleanPath || seen.has( cleanPath ) ) return; seen.add( cleanPath ); paths.push( cleanPath ); }; const addFromBindings = bindings => { if ( !Array.isArray( bindings ) ) return; bindings.forEach( binding => { if ( binding && binding.source === 'url' ) { addPath( binding.path ); } } ); }; if ( runtime.mediaComponent && Array.isArray( runtime.mediaComponent.bindings ) ) { addFromBindings( runtime.mediaComponent.bindings ); } const componentsById = isPlainObject( runtime.componentsById ) ? runtime.componentsById : {}; if ( Array.isArray( editorState?.editableComponents ) ) { editorState.editableComponents.forEach( component => { const componentMeta = componentsById[ component?.id ]; if ( componentMeta?.type === 'file' ) { addFromBindings( componentMeta.bindings ); } } ); } if ( !paths.length ) { Object.keys( componentsById ).forEach( id => { const componentMeta = componentsById[ id ]; if ( componentMeta?.type === 'file' ) { addFromBindings( componentMeta.bindings ); } } ); } return paths; } function resolveInitialMediaSource( editorState, blockState = null, runtimeOverride = null ) { const runtime = runtimeOverride || editorState?._mwpSchemaRuntime || null; if ( !runtime ) return ''; const attrs = isPlainObject( blockState?.attrs ) ? blockState.attrs : ( isPlainObject( editorState?.originalAttributes ) ? editorState.originalAttributes : null ); if ( !attrs ) return ''; const urlPaths = collectRuntimeMediaUrlBindingPaths( runtime, editorState ); for ( const path of urlPaths ) { const value = getValueByPath( attrs, path ); if ( typeof value === 'string' && value.trim() ) { return value; } } return ''; } const schemaRuntimeApi = { version: RAW_SCHEMA_DATA.version || 1, schemas: schemaRegistry, getSchemaForHandler: handler => getSchemaForHandler( handler, schemaRegistry ), buildRuntimeFromSchema, createRuntimeHandler: createSchemaAwareHandler, resolveForEditing, refreshEditorState, buildPayloadFromRuntime: buildSchemaPayload, syncPlaceholders: syncSchemaPlaceholders, reconcileRenderedSnapshot, syncManagedMissingComponentStateForElement, hasListBinding, resolveInitialMediaSource, splitBindingPath, getValueByPath, collectMediaUrlBindingPaths: collectRuntimeMediaUrlBindingPaths, }; SFE.SchemaRuntime = schemaRuntimeApi; SFE.SchemaV2 = { version: RAW_SCHEMA_DATA.version || 1, schemas: schemaRegistry, buildRuntimeFromSchema, resolveForEditing, refreshEditorState, buildSchemaPayload, reconcileRenderedSnapshot, syncManagedMissingComponentStateForElement, }; syncExistingBoundPlaceholders(); } )(); :root{--color-primary: #196BDE;--color-primary-dark: #1A4884;--color-primary-light: #CCDCF4;--color-primary-lighter: #949FB1;--color-secondary: #FCD34D;--color-secondary-dark: #E9B404;--color-secondary-light: #FEF6D9;--color-secondary-lighter: #FEF6D9;--color-title: #0F172A;--color-text: #4A5567;--color-link: #2271B1;--color-border: #E2E8F0;--color-success: #388E3C;--color-warning: #F57C00;--color-error: #D32F2F;--color-white: #FFFFFF;--color-off-white: #F0F0F5;--color-black: #000000;--color-success-contrast: #DFF2E0;--color-warning-contrast: #FFE3C6;--color-error-contrast: #F6D3D3;--color-canvas: #F1F5F9;--color-mid: #91BEF7;--color-mid-dark: #68A5F2;--color-blue: #336AD7;--color-blue-dark: #1B4393;--color-blue-light: #EAF4FB;--color-blue-lighter: #F0F5FF}@media screen and (min-width: 782px){html{overflow:-moz-scrollbars-vertical;overflow-y:scroll}} body.toplevel_page_bluehost{--wp-admin-theme-color: var(--color-primary);--wp-admin-theme-color-darker-10: var(--color-primary-dark);--wp-admin-theme-color-darker-20: var(--color-title);--wp-admin-border-width-focus: 2px;--bluehostbrand-focus: inset 0 0 0 1px var(--color-white), 0 0 0 var(--wp-admin-border-width-focus) var(--color-primary);background-color:var(--color-canvas)}body.toplevel_page_bluehost a{color:var(--color-link)}@media screen and (max-width: 782px){body.toplevel_page_bluehost .wp-responsive-open #wpbody{right:-190px}} body.toplevel_page_bluehost #wpwrap{background-color:var(--color-canvas)}body.toplevel_page_bluehost #wpcontent{padding-left:0 !important}body.toplevel_page_bluehost #wpadminbar .ab-top-menu li{transition:opacity .33s ease}body.toplevel_page_bluehost #wpadminbar .ab-top-menu .hideme{max-height:32px;opacity:0;overflow:hidden;pointer-events:none;width:0}body.toplevel_page_bluehost #wpbody-content .notice,body.toplevel_page_bluehost #wpbody-content #dolly,body.toplevel_page_bluehost #wpbody-content .update-nag{display:none}body.toplevel_page_bluehost #wpbody-content .newfold-notifications-wrapper{padding-top:2rem}body.toplevel_page_bluehost #wpbody-content .newfold-notifications-wrapper .notice{display:block}.nfd-disabled{opacity:.5;pointer-events:none}.wppbh .components-card__body .components-toggle-control .components-base-control__field .components-toggle-control__label,.wppbh .components-card__body .components-input-control__label,.wppbh .components-card__body .components-input-control__label *,.wppbh .components-card__body .components-radio-control__option label strong{color:var(--color-text)}.wppbh .components-button,.wppbh .nfd-button{font-size:15px;font-weight:500;transition:all .25s ease;white-space:nowrap}.wppbh .components-button .dashicons,.wppbh .components-button .dashicons-before:before,.wppbh .nfd-button .dashicons,.wppbh .nfd-button .dashicons-before:before{transition:all .25s ease}.wppbh .components-button:focus:not(:disabled),.wppbh .nfd-button:focus:not(:disabled){box-shadow:var(--bluehostbrand-focus)}.wppbh .components-button.is-primary,.wppbh .components-button.nfd-button-primary,.wppbh .components-button[variant=primary],.wppbh .nfd-button.is-primary,.wppbh .nfd-button.nfd-button-primary,.wppbh .nfd-button[variant=primary]{background-color:var(--color-primary);color:var(--color-white)}.wppbh .components-button.is-secondary,.wppbh .components-button.nfd-button--secondary,.wppbh .components-button[variant=secondary],.wppbh .nfd-button.is-secondary,.wppbh .nfd-button.nfd-button--secondary,.wppbh .nfd-button[variant=secondary]{border-color:var(--color-primary);color:var(--color-primary);background:none}.wppbh .components-button.is-secondary:hover,.wppbh .components-button.nfd-button--secondary:hover,.wppbh .components-button[variant=secondary]:hover,.wppbh .nfd-button.is-secondary:hover,.wppbh .nfd-button.nfd-button--secondary:hover,.wppbh .nfd-button[variant=secondary]:hover{color:var(--color-primary)}.wppbh .components-button:last-child,.wppbh .nfd-button:last-child{padding-right:1rem}.wppbh .components-button.has-icon,.wppbh .nfd-button.has-icon{padding-right:1rem}.wppbh .components-button.has-icon .dashicon,.wppbh .nfd-button.has-icon .dashicon{margin-right:10px}.wppbh a:focus{box-shadow:var(--bluehostbrand-focus);outline:0}.wppbh .components-base-control__help,.wppbh .components-radio-control__option label span span{color:var(--color-text);margin-top:.25rem}.wppbh,.wppbh *{box-sizing:border-box}.wppbh-app-body-content{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;gap:2rem;position:relative}.wppbh-app-body-content .wppbh-app-body-inner{flex-grow:1}.wppbh-app-body-content .wppbh-app-aside{flex-shrink:0;flex-grow:0;width:300px;min-width:0;overflow:hidden}@media screen and (max-width: 782px){.wppbh-app-body-content{flex-direction:column}.wppbh-app-body-content .wppbh-app-aside{width:100%;min-width:0;position:relative}} .wppbh-app-aside{position:sticky;top:4rem;z-index:2}.wppbh-app-aside-content{min-width:0;max-width:100%;overflow:hidden}.components-snackbar__content{color:var(--color-off-white) !important}.grid{display:grid;gap:clamp(.5rem,1rem + 1vw,2rem);padding:.5rem}@media screen and (min-width: 600px){.grid.col2,.grid.col3,.grid.col4{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media screen and (min-width: 800px){.grid.col3,.grid.col4{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media screen and (min-width: 1020px){.grid.col4{grid-template-columns:repeat(4, minmax(0, 1fr))}} .wppbh-app-snackbar{padding:0 24px;position:relative}.wppbh-app-snackbar .components-snackbar-list{bottom:.5rem;position:fixed}.has-page-graphic{padding-bottom:26rem}.wppbh-page-graphic{bottom:3.5rem;opacity:.5;position:absolute;right:1rem;z-index:-1}.wppbh .components-card{box-shadow:inset 0px 0px 0px 1px var(--color-border)}.wppbh .components-card.short{margin-bottom:auto}.wppbh .components-card.disabled{opacity:.5}.wppbh .components-card-body.disabled,.wppbh .components-card__body.disabled{opacity:.5}.newfold-notifications-wrapper .newfold-notification{max-width:1600px;margin:0 auto .75rem;transition:opacity .2s ease}.newfold-notifications-wrapper .newfold-notification:first-of-type{margin-top:1.35rem}.newfold-notifications-wrapper .newfold-notification.is-dismissed{opacity:0}.newfold-notifications-wrapper .notice{margin:0}.wppbh-animation-blink{animation:blink 2.5s ease 1s 3 normal forwards}@keyframes blink{0%,50%,100%{background-color:initial}25%,75%{background-color:#e9f1fd}}.coming-soon-status{text-transform:uppercase}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-link-mini){display:flex}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) .nfd-card{transition:all .5s ease}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) .nfd-title,.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) .nfd-button{transition:color .5s ease,background-color .5s ease}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) p{color:var(--color-text)}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) svg:not(.nfd-bg-img) path{stroke-width:1.5;stroke:var(--color-text);transition:all .5s ease}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg) svg.nfd-bg-img path{stroke-width:.3}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg):hover .nfd-card:not(.nfd-card-has-bg){background-color:var(--color-blue-lighter);border-color:var(--color-blue)}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg):hover .nfd-card:not(.nfd-card-has-bg) .nfd-title{color:var(--color-blue)}.nfd-root .wppbh-home .nfd-card-link:not(.nfd-card-has-bg):hover .nfd-card:not(.nfd-card-has-bg) svg path{stroke:var(--color-blue)}.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg{transition:all .5s ease;min-width:100%;min-height:320px}.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content{position:relative}.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content .nfd-bg-img{position:absolute;z-index:0;width:60%;height:auto;right:-1rem;bottom:-1rem}.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content .nfd-title,.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content p,.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content .nfd-card-bottom{z-index:1}.nfd-root .wppbh-home .nfd-card.nfd-card-has-bg .nfd-card__content .nfd-button{position:absolute;bottom:0}.nfd-root .wppbh-home .nfd-card.nfd-card-mid{background-color:var(--color-mid);border-color:var(--color-mid)}.nfd-root .wppbh-home .nfd-card.nfd-card-mid .nfd-title,.nfd-root .wppbh-home .nfd-card.nfd-card-mid p{color:var(--color-black) !important}.nfd-root .wppbh-home .nfd-card.nfd-card-mid .nfd-button{background-color:var(--color-black)}.nfd-root .wppbh-home .nfd-card.nfd-card-mid:hover{background-color:var(--color-mid-dark);border-color:var(--color-mid-dark)}.nfd-root .wppbh-home .nfd-card.nfd-card-mid:hover .nfd-button{background-color:var(--color-black)}.nfd-root .wppbh-home .nfd-card.nfd-card-dark{background-color:var(--color-blue);border-color:var(--color-blue)}.nfd-root .wppbh-home .nfd-card.nfd-card-dark .nfd-title,.nfd-root .wppbh-home .nfd-card.nfd-card-dark p{color:var(--color-white) !important}.nfd-root .wppbh-home .nfd-card.nfd-card-dark .nfd-button{background-color:var(--color-blue-dark)}.nfd-root .wppbh-home .nfd-card.nfd-card-dark:hover{background-color:var(--color-blue-dark);border-color:var(--color-blue-dark)}.nfd-root .wppbh-home .nfd-card.nfd-card-dark:hover .nfd-button{background-color:var(--color-black)}.nfd-root .wppbh-home .nfd-card-link-mini .nfd-arrow{opacity:0;fill:var(--color-primary);padding-right:1rem;transition:all .5s ease}.nfd-root .wppbh-home .nfd-card-link-mini .nfd-card-hover-cta{opacity:0;transition:opacity .25s ease}.nfd-root .wppbh-home .nfd-card-link-mini:hover p{color:var(--color-primary)}.nfd-root .wppbh-home .nfd-card-link-mini:hover .nfd-arrow{opacity:1;padding-right:0}.nfd-root .wppbh-home .nfd-card-link-mini:hover .nfd-card-hover-cta{opacity:1}.nfd-root .wppbh-home .nfd-no-stroke path{stroke:none !important}.wppbh-app-marketplace-page .nfd-marketplace-sidebar ul{margin-left:0 !important}.wppbh-app-marketplace-page .nfd-marketplace-categories .nfd-select.nfd-marketing-page-category-selector .nfd-select__options{width:auto !important}.wppbh-app-marketplace-page .nfd-flex-col{flex-direction:column !important}@media(min-width: 768px){.wppbh-app-marketplace-page .md\:nfd-flex-row{flex-direction:row !important}.wppbh-app-marketplace-page .md\:nfd-grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr)) !important}}@media(min-width: 1120px){.wppbh-app-marketplace-page .min-\[1120px\]\:nfd-grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr)) !important}}@media(min-width: 1400px){.wppbh-app-marketplace-page .min-\[1400px\]\:nfd-grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr)) !important}} #nfd-portal-apps{display:none}.wppbh-app-settings-page{min-width:100%}.settings-app-wrapper{width:100%}.performance-fill .nfd-page>div:first-child{display:none}.staging-fill .nfd-page .newfold-staging-header{display:none}.nfd-root .nfd-details summary{align-items:center;cursor:pointer;display:flex;justify-content:space-between;list-style:none;padding:2rem}.nfd-root .nfd-details .nfd-details-icon{flex-shrink:0;font-size:2rem;transform:rotate(180deg);width:2rem;transition:color .25s ease}.nfd-root .nfd-details[open] .nfd-details-icon{transform:rotate(0deg)}.nfd-root .nfd-details:hover .nfd-details-icon,.nfd-root .nfd-details[open] .nfd-details-icon{color:var(--color-primary)}.nfd-root .wppbh-app-body header nav>svg{flex-shrink:0}@media screen and (max-width: 600px){.nfd-root .wppbh-app-body header nav{top:46px !important}.nfd-root .wppbh-app-body header nav .nfd-button{display:none !important}} .nfd-pointer-events-none+.nfd-appbar-nav-dialog{pointer-events:none !important}.nfd-root .wppbh-app-body .wppbh-logo-wrap{padding:0 1rem}.nfd-root .wppbh-app-body .wppbh-logo-wrap .components-button.logo-mark:focus:not(:disabled){box-shadow:none !important;outline:0}.nfd-root .wppbh-app-body .wppbh-logo-wrap .components-button.logo-mark:focus-visible{box-shadow:var(--bluehostbrand-focus)}.nfd-root .nfd-appbar-item .focus\:nfd-outline-none:focus-visible{outline-color:var(--color-primary) !important}.nfd-validation-input button[data-id=nfd-marketing-page-category-selector] .nfd-select__button-label{padding-right:2rem}.wppbh-app-marketplace-page{width:100%}.wppbh-app-marketplace-page .nfd-pp-yoast-hero-content>div{min-width:400px;max-width:50%;margin-left:auto;align-items:center}.nfd-root aside.nfd-notifications{z-index:9991}.nfd-coming-soon-content{align-items:center} /* Import main CSS including all components. */ /** * Tailwind CSS preflight, but scoped to the Yoast root class. * This is added to the base layer by design. * * Source: https://github.com/tailwindlabs/tailwindcss/blob/v3.1.2/src/css/preflight.css * Changed `html` and `body` to affect the `.nfd-root` instead. */ /** * Styles from Tailwind CSS forms, but scoped to the Yoast root class. * * See: https://github.com/tailwindlabs/tailwindcss-forms#using-classes-to-style */ /** * Custom base styles, separate from TailwindCSS. */ /* Tailwind layers */ *, ::before, ::after { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / 0.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; } ::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / 0.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; } /* 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) */ .nfd-root *, .nfd-root ::before, .nfd-root ::after { box-sizing: border-box; /* 1 */ border-width: 0; /* 2 */ border-style: solid; /* 2 */ border-color: #e5e7eb; /* 2 */ } .nfd-root ::before, .nfd-root ::after { --tw-content: ''; } .nfd-root { line-height: 1.5; -webkit-text-size-adjust: 100%; tab-size: 4; font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; margin: 0; } /* 1. Use a consistent sensible line-height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. 3. Use a more readable tab size. 4. Use the user's configured `sans` font-family by default. */ /* 1 */ /* 2 */ /* 3 */ /* 3 */ /* 4 */ /* 1. Remove the margin in all browsers. */ /* 1 */ /* 1. Add the correct height in Firefox. 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) 3. Ensure horizontal rules are visible by default. */ .nfd-root hr { height: 0; /* 1 */ color: inherit; /* 2 */ border-top-width: 1px; /* 3 */ } /* Add the correct text decoration in Chrome, Edge, and Safari. */ .nfd-root abbr:where([title]) { -webkit-text-decoration: underline dotted; text-decoration: underline dotted; } /* Remove the default font size and weight for headings. */ .nfd-root h1, .nfd-root h2, .nfd-root h3, .nfd-root h4, .nfd-root h5, .nfd-root h6 { font-size: inherit; font-weight: inherit; } /* Reset links to optimize for opt-in styling instead of opt-out. */ .nfd-root a { color: inherit; text-decoration: inherit; } /* Add the correct font weight in Edge and Safari. */ .nfd-root b, .nfd-root strong { font-weight: bolder; } /* 1. Use the user's configured `mono` font family by default. 2. Correct the odd `em` font sizing in all browsers. */ .nfd-root code, .nfd-root kbd, .nfd-root samp, .nfd-root pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ font-size: 1em; /* 2 */ } /* Add the correct font size in all browsers. */ .nfd-root small { font-size: 80%; } /* Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ .nfd-root sub, .nfd-root sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } .nfd-root sub { bottom: -0.25em; } .nfd-root sup { top: -0.5em; } /* 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) 3. Remove gaps between table borders by default. */ .nfd-root table { text-indent: 0; /* 1 */ border-color: inherit; /* 2 */ border-collapse: collapse; /* 3 */ } /* 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. 3. Remove default padding in all browsers. */ .nfd-root button, .nfd-root input, .nfd-root optgroup, .nfd-root select, .nfd-root textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ color: inherit; /* 1 */ margin: 0; /* 2 */ padding: 0; /* 3 */ } /* Remove the inheritance of text transform in Edge and Firefox. */ .nfd-root button, .nfd-root select { text-transform: none; } /* 1. Correct the inability to style clickable types in iOS and Safari. 2. Remove default button styles. */ .nfd-root button, .nfd-root [type='button'], .nfd-root [type='reset'], .nfd-root [type='submit'] { -webkit-appearance: button; /* 1 */ background-color: transparent; /* 2 */ background-image: none; /* 2 */ } /* Use the modern Firefox focus style for all focusable elements. */ .nfd-root :-moz-focusring { outline: auto; } /* Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) */ .nfd-root :-moz-ui-invalid { box-shadow: none; } /* Add the correct vertical alignment in Chrome and Firefox. */ .nfd-root progress { vertical-align: baseline; } /* Correct the cursor style of increment and decrement buttons in Safari. */ .nfd-root ::-webkit-inner-spin-button, .nfd-root ::-webkit-outer-spin-button { height: auto; } /* 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ .nfd-root [type='search'] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } /* Remove the inner padding in Chrome and Safari on macOS. */ .nfd-root ::-webkit-search-decoration { -webkit-appearance: none; } /* 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ .nfd-root ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } /* Add the correct display in Chrome and Safari. */ .nfd-root summary { display: list-item; } /* Removes the default spacing and border for appropriate elements. */ .nfd-root blockquote, .nfd-root dl, .nfd-root dd, .nfd-root h1, .nfd-root h2, .nfd-root h3, .nfd-root h4, .nfd-root h5, .nfd-root h6, .nfd-root hr, .nfd-root figure, .nfd-root p, .nfd-root pre { margin: 0; } .nfd-root fieldset { margin: 0; padding: 0; } .nfd-root legend { padding: 0; } .nfd-root ol, .nfd-root ul, .nfd-root menu { list-style: none; margin: 0; padding: 0; } /* Prevent resizing textareas horizontally by default. */ .nfd-root textarea { resize: vertical; } /* 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) 2. Set the default placeholder color to the user's configured gray 400 color. */ .nfd-root input::placeholder, .nfd-root textarea::placeholder { opacity: 1; /* 1 */ color: #6b7280; /* 2 */ } /* Set the default cursor for buttons. */ .nfd-root button, .nfd-root [role="button"] { cursor: pointer; } /* Make sure disabled buttons don't get the pointer cursor. */ .nfd-root :disabled { cursor: default; } /* 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) This can trigger a poorly considered lint error in some tools but is included by design. */ .nfd-root img, .nfd-root svg, .nfd-root video, .nfd-root canvas, .nfd-root audio, .nfd-root iframe, .nfd-root embed, .nfd-root object { display: block; /* 1 */ vertical-align: middle; /* 2 */ } /* Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) */ .nfd-root img, .nfd-root video { max-width: 100%; height: auto; } .nfd-root [type='text'], .nfd-root [type='email'], .nfd-root [type='url'], .nfd-root [type='password'], .nfd-root [type='number'], .nfd-root [type='date'], .nfd-root [type='datetime-local'], .nfd-root [type='month'], .nfd-root [type='search'], .nfd-root [type='tel'], .nfd-root [type='time'], .nfd-root [type='week'] { appearance: none; background-color: #fff; border-color: #6b7280; border-width: 1px; border-radius: 0px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 1rem; line-height: 1.5rem; --tw-shadow: 0 0 #0000; } .nfd-root [type='text']:focus, .nfd-root [type='email']:focus, .nfd-root [type='url']:focus, .nfd-root [type='password']:focus, .nfd-root [type='number']:focus, .nfd-root [type='date']:focus, .nfd-root [type='datetime-local']:focus, .nfd-root [type='month']:focus, .nfd-root [type='search']:focus, .nfd-root [type='tel']:focus, .nfd-root [type='time']:focus, .nfd-root [type='week']:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); border-color: #2563eb; } .nfd-root [type='text']::placeholder, .nfd-root [type='email']::placeholder, .nfd-root [type='url']::placeholder, .nfd-root [type='password']::placeholder, .nfd-root [type='number']::placeholder, .nfd-root [type='date']::placeholder, .nfd-root [type='datetime-local']::placeholder, .nfd-root [type='month']::placeholder, .nfd-root [type='search']::placeholder, .nfd-root [type='tel']::placeholder, .nfd-root [type='time']::placeholder, .nfd-root [type='week']::placeholder { color: #6b7280; opacity: 1; } .nfd-root [type='text']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='email']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='url']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='password']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='number']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='date']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='datetime-local']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='month']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='search']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='tel']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='time']::-webkit-datetime-edit-fields-wrapper, .nfd-root [type='week']::-webkit-datetime-edit-fields-wrapper { padding: 0; } .nfd-root [type='text']::-webkit-date-and-time-value, .nfd-root [type='email']::-webkit-date-and-time-value, .nfd-root [type='url']::-webkit-date-and-time-value, .nfd-root [type='password']::-webkit-date-and-time-value, .nfd-root [type='number']::-webkit-date-and-time-value, .nfd-root [type='date']::-webkit-date-and-time-value, .nfd-root [type='datetime-local']::-webkit-date-and-time-value, .nfd-root [type='month']::-webkit-date-and-time-value, .nfd-root [type='search']::-webkit-date-and-time-value, .nfd-root [type='tel']::-webkit-date-and-time-value, .nfd-root [type='time']::-webkit-date-and-time-value, .nfd-root [type='week']::-webkit-date-and-time-value { min-height: 1.5em; text-align: inherit; } .nfd-root [type='text']::-webkit-datetime-edit, .nfd-root [type='email']::-webkit-datetime-edit, .nfd-root [type='url']::-webkit-datetime-edit, .nfd-root [type='password']::-webkit-datetime-edit, .nfd-root [type='number']::-webkit-datetime-edit, .nfd-root [type='date']::-webkit-datetime-edit, .nfd-root [type='datetime-local']::-webkit-datetime-edit, .nfd-root [type='month']::-webkit-datetime-edit, .nfd-root [type='search']::-webkit-datetime-edit, .nfd-root [type='tel']::-webkit-datetime-edit, .nfd-root [type='time']::-webkit-datetime-edit, .nfd-root [type='week']::-webkit-datetime-edit { display: inline-flex; } .nfd-root [type='text']::-webkit-datetime-edit,.nfd-root [type='text']::-webkit-datetime-edit-year-field,.nfd-root [type='text']::-webkit-datetime-edit-month-field,.nfd-root [type='text']::-webkit-datetime-edit-day-field,.nfd-root [type='text']::-webkit-datetime-edit-hour-field,.nfd-root [type='text']::-webkit-datetime-edit-minute-field,.nfd-root [type='text']::-webkit-datetime-edit-second-field,.nfd-root [type='text']::-webkit-datetime-edit-millisecond-field,.nfd-root [type='text']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='email']::-webkit-datetime-edit, .nfd-root [type='email']::-webkit-datetime-edit-year-field, .nfd-root [type='email']::-webkit-datetime-edit-month-field, .nfd-root [type='email']::-webkit-datetime-edit-day-field, .nfd-root [type='email']::-webkit-datetime-edit-hour-field, .nfd-root [type='email']::-webkit-datetime-edit-minute-field, .nfd-root [type='email']::-webkit-datetime-edit-second-field, .nfd-root [type='email']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='email']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='url']::-webkit-datetime-edit, .nfd-root [type='url']::-webkit-datetime-edit-year-field, .nfd-root [type='url']::-webkit-datetime-edit-month-field, .nfd-root [type='url']::-webkit-datetime-edit-day-field, .nfd-root [type='url']::-webkit-datetime-edit-hour-field, .nfd-root [type='url']::-webkit-datetime-edit-minute-field, .nfd-root [type='url']::-webkit-datetime-edit-second-field, .nfd-root [type='url']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='url']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='password']::-webkit-datetime-edit, .nfd-root [type='password']::-webkit-datetime-edit-year-field, .nfd-root [type='password']::-webkit-datetime-edit-month-field, .nfd-root [type='password']::-webkit-datetime-edit-day-field, .nfd-root [type='password']::-webkit-datetime-edit-hour-field, .nfd-root [type='password']::-webkit-datetime-edit-minute-field, .nfd-root [type='password']::-webkit-datetime-edit-second-field, .nfd-root [type='password']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='password']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='number']::-webkit-datetime-edit, .nfd-root [type='number']::-webkit-datetime-edit-year-field, .nfd-root [type='number']::-webkit-datetime-edit-month-field, .nfd-root [type='number']::-webkit-datetime-edit-day-field, .nfd-root [type='number']::-webkit-datetime-edit-hour-field, .nfd-root [type='number']::-webkit-datetime-edit-minute-field, .nfd-root [type='number']::-webkit-datetime-edit-second-field, .nfd-root [type='number']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='number']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='date']::-webkit-datetime-edit, .nfd-root [type='date']::-webkit-datetime-edit-year-field, .nfd-root [type='date']::-webkit-datetime-edit-month-field, .nfd-root [type='date']::-webkit-datetime-edit-day-field, .nfd-root [type='date']::-webkit-datetime-edit-hour-field, .nfd-root [type='date']::-webkit-datetime-edit-minute-field, .nfd-root [type='date']::-webkit-datetime-edit-second-field, .nfd-root [type='date']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='date']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit, .nfd-root [type='datetime-local']::-webkit-datetime-edit-year-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-month-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-day-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-hour-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-minute-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-second-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='datetime-local']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='month']::-webkit-datetime-edit, .nfd-root [type='month']::-webkit-datetime-edit-year-field, .nfd-root [type='month']::-webkit-datetime-edit-month-field, .nfd-root [type='month']::-webkit-datetime-edit-day-field, .nfd-root [type='month']::-webkit-datetime-edit-hour-field, .nfd-root [type='month']::-webkit-datetime-edit-minute-field, .nfd-root [type='month']::-webkit-datetime-edit-second-field, .nfd-root [type='month']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='month']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='search']::-webkit-datetime-edit, .nfd-root [type='search']::-webkit-datetime-edit-year-field, .nfd-root [type='search']::-webkit-datetime-edit-month-field, .nfd-root [type='search']::-webkit-datetime-edit-day-field, .nfd-root [type='search']::-webkit-datetime-edit-hour-field, .nfd-root [type='search']::-webkit-datetime-edit-minute-field, .nfd-root [type='search']::-webkit-datetime-edit-second-field, .nfd-root [type='search']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='search']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='tel']::-webkit-datetime-edit, .nfd-root [type='tel']::-webkit-datetime-edit-year-field, .nfd-root [type='tel']::-webkit-datetime-edit-month-field, .nfd-root [type='tel']::-webkit-datetime-edit-day-field, .nfd-root [type='tel']::-webkit-datetime-edit-hour-field, .nfd-root [type='tel']::-webkit-datetime-edit-minute-field, .nfd-root [type='tel']::-webkit-datetime-edit-second-field, .nfd-root [type='tel']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='tel']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='time']::-webkit-datetime-edit, .nfd-root [type='time']::-webkit-datetime-edit-year-field, .nfd-root [type='time']::-webkit-datetime-edit-month-field, .nfd-root [type='time']::-webkit-datetime-edit-day-field, .nfd-root [type='time']::-webkit-datetime-edit-hour-field, .nfd-root [type='time']::-webkit-datetime-edit-minute-field, .nfd-root [type='time']::-webkit-datetime-edit-second-field, .nfd-root [type='time']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='time']::-webkit-datetime-edit-meridiem-field, .nfd-root [type='week']::-webkit-datetime-edit, .nfd-root [type='week']::-webkit-datetime-edit-year-field, .nfd-root [type='week']::-webkit-datetime-edit-month-field, .nfd-root [type='week']::-webkit-datetime-edit-day-field, .nfd-root [type='week']::-webkit-datetime-edit-hour-field, .nfd-root [type='week']::-webkit-datetime-edit-minute-field, .nfd-root [type='week']::-webkit-datetime-edit-second-field, .nfd-root [type='week']::-webkit-datetime-edit-millisecond-field, .nfd-root [type='week']::-webkit-datetime-edit-meridiem-field { padding-top: 0; padding-bottom: 0; } .nfd-root textarea { appearance: none; background-color: #fff; border-color: #6b7280; border-width: 1px; border-radius: 0px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 1rem; line-height: 1.5rem; --tw-shadow: 0 0 #0000; } .nfd-root textarea:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); border-color: #2563eb; } .nfd-root textarea::placeholder { color: #6b7280; opacity: 1; } .nfd-root select { appearance: none; background-color: #fff; border-color: #6b7280; border-width: 1px; border-radius: 0px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 1rem; line-height: 1.5rem; --tw-shadow: 0 0 #0000; } .nfd-root select:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); border-color: #2563eb; } .nfd-root select { background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27none%27 viewBox=%270 0 20 20%27%3e%3cpath stroke=%27%236b7280%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%271.5%27 d=%27M6 8l4 4 4-4%27/%3e%3c/svg%3e"); background-position: right 0.5rem center; background-repeat: no-repeat; background-size: 1.5em 1.5em; padding-right: 2.5rem; -webkit-print-color-adjust: exact; print-color-adjust: exact; } .nfd-root select:where([size]:not([size="1"])) { background-image: initial; background-position: initial; background-repeat: unset; background-size: initial; padding-right: 0.75rem; -webkit-print-color-adjust: unset; print-color-adjust: unset; } .nfd-root select[multiple] { appearance: none; background-color: #fff; border-color: #6b7280; border-width: 1px; border-radius: 0px; padding-top: 0.5rem; padding-right: 0.75rem; padding-bottom: 0.5rem; padding-left: 0.75rem; font-size: 1rem; line-height: 1.5rem; --tw-shadow: 0 0 #0000; } .nfd-root select[multiple]:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); border-color: #2563eb; } .nfd-root [type='checkbox'] { appearance: none; padding: 0; -webkit-print-color-adjust: exact; print-color-adjust: exact; display: inline-block; vertical-align: middle; background-origin: border-box; -webkit-user-select: none; user-select: none; flex-shrink: 0; height: 1rem; width: 1rem; color: #2563eb; background-color: #fff; border-color: #6b7280; border-width: 1px; --tw-shadow: 0 0 #0000; border-radius: 0px; } .nfd-root [type='checkbox']:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 2px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .nfd-root [type='checkbox']:checked { border-color: transparent; background-color: currentColor; background-size: 100% 100%; background-position: center; background-repeat: no-repeat; background-image: url("data:image/svg+xml,%3csvg viewBox=%270 0 16 16%27 fill=%27white%27 xmlns=%27http://www.w3.org/2000/svg%27%3e%3cpath d=%27M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z%27/%3e%3c/svg%3e"); } @media (forced-colors: active) { .nfd-root [type='checkbox']:checked { appearance: auto; } } .nfd-root [type='checkbox']:checked:hover,.nfd-root [type='checkbox']:checked:focus { border-color: transparent; background-color: currentColor; } .nfd-root [type='checkbox']:indeterminate { background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27none%27 viewBox=%270 0 16 16%27%3e%3cpath stroke=%27white%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27M4 8h8%27/%3e%3c/svg%3e"); border-color: transparent; background-color: currentColor; background-size: 100% 100%; background-position: center; background-repeat: no-repeat; } @media (forced-colors: active) { .nfd-root [type='checkbox']:indeterminate { appearance: auto; } } .nfd-root [type='checkbox']:indeterminate:hover,.nfd-root [type='checkbox']:indeterminate:focus { border-color: transparent; background-color: currentColor; } .nfd-root [type='radio'] { appearance: none; padding: 0; -webkit-print-color-adjust: exact; print-color-adjust: exact; display: inline-block; vertical-align: middle; background-origin: border-box; -webkit-user-select: none; user-select: none; flex-shrink: 0; height: 1rem; width: 1rem; color: #2563eb; background-color: #fff; border-color: #6b7280; border-width: 1px; --tw-shadow: 0 0 #0000; border-radius: 100%; } .nfd-root [type='radio']:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-offset-width: 2px; --tw-ring-offset-color: #fff; --tw-ring-color: #2563eb; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .nfd-root [type='radio']:checked { border-color: transparent; background-color: currentColor; background-size: 100% 100%; background-position: center; background-repeat: no-repeat; background-image: url("data:image/svg+xml,%3csvg viewBox=%270 0 16 16%27 fill=%27white%27 xmlns=%27http://www.w3.org/2000/svg%27%3e%3ccircle cx=%278%27 cy=%278%27 r=%273%27/%3e%3c/svg%3e"); } @media (forced-colors: active) { .nfd-root [type='radio']:checked { appearance: auto; } } .nfd-root [type='radio']:checked:hover,.nfd-root [type='radio']:checked:focus { border-color: transparent; background-color: currentColor; } .nfd-root { font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: .8125rem; font-weight: 400; line-height: 1.5; --tw-text-opacity: 1; color: rgb(71 85 105 / var(--tw-text-opacity, 1)); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .nfd-root a { --tw-text-opacity: 1; color: rgb(79 70 229 / var(--tw-text-opacity, 1)); text-decoration-line: underline; } .nfd-root a:visited { color: rgb(242 113 33 ); } .nfd-root a:hover { --tw-text-opacity: 1; color: rgb(99 102 241 / var(--tw-text-opacity, 1)); } .nfd-root a:hover:visited { color: rgb(243 123 49 ); } .nfd-root a:focus { border-radius: 0.125rem; --tw-text-opacity: 1; color: rgb(99 102 241 / var(--tw-text-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 1px; --tw-ring-offset-color: transparent; } .nfd-root [type='text']::placeholder, .nfd-root [type='email']::placeholder, .nfd-root [type='url']::placeholder, .nfd-root [type='password']::placeholder, .nfd-root [type='number']::placeholder, .nfd-root [type='date']::placeholder, .nfd-root [type='datetime-local']::placeholder, .nfd-root [type='month']::placeholder, .nfd-root [type='search']::placeholder, .nfd-root [type='tel']::placeholder, .nfd-root [type='time']::placeholder, .nfd-root [type='week']::placeholder, .nfd-root textarea::placeholder { --tw-placeholder-opacity: 1; color: rgb(100 116 139 / var(--tw-placeholder-opacity, 1)); } .nfd-root svg path { stroke-width: inherit; } .nfd-root { --tw-text-opacity: 1; color: rgb(74 85 103 / var(--tw-text-opacity, 1)); } .nfd-root a { --tw-text-opacity: 1; color: rgb(25 107 222 / var(--tw-text-opacity, 1)); text-decoration-line: none; } .nfd-root a:visited { color: rgb(25 107 222 ); } .nfd-root a:hover { --tw-text-opacity: 1; color: rgb(26 72 132 / var(--tw-text-opacity, 1)); } .nfd-root a:hover:visited { color: rgb(26 72 132 ); } .nfd-root a:focus { border-radius: 0.125rem; --tw-text-opacity: 1; color: rgb(26 72 132 / var(--tw-text-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(26 72 132 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 1px; --tw-ring-offset-color: transparent; } .nfd-container { width: 100%; } @media (min-width: 640px) { .nfd-container { max-width: 640px; } } @media (min-width: 768px) { .nfd-container { max-width: 768px; } } @media (min-width: 1024px) { .nfd-container { max-width: 1024px; } } @media (min-width: 1280px) { .nfd-container { max-width: 1280px; } } @media (min-width: 1536px) { .nfd-container { max-width: 1536px; } } .nfd-root .nfd-alert { display: flex; gap: 0.75rem; border-radius: 0.375rem; padding: 1rem; } /* Variants */ .nfd-root .nfd-alert--info { --tw-bg-opacity: 1; background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-alert--info .nfd-alert__message { --tw-text-opacity: 1; color: rgb(30 64 175 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-alert--warning { --tw-bg-opacity: 1; background-color: rgb(254 243 199 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-alert--warning .nfd-alert__message { --tw-text-opacity: 1; color: rgb(146 64 14 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-alert--success { --tw-bg-opacity: 1; background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-alert--success .nfd-alert__message { --tw-text-opacity: 1; color: rgb(22 101 52 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-alert--error { --tw-bg-opacity: 1; background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-alert--error .nfd-alert__message { --tw-text-opacity: 1; color: rgb(153 27 27 / var(--tw-text-opacity, 1)); } /* Elements */ .nfd-root .nfd-alert__icon { height: 1.25rem; width: 1.25rem; flex-shrink: 0; flex-grow: 0; } .nfd-root .nfd-autocomplete { position: relative; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-autocomplete--error .nfd-autocomplete__button { --tw-border-opacity: 1; border-color: rgb(252 165 165 / var(--tw-border-opacity, 1)); } .nfd-root .nfd-autocomplete--error .nfd-autocomplete__button:focus { --tw-border-opacity: 1; border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-opacity: 1; --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-autocomplete--error .nfd-autocomplete__input::placeholder { --tw-placeholder-opacity: 1; color: rgb(252 165 165 / var(--tw-placeholder-opacity, 1)); } .nfd-root .nfd-autocomplete--disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-autocomplete--disabled:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-autocomplete__button { display: flex; height: 100%; width: 100%; align-items: center; border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); padding-left: 0.75rem; padding-right: 0.75rem; --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-autocomplete__button:focus-within { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-autocomplete__button-icon { pointer-events: none; position: absolute; top: 0.6875rem; right: 0.625rem; height: 1.25rem; width: 1.25rem; --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-autocomplete__input { width: 100%; border-width: 0px; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0px; padding-right: 2.5rem; font-size: .8125rem; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-autocomplete__input:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-autocomplete__options { position: absolute; z-index: 20; margin-top: 0.25rem; max-height: 15rem; width: 100%; overflow: auto; border-radius: 0.375rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); font-size: .8125rem; --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1)); --tw-ring-opacity: 0.05; } .nfd-root .nfd-autocomplete__options:focus { outline: 2px solid transparent; outline-offset: 2px; } .nfd-root .nfd-autocomplete__option { position: relative; display: flex; cursor: default; -webkit-user-select: none; user-select: none; align-items: center; justify-content: space-between; padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; --tw-text-opacity: 1; color: rgb(51 65 85 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-autocomplete__option--active { --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-autocomplete__option--selected { --tw-bg-opacity: 1; background-color: rgb(242 113 33 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-select__option-label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nfd-root .nfd-autocomplete__option-check { height: 1.25rem; width: 1.25rem; flex-shrink: 0; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-badge { display: inline-flex; align-items: center; white-space: nowrap; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1)); padding-left: 0.5rem; padding-right: 0.5rem; padding-top: 0.125rem; padding-bottom: 0.125rem; vertical-align: middle; font-size: .75rem; font-weight: 500; line-height: 1.25; --tw-text-opacity: 1; color: rgb(30 64 175 / var(--tw-text-opacity, 1)); } /* Variants */ .nfd-root .nfd-badge--info { --tw-bg-opacity: 1; background-color: rgb(191 219 254 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(30 58 138 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-badge--upsell { --tw-bg-opacity: 1; background-color: rgb(253 230 138 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(120 53 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-badge--plain { --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); } /* Sizes */ .nfd-root .nfd-badge--small { font-size: 0.675rem; } .nfd-root .nfd-badge--large { padding-left: 0.75rem; padding-right: 0.75rem; font-size: 1rem; } .nfd-root .nfd-button { display: inline-flex; cursor: pointer; align-items: center; justify-content: center; border-radius: 0.375rem; border-width: 1px; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 0.75rem; text-align: center; font-size: .8125rem; font-weight: 500; line-height: 1rem; text-decoration-line: none; --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-button:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } /* Special styling for buttons rendered `as` "a" (to override anchor defaults). */ .nfd-root a.nfd-button:focus { border-radius: 0.375rem; --tw-ring-offset-color: #FFFFFF; } /* Variants */ .nfd-root .nfd-button--primary { border-color: transparent; --tw-bg-opacity: 1; background-color: rgb(242 113 33 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--primary:visited { color: rgb(255 255 255 ); } .nfd-root .nfd-button--primary:hover { --tw-bg-opacity: 1; background-color: rgb(242 90 33 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--primary:hover:visited { color: rgb(255 255 255 ); } .nfd-root .nfd-button--primary:focus { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 90 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button--secondary { --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--secondary:visited { color: rgb(30 41 59 ); } .nfd-root .nfd-button--secondary:hover { --tw-bg-opacity: 1; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--secondary:hover:visited { color: rgb(30 41 59 ); } .nfd-root .nfd-button--secondary:focus { --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 90 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button--error { border-color: transparent; --tw-bg-opacity: 1; background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--error:visited { color: rgb(255 255 255 ); } .nfd-root .nfd-button--error:hover { --tw-bg-opacity: 1; background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--error:hover:visited { color: rgb(255 255 255 ); } .nfd-root .nfd-button--error:focus { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(220 38 38 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button--upsell { border-color: transparent; --tw-bg-opacity: 1; background-color: rgb(252 211 77 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(120 53 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--upsell:visited { color: rgb(120 53 15 ); } .nfd-root .nfd-button--upsell:hover { --tw-bg-opacity: 1; background-color: rgb(251 191 36 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(120 53 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--upsell:hover:visited { color: rgb(120 53 15 ); } .nfd-root .nfd-button--upsell:focus { --tw-text-opacity: 1; color: rgb(120 53 15 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(251 191 36 / var(--tw-ring-opacity, 1)); } /* Sizes */ .nfd-root .nfd-button--large { padding-top: 0.75rem; padding-bottom: 0.75rem; padding-left: 1.5rem; padding-right: 1.5rem; font-size: 1rem; line-height: 1.25rem; } .nfd-root .nfd-button--small { padding-top: 0.375rem; padding-bottom: 0.375rem; padding-left: 0.625rem; padding-right: 0.625rem; font-size: .75rem; } /* States */ .nfd-root .nfd-button--disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-button--disabled:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-checkbox { display: flex; align-items: center; } .nfd-root .nfd-checkbox--disabled .nfd-checkbox__input, .nfd-root .nfd-checkbox--disabled .nfd-checkbox__label { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-checkbox__input { height: 1rem; width: 1rem; cursor: default; border-radius: 0.25rem; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-checkbox__input:focus { --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-checkbox__input:checked::before { display: none; --tw-content: none; content: var(--tw-content); } .nfd-root .nfd-checkbox__label { margin-left: 0.75rem; } .nfd-root .nfd-code { margin: 0px; display: inline-block; border-radius: 0.25rem; --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); padding: 0.25rem; font-size: .75rem; line-height: 1.25; --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-code--block { margin-top: 0.5rem; margin-bottom: 0.5rem; display: block; max-width: 100%; overflow-x: auto; white-space: nowrap; padding-left: 0.5rem; padding-right: 0.5rem; padding-top: 0.25rem; padding-bottom: 0.25rem; } .nfd-root .nfd-drop-zone { width: 100%; border-radius: 0.375rem; border-width: 2px; border-style: dashed; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 1.25rem; padding-bottom: 1.5rem; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 300ms; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } .nfd-root .nfd-drop-zone.nfd-drop-zone-is-dragging-over { --tw-border-opacity: 1; border-color: rgb(247 164 112 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(254 245 239 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-drop-zone.nfd-drop-zone-is-dragging-over .nfd-drop-zone__content { pointer-events: none; } .nfd-root .nfd-drop-zone.nfd-drop-zone-is-disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-file-input { width: 100%; border-radius: 0.375rem; border-width: 2px; border-style: dashed; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 1.25rem; padding-bottom: 1.5rem; text-align: center; transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 300ms; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } .nfd-root .nfd-file-input.nfd-is-drag-over { --tw-border-opacity: 1; border-color: rgb(247 164 112 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(254 245 239 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-file-input.nfd-is-drag-over .nfd-file-input__content { pointer-events: none; } .nfd-root .nfd-file-input.nfd-is-drag-over .nfd-file-input__icon { --tw-translate-y: -0.5rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); --tw-text-opacity: 1; color: rgb(243 123 49 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-input.nfd-is-disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-file-input.nfd-is-disabled .nfd-file-input__select-label { cursor: not-allowed; } .nfd-root .nfd-file-input__content { display: inline-flex; max-width: 20rem; flex-direction: column; align-items: center; } .nfd-root .nfd-file-input__content > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); } .nfd-root .nfd-file-input__content { text-align: center; } .nfd-root .nfd-file-input__icon { margin-left: auto; margin-right: auto; height: 3rem; width: 3rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); stroke-width: 1; --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 300ms; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } .nfd-root .nfd-file-input__icon > path { stroke-width: 1; } .nfd-root .nfd-file-input__input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .nfd-root .nfd-file-input__input:focus + .nfd-file-input__select-label { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-file-input__labels { display: flex; font-weight: 400; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-input__select-label { border-radius: 0.375rem; font-weight: 500; } [dir=rtl] .nfd-root .nfd-file-input__labels { flex-direction: row-reverse; } .nfd-root .nfd-image-input { display: flex; min-width: max-content; align-items: center; gap: 1rem; } .nfd-root .nfd-image-input .nfd-image-input__preview { position: relative; display: flex; height: 3rem; width: 3rem; align-items: center; justify-content: center; overflow: hidden; } .nfd-root .nfd-image-input .nfd-image-input__preview:focus-within { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-image-input .nfd-image-input__preview-img { z-index: 10; height: 100%; width: 100%; object-fit: cover; } .nfd-root .nfd-image-input .nfd-image-input__preview-reset { position: absolute; inset: 0px; z-index: 20; cursor: pointer; background-color: rgb(15 23 42 / 0.6); padding: 0.5rem; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); opacity: 0; transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-delay: 100ms; transition-duration: 100ms; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } .nfd-root .nfd-image-input .nfd-image-input__preview-reset:focus { opacity: 1; } .nfd-root .nfd-image-input .nfd-image-input__icon { height: 3rem; width: 3rem; --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-image-input.nfd-has-preview .nfd-image-input__preview { border-width: 1px; --tw-border-opacity: 1; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); } .nfd-root .nfd-image-input.nfd-is-disabled .nfd-image-input__preview { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-image-input.nfd-is-disabled .nfd-image-input__preview-reset { display: none; cursor: not-allowed; } .nfd-root .nfd-image-input.nfd-is-disabled .nfd-image-input__icon { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-label { font-size: .8125rem; font-weight: 500; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-label__required { margin-left: 0.125rem; --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link { cursor: pointer; --tw-text-opacity: 1; color: rgb(79 70 229 / var(--tw-text-opacity, 1)); text-decoration-line: underline; } .nfd-root .nfd-link:visited { color: rgb(242 113 33 ); } .nfd-root .nfd-link:hover { --tw-text-opacity: 1; color: rgb(99 102 241 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link:hover:visited { color: rgb(243 123 49 ); } .nfd-root .nfd-link:focus { border-radius: 0.125rem; --tw-text-opacity: 1; color: rgb(99 102 241 / var(--tw-text-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 1px; --tw-ring-offset-color: transparent; } /* Variants */ .nfd-root .nfd-link--default { } .nfd-root .nfd-link--primary { --tw-text-opacity: 1; color: rgb(241 101 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--primary:hover { --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--primary:focus { --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(241 101 15 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-link--error { --tw-text-opacity: 1; color: rgb(220 38 38 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--error:hover { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--error:focus { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(220 38 38 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-paper { display: flex; flex-direction: column; border-radius: 0.5rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-paper__header { border-bottom-width: 1px; padding: 2rem; } .nfd-root .nfd-paper__content { flex-grow: 1; padding: 2rem; } .nfd-root .nfd-progress-bar { display: block; width: 100%; overflow: hidden; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-progress-bar__progress { display: block; height: 0.375rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(242 113 33 / var(--tw-bg-opacity, 1)); transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 200ms; transition-timing-function: linear; } .nfd-root .nfd-radio { display: flex; align-items: center; } /* Variants */ .nfd-root .nfd-radio--disabled .nfd-radio__input, .nfd-root .nfd-radio--disabled .nfd-radio__label, .nfd-root .nfd-radio--disabled .nfd-radio__check { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-radio--disabled .nfd-radio__input:focus, .nfd-root .nfd-radio--disabled .nfd-radio__label:focus, .nfd-root .nfd-radio--disabled .nfd-radio__check:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-radio--inline-block { display: inline-flex; } /* Elements of the inline-block variant */ .nfd-root .nfd-radio--inline-block .nfd-radio__input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .nfd-root .nfd-radio--inline-block .nfd-radio__input:checked + .nfd-radio__content .nfd-radio__label { border-color: transparent; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-radio--inline-block .nfd-radio__input:checked + .nfd-radio__content .nfd-radio__check { visibility: visible; } .nfd-root .nfd-radio--inline-block .nfd-radio__input:focus + .nfd-radio__content .nfd-radio__label { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-radio--inline-block .nfd-radio__input:checked:focus + .nfd-radio__content .nfd-radio__label { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-offset-width: 1px; } .nfd-root .nfd-radio--inline-block .nfd-radio__content { position: relative; } .nfd-root .nfd-radio--inline-block .nfd-radio__label { margin-left: 0px; display: flex; height: 3.5rem; width: 3.5rem; cursor: pointer; align-items: center; justify-content: center; border-radius: 0.5rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); font-size: 1rem; --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-radio--inline-block .nfd-radio__label:hover { --tw-border-opacity: 1; border-color: rgb(148 163 184 / var(--tw-border-opacity, 1)); } .nfd-root .nfd-radio--inline-block .nfd-radio__label:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-radio--inline-block .nfd-radio__check { visibility: hidden; position: absolute; top: 0.125rem; right: 0.125rem; height: 1.25rem; width: 1.25rem; --tw-text-opacity: 1; color: rgb(241 101 15 / var(--tw-text-opacity, 1)); } /* State */ .nfd-root .nfd-radio__input { height: 1rem; width: 1rem; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-radio__input:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-radio__label { margin-left: 0.75rem; } .nfd-root .nfd-select { position: relative; } .nfd-root .nfd-select--disabled .nfd-select__label, .nfd-root .nfd-select--disabled .nfd-select__button { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-select__button { position: relative; display: flex; width: 100%; cursor: default; align-items: center; justify-content: space-between; border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 2.25rem; text-align: left; line-height: 1.5rem; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-select__button:focus { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-select__button-icon { pointer-events: none; position: absolute; top: 0.625rem; right: 0.625rem; height: 1.25rem; width: 1.25rem; --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-select__options { position: absolute; z-index: 10; margin-top: 0.25rem; max-height: 15rem; width: 100%; overflow: auto; border-radius: 0.375rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); font-size: .8125rem; --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1)); --tw-ring-opacity: 0.05; } .nfd-root .nfd-select__options:focus { outline: 2px solid transparent; outline-offset: 2px; } .nfd-root .nfd-select__option { position: relative; display: flex; cursor: default; -webkit-user-select: none; user-select: none; align-items: center; justify-content: space-between; padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; --tw-text-opacity: 1; color: rgb(51 65 85 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-select__option--active { --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-select__option--selected { --tw-bg-opacity: 1; background-color: rgb(241 101 15 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-select__option-label, .nfd-root .nfd-select__button-label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nfd-root .nfd-select__option-check { height: 1.25rem; width: 1.25rem; flex-shrink: 0; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-tag-input { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem; border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 0.75rem; font-size: .8125rem; line-height: 1.5rem; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-tag-input::placeholder { --tw-placeholder-opacity: 1; color: rgb(100 116 139 / var(--tw-placeholder-opacity, 1)); } .nfd-root .nfd-tag-input { --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-tag-input:focus-within { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-tag-input--disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-tag-input--disabled:focus-within { --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__tag { cursor: not-allowed; } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__tag:hover { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__tag:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__tag:focus-visible { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__remove-tag { cursor: not-allowed; } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__remove-tag:hover { --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__remove-tag:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-tag-input--disabled .nfd-tag-input__input { cursor: not-allowed; } .nfd-root .nfd-tag-input__tag { min-height: 20px; padding-inline-end: 0.125rem; cursor: pointer; gap: 0.125rem; } .nfd-root .nfd-tag-input__tag:hover { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-tag-input__tag:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-tag-input__tag:focus-visible { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-tag-input__remove-tag { display: inline-flex; height: 1rem; width: 1rem; flex-shrink: 0; align-items: center; justify-content: center; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-tag-input__remove-tag:hover { --tw-bg-opacity: 1; background-color: rgb(203 213 225 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-tag-input__remove-tag:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-tag-input__input { margin: 0px; display: inline-flex; flex: 1 1 0%; border-style: none; padding: 0px; font-size: .8125rem; } .nfd-root .nfd-tag-input__input:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-text-input { width: 100%; border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 0.75rem; font-size: .8125rem; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-text-input:focus { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-text-input--read-only, .nfd-root .nfd-text-input--disabled { cursor: default; --tw-border-opacity: 1; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-text-input--disabled { cursor: not-allowed; } .nfd-root .nfd-text-input--disabled:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-textarea { width: 100%; border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 0.75rem; font-size: .8125rem; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-textarea:focus { --tw-border-opacity: 1; border-color: rgb(242 113 33 / var(--tw-border-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-textarea--disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-textarea--disabled:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } .nfd-root .nfd-title { font-weight: 500; line-height: 1.25; --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-title--1 { font-size: 1.5rem; } .nfd-root .nfd-title--2 { font-size: 1.125rem; } .nfd-root .nfd-title--3 { font-size: .875rem; } .nfd-root .nfd-title--4 { font-size: 1rem; } .nfd-root .nfd-title--5 { font-size: .8125rem; } .nfd-root .nfd-toggle { position: relative; display: inline-flex; height: 1.5rem; width: 2.75rem; flex-shrink: 0; cursor: pointer; border-radius: 9999px; border-width: 2px; border-color: transparent; --tw-bg-opacity: 1; background-color: rgb(203 213 225 / var(--tw-bg-opacity, 1)); transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-duration: 200ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } .nfd-root .nfd-toggle:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } /* States */ .nfd-root .nfd-toggle--checked { --tw-bg-opacity: 1; background-color: rgb(242 113 33 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-toggle--checked .nfd-toggle__handle { --tw-translate-x: 1.25rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } .nfd-root .nfd-toggle--disabled { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-toggle--disabled:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } /* Elements */ .nfd-root .nfd-toggle__handle { pointer-events: none; position: relative; display: flex; height: 1.25rem; width: 1.25rem; --tw-translate-x: 0px; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); align-items: center; justify-content: center; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-duration: 200ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } .nfd-root .nfd-toggle__icon { height: 0.625rem; width: 0.625rem; flex-shrink: 0; flex-grow: 0; stroke: currentColor; stroke-width: 2; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 100ms; transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } .nfd-root .nfd-toggle__icon--check { --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-toggle__icon--x { --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); } /* RTL styles */ [dir=rtl] .nfd-root .nfd-toggle--checked .nfd-toggle__handle { --tw-translate-x: -1.25rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } /* Validation icon */ .nfd-root .nfd-validation-icon { pointer-events: none; } .nfd-root .nfd-validation-icon--success { --tw-text-opacity: 1; color: rgb(34 197 94 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-icon--info { --tw-text-opacity: 1; color: rgb(59 130 246 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-icon--warning { --tw-text-opacity: 1; color: rgb(245 158 11 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-icon--error { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); } /* Validation input */ .nfd-root .nfd-validation-input { position: relative; } .nfd-root .nfd-validation-input--success .nfd-validation-input__input { --tw-border-opacity: 1; border-color: rgb(134 239 172 / var(--tw-border-opacity, 1)); padding-right: 2.5rem; } .nfd-root .nfd-validation-input--success .nfd-validation-input__input:focus-within { --tw-border-opacity: 1; border-color: rgb(34 197 94 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--success .nfd-validation-input__input:focus { --tw-border-opacity: 1; border-color: rgb(34 197 94 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--info .nfd-validation-input__input { --tw-border-opacity: 1; border-color: rgb(147 197 253 / var(--tw-border-opacity, 1)); padding-right: 2.5rem; } .nfd-root .nfd-validation-input--info .nfd-validation-input__input:focus-within { --tw-border-opacity: 1; border-color: rgb(59 130 246 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--info .nfd-validation-input__input:focus { --tw-border-opacity: 1; border-color: rgb(59 130 246 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--warning .nfd-validation-input__input { --tw-border-opacity: 1; border-color: rgb(252 211 77 / var(--tw-border-opacity, 1)); padding-right: 2.5rem; } .nfd-root .nfd-validation-input--warning .nfd-validation-input__input:focus-within { --tw-border-opacity: 1; border-color: rgb(245 158 11 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--warning .nfd-validation-input__input:focus { --tw-border-opacity: 1; border-color: rgb(245 158 11 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--error .nfd-validation-input__input { --tw-border-opacity: 1; border-color: rgb(252 165 165 / var(--tw-border-opacity, 1)); padding-right: 2.5rem; } .nfd-root .nfd-validation-input--error .nfd-validation-input__input:focus-within { --tw-border-opacity: 1; border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input--error .nfd-validation-input__input:focus { --tw-border-opacity: 1; border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-validation-input__input { } .nfd-root .nfd-validation-input__icon { position: absolute; top: 0.6875rem; right: 0.625rem; height: 1.25rem; width: 1.25rem; } /* Validation message */ .nfd-root .nfd-validation-message a { font-weight: 500; color: inherit; } .nfd-root .nfd-validation-message a:visited:hover { color: inherit; } .nfd-root .nfd-validation-message a:focus { --tw-ring-color: currentColor; } .nfd-root .nfd-validation-message--success { --tw-text-opacity: 1; color: rgb(22 163 74 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-message--info { --tw-text-opacity: 1; color: rgb(37 99 235 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-message--warning { --tw-text-opacity: 1; color: rgb(217 119 6 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-validation-message--error { --tw-text-opacity: 1; color: rgb(220 38 38 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-mobile-navigation__top { position: sticky; top: 0px; z-index: 50; width: 100%; } .nfd-root .nfd-mobile-navigation__dialog { position: fixed; inset: 0px; z-index: 50; display: flex; } .nfd-root .nfd-autocomplete-field__description { margin-top: 0.5rem; } .nfd-root .nfd-autocomplete-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-card { position: relative; display: flex; flex-direction: column; } .nfd-root .nfd-card > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); } .nfd-root .nfd-card { overflow: hidden; border-radius: 0.5rem; border-width: 1px; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding: 1.5rem; --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); transition-property: transform; transition-duration: 150ms; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } .nfd-root .nfd-card__header { position: relative; margin-left: -1.5rem; margin-right: -1.5rem; margin-top: -1.5rem; display: flex; height: 6rem; align-items: center; justify-content: center; --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); padding: 1.5rem; } .nfd-root .nfd-card__content { flex-grow: 1; } .nfd-root .nfd-card__footer { border-top-width: 1px; --tw-border-opacity: 1; border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); padding-top: 1.5rem; } .nfd-root .nfd-checkbox-group {} .nfd-root .nfd-checkbox-group--disabled .nfd-checkbox-group__label, .nfd-root .nfd-checkbox-group--disabled .nfd-checkbox-group__description { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-checkbox-group__label { margin-bottom: 0.5rem; } .nfd-root .nfd-checkbox-group__options { display: flex; flex-direction: column; gap: 0.75rem; } .nfd-root .nfd-checkbox-group__description { margin-top: -0.5rem; margin-bottom: 1rem; } .nfd-root .nfd-container { width: 100%; border-radius: 0.5rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-container__header { display: flex; flex-direction: column; gap: 1rem; border-bottom-width: 1px; --tw-border-opacity: 1; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); padding: 2rem; } .nfd-root .nfd-container__block { padding: 2rem; padding-bottom: 0px; } .nfd-root .nfd-container__settings-field { display: grid; } @media (min-width: 1280px) { .nfd-root .nfd-container__settings-field { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem; } } .nfd-root .nfd-container__footer { display: flex; flex-direction: column; gap: 1rem; border-top-width: 1px; --tw-border-opacity: 1; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); padding: 2rem; } .nfd-root .nfd-drawer { position: relative; inset: 0px; z-index: 10; overflow: hidden; } .nfd-root .nfd-drawer.nfd-drawer--offset .nfd-drawer__content { margin: 1.25rem; border-radius: 0.5rem; } .nfd-root .nfd-drawer.nfd-drawer--offset .nfd-drawer__panel { border-radius: 0.5rem; } .nfd-root .nfd-drawer.nfd-drawer--right .nfd-drawer__content { right: 0px; } .nfd-root .nfd-drawer.nfd-drawer--left .nfd-drawer__content { left: 0px; } .nfd-root .nfd-drawer__overlay { position: fixed; inset: 0px; background-color: rgb(100 116 139 / var(--tw-bg-opacity, 1)); --tw-bg-opacity: 0.75; transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .nfd-root .nfd-drawer__container { position: fixed; inset: 0px; overflow: hidden; } .nfd-root .nfd-drawer__content { pointer-events: none; position: fixed; top: 0px; bottom: 0px; } .nfd-root .nfd-drawer__header { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1rem; } .nfd-root .nfd-drawer__close { align-self: flex-end; } .nfd-root .nfd-drawer__close-button { position: relative; z-index: 10; border-radius: 0.375rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-drawer__close-button:hover { --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-drawer__close-button:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-drawer__panel { pointer-events: auto; display: flex; height: 100%; max-width: 100%; flex-direction: column; gap: 0.75rem; overflow-y: auto; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding: 1.5rem; --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-feature-upsell { position: relative; } .nfd-root .nfd-feature-upsell--default { --tw-grayscale: grayscale(100%); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } .nfd-root .nfd-feature-upsell--card { padding: 1.5rem; } .nfd-root .nfd-features-select { display: flex; flex-wrap: wrap; gap: 1rem; } .nfd-root .nfd-features-select__feature { display: flex; flex-direction: column; gap: 0.625rem; } .nfd-root .nfd-features-select__feature .nfd-label:not(.nfd-features-select__feature-label) { cursor: pointer; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-input:checked + .nfd-label .nfd-features-select__feature-content { border-color: transparent; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-input:checked + .nfd-label .nfd-features-select__feature-content .nfd-features-select__feature-check { visibility: visible; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-input:focus + .nfd-label .nfd-features-select__feature-content { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-input:checked:focus + .nfd-label .nfd-features-select__feature-content { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-offset-width: 1px; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-content { position: relative; border-radius: 0.5rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding-left: 1.25rem; padding-right: 1.25rem; padding-top: 1.25rem; padding-bottom: 18px; --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-content:hover { --tw-border-opacity: 1; border-color: rgb(148 163 184 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-features-select__feature .nfd-features-select__feature-check { visibility: hidden; position: absolute; top: 0.125rem; right: 0.125rem; height: 1.25rem; width: 1.25rem; --tw-text-opacity: 1; color: rgb(241 101 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-features-select__feature.nfd-is-disabled .nfd-label { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-file-import > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(2rem * var(--tw-space-y-reverse)); } .nfd-root .nfd-file-import__feedback { border-radius: 0.375rem; border-width: 1px; --tw-border-opacity: 1; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding: 1rem; --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-file-import__feedback-header { display: flex; align-items: flex-start; } .nfd-root .nfd-file-import__feedback-header > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(1rem * var(--tw-space-x-reverse)); margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } .nfd-root .nfd-file-import__feedback-figure { display: flex; height: 2rem; width: 2rem; align-items: center; justify-content: center; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(251 215 192 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-file-import__feedback-figure > svg { height: 1.25rem; width: 1.25rem; --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-import__feedback-title { margin-bottom: 0.125rem; display: block; overflow-wrap: break-word; font-weight: 500; --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-import__feedback-description { display: block; font-size: .75rem; font-weight: 500; } .nfd-root .nfd-file-import__abort-button { display: inline-flex; height: 1.25rem; width: 1.25rem; flex-shrink: 0; align-items: center; justify-content: center; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-import__abort-button:hover { --tw-bg-opacity: 1; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(71 85 105 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-file-import__abort-button:focus { --tw-bg-opacity: 1; background-color: rgb(242 113 33 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); outline: 2px solid transparent; outline-offset: 2px; } .nfd-root .nfd-file-import__abort-button > svg { height: 0.75rem; width: 0.75rem; } .nfd-root .nfd-file-import__abort-button > svg > path { stroke-width: 3; } .nfd-root .nfd-image-import .nfd-image-import__drop-zone-content { display: flex; flex-direction: column-reverse; align-items: center; justify-content: space-between; gap: 1rem; } @container nfd-image-import (min-width: 32rem) { .nfd-root .nfd-image-import .nfd-image-import__drop-zone-content { flex-direction: row; } } .nfd-root .nfd-image-import .nfd-image-import__drop-label { --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-image-import .nfd-image-import__drop-label:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-image-import.nfd-is-disabled .nfd-image-input .nfd-image-input__icon, .nfd-root .nfd-image-import.nfd-is-disabled .nfd-image-input .nfd-image-input__preview-img, .nfd-root .nfd-image-import.nfd-is-disabled .nfd-image-input .nfd-button--disabled { /* Reset opacity to prevent opacity stacking from DropZone */ opacity: 1; } .nfd-root .nfd-image-import.nfd-is-disabled .nfd-image-import__drop-label { cursor: not-allowed; } .nfd-root .nfd-image-import .nfd-image-import__content { margin-top: 1rem; } .nfd-root .nfd-modal { position: fixed; inset: 0px; z-index: 50; padding: 1rem; } @media (min-width: 640px) { .nfd-root .nfd-modal { padding: 2rem; } } @media (min-width: 768px) { .nfd-root .nfd-modal { padding: 5rem; } } .nfd-root .nfd-modal__layout { display: flex; min-height: 100%; } .nfd-root .nfd-modal--center .nfd-modal__layout { align-items: center; justify-content: center; } .nfd-root .nfd-modal--top-center .nfd-modal__layout { align-items: flex-start; justify-content: center; } .nfd-root .nfd-modal__overlay { position: absolute; inset: 0px; background-color: rgb(100 116 139 / var(--tw-bg-opacity, 1)); --tw-bg-opacity: 0.75; } .nfd-root .nfd-modal__panel { position: relative; width: 100%; max-width: 36rem; overflow: hidden; border-radius: 0.5rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding: 1.5rem; --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-modal__close { position: absolute; top: 1rem; right: 1rem; display: block; } .nfd-root .nfd-modal__close-button { position: relative; z-index: 10; border-radius: 0.375rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-modal__close-button:hover { --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-modal__close-button:focus { outline: 2px solid transparent; outline-offset: 2px; --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-opacity: 1; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)); --tw-ring-offset-width: 2px; } .nfd-root .nfd-notifications { max-width: calc(100% - 4rem); /* 100% - top and left of 2rem = 4rem. */ max-height: calc(100% - 4rem); /* 100% - ( top of 2rem * 2 ) = 4rem. */ pointer-events: none; position: fixed; z-index: 20; display: flex; width: 100%; flex-direction: column; } .nfd-root .nfd-notifications > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } .nfd-root .nfd-notifications--bottom-center { bottom: 2rem; align-items: center; } .nfd-root .nfd-notifications--bottom-left { bottom: 2rem; left: 2rem; } .nfd-root .nfd-notifications--top-center { top: 2rem; align-items: center; } .nfd-root .nfd-notification { pointer-events: auto; z-index: 20; width: 20rem; max-width: 100%; overflow-y: auto; border-radius: 0.5rem; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); padding: 1rem; --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1)); --tw-ring-opacity: 0.05; } .nfd-root .nfd-notification--large { width: 24rem; } .nfd-root .nfd-notification__icon { height: 1.25rem; width: 1.25rem; } .nfd-root .nfd-page { display: flex; flex-direction: column; gap: 2rem; } .nfd-root .nfd-price-field--disabled .nfd-price-field__label, .nfd-root .nfd-price-field--disabled .nfd-price-field__description { opacity: 0.5; } .nfd-root .nfd-price-field--disabled .nfd-price-field__label { cursor: not-allowed; } .nfd-root .nfd-price-field--read-only .nfd-price-field__label { cursor: default; } .nfd-root .nfd-price-field__description { margin-top: 0.5rem; } .nfd-root .nfd-price-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-price-field__input.nfd-price-field--input-with-icon { padding-right: calc(1.25rem + 24px); } .nfd-root .nfd-radio-group--inline-block .nfd-radio-group__options { display: flex; flex-direction: row; flex-wrap: wrap; gap: 0.5rem; } .nfd-root .nfd-radio-group--disabled .nfd-radio-group__label, .nfd-root .nfd-radio-group--disabled .nfd-radio-group__description { opacity: 0.5; } .nfd-root .nfd-radio-group--disabled .nfd-radio-group__label { cursor: not-allowed; } .nfd-root .nfd-radio-group__label { margin-bottom: 0.5rem; } .nfd-root .nfd-radio-group__options { display: flex; flex-direction: column; gap: 0.5rem; } .nfd-root .nfd-radio-group__description { margin-top: -0.5rem; margin-bottom: 1rem; } .nfd-root .nfd-select-field {} .nfd-root .nfd-select-field--disabled .nfd-select-field__label, .nfd-root .nfd-select-field--disabled .nfd-select-field__description { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-select-field__options { display: flex; flex-direction: column; gap: 0.75rem; } .nfd-root .nfd-select-field__description { margin-top: 0.5rem; } .nfd-root .nfd-select-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-mobile-navigation__top { position: sticky; top: 0px; z-index: 50; width: 100%; } .nfd-root .nfd-mobile-navigation__dialog { position: fixed; inset: 0px; z-index: 50; display: flex; } .nfd-root .nfd-tag-field--disabled .nfd-tag-field__label, .nfd-root .nfd-tag-field--disabled .nfd-tag-field__description { cursor: not-allowed; opacity: 0.5; } .nfd-root .nfd-tag-field__description { margin-top: 0.5rem; } .nfd-root .nfd-tag-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-text-field--disabled .nfd-text-field__label, .nfd-root .nfd-text-field--disabled .nfd-text-field__description { opacity: 0.5; } .nfd-root .nfd-text-field--disabled .nfd-text-field__label { cursor: not-allowed; } .nfd-root .nfd-text-field--read-only .nfd-text-field__label { cursor: default; } .nfd-root .nfd-text-field__description { margin-top: 0.5rem; } .nfd-root .nfd-text-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-text-field__input.nfd-text-field--input-with-icon { padding-right: calc(1.25rem + 24px); } .nfd-root .nfd-textarea-field__label {} .nfd-root .nfd-textarea-field__description { margin-top: 0.5rem; } .nfd-root .nfd-textarea-field__validation { margin-top: 0.5rem; } .nfd-root .nfd-toggle-field { display: flex; flex-direction: column; gap: 0.25rem; } .nfd-root .nfd-toggle-field--disabled .nfd-toggle-field__label-wrapper, .nfd-root .nfd-toggle-field--disabled .nfd-toggle-field__description { opacity: 0.5; } .nfd-root .nfd-toggle-field--disabled .nfd-toggle-field__label, .nfd-root .nfd-toggle-field--disabled .nfd-toggle-field__label-wrapper, .nfd-root .nfd-toggle-field--disabled .nfd-toggle-field__description { cursor: not-allowed; } .nfd-root .nfd-toggle-field__header { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 1.5rem; } .nfd-root .nfd-toggle-field__label-wrapper { display: flex; align-items: center; gap: 0.25rem; } .nfd-root .nfd-toggle-field__description { margin-right: 4.25rem; } .nfd-root .nfd-title { --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link { --tw-text-opacity: 1; color: rgb(25 107 222 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link:visited { color: rgb(26 72 132 ); } .nfd-root .nfd-link:hover { --tw-text-opacity: 1; color: rgb(26 72 132 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link:hover:visited { color: rgb(26 72 132 ); } .nfd-root .nfd-link--primary { --tw-text-opacity: 1; color: rgb(241 101 15 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--primary:hover { --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--primary:focus { --tw-text-opacity: 1; color: rgb(242 113 33 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(241 101 15 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-link--error { --tw-text-opacity: 1; color: rgb(220 38 38 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--error:hover { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-link--error:focus { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(220 38 38 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button { gap: 0.5rem; padding-left: 1rem; padding-right: 1rem; } .nfd-root .nfd-button:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button svg { height: 1.25rem; width: 1.25rem; } /* Variants */ .nfd-root .nfd-button--primary { --tw-bg-opacity: 1; background-color: rgb(25 107 222 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-button--primary:hover { --tw-bg-opacity: 1; background-color: rgb(26 72 132 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-button--primary:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button--secondary { --tw-border-opacity: 1; border-color: rgb(25 107 222 / var(--tw-border-opacity, 1)); --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--secondary:visited { color: rgb(0 0 0 ); } .nfd-root .nfd-button--secondary:hover { --tw-bg-opacity: 1; background-color: rgb(204 220 244 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--secondary:hover:visited { color: rgb(15 23 42 ); } .nfd-root .nfd-button--secondary:focus { --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-button--standout { --tw-bg-opacity: 1; background-color: rgb(252 211 77 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--standout:hover { --tw-bg-opacity: 1; background-color: rgb(233 180 4 / var(--tw-bg-opacity, 1)); --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-button--standout:focus { --tw-text-opacity: 1; color: rgb(30 41 59 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-toggle { --tw-bg-opacity: 1; background-color: rgb(205 208 214 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-toggle:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-toggle--checked { --tw-bg-opacity: 1; background-color: rgb(25 107 222 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-toggle__icon--check { --tw-text-opacity: 1; color: rgb(25 107 222 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-toggle__icon--x { --tw-text-opacity: 1; color: rgb(156 163 175 / var(--tw-text-opacity, 1)); } .nfd-root .nfd-toggle-field__description { margin-top: 0.75rem; margin-right: 0.5rem; } @media (min-width: 640px) { .nfd-root .nfd-toggle-field__description { margin-right: 10.5rem; margin-top: 0px; } } .nfd-root .nfd-checkbox .nfd-checkbox__input { --tw-text-opacity: 1; color: rgb(25 107 222 / var(--tw-text-opacity, 1)); --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-checkbox .nfd-checkbox__input:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-checkbox .nfd-checkbox__input:checked::before { display: none; } .nfd-root .nfd-radio-group .nfd-radio__description { margin-bottom: 0.5rem; margin-left: 1.75rem; } @media (min-width: 1024px) { .nfd-root .nfd-radio-group .nfd-radio__description { margin-right: 10.5rem; } } .nfd-root .nfd-radio__input { --tw-text-opacity: 1; color: rgb(25 107 222 / var(--tw-text-opacity, 1)); --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .nfd-root .nfd-radio__input:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-radio__input:checked::before { background-color: transparent; } .nfd-root .nfd-select__button:focus { --tw-border-opacity: 1; border-color: rgb(25 107 222 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-select__option--active { --tw-bg-opacity: 1; background-color: rgb(205 208 214 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-select__option--selected { --tw-bg-opacity: 1; background-color: rgb(25 107 222 / var(--tw-bg-opacity, 1)); } .nfd-root .nfd-select-field__spaced .nfd-select-field__select { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .nfd-root .nfd-select-field__spaced .nfd-select__button { width: 6rem; } .nfd-root .nfd-select-field__spaced .nfd-select__options { right: 0px; width: 10rem; } @media (min-width: 1024px) { .nfd-root .nfd-select-field__spaced .nfd-select-field__description { margin-right: 10.5rem; } } .nfd-root .nfd-notifications { z-index: 9991; } .nfd-root .nfd-notifications--bottom-left { left: 12%; } /* mobile menu modal */ .nfd-root .wppbh-app-sidenav-mobile .nfd-modal__close { top: -36px; right: 0px; display: flex; border-radius: 9999px; --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); } .nfd-root .wppbh-app-sidenav-mobile .nfd-modal__close-button { border-radius: 9999px; padding: 0.25rem; --tw-text-opacity: 1; color: rgb(74 85 103 / var(--tw-text-opacity, 1)); } .nfd-root .wppbh-app-sidenav-mobile .nfd-modal__close-button:hover { --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)); } .nfd-root .wppbh-app-sidenav-mobile .nfd-modal__close-button:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-root .nfd-text-input:focus { --tw-border-opacity: 1; border-color: rgb(25 107 222 / var(--tw-border-opacity, 1)); --tw-ring-opacity: 1; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)); } .nfd-sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border-width: 0 !important; } .nfd-pointer-events-none { pointer-events: none !important; } .nfd-fixed { position: fixed !important; } .nfd-absolute { position: absolute !important; } .nfd-relative { position: relative !important; } .nfd-sticky { position: sticky !important; } .nfd-inset-0 { inset: 0px !important; } .nfd-inset-y-0 { top: 0px !important; bottom: 0px !important; } .nfd-bottom-0 { bottom: 0px !important; } .nfd-left-0 { left: 0px !important; } .nfd-right-0 { right: 0px !important; } .nfd-right-3 { right: 0.75rem !important; } .nfd-start-0 { inset-inline-start: 0px !important; } .nfd-top-0 { top: 0px !important; } .nfd-top-1\/2 { top: 50% !important; } .nfd-top-full { top: 100% !important; } .nfd-z-10 { z-index: 10 !important; } .nfd-z-30 { z-index: 30 !important; } .nfd-z-40 { z-index: 40 !important; } .nfd-z-50 { z-index: 50 !important; } .nfd-z-\[9999\] { z-index: 9999 !important; } .nfd-col-span-1 { grid-column: span 1 / span 1 !important; } .nfd-col-span-full { grid-column: 1 / -1 !important; } .nfd-m-0 { margin: 0px !important; } .nfd-m-2 { margin: 0.5rem !important; } .nfd-m-3 { margin: 0.75rem !important; } .nfd-m-auto { margin: auto !important; } .nfd-mx-4 { margin-left: 1rem !important; margin-right: 1rem !important; } .nfd-mx-auto { margin-left: auto !important; margin-right: auto !important; } .nfd-my-0 { margin-top: 0px !important; margin-bottom: 0px !important; } .nfd-my-6 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .nfd--ml-1 { margin-left: -0.25rem !important; } .nfd--mr-14 { margin-right: -3.5rem !important; } .nfd-mb-0 { margin-bottom: 0px !important; } .nfd-mb-1 { margin-bottom: 0.25rem !important; } .nfd-mb-1\.5 { margin-bottom: 0.375rem !important; } .nfd-mb-2 { margin-bottom: 0.5rem !important; } .nfd-mb-2\.5 { margin-bottom: 0.625rem !important; } .nfd-mb-3 { margin-bottom: 0.75rem !important; } .nfd-mb-4 { margin-bottom: 1rem !important; } .nfd-mb-6 { margin-bottom: 1.5rem !important; } .nfd-mb-8 { margin-bottom: 2rem !important; } .nfd-mb-px { margin-bottom: 1px !important; } .nfd-ml-4 { margin-left: 1rem !important; } .nfd-ml-8 { margin-left: 2rem !important; } .nfd-ml-auto { margin-left: auto !important; } .nfd-mr-2 { margin-right: 0.5rem !important; } .nfd-mr-4 { margin-right: 1rem !important; } .nfd-mt-0 { margin-top: 0px !important; } .nfd-mt-1 { margin-top: 0.25rem !important; } .nfd-mt-1\.5 { margin-top: 0.375rem !important; } .nfd-mt-10 { margin-top: 2.5rem !important; } .nfd-mt-2 { margin-top: 0.5rem !important; } .nfd-mt-3 { margin-top: 0.75rem !important; } .nfd-mt-4 { margin-top: 1rem !important; } .nfd-mt-6 { margin-top: 1.5rem !important; } .nfd-mt-8 { margin-top: 2rem !important; } .nfd-mt-auto { margin-top: auto !important; } .nfd-box-content { box-sizing: content-box !important; } .nfd-flex { display: flex !important; } .nfd-inline-flex { display: inline-flex !important; } .nfd-grid { display: grid !important; } .nfd-hidden { display: none !important; } .nfd-aspect-video { aspect-ratio: 16 / 9 !important; } .nfd-h-0 { height: 0px !important; } .nfd-h-10 { height: 2.5rem !important; } .nfd-h-12 { height: 3rem !important; } .nfd-h-16 { height: 4rem !important; } .nfd-h-24 { height: 6rem !important; } .nfd-h-3 { height: 0.75rem !important; } .nfd-h-3\.5 { height: 0.875rem !important; } .nfd-h-4 { height: 1rem !important; } .nfd-h-5 { height: 1.25rem !important; } .nfd-h-6 { height: 1.5rem !important; } .nfd-h-7 { height: 1.75rem !important; } .nfd-h-8 { height: 2rem !important; } .nfd-h-\[130px\] { height: 130px !important; } .nfd-h-\[24px\] { height: 24px !important; } .nfd-h-\[64px\] { height: 64px !important; } .nfd-h-auto { height: auto !important; } .nfd-h-full { height: 100% !important; } .nfd-h-screen { height: 100vh !important; } .nfd-max-h-\[70vh\] { max-height: 70vh !important; } .nfd-min-h-0\.5 { min-height: 0.125rem !important; } .nfd-min-h-\[200px\] { min-height: 200px !important; } .nfd-min-h-\[35vh\] { min-height: 35vh !important; } .nfd-min-h-\[calc\(100dvh-220px\)\] { min-height: calc(100dvh - 220px) !important; } .nfd-w-0 { width: 0px !important; } .nfd-w-1\/4 { width: 25% !important; } .nfd-w-10 { width: 2.5rem !important; } .nfd-w-10\/12 { width: 83.333333% !important; } .nfd-w-12 { width: 3rem !important; } .nfd-w-2 { width: 0.5rem !important; } .nfd-w-3 { width: 0.75rem !important; } .nfd-w-36 { width: 9rem !important; } .nfd-w-4 { width: 1rem !important; } .nfd-w-5 { width: 1.25rem !important; } .nfd-w-56 { width: 14rem !important; } .nfd-w-6 { width: 1.5rem !important; } .nfd-w-7\/12 { width: 58.333333% !important; } .nfd-w-8 { width: 2rem !important; } .nfd-w-\[24px\] { width: 24px !important; } .nfd-w-\[32px\] { width: 32px !important; } .nfd-w-auto { width: auto !important; } .nfd-w-fit { width: fit-content !important; } .nfd-w-full { width: 100% !important; } .nfd-w-max { width: max-content !important; } .nfd-w-screen { width: 100vw !important; } .nfd-min-w-0 { min-width: 0px !important; } .nfd-min-w-60 { min-width: 15rem !important; } .nfd-min-w-\[200px\] { min-width: 200px !important; } .nfd-min-w-full { min-width: 100% !important; } .nfd-max-w-12 { max-width: 3rem !important; } .nfd-max-w-3xl { max-width: 48rem !important; } .nfd-max-w-6 { max-width: 1.5rem !important; } .nfd-max-w-full { max-width: 100% !important; } .nfd-max-w-screen-sm { max-width: 640px !important; } .nfd-max-w-xs { max-width: 20rem !important; } .nfd-flex-1 { flex: 1 1 0% !important; } .nfd-flex-shrink-0 { flex-shrink: 0 !important; } .nfd-shrink { flex-shrink: 1 !important; } .nfd-shrink-0 { flex-shrink: 0 !important; } .nfd-grow { flex-grow: 1 !important; } .nfd-basis-full { flex-basis: 100% !important; } .nfd--translate-x-full { --tw-translate-x: -100% !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd--translate-y-1\/2 { --tw-translate-y: -50% !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd--translate-y-full { --tw-translate-y: -100% !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-translate-x-0 { --tw-translate-x: 0px !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-translate-x-full { --tw-translate-x: 100% !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-translate-y-0 { --tw-translate-y: 0px !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-translate-y-full { --tw-translate-y: 100% !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-scale-100 { --tw-scale-x: 1 !important; --tw-scale-y: 1 !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-scale-95 { --tw-scale-x: .95 !important; --tw-scale-y: .95 !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .nfd-transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } @keyframes nfd-spin { to { transform: rotate(360deg); } } .nfd-animate-spin { animation: nfd-spin 1s linear infinite !important; } .nfd-cursor-pointer { cursor: pointer !important; } .nfd-cursor-wait { cursor: wait !important; } .nfd-list-inside { list-style-position: inside !important; } .nfd-list-disc { list-style-type: disc !important; } .nfd-list-none { list-style-type: none !important; } .nfd-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)) !important; } .nfd-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .nfd-flex-row { flex-direction: row !important; } .nfd-flex-row-reverse { flex-direction: row-reverse !important; } .nfd-flex-col { flex-direction: column !important; } .nfd-flex-wrap { flex-wrap: wrap !important; } .nfd-items-start { align-items: flex-start !important; } .nfd-items-center { align-items: center !important; } .nfd-items-baseline { align-items: baseline !important; } .nfd-justify-start { justify-content: flex-start !important; } .nfd-justify-end { justify-content: flex-end !important; } .nfd-justify-center { justify-content: center !important; } .nfd-justify-between { justify-content: space-between !important; } .nfd-gap-1 { gap: 0.25rem !important; } .nfd-gap-1\.5 { gap: 0.375rem !important; } .nfd-gap-2 { gap: 0.5rem !important; } .nfd-gap-2\.5 { gap: 0.625rem !important; } .nfd-gap-3 { gap: 0.75rem !important; } .nfd-gap-4 { gap: 1rem !important; } .nfd-gap-6 { gap: 1.5rem !important; } .nfd-gap-7 { gap: 1.75rem !important; } .nfd-gap-8 { gap: 2rem !important; } .nfd-gap-x-4 { column-gap: 1rem !important; } .nfd-gap-y-4 { row-gap: 1rem !important; } .nfd-space-y-1 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0 !important; margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))) !important; margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)) !important; } .nfd-space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0 !important; margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))) !important; margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)) !important; } .nfd-space-y-4 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0 !important; margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))) !important; margin-bottom: calc(1rem * var(--tw-space-y-reverse)) !important; } .nfd-space-y-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0 !important; margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))) !important; margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)) !important; } .nfd-space-y-8 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0 !important; margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse))) !important; margin-bottom: calc(2rem * var(--tw-space-y-reverse)) !important; } .nfd-divide-y > :not([hidden]) ~ :not([hidden]) { --tw-divide-y-reverse: 0 !important; border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))) !important; border-bottom-width: calc(1px * var(--tw-divide-y-reverse)) !important; } .nfd-divide-gray-200 > :not([hidden]) ~ :not([hidden]) { --tw-divide-opacity: 1 !important; border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1)) !important; } .nfd-divide-slate-300 > :not([hidden]) ~ :not([hidden]) { --tw-divide-opacity: 1 !important; border-color: rgb(203 213 225 / var(--tw-divide-opacity, 1)) !important; } .nfd-self-center { align-self: center !important; } .nfd-overflow-hidden { overflow: hidden !important; } .nfd-overflow-visible { overflow: visible !important; } .nfd-overflow-y-auto { overflow-y: auto !important; } .nfd-overflow-x-hidden { overflow-x: hidden !important; } .nfd-whitespace-nowrap { white-space: nowrap !important; } .nfd-text-balance { text-wrap: balance !important; } .nfd-rounded-\[5px\] { border-radius: 5px !important; } .nfd-rounded-full { border-radius: 9999px !important; } .nfd-rounded-lg { border-radius: 0.5rem !important; } .nfd-rounded-md { border-radius: 0.375rem !important; } .nfd-rounded-none { border-radius: 0px !important; } .nfd-rounded-xl { border-radius: 0.75rem !important; } .nfd-border { border-width: 1px !important; } .nfd-border-0 { border-width: 0px !important; } .nfd-border-b { border-bottom-width: 1px !important; } .nfd-border-r { border-right-width: 1px !important; } .nfd-border-t { border-top-width: 1px !important; } .nfd-border-solid { border-style: solid !important; } .nfd-border-none { border-style: none !important; } .nfd-border-\[\#CBD5E1\] { --tw-border-opacity: 1 !important; border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)) !important; } .nfd-border-\[\#D1D5DC\] { --tw-border-opacity: 1 !important; border-color: rgb(209 213 220 / var(--tw-border-opacity, 1)) !important; } .nfd-border-\[\#D5D5D5\] { --tw-border-opacity: 1 !important; border-color: rgb(213 213 213 / var(--tw-border-opacity, 1)) !important; } .nfd-border-\[\#DCE2EA\] { --tw-border-opacity: 1 !important; border-color: rgb(220 226 234 / var(--tw-border-opacity, 1)) !important; } .nfd-border-\[\#dbd1d1\] { --tw-border-opacity: 1 !important; border-color: rgb(219 209 209 / var(--tw-border-opacity, 1)) !important; } .nfd-border-line { --tw-border-opacity: 1 !important; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)) !important; } .nfd-border-slate-200 { --tw-border-opacity: 1 !important; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)) !important; } .nfd-border-transparent { border-color: transparent !important; } .nfd-border-r-slate-200 { --tw-border-opacity: 1 !important; border-right-color: rgb(226 232 240 / var(--tw-border-opacity, 1)) !important; } .\!nfd-bg-black { --tw-bg-opacity: 1 !important; background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#212936\] { --tw-bg-opacity: 1 !important; background-color: rgb(33 41 54 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#2c5ead\] { --tw-bg-opacity: 1 !important; background-color: rgb(44 94 173 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#383F4A\] { --tw-bg-opacity: 1 !important; background-color: rgb(56 63 74 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#E2E8F0\] { --tw-bg-opacity: 1 !important; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#E5F6FE\] { --tw-bg-opacity: 1 !important; background-color: rgb(229 246 254 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#ddecff\] { --tw-bg-opacity: 1 !important; background-color: rgb(221 236 255 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-\[\#f0f3f9\] { --tw-bg-opacity: 1 !important; background-color: rgb(240 243 249 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-black { --tw-bg-opacity: 1 !important; background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-canvas { --tw-bg-opacity: 1 !important; background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-gray-200 { --tw-bg-opacity: 1 !important; background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-slate-100 { --tw-bg-opacity: 1 !important; background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-slate-200 { --tw-bg-opacity: 1 !important; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-slate-50 { --tw-bg-opacity: 1 !important; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-slate-600 { --tw-bg-opacity: 1 !important; background-color: rgb(71 85 105 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-transparent { background-color: transparent !important; } .nfd-bg-white { --tw-bg-opacity: 1 !important; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)) !important; } .nfd-bg-opacity-75 { --tw-bg-opacity: 0.75 !important; } .nfd-stroke-current { stroke: currentColor !important; } .nfd-stroke-3 { stroke-width: 3px !important; } .nfd-object-contain { object-fit: contain !important; } .nfd-object-center { object-position: center !important; } .nfd-p-0 { padding: 0px !important; } .nfd-p-1 { padding: 0.25rem !important; } .nfd-p-2 { padding: 0.5rem !important; } .nfd-p-2\.5 { padding: 0.625rem !important; } .nfd-p-4 { padding: 1rem !important; } .nfd-p-5 { padding: 1.25rem !important; } .nfd-p-6 { padding: 1.5rem !important; } .nfd-p-8 { padding: 2rem !important; } .nfd-p-\[4px\] { padding: 4px !important; } .nfd-px-0 { padding-left: 0px !important; padding-right: 0px !important; } .nfd-px-0\.5 { padding-left: 0.125rem !important; padding-right: 0.125rem !important; } .nfd-px-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; } .nfd-px-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; } .nfd-px-4 { padding-left: 1rem !important; padding-right: 1rem !important; } .nfd-px-6 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; } .nfd-px-8 { padding-left: 2rem !important; padding-right: 2rem !important; } .nfd-py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .nfd-py-10 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .nfd-py-12 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .nfd-py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .nfd-py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .nfd-py-6 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .\!nfd-pl-0 { padding-left: 0px !important; } .nfd-pb-0 { padding-bottom: 0px !important; } .nfd-pb-1 { padding-bottom: 0.25rem !important; } .nfd-pb-4 { padding-bottom: 1rem !important; } .nfd-pb-6 { padding-bottom: 1.5rem !important; } .nfd-pb-8 { padding-bottom: 2rem !important; } .nfd-pl-3 { padding-left: 0.75rem !important; } .nfd-pr-2 { padding-right: 0.5rem !important; } .nfd-pr-2\.5 { padding-right: 0.625rem !important; } .nfd-ps-10 { padding-inline-start: 2.5rem !important; } .nfd-ps-3 { padding-inline-start: 0.75rem !important; } .nfd-pt-1 { padding-top: 0.25rem !important; } .nfd-pt-2 { padding-top: 0.5rem !important; } .nfd-pt-28 { padding-top: 7rem !important; } .nfd-text-left { text-align: left !important; } .nfd-text-center { text-align: center !important; } .nfd-text-right { text-align: right !important; } .nfd-text-2xl { font-size: 1.5rem !important; } .nfd-text-\[13px\] { font-size: 13px !important; } .nfd-text-\[14px\] { font-size: 14px !important; } .nfd-text-base { font-size: 1rem !important; } .nfd-text-sm { font-size: .8125rem !important; } .nfd-text-tiny { font-size: .875rem !important; } .nfd-text-xl { font-size: 1.25rem !important; } .nfd-font-bold { font-weight: 700 !important; } .nfd-font-medium { font-weight: 500 !important; } .nfd-font-normal { font-weight: 400 !important; } .nfd-font-semibold { font-weight: 600 !important; } .nfd-text-\[\#000000\] { --tw-text-opacity: 1 !important; color: rgb(0 0 0 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#008112\] { --tw-text-opacity: 1 !important; color: rgb(0 129 18 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#111729\] { --tw-text-opacity: 1 !important; color: rgb(17 23 41 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#18181B\] { --tw-text-opacity: 1 !important; color: rgb(24 24 27 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#196BDE\] { --tw-text-opacity: 1 !important; color: rgb(25 107 222 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#196CDF\] { --tw-text-opacity: 1 !important; color: rgb(25 108 223 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#196bde\] { --tw-text-opacity: 1 !important; color: rgb(25 107 222 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#1CD67D\] { --tw-text-opacity: 1 !important; color: rgb(28 214 125 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#1E293B\] { --tw-text-opacity: 1 !important; color: rgb(30 41 59 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#212936\] { --tw-text-opacity: 1 !important; color: rgb(33 41 54 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#404040\] { --tw-text-opacity: 1 !important; color: rgb(64 64 64 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#4A5565\] { --tw-text-opacity: 1 !important; color: rgb(74 85 101 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#4A5567\] { --tw-text-opacity: 1 !important; color: rgb(74 85 103 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#d61c1c\] { --tw-text-opacity: 1 !important; color: rgb(214 28 28 / var(--tw-text-opacity, 1)) !important; } .nfd-text-\[\#e10001\] { --tw-text-opacity: 1 !important; color: rgb(225 0 1 / var(--tw-text-opacity, 1)) !important; } .nfd-text-body { --tw-text-opacity: 1 !important; color: rgb(74 85 103 / var(--tw-text-opacity, 1)) !important; } .nfd-text-gray-500 { --tw-text-opacity: 1 !important; color: rgb(107 114 128 / var(--tw-text-opacity, 1)) !important; } .nfd-text-gray-900 { --tw-text-opacity: 1 !important; color: rgb(17 24 39 / var(--tw-text-opacity, 1)) !important; } .nfd-text-primary { --tw-text-opacity: 1 !important; color: rgb(25 107 222 / var(--tw-text-opacity, 1)) !important; } .nfd-text-primary-500 { --tw-text-opacity: 1 !important; color: rgb(242 113 33 / var(--tw-text-opacity, 1)) !important; } .nfd-text-slate-400 { --tw-text-opacity: 1 !important; color: rgb(148 163 184 / var(--tw-text-opacity, 1)) !important; } .nfd-text-slate-500 { --tw-text-opacity: 1 !important; color: rgb(100 116 139 / var(--tw-text-opacity, 1)) !important; } .nfd-text-slate-600 { --tw-text-opacity: 1 !important; color: rgb(71 85 105 / var(--tw-text-opacity, 1)) !important; } .nfd-text-slate-800 { --tw-text-opacity: 1 !important; color: rgb(30 41 59 / var(--tw-text-opacity, 1)) !important; } .nfd-text-slate-900 { --tw-text-opacity: 1 !important; color: rgb(15 23 42 / var(--tw-text-opacity, 1)) !important; } .nfd-text-title { --tw-text-opacity: 1 !important; color: rgb(15 23 42 / var(--tw-text-opacity, 1)) !important; } .nfd-text-white { --tw-text-opacity: 1 !important; color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important; } .nfd-line-through { text-decoration-line: line-through !important; } .nfd-no-underline { text-decoration-line: none !important; } .nfd-opacity-0 { opacity: 0 !important; } .nfd-opacity-100 { opacity: 1 !important; } .nfd-opacity-25 { opacity: 0.25 !important; } .nfd-opacity-30 { opacity: 0.3 !important; } .nfd-opacity-75 { opacity: 0.75 !important; } .nfd-shadow { --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1) !important; --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color) !important; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; } .nfd-shadow-lg { --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1) !important; --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color) !important; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; } .nfd-shadow-none { --tw-shadow: 0 0 #0000 !important; --tw-shadow-colored: 0 0 #0000 !important; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; } .nfd-shadow-amber-700\/30 { --tw-shadow-color: rgb(180 83 9 / 0.3) !important; --tw-shadow: var(--tw-shadow-colored) !important; } .nfd-outline-none { outline: 2px solid transparent !important; outline-offset: 2px !important; } .nfd-ring-1 { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important; --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important; box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important; } .nfd-ring-black { --tw-ring-opacity: 1 !important; --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1)) !important; } .nfd-ring-opacity-5 { --tw-ring-opacity: 0.05 !important; } .nfd-grayscale { --tw-grayscale: grayscale(100%) !important; filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important; } .nfd-transition { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 150ms !important; } .nfd-transition-all { transition-property: all !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 150ms !important; } .nfd-transition-opacity { transition-property: opacity !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 150ms !important; } .nfd-delay-200 { transition-delay: 200ms !important; } .nfd-duration-100 { transition-duration: 100ms !important; } .nfd-duration-1000 { transition-duration: 1000ms !important; } .nfd-duration-150 { transition-duration: 150ms !important; } .nfd-duration-200 { transition-duration: 200ms !important; } .nfd-duration-300 { transition-duration: 300ms !important; } .nfd-duration-75 { transition-duration: 75ms !important; } .nfd-ease-in { transition-timing-function: cubic-bezier(0.4, 0, 1, 1) !important; } .nfd-ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; } .nfd-ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1) !important; } .nfd-\@container\/nfd-image-import { container-type: inline-size !important; container-name: nfd-image-import !important; } /* Configs */ /* Titles */ /* Links */ /* Buttons */ /* Toggle / Toggle Field */ /* Checkbox */ /* Radio Input */ /* Select Field */ /* Notifications */ /* Modal */ /* Text Input Field */ .odd\:nfd-bg-white:nth-child(odd) { --tw-bg-opacity: 1 !important; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)) !important; } .even\:nfd-bg-slate-50:nth-child(even) { --tw-bg-opacity: 1 !important; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)) !important; } .hover\:\!nfd-bg-black:hover { --tw-bg-opacity: 1 !important; background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1)) !important; } .hover\:nfd-bg-\[\#ccdcf4\]:hover { --tw-bg-opacity: 1 !important; background-color: rgb(204 220 244 / var(--tw-bg-opacity, 1)) !important; } .hover\:nfd-bg-slate-50:hover { --tw-bg-opacity: 1 !important; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)) !important; } .hover\:nfd-text-primary:hover { --tw-text-opacity: 1 !important; color: rgb(25 107 222 / var(--tw-text-opacity, 1)) !important; } .hover\:nfd-text-slate-500:hover { --tw-text-opacity: 1 !important; color: rgb(100 116 139 / var(--tw-text-opacity, 1)) !important; } .hover\:nfd-text-slate-900:hover { --tw-text-opacity: 1 !important; color: rgb(15 23 42 / var(--tw-text-opacity, 1)) !important; } .hover\:nfd-shadow-md:hover { --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1) !important; --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color) !important; box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; } .focus\:nfd-border-transparent:focus { border-color: transparent !important; } .focus\:nfd-outline-none:focus { outline: 2px solid transparent !important; outline-offset: 2px !important; } .focus\:nfd-ring-0:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important; --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important; box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important; } .focus\:nfd-ring-1:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important; --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important; box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important; } .focus\:nfd-ring-2:focus { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important; --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important; box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important; } .focus\:nfd-ring-inset:focus { --tw-ring-inset: inset !important; } .focus\:nfd-ring-primary:focus { --tw-ring-opacity: 1 !important; --tw-ring-color: rgb(25 107 222 / var(--tw-ring-opacity, 1)) !important; } .focus\:nfd-ring-primary-500:focus { --tw-ring-opacity: 1 !important; --tw-ring-color: rgb(242 113 33 / var(--tw-ring-opacity, 1)) !important; } .focus\:nfd-ring-transparent:focus { --tw-ring-color: transparent !important; } .focus\:nfd-ring-offset-1:focus { --tw-ring-offset-width: 1px !important; } .focus\:nfd-ring-offset-2:focus { --tw-ring-offset-width: 2px !important; } .focus\:nfd-ring-offset-transparent:focus { --tw-ring-offset-color: transparent !important; } .nfd-group:hover .group-hover\:nfd-text-slate-500 { --tw-text-opacity: 1 !important; color: rgb(100 116 139 / var(--tw-text-opacity, 1)) !important; } .nfd-group:hover .group-hover\:nfd-opacity-100 { opacity: 1 !important; } .nfd-group.nfd-appbar-item--active .group-\[\.nfd-appbar-item--active\]\:nfd-bg-\[\#DBF1FC80\] { background-color: #DBF1FC80 !important; } .nfd-group.nfd-appbar-item .group-\[\.nfd-appbar-item\]\:\!nfd-bg-transparent { background-color: transparent !important; } .nfd-group.nfd-appbar-item--active .group-\[\.nfd-appbar-item--active\]\:nfd-font-bold { font-weight: 700 !important; } .nfd-group.nfd-appbar-item--active .group-\[\.nfd-appbar-item--active\]\:nfd-text-\[var\(--color-primary\)\] { color: var(--color-primary) !important; } .data-\[closed\]\:nfd-scale-95[data-closed] { --tw-scale-x: .95 !important; --tw-scale-y: .95 !important; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; } .data-\[closed\]\:nfd-opacity-0[data-closed] { opacity: 0 !important; } .data-\[enter\]\:nfd-duration-300[data-enter] { transition-duration: 300ms !important; } .data-\[leave\]\:nfd-duration-200[data-leave] { transition-duration: 200ms !important; } @media (max-width: 1378px) { .max-\[1378px\]\:nfd-hidden { display: none !important; } } @media (max-width: 781px) { .max-\[781px\]\:nfd-flex-col { flex-direction: column !important; } } @media (max-width: 575px) { .max-\[575px\]\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .max-\[575px\]\:nfd-items-start { align-items: flex-start !important; } } @media (min-width: 400px) { .min-\[400px\]\:nfd-w-auto { width: auto !important; } } @media (min-width: 540px) { .min-\[540px\]\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (min-width: 575px) { .min-\[575px\]\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (min-width: 600px) { .min-\[600px\]\:nfd-top-\[46px\] { top: 46px !important; } } @media (min-width: 640px) { .sm\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (min-width: 768px) { .md\:nfd-grow-0 { flex-grow: 0 !important; } .md\:nfd-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)) !important; } .md\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .md\:nfd-flex-row { flex-direction: row !important; } } @media (min-width: 782px) { .min-\[782px\]\:nfd-mb-6 { margin-bottom: 1.5rem !important; } } @media (min-width: 783px) { .min-\[783px\]\:nfd-block { display: block !important; } .min-\[783px\]\:nfd-flex { display: flex !important; } .min-\[783px\]\:nfd-gap-6 { gap: 1.5rem !important; } .min-\[783px\]\:nfd-p-0 { padding: 0px !important; } .min-\[783px\]\:nfd-p-8 { padding: 2rem !important; } } @media (min-width: 960px) { .min-\[960px\]\:nfd-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } } @media (min-width: 1024px) { .lg\:nfd-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } } @media (min-width: 1060px) { .min-\[1060px\]\:nfd-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (min-width: 1280px) { .xl\:nfd-col-span-2 { grid-column: span 2 / span 2 !important; } .xl\:nfd-mt-0 { margin-top: 0px !important; } .xl\:nfd-w-5\/12 { width: 41.666667% !important; } .xl\:nfd-w-7\/12 { width: 58.333333% !important; } .xl\:nfd-max-w-screen-lg { max-width: 1024px !important; } .xl\:nfd-max-w-screen-xl { max-width: 1280px !important; } .xl\:nfd-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } .xl\:nfd-flex-row { flex-direction: row !important; } .xl\:nfd-items-center { align-items: center !important; } } @media (min-width: 1360px) { .min-\[1360px\]\:nfd-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } } @media (min-width: 1536px) { .\32xl\:nfd-col-span-2 { grid-column: span 2 / span 2 !important; } .\32xl\:nfd-mt-0 { margin-top: 0px !important; } .\32xl\:nfd-max-w-screen-2xl { max-width: 1536px !important; } .\32xl\:nfd-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } .\32xl\:nfd-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .\32xl\:nfd-gap-12 { gap: 3rem !important; } } .\[\&\.active\]\:nfd-bg-\[\#E2E8F0\].active { --tw-bg-opacity: 1 !important; background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)) !important; } .\[\&\.active\]\:nfd-text-title.active { --tw-text-opacity: 1 !important; color: rgb(15 23 42 / var(--tw-text-opacity, 1)) !important; } .nfd-root .nfd-modal.no-overlay .nfd-modal__overlay{display:none}.nfd-root .nfd-feature-upsell.hide-html .nfd-flex{background-color:hsla(0,0%,100%,.5)}.nfd-root .nfd-button-xl{padding:1rem 1.75rem !important;font-size:1.05rem !important} .newfold-marketplace-isloading{overflow-x:hidden}.filterbar-skeleton{margin-bottom:1.8rem}.marketplace-item-skeleton{overflow:hidden}.marketplace-item-skeleton .marketplace-item-img-skeleton{aspect-ratio:16/9}.marketplace-item-skeleton .skeleton-item-body{margin:16px 10px}.marketplace-item-skeleton .marketplace-item-title-skeleton{margin-bottom:16px}.marketplace-item-skeleton .marketplace-item-desc-skeleton{margin-bottom:6px}.marketplace-item-skeleton .marketplace-item-button-skeleton{margin-top:20px} .newfold-marketplace-skeleton{position:relative;background-color:rgba(160,170,192,.35);overflow:hidden;border-radius:4px}.newfold-marketplace-skeleton::after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translateX(-100%);background-image:linear-gradient(90deg, rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, 0.2) 20%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0));animation:marketplace-skeleton 3s infinite;content:""}@keyframes marketplace-skeleton{100%{transform:translateX(100%)}} .wppbh .error-card{background-color:var(--color-error-light);border-color:var(--color-error);border-width:1px 1px 1px 4px;border-style:solid}