diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ceb6af2c..73932100d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format follows [Keep a Changelog] (https://keepachangelog.com/en/1.1.0/). - **"View details" shows a banner and the readme's tabs** (#1714). Description, Installation, FAQ, Screenshots and Other notes come from the offered release's `readme.txt`, and the changelog renders its Markdown instead of printing it raw. - **"View details" speaks Portuguese and opens screenshots in place** (#1716). The tabs and banner follow the viewer's language when the plugin ships a translation (`languages/readme-pt_BR.txt`), and a screenshot opens in an overlay with arrows, swipe and zoom instead of a new tab. - **Choice fields take one option per row, and every field can carry limits** (#1729). Options may contain commas; a choice field can shuffle its options per participant; a checkbox can cap how many are ticked; text and textarea take a minimum and maximum length (server ceilings 255 and 2,000) with a live counter; number and date take a range. The participant sees each limit, and the editor says what each type is for. +- **Quiz questions are scored per field** (#1730). Each field can be scored or left out; choices by correct option(s), a checkbox only on the exact set, or by points per option; text when answered; number and date by a correct range. "Show which answers were correct" now works. New tokens `{{correct_count}}` and `{{question_count}}`; existing forms score as before. ### Changed diff --git a/assets/css/ffc-admin-utilities.css b/assets/css/ffc-admin-utilities.css index 6eb8e360b..d143a2b91 100644 --- a/assets/css/ffc-admin-utilities.css +++ b/assets/css/ffc-admin-utilities.css @@ -54,13 +54,6 @@ SPACING UTILITIES ========================================================================== */ -/** - * Margin top utilities - */ -.ffc-mt-2xs { - margin-top: var(--ffc-spacing-2xs); -} - /** * Margin bottom utilities */ diff --git a/assets/css/ffc-admin-utilities.min.css b/assets/css/ffc-admin-utilities.min.css index bdc800464..3bde5b0bc 100644 --- a/assets/css/ffc-admin-utilities.min.css +++ b/assets/css/ffc-admin-utilities.min.css @@ -1,2 +1,2 @@ -.ffc-w100{width:100%}.ffc-mt-2xs{margin-top:var(--ffc-spacing-2xs)}.ffc-mb-2xs{margin-bottom:var(--ffc-spacing-2xs)}.ffc-mt-md{margin-top:var(--ffc-spacing-md)}.ffc-mt-xl{margin-top:var(--ffc-spacing-xl)}.ffc-mt-2xl{margin-top:var(--ffc-spacing-2xl)}.ffc-mb-xl{margin-bottom:var(--ffc-spacing-xl)}.ffc-mt-sm{margin-top:var(--ffc-spacing-sm)}.ffc-ml-xl{margin-left:var(--ffc-spacing-xl)}.ffc-inline{display:inline}.ffc-list-disc{list-style:disc;margin-left:var(--ffc-spacing-2xl)}.ffc-block-label{display:block;font-weight:600;margin-bottom:var(--ffc-spacing-2xs)}.ffc-input-small{width:80px}.ffc-input-readonly{color:var(--ffc-text);background-color:var(--ffc-bg-alt);cursor:not-allowed}.ffc-input-group{margin-bottom:var(--ffc-spacing-xl)}.ffc-admin-flex-row{display:flex;gap:var(--ffc-spacing-md);align-items:center}.ffc-flex-wrap{flex-wrap:wrap}.ffc-action-group{display:flex;gap:var(--ffc-spacing-xs)}.ffc-text-success{color:var(--ffc-success);font-weight:600}.ffc-text-error{color:var(--ffc-danger);font-weight:600}.ffc-text-info{color:var(--ffc-primary);font-weight:600}.ffc-text-warning{color:var(--ffc-warning-text);font-weight:600}.ffc-monospace{font-family:'SF Mono',Monaco,Consolas,monospace} +.ffc-w100{width:100%}.ffc-mb-2xs{margin-bottom:var(--ffc-spacing-2xs)}.ffc-mt-md{margin-top:var(--ffc-spacing-md)}.ffc-mt-xl{margin-top:var(--ffc-spacing-xl)}.ffc-mt-2xl{margin-top:var(--ffc-spacing-2xl)}.ffc-mb-xl{margin-bottom:var(--ffc-spacing-xl)}.ffc-mt-sm{margin-top:var(--ffc-spacing-sm)}.ffc-ml-xl{margin-left:var(--ffc-spacing-xl)}.ffc-inline{display:inline}.ffc-list-disc{list-style:disc;margin-left:var(--ffc-spacing-2xl)}.ffc-block-label{display:block;font-weight:600;margin-bottom:var(--ffc-spacing-2xs)}.ffc-input-small{width:80px}.ffc-input-readonly{color:var(--ffc-text);background-color:var(--ffc-bg-alt);cursor:not-allowed}.ffc-input-group{margin-bottom:var(--ffc-spacing-xl)}.ffc-admin-flex-row{display:flex;gap:var(--ffc-spacing-md);align-items:center}.ffc-flex-wrap{flex-wrap:wrap}.ffc-action-group{display:flex;gap:var(--ffc-spacing-xs)}.ffc-text-success{color:var(--ffc-success);font-weight:600}.ffc-text-error{color:var(--ffc-danger);font-weight:600}.ffc-text-info{color:var(--ffc-primary);font-weight:600}.ffc-text-warning{color:var(--ffc-warning-text);font-weight:600}.ffc-monospace{font-family:'SF Mono',Monaco,Consolas,monospace} /*# sourceMappingURL=ffc-admin-utilities.min.css.map */ \ No newline at end of file diff --git a/assets/css/ffc-admin.css b/assets/css/ffc-admin.css index 4afa3751f..b5911a486 100644 --- a/assets/css/ffc-admin.css +++ b/assets/css/ffc-admin.css @@ -133,25 +133,56 @@ gap: var(--ffc-spacing-xs); } +/* A flex row rather than a grid: the quiz controls (#1730) come and go + between the text and the remove button. */ .ffc-choice-row { - display: grid; - grid-template-columns: 20px minmax(0, 1fr) 32px; + display: flex; gap: var(--ffc-spacing-sm); align-items: center; margin: 0; } .ffc-choice-handle { + flex: 0 0 20px; cursor: move; color: var(--ffc-text-muted); } .ffc-choice-input { - width: 100%; + flex: 1 1 auto; + min-width: 0; box-sizing: border-box; } +.ffc-choice-quiz { + display: inline-flex; + flex: 0 0 auto; + align-items: center; + gap: var(--ffc-spacing-2xs); + white-space: nowrap; +} + +/* The field's quiz settings (#1730): set apart from the field's own. */ +.ffc-field-quiz { + margin-top: var(--ffc-spacing-lg); + padding-top: var(--ffc-spacing-md); + border-top: 1px dashed var(--ffc-border); +} + +.ffc-field-quiz-head { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--ffc-spacing-sm) var(--ffc-spacing-lg); +} + +.ffc-field-quiz-body .ffc-quiz-help { + flex-basis: 100%; + margin: 0; +} + .ffc-choice-remove { + flex: 0 0 32px; display: inline-flex; align-items: center; justify-content: center; diff --git a/assets/css/ffc-admin.min.css b/assets/css/ffc-admin.min.css index 01c897a00..a3008db52 100644 --- a/assets/css/ffc-admin.min.css +++ b/assets/css/ffc-admin.min.css @@ -1,2 +1,2 @@ -#ffc-fields-container{margin-bottom:var(--ffc-spacing-xl);max-width:100%}.ffc-field-row{background:var(--ffc-bg-card);border:1px solid var(--ffc-border);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-lg);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-sm)}.ffc-field-row:hover{box-shadow:var(--ffc-shadow-md)}.ffc-field-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--ffc-spacing-xl);padding-bottom:var(--ffc-spacing-md);border-bottom:1px solid var(--ffc-border-light)}.ffc-field-title{margin-left:var(--ffc-spacing-sm)}.ffc-field-row-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--ffc-spacing-xl);align-items:end}.ffc-field-row-grid .ffc-grid-item{display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-field-row-grid input[type=text],.ffc-field-row-grid select{width:100%;box-sizing:border-box;height:30px}.ffc-req-label{display:flex;align-items:center;gap:var(--ffc-spacing-xs);padding-bottom:var(--ffc-spacing-sm)}.ffc-flex-center{display:flex;align-items:center;justify-content:center}.ffc-options-field{margin-top:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);padding:var(--ffc-spacing-lg);border-radius:var(--ffc-radius-sm);border:1px dashed var(--ffc-border)}.ffc-options-desc{margin:0 0 var(--ffc-spacing-2xs);font-weight:700;color:var(--ffc-primary)}.ffc-field-row.ffc-field-row-required-tag{border-left-color:var(--ffc-warning)}.ffc-required-tag-badge{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:var(--ffc-spacing-md);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);border-radius:var(--ffc-radius-sm);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);font-size:var(--ffc-font-size-xs);font-weight:600}.ffc-field-row-required-tag input[readonly]{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}@media (forced-colors:active){.ffc-field-row-required-tag input[readonly],.ffc-required-tag-badge{border:1px solid CanvasText}}.ffc-type-desc{margin:var(--ffc-spacing-sm) 0 0}.ffc-choice-list{list-style:none;margin:0 0 var(--ffc-spacing-sm);padding:0;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-choice-row{display:grid;grid-template-columns:20px minmax(0,1fr) 32px;gap:var(--ffc-spacing-sm);align-items:center;margin:0}.ffc-choice-handle{cursor:move;color:var(--ffc-text-muted)}.ffc-choice-input{width:100%;box-sizing:border-box}.ffc-choice-remove{display:inline-flex;align-items:center;justify-content:center;min-height:32px;color:var(--ffc-danger)}.ffc-field-settings{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm) var(--ffc-spacing-xl);margin-top:var(--ffc-spacing-lg)}.ffc-field-setting{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm)}.ffc-field-type-menu{background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-md);min-width:200px;z-index:var(--ffc-z-overlay)}.ffc-field-type-menu .ffc-menu-header{padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);font-weight:600;border-bottom:1px solid var(--ffc-border-light)}.ffc-field-type-menu ul{list-style:none;margin:0;padding:var(--ffc-spacing-xs) 0}.ffc-field-type-menu li{margin:0}.ffc-field-type-option{display:block;width:100%;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:0;background:0 0;color:var(--ffc-text);font:inherit;text-align:left;cursor:pointer}.ffc-field-type-option:focus-visible,.ffc-field-type-option:hover{background:var(--ffc-bg-alt)}.ffc-builder-actions{margin-top:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-md);border-top:1px solid var(--ffc-border-light)}#ffc_pdf_layout{width:100%;height:450px;font-family:Consolas,Monaco,monospace;font-size:var(--ffc-font-size-sm);background:#2c3338;color:#f0f0f1;padding:var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm);line-height:1.5;border:1px solid #1e1e1e}#ffc_generated_list{background:var(--ffc-bg-card);font-family:'Courier New',Courier,monospace;width:100%;min-height:150px;border:1px solid var(--ffc-gray-400);font-size:var(--ffc-font-size-xs)}.ffc-gen-status{margin-left:var(--ffc-spacing-md);color:var(--ffc-primary);font-weight:600}.ffc-textarea-mono{font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-xs)}.ffc-h80{min-height:80px}.ffc-h120{min-height:120px}.post-type-ffc_form .wrap{max-width:none!important}.ffc-table-responsive{overflow-x:auto;margin-top:var(--ffc-spacing-2xl);width:100%}.ffc-table-responsive table.wp-list-table{width:100%!important;max-width:100%!important;table-layout:fixed;border-collapse:collapse}.ffc-table-responsive table.wp-list-table td.column-data,.ffc-table-responsive table.wp-list-table td.column-email{overflow-wrap:break-word}.ffc-table-responsive td.column-actions{white-space:normal}@media screen and (max-width:782px){.ffc-table-responsive table.wp-list-table{table-layout:auto}.ffc-table-responsive table.wp-list-table td.column-actions,.ffc-table-responsive table.wp-list-table th.column-actions{white-space:normal}.ffc-table-responsive .button{display:inline-block;margin:var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-2xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);line-height:1.5}}.ffc-danger-zone{margin-top:40px;padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-card);border:2px solid var(--ffc-danger);border-radius:var(--ffc-radius-sm)}.ffc-danger-zone h2{color:var(--ffc-danger);margin-top:0}.ffc-shortcode-box{background:var(--ffc-bg-alt);padding:var(--ffc-spacing-md);border-radius:var(--ffc-radius-sm);border:1px solid var(--ffc-border)}.ffc-shortcode-copy{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);margin:var(--ffc-spacing-md) 0}.ffc-shortcode-display{display:block;flex:1 1 100%;min-width:0;padding:var(--ffc-spacing-sm);background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border-light);margin:0;user-select:all;font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-sm);word-break:break-all}#ffc_form_summary .ffc-facts__value{text-align:right}.ffc-tips-list{list-style:disc;padding-left:var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-tips-list li{margin-bottom:var(--ffc-spacing-2xs)}.ffc-sort-handle{cursor:move;color:var(--ffc-gray-300);padding:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xl);display:flex;align-items:center}.ffc-sort-handle:hover{color:var(--ffc-primary)}.ffc-sort-handle .ffc-field-title{color:var(--ffc-text)}.ffc-remove-field{color:var(--ffc-danger);cursor:pointer;text-decoration:none;font-size:var(--ffc-font-size-sm)}.ffc-remove-field:hover{color:var(--ffc-danger-text)}.ffc-highlight-row{background:var(--ffc-primary-light)}.ffc-label-accent{color:var(--ffc-primary);font-weight:700}@media (max-width:782px){.ffc-field-row-grid{grid-template-columns:1fr}.ffc-admin-flex-row{flex-direction:column;align-items:flex-start}}.ffc-copy-magic-link:hover{background:var(--ffc-primary-hover);color:var(--ffc-text-on-primary);border-color:var(--ffc-primary-hover)}.ffc-admin-page .form-table td a[href*="token="]{display:inline-block;max-width:100%;word-break:break-all;color:var(--ffc-link);text-decoration:underline}.ffc-admin-page .form-table td a[href*="token="]:hover{color:var(--ffc-link-hover)}.ffc-admin-page .form-table .description strong{color:var(--ffc-text)}.ffc-migrations-settings-wrap{max-width:1500px}.ffc-migration-warning{background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);padding:var(--ffc-spacing-lg);margin:var(--ffc-spacing-xl) 0}.ffc-migration-warning p{margin:0}.ffc-action-group{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);align-items:center}.ffc-template-loader{display:flex;gap:var(--ffc-spacing-xs);align-items:center}.ffc-action-group .button,.ffc-template-loader .button{display:inline-flex;align-items:center}.ffc-autosave-status{display:inline-block;margin-left:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-style:italic;vertical-align:middle}.ffc-autosave-status.ffc-saved{color:var(--ffc-success)}.ffc-autosave-status.ffc-error{color:var(--ffc-danger)}.column-ffc_certificates{width:150px}.ffc-view-as-user{color:var(--ffc-link);text-decoration:none;font-size:var(--ffc-font-size-xs)}.ffc-view-as-user:hover{color:var(--ffc-link-hover);text-decoration:underline}.ffc-empty-value{color:var(--ffc-text-light)}.ffc-placeholder{background:var(--ffc-primary-light);border:1px dashed var(--ffc-primary);border-radius:var(--ffc-radius-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);color:var(--ffc-primary);font-family:"Courier New",monospace;font-size:var(--ffc-font-size-sm);white-space:nowrap;display:inline-block;cursor:default;user-select:none}.ffc-placeholder:hover{background:var(--ffc-info-bg);border-color:var(--ffc-primary-hover)}.ffc-code-editor-wrapper .CodeMirror{border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs);height:auto;min-height:260px;font-size:var(--ffc-font-size-sm);font-family:Consolas,Monaco,"Courier New",monospace}.ffc-code-editor-wrapper .CodeMirror-scroll{min-height:260px}.ffc-code-editor-wrapper .cm-ffc-placeholder-token{background:var(--ffc-primary-light);color:var(--ffc-primary);border-radius:2px;padding:0 var(--ffc-spacing-3xs);font-weight:600}.ffc-code-editor-notice{margin-top:var(--ffc-spacing-xs);color:var(--ffc-text-light);font-style:italic}.ffc-badge-info{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-badge-warning{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-badge-error{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-badge-debug{background:var(--ffc-gray-200);color:var(--ffc-gray-700)}.ffc-ml-20{margin-left:var(--ffc-spacing-2xl)}.ffc-m-2xs-0{margin:var(--ffc-spacing-2xs) 0 0 0}.ffc-restriction-label{display:block;margin:var(--ffc-spacing-md) 0}.ffc-global-default{padding:0 var(--ffc-spacing-2xs);border-radius:var(--ffc-radius-xs);background:var(--ffc-primary-light);color:var(--ffc-primary);font-weight:600}.ffc-status-pill{display:inline-block;padding:3px var(--ffc-spacing-md);border-radius:11px;font-size:var(--ffc-font-size-xs);font-weight:500;line-height:1.5}.ffc-status-pill--success{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-status-pill--warning{background:var(--ffc-warning-light);color:var(--ffc-warning-text)}.ffc-status-pill--info{background:var(--ffc-info-light);color:var(--ffc-info)}.ffc-collapsed{display:none!important}.ffc-csv-public-share{display:flex;gap:var(--ffc-spacing-sm);align-items:center}.ffc-csv-public-share input.large-text{flex:1;min-width:0}.ffc-csv-audit-summary{display:flex;gap:var(--ffc-spacing-lg);flex-wrap:wrap;margin:0 0 var(--ffc-spacing-lg)}.ffc-csv-audit-card{flex:1 1 140px;min-width:140px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-alt);border-left:4px solid var(--ffc-gray-400)}.ffc-csv-audit-card.is-success{border-left-color:var(--ffc-success);background:var(--ffc-success-light)}.ffc-csv-audit-card.is-fail{border-left-color:var(--ffc-danger);background:var(--ffc-danger-light)}.ffc-csv-audit-card-label{display:block;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--ffc-spacing-2xs)}.ffc-csv-audit-card-value{display:block;font-size:var(--ffc-font-size-2xl);font-weight:700;line-height:1.1;color:var(--ffc-text)}.ffc-csv-audit-card-hint{display:block;font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted);margin-top:var(--ffc-spacing-xs);line-height:1.3}.ffc-warning-text{color:var(--ffc-danger-text)}.ffc-dashboard-header{display:flex;align-items:center;justify-content:space-between}.ffc-log-summary{cursor:pointer;color:var(--ffc-link)}.ffc-log-pre{font-size:var(--ffc-font-size-2xs);max-height:150px;overflow:auto;margin-top:var(--ffc-spacing-sm);padding:var(--ffc-spacing-sm);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light)}.ffc-activity-card{margin-top:var(--ffc-spacing-2xl);max-width:100%}.ffc-uppercase{text-transform:uppercase}.ffc-time-description{margin-left:var(--ffc-spacing-2xl);margin-top:var(--ffc-spacing-2xs)}.ffc-list-disc{list-style:disc}.ffc-checkbox-label{display:block;margin-bottom:var(--ffc-spacing-sm)}fieldset .ffc-checkbox-label,td .ffc-restriction-label{display:block}.ffc-info-card{background:var(--ffc-info-bg);border-left:4px solid var(--ffc-info-border)}#ffc-preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999999;opacity:0;transition:opacity .2s ease}#ffc-preview-modal.ffc-preview-visible{opacity:1}.ffc-preview-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--ffc-bg-overlay)}.ffc-preview-container{position:relative;z-index:var(--ffc-z-raised);display:flex;flex-direction:column;width:90%;max-width:900px;height:85vh;margin:5vh auto;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-lg);overflow:hidden}.ffc-preview-header{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);background:var(--ffc-inverse-surface);color:var(--ffc-inverse-on-surface);flex-shrink:0}.ffc-preview-header h2{margin:0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-inverse-on-surface)}.ffc-preview-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:28px;line-height:1;cursor:pointer;padding:0 var(--ffc-spacing-2xs);transition:color .15s}.ffc-preview-close:hover{color:var(--ffc-inverse-on-surface)}.ffc-preview-note{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);background:var(--ffc-info-bg);border-bottom:1px solid var(--ffc-border);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);flex-shrink:0}.ffc-preview-body{flex:1;overflow:auto;background:var(--ffc-bg-alt);padding:var(--ffc-spacing-2xl);display:flex;align-items:center;justify-content:center}.ffc-preview-stage{position:relative;flex:0 0 auto;overflow:hidden;box-shadow:var(--ffc-shadow-md)}#ffc-preview-iframe{display:block;border:1px solid var(--ffc-border-light);background:var(--ffc-bg)}@media (max-width:782px){.ffc-preview-container{width:98%;height:90vh;margin:3vh auto}.ffc-preview-body{padding:var(--ffc-spacing-md)}}@media (prefers-reduced-motion:reduce){#ffc-preview-modal{transition:none}.ffc-preview-close{transition:none}}.column-ffc_form_id{width:60px;text-align:center}.column-ffc_shortcode{width:240px}.column-ffc_submissions{width:100px}.ffc-shortcode-cell{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs)}.ffc-shortcode-code{font-size:var(--ffc-font-size-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);user-select:all}.ffc-copy-shortcode{background:0 0;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs);cursor:pointer;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-2xs);line-height:1;color:var(--ffc-text-muted)}.ffc-copy-shortcode:hover{color:var(--ffc-primary);border-color:var(--ffc-primary)}.ffc-copy-shortcode .ffc-icon-copy::before{margin-right:0}.ffc-copy-shortcode.is-copied{color:var(--ffc-success-text);border-color:var(--ffc-success)}.ffc-input-invalid{border-color:var(--ffc-danger)!important;box-shadow:0 0 0 1px var(--ffc-danger)!important}.ffc-input-invalid:focus{border-color:var(--ffc-danger)!important;box-shadow:0 0 0 1px var(--ffc-danger),0 0 2px 1px var(--ffc-danger-hover)!important}p.ffc-datetime-order-error{color:var(--ffc-danger-text);font-weight:500;margin-top:var(--ffc-spacing-2xs)}.ffc-location-picker{display:flex;flex-direction:column;gap:var(--ffc-spacing-2xs);max-height:16em;margin:var(--ffc-spacing-sm) 0;padding:var(--ffc-spacing-sm);overflow-y:auto;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);color:var(--ffc-text)}.ffc-location-picker__item{display:flex;align-items:baseline;gap:var(--ffc-spacing-xs)}.ffc-location-picker__meta{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-form-tabs{display:flex;align-items:flex-start;margin:0 -12px -12px}.ffc-form-tabs__nav{flex:0 0 200px;margin:0;padding:0;list-style:none;background:var(--ffc-bg-alt);border-right:1px solid var(--ffc-border-light)}.ffc-form-tabs__nav-item{margin:0}.ffc-form-tabs__tab{display:flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-lg) var(--ffc-spacing-lg);color:var(--ffc-text-secondary);text-decoration:none;font-weight:500;line-height:1.3;border-left:3px solid transparent;border-bottom:1px solid var(--ffc-border-light)}.ffc-form-tabs__tab:hover{background:var(--ffc-bg-card);color:var(--ffc-link-hover)}.ffc-form-tabs__tab:focus{color:var(--ffc-link-hover);box-shadow:none}.ffc-form-tabs__tab:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:-2px}.ffc-form-tabs__tab .ffc-form-tabs__icon{flex:0 0 auto;font-size:var(--ffc-font-size-lg);color:var(--ffc-text-muted)}.ffc-form-tabs__icon::before{margin-right:0}.ffc-form-tabs__tab.is-active{background:var(--ffc-bg-card);color:var(--ffc-primary);border-left-color:var(--ffc-primary)}.ffc-form-tabs__tab.is-active .ffc-form-tabs__icon{color:var(--ffc-primary)}.ffc-form-tabs__tab.has-error{color:var(--ffc-danger)}.ffc-form-tabs__tab.has-error .ffc-form-tabs__icon{color:var(--ffc-danger)}.ffc-form-tabs__error-dot{width:8px;height:8px;margin-left:auto;border-radius:var(--ffc-radius-full);background:var(--ffc-danger)}.ffc-form-tabs__state{flex:0 0 auto;width:8px;height:8px;margin-left:auto;border:1px solid var(--ffc-text-muted);border-radius:var(--ffc-radius-full);box-sizing:border-box}.ffc-form-tabs__tab.is-on .ffc-form-tabs__state{border-color:var(--ffc-success);background:var(--ffc-success)}.ffc-form-tabs__tab.has-error .ffc-form-tabs__state{display:none}.ffc-form-tabs__panels{flex:1 1 auto;min-width:0;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl) var(--ffc-spacing-xl)}.ffc-form-tabs__panel-title{display:flex;align-items:center;gap:var(--ffc-spacing-sm);margin:var(--ffc-spacing-2xs) 0 var(--ffc-spacing-xl);padding-bottom:var(--ffc-spacing-md);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);border-bottom:2px solid var(--ffc-primary)}.ffc-form-tabs__panel-title .ffc-form-tabs__icon{flex:0 0 auto;color:var(--ffc-primary)}.ffc-form-tabs__required-warning{margin:0 0 var(--ffc-spacing-xl)}.ffc-form-tabs__required-warning code{background:var(--ffc-bg-alt)}.misc-pub-section.ffc-duplicate-action .ffc-icon-copy{color:var(--ffc-text-muted)}.ffc-form-tabs.is-ready .ffc-form-tabs__panel{display:none}.ffc-form-tabs.is-ready .ffc-form-tabs__panel.is-active{display:block}.ffc-form-tabs:not(.is-ready) .ffc-form-tabs__panel+.ffc-form-tabs__panel{margin-top:var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}@media screen and (max-width:782px){.ffc-form-tabs{flex-direction:column}.ffc-form-tabs__nav{display:flex;flex:1 1 auto;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--ffc-border-light)}.ffc-form-tabs__tab{border-left:none;border-bottom:3px solid transparent}.ffc-form-tabs__tab.is-active{border-left:none;border-bottom-color:var(--ffc-primary)}}.ffc-reason-color-swatch{display:inline-block;width:1em;height:1em;border:1px solid var(--ffc-border);vertical-align:middle;background-color:var(--ffc-color)}.ffc-radio-option{display:block;margin-bottom:var(--ffc-spacing-2xs)}@media (forced-colors:active){.ffc-badge-debug,.ffc-badge-error,.ffc-badge-info,.ffc-badge-warning,.ffc-status-pill--info,.ffc-status-pill--success,.ffc-status-pill--warning{border:1px solid CanvasText}}.ffc-preflight-stats-badges{margin:0 0 var(--ffc-spacing-md) 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-preflight-badge{background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm);border-left:3px solid var(--ffc-primary);padding:0}.ffc-preflight-badge a{display:flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);text-decoration:none;color:var(--ffc-text);font-size:var(--ffc-font-size-sm)}.ffc-preflight-badge a:focus,.ffc-preflight-badge a:hover{background:var(--ffc-primary-light)}.ffc-preflight-badge-icon{display:inline-flex;flex-shrink:0;color:var(--ffc-primary)}.ffc-preflight-badge strong{font-size:var(--ffc-font-size-lg);color:var(--ffc-primary);min-width:2ch;text-align:right}.ffc-page-identities .ffc-identity-counts,.ffc-page-identities .ffc-identity-scan{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs) var(--ffc-spacing-md);margin:var(--ffc-spacing-md) 0;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-scan-whole{border-left:4px solid var(--ffc-success-border)}.ffc-page-identities .ffc-identity-scan-partial{border-left:4px solid var(--ffc-warning-border)}.ffc-page-identities .ffc-identity-scan-none{border-left:4px solid var(--ffc-danger-border)}.ffc-page-identities .ffc-identity-scan-verdict{margin:0;font-weight:600}.ffc-page-identities .ffc-identity-scan-detail,.ffc-page-identities .ffc-identity-scan-when{margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-scan-when{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:auto}.ffc-page-identities .ffc-identity-scan-when form{margin:0}.ffc-page-identities .ffc-identity-counts-total{font-weight:600;white-space:nowrap}.ffc-page-identities .ffc-identity-count{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);white-space:nowrap}.ffc-page-identities .ffc-identity-counts-done{color:var(--ffc-success-text);font-weight:600;white-space:nowrap}.ffc-page-identities .ffc-identity-counts-note{margin:0}.ffc-page-identities .ffc-identity-counts-export{margin-left:auto}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-counts-export,.ffc-page-identities .ffc-identity-scan-when{margin-left:0}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-count{border:1px solid CanvasText}.ffc-page-identities .ffc-identity-scan-none,.ffc-page-identities .ffc-identity-scan-partial,.ffc-page-identities .ffc-identity-scan-whole{border-left:4px solid CanvasText}}.ffc-page-identities .ffc-identity-panel{margin:var(--ffc-spacing-lg) 0;background:var(--ffc-bg-card);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-panel-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);background:var(--ffc-bg-alt);border-bottom:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-panel-title{margin:0;font-size:var(--ffc-font-size-lg)}.ffc-page-identities .ffc-identity-panel-note{flex:1 1 18em;margin:0}.ffc-page-identities .ffc-identity-panel-body{padding:var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-panel-chip{flex-shrink:0;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-2xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.ffc-page-identities .ffc-identity-chip-mechanical{background:var(--ffc-success-bg);border-color:var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-chip-isolated{background:var(--ffc-danger-bg);border-color:var(--ffc-danger-border);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-chip-decision{background:var(--ffc-warning-bg);border-color:var(--ffc-warning-border);color:var(--ffc-warning-text)}.ffc-page-identities .ffc-identity-chip-shared{background:var(--ffc-info-bg);border-color:var(--ffc-info-border);color:var(--ffc-info-text)}.ffc-page-identities .ffc-identity-chip-mailbox{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text)}.ffc-page-identities .ffc-identity-chip-accepted{background:var(--ffc-bg-alt);border-color:var(--ffc-border);border-style:dashed;color:var(--ffc-text)}.ffc-page-identities .ffc-identity-accept{margin-top:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-accept>summary{cursor:pointer;color:var(--ffc-gray-600)}.ffc-page-identities .ffc-identity-panel-nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:auto}.ffc-page-identities .ffc-identity-panel-count{font-variant-numeric:tabular-nums;white-space:nowrap}.ffc-page-identities .ffc-identity-panel-step{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-panel-step-next,.ffc-page-identities .ffc-identity-panel-step-previous{justify-content:center;min-width:40px;min-height:40px;padding:0}.ffc-page-identities .ffc-identity-panel-step [class*=ffc-icon-chevron]{font-size:var(--ffc-font-size-lg);line-height:1}.ffc-page-identities .ffc-identity-panel-step [class*=ffc-icon-chevron]::before{margin-right:0}.ffc-page-identities .ffc-identity-panel-step[aria-disabled=true]{opacity:.5;pointer-events:none}.ffc-page-identities .ffc-identity-panel-toggle{white-space:nowrap}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-panel-nav{margin-left:0;width:100%}.ffc-page-identities .ffc-identity-panel-step{flex-grow:1;justify-content:center}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-chip-decision,.ffc-page-identities .ffc-identity-chip-isolated,.ffc-page-identities .ffc-identity-chip-mailbox,.ffc-page-identities .ffc-identity-chip-mechanical,.ffc-page-identities .ffc-identity-chip-shared{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-cards{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-card{display:flex;align-items:stretch;background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-card-main{flex:1 1 0;min-width:18em;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg)}.ffc-page-identities .ffc-identity-card-who{margin:0;font-size:var(--ffc-font-size-lg);font-weight:600}.ffc-page-identities .ffc-identity-card-says{margin:0}.ffc-page-identities .ffc-identity-card-hashes{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs)}.ffc-page-identities .ffc-identity-card-hash{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-card-hash code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-said{font-size:var(--ffc-font-size-xs);font-weight:600}.ffc-page-identities .ffc-identity-card-hash-bad{background:var(--ffc-danger-bg);border-color:var(--ffc-danger-border);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-card-hash-ok{background:var(--ffc-success-bg);border-color:var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-card-hash-plain,.ffc-page-identities .ffc-identity-card-hash-unknown{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text-secondary)}.ffc-page-identities .ffc-identity-panel-body a{color:var(--ffc-link)}.ffc-page-identities .ffc-identity-panel-body a:focus,.ffc-page-identities .ffc-identity-panel-body a:hover{color:var(--ffc-link-hover)}.ffc-page-identities .ffc-identity-card-arrow{color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-page-identities .ffc-identity-card-rows{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-md);margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-card-rowset{display:inline-flex;align-items:baseline;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-card-rowset code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-main .ffc-identity-orphan-has{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-md);padding-left:0;list-style:none}.ffc-page-identities .ffc-identity-card-where{margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-card-act{flex:0 0 17em;display:flex;flex-direction:column;justify-content:center;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-md);background:var(--ffc-bg-alt);color:var(--ffc-text);border-left:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:var(--ffc-spacing-sm);padding-top:var(--ffc-spacing-sm);border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ){flex:0 1 54em;flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb{flex:1 1 16em}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:0;margin-left:var(--ffc-spacing-sm);padding-top:0;padding-left:var(--ffc-spacing-sm);border-top:0;border-left:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-verb-head{display:flex;align-items:baseline;gap:var(--ffc-spacing-3xs);margin:0 0 var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-card-verb-head code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-route{margin:var(--ffc-spacing-2xs) 0 var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-card-act form{margin:0}.ffc-page-identities .ffc-identity-card-act .button{min-height:44px;padding-top:var(--ffc-spacing-2xs);padding-bottom:var(--ffc-spacing-2xs)}.ffc-page-identities .ffc-identity-ack{display:flex;align-items:flex-start;gap:var(--ffc-spacing-2xs);max-width:22em;line-height:1.5}.ffc-page-identities .ffc-identity-ack[hidden]{display:none}.ffc-page-identities .ffc-identity-ack input[type=checkbox]{flex-shrink:0;margin-top:.2em}.ffc-page-identities .ffc-identity-card-act .button,.ffc-page-identities .ffc-identity-card-act input[type=email],.ffc-page-identities .ffc-identity-card-act input[type=number],.ffc-page-identities .ffc-identity-card-act input[type=text]{vertical-align:middle}.ffc-page-identities .ffc-identity-card-act input[type=email],.ffc-page-identities .ffc-identity-card-act input[type=number],.ffc-page-identities .ffc-identity-card-act input[type=text]{min-height:44px;width:14em}.ffc-page-identities .ffc-identity-card-act .button-primary{font-weight:600}.ffc-page-identities .ffc-identity-find{display:inline-flex;align-items:center;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-find .ffc-icon-search::before{margin-right:0}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-card{flex-direction:column}.ffc-page-identities .ffc-identity-card-act{flex:0 0 auto;border-left:0;border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:var(--ffc-spacing-sm);margin-left:0;padding-top:var(--ffc-spacing-sm);padding-left:0;border-top:1px solid var(--ffc-border);border-left:0}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-card-hash{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-dialog{position:fixed;inset:0;z-index:var(--ffc-z-modal);display:flex;align-items:flex-start;justify-content:center;padding:var(--ffc-spacing-2xl);overflow-y:auto}.ffc-page-identities .ffc-identity-dialog[hidden]{display:none}.ffc-page-identities .ffc-identity-dialog-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-page-identities .ffc-identity-dialog-panel{position:relative;z-index:var(--ffc-z-raised);width:100%;max-width:850px;background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-lg)}.ffc-page-identities .ffc-identity-dialog-head{display:flex;align-items:flex-start;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl) var(--ffc-spacing-md);border-bottom:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-heading{flex-grow:1}.ffc-page-identities .ffc-identity-dialog-head h2{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xl)}.ffc-page-identities .ffc-identity-dialog-sub{margin:0;font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-dialog-close{min-width:44px;min-height:44px;padding:0;font-size:var(--ffc-font-size-2xl);line-height:1;color:var(--ffc-text-muted);background:0 0;border:none;cursor:pointer}.ffc-page-identities .ffc-identity-dialog-close:focus,.ffc-page-identities .ffc-identity-dialog-close:hover{color:var(--ffc-text)}.ffc-page-identities .ffc-identity-dialog-body{display:flex;flex-direction:column;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl)}.ffc-page-identities .ffc-identity-dialog-suggestion-has{padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-dialog-suggestion-head{display:block;margin-bottom:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.ffc-page-identities .ffc-identity-dialog-search label{display:block;margin-bottom:var(--ffc-spacing-2xs);font-weight:600}.ffc-page-identities .ffc-identity-dialog-search input{width:100%;min-height:44px}.ffc-page-identities .ffc-identity-dialog-count{padding:var(--ffc-spacing-xs) var(--ffc-spacing-md);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-muted);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-bottom:none}.ffc-page-identities .ffc-identity-dialog-result{display:flex;align-items:center;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-top:none;cursor:pointer}.ffc-page-identities .ffc-identity-dialog-suggestion .ffc-identity-dialog-result{padding:0;background:0 0;border:none}.ffc-page-identities .ffc-identity-dialog-result-refused{background:var(--ffc-bg-alt);cursor:not-allowed}.ffc-page-identities .ffc-identity-dialog-who{display:flex;flex-direction:column;flex-grow:1;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-dialog-meta{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-dialog-verdict{padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-weight:600;white-space:nowrap;border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-dialog-verdict-ok{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-dialog-verdict-refused{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-dialog-column,.ffc-page-identities .ffc-identity-dialog-rule{margin:0;padding-left:var(--ffc-spacing-md);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);border-left:3px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-foot .button{min-height:44px}.ffc-page-identities .ffc-identity-chosen{display:inline-block;margin-left:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-success-text)}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-dialog{padding:var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-dialog-result{flex-wrap:wrap}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-dialog-verdict-ok,.ffc-page-identities .ffc-identity-dialog-verdict-refused{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-verdict{margin-top:var(--ffc-spacing-xs)}.ffc-page-identities .ffc-identity-verdict-line{margin:0 0 var(--ffc-spacing-2xs);padding:var(--ffc-spacing-xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-verdict-ok{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-verdict-warn{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-page-identities .ffc-identity-verdict-bad{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-correct-instead{margin-top:var(--ffc-spacing-xl);padding:var(--ffc-spacing-lg);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-correct-instead h4{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-base)}.ffc-page-identities .ffc-identity-correct-one{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm);margin-top:var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-correct-one label{min-width:14em;font-weight:600}@media (forced-colors:active){.ffc-page-identities .ffc-identity-verdict-bad,.ffc-page-identities .ffc-identity-verdict-ok,.ffc-page-identities .ffc-identity-verdict-warn{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-pair{margin-bottom:var(--ffc-spacing-xl);padding:var(--ffc-spacing-lg);background:var(--ffc-bg-card);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-pair-subject{margin:0 0 var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-pair-choice{margin:0 0 var(--ffc-spacing-md);padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-pair-choice legend{padding:0 var(--ffc-spacing-2xs);font-weight:600}.ffc-page-identities .ffc-identity-pair-choice label{display:block;padding:var(--ffc-spacing-2xs) 0}.ffc-page-identities .ffc-identity-pair-basis{margin:0 0 var(--ffc-spacing-2xs)}.ffc-page-identities .ffc-identity-pair-evidence{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);margin:0 0 var(--ffc-spacing-2xs) var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-preview-region:not(:empty){margin-bottom:var(--ffc-spacing-md);padding:var(--ffc-spacing-md);background:var(--ffc-bg-alt);border-left:3px solid var(--ffc-warning)}.ffc-page-identities .ffc-identity-preview-line{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-preview-head{font-size:var(--ffc-font-size-base);font-weight:600}.ffc-page-identities .ffc-identity-preview-total{font-weight:600}.ffc-page-identities .ffc-identity-preview-bad{color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-preview-stores{margin:0 0 var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xs);list-style:disc}.ffc-page-identities .ffc-identity-merge-one .button{min-height:44px}.ffc-page-identities .ffc-identity-chip-orphans{background:var(--ffc-accent-bg);border-color:var(--ffc-accent-border);color:var(--ffc-accent-text)}.ffc-page-identities .ffc-identity-orphan-has{margin:0;font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-orphan-present{color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-orphan-missing{color:var(--ffc-danger-text);font-weight:600}@media (forced-colors:active){.ffc-page-identities .ffc-identity-chip-orphans{border:1px solid CanvasText}} +#ffc-fields-container{margin-bottom:var(--ffc-spacing-xl);max-width:100%}.ffc-field-row{background:var(--ffc-bg-card);border:1px solid var(--ffc-border);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-lg);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-sm)}.ffc-field-row:hover{box-shadow:var(--ffc-shadow-md)}.ffc-field-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--ffc-spacing-xl);padding-bottom:var(--ffc-spacing-md);border-bottom:1px solid var(--ffc-border-light)}.ffc-field-title{margin-left:var(--ffc-spacing-sm)}.ffc-field-row-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--ffc-spacing-xl);align-items:end}.ffc-field-row-grid .ffc-grid-item{display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-field-row-grid input[type=text],.ffc-field-row-grid select{width:100%;box-sizing:border-box;height:30px}.ffc-req-label{display:flex;align-items:center;gap:var(--ffc-spacing-xs);padding-bottom:var(--ffc-spacing-sm)}.ffc-flex-center{display:flex;align-items:center;justify-content:center}.ffc-options-field{margin-top:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);padding:var(--ffc-spacing-lg);border-radius:var(--ffc-radius-sm);border:1px dashed var(--ffc-border)}.ffc-options-desc{margin:0 0 var(--ffc-spacing-2xs);font-weight:700;color:var(--ffc-primary)}.ffc-field-row.ffc-field-row-required-tag{border-left-color:var(--ffc-warning)}.ffc-required-tag-badge{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:var(--ffc-spacing-md);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);border-radius:var(--ffc-radius-sm);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);font-size:var(--ffc-font-size-xs);font-weight:600}.ffc-field-row-required-tag input[readonly]{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}@media (forced-colors:active){.ffc-field-row-required-tag input[readonly],.ffc-required-tag-badge{border:1px solid CanvasText}}.ffc-type-desc{margin:var(--ffc-spacing-sm) 0 0}.ffc-choice-list{list-style:none;margin:0 0 var(--ffc-spacing-sm);padding:0;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-choice-row{display:flex;gap:var(--ffc-spacing-sm);align-items:center;margin:0}.ffc-choice-handle{flex:0 0 20px;cursor:move;color:var(--ffc-text-muted)}.ffc-choice-input{flex:1 1 auto;min-width:0;box-sizing:border-box}.ffc-choice-quiz{display:inline-flex;flex:0 0 auto;align-items:center;gap:var(--ffc-spacing-2xs);white-space:nowrap}.ffc-field-quiz{margin-top:var(--ffc-spacing-lg);padding-top:var(--ffc-spacing-md);border-top:1px dashed var(--ffc-border)}.ffc-field-quiz-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm) var(--ffc-spacing-lg)}.ffc-field-quiz-body .ffc-quiz-help{flex-basis:100%;margin:0}.ffc-choice-remove{flex:0 0 32px;display:inline-flex;align-items:center;justify-content:center;min-height:32px;color:var(--ffc-danger)}.ffc-field-settings{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm) var(--ffc-spacing-xl);margin-top:var(--ffc-spacing-lg)}.ffc-field-setting{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm)}.ffc-field-type-menu{background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-md);min-width:200px;z-index:var(--ffc-z-overlay)}.ffc-field-type-menu .ffc-menu-header{padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);font-weight:600;border-bottom:1px solid var(--ffc-border-light)}.ffc-field-type-menu ul{list-style:none;margin:0;padding:var(--ffc-spacing-xs) 0}.ffc-field-type-menu li{margin:0}.ffc-field-type-option{display:block;width:100%;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:0;background:0 0;color:var(--ffc-text);font:inherit;text-align:left;cursor:pointer}.ffc-field-type-option:focus-visible,.ffc-field-type-option:hover{background:var(--ffc-bg-alt)}.ffc-builder-actions{margin-top:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-md);border-top:1px solid var(--ffc-border-light)}#ffc_pdf_layout{width:100%;height:450px;font-family:Consolas,Monaco,monospace;font-size:var(--ffc-font-size-sm);background:#2c3338;color:#f0f0f1;padding:var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm);line-height:1.5;border:1px solid #1e1e1e}#ffc_generated_list{background:var(--ffc-bg-card);font-family:'Courier New',Courier,monospace;width:100%;min-height:150px;border:1px solid var(--ffc-gray-400);font-size:var(--ffc-font-size-xs)}.ffc-gen-status{margin-left:var(--ffc-spacing-md);color:var(--ffc-primary);font-weight:600}.ffc-textarea-mono{font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-xs)}.ffc-h80{min-height:80px}.ffc-h120{min-height:120px}.post-type-ffc_form .wrap{max-width:none!important}.ffc-table-responsive{overflow-x:auto;margin-top:var(--ffc-spacing-2xl);width:100%}.ffc-table-responsive table.wp-list-table{width:100%!important;max-width:100%!important;table-layout:fixed;border-collapse:collapse}.ffc-table-responsive table.wp-list-table td.column-data,.ffc-table-responsive table.wp-list-table td.column-email{overflow-wrap:break-word}.ffc-table-responsive td.column-actions{white-space:normal}@media screen and (max-width:782px){.ffc-table-responsive table.wp-list-table{table-layout:auto}.ffc-table-responsive table.wp-list-table td.column-actions,.ffc-table-responsive table.wp-list-table th.column-actions{white-space:normal}.ffc-table-responsive .button{display:inline-block;margin:var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-2xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);line-height:1.5}}.ffc-danger-zone{margin-top:40px;padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-card);border:2px solid var(--ffc-danger);border-radius:var(--ffc-radius-sm)}.ffc-danger-zone h2{color:var(--ffc-danger);margin-top:0}.ffc-shortcode-box{background:var(--ffc-bg-alt);padding:var(--ffc-spacing-md);border-radius:var(--ffc-radius-sm);border:1px solid var(--ffc-border)}.ffc-shortcode-copy{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);margin:var(--ffc-spacing-md) 0}.ffc-shortcode-display{display:block;flex:1 1 100%;min-width:0;padding:var(--ffc-spacing-sm);background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border-light);margin:0;user-select:all;font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-sm);word-break:break-all}#ffc_form_summary .ffc-facts__value{text-align:right}.ffc-tips-list{list-style:disc;padding-left:var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-tips-list li{margin-bottom:var(--ffc-spacing-2xs)}.ffc-sort-handle{cursor:move;color:var(--ffc-gray-300);padding:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xl);display:flex;align-items:center}.ffc-sort-handle:hover{color:var(--ffc-primary)}.ffc-sort-handle .ffc-field-title{color:var(--ffc-text)}.ffc-remove-field{color:var(--ffc-danger);cursor:pointer;text-decoration:none;font-size:var(--ffc-font-size-sm)}.ffc-remove-field:hover{color:var(--ffc-danger-text)}.ffc-highlight-row{background:var(--ffc-primary-light)}.ffc-label-accent{color:var(--ffc-primary);font-weight:700}@media (max-width:782px){.ffc-field-row-grid{grid-template-columns:1fr}.ffc-admin-flex-row{flex-direction:column;align-items:flex-start}}.ffc-copy-magic-link:hover{background:var(--ffc-primary-hover);color:var(--ffc-text-on-primary);border-color:var(--ffc-primary-hover)}.ffc-admin-page .form-table td a[href*="token="]{display:inline-block;max-width:100%;word-break:break-all;color:var(--ffc-link);text-decoration:underline}.ffc-admin-page .form-table td a[href*="token="]:hover{color:var(--ffc-link-hover)}.ffc-admin-page .form-table .description strong{color:var(--ffc-text)}.ffc-migrations-settings-wrap{max-width:1500px}.ffc-migration-warning{background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);padding:var(--ffc-spacing-lg);margin:var(--ffc-spacing-xl) 0}.ffc-migration-warning p{margin:0}.ffc-action-group{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);align-items:center}.ffc-template-loader{display:flex;gap:var(--ffc-spacing-xs);align-items:center}.ffc-action-group .button,.ffc-template-loader .button{display:inline-flex;align-items:center}.ffc-autosave-status{display:inline-block;margin-left:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-style:italic;vertical-align:middle}.ffc-autosave-status.ffc-saved{color:var(--ffc-success)}.ffc-autosave-status.ffc-error{color:var(--ffc-danger)}.column-ffc_certificates{width:150px}.ffc-view-as-user{color:var(--ffc-link);text-decoration:none;font-size:var(--ffc-font-size-xs)}.ffc-view-as-user:hover{color:var(--ffc-link-hover);text-decoration:underline}.ffc-empty-value{color:var(--ffc-text-light)}.ffc-placeholder{background:var(--ffc-primary-light);border:1px dashed var(--ffc-primary);border-radius:var(--ffc-radius-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);color:var(--ffc-primary);font-family:"Courier New",monospace;font-size:var(--ffc-font-size-sm);white-space:nowrap;display:inline-block;cursor:default;user-select:none}.ffc-placeholder:hover{background:var(--ffc-info-bg);border-color:var(--ffc-primary-hover)}.ffc-code-editor-wrapper .CodeMirror{border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs);height:auto;min-height:260px;font-size:var(--ffc-font-size-sm);font-family:Consolas,Monaco,"Courier New",monospace}.ffc-code-editor-wrapper .CodeMirror-scroll{min-height:260px}.ffc-code-editor-wrapper .cm-ffc-placeholder-token{background:var(--ffc-primary-light);color:var(--ffc-primary);border-radius:2px;padding:0 var(--ffc-spacing-3xs);font-weight:600}.ffc-code-editor-notice{margin-top:var(--ffc-spacing-xs);color:var(--ffc-text-light);font-style:italic}.ffc-badge-info{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-badge-warning{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-badge-error{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-badge-debug{background:var(--ffc-gray-200);color:var(--ffc-gray-700)}.ffc-ml-20{margin-left:var(--ffc-spacing-2xl)}.ffc-m-2xs-0{margin:var(--ffc-spacing-2xs) 0 0 0}.ffc-restriction-label{display:block;margin:var(--ffc-spacing-md) 0}.ffc-global-default{padding:0 var(--ffc-spacing-2xs);border-radius:var(--ffc-radius-xs);background:var(--ffc-primary-light);color:var(--ffc-primary);font-weight:600}.ffc-status-pill{display:inline-block;padding:3px var(--ffc-spacing-md);border-radius:11px;font-size:var(--ffc-font-size-xs);font-weight:500;line-height:1.5}.ffc-status-pill--success{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-status-pill--warning{background:var(--ffc-warning-light);color:var(--ffc-warning-text)}.ffc-status-pill--info{background:var(--ffc-info-light);color:var(--ffc-info)}.ffc-collapsed{display:none!important}.ffc-csv-public-share{display:flex;gap:var(--ffc-spacing-sm);align-items:center}.ffc-csv-public-share input.large-text{flex:1;min-width:0}.ffc-csv-audit-summary{display:flex;gap:var(--ffc-spacing-lg);flex-wrap:wrap;margin:0 0 var(--ffc-spacing-lg)}.ffc-csv-audit-card{flex:1 1 140px;min-width:140px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-alt);border-left:4px solid var(--ffc-gray-400)}.ffc-csv-audit-card.is-success{border-left-color:var(--ffc-success);background:var(--ffc-success-light)}.ffc-csv-audit-card.is-fail{border-left-color:var(--ffc-danger);background:var(--ffc-danger-light)}.ffc-csv-audit-card-label{display:block;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--ffc-spacing-2xs)}.ffc-csv-audit-card-value{display:block;font-size:var(--ffc-font-size-2xl);font-weight:700;line-height:1.1;color:var(--ffc-text)}.ffc-csv-audit-card-hint{display:block;font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted);margin-top:var(--ffc-spacing-xs);line-height:1.3}.ffc-warning-text{color:var(--ffc-danger-text)}.ffc-dashboard-header{display:flex;align-items:center;justify-content:space-between}.ffc-log-summary{cursor:pointer;color:var(--ffc-link)}.ffc-log-pre{font-size:var(--ffc-font-size-2xs);max-height:150px;overflow:auto;margin-top:var(--ffc-spacing-sm);padding:var(--ffc-spacing-sm);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light)}.ffc-activity-card{margin-top:var(--ffc-spacing-2xl);max-width:100%}.ffc-uppercase{text-transform:uppercase}.ffc-time-description{margin-left:var(--ffc-spacing-2xl);margin-top:var(--ffc-spacing-2xs)}.ffc-list-disc{list-style:disc}.ffc-checkbox-label{display:block;margin-bottom:var(--ffc-spacing-sm)}fieldset .ffc-checkbox-label,td .ffc-restriction-label{display:block}.ffc-info-card{background:var(--ffc-info-bg);border-left:4px solid var(--ffc-info-border)}#ffc-preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999999;opacity:0;transition:opacity .2s ease}#ffc-preview-modal.ffc-preview-visible{opacity:1}.ffc-preview-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--ffc-bg-overlay)}.ffc-preview-container{position:relative;z-index:var(--ffc-z-raised);display:flex;flex-direction:column;width:90%;max-width:900px;height:85vh;margin:5vh auto;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-lg);overflow:hidden}.ffc-preview-header{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);background:var(--ffc-inverse-surface);color:var(--ffc-inverse-on-surface);flex-shrink:0}.ffc-preview-header h2{margin:0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-inverse-on-surface)}.ffc-preview-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:28px;line-height:1;cursor:pointer;padding:0 var(--ffc-spacing-2xs);transition:color .15s}.ffc-preview-close:hover{color:var(--ffc-inverse-on-surface)}.ffc-preview-note{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);background:var(--ffc-info-bg);border-bottom:1px solid var(--ffc-border);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);flex-shrink:0}.ffc-preview-body{flex:1;overflow:auto;background:var(--ffc-bg-alt);padding:var(--ffc-spacing-2xl);display:flex;align-items:center;justify-content:center}.ffc-preview-stage{position:relative;flex:0 0 auto;overflow:hidden;box-shadow:var(--ffc-shadow-md)}#ffc-preview-iframe{display:block;border:1px solid var(--ffc-border-light);background:var(--ffc-bg)}@media (max-width:782px){.ffc-preview-container{width:98%;height:90vh;margin:3vh auto}.ffc-preview-body{padding:var(--ffc-spacing-md)}}@media (prefers-reduced-motion:reduce){#ffc-preview-modal{transition:none}.ffc-preview-close{transition:none}}.column-ffc_form_id{width:60px;text-align:center}.column-ffc_shortcode{width:240px}.column-ffc_submissions{width:100px}.ffc-shortcode-cell{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs)}.ffc-shortcode-code{font-size:var(--ffc-font-size-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);user-select:all}.ffc-copy-shortcode{background:0 0;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs);cursor:pointer;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-2xs);line-height:1;color:var(--ffc-text-muted)}.ffc-copy-shortcode:hover{color:var(--ffc-primary);border-color:var(--ffc-primary)}.ffc-copy-shortcode .ffc-icon-copy::before{margin-right:0}.ffc-copy-shortcode.is-copied{color:var(--ffc-success-text);border-color:var(--ffc-success)}.ffc-input-invalid{border-color:var(--ffc-danger)!important;box-shadow:0 0 0 1px var(--ffc-danger)!important}.ffc-input-invalid:focus{border-color:var(--ffc-danger)!important;box-shadow:0 0 0 1px var(--ffc-danger),0 0 2px 1px var(--ffc-danger-hover)!important}p.ffc-datetime-order-error{color:var(--ffc-danger-text);font-weight:500;margin-top:var(--ffc-spacing-2xs)}.ffc-location-picker{display:flex;flex-direction:column;gap:var(--ffc-spacing-2xs);max-height:16em;margin:var(--ffc-spacing-sm) 0;padding:var(--ffc-spacing-sm);overflow-y:auto;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);color:var(--ffc-text)}.ffc-location-picker__item{display:flex;align-items:baseline;gap:var(--ffc-spacing-xs)}.ffc-location-picker__meta{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-form-tabs{display:flex;align-items:flex-start;margin:0 -12px -12px}.ffc-form-tabs__nav{flex:0 0 200px;margin:0;padding:0;list-style:none;background:var(--ffc-bg-alt);border-right:1px solid var(--ffc-border-light)}.ffc-form-tabs__nav-item{margin:0}.ffc-form-tabs__tab{display:flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-lg) var(--ffc-spacing-lg);color:var(--ffc-text-secondary);text-decoration:none;font-weight:500;line-height:1.3;border-left:3px solid transparent;border-bottom:1px solid var(--ffc-border-light)}.ffc-form-tabs__tab:hover{background:var(--ffc-bg-card);color:var(--ffc-link-hover)}.ffc-form-tabs__tab:focus{color:var(--ffc-link-hover);box-shadow:none}.ffc-form-tabs__tab:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:-2px}.ffc-form-tabs__tab .ffc-form-tabs__icon{flex:0 0 auto;font-size:var(--ffc-font-size-lg);color:var(--ffc-text-muted)}.ffc-form-tabs__icon::before{margin-right:0}.ffc-form-tabs__tab.is-active{background:var(--ffc-bg-card);color:var(--ffc-primary);border-left-color:var(--ffc-primary)}.ffc-form-tabs__tab.is-active .ffc-form-tabs__icon{color:var(--ffc-primary)}.ffc-form-tabs__tab.has-error{color:var(--ffc-danger)}.ffc-form-tabs__tab.has-error .ffc-form-tabs__icon{color:var(--ffc-danger)}.ffc-form-tabs__error-dot{width:8px;height:8px;margin-left:auto;border-radius:var(--ffc-radius-full);background:var(--ffc-danger)}.ffc-form-tabs__state{flex:0 0 auto;width:8px;height:8px;margin-left:auto;border:1px solid var(--ffc-text-muted);border-radius:var(--ffc-radius-full);box-sizing:border-box}.ffc-form-tabs__tab.is-on .ffc-form-tabs__state{border-color:var(--ffc-success);background:var(--ffc-success)}.ffc-form-tabs__tab.has-error .ffc-form-tabs__state{display:none}.ffc-form-tabs__panels{flex:1 1 auto;min-width:0;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl) var(--ffc-spacing-xl)}.ffc-form-tabs__panel-title{display:flex;align-items:center;gap:var(--ffc-spacing-sm);margin:var(--ffc-spacing-2xs) 0 var(--ffc-spacing-xl);padding-bottom:var(--ffc-spacing-md);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);border-bottom:2px solid var(--ffc-primary)}.ffc-form-tabs__panel-title .ffc-form-tabs__icon{flex:0 0 auto;color:var(--ffc-primary)}.ffc-form-tabs__required-warning{margin:0 0 var(--ffc-spacing-xl)}.ffc-form-tabs__required-warning code{background:var(--ffc-bg-alt)}.misc-pub-section.ffc-duplicate-action .ffc-icon-copy{color:var(--ffc-text-muted)}.ffc-form-tabs.is-ready .ffc-form-tabs__panel{display:none}.ffc-form-tabs.is-ready .ffc-form-tabs__panel.is-active{display:block}.ffc-form-tabs:not(.is-ready) .ffc-form-tabs__panel+.ffc-form-tabs__panel{margin-top:var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}@media screen and (max-width:782px){.ffc-form-tabs{flex-direction:column}.ffc-form-tabs__nav{display:flex;flex:1 1 auto;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--ffc-border-light)}.ffc-form-tabs__tab{border-left:none;border-bottom:3px solid transparent}.ffc-form-tabs__tab.is-active{border-left:none;border-bottom-color:var(--ffc-primary)}}.ffc-reason-color-swatch{display:inline-block;width:1em;height:1em;border:1px solid var(--ffc-border);vertical-align:middle;background-color:var(--ffc-color)}.ffc-radio-option{display:block;margin-bottom:var(--ffc-spacing-2xs)}@media (forced-colors:active){.ffc-badge-debug,.ffc-badge-error,.ffc-badge-info,.ffc-badge-warning,.ffc-status-pill--info,.ffc-status-pill--success,.ffc-status-pill--warning{border:1px solid CanvasText}}.ffc-preflight-stats-badges{margin:0 0 var(--ffc-spacing-md) 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs)}.ffc-preflight-badge{background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm);border-left:3px solid var(--ffc-primary);padding:0}.ffc-preflight-badge a{display:flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);text-decoration:none;color:var(--ffc-text);font-size:var(--ffc-font-size-sm)}.ffc-preflight-badge a:focus,.ffc-preflight-badge a:hover{background:var(--ffc-primary-light)}.ffc-preflight-badge-icon{display:inline-flex;flex-shrink:0;color:var(--ffc-primary)}.ffc-preflight-badge strong{font-size:var(--ffc-font-size-lg);color:var(--ffc-primary);min-width:2ch;text-align:right}.ffc-page-identities .ffc-identity-counts,.ffc-page-identities .ffc-identity-scan{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs) var(--ffc-spacing-md);margin:var(--ffc-spacing-md) 0;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-scan-whole{border-left:4px solid var(--ffc-success-border)}.ffc-page-identities .ffc-identity-scan-partial{border-left:4px solid var(--ffc-warning-border)}.ffc-page-identities .ffc-identity-scan-none{border-left:4px solid var(--ffc-danger-border)}.ffc-page-identities .ffc-identity-scan-verdict{margin:0;font-weight:600}.ffc-page-identities .ffc-identity-scan-detail,.ffc-page-identities .ffc-identity-scan-when{margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-scan-when{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:auto}.ffc-page-identities .ffc-identity-scan-when form{margin:0}.ffc-page-identities .ffc-identity-counts-total{font-weight:600;white-space:nowrap}.ffc-page-identities .ffc-identity-count{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);white-space:nowrap}.ffc-page-identities .ffc-identity-counts-done{color:var(--ffc-success-text);font-weight:600;white-space:nowrap}.ffc-page-identities .ffc-identity-counts-note{margin:0}.ffc-page-identities .ffc-identity-counts-export{margin-left:auto}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-counts-export,.ffc-page-identities .ffc-identity-scan-when{margin-left:0}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-count{border:1px solid CanvasText}.ffc-page-identities .ffc-identity-scan-none,.ffc-page-identities .ffc-identity-scan-partial,.ffc-page-identities .ffc-identity-scan-whole{border-left:4px solid CanvasText}}.ffc-page-identities .ffc-identity-panel{margin:var(--ffc-spacing-lg) 0;background:var(--ffc-bg-card);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-panel-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);background:var(--ffc-bg-alt);border-bottom:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-panel-title{margin:0;font-size:var(--ffc-font-size-lg)}.ffc-page-identities .ffc-identity-panel-note{flex:1 1 18em;margin:0}.ffc-page-identities .ffc-identity-panel-body{padding:var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-panel-chip{flex-shrink:0;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-2xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.ffc-page-identities .ffc-identity-chip-mechanical{background:var(--ffc-success-bg);border-color:var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-chip-isolated{background:var(--ffc-danger-bg);border-color:var(--ffc-danger-border);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-chip-decision{background:var(--ffc-warning-bg);border-color:var(--ffc-warning-border);color:var(--ffc-warning-text)}.ffc-page-identities .ffc-identity-chip-shared{background:var(--ffc-info-bg);border-color:var(--ffc-info-border);color:var(--ffc-info-text)}.ffc-page-identities .ffc-identity-chip-mailbox{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text)}.ffc-page-identities .ffc-identity-chip-accepted{background:var(--ffc-bg-alt);border-color:var(--ffc-border);border-style:dashed;color:var(--ffc-text)}.ffc-page-identities .ffc-identity-accept{margin-top:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-accept>summary{cursor:pointer;color:var(--ffc-gray-600)}.ffc-page-identities .ffc-identity-panel-nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-2xs);margin-left:auto}.ffc-page-identities .ffc-identity-panel-count{font-variant-numeric:tabular-nums;white-space:nowrap}.ffc-page-identities .ffc-identity-panel-step{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-panel-step-next,.ffc-page-identities .ffc-identity-panel-step-previous{justify-content:center;min-width:40px;min-height:40px;padding:0}.ffc-page-identities .ffc-identity-panel-step [class*=ffc-icon-chevron]{font-size:var(--ffc-font-size-lg);line-height:1}.ffc-page-identities .ffc-identity-panel-step [class*=ffc-icon-chevron]::before{margin-right:0}.ffc-page-identities .ffc-identity-panel-step[aria-disabled=true]{opacity:.5;pointer-events:none}.ffc-page-identities .ffc-identity-panel-toggle{white-space:nowrap}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-panel-nav{margin-left:0;width:100%}.ffc-page-identities .ffc-identity-panel-step{flex-grow:1;justify-content:center}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-chip-decision,.ffc-page-identities .ffc-identity-chip-isolated,.ffc-page-identities .ffc-identity-chip-mailbox,.ffc-page-identities .ffc-identity-chip-mechanical,.ffc-page-identities .ffc-identity-chip-shared{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-cards{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-card{display:flex;align-items:stretch;background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-card-main{flex:1 1 0;min-width:18em;display:flex;flex-direction:column;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg)}.ffc-page-identities .ffc-identity-card-who{margin:0;font-size:var(--ffc-font-size-lg);font-weight:600}.ffc-page-identities .ffc-identity-card-says{margin:0}.ffc-page-identities .ffc-identity-card-hashes{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-xs)}.ffc-page-identities .ffc-identity-card-hash{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border:1px solid transparent;border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-card-hash code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-said{font-size:var(--ffc-font-size-xs);font-weight:600}.ffc-page-identities .ffc-identity-card-hash-bad{background:var(--ffc-danger-bg);border-color:var(--ffc-danger-border);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-card-hash-ok{background:var(--ffc-success-bg);border-color:var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-card-hash-plain,.ffc-page-identities .ffc-identity-card-hash-unknown{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text-secondary)}.ffc-page-identities .ffc-identity-panel-body a{color:var(--ffc-link)}.ffc-page-identities .ffc-identity-panel-body a:focus,.ffc-page-identities .ffc-identity-panel-body a:hover{color:var(--ffc-link-hover)}.ffc-page-identities .ffc-identity-card-arrow{color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-page-identities .ffc-identity-card-rows{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-md);margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-card-rowset{display:inline-flex;align-items:baseline;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-card-rowset code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-main .ffc-identity-orphan-has{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-md);padding-left:0;list-style:none}.ffc-page-identities .ffc-identity-card-where{margin:0;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-sm)}.ffc-page-identities .ffc-identity-card-act{flex:0 0 17em;display:flex;flex-direction:column;justify-content:center;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-md);background:var(--ffc-bg-alt);color:var(--ffc-text);border-left:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:var(--ffc-spacing-sm);padding-top:var(--ffc-spacing-sm);border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ){flex:0 1 54em;flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb{flex:1 1 16em}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:0;margin-left:var(--ffc-spacing-sm);padding-top:0;padding-left:var(--ffc-spacing-sm);border-top:0;border-left:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-verb-head{display:flex;align-items:baseline;gap:var(--ffc-spacing-3xs);margin:0 0 var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-card-verb-head code{background:0 0;color:inherit;font-size:var(--ffc-font-size-xs);padding:0}.ffc-page-identities .ffc-identity-card-route{margin:var(--ffc-spacing-2xs) 0 var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-card-act form{margin:0}.ffc-page-identities .ffc-identity-card-act .button{min-height:44px;padding-top:var(--ffc-spacing-2xs);padding-bottom:var(--ffc-spacing-2xs)}.ffc-page-identities .ffc-identity-ack{display:flex;align-items:flex-start;gap:var(--ffc-spacing-2xs);max-width:22em;line-height:1.5}.ffc-page-identities .ffc-identity-ack[hidden]{display:none}.ffc-page-identities .ffc-identity-ack input[type=checkbox]{flex-shrink:0;margin-top:.2em}.ffc-page-identities .ffc-identity-card-act .button,.ffc-page-identities .ffc-identity-card-act input[type=email],.ffc-page-identities .ffc-identity-card-act input[type=number],.ffc-page-identities .ffc-identity-card-act input[type=text]{vertical-align:middle}.ffc-page-identities .ffc-identity-card-act input[type=email],.ffc-page-identities .ffc-identity-card-act input[type=number],.ffc-page-identities .ffc-identity-card-act input[type=text]{min-height:44px;width:14em}.ffc-page-identities .ffc-identity-card-act .button-primary{font-weight:600}.ffc-page-identities .ffc-identity-find{display:inline-flex;align-items:center;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-find .ffc-icon-search::before{margin-right:0}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-card{flex-direction:column}.ffc-page-identities .ffc-identity-card-act{flex:0 0 auto;border-left:0;border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-card-act:has( .ffc-identity-card-verb + .ffc-identity-card-verb ) .ffc-identity-card-verb+.ffc-identity-card-verb{margin-top:var(--ffc-spacing-sm);margin-left:0;padding-top:var(--ffc-spacing-sm);padding-left:0;border-top:1px solid var(--ffc-border);border-left:0}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-card-hash{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-dialog{position:fixed;inset:0;z-index:var(--ffc-z-modal);display:flex;align-items:flex-start;justify-content:center;padding:var(--ffc-spacing-2xl);overflow-y:auto}.ffc-page-identities .ffc-identity-dialog[hidden]{display:none}.ffc-page-identities .ffc-identity-dialog-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-page-identities .ffc-identity-dialog-panel{position:relative;z-index:var(--ffc-z-raised);width:100%;max-width:850px;background:var(--ffc-bg-card);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-lg)}.ffc-page-identities .ffc-identity-dialog-head{display:flex;align-items:flex-start;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl) var(--ffc-spacing-md);border-bottom:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-heading{flex-grow:1}.ffc-page-identities .ffc-identity-dialog-head h2{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xl)}.ffc-page-identities .ffc-identity-dialog-sub{margin:0;font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-dialog-close{min-width:44px;min-height:44px;padding:0;font-size:var(--ffc-font-size-2xl);line-height:1;color:var(--ffc-text-muted);background:0 0;border:none;cursor:pointer}.ffc-page-identities .ffc-identity-dialog-close:focus,.ffc-page-identities .ffc-identity-dialog-close:hover{color:var(--ffc-text)}.ffc-page-identities .ffc-identity-dialog-body{display:flex;flex-direction:column;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl)}.ffc-page-identities .ffc-identity-dialog-suggestion-has{padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-dialog-suggestion-head{display:block;margin-bottom:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.ffc-page-identities .ffc-identity-dialog-search label{display:block;margin-bottom:var(--ffc-spacing-2xs);font-weight:600}.ffc-page-identities .ffc-identity-dialog-search input{width:100%;min-height:44px}.ffc-page-identities .ffc-identity-dialog-count{padding:var(--ffc-spacing-xs) var(--ffc-spacing-md);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-muted);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-bottom:none}.ffc-page-identities .ffc-identity-dialog-result{display:flex;align-items:center;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-top:none;cursor:pointer}.ffc-page-identities .ffc-identity-dialog-suggestion .ffc-identity-dialog-result{padding:0;background:0 0;border:none}.ffc-page-identities .ffc-identity-dialog-result-refused{background:var(--ffc-bg-alt);cursor:not-allowed}.ffc-page-identities .ffc-identity-dialog-who{display:flex;flex-direction:column;flex-grow:1;gap:var(--ffc-spacing-3xs)}.ffc-page-identities .ffc-identity-dialog-meta{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-page-identities .ffc-identity-dialog-verdict{padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-weight:600;white-space:nowrap;border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-dialog-verdict-ok{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-dialog-verdict-refused{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-dialog-column,.ffc-page-identities .ffc-identity-dialog-rule{margin:0;padding-left:var(--ffc-spacing-md);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);border-left:3px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border-top:1px solid var(--ffc-border)}.ffc-page-identities .ffc-identity-dialog-foot .button{min-height:44px}.ffc-page-identities .ffc-identity-chosen{display:inline-block;margin-left:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-success-text)}@media screen and (max-width:782px){.ffc-page-identities .ffc-identity-dialog{padding:var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-dialog-result{flex-wrap:wrap}}@media (forced-colors:active){.ffc-page-identities .ffc-identity-dialog-verdict-ok,.ffc-page-identities .ffc-identity-dialog-verdict-refused{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-verdict{margin-top:var(--ffc-spacing-xs)}.ffc-page-identities .ffc-identity-verdict-line{margin:0 0 var(--ffc-spacing-2xs);padding:var(--ffc-spacing-xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-verdict-ok{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-verdict-warn{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-page-identities .ffc-identity-verdict-bad{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-correct-instead{margin-top:var(--ffc-spacing-xl);padding:var(--ffc-spacing-lg);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-correct-instead h4{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-base)}.ffc-page-identities .ffc-identity-correct-one{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ffc-spacing-sm);margin-top:var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-correct-one label{min-width:14em;font-weight:600}@media (forced-colors:active){.ffc-page-identities .ffc-identity-verdict-bad,.ffc-page-identities .ffc-identity-verdict-ok,.ffc-page-identities .ffc-identity-verdict-warn{border:1px solid CanvasText}}.ffc-page-identities .ffc-identity-pair{margin-bottom:var(--ffc-spacing-xl);padding:var(--ffc-spacing-lg);background:var(--ffc-bg-card);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-page-identities .ffc-identity-pair-subject{margin:0 0 var(--ffc-spacing-sm)}.ffc-page-identities .ffc-identity-pair-choice{margin:0 0 var(--ffc-spacing-md);padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-xs)}.ffc-page-identities .ffc-identity-pair-choice legend{padding:0 var(--ffc-spacing-2xs);font-weight:600}.ffc-page-identities .ffc-identity-pair-choice label{display:block;padding:var(--ffc-spacing-2xs) 0}.ffc-page-identities .ffc-identity-pair-basis{margin:0 0 var(--ffc-spacing-2xs)}.ffc-page-identities .ffc-identity-pair-evidence{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);margin:0 0 var(--ffc-spacing-2xs) var(--ffc-spacing-md)}.ffc-page-identities .ffc-identity-preview-region:not(:empty){margin-bottom:var(--ffc-spacing-md);padding:var(--ffc-spacing-md);background:var(--ffc-bg-alt);border-left:3px solid var(--ffc-warning)}.ffc-page-identities .ffc-identity-preview-line{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-preview-head{font-size:var(--ffc-font-size-base);font-weight:600}.ffc-page-identities .ffc-identity-preview-total{font-weight:600}.ffc-page-identities .ffc-identity-preview-bad{color:var(--ffc-danger-text)}.ffc-page-identities .ffc-identity-preview-stores{margin:0 0 var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xs);list-style:disc}.ffc-page-identities .ffc-identity-merge-one .button{min-height:44px}.ffc-page-identities .ffc-identity-chip-orphans{background:var(--ffc-accent-bg);border-color:var(--ffc-accent-border);color:var(--ffc-accent-text)}.ffc-page-identities .ffc-identity-orphan-has{margin:0;font-size:var(--ffc-font-size-xs)}.ffc-page-identities .ffc-identity-orphan-present{color:var(--ffc-success-text)}.ffc-page-identities .ffc-identity-orphan-missing{color:var(--ffc-danger-text);font-weight:600}@media (forced-colors:active){.ffc-page-identities .ffc-identity-chip-orphans{border:1px solid CanvasText}} /*# sourceMappingURL=ffc-admin.min.css.map */ \ No newline at end of file diff --git a/assets/css/ffc-frontend.css b/assets/css/ffc-frontend.css index f9921b8cf..160b96f02 100644 --- a/assets/css/ffc-frontend.css +++ b/assets/css/ffc-frontend.css @@ -180,6 +180,25 @@ color: var(--ffc-warning-text); } +/* Per-question verdict after a quiz attempt (#1730): the word carries the + meaning, the colour and the icon only repeat it. */ +.ffc-shortcode .ffc-quiz-verdict { + display: flex; + align-items: center; + gap: var(--ffc-spacing-2xs); + margin: var(--ffc-spacing-xs) 0 0; + font-size: var(--ffc-font-size-sm); + font-weight: 600; +} + +.ffc-shortcode .ffc-quiz-right .ffc-quiz-verdict { + color: var(--ffc-success-text); +} + +.ffc-shortcode .ffc-quiz-wrong .ffc-quiz-verdict { + color: var(--ffc-danger-text); +} + /* ============================================ INFO BLOCK - v4.9.0 ============================================ */ diff --git a/assets/css/ffc-frontend.min.css b/assets/css/ffc-frontend.min.css index f867debc0..1acdbbfd7 100644 --- a/assets/css/ffc-frontend.min.css +++ b/assets/css/ffc-frontend.min.css @@ -1,2 +1,2 @@ -.ffc-shortcode :is(input,select,textarea,button){font-family:inherit}.ffc-shortcode .ffc-input{width:100%!important;max-width:none!important;height:45px!important;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg)!important;border:1px solid var(--ffc-border)!important;border-radius:var(--ffc-radius-sm)!important;font-size:var(--ffc-font-size-xl)!important;line-height:1.5!important;box-sizing:border-box!important;background-color:var(--ffc-bg-input)!important;color:var(--ffc-text);display:block!important;margin-bottom:var(--ffc-spacing-xl);transition:border-color var(--ffc-transition-base),box-shadow var(--ffc-transition-base);-webkit-appearance:none}.ffc-shortcode .ffc-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-form-field textarea.ffc-textarea,.ffc-shortcode textarea.ffc-input,.ffc-shortcode.ffc-form-wrapper textarea.ffc-input{height:auto!important;min-height:45px!important;max-height:300px!important;overflow-y:auto!important;resize:vertical!important}.ffc-shortcode.ffc-form-wrapper{max-width:var(--ffc-form-width);margin:30px auto;padding:30px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-form-title{margin:0 0 25px 0;font-size:var(--ffc-font-size-2xl);color:var(--ffc-text);text-align:center;font-weight:600;width:100%}.ffc-shortcode .ffc-submission-form{width:100%;max-width:calc(var(--ffc-form-width) - 150px);display:flex;flex-direction:column;align-items:stretch}.ffc-shortcode .ffc-submission-form:has(.ffc-success-response){max-width:100%}.ffc-shortcode .ffc-form-field{margin-bottom:var(--ffc-spacing-2xl);width:100%}.ffc-shortcode .ffc-form-field label{display:block;margin-bottom:var(--ffc-spacing-sm);font-weight:500;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-xl);text-transform:none}.ffc-shortcode .ffc-field-legend .ffc-required,.ffc-shortcode .ffc-form-field label .ffc-required{color:var(--ffc-danger);font-weight:700;margin-left:3px}.ffc-shortcode .ffc-radio-group{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-shortcode .ffc-radio-group label{display:flex;align-items:center;gap:var(--ffc-spacing-sm);font-weight:400;cursor:pointer}.ffc-shortcode fieldset.ffc-choice-field{border:0;margin:0 0 var(--ffc-spacing-2xl);padding:0;min-width:0}.ffc-shortcode .ffc-field-legend{display:block;padding:0;margin-bottom:var(--ffc-spacing-sm);font-weight:500;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-radio-group label.is-disabled{color:var(--ffc-text-muted);cursor:not-allowed}.ffc-shortcode .ffc-field-counter,.ffc-shortcode .ffc-field-hint{margin:var(--ffc-spacing-xs) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary)}.ffc-shortcode .ffc-field-legend+.ffc-field-hint{margin:0 0 var(--ffc-spacing-sm)}.ffc-shortcode .ffc-input+.ffc-field-hint,.ffc-shortcode .ffc-input+.ffc-length-counter{margin-top:calc(var(--ffc-spacing-xl) * -1 + var(--ffc-spacing-xs))}.ffc-shortcode .ffc-length-counter{text-align:right}.ffc-shortcode .ffc-length-counter.is-below-min{color:var(--ffc-warning-text)}.ffc-shortcode .ffc-form-info-block{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-schedule-exception-banner{max-width:calc(var(--ffc-form-width) - 150px);margin-left:auto;margin-right:auto;border:2px solid var(--ffc-primary);border-left-width:2px}.ffc-shortcode .ffc-schedule-exception-banner p{margin:0;font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-shortcode .ffc-info-title{margin:0 0 var(--ffc-spacing-sm) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-shortcode .ffc-info-content{font-size:var(--ffc-font-size-base);line-height:1.6;color:var(--ffc-text-secondary)}.ffc-shortcode .ffc-info-content p{margin:0 0 var(--ffc-spacing-sm) 0}.ffc-shortcode .ffc-info-content p:last-child{margin-bottom:0}.ffc-shortcode .ffc-info-content a{color:var(--ffc-link);text-decoration:underline}.ffc-shortcode .ffc-info-content a:hover{color:var(--ffc-link-hover)}.ffc-shortcode .ffc-info-content ol,.ffc-shortcode .ffc-info-content ul{margin:var(--ffc-spacing-sm) 0;padding-left:var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-form-embed-block{margin-bottom:var(--ffc-spacing-2xl);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-embed-caption{margin:0 0 var(--ffc-spacing-sm) 0;font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted);font-style:italic}.ffc-shortcode .ffc-embed-media{max-width:var(--ffc-form-width);width:100%}.ffc-shortcode .ffc-embed-media iframe{max-width:100%;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-embed-image{max-width:100%;height:auto;border-radius:var(--ffc-radius-sm);display:block}.ffc-shortcode .ffc-embed-media a{color:var(--ffc-link);word-break:break-all}.ffc-shortcode .ffc-lgpd-consent{margin:25px 0 var(--ffc-spacing-2xl) 0;padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring)}.ffc-shortcode .ffc-consent-label{display:flex;align-items:flex-start;gap:var(--ffc-spacing-lg);cursor:pointer;margin-bottom:0;font-weight:400}.ffc-shortcode .ffc-consent-label input[type=checkbox]{width:20px;height:20px;min-width:20px;margin:var(--ffc-spacing-3xs) 0 0 0;cursor:pointer;flex-shrink:0;accent-color:var(--ffc-primary)}.ffc-shortcode .ffc-consent-text{flex:1;font-size:var(--ffc-font-size-base);line-height:1.6;color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text a{color:var(--ffc-link);text-decoration:underline;font-weight:500;transition:color var(--ffc-transition-base)}.ffc-shortcode .ffc-consent-text a:hover{color:var(--ffc-link-hover);text-decoration:none}.ffc-shortcode .ffc-consent-text .ffc-required{color:var(--ffc-danger);font-weight:700;margin-left:3px}.ffc-shortcode .ffc-consent-description{margin:var(--ffc-spacing-lg) 0 0 0;padding:var(--ffc-spacing-lg);background:var(--ffc-bg);border-left:3px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);line-height:1.5;color:var(--ffc-text-muted);box-sizing:border-box}.ffc-shortcode .ffc-consent-description a{color:var(--ffc-link);text-decoration:none;font-weight:500}.ffc-shortcode .ffc-consent-description a:hover{text-decoration:underline}details.ffc-consent-description>summary{cursor:pointer;list-style:none;outline:0}details.ffc-consent-description>summary::-webkit-details-marker{display:none}details.ffc-consent-description>summary::marker{content:''}details.ffc-consent-description>summary:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-device-disclosure-more{margin-left:var(--ffc-spacing-2xs);color:var(--ffc-link);text-decoration:underline;font-weight:500}details.ffc-consent-description[open]>summary>.ffc-device-disclosure-more{text-decoration:none}details.ffc-consent-description>p{margin:var(--ffc-spacing-sm) 0 0 0}.ffc-shortcode .ffc-consent-label input[type=checkbox]:invalid{outline:2px solid var(--ffc-danger);outline-offset:2px}.ffc-shortcode .ffc-consent-label input[type=checkbox]:valid{outline:0}.ffc-shortcode .ffc-consent-label input[type=checkbox]:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}@media (max-width:768px){.ffc-shortcode .ffc-lgpd-consent{padding:var(--ffc-spacing-xl);margin:var(--ffc-spacing-2xl) 0 var(--ffc-spacing-xl) 0}.ffc-shortcode .ffc-consent-label{gap:var(--ffc-spacing-md)}.ffc-shortcode .ffc-consent-text{font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-consent-description{margin-left:0;font-size:var(--ffc-font-size-xs)}}@media (prefers-contrast:more){.ffc-shortcode .ffc-lgpd-consent{border-width:3px;border-color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text{color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text a{color:var(--ffc-link);text-decoration:underline}}@media print{.ffc-shortcode .ffc-lgpd-consent{display:none}}.ffc-shortcode .ffc-security-container{margin-top:25px;padding-top:25px;border-top:1px solid var(--ffc-border-light);width:100%}.ffc-shortcode .ffc-altcha-row{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-2xl);background:var(--ffc-primary-light);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-altcha-row altcha-widget{--altcha-max-width:100%;display:block;width:100%;font-family:var(--ffc-font-family);font-size:var(--ffc-font-size-xl);--altcha-border-color:var(--ffc-border);--altcha-border-radius:var(--ffc-radius-sm);--altcha-checkbox-border-color:var(--ffc-border);--altcha-color-base:var(--ffc-bg-input);--altcha-color-base-content:var(--ffc-text);--altcha-color-error:var(--ffc-danger);--altcha-color-primary:var(--ffc-primary);--altcha-color-success:var(--ffc-success);--altcha-spinner-color:var(--ffc-primary)}.ffc-shortcode .ffc-altcha-error,.ffc-shortcode .ffc-altcha-noscript{margin:var(--ffc-spacing-md) 0 0;color:var(--ffc-danger);font-weight:600}.ffc-shortcode .ffc-captcha-row{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-2xl);background:var(--ffc-primary-light);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-captcha-row label{display:block;margin-bottom:var(--ffc-spacing-md);font-weight:600;color:var(--ffc-primary);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-captcha-row .ffc-input{color:var(--ffc-text);border:2px solid var(--ffc-primary)!important;background:var(--ffc-bg-input)!important;margin-bottom:0!important}.ffc-shortcode .ffc-captcha-row .ffc-input:focus{border-color:var(--ffc-primary-hover);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-submit-btn{width:100%;padding:var(--ffc-spacing-xl);background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:none;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl);font-weight:600;cursor:pointer;transition:background var(--ffc-transition-slow),transform .1s;box-sizing:border-box}.ffc-shortcode .ffc-submit-btn:hover{background:var(--ffc-primary-hover)}.ffc-shortcode .ffc-submit-btn:active{transform:scale(.98)}.ffc-shortcode .ffc-submit-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-shortcode .ffc-submit-btn:disabled{background:var(--ffc-border);cursor:not-allowed;transform:none}.ffc-shortcode .ffc-message{margin-top:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-shortcode .ffc-message.ffc-success{background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success-border)}.ffc-shortcode .ffc-message.ffc-error{background:var(--ffc-danger-bg);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger-border)}.ffc-shortcode.ffc-verification-container{max-width:var(--ffc-form-width);margin:30px auto;padding:30px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-verification-header{margin-bottom:30px;text-align:center;width:100%}.ffc-shortcode .ffc-verification-header h2{margin:0 0 var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-2xl);color:var(--ffc-text);font-weight:600}.ffc-shortcode .ffc-verification-header p{margin:0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-verification-manual,.ffc-shortcode.ffc-verification-manual{width:100%;display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-verification-form{width:100%;max-width:calc(var(--ffc-form-width) - 150px);display:flex;flex-direction:column;align-items:stretch}.ffc-shortcode .ffc-verify-input{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border:2px solid var(--ffc-border-light);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl);font-family:monospace;text-transform:uppercase;letter-spacing:2px;text-align:center;background:var(--ffc-bg-input);color:var(--ffc-text);transition:border-color var(--ffc-transition-slow)}.ffc-shortcode .ffc-verify-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-no-js-security{margin-top:var(--ffc-spacing-2xs);width:100%}.ffc-shortcode .ffc-verify-result{margin-top:var(--ffc-spacing-2xl);width:100%}.ffc-shortcode .ffc-verify-error{padding:var(--ffc-spacing-xl);background:var(--ffc-danger-bg);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success{padding:var(--ffc-spacing-2xl);background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success-border);border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-verify-success h3{margin:0 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success p{margin:var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success hr{margin:var(--ffc-spacing-xl) 0;border:none;border-top:1px solid var(--ffc-success-border)}.ffc-shortcode .ffc-verify-success h4{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode.ffc-magic-link-container{position:relative;min-height:200px}.ffc-shortcode .ffc-certificate-preview{width:100%;max-width:700px;margin:0 auto;background:var(--ffc-bg-card);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);overflow:hidden;box-shadow:0 4px 12px var(--ffc-focus-ring);animation:fadeInUp .5s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.ffc-shortcode .ffc-preview-header{background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary);padding:var(--ffc-spacing-2xl);text-align:center}.ffc-shortcode .ffc-status-badge{display:inline-block;font-size:var(--ffc-font-size-2xl);font-weight:600;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl);background:rgba(255,255,255,.2);border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ffc-shortcode .ffc-status-badge.ffc-status-badge-success{background:rgba(212,237,218,.3)}.ffc-shortcode .ffc-certificate-preview.ffc-error{border-color:var(--ffc-danger);box-shadow:0 4px 12px var(--ffc-danger-bg)}.ffc-shortcode .ffc-certificate-preview.ffc-error .ffc-preview-header{background:linear-gradient(135deg,var(--ffc-danger) 0,var(--ffc-danger-hover) 100%)}.ffc-shortcode .ffc-status-badge.ffc-status-badge-error{background:rgba(252,240,241,.25)}.ffc-shortcode .ffc-error-message{margin:0 0 var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-lg);line-height:1.5;color:var(--ffc-text)}.ffc-shortcode .ffc-manual-verification-form{padding-top:var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-manual-verification-form h4{margin:0 0 var(--ffc-spacing-lg);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text-secondary);border-bottom:none;padding-bottom:0}.ffc-shortcode .ffc-manual-verification-form .ffc-manual-auth-code{width:100%;max-width:320px;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);font-family:'Courier New',monospace;margin:0 0 var(--ffc-spacing-lg);box-sizing:border-box}.ffc-shortcode .ffc-manual-verification-form .ffc-manual-verify-btn{display:inline-block;padding:var(--ffc-spacing-md) var(--ffc-spacing-3xl);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-preview-body{padding:30px}.ffc-shortcode .ffc-preview-body h3{margin:0 0 var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-xl);color:var(--ffc-text);font-weight:600;border-bottom:2px solid var(--ffc-primary);padding-bottom:var(--ffc-spacing-md)}.ffc-shortcode .ffc-preview-body h4{margin:25px 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-lg);color:var(--ffc-text-secondary);font-weight:600;border-bottom:2px solid var(--ffc-primary);padding-bottom:var(--ffc-spacing-md)}.ffc-shortcode .ffc-detail-row{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-lg) 0;border-bottom:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-detail-row:last-child{border-bottom:none}.ffc-shortcode .ffc-detail-row .ffc-detail-label{font-weight:600;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-detail-row .ffc-detail-value{color:var(--ffc-text);font-size:var(--ffc-font-size-base);text-align:right;max-width:60%;overflow-wrap:break-word}.ffc-shortcode .ffc-detail-row .ffc-detail-value.ffc-detail-value-code{font-family:'Courier New',monospace;font-size:var(--ffc-font-size-lg);color:var(--ffc-primary);font-weight:600;letter-spacing:1px}.ffc-shortcode .ffc-preview-body hr{margin:var(--ffc-spacing-2xl) 0;border:none;border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-verification-status{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);font-weight:600;text-transform:uppercase}.ffc-shortcode .ffc-verification-status-pending{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-shortcode .ffc-verification-status-confirmed{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-shortcode .ffc-verification-status-cancelled{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-shortcode .ffc-verification-status-completed{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-no_show{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-shortcode .ffc-verification-status-in_progress{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-submitted{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-approved{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-shortcode .ffc-verification-status-rejected{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-shortcode .ffc-verification-status-expired{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-shortcode .ffc-schedule-exception-block{margin:25px 0 var(--ffc-spacing-2xs);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-preview-body .ffc-schedule-exception-block h4{display:flex;align-items:center;gap:var(--ffc-spacing-sm);margin:0 0 var(--ffc-spacing-sm);padding-bottom:var(--ffc-spacing-sm);border-bottom:1px solid var(--ffc-warning-border);color:var(--ffc-warning-text);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-schedule-exception-icon{width:18px;height:18px;flex-shrink:0}.ffc-shortcode .ffc-schedule-exception-block .description{margin:0 0 var(--ffc-spacing-lg);font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-warning-text)}.ffc-shortcode .ffc-schedule-exception-block .ffc-detail-row{border-bottom-color:var(--ffc-warning-border);padding:var(--ffc-spacing-sm) 0}.ffc-shortcode .ffc-schedule-exception-block .ffc-detail-row:last-child{border-bottom:none;padding-bottom:0}.ffc-shortcode .ffc-preview-actions{padding:25px 30px;text-align:center;background:var(--ffc-bg-alt);border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-download-btn{display:inline-block;background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary);border:none;padding:var(--ffc-spacing-xl) 40px;font-size:var(--ffc-font-size-xl);font-weight:600;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all var(--ffc-transition-slow);box-shadow:0 4px 12px var(--ffc-focus-ring)}.ffc-shortcode .ffc-download-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px var(--ffc-focus-ring)}.ffc-shortcode .ffc-download-btn:active{transform:translateY(0);box-shadow:var(--ffc-shadow-sm)}.ffc-shortcode .ffc-download-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-shortcode .ffc-download-btn:disabled{background:var(--ffc-border);cursor:not-allowed;transform:none;box-shadow:none}.ffc-shortcode.ffc-has-geofence .ffc-submission-form{display:none!important}.ffc-shortcode.ffc-has-geofence.ffc-validated .ffc-submission-form{display:block!important}.ffc-shortcode .ffc-geofence-loading-msg{text-align:center;padding:30px var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-geofence-loading-msg p{margin:var(--ffc-spacing-2xl) 0 0 0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-geofence-blocked{background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:var(--ffc-spacing-2xl) 0;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-geofence-blocked p{margin:0;color:var(--ffc-warning-text);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-geofence-reload-btn{margin-top:var(--ffc-spacing-lg)}.ffc-shortcode .ffc-geofence-admin-bypass{background:var(--ffc-info-bg);border-left:4px solid var(--ffc-info-border);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-2xl) 0;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-geofence-admin-bypass p{margin:0;color:var(--ffc-info-text);font-size:var(--ffc-font-size-base);font-weight:500}.ffc-shortcode .ffc-geofence-bypass-badge{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);margin:0 0 var(--ffc-spacing-sm) 0;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border:1px solid var(--ffc-info-border);border-radius:var(--ffc-radius-sm);background:var(--ffc-info-bg);color:var(--ffc-info-text);font-size:var(--ffc-font-size-xs);font-weight:600;line-height:1.4;cursor:help}.ffc-shortcode .ffc-verify-loading{text-align:center;padding:60px var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-verify-loading p{margin:var(--ffc-spacing-2xl) 0 0 0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-spinner{width:50px;height:50px;margin:0 auto;border:4px solid var(--ffc-border-light);border-top:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media (max-width:768px){.ffc-shortcode .ffc-certificate-preview,.ffc-shortcode.ffc-form-wrapper,.ffc-shortcode.ffc-verification-container{padding:var(--ffc-spacing-2xl);margin:var(--ffc-spacing-xl)}.ffc-shortcode .ffc-form-title,.ffc-shortcode .ffc-verification-header h2{font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-detail-row{flex-direction:column;align-items:flex-start;gap:var(--ffc-spacing-sm)}.ffc-shortcode .ffc-detail-row .ffc-detail-value{text-align:left;max-width:100%}.ffc-shortcode .ffc-download-btn{width:100%;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-preview-body h3{font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-status-badge{font-size:var(--ffc-font-size-xl)}}@media print{.ffc-shortcode .ffc-preview-actions,.ffc-shortcode .ffc-preview-header,.ffc-shortcode .ffc-submit-btn{display:none}.ffc-shortcode .ffc-certificate-preview{border:none;box-shadow:none}}.ffc-shortcode .ffc-success-auth-code .ffc-detail-value.ffc-detail-value-code{display:inline-flex;align-items:center;gap:var(--ffc-spacing-sm);flex-wrap:wrap;justify-content:flex-end}.ffc-shortcode .ffc-success-code{white-space:nowrap}.ffc-shortcode .ffc-success-row-hint{margin:var(--ffc-spacing-xs) 0 var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);line-height:1.5}.ffc-shortcode .ffc-detail-row.ffc-success-magic-link-row{justify-content:flex-start;gap:var(--ffc-spacing-md);flex-wrap:wrap}.ffc-shortcode .ffc-magic-link-url{color:var(--ffc-primary);text-decoration:underline;font-family:'Courier New',monospace;font-size:var(--ffc-font-size-sm);word-break:break-all;flex:1 1 200px;min-width:0}.ffc-shortcode .ffc-copy-btn{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border:1px solid var(--ffc-primary);background:0 0;color:var(--ffc-primary);border-radius:var(--ffc-radius-sm);font-family:inherit;font-size:var(--ffc-font-size-xs);font-weight:600;letter-spacing:normal;line-height:1.4;cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.ffc-shortcode .ffc-copy-btn:focus,.ffc-shortcode .ffc-copy-btn:hover{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-shortcode .ffc-success-where-is-file{max-width:calc(var(--ffc-form-width) - 150px);margin:var(--ffc-spacing-xl) auto 0;padding:0;text-align:left;box-sizing:border-box}.ffc-shortcode .ffc-success-where-title{cursor:pointer;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);list-style:revert;padding:0}.ffc-shortcode .ffc-success-where-is-file[open] .ffc-success-where-title{margin-bottom:var(--ffc-spacing-sm)}.ffc-shortcode .ffc-success-where-is-file ul{margin:0;padding-left:var(--ffc-spacing-xl)}.ffc-shortcode .ffc-success-where-is-file li{font-size:var(--ffc-font-size-base);line-height:1.5;margin:var(--ffc-spacing-2xs) 0}.ffc-preflight-banner{border:1px solid var(--ffc-warning-border);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);padding:var(--ffc-spacing-xl) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);margin:var(--ffc-spacing-lg) 0;text-align:left}.ffc-preflight-banner-title{display:block;font-size:var(--ffc-font-size-lg);margin-bottom:var(--ffc-spacing-xs);color:var(--ffc-warning-text)}.ffc-preflight-banner-body,.ffc-preflight-banner-how{margin:var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-preflight-banner-how{color:var(--ffc-warning-text);font-style:italic}.ffc-preflight-try-anyway{display:inline-block;margin-top:var(--ffc-spacing-md);padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);background:0 0;color:var(--ffc-warning-text);border:1px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm);font-weight:600;cursor:pointer;transition:background .15s ease}.ffc-preflight-try-anyway:focus,.ffc-preflight-try-anyway:hover{background:var(--ffc-warning);color:var(--ffc-text-on-warning)}.ffc-submit-btn.ffc-btn-loading{opacity:.7;cursor:not-allowed}.ffc-public-csv-download .ffc-info-screen{width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-header{display:flex;align-items:center;gap:var(--ffc-spacing-lg);margin-bottom:var(--ffc-spacing-3xl);padding-bottom:var(--ffc-spacing-xl);border-bottom:1px solid var(--ffc-border);width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-header h2{margin:0;font-size:var(--ffc-font-size-2xl);font-weight:600;color:var(--ffc-text);flex:1}.ffc-public-csv-download .ffc-info-back{background:0 0;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm,4px);padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);white-space:nowrap}.ffc-public-csv-download .ffc-info-back:hover{border-color:var(--ffc-primary);color:var(--ffc-primary)}.ffc-public-csv-download .ffc-info-back-arrow{font-size:var(--ffc-font-size-lg);line-height:1}.ffc-public-csv-download .ffc-info-section{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm,6px);border:1px solid var(--ffc-border);width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-section h3{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);font-weight:600;color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.5px}.ffc-public-csv-download .ffc-info-section.ffc-info-summary{background:var(--ffc-bg-card);border-color:var(--ffc-primary);border-left:3px solid var(--ffc-primary)}.ffc-public-csv-download .ffc-info-row{display:flex;justify-content:space-between;align-items:center;gap:var(--ffc-spacing-lg);padding:var(--ffc-spacing-xs) 0;width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-row+.ffc-info-row{border-top:1px solid var(--ffc-border)}.ffc-public-csv-download .ffc-info-label{font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-value{font-size:var(--ffc-font-size-base);font-weight:500;color:var(--ffc-text);text-align:right}.ffc-public-csv-download .ffc-info-subsection{margin-bottom:var(--ffc-spacing-sm)}.ffc-public-csv-download .ffc-info-subsection:last-child{margin-bottom:0}.ffc-public-csv-download .ffc-info-sublabel{font-size:var(--ffc-font-size-sm);font-weight:500;color:var(--ffc-text-muted);display:block;margin-bottom:var(--ffc-spacing-2xs)}.ffc-public-csv-download .ffc-info-list{margin:0;padding:0 0 0 var(--ffc-spacing-2xl);list-style:disc}.ffc-public-csv-download .ffc-info-list li{font-size:var(--ffc-font-size-base);color:var(--ffc-text);padding:var(--ffc-spacing-3xs) 0}.ffc-public-csv-download .ffc-info-list-restrictions li{color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-list-locations li a{color:var(--ffc-primary);text-decoration:none}.ffc-public-csv-download .ffc-info-list-locations li a:hover{text-decoration:underline}.ffc-public-csv-download .ffc-info-alert{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm,6px);font-size:var(--ffc-font-size-base);line-height:1.5;margin-top:var(--ffc-spacing-lg)}.ffc-public-csv-download .ffc-info-alert-warning{background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);color:var(--ffc-warning-text)}.ffc-public-csv-download .ffc-info-alert-info{background:var(--ffc-info-bg);border:1px solid var(--ffc-info-border);color:var(--ffc-info-text)}.ffc-public-csv-download .ffc-info-alert-success{background:var(--ffc-success-bg);border:1px solid var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-public-csv-download .ffc-info-actions{display:flex;gap:var(--ffc-spacing-lg);margin-top:var(--ffc-spacing-3xl);flex-wrap:wrap;width:100%;box-sizing:border-box}.ffc-extend-end-modal .ffc-info-btn,.ffc-open-early-modal .ffc-info-btn,.ffc-public-csv-download .ffc-info-btn{flex:1;min-width:160px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);border:none;border-radius:var(--ffc-radius-sm,6px);font-size:var(--ffc-font-size-base);font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center}.ffc-extend-end-modal .ffc-info-btn-primary,.ffc-open-early-modal .ffc-info-btn-primary,.ffc-public-csv-download .ffc-info-btn-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-extend-end-modal .ffc-info-btn-primary:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-primary:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-primary:hover:not([disabled]){background:var(--ffc-primary-hover)}.ffc-extend-end-modal .ffc-info-btn-primary[disabled],.ffc-open-early-modal .ffc-info-btn-primary[disabled],.ffc-public-csv-download .ffc-info-btn-primary[disabled]{opacity:.5;cursor:not-allowed}.ffc-extend-end-modal .ffc-info-btn-secondary,.ffc-open-early-modal .ffc-info-btn-secondary,.ffc-public-csv-download .ffc-info-btn-secondary{background:var(--ffc-bg-alt);color:var(--ffc-text);border:1px solid var(--ffc-border)}.ffc-extend-end-modal .ffc-info-btn-secondary:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-secondary:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-secondary:hover:not([disabled]){background:var(--ffc-border)}.ffc-extend-end-modal .ffc-info-btn-secondary[disabled],.ffc-open-early-modal .ffc-info-btn-secondary[disabled],.ffc-public-csv-download .ffc-info-btn-secondary[disabled]{opacity:.5;cursor:not-allowed}.ffc-extend-end-modal .ffc-info-btn-warning,.ffc-open-early-modal .ffc-info-btn-warning,.ffc-public-csv-download .ffc-info-btn-warning{background:var(--ffc-warning);color:var(--ffc-text-on-warning);border:1px solid var(--ffc-warning)}.ffc-extend-end-modal .ffc-info-btn-warning:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-warning:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-warning:hover:not([disabled]){background:var(--ffc-warning-text);border-color:var(--ffc-warning-text)}.ffc-extend-end-modal .ffc-info-btn-warning[disabled],.ffc-open-early-modal .ffc-info-btn-warning[disabled],.ffc-public-csv-download .ffc-info-btn-warning[disabled]{opacity:.5;cursor:not-allowed}.ffc-open-early-modal{position:fixed;inset:0;z-index:100001;display:flex;align-items:center;justify-content:center}.ffc-schedule-exception-opening{display:flex;align-items:center;gap:var(--ffc-spacing-md);margin:0}.ffc-schedule-exception-spinner{display:inline-block;flex:0 0 auto;width:22px;height:22px;border:3px solid var(--ffc-border-light);border-top:3px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:spin 1s linear infinite}.ffc-public-csv-download .ffc-info-form-link{color:var(--ffc-primary);font-weight:600;text-decoration:none;white-space:nowrap}.ffc-public-csv-download .ffc-info-form-link:hover{text-decoration:underline}.ffc-public-csv-download .ffc-info-table{width:100%;border-collapse:collapse;font-size:var(--ffc-font-size-base)}.ffc-public-csv-download .ffc-info-table thead th{font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ffc-text-muted);border-bottom:1px solid var(--ffc-border);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xs)}.ffc-public-csv-download .ffc-info-table thead th.ffc-info-table-col{text-align:right}.ffc-public-csv-download .ffc-info-table td{padding:var(--ffc-spacing-xs);border-bottom:1px solid var(--ffc-border)}.ffc-public-csv-download .ffc-info-table tbody tr:last-child td{border-bottom:0}.ffc-public-csv-download .ffc-info-table .ffc-info-table-label{color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-table .ffc-info-table-value{text-align:right;font-weight:500;color:var(--ffc-text);font-variant-numeric:tabular-nums}.ffc-public-csv-download .ffc-info-table .ffc-info-table-dash{text-align:right;color:var(--ffc-border)}.ffc-public-csv-download .ffc-info-schedule-ref-note{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);margin:var(--ffc-spacing-sm) 0 0}.ffc-open-early-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-open-early-container{position:relative;z-index:var(--ffc-z-raised);width:92%;max-width:540px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg,8px);box-shadow:var(--ffc-shadow-lg);display:flex;flex-direction:column;overflow:hidden}.ffc-open-early-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary)}.ffc-open-early-header h2{margin:0;font-size:var(--ffc-font-size-xl);font-weight:600;color:var(--ffc-text-on-primary);display:flex;align-items:center;gap:var(--ffc-spacing-sm)}.ffc-open-early-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:26px;cursor:pointer;padding:0 var(--ffc-spacing-2xs);line-height:1;transition:color var(--ffc-transition-base)}.ffc-open-early-close:focus-visible,.ffc-open-early-close:hover{color:var(--ffc-inverse-on-surface);outline:0}.ffc-open-early-body{padding:var(--ffc-spacing-2xl) var(--ffc-spacing-3xl);color:var(--ffc-text);font-size:var(--ffc-font-size-base);line-height:1.55}.ffc-open-early-body p{margin:0 0 var(--ffc-spacing-lg)}.ffc-open-early-times{list-style:none;padding:0;margin:var(--ffc-spacing-sm) 0 var(--ffc-spacing-lg)}.ffc-open-early-times li{margin:var(--ffc-spacing-2xs) 0}.ffc-open-early-warn{color:var(--ffc-danger-text);background:var(--ffc-danger-bg);border-left:3px solid var(--ffc-danger);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);margin:var(--ffc-spacing-lg) 0 var(--ffc-spacing-2xs);border-radius:var(--ffc-radius-sm,4px);font-weight:500}.ffc-open-early-warn-cache{background:var(--ffc-warning-light);border-left:3px solid var(--ffc-warning);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);margin:var(--ffc-spacing-lg) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-warning-text);border-radius:var(--ffc-radius-sm,4px)}.ffc-extend-end-modal .ffc-extend-end-input{width:100%;height:45px;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm,4px);font-size:var(--ffc-font-size-lg);line-height:1.5;background:var(--ffc-bg-input);color:var(--ffc-text);box-sizing:border-box;transition:border-color var(--ffc-transition-base),box-shadow var(--ffc-transition-base)}.ffc-extend-end-modal .ffc-extend-end-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-extend-end-modal .ffc-extend-end-input-invalid{border-color:var(--ffc-danger)}.ffc-extend-end-error{margin:var(--ffc-spacing-xs) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-danger)}.ffc-open-early-actions{display:flex;justify-content:flex-end;gap:var(--ffc-spacing-lg);padding:var(--ffc-spacing-lg) var(--ffc-spacing-3xl) var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border);background:var(--ffc-bg-alt)}.ffc-open-early-actions .ffc-extend-end-cancel,.ffc-open-early-actions .ffc-open-early-cancel{flex:0 1 auto;min-width:120px;font-weight:600;padding:var(--ffc-spacing-lg) var(--ffc-spacing-3xl);font-size:var(--ffc-font-size-base)}.ffc-open-early-actions .ffc-extend-end-confirm,.ffc-open-early-actions .ffc-open-early-confirm{flex:0 1 auto;min-width:120px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-base)}.ffc-open-early-actions .ffc-open-early-confirm{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm)}#ffc-preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:var(--ffc-z-modal);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;pointer-events:none}#ffc-preview-modal.ffc-preview-visible{opacity:1;pointer-events:auto}.ffc-preview-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-preview-container{position:relative;width:90%;max-width:900px;height:85vh;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg,8px);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--ffc-shadow-lg)}#ffc-preview-modal .ffc-preview-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);background:var(--ffc-inverse-surface);color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-header h2{margin:0;font-size:var(--ffc-font-size-lg);font-weight:500;color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:var(--ffc-font-size-2xl);cursor:pointer;padding:0 var(--ffc-spacing-2xs);line-height:1}#ffc-preview-modal .ffc-preview-close:hover{color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-note{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);background:var(--ffc-primary-light);border-bottom:1px solid var(--ffc-border);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary)}#ffc-preview-modal .ffc-preview-body{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;padding:var(--ffc-spacing-lg)}.ffc-preview-stage{position:relative;flex:0 0 auto;overflow:hidden}#ffc-preview-iframe{display:block;border:none;background:#fff}@media (prefers-reduced-motion:reduce){.ffc-shortcode .ffc-certificate-preview{animation:none}.ffc-shortcode .ffc-spinner{animation:none}.ffc-shortcode .ffc-consent-text a,.ffc-shortcode .ffc-csv-progress-bar-fill,.ffc-shortcode .ffc-download-btn,.ffc-shortcode .ffc-input,.ffc-shortcode .ffc-submit-btn,.ffc-shortcode .ffc-verify-input{transition:none}}.ffc-webview-warning{display:flex;gap:var(--ffc-spacing-xl);align-items:flex-start;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-3xl) 0;background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-left:4px solid var(--ffc-warning);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-sm)}.ffc-webview-warning-icon{font-size:26px;line-height:1;color:var(--ffc-warning-text);flex-shrink:0}.ffc-webview-warning-icon::before{margin-right:0}.ffc-webview-warning-content{flex:1;min-width:0}.ffc-webview-warning-content h3{margin:0 0 var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-warning-text);line-height:1.3}.ffc-webview-warning-content p{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-text)}.ffc-webview-warning-actions{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-md)}.ffc-webview-warning-dismiss,.ffc-webview-warning-open{padding:var(--ffc-spacing-md) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-base);font-weight:600;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background var(--ffc-transition-base),border-color var(--ffc-transition-base)}.ffc-webview-warning-open{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-webview-warning-open:focus-visible,.ffc-webview-warning-open:hover{background:var(--ffc-primary-hover,var(--ffc-link-hover));outline:0}.ffc-webview-warning-dismiss{background:0 0;color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-webview-warning-dismiss:focus-visible,.ffc-webview-warning-dismiss:hover{background:var(--ffc-bg-alt);border-color:var(--ffc-border-focus);outline:0}@media (max-width:600px){.ffc-webview-warning{flex-direction:column;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-xl)}.ffc-webview-warning-actions{flex-direction:column;align-items:stretch}.ffc-webview-warning-dismiss,.ffc-webview-warning-open{width:100%;text-align:center}}.ffc-already-submitted-notice{display:flex;gap:var(--ffc-spacing-xl);align-items:flex-start;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-3xl) 0;background:var(--ffc-info-bg);border:1px solid var(--ffc-info-border);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-sm)}.ffc-already-submitted-icon{font-size:var(--ffc-font-size-2xl);line-height:1;color:var(--ffc-primary);flex-shrink:0;font-weight:700}.ffc-already-submitted-icon::before{margin-right:0}.ffc-already-submitted-content{flex:1;min-width:0}.ffc-already-submitted-content h3{margin:0 0 var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-info-text);line-height:1.3}.ffc-already-submitted-content p{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-info-text)}.ffc-already-submitted-dismiss{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);font-weight:600;background:0 0;color:var(--ffc-primary);border:1px solid var(--ffc-info-border);border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background var(--ffc-transition-base),border-color var(--ffc-transition-base)}.ffc-already-submitted-dismiss:focus-visible,.ffc-already-submitted-dismiss:hover{background:var(--ffc-primary-light);border-color:var(--ffc-primary);outline:0}@media (max-width:600px){.ffc-already-submitted-notice{flex-direction:column;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl)}.ffc-already-submitted-dismiss{width:100%;text-align:center}}@media (forced-colors:active){.ffc-extend-end-modal .ffc-info-btn-primary,.ffc-open-early-modal .ffc-info-btn-primary,.ffc-public-csv-download .ffc-info-btn-primary,.ffc-shortcode .ffc-download-btn,.ffc-shortcode .ffc-submit-btn{border:1px solid ButtonText}.ffc-shortcode .ffc-status-badge,.ffc-shortcode .ffc-status-badge.ffc-status-badge-error,.ffc-shortcode .ffc-status-badge.ffc-status-badge-success,.ffc-shortcode .ffc-verification-status-approved,.ffc-shortcode .ffc-verification-status-cancelled,.ffc-shortcode .ffc-verification-status-completed,.ffc-shortcode .ffc-verification-status-confirmed,.ffc-shortcode .ffc-verification-status-expired,.ffc-shortcode .ffc-verification-status-in_progress,.ffc-shortcode .ffc-verification-status-no_show,.ffc-shortcode .ffc-verification-status-pending,.ffc-shortcode .ffc-verification-status-rejected,.ffc-shortcode .ffc-verification-status-submitted{border:1px solid CanvasText}} +.ffc-shortcode :is(input,select,textarea,button){font-family:inherit}.ffc-shortcode .ffc-input{width:100%!important;max-width:none!important;height:45px!important;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg)!important;border:1px solid var(--ffc-border)!important;border-radius:var(--ffc-radius-sm)!important;font-size:var(--ffc-font-size-xl)!important;line-height:1.5!important;box-sizing:border-box!important;background-color:var(--ffc-bg-input)!important;color:var(--ffc-text);display:block!important;margin-bottom:var(--ffc-spacing-xl);transition:border-color var(--ffc-transition-base),box-shadow var(--ffc-transition-base);-webkit-appearance:none}.ffc-shortcode .ffc-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-form-field textarea.ffc-textarea,.ffc-shortcode textarea.ffc-input,.ffc-shortcode.ffc-form-wrapper textarea.ffc-input{height:auto!important;min-height:45px!important;max-height:300px!important;overflow-y:auto!important;resize:vertical!important}.ffc-shortcode.ffc-form-wrapper{max-width:var(--ffc-form-width);margin:30px auto;padding:30px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-form-title{margin:0 0 25px 0;font-size:var(--ffc-font-size-2xl);color:var(--ffc-text);text-align:center;font-weight:600;width:100%}.ffc-shortcode .ffc-submission-form{width:100%;max-width:calc(var(--ffc-form-width) - 150px);display:flex;flex-direction:column;align-items:stretch}.ffc-shortcode .ffc-submission-form:has(.ffc-success-response){max-width:100%}.ffc-shortcode .ffc-form-field{margin-bottom:var(--ffc-spacing-2xl);width:100%}.ffc-shortcode .ffc-form-field label{display:block;margin-bottom:var(--ffc-spacing-sm);font-weight:500;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-xl);text-transform:none}.ffc-shortcode .ffc-field-legend .ffc-required,.ffc-shortcode .ffc-form-field label .ffc-required{color:var(--ffc-danger);font-weight:700;margin-left:3px}.ffc-shortcode .ffc-radio-group{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-shortcode .ffc-radio-group label{display:flex;align-items:center;gap:var(--ffc-spacing-sm);font-weight:400;cursor:pointer}.ffc-shortcode fieldset.ffc-choice-field{border:0;margin:0 0 var(--ffc-spacing-2xl);padding:0;min-width:0}.ffc-shortcode .ffc-field-legend{display:block;padding:0;margin-bottom:var(--ffc-spacing-sm);font-weight:500;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-radio-group label.is-disabled{color:var(--ffc-text-muted);cursor:not-allowed}.ffc-shortcode .ffc-field-counter,.ffc-shortcode .ffc-field-hint{margin:var(--ffc-spacing-xs) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary)}.ffc-shortcode .ffc-field-legend+.ffc-field-hint{margin:0 0 var(--ffc-spacing-sm)}.ffc-shortcode .ffc-input+.ffc-field-hint,.ffc-shortcode .ffc-input+.ffc-length-counter{margin-top:calc(var(--ffc-spacing-xl) * -1 + var(--ffc-spacing-xs))}.ffc-shortcode .ffc-length-counter{text-align:right}.ffc-shortcode .ffc-length-counter.is-below-min{color:var(--ffc-warning-text)}.ffc-shortcode .ffc-quiz-verdict{display:flex;align-items:center;gap:var(--ffc-spacing-2xs);margin:var(--ffc-spacing-xs) 0 0;font-size:var(--ffc-font-size-sm);font-weight:600}.ffc-shortcode .ffc-quiz-right .ffc-quiz-verdict{color:var(--ffc-success-text)}.ffc-shortcode .ffc-quiz-wrong .ffc-quiz-verdict{color:var(--ffc-danger-text)}.ffc-shortcode .ffc-form-info-block{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-schedule-exception-banner{max-width:calc(var(--ffc-form-width) - 150px);margin-left:auto;margin-right:auto;border:2px solid var(--ffc-primary);border-left-width:2px}.ffc-shortcode .ffc-schedule-exception-banner p{margin:0;font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-shortcode .ffc-info-title{margin:0 0 var(--ffc-spacing-sm) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-shortcode .ffc-info-content{font-size:var(--ffc-font-size-base);line-height:1.6;color:var(--ffc-text-secondary)}.ffc-shortcode .ffc-info-content p{margin:0 0 var(--ffc-spacing-sm) 0}.ffc-shortcode .ffc-info-content p:last-child{margin-bottom:0}.ffc-shortcode .ffc-info-content a{color:var(--ffc-link);text-decoration:underline}.ffc-shortcode .ffc-info-content a:hover{color:var(--ffc-link-hover)}.ffc-shortcode .ffc-info-content ol,.ffc-shortcode .ffc-info-content ul{margin:var(--ffc-spacing-sm) 0;padding-left:var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-form-embed-block{margin-bottom:var(--ffc-spacing-2xl);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-embed-caption{margin:0 0 var(--ffc-spacing-sm) 0;font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted);font-style:italic}.ffc-shortcode .ffc-embed-media{max-width:var(--ffc-form-width);width:100%}.ffc-shortcode .ffc-embed-media iframe{max-width:100%;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-embed-image{max-width:100%;height:auto;border-radius:var(--ffc-radius-sm);display:block}.ffc-shortcode .ffc-embed-media a{color:var(--ffc-link);word-break:break-all}.ffc-shortcode .ffc-lgpd-consent{margin:25px 0 var(--ffc-spacing-2xl) 0;padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring)}.ffc-shortcode .ffc-consent-label{display:flex;align-items:flex-start;gap:var(--ffc-spacing-lg);cursor:pointer;margin-bottom:0;font-weight:400}.ffc-shortcode .ffc-consent-label input[type=checkbox]{width:20px;height:20px;min-width:20px;margin:var(--ffc-spacing-3xs) 0 0 0;cursor:pointer;flex-shrink:0;accent-color:var(--ffc-primary)}.ffc-shortcode .ffc-consent-text{flex:1;font-size:var(--ffc-font-size-base);line-height:1.6;color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text a{color:var(--ffc-link);text-decoration:underline;font-weight:500;transition:color var(--ffc-transition-base)}.ffc-shortcode .ffc-consent-text a:hover{color:var(--ffc-link-hover);text-decoration:none}.ffc-shortcode .ffc-consent-text .ffc-required{color:var(--ffc-danger);font-weight:700;margin-left:3px}.ffc-shortcode .ffc-consent-description{margin:var(--ffc-spacing-lg) 0 0 0;padding:var(--ffc-spacing-lg);background:var(--ffc-bg);border-left:3px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);line-height:1.5;color:var(--ffc-text-muted);box-sizing:border-box}.ffc-shortcode .ffc-consent-description a{color:var(--ffc-link);text-decoration:none;font-weight:500}.ffc-shortcode .ffc-consent-description a:hover{text-decoration:underline}details.ffc-consent-description>summary{cursor:pointer;list-style:none;outline:0}details.ffc-consent-description>summary::-webkit-details-marker{display:none}details.ffc-consent-description>summary::marker{content:''}details.ffc-consent-description>summary:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-device-disclosure-more{margin-left:var(--ffc-spacing-2xs);color:var(--ffc-link);text-decoration:underline;font-weight:500}details.ffc-consent-description[open]>summary>.ffc-device-disclosure-more{text-decoration:none}details.ffc-consent-description>p{margin:var(--ffc-spacing-sm) 0 0 0}.ffc-shortcode .ffc-consent-label input[type=checkbox]:invalid{outline:2px solid var(--ffc-danger);outline-offset:2px}.ffc-shortcode .ffc-consent-label input[type=checkbox]:valid{outline:0}.ffc-shortcode .ffc-consent-label input[type=checkbox]:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}@media (max-width:768px){.ffc-shortcode .ffc-lgpd-consent{padding:var(--ffc-spacing-xl);margin:var(--ffc-spacing-2xl) 0 var(--ffc-spacing-xl) 0}.ffc-shortcode .ffc-consent-label{gap:var(--ffc-spacing-md)}.ffc-shortcode .ffc-consent-text{font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-consent-description{margin-left:0;font-size:var(--ffc-font-size-xs)}}@media (prefers-contrast:more){.ffc-shortcode .ffc-lgpd-consent{border-width:3px;border-color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text{color:var(--ffc-text)}.ffc-shortcode .ffc-consent-text a{color:var(--ffc-link);text-decoration:underline}}@media print{.ffc-shortcode .ffc-lgpd-consent{display:none}}.ffc-shortcode .ffc-security-container{margin-top:25px;padding-top:25px;border-top:1px solid var(--ffc-border-light);width:100%}.ffc-shortcode .ffc-altcha-row{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-2xl);background:var(--ffc-primary-light);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-altcha-row altcha-widget{--altcha-max-width:100%;display:block;width:100%;font-family:var(--ffc-font-family);font-size:var(--ffc-font-size-xl);--altcha-border-color:var(--ffc-border);--altcha-border-radius:var(--ffc-radius-sm);--altcha-checkbox-border-color:var(--ffc-border);--altcha-color-base:var(--ffc-bg-input);--altcha-color-base-content:var(--ffc-text);--altcha-color-error:var(--ffc-danger);--altcha-color-primary:var(--ffc-primary);--altcha-color-success:var(--ffc-success);--altcha-spinner-color:var(--ffc-primary)}.ffc-shortcode .ffc-altcha-error,.ffc-shortcode .ffc-altcha-noscript{margin:var(--ffc-spacing-md) 0 0;color:var(--ffc-danger);font-weight:600}.ffc-shortcode .ffc-captcha-row{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-2xl);background:var(--ffc-primary-light);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:0 2px 8px var(--ffc-focus-ring);width:100%;box-sizing:border-box}.ffc-shortcode .ffc-captcha-row label{display:block;margin-bottom:var(--ffc-spacing-md);font-weight:600;color:var(--ffc-primary);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-captcha-row .ffc-input{color:var(--ffc-text);border:2px solid var(--ffc-primary)!important;background:var(--ffc-bg-input)!important;margin-bottom:0!important}.ffc-shortcode .ffc-captcha-row .ffc-input:focus{border-color:var(--ffc-primary-hover);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-submit-btn{width:100%;padding:var(--ffc-spacing-xl);background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:none;border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl);font-weight:600;cursor:pointer;transition:background var(--ffc-transition-slow),transform .1s;box-sizing:border-box}.ffc-shortcode .ffc-submit-btn:hover{background:var(--ffc-primary-hover)}.ffc-shortcode .ffc-submit-btn:active{transform:scale(.98)}.ffc-shortcode .ffc-submit-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-shortcode .ffc-submit-btn:disabled{background:var(--ffc-border);cursor:not-allowed;transform:none}.ffc-shortcode .ffc-message{margin-top:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-shortcode .ffc-message.ffc-success{background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success-border)}.ffc-shortcode .ffc-message.ffc-error{background:var(--ffc-danger-bg);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger-border)}.ffc-shortcode.ffc-verification-container{max-width:var(--ffc-form-width);margin:30px auto;padding:30px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-verification-header{margin-bottom:30px;text-align:center;width:100%}.ffc-shortcode .ffc-verification-header h2{margin:0 0 var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-2xl);color:var(--ffc-text);font-weight:600}.ffc-shortcode .ffc-verification-header p{margin:0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-verification-manual,.ffc-shortcode.ffc-verification-manual{width:100%;display:flex;flex-direction:column;align-items:center}.ffc-shortcode .ffc-verification-form{width:100%;max-width:calc(var(--ffc-form-width) - 150px);display:flex;flex-direction:column;align-items:stretch}.ffc-shortcode .ffc-verify-input{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border:2px solid var(--ffc-border-light);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl);font-family:monospace;text-transform:uppercase;letter-spacing:2px;text-align:center;background:var(--ffc-bg-input);color:var(--ffc-text);transition:border-color var(--ffc-transition-slow)}.ffc-shortcode .ffc-verify-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-shortcode .ffc-no-js-security{margin-top:var(--ffc-spacing-2xs);width:100%}.ffc-shortcode .ffc-verify-result{margin-top:var(--ffc-spacing-2xl);width:100%}.ffc-shortcode .ffc-verify-error{padding:var(--ffc-spacing-xl);background:var(--ffc-danger-bg);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success{padding:var(--ffc-spacing-2xl);background:var(--ffc-success-bg);color:var(--ffc-success-text);border:1px solid var(--ffc-success-border);border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-verify-success h3{margin:0 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success p{margin:var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-verify-success hr{margin:var(--ffc-spacing-xl) 0;border:none;border-top:1px solid var(--ffc-success-border)}.ffc-shortcode .ffc-verify-success h4{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-md) 0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode.ffc-magic-link-container{position:relative;min-height:200px}.ffc-shortcode .ffc-certificate-preview{width:100%;max-width:700px;margin:0 auto;background:var(--ffc-bg-card);border:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);overflow:hidden;box-shadow:0 4px 12px var(--ffc-focus-ring);animation:fadeInUp .5s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.ffc-shortcode .ffc-preview-header{background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary);padding:var(--ffc-spacing-2xl);text-align:center}.ffc-shortcode .ffc-status-badge{display:inline-block;font-size:var(--ffc-font-size-2xl);font-weight:600;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl);background:rgba(255,255,255,.2);border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ffc-shortcode .ffc-status-badge.ffc-status-badge-success{background:rgba(212,237,218,.3)}.ffc-shortcode .ffc-certificate-preview.ffc-error{border-color:var(--ffc-danger);box-shadow:0 4px 12px var(--ffc-danger-bg)}.ffc-shortcode .ffc-certificate-preview.ffc-error .ffc-preview-header{background:linear-gradient(135deg,var(--ffc-danger) 0,var(--ffc-danger-hover) 100%)}.ffc-shortcode .ffc-status-badge.ffc-status-badge-error{background:rgba(252,240,241,.25)}.ffc-shortcode .ffc-error-message{margin:0 0 var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-lg);line-height:1.5;color:var(--ffc-text)}.ffc-shortcode .ffc-manual-verification-form{padding-top:var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-manual-verification-form h4{margin:0 0 var(--ffc-spacing-lg);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text-secondary);border-bottom:none;padding-bottom:0}.ffc-shortcode .ffc-manual-verification-form .ffc-manual-auth-code{width:100%;max-width:320px;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);font-family:'Courier New',monospace;margin:0 0 var(--ffc-spacing-lg);box-sizing:border-box}.ffc-shortcode .ffc-manual-verification-form .ffc-manual-verify-btn{display:inline-block;padding:var(--ffc-spacing-md) var(--ffc-spacing-3xl);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-preview-body{padding:30px}.ffc-shortcode .ffc-preview-body h3{margin:0 0 var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-xl);color:var(--ffc-text);font-weight:600;border-bottom:2px solid var(--ffc-primary);padding-bottom:var(--ffc-spacing-md)}.ffc-shortcode .ffc-preview-body h4{margin:25px 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-lg);color:var(--ffc-text-secondary);font-weight:600;border-bottom:2px solid var(--ffc-primary);padding-bottom:var(--ffc-spacing-md)}.ffc-shortcode .ffc-detail-row{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-lg) 0;border-bottom:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-detail-row:last-child{border-bottom:none}.ffc-shortcode .ffc-detail-row .ffc-detail-label{font-weight:600;color:var(--ffc-text-secondary);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-detail-row .ffc-detail-value{color:var(--ffc-text);font-size:var(--ffc-font-size-base);text-align:right;max-width:60%;overflow-wrap:break-word}.ffc-shortcode .ffc-detail-row .ffc-detail-value.ffc-detail-value-code{font-family:'Courier New',monospace;font-size:var(--ffc-font-size-lg);color:var(--ffc-primary);font-weight:600;letter-spacing:1px}.ffc-shortcode .ffc-preview-body hr{margin:var(--ffc-spacing-2xl) 0;border:none;border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-verification-status{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);font-weight:600;text-transform:uppercase}.ffc-shortcode .ffc-verification-status-pending{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-shortcode .ffc-verification-status-confirmed{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-shortcode .ffc-verification-status-cancelled{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-shortcode .ffc-verification-status-completed{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-no_show{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-shortcode .ffc-verification-status-in_progress{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-submitted{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-shortcode .ffc-verification-status-approved{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-shortcode .ffc-verification-status-rejected{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-shortcode .ffc-verification-status-expired{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-shortcode .ffc-schedule-exception-block{margin:25px 0 var(--ffc-spacing-2xs);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-preview-body .ffc-schedule-exception-block h4{display:flex;align-items:center;gap:var(--ffc-spacing-sm);margin:0 0 var(--ffc-spacing-sm);padding-bottom:var(--ffc-spacing-sm);border-bottom:1px solid var(--ffc-warning-border);color:var(--ffc-warning-text);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-schedule-exception-icon{width:18px;height:18px;flex-shrink:0}.ffc-shortcode .ffc-schedule-exception-block .description{margin:0 0 var(--ffc-spacing-lg);font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-warning-text)}.ffc-shortcode .ffc-schedule-exception-block .ffc-detail-row{border-bottom-color:var(--ffc-warning-border);padding:var(--ffc-spacing-sm) 0}.ffc-shortcode .ffc-schedule-exception-block .ffc-detail-row:last-child{border-bottom:none;padding-bottom:0}.ffc-shortcode .ffc-preview-actions{padding:25px 30px;text-align:center;background:var(--ffc-bg-alt);border-top:1px solid var(--ffc-border-light)}.ffc-shortcode .ffc-download-btn{display:inline-block;background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary);border:none;padding:var(--ffc-spacing-xl) 40px;font-size:var(--ffc-font-size-xl);font-weight:600;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all var(--ffc-transition-slow);box-shadow:0 4px 12px var(--ffc-focus-ring)}.ffc-shortcode .ffc-download-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px var(--ffc-focus-ring)}.ffc-shortcode .ffc-download-btn:active{transform:translateY(0);box-shadow:var(--ffc-shadow-sm)}.ffc-shortcode .ffc-download-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-shortcode .ffc-download-btn:disabled{background:var(--ffc-border);cursor:not-allowed;transform:none;box-shadow:none}.ffc-shortcode.ffc-has-geofence .ffc-submission-form{display:none!important}.ffc-shortcode.ffc-has-geofence.ffc-validated .ffc-submission-form{display:block!important}.ffc-shortcode .ffc-geofence-loading-msg{text-align:center;padding:30px var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-geofence-loading-msg p{margin:var(--ffc-spacing-2xl) 0 0 0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-lg)}.ffc-shortcode .ffc-geofence-blocked{background:var(--ffc-warning-bg);border-left:4px solid var(--ffc-warning-border);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:var(--ffc-spacing-2xl) 0;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-geofence-blocked p{margin:0;color:var(--ffc-warning-text);font-size:var(--ffc-font-size-base)}.ffc-shortcode .ffc-geofence-reload-btn{margin-top:var(--ffc-spacing-lg)}.ffc-shortcode .ffc-geofence-admin-bypass{background:var(--ffc-info-bg);border-left:4px solid var(--ffc-info-border);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-2xl) 0;border-radius:var(--ffc-radius-sm)}.ffc-shortcode .ffc-geofence-admin-bypass p{margin:0;color:var(--ffc-info-text);font-size:var(--ffc-font-size-base);font-weight:500}.ffc-shortcode .ffc-geofence-bypass-badge{display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);margin:0 0 var(--ffc-spacing-sm) 0;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border:1px solid var(--ffc-info-border);border-radius:var(--ffc-radius-sm);background:var(--ffc-info-bg);color:var(--ffc-info-text);font-size:var(--ffc-font-size-xs);font-weight:600;line-height:1.4;cursor:help}.ffc-shortcode .ffc-verify-loading{text-align:center;padding:60px var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-verify-loading p{margin:var(--ffc-spacing-2xl) 0 0 0;color:var(--ffc-text-muted);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-spinner{width:50px;height:50px;margin:0 auto;border:4px solid var(--ffc-border-light);border-top:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media (max-width:768px){.ffc-shortcode .ffc-certificate-preview,.ffc-shortcode.ffc-form-wrapper,.ffc-shortcode.ffc-verification-container{padding:var(--ffc-spacing-2xl);margin:var(--ffc-spacing-xl)}.ffc-shortcode .ffc-form-title,.ffc-shortcode .ffc-verification-header h2{font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-detail-row{flex-direction:column;align-items:flex-start;gap:var(--ffc-spacing-sm)}.ffc-shortcode .ffc-detail-row .ffc-detail-value{text-align:left;max-width:100%}.ffc-shortcode .ffc-download-btn{width:100%;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-preview-body h3{font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-status-badge{font-size:var(--ffc-font-size-xl)}}@media print{.ffc-shortcode .ffc-preview-actions,.ffc-shortcode .ffc-preview-header,.ffc-shortcode .ffc-submit-btn{display:none}.ffc-shortcode .ffc-certificate-preview{border:none;box-shadow:none}}.ffc-shortcode .ffc-success-auth-code .ffc-detail-value.ffc-detail-value-code{display:inline-flex;align-items:center;gap:var(--ffc-spacing-sm);flex-wrap:wrap;justify-content:flex-end}.ffc-shortcode .ffc-success-code{white-space:nowrap}.ffc-shortcode .ffc-success-row-hint{margin:var(--ffc-spacing-xs) 0 var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);line-height:1.5}.ffc-shortcode .ffc-detail-row.ffc-success-magic-link-row{justify-content:flex-start;gap:var(--ffc-spacing-md);flex-wrap:wrap}.ffc-shortcode .ffc-magic-link-url{color:var(--ffc-primary);text-decoration:underline;font-family:'Courier New',monospace;font-size:var(--ffc-font-size-sm);word-break:break-all;flex:1 1 200px;min-width:0}.ffc-shortcode .ffc-copy-btn{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border:1px solid var(--ffc-primary);background:0 0;color:var(--ffc-primary);border-radius:var(--ffc-radius-sm);font-family:inherit;font-size:var(--ffc-font-size-xs);font-weight:600;letter-spacing:normal;line-height:1.4;cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.ffc-shortcode .ffc-copy-btn:focus,.ffc-shortcode .ffc-copy-btn:hover{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-shortcode .ffc-success-where-is-file{max-width:calc(var(--ffc-form-width) - 150px);margin:var(--ffc-spacing-xl) auto 0;padding:0;text-align:left;box-sizing:border-box}.ffc-shortcode .ffc-success-where-title{cursor:pointer;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);list-style:revert;padding:0}.ffc-shortcode .ffc-success-where-is-file[open] .ffc-success-where-title{margin-bottom:var(--ffc-spacing-sm)}.ffc-shortcode .ffc-success-where-is-file ul{margin:0;padding-left:var(--ffc-spacing-xl)}.ffc-shortcode .ffc-success-where-is-file li{font-size:var(--ffc-font-size-base);line-height:1.5;margin:var(--ffc-spacing-2xs) 0}.ffc-preflight-banner{border:1px solid var(--ffc-warning-border);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);padding:var(--ffc-spacing-xl) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);margin:var(--ffc-spacing-lg) 0;text-align:left}.ffc-preflight-banner-title{display:block;font-size:var(--ffc-font-size-lg);margin-bottom:var(--ffc-spacing-xs);color:var(--ffc-warning-text)}.ffc-preflight-banner-body,.ffc-preflight-banner-how{margin:var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-preflight-banner-how{color:var(--ffc-warning-text);font-style:italic}.ffc-preflight-try-anyway{display:inline-block;margin-top:var(--ffc-spacing-md);padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);background:0 0;color:var(--ffc-warning-text);border:1px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm);font-weight:600;cursor:pointer;transition:background .15s ease}.ffc-preflight-try-anyway:focus,.ffc-preflight-try-anyway:hover{background:var(--ffc-warning);color:var(--ffc-text-on-warning)}.ffc-submit-btn.ffc-btn-loading{opacity:.7;cursor:not-allowed}.ffc-public-csv-download .ffc-info-screen{width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-header{display:flex;align-items:center;gap:var(--ffc-spacing-lg);margin-bottom:var(--ffc-spacing-3xl);padding-bottom:var(--ffc-spacing-xl);border-bottom:1px solid var(--ffc-border);width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-header h2{margin:0;font-size:var(--ffc-font-size-2xl);font-weight:600;color:var(--ffc-text);flex:1}.ffc-public-csv-download .ffc-info-back{background:0 0;border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm,4px);padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:var(--ffc-spacing-2xs);white-space:nowrap}.ffc-public-csv-download .ffc-info-back:hover{border-color:var(--ffc-primary);color:var(--ffc-primary)}.ffc-public-csv-download .ffc-info-back-arrow{font-size:var(--ffc-font-size-lg);line-height:1}.ffc-public-csv-download .ffc-info-section{margin-bottom:var(--ffc-spacing-2xl);padding:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm,6px);border:1px solid var(--ffc-border);width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-section h3{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);font-weight:600;color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.5px}.ffc-public-csv-download .ffc-info-section.ffc-info-summary{background:var(--ffc-bg-card);border-color:var(--ffc-primary);border-left:3px solid var(--ffc-primary)}.ffc-public-csv-download .ffc-info-row{display:flex;justify-content:space-between;align-items:center;gap:var(--ffc-spacing-lg);padding:var(--ffc-spacing-xs) 0;width:100%;box-sizing:border-box}.ffc-public-csv-download .ffc-info-row+.ffc-info-row{border-top:1px solid var(--ffc-border)}.ffc-public-csv-download .ffc-info-label{font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-value{font-size:var(--ffc-font-size-base);font-weight:500;color:var(--ffc-text);text-align:right}.ffc-public-csv-download .ffc-info-subsection{margin-bottom:var(--ffc-spacing-sm)}.ffc-public-csv-download .ffc-info-subsection:last-child{margin-bottom:0}.ffc-public-csv-download .ffc-info-sublabel{font-size:var(--ffc-font-size-sm);font-weight:500;color:var(--ffc-text-muted);display:block;margin-bottom:var(--ffc-spacing-2xs)}.ffc-public-csv-download .ffc-info-list{margin:0;padding:0 0 0 var(--ffc-spacing-2xl);list-style:disc}.ffc-public-csv-download .ffc-info-list li{font-size:var(--ffc-font-size-base);color:var(--ffc-text);padding:var(--ffc-spacing-3xs) 0}.ffc-public-csv-download .ffc-info-list-restrictions li{color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-list-locations li a{color:var(--ffc-primary);text-decoration:none}.ffc-public-csv-download .ffc-info-list-locations li a:hover{text-decoration:underline}.ffc-public-csv-download .ffc-info-alert{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-sm,6px);font-size:var(--ffc-font-size-base);line-height:1.5;margin-top:var(--ffc-spacing-lg)}.ffc-public-csv-download .ffc-info-alert-warning{background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);color:var(--ffc-warning-text)}.ffc-public-csv-download .ffc-info-alert-info{background:var(--ffc-info-bg);border:1px solid var(--ffc-info-border);color:var(--ffc-info-text)}.ffc-public-csv-download .ffc-info-alert-success{background:var(--ffc-success-bg);border:1px solid var(--ffc-success-border);color:var(--ffc-success-text)}.ffc-public-csv-download .ffc-info-actions{display:flex;gap:var(--ffc-spacing-lg);margin-top:var(--ffc-spacing-3xl);flex-wrap:wrap;width:100%;box-sizing:border-box}.ffc-extend-end-modal .ffc-info-btn,.ffc-open-early-modal .ffc-info-btn,.ffc-public-csv-download .ffc-info-btn{flex:1;min-width:160px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);border:none;border-radius:var(--ffc-radius-sm,6px);font-size:var(--ffc-font-size-base);font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center}.ffc-extend-end-modal .ffc-info-btn-primary,.ffc-open-early-modal .ffc-info-btn-primary,.ffc-public-csv-download .ffc-info-btn-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-extend-end-modal .ffc-info-btn-primary:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-primary:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-primary:hover:not([disabled]){background:var(--ffc-primary-hover)}.ffc-extend-end-modal .ffc-info-btn-primary[disabled],.ffc-open-early-modal .ffc-info-btn-primary[disabled],.ffc-public-csv-download .ffc-info-btn-primary[disabled]{opacity:.5;cursor:not-allowed}.ffc-extend-end-modal .ffc-info-btn-secondary,.ffc-open-early-modal .ffc-info-btn-secondary,.ffc-public-csv-download .ffc-info-btn-secondary{background:var(--ffc-bg-alt);color:var(--ffc-text);border:1px solid var(--ffc-border)}.ffc-extend-end-modal .ffc-info-btn-secondary:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-secondary:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-secondary:hover:not([disabled]){background:var(--ffc-border)}.ffc-extend-end-modal .ffc-info-btn-secondary[disabled],.ffc-open-early-modal .ffc-info-btn-secondary[disabled],.ffc-public-csv-download .ffc-info-btn-secondary[disabled]{opacity:.5;cursor:not-allowed}.ffc-extend-end-modal .ffc-info-btn-warning,.ffc-open-early-modal .ffc-info-btn-warning,.ffc-public-csv-download .ffc-info-btn-warning{background:var(--ffc-warning);color:var(--ffc-text-on-warning);border:1px solid var(--ffc-warning)}.ffc-extend-end-modal .ffc-info-btn-warning:hover:not([disabled]),.ffc-open-early-modal .ffc-info-btn-warning:hover:not([disabled]),.ffc-public-csv-download .ffc-info-btn-warning:hover:not([disabled]){background:var(--ffc-warning-text);border-color:var(--ffc-warning-text)}.ffc-extend-end-modal .ffc-info-btn-warning[disabled],.ffc-open-early-modal .ffc-info-btn-warning[disabled],.ffc-public-csv-download .ffc-info-btn-warning[disabled]{opacity:.5;cursor:not-allowed}.ffc-open-early-modal{position:fixed;inset:0;z-index:100001;display:flex;align-items:center;justify-content:center}.ffc-schedule-exception-opening{display:flex;align-items:center;gap:var(--ffc-spacing-md);margin:0}.ffc-schedule-exception-spinner{display:inline-block;flex:0 0 auto;width:22px;height:22px;border:3px solid var(--ffc-border-light);border-top:3px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:spin 1s linear infinite}.ffc-public-csv-download .ffc-info-form-link{color:var(--ffc-primary);font-weight:600;text-decoration:none;white-space:nowrap}.ffc-public-csv-download .ffc-info-form-link:hover{text-decoration:underline}.ffc-public-csv-download .ffc-info-table{width:100%;border-collapse:collapse;font-size:var(--ffc-font-size-base)}.ffc-public-csv-download .ffc-info-table thead th{font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ffc-text-muted);border-bottom:1px solid var(--ffc-border);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xs)}.ffc-public-csv-download .ffc-info-table thead th.ffc-info-table-col{text-align:right}.ffc-public-csv-download .ffc-info-table td{padding:var(--ffc-spacing-xs);border-bottom:1px solid var(--ffc-border)}.ffc-public-csv-download .ffc-info-table tbody tr:last-child td{border-bottom:0}.ffc-public-csv-download .ffc-info-table .ffc-info-table-label{color:var(--ffc-text-muted)}.ffc-public-csv-download .ffc-info-table .ffc-info-table-value{text-align:right;font-weight:500;color:var(--ffc-text);font-variant-numeric:tabular-nums}.ffc-public-csv-download .ffc-info-table .ffc-info-table-dash{text-align:right;color:var(--ffc-border)}.ffc-public-csv-download .ffc-info-schedule-ref-note{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);margin:var(--ffc-spacing-sm) 0 0}.ffc-open-early-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-open-early-container{position:relative;z-index:var(--ffc-z-raised);width:92%;max-width:540px;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg,8px);box-shadow:var(--ffc-shadow-lg);display:flex;flex-direction:column;overflow:hidden}.ffc-open-early-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);background:linear-gradient(135deg,var(--ffc-primary) 0,var(--ffc-primary-hover) 100%);color:var(--ffc-text-on-primary)}.ffc-open-early-header h2{margin:0;font-size:var(--ffc-font-size-xl);font-weight:600;color:var(--ffc-text-on-primary);display:flex;align-items:center;gap:var(--ffc-spacing-sm)}.ffc-open-early-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:26px;cursor:pointer;padding:0 var(--ffc-spacing-2xs);line-height:1;transition:color var(--ffc-transition-base)}.ffc-open-early-close:focus-visible,.ffc-open-early-close:hover{color:var(--ffc-inverse-on-surface);outline:0}.ffc-open-early-body{padding:var(--ffc-spacing-2xl) var(--ffc-spacing-3xl);color:var(--ffc-text);font-size:var(--ffc-font-size-base);line-height:1.55}.ffc-open-early-body p{margin:0 0 var(--ffc-spacing-lg)}.ffc-open-early-times{list-style:none;padding:0;margin:var(--ffc-spacing-sm) 0 var(--ffc-spacing-lg)}.ffc-open-early-times li{margin:var(--ffc-spacing-2xs) 0}.ffc-open-early-warn{color:var(--ffc-danger-text);background:var(--ffc-danger-bg);border-left:3px solid var(--ffc-danger);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);margin:var(--ffc-spacing-lg) 0 var(--ffc-spacing-2xs);border-radius:var(--ffc-radius-sm,4px);font-weight:500}.ffc-open-early-warn-cache{background:var(--ffc-warning-light);border-left:3px solid var(--ffc-warning);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);margin:var(--ffc-spacing-lg) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-warning-text);border-radius:var(--ffc-radius-sm,4px)}.ffc-extend-end-modal .ffc-extend-end-input{width:100%;height:45px;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm,4px);font-size:var(--ffc-font-size-lg);line-height:1.5;background:var(--ffc-bg-input);color:var(--ffc-text);box-sizing:border-box;transition:border-color var(--ffc-transition-base),box-shadow var(--ffc-transition-base)}.ffc-extend-end-modal .ffc-extend-end-input:focus{outline:0;border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-extend-end-modal .ffc-extend-end-input-invalid{border-color:var(--ffc-danger)}.ffc-extend-end-error{margin:var(--ffc-spacing-xs) 0 0;font-size:var(--ffc-font-size-sm);color:var(--ffc-danger)}.ffc-open-early-actions{display:flex;justify-content:flex-end;gap:var(--ffc-spacing-lg);padding:var(--ffc-spacing-lg) var(--ffc-spacing-3xl) var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border);background:var(--ffc-bg-alt)}.ffc-open-early-actions .ffc-extend-end-cancel,.ffc-open-early-actions .ffc-open-early-cancel{flex:0 1 auto;min-width:120px;font-weight:600;padding:var(--ffc-spacing-lg) var(--ffc-spacing-3xl);font-size:var(--ffc-font-size-base)}.ffc-open-early-actions .ffc-extend-end-confirm,.ffc-open-early-actions .ffc-open-early-confirm{flex:0 1 auto;min-width:120px;padding:var(--ffc-spacing-lg) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-base)}.ffc-open-early-actions .ffc-open-early-confirm{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm)}#ffc-preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:var(--ffc-z-modal);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;pointer-events:none}#ffc-preview-modal.ffc-preview-visible{opacity:1;pointer-events:auto}.ffc-preview-backdrop{position:absolute;inset:0;background:var(--ffc-bg-overlay)}.ffc-preview-container{position:relative;width:90%;max-width:900px;height:85vh;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-lg,8px);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--ffc-shadow-lg)}#ffc-preview-modal .ffc-preview-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);background:var(--ffc-inverse-surface);color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-header h2{margin:0;font-size:var(--ffc-font-size-lg);font-weight:500;color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-close{background:0 0;border:none;color:var(--ffc-inverse-on-surface);font-size:var(--ffc-font-size-2xl);cursor:pointer;padding:0 var(--ffc-spacing-2xs);line-height:1}#ffc-preview-modal .ffc-preview-close:hover{color:var(--ffc-inverse-on-surface)}#ffc-preview-modal .ffc-preview-note{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);background:var(--ffc-primary-light);border-bottom:1px solid var(--ffc-border);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary)}#ffc-preview-modal .ffc-preview-body{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;padding:var(--ffc-spacing-lg)}.ffc-preview-stage{position:relative;flex:0 0 auto;overflow:hidden}#ffc-preview-iframe{display:block;border:none;background:#fff}@media (prefers-reduced-motion:reduce){.ffc-shortcode .ffc-certificate-preview{animation:none}.ffc-shortcode .ffc-spinner{animation:none}.ffc-shortcode .ffc-consent-text a,.ffc-shortcode .ffc-csv-progress-bar-fill,.ffc-shortcode .ffc-download-btn,.ffc-shortcode .ffc-input,.ffc-shortcode .ffc-submit-btn,.ffc-shortcode .ffc-verify-input{transition:none}}.ffc-webview-warning{display:flex;gap:var(--ffc-spacing-xl);align-items:flex-start;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-3xl) 0;background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-left:4px solid var(--ffc-warning);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-sm)}.ffc-webview-warning-icon{font-size:26px;line-height:1;color:var(--ffc-warning-text);flex-shrink:0}.ffc-webview-warning-icon::before{margin-right:0}.ffc-webview-warning-content{flex:1;min-width:0}.ffc-webview-warning-content h3{margin:0 0 var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-warning-text);line-height:1.3}.ffc-webview-warning-content p{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-text)}.ffc-webview-warning-actions{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-md)}.ffc-webview-warning-dismiss,.ffc-webview-warning-open{padding:var(--ffc-spacing-md) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-base);font-weight:600;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background var(--ffc-transition-base),border-color var(--ffc-transition-base)}.ffc-webview-warning-open{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-webview-warning-open:focus-visible,.ffc-webview-warning-open:hover{background:var(--ffc-primary-hover,var(--ffc-link-hover));outline:0}.ffc-webview-warning-dismiss{background:0 0;color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-webview-warning-dismiss:focus-visible,.ffc-webview-warning-dismiss:hover{background:var(--ffc-bg-alt);border-color:var(--ffc-border-focus);outline:0}@media (max-width:600px){.ffc-webview-warning{flex-direction:column;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-xl)}.ffc-webview-warning-actions{flex-direction:column;align-items:stretch}.ffc-webview-warning-dismiss,.ffc-webview-warning-open{width:100%;text-align:center}}.ffc-already-submitted-notice{display:flex;gap:var(--ffc-spacing-xl);align-items:flex-start;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);margin:0 0 var(--ffc-spacing-3xl) 0;background:var(--ffc-info-bg);border:1px solid var(--ffc-info-border);border-left:4px solid var(--ffc-primary);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-sm)}.ffc-already-submitted-icon{font-size:var(--ffc-font-size-2xl);line-height:1;color:var(--ffc-primary);flex-shrink:0;font-weight:700}.ffc-already-submitted-icon::before{margin-right:0}.ffc-already-submitted-content{flex:1;min-width:0}.ffc-already-submitted-content h3{margin:0 0 var(--ffc-spacing-xs) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-info-text);line-height:1.3}.ffc-already-submitted-content p{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-base);line-height:1.5;color:var(--ffc-info-text)}.ffc-already-submitted-dismiss{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);font-weight:600;background:0 0;color:var(--ffc-primary);border:1px solid var(--ffc-info-border);border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background var(--ffc-transition-base),border-color var(--ffc-transition-base)}.ffc-already-submitted-dismiss:focus-visible,.ffc-already-submitted-dismiss:hover{background:var(--ffc-primary-light);border-color:var(--ffc-primary);outline:0}@media (max-width:600px){.ffc-already-submitted-notice{flex-direction:column;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl)}.ffc-already-submitted-dismiss{width:100%;text-align:center}}@media (forced-colors:active){.ffc-extend-end-modal .ffc-info-btn-primary,.ffc-open-early-modal .ffc-info-btn-primary,.ffc-public-csv-download .ffc-info-btn-primary,.ffc-shortcode .ffc-download-btn,.ffc-shortcode .ffc-submit-btn{border:1px solid ButtonText}.ffc-shortcode .ffc-status-badge,.ffc-shortcode .ffc-status-badge.ffc-status-badge-error,.ffc-shortcode .ffc-status-badge.ffc-status-badge-success,.ffc-shortcode .ffc-verification-status-approved,.ffc-shortcode .ffc-verification-status-cancelled,.ffc-shortcode .ffc-verification-status-completed,.ffc-shortcode .ffc-verification-status-confirmed,.ffc-shortcode .ffc-verification-status-expired,.ffc-shortcode .ffc-verification-status-in_progress,.ffc-shortcode .ffc-verification-status-no_show,.ffc-shortcode .ffc-verification-status-pending,.ffc-shortcode .ffc-verification-status-rejected,.ffc-shortcode .ffc-verification-status-submitted{border:1px solid CanvasText}} /*# sourceMappingURL=ffc-frontend.min.css.map */ \ No newline at end of file diff --git a/assets/js/ffc-admin-field-builder.js b/assets/js/ffc-admin-field-builder.js index b8d741f21..67c42bdda 100644 --- a/assets/js/ffc-admin-field-builder.js +++ b/assets/js/ffc-admin-field-builder.js @@ -19,6 +19,8 @@ 'use strict'; var CHOICE_TYPES = ['select', 'radio', 'checkbox']; + var TEXT_TYPES = ['text', 'textarea']; + var RANGE_TYPES = ['number', 'date']; var fieldCounter = 0; @@ -70,12 +72,70 @@ $row.find('.ffc-hidden-value-field').toggleClass('ffc-hidden', type !== 'hidden'); $row.find('.ffc-standard-row').toggleClass('ffc-hidden', isInfo || isEmbed); $row.find('.ffc-options-field').toggleClass('ffc-hidden', !isChoice); - $row.find('.ffc-quiz-points').toggleClass('ffc-hidden', !(isChoice && quizOn())); $row.find('[data-ffc-types]').each(function() { var types = String($(this).attr('data-ffc-types')).split(' '); $(this).toggleClass('ffc-hidden', types.indexOf(type) === -1); }); $row.find('.ffc-type-desc').text(typeDescription(type)); + applyQuiz($row, type); + } + + /** + * Show the quiz settings a row's type and choices call for (#1730). + */ + function applyQuiz($row, type) { + type = type || String($row.find('.ffc-field-type-selector').val() || ''); + var $block = $row.find('.ffc-field-quiz'); + var scorable = String($block.attr('data-ffc-quiz-types') || '').split(' ').indexOf(type) !== -1; + var on = quizOn() && scorable; + var scored = on && $block.find('.ffc-quiz-scored').is(':checked'); + var isChoice = CHOICE_TYPES.indexOf(type) !== -1; + var mode = isChoice ? String($block.find('.ffc-quiz-mode').val()) : ''; + var textNone = TEXT_TYPES.indexOf(type) !== -1 && $block.find('.ffc-quiz-text').val() === 'none'; + + $block.toggleClass('ffc-hidden', !on); + $block.find('.ffc-field-quiz-body').toggleClass('ffc-hidden', !scored); + $row.find('.ffc-choice-quiz').each(function() { + $(this).toggleClass('ffc-hidden', !(scored && isChoice && $(this).attr('data-ffc-quiz-mode') === mode)); + }); + $block.find('.ffc-quiz-points-setting').toggleClass('ffc-hidden', (isChoice && mode === 'points') || textNone); + $block.find('[data-ffc-types]').each(function() { + $(this).toggleClass('ffc-hidden', String($(this).attr('data-ffc-types')).split(' ').indexOf(type) === -1); + }); + $block.find('[data-ffc-quiz-help="correct"]').toggleClass('ffc-hidden', !(isChoice && mode === 'correct')); + $block.find('[data-ffc-quiz-help="points"]').toggleClass('ffc-hidden', !(isChoice && mode === 'points')); + $block.find('[data-ffc-quiz-help="range"]').toggleClass('ffc-hidden', RANGE_TYPES.indexOf(type) === -1); + checkMaxSelect($row); + } + + /** + * A checkbox scored by its correct options cannot cap the selections + * below how many are correct: nobody could answer it right. + */ + function checkMaxSelect($row) { + var $max = $row.find('input[name$="[max_select]"]'); + if (!$max.length || !$max[0].setCustomValidity) { + return; + } + var type = String($row.find('.ffc-field-type-selector').val() || ''); + var limit = parseInt($max.val(), 10); + var correct = $row.find('.ffc-choice-correct-value').filter(function() { + return this.value === '1'; + }).length; + var applies = type === 'checkbox' && quizOn() && + $row.find('.ffc-quiz-scored').is(':checked') && + $row.find('.ffc-quiz-mode').val() === 'correct'; + var message = ''; + if (applies && limit > 0 && limit < correct) { + message = (strings().maxSelectBelowCorrect || 'The maximum selections is below the number of correct options (%d).').replace('%d', String(correct)); + } + $max[0].setCustomValidity(message); + } + + function refreshQuiz() { + $('#ffc-fields-container .ffc-field-row').each(function() { + applyQuiz($(this)); + }); } // A number above every index already on the page, so a new row's @@ -98,10 +158,17 @@ } var $row = $first.clone(); $row.find('.ffc-choice-input').val(value || ''); + resetChoiceQuiz($row); $list.append($row); return $row; } + function resetChoiceQuiz($choice) { + $choice.find('.ffc-choice-correct-value').val('0'); + $choice.find('.ffc-choice-correct-input').prop('checked', false); + $choice.find('.ffc-choice-points-input').val(''); + } + function makeChoicesSortable($scope) { if ($.fn.sortable) { $scope.find('.ffc-choice-list').sortable({ handle: '.ffc-choice-handle', axis: 'y' }); @@ -150,13 +217,34 @@ $container.on('click', '.ffc-choice-remove', function(e) { e.preventDefault(); var $choice = $(this).closest('.ffc-choice-row'); + var $fieldRow = $choice.closest('.ffc-field-row'); if ($choice.siblings('.ffc-choice-row').length) { $choice.remove(); } else { $choice.find('.ffc-choice-input').val(''); + resetChoiceQuiz($choice); } + checkMaxSelect($fieldRow); }); + // The visible box drives the aligned 0/1 the server reads. + $container.on('change', '.ffc-choice-correct-input', function() { + $(this).closest('.ffc-choice-row').find('.ffc-choice-correct-value').val(this.checked ? '1' : '0'); + checkMaxSelect($(this).closest('.ffc-field-row')); + }); + + $container.on('change', '.ffc-quiz-scored, .ffc-quiz-mode, .ffc-quiz-text', function() { + applyQuiz($(this).closest('.ffc-field-row')); + }); + + $container.on('input change', 'input[name$="[max_select]"]', function() { + checkMaxSelect($(this).closest('.ffc-field-row')); + }); + + $(document).off('change.ffcFieldBuilder'); + $(document).on('change.ffcFieldBuilder', '#ffc_quiz_enabled', refreshQuiz); + refreshQuiz(); + // Enter in an option adds the next one instead of submitting the post. $container.on('keydown', '.ffc-choice-input', function(e) { if (e.key === 'Enter') { @@ -253,7 +341,8 @@ window.FFC.Admin.FieldBuilder = { init: initFormBuilder, addField: addFieldToBuilder, - applyType: applyType + applyType: applyType, + refreshQuiz: refreshQuiz }; if (FFC && FFC.registerModule) { diff --git a/assets/js/ffc-admin-field-builder.min.js b/assets/js/ffc-admin-field-builder.min.js index 27da4857d..24b01adb2 100644 --- a/assets/js/ffc-admin-field-builder.min.js +++ b/assets/js/ffc-admin-field-builder.min.js @@ -1,2 +1,2 @@ -!function(e,f){"use strict";var i=["select","radio","checkbox"],t=0;function n(){return"undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}}function c(f,t){var n="info"===t,c="embed"===t,l=-1!==i.indexOf(t);f.find(".ffc-content-field").toggleClass("ffc-hidden",!n),f.find(".ffc-embed-field").toggleClass("ffc-hidden",!c),f.find(".ffc-hidden-value-field").toggleClass("ffc-hidden","hidden"!==t),f.find(".ffc-standard-row").toggleClass("ffc-hidden",n||c),f.find(".ffc-options-field").toggleClass("ffc-hidden",!l),f.find(".ffc-quiz-points").toggleClass("ffc-hidden",!(l&&e("#ffc_quiz_enabled").is(":checked"))),f.find("[data-ffc-types]").each(function(){var f=String(e(this).attr("data-ffc-types")).split(" ");e(this).toggleClass("ffc-hidden",-1===f.indexOf(t))}),f.find(".ffc-type-desc").text(function(e){return("undefined"!=typeof ffc_ajax&&ffc_ajax.fieldTypeDescriptions?ffc_ajax.fieldTypeDescriptions:{})[e]||""}(t))}function l(){var f=-1;return e("#ffc-fields-container .ffc-field-row").each(function(){var i=parseInt(e(this).attr("data-index"),10);!isNaN(i)&&i>f&&(f=i)}),Math.max(f+1,t)}function o(e,f){var i=e.children(".ffc-choice-row").first();if(!i.length)return null;var t=i.clone();return t.find(".ffc-choice-input").val(f||""),e.append(t),t}function a(f){e.fn.sortable&&f.find(".ffc-choice-list").sortable({handle:".ffc-choice-handle",axis:"y"})}function d(f){var i=e(".ffc-field-template .ffc-field-row").first();if(!i.length)return null;var n=String(l());t=parseInt(n,10)+1;var o=i.clone();return o.attr("data-index",n),o.find("[name], [id], [for]").each(function(){var e=this;["name","id","for"].forEach(function(f){var i=e.getAttribute(f);i&&-1!==i.indexOf("TEMPLATE")&&e.setAttribute(f,i.split("TEMPLATE").join(n))})}),e("#ffc-fields-container").append(o),o.find(".ffc-field-type-selector").val(f),c(o,f),a(o),o.find('input[type="text"]').first().trigger("focus"),o}window.FFC=window.FFC||{},window.FFC.Admin=window.FFC.Admin||{},window.FFC.Admin.FieldBuilder={init:function(){var f=e("#ffc-fields-container");0!==f.length&&(t=0,t=l(),e(document).off("click.ffcFieldBuilder"),e(document).on("click.ffcFieldBuilder",".ffc-add-field",function(f){f.preventDefault(),function(f){e(".ffc-field-type-menu").remove();var i=e('
');i.append(e('
').text(n().chooseFieldType||"Choose Field Type:"));var t=e("");("undefined"!=typeof ffc_ajax&&Array.isArray(ffc_ajax.fieldTypes)&&ffc_ajax.fieldTypes.length?ffc_ajax.fieldTypes:[{value:"checkbox",label:"Checkbox"},{value:"date",label:"Date"},{value:"select",label:"Dropdown Select"},{value:"email",label:"Email"},{value:"number",label:"Number"},{value:"radio",label:"Radio Buttons"},{value:"text",label:"Text"},{value:"textarea",label:"Textarea"},{value:"embed",label:"Embed (Media)"},{value:"hidden",label:"Hidden Field"},{value:"info",label:"Info Block"}]).forEach(function(f){var n=e('').attr("data-type",f.value).text(f.label);n.on("click",function(){d(f.value),i.remove()}),t.append(e("
  • ").append(n))}),i.append(t);var c=f.offset();i.css({position:"absolute",top:c.top+f.outerHeight()+5+"px",left:c.left+"px"}),e("body").append(i),i.find(".ffc-field-type-option").first().trigger("focus"),setTimeout(function(){e(document).one("click",function(){i.remove()})},100)}(e(this))}),e(document).on("click.ffcFieldBuilder",".ffc-remove-field",function(f){f.preventDefault(),confirm(n().confirmDeleteField||"Remove this field?")&&e(this).closest(".ffc-field-row").fadeOut(300,function(){e(this).remove()})}),f.on("change",".ffc-field-type-selector",function(){c(e(this).closest(".ffc-field-row"),e(this).val())}),f.on("click",".ffc-choice-add",function(f){f.preventDefault();var i=o(e(this).siblings(".ffc-choice-list"),"");i&&i.find(".ffc-choice-input").trigger("focus")}),f.on("click",".ffc-choice-remove",function(f){f.preventDefault();var i=e(this).closest(".ffc-choice-row");i.siblings(".ffc-choice-row").length?i.remove():i.find(".ffc-choice-input").val("")}),f.on("keydown",".ffc-choice-input",function(f){if("Enter"===f.key){f.preventDefault();var i=o(e(this).closest(".ffc-choice-list"),"");i&&(i.insertAfter(e(this).closest(".ffc-choice-row")),i.find(".ffc-choice-input").trigger("focus"))}}),e.fn.sortable&&f.sortable({handle:".ffc-sort-handle",placeholder:"ffc-field-placeholder"}),a(f))},addField:d,applyType:c},f&&f.registerModule&&f.registerModule("Admin.FieldBuilder",f.version)}(jQuery,window.FFC); +!function(e,f){"use strict";var i=["select","radio","checkbox"],t=["text","textarea"],c=["number","date"],n=0;function o(){return"undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}}function d(){return e("#ffc_quiz_enabled").is(":checked")}function l(f,t){var c="info"===t,n="embed"===t,o=-1!==i.indexOf(t);f.find(".ffc-content-field").toggleClass("ffc-hidden",!c),f.find(".ffc-embed-field").toggleClass("ffc-hidden",!n),f.find(".ffc-hidden-value-field").toggleClass("ffc-hidden","hidden"!==t),f.find(".ffc-standard-row").toggleClass("ffc-hidden",c||n),f.find(".ffc-options-field").toggleClass("ffc-hidden",!o),f.find("[data-ffc-types]").each(function(){var f=String(e(this).attr("data-ffc-types")).split(" ");e(this).toggleClass("ffc-hidden",-1===f.indexOf(t))}),f.find(".ffc-type-desc").text(function(e){return("undefined"!=typeof ffc_ajax&&ffc_ajax.fieldTypeDescriptions?ffc_ajax.fieldTypeDescriptions:{})[e]||""}(t)),a(f,t)}function a(f,n){n=n||String(f.find(".ffc-field-type-selector").val()||"");var o=f.find(".ffc-field-quiz"),l=-1!==String(o.attr("data-ffc-quiz-types")||"").split(" ").indexOf(n),a=d()&&l,s=a&&o.find(".ffc-quiz-scored").is(":checked"),u=-1!==i.indexOf(n),h=u?String(o.find(".ffc-quiz-mode").val()):"",p=-1!==t.indexOf(n)&&"none"===o.find(".ffc-quiz-text").val();o.toggleClass("ffc-hidden",!a),o.find(".ffc-field-quiz-body").toggleClass("ffc-hidden",!s),f.find(".ffc-choice-quiz").each(function(){e(this).toggleClass("ffc-hidden",!(s&&u&&e(this).attr("data-ffc-quiz-mode")===h))}),o.find(".ffc-quiz-points-setting").toggleClass("ffc-hidden",u&&"points"===h||p),o.find("[data-ffc-types]").each(function(){e(this).toggleClass("ffc-hidden",-1===String(e(this).attr("data-ffc-types")).split(" ").indexOf(n))}),o.find('[data-ffc-quiz-help="correct"]').toggleClass("ffc-hidden",!(u&&"correct"===h)),o.find('[data-ffc-quiz-help="points"]').toggleClass("ffc-hidden",!(u&&"points"===h)),o.find('[data-ffc-quiz-help="range"]').toggleClass("ffc-hidden",-1===c.indexOf(n)),r(f)}function r(e){var f=e.find('input[name$="[max_select]"]');if(f.length&&f[0].setCustomValidity){var i=String(e.find(".ffc-field-type-selector").val()||""),t=parseInt(f.val(),10),c=e.find(".ffc-choice-correct-value").filter(function(){return"1"===this.value}).length,n="";"checkbox"===i&&d()&&e.find(".ffc-quiz-scored").is(":checked")&&"correct"===e.find(".ffc-quiz-mode").val()&&t>0&&tf&&(f=i)}),Math.max(f+1,n)}function h(e,f){var i=e.children(".ffc-choice-row").first();if(!i.length)return null;var t=i.clone();return t.find(".ffc-choice-input").val(f||""),p(t),e.append(t),t}function p(e){e.find(".ffc-choice-correct-value").val("0"),e.find(".ffc-choice-correct-input").prop("checked",!1),e.find(".ffc-choice-points-input").val("")}function v(f){e.fn.sortable&&f.find(".ffc-choice-list").sortable({handle:".ffc-choice-handle",axis:"y"})}function g(f){var i=e(".ffc-field-template .ffc-field-row").first();if(!i.length)return null;var t=String(u());n=parseInt(t,10)+1;var c=i.clone();return c.attr("data-index",t),c.find("[name], [id], [for]").each(function(){var e=this;["name","id","for"].forEach(function(f){var i=e.getAttribute(f);i&&-1!==i.indexOf("TEMPLATE")&&e.setAttribute(f,i.split("TEMPLATE").join(t))})}),e("#ffc-fields-container").append(c),c.find(".ffc-field-type-selector").val(f),l(c,f),v(c),c.find('input[type="text"]').first().trigger("focus"),c}window.FFC=window.FFC||{},window.FFC.Admin=window.FFC.Admin||{},window.FFC.Admin.FieldBuilder={init:function(){var f=e("#ffc-fields-container");0!==f.length&&(n=0,n=u(),e(document).off("click.ffcFieldBuilder"),e(document).on("click.ffcFieldBuilder",".ffc-add-field",function(f){f.preventDefault(),function(f){e(".ffc-field-type-menu").remove();var i=e('
    ');i.append(e('
    ').text(o().chooseFieldType||"Choose Field Type:"));var t=e("");("undefined"!=typeof ffc_ajax&&Array.isArray(ffc_ajax.fieldTypes)&&ffc_ajax.fieldTypes.length?ffc_ajax.fieldTypes:[{value:"checkbox",label:"Checkbox"},{value:"date",label:"Date"},{value:"select",label:"Dropdown Select"},{value:"email",label:"Email"},{value:"number",label:"Number"},{value:"radio",label:"Radio Buttons"},{value:"text",label:"Text"},{value:"textarea",label:"Textarea"},{value:"embed",label:"Embed (Media)"},{value:"hidden",label:"Hidden Field"},{value:"info",label:"Info Block"}]).forEach(function(f){var c=e('').attr("data-type",f.value).text(f.label);c.on("click",function(){g(f.value),i.remove()}),t.append(e("
  • ").append(c))}),i.append(t);var c=f.offset();i.css({position:"absolute",top:c.top+f.outerHeight()+5+"px",left:c.left+"px"}),e("body").append(i),i.find(".ffc-field-type-option").first().trigger("focus"),setTimeout(function(){e(document).one("click",function(){i.remove()})},100)}(e(this))}),e(document).on("click.ffcFieldBuilder",".ffc-remove-field",function(f){f.preventDefault(),confirm(o().confirmDeleteField||"Remove this field?")&&e(this).closest(".ffc-field-row").fadeOut(300,function(){e(this).remove()})}),f.on("change",".ffc-field-type-selector",function(){l(e(this).closest(".ffc-field-row"),e(this).val())}),f.on("click",".ffc-choice-add",function(f){f.preventDefault();var i=h(e(this).siblings(".ffc-choice-list"),"");i&&i.find(".ffc-choice-input").trigger("focus")}),f.on("click",".ffc-choice-remove",function(f){f.preventDefault();var i=e(this).closest(".ffc-choice-row"),t=i.closest(".ffc-field-row");i.siblings(".ffc-choice-row").length?i.remove():(i.find(".ffc-choice-input").val(""),p(i)),r(t)}),f.on("change",".ffc-choice-correct-input",function(){e(this).closest(".ffc-choice-row").find(".ffc-choice-correct-value").val(this.checked?"1":"0"),r(e(this).closest(".ffc-field-row"))}),f.on("change",".ffc-quiz-scored, .ffc-quiz-mode, .ffc-quiz-text",function(){a(e(this).closest(".ffc-field-row"))}),f.on("input change",'input[name$="[max_select]"]',function(){r(e(this).closest(".ffc-field-row"))}),e(document).off("change.ffcFieldBuilder"),e(document).on("change.ffcFieldBuilder","#ffc_quiz_enabled",s),s(),f.on("keydown",".ffc-choice-input",function(f){if("Enter"===f.key){f.preventDefault();var i=h(e(this).closest(".ffc-choice-list"),"");i&&(i.insertAfter(e(this).closest(".ffc-choice-row")),i.find(".ffc-choice-input").trigger("focus"))}}),e.fn.sortable&&f.sortable({handle:".ffc-sort-handle",placeholder:"ffc-field-placeholder"}),v(f))},addField:g,applyType:l,refreshQuiz:s},f&&f.registerModule&&f.registerModule("Admin.FieldBuilder",f.version)}(jQuery,window.FFC); //# sourceMappingURL=ffc-admin-field-builder.min.js.map \ No newline at end of file diff --git a/assets/js/ffc-admin.js b/assets/js/ffc-admin.js index 76408be9a..84f144623 100644 --- a/assets/js/ffc-admin.js +++ b/assets/js/ffc-admin.js @@ -235,12 +235,8 @@ if (window.FFC && window.FFC.setRequiredWithin) { window.FFC.setRequiredWithin($('.ffc-quiz-setting'), on); } - $('.ffc-options-field').each(function() { - var $opts = $(this); - if (!$opts.hasClass('ffc-hidden')) { - $opts.find('.ffc-quiz-points').toggleClass('ffc-hidden', !on); - } - }); + // The per-field quiz settings belong to the field builder, + // which listens to the same toggle (#1730). } $('#ffc_quiz_enabled').on('change', function() { toggleQuizUI($(this).is(':checked')); diff --git a/assets/js/ffc-admin.min.js b/assets/js/ffc-admin.min.js index 2ac87b747..0b6ee1be1 100644 --- a/assets/js/ffc-admin.min.js +++ b/assets/js/ffc-admin.min.js @@ -1,2 +1,2 @@ -!function(e){"use strict";window.FFC=window.FFC||{},window.FFC.Admin=window.FFC.Admin||{},window.FFC.Admin.showNotification=function(n,t,i){t=t||"info",i=i||5e3,e(".ffc-admin-notification").remove();var r=("undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}).dismiss||"Dismiss",s=e('

    '+n+'

    ");e(".wrap > h1").length?e(".wrap > h1").after(s):e("#wpbody-content").prepend(s),s.find(".notice-dismiss").on("click",function(){s.fadeOut(200,function(){e(this).remove()})}),i>0&&setTimeout(function(){s.fadeOut(200,function(){e(this).remove()})},i)},e(document).on("click","#ffc_btn_generate_codes",function(n){n.preventDefault();var t=e("#ffc_qty_codes").val();if(!t||isNaN(t)||t<1){var i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},r=i.enterValidNumber||"Please enter a valid number.";return e("#ffc_gen_status").text(r).css("color","red"),void e("#ffc_qty_codes").focus()}var s=e(this),o=e("#ffc_gen_status"),a=s.text(),f=(i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}).generating||"Generating...",c=i.generatingTickets||"Generating tickets...";s.prop("disabled",!0).text(f),o.text(c).css("color","#999");var d="undefined"!=typeof ffc_ajax?ffc_ajax.nonce:"";FFC.request("ffc_generate_codes",{qty:t},{nonce:d}).then(function(n){var i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},r=e("#ffc_generated_list");if(r.length){var f=r.val(),c=f?f+"\n"+n.codes:n.codes;r.val(c);var d=i.ticketsGeneratedSuccess||"tickets generated successfully!";o.text("✓ "+t+" "+d).css("color","green"),setTimeout(function(){o.text("")},5e3)}else{console.warn("[FFC] Generated codes field not found");var l=i.codesFieldNotFound||"Error: codes field not found";o.text("✗ "+l).css("color","red")}s.prop("disabled",!1).text(a)}).catch(function(e){var n="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},t=e&&e.xhr,i="✗ ";if(e&&e.fromServer)i+=(n.error||"Error: ")+(e.message||"Unknown error");else if(t&&403===t.status)i+=n.permissionDenied||"Permission denied. Please reload the page.";else if(t&&400===t.status)i+=n.badRequest||"Bad request. Check console.";else{i+=(n.serverError||"Server error (Status: %d)").replace("%d",t?t.status:"?")}t&&console.error("[FFC] AJAX error:",t.status,t.statusText,t.responseText),o.text(i).css("color","red"),s.prop("disabled",!1).text(a)})}),e(document).on("click","#ffc-csv-export-btn",function(){var n=e(this),t="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},i="undefined"!=typeof ffc_ajax?ffc_ajax.export_nonce:"";if(i){var r=n.data("form-ids")||[],s={status:n.data("status")||"publish"};r&&r.length&&(s.form_ids=r),window.FFCBatchedExport.run({type:"submissions",ajaxUrl:ajaxurl,nonce:i,button:n,overlay:!0,strings:{preparing:t.exportPreparing,exporting:t.exportProgress,downloading:t.exportDone,error:t.error,connectionError:t.connectionError},startData:s})}else alert(t.error||"Error: missing export nonce")}),e(document).ready(function(){e("#ffc-fields-container").length&&(window.FFC&&window.FFC.Admin&&window.FFC.Admin.FieldBuilder?window.FFC.Admin.FieldBuilder.init():console.warn("[FFC Admin] Field Builder module not loaded"))});var n=document.getElementById("ffc-filter-overlay");if(n){var t=document.getElementById("ffc-open-filter-overlay");t&&t.addEventListener("click",function(){n.style.display="flex"}),n.querySelectorAll(".ffc-filter-overlay-close, .ffc-filter-overlay-backdrop").forEach(function(e){e.addEventListener("click",function(){n.style.display="none"})}),n.addEventListener("click",function(e){e.target===n&&(n.style.display="none")})}if(e("#ffc_quiz_enabled").length){function i(n){e(".ffc-quiz-setting").toggleClass("ffc-hidden",!n),window.FFC&&window.FFC.setRequiredWithin&&window.FFC.setRequiredWithin(e(".ffc-quiz-setting"),n),e(".ffc-options-field").each(function(){var t=e(this);t.hasClass("ffc-hidden")||t.find(".ffc-quiz-points").toggleClass("ffc-hidden",!n)})}e("#ffc_quiz_enabled").on("change",function(){i(e(this).is(":checked"))}),i(e("#ffc_quiz_enabled").is(":checked"))}e(".ffc-collapsed-target").each(function(){var n=e(this),t=n.data("ffc-master"),i=n.data("ffc-master-value");if(t){var r=e("#"+t);r.length&&(r.on("change",s),r.is("select")&&r.on("input",s),s())}function s(){var e=null!=i&&""!==i?String(r.val())===String(i):r.is(":checked");n.toggleClass("ffc-collapsed",!e),n.attr("aria-hidden",e?"false":"true"),r.attr("aria-expanded",e?"true":"false"),window.FFC&&"function"==typeof window.FFC.setRequiredWithin&&window.FFC.setRequiredWithin(n,e)}})}(jQuery); +!function(e){"use strict";window.FFC=window.FFC||{},window.FFC.Admin=window.FFC.Admin||{},window.FFC.Admin.showNotification=function(n,t,i){t=t||"info",i=i||5e3,e(".ffc-admin-notification").remove();var r=("undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}).dismiss||"Dismiss",s=e('

    '+n+'

    ");e(".wrap > h1").length?e(".wrap > h1").after(s):e("#wpbody-content").prepend(s),s.find(".notice-dismiss").on("click",function(){s.fadeOut(200,function(){e(this).remove()})}),i>0&&setTimeout(function(){s.fadeOut(200,function(){e(this).remove()})},i)},e(document).on("click","#ffc_btn_generate_codes",function(n){n.preventDefault();var t=e("#ffc_qty_codes").val();if(!t||isNaN(t)||t<1){var i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},r=i.enterValidNumber||"Please enter a valid number.";return e("#ffc_gen_status").text(r).css("color","red"),void e("#ffc_qty_codes").focus()}var s=e(this),o=e("#ffc_gen_status"),a=s.text(),c=(i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{}).generating||"Generating...",f=i.generatingTickets||"Generating tickets...";s.prop("disabled",!0).text(c),o.text(f).css("color","#999");var d="undefined"!=typeof ffc_ajax?ffc_ajax.nonce:"";FFC.request("ffc_generate_codes",{qty:t},{nonce:d}).then(function(n){var i="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},r=e("#ffc_generated_list");if(r.length){var c=r.val(),f=c?c+"\n"+n.codes:n.codes;r.val(f);var d=i.ticketsGeneratedSuccess||"tickets generated successfully!";o.text("✓ "+t+" "+d).css("color","green"),setTimeout(function(){o.text("")},5e3)}else{console.warn("[FFC] Generated codes field not found");var l=i.codesFieldNotFound||"Error: codes field not found";o.text("✗ "+l).css("color","red")}s.prop("disabled",!1).text(a)}).catch(function(e){var n="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},t=e&&e.xhr,i="✗ ";if(e&&e.fromServer)i+=(n.error||"Error: ")+(e.message||"Unknown error");else if(t&&403===t.status)i+=n.permissionDenied||"Permission denied. Please reload the page.";else if(t&&400===t.status)i+=n.badRequest||"Bad request. Check console.";else{i+=(n.serverError||"Server error (Status: %d)").replace("%d",t?t.status:"?")}t&&console.error("[FFC] AJAX error:",t.status,t.statusText,t.responseText),o.text(i).css("color","red"),s.prop("disabled",!1).text(a)})}),e(document).on("click","#ffc-csv-export-btn",function(){var n=e(this),t="undefined"!=typeof ffc_ajax&&ffc_ajax.strings?ffc_ajax.strings:{},i="undefined"!=typeof ffc_ajax?ffc_ajax.export_nonce:"";if(i){var r=n.data("form-ids")||[],s={status:n.data("status")||"publish"};r&&r.length&&(s.form_ids=r),window.FFCBatchedExport.run({type:"submissions",ajaxUrl:ajaxurl,nonce:i,button:n,overlay:!0,strings:{preparing:t.exportPreparing,exporting:t.exportProgress,downloading:t.exportDone,error:t.error,connectionError:t.connectionError},startData:s})}else alert(t.error||"Error: missing export nonce")}),e(document).ready(function(){e("#ffc-fields-container").length&&(window.FFC&&window.FFC.Admin&&window.FFC.Admin.FieldBuilder?window.FFC.Admin.FieldBuilder.init():console.warn("[FFC Admin] Field Builder module not loaded"))});var n=document.getElementById("ffc-filter-overlay");if(n){var t=document.getElementById("ffc-open-filter-overlay");t&&t.addEventListener("click",function(){n.style.display="flex"}),n.querySelectorAll(".ffc-filter-overlay-close, .ffc-filter-overlay-backdrop").forEach(function(e){e.addEventListener("click",function(){n.style.display="none"})}),n.addEventListener("click",function(e){e.target===n&&(n.style.display="none")})}if(e("#ffc_quiz_enabled").length){function i(n){e(".ffc-quiz-setting").toggleClass("ffc-hidden",!n),window.FFC&&window.FFC.setRequiredWithin&&window.FFC.setRequiredWithin(e(".ffc-quiz-setting"),n)}e("#ffc_quiz_enabled").on("change",function(){i(e(this).is(":checked"))}),i(e("#ffc_quiz_enabled").is(":checked"))}e(".ffc-collapsed-target").each(function(){var n=e(this),t=n.data("ffc-master"),i=n.data("ffc-master-value");if(t){var r=e("#"+t);r.length&&(r.on("change",s),r.is("select")&&r.on("input",s),s())}function s(){var e=null!=i&&""!==i?String(r.val())===String(i):r.is(":checked");n.toggleClass("ffc-collapsed",!e),n.attr("aria-hidden",e?"false":"true"),r.attr("aria-expanded",e?"true":"false"),window.FFC&&"function"==typeof window.FFC.setRequiredWithin&&window.FFC.setRequiredWithin(n,e)}})}(jQuery); //# sourceMappingURL=ffc-admin.min.js.map \ No newline at end of file diff --git a/assets/js/ffc-frontend.js b/assets/js/ffc-frontend.js index 947255f44..2a91ede30 100644 --- a/assets/js/ffc-frontend.js +++ b/assets/js/ffc-frontend.js @@ -541,6 +541,7 @@ } if (err && err.fromServer) { FFC.Frontend.UI.showFormError($form, err.message || ffc_ajax.strings.error || 'Error occurred'); + markQuizResults($form, err.data && err.data.quiz ? err.data.quiz.results : null); if (err.data && err.data.refresh_captcha) { FFC.Frontend.UI.refreshCaptcha($form, err.data); } @@ -552,6 +553,35 @@ }); } + /** + * Mark each scored question right or wrong after a quiz attempt, when + * the form shows it (#1730). Names the verdict, never the answer. + * + * @param {jQuery} $form + * @param {{fields: Object}|null} results + */ + function markQuizResults($form, results) { + $form.find('.ffc-quiz-verdict').remove(); + $form.find('.ffc-quiz-right, .ffc-quiz-wrong').removeClass('ffc-quiz-right ffc-quiz-wrong'); + if (!results || !results.fields) { + return; + } + var strings = (typeof ffc_ajax !== 'undefined' && ffc_ajax.strings) ? ffc_ajax.strings : {}; + Object.keys(results.fields).forEach(function(name) { + var $input = $form.find('[name="' + name + '"], [name="' + name + '[]"]').first(); + var $field = $input.closest('.ffc-form-field'); + if (!$field.length) { + return; + } + var right = results.fields[name] === true; + $field.addClass(right ? 'ffc-quiz-right' : 'ffc-quiz-wrong'); + $('

    ') + .addClass(right ? 'ffc-icon-checkmark' : 'ffc-icon-cross') + .text(right ? (strings.quizCorrect || 'Correct') : (strings.quizIncorrect || 'Incorrect')) + .appendTo($field); + }); + } + /** * Setup MutationObserver to re-apply masks when DOM changes */ diff --git a/assets/js/ffc-frontend.min.js b/assets/js/ffc-frontend.min.js index 9ae358a75..fe0ff2d84 100644 --- a/assets/js/ffc-frontend.min.js +++ b/assets/js/ffc-frontend.min.js @@ -1,2 +1,2 @@ -!function(t){"use strict";function e(e,a){t(".ffc-accessible-alert").remove();var n=t('