diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2b8fea861..d367ba002 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ The format follows [Keep a Changelog] (https://keepachangelog.com/en/1.1.0/).
- **Required certificate tags have their own Settings tab and protect their fields** (#1734). The list moved from Advanced to a new Certificates tab; the layout and template screens list the configured tags instead of a fixed three. A field a required tag calls for is amber, badged, always required, and cannot be renamed or removed; a form missing one is warned on save.
- **Required form fields are a list of their own** (#1741). Settings → Certificates keeps the layout tags and, apart, the fields every form needs with label and type (default `name`, `cpf_rf`, `email`; Email stays). New forms start with them, their type is locked, and the editor adds missing ones.
- **Ordered three-level settings use the steps control** (#1745). The four geofence display modes, the two private-calendar displays and the IP API fallback store the same values as before; an unknown stored value shows the old default.
+- **The on/off toggle joins the control family** (#1748). `.ffc-toggle` is now `.ffc-control-toggle` everywhere, with the shared hover and pressed halo, a greyed disabled state instead of a faded one, and an optional check / cross mark on the knob.
### Fixed
@@ -36,6 +37,7 @@ The format follows [Keep a Changelog] (https://keepachangelog.com/en/1.1.0/).
- **Settings → Certificates saves the required tags one per line** (#1736). The Save button stored the list on a single line, which then read as one tag; a list already stored that way reads as separate tags again.
- **A certificate form submits again** (#1739). A script printed before `ffc-core.js` that created the `FFC` namespace made the core skip its own API, so every submit failed on `FFC.request is not a function`; the core now installs its API and keeps what was already there.
- **A quiz attempt that did not pass is no longer a certificate** (#1744). The first attempt was saved as issued and its certificate link emailed before its result was known; its code also verified. The email, verification by code or link, the REST lookup and the user dashboard now skip it.
+- **The dashboard's notification toggles can be reached by keyboard** (#1748). They used a second toggle that hid its checkbox with `display: none`; they now use the plugin's one toggle.
## [6.38.0] (2026-10-12) — `529e80a1`
diff --git a/CLAUDE.md b/CLAUDE.md
index 4b1e50c45..e661cacb3 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -807,7 +807,7 @@ A setting that picks among a few values is drawn by a control from the `ffc-cont
| 2 to 6 with no order | segmented | `AdminUI::render_segmented()` (planned) |
| anything else | a `` | — |
-- **The toggle still wears its pre-family class**, `.ffc-toggle`; moving it and every screen that prints it to `ffc-control-toggle` is planned, in the PR that gives it the shared states.
+- **One toggle, everywhere** (#1748). `.ffc-control-toggle` is the only on/off control, the user dashboard's included — it had a second implementation that hid its checkbox with `display: none`, which took it out of keyboard reach. A toggle built in JS prints the same markup `render_toggle()` does. `mark` adds a check or a cross on the knob; the knob is white in both themes, so the mark's ink is fixed too, and the drawings come from `Core\Icons` through `--ffc-icon-mask-*` custom properties (`Icons::MASKS`).
- **Order is the test for steps.** A rail and a fill say "more of the same thing"; three unrelated choices on a rail lie about their relation. Off → Moderate → Strict is a scale; Dark / Light / Auto is not.
- **Out of range is handled, not refused.** `render_steps()` given fewer or more options than it draws prints a select, so the field still works, and calls `_doing_it_wrong()` naming the control that fits — which surfaces under `WP_DEBUG`, where the developer is.
- **Every control is native inputs plus CSS.** Radios or a checkbox carry the value, so the form posts without a script, the arrow keys and screen readers work, and autosave (`data-ffc-autosave-key` / `-form-key` on the inputs) saves the group as one field with no change to the widget.
@@ -943,7 +943,7 @@ Classes that already encapsulate `get_option('ffc_settings')` in their own priva
### Settings writes — autosave toggles (the no-clobber invariant)
-On/off **toggle switches** (`.ffc-toggle`, rendered via `AdminUI::render_toggle()`) auto-save on flip: mark the input `data-ffc-autosave-key=""`, add the key to `SettingsAjaxEndpoint::allowlist()` (`{option, path?, type, cap}`), and have the tab call `enqueue_autosave_infra()`. This is the standard for atomic, side-effect-free boolean settings. **Two autosave endpoints exist and stay separate on purpose** (do NOT unify — bad-façade trap): `SettingsAjaxEndpoint` (`ffc_update_setting`) writes WP **options** under a global cap; `FormMetaAjaxEndpoint` (`ffc_update_form_meta`, attribute `data-ffc-autosave-form-key`) writes per-post **meta** gated on `edit_post` of that exact form. **The JS is one widget serving both** (#1116) — `FFC.Admin.autoSaveField` in `assets/js/ffc-admin-autosave.js`, wired by `bootAutoSaveFields()`, which scans **both** attributes and takes `action` / `payload` / `request` / `strings` per endpoint. The endpoints stay separate; only their client did not need to be. That statement was written here before it was true: the form-meta half was a second implementation inside `assets/js/ffc-admin.js` (delegated, `change` only, no debounce, its own badge whose CSS hardcoded hex and therefore ignored dark mode), and the cost was not theoretical — the #1114 validity guard had to be written twice to reach both halves. So a change to autosave behaviour is now one edit; **a screen that renders either attribute must enqueue `ffc-admin-autosave`** (settings tabs get it from `enqueue_autosave_infra()`, the form editor enqueues it directly), or its fields silently have no listener.
+On/off **toggle switches** (`.ffc-control-toggle`, rendered via `AdminUI::render_toggle()`) auto-save on flip: mark the input `data-ffc-autosave-key=""`, add the key to `SettingsAjaxEndpoint::allowlist()` (`{option, path?, type, cap}`), and have the tab call `enqueue_autosave_infra()`. This is the standard for atomic, side-effect-free boolean settings. **Two autosave endpoints exist and stay separate on purpose** (do NOT unify — bad-façade trap): `SettingsAjaxEndpoint` (`ffc_update_setting`) writes WP **options** under a global cap; `FormMetaAjaxEndpoint` (`ffc_update_form_meta`, attribute `data-ffc-autosave-form-key`) writes per-post **meta** gated on `edit_post` of that exact form. **The JS is one widget serving both** (#1116) — `FFC.Admin.autoSaveField` in `assets/js/ffc-admin-autosave.js`, wired by `bootAutoSaveFields()`, which scans **both** attributes and takes `action` / `payload` / `request` / `strings` per endpoint. The endpoints stay separate; only their client did not need to be. That statement was written here before it was true: the form-meta half was a second implementation inside `assets/js/ffc-admin.js` (delegated, `change` only, no debounce, its own badge whose CSS hardcoded hex and therefore ignored dark mode), and the cost was not theoretical — the #1114 validity guard had to be written twice to reach both halves. So a change to autosave behaviour is now one edit; **a screen that renders either attribute must enqueue `ffc-admin-autosave`** (settings tabs get it from `enqueue_autosave_infra()`, the form editor enqueues it directly), or its fields silently have no listener.
Two things the convergence measured, worth not re-deriving. Every one of the 16 form-meta fields is a checkbox from `AdminUI::render_toggle()`, so adopting the settings half's `change`+`input` binding changed nothing visible — there is no text field on that path to "save while typing", and a checkbox's two events coalesce in the debounce. And the **delegated** binding was the half *not* kept, against the original proposal: nothing exercises it (all fields of both kinds are server-rendered at page load), and adopting it would have meant rewriting the half with 115 fields, per-field debounce, multi-checkbox groups and `confirmOff` to gain that. `bootAutoSaveFields()` is idempotent and exported, so DOM inserted later has a supported answer — call it again.
diff --git a/assets/css/ffc-calendar-editor.css b/assets/css/ffc-calendar-editor.css
index b4c64e841..63e388aa8 100644
--- a/assets/css/ffc-calendar-editor.css
+++ b/assets/css/ffc-calendar-editor.css
@@ -88,8 +88,8 @@
/* Email notification toggles — vertical stack with breathing room.
The container drives the stacking (flex column): the base
- `.form-table td .ffc-toggle { display: inline-flex }` rule in ffc-common.css
- is more specific than a `.ffc-email-toggles .ffc-toggle` override, so making
+ `.form-table td .ffc-control-toggle { display: inline-flex }` rule in ffc-common.css
+ is more specific than a `.ffc-email-toggles .ffc-control-toggle` override, so making
each toggle a column flex-item is what reliably puts one per line without an
!important or a specificity arms race. `flex-start` keeps each toggle at its
natural width instead of stretching across the cell. */
diff --git a/assets/css/ffc-common.css b/assets/css/ffc-common.css
index 556da5b06..8f7d8f831 100644
--- a/assets/css/ffc-common.css
+++ b/assets/css/ffc-common.css
@@ -1622,6 +1622,11 @@
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E");
}
+:root {
+ --ffc-icon-mask-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");
+ --ffc-icon-mask-x: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
+}
+
.ffc-svg-icon {
color: var(--ffc-icon-tone, currentColor);
}
@@ -2008,19 +2013,32 @@
.ffc-color-dot { display: inline-block; width: 12px; height: 12px; border-radius: var(--ffc-radius-full); vertical-align: middle; background-color: var(--ffc-color, currentColor); }
/* ==========================================================================
- TOGGLE SWITCH — mobile-style ON/OFF for boolean settings.
- Replaces native checkbox visuals while preserving the underlying input
- for accessibility (screen readers, keyboard nav, form-POST semantics).
- Markup contract:
-
+ TOGGLE (#1748) — AdminUI::render_toggle(), the two-state member of the
+ ffc-control-* family (see CONTROLS below). Markup:
+
-
- Field label text
+
+ Field label text
+ It shares the family's state language: a halo for hover and pressed, the
+ 2px primary ring for keyboard focus, and a disabled state that greys
+ instead of fading. .ffc-control-toggle-mark adds a check or a cross on the
+ knob, so on and off do not rest on colour alone.
========================================================================== */
-.ffc-toggle,
-.form-table td .ffc-toggle,
-.form-table td fieldset .ffc-toggle {
+/* The family's shared hover / pressed halo. */
+.ffc-control-toggle,
+.ffc-control-steps {
+ --ffc-control-halo: color-mix(in srgb, var(--ffc-primary) 18%, transparent);
+ --ffc-control-knob-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
+ /* The ink of a mark drawn on the toggle's knob. The knob is white in both
+ themes (see below), so its ink is fixed too: --ffc-primary lightens in
+ the dark theme and would fall under 3:1 on white (#1748). */
+ --ffc-control-knob-ink: #50575e;
+}
+
+.ffc-control-toggle,
+.form-table td .ffc-control-toggle,
+.form-table td fieldset .ffc-control-toggle {
/* Multiple selectors win the specificity battle against WP admin's
`.form-table td fieldset label { display: inline-block }` which
would otherwise collapse the toggle and overlap the label text. */
@@ -2033,7 +2051,7 @@
position: relative;
}
-.ffc-toggle input[type="checkbox"] {
+.ffc-control-toggle input[type="checkbox"] {
/* Visually hidden but reachable by keyboard + assistive tech. */
position: absolute;
opacity: 0;
@@ -2042,8 +2060,9 @@
pointer-events: none;
}
-.ffc-toggle-track {
+.ffc-control-toggle-track {
position: relative;
+ isolation: isolate;
flex: 0 0 auto;
width: 38px;
height: 22px;
@@ -2052,7 +2071,7 @@
transition: background-color 0.15s ease;
}
-.ffc-toggle-track::after {
+.ffc-control-toggle-track::after {
content: "";
position: absolute;
top: 2px;
@@ -2064,39 +2083,104 @@
theme the track is dark, and a knob in var(--ffc-bg-card) would vanish
into it. Literal by decision, not by oversight (#1126 B). */
background: #fff;
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
- transition: transform 0.15s ease;
+ box-shadow: var(--ffc-control-knob-shadow);
+ transition: transform 0.15s ease, width 0.15s ease, box-shadow 0.15s ease;
}
-.ffc-toggle input[type="checkbox"]:checked + .ffc-toggle-track {
+.ffc-control-toggle input[type="checkbox"]:checked + .ffc-control-toggle-track {
background: var(--ffc-primary);
}
-.ffc-toggle input[type="checkbox"]:checked + .ffc-toggle-track::after {
+.ffc-control-toggle input[type="checkbox"]:checked + .ffc-control-toggle-track::after {
transform: translateX(16px);
}
-.ffc-toggle input[type="checkbox"]:focus-visible + .ffc-toggle-track {
+.ffc-control-toggle:hover input[type="checkbox"]:not(:disabled) + .ffc-control-toggle-track::after {
+ box-shadow: var(--ffc-control-knob-shadow), 0 0 0 7px var(--ffc-control-halo);
+}
+
+/* Pressed: the knob stretches towards where it is going. */
+.ffc-control-toggle:active input[type="checkbox"]:not(:disabled) + .ffc-control-toggle-track::after {
+ width: 22px;
+ box-shadow: var(--ffc-control-knob-shadow), 0 0 0 9px var(--ffc-control-halo);
+}
+
+.ffc-control-toggle:active input[type="checkbox"]:checked:not(:disabled) + .ffc-control-toggle-track::after {
+ transform: translateX(12px);
+}
+
+.ffc-control-toggle input[type="checkbox"]:focus-visible + .ffc-control-toggle-track {
outline: 2px solid var(--ffc-primary);
outline-offset: 2px;
}
-.ffc-toggle input[type="checkbox"]:disabled + .ffc-toggle-track {
- opacity: 0.5;
+/* Disabled: the colour leaves, nothing fades. */
+.ffc-control-toggle input[type="checkbox"]:disabled + .ffc-control-toggle-track {
+ background: var(--ffc-gray-300);
cursor: not-allowed;
}
-.ffc-toggle-label {
+.ffc-control-toggle input[type="checkbox"]:disabled:checked + .ffc-control-toggle-track {
+ background: var(--ffc-gray-400);
+}
+
+.ffc-control-toggle input[type="checkbox"]:disabled + .ffc-control-toggle-track::after {
+ box-shadow: none;
+}
+
+.ffc-control-toggle:has(input[type="checkbox"]:disabled) {
+ cursor: not-allowed;
+}
+
+.ffc-control-toggle:has(input[type="checkbox"]:disabled) .ffc-control-toggle-label {
+ color: var(--ffc-text-muted);
+}
+
+.ffc-control-toggle-label {
color: inherit;
}
+/* Mark: the glyph rides above the knob; its shape, not its colour, says on or off. */
+.ffc-control-toggle-mark .ffc-control-toggle-track::before {
+ content: "";
+ position: absolute;
+ /* Above the knob (::after, which paints later at z-index auto). */
+ z-index: var(--ffc-z-raised);
+ top: 6px;
+ left: 6px;
+ width: 10px;
+ height: 10px;
+ background-color: var(--ffc-control-knob-ink);
+ -webkit-mask: var(--ffc-icon-mask-x) center / contain no-repeat;
+ mask: var(--ffc-icon-mask-x) center / contain no-repeat;
+ transition: transform 0.15s ease;
+}
+
+.ffc-control-toggle-mark input[type="checkbox"]:checked + .ffc-control-toggle-track::before {
+ -webkit-mask-image: var(--ffc-icon-mask-check);
+ mask-image: var(--ffc-icon-mask-check);
+ transform: translateX(16px);
+}
+
+.ffc-control-toggle-mark input[type="checkbox"]:disabled + .ffc-control-toggle-track::before {
+ background-color: var(--ffc-gray-400);
+}
+
@media (prefers-reduced-motion: reduce) {
- .ffc-toggle-track,
- .ffc-toggle-track::after {
+ .ffc-control-toggle-track,
+ .ffc-control-toggle-track::before,
+ .ffc-control-toggle-track::after {
transition: none;
}
}
+@media (forced-colors: active) {
+ .ffc-control-toggle-mark .ffc-control-toggle-track::before {
+ forced-color-adjust: none;
+ background-color: CanvasText;
+ }
+}
+
/* ==========================================================================
CONTROLS (#1745) — the .ffc-control-* family, drawn by AdminUI.
One state language for all of them: a halo (--ffc-control-halo) for hover
@@ -2115,7 +2199,6 @@
A stop's data-tone overrides the palette for that step.
========================================================================== */
.ffc-control-steps {
- --ffc-control-halo: color-mix(in srgb, var(--ffc-primary) 18%, transparent);
--ffc-control-steps-rail: 6px;
--ffc-control-steps-dot: 8px;
--ffc-control-steps-thumb: 20px;
@@ -2451,7 +2534,7 @@
gap: var(--ffc-spacing-2xs);
}
-.ffc-features-cell .ffc-toggle {
+.ffc-features-cell .ffc-control-toggle {
margin: 0;
}
diff --git a/assets/css/ffc-common.min.css b/assets/css/ffc-common.min.css
index 2bf3280d3..4ec89f711 100644
--- a/assets/css/ffc-common.min.css
+++ b/assets/css/ffc-common.min.css
@@ -1,2 +1,2 @@
-:root{--ffc-primary:#2271b1;--ffc-primary-hover:#135e96;--ffc-primary-light:#e7f3ff;--ffc-success:#00801e;--ffc-success-hover:#006618;--ffc-success-light:#e7f5ec;--ffc-warning:#ba8d14;--ffc-warning-light:#fff8e5;--ffc-danger:#d63638;--ffc-danger-hover:#b32d2e;--ffc-danger-light:#fcf0f1;--ffc-info:#006ba1;--ffc-info-light:#e5f5fa;--ffc-gray-50:#fafafa;--ffc-gray-100:#f6f7f7;--ffc-gray-200:#e7e8ea;--ffc-gray-300:#c3c4c7;--ffc-gray-400:#8c8f94;--ffc-gray-500:#646970;--ffc-gray-600:#50575e;--ffc-gray-700:#3c434a;--ffc-gray-800:#1d2327;--ffc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--ffc-font-size-2xs:max(11px, 0.6875rem);--ffc-font-size-xs:max(12px, 0.75rem);--ffc-font-size-sm:max(13px, 0.8125rem);--ffc-font-size-base:max(14px, 0.875rem);--ffc-font-size-lg:max(16px, 1rem);--ffc-font-size-xl:max(18px, 1.125rem);--ffc-font-size-2xl:max(24px, 1.5rem);--ffc-spacing-3xs:2px;--ffc-spacing-2xs:4px;--ffc-spacing-xs:6px;--ffc-spacing-sm:8px;--ffc-spacing-md:10px;--ffc-spacing-lg:12px;--ffc-spacing-xl:16px;--ffc-spacing-2xl:20px;--ffc-spacing-3xl:24px;--ffc-radius-xs:3px;--ffc-radius-sm:4px;--ffc-radius-md:6px;--ffc-radius-lg:8px;--ffc-radius-full:50%;--ffc-radius-pill:12px;--ffc-form-width:600px;--ffc-z-raised:1;--ffc-z-sticky:10;--ffc-z-dropdown:100;--ffc-z-overlay:1000;--ffc-z-modal:100000;--ffc-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.1);--ffc-shadow-md:0 2px 8px rgba(0, 0, 0, 0.1);--ffc-shadow-lg:0 5px 30px rgba(0, 0, 0, 0.15);--ffc-transition-fast:0.15s ease;--ffc-transition-base:0.2s ease;--ffc-transition-slow:0.3s ease;--ffc-bg:#ffffff;--ffc-bg-alt:#f6f7f7;--ffc-badge-row-bg:var(--ffc-bg-alt);--ffc-badge-row-text:var(--ffc-text);--ffc-bg-card:#ffffff;--ffc-bg-input:#ffffff;--ffc-bg-overlay:rgba(0, 0, 0, 0.5);--ffc-text:#1d2327;--ffc-text-secondary:#50575e;--ffc-text-muted:#646970;--ffc-text-light:#737579;--ffc-text-on-primary:#ffffff;--ffc-text-on-danger:#ffffff;--ffc-text-on-success:#ffffff;--ffc-text-on-warning:#2e2200;--ffc-inverse-surface:#1d2327;--ffc-inverse-on-surface:#ffffff;--ffc-border:#8e8f91;--ffc-border-light:#dcdcde;--ffc-border-focus:#2271b1;--ffc-success-bg:#e7f5ec;--ffc-success-border:#00801e;--ffc-success-text:#0a5c1a;--ffc-warning-bg:#fff8e5;--ffc-warning-border:#dba617;--ffc-warning-text:#6e4e00;--ffc-danger-bg:#fcf0f1;--ffc-danger-border:#d63638;--ffc-danger-text:#8a2424;--ffc-info-bg:#e5f5fa;--ffc-info-border:#006ba1;--ffc-info-text:#004b70;--ffc-accent-bg:#f3eefb;--ffc-accent-border:#6b4fa8;--ffc-accent-text:#4b2e83;--ffc-link:#2271b1;--ffc-link-hover:#135e96;--ffc-focus-ring:rgba(34, 113, 177, 0.75)}:root.ffc-dark-mode{--ffc-primary:#5dabde;--ffc-primary-hover:#7cbde8;--ffc-primary-light:#1a2f42;--ffc-success:#4caf50;--ffc-success-hover:#6ec071;--ffc-success-light:#1a2e1a;--ffc-warning:#f0b849;--ffc-warning-light:#332b10;--ffc-danger:#e88080;--ffc-danger-hover:#ee9595;--ffc-danger-light:#2e1515;--ffc-info:#4fc3f7;--ffc-info-light:#0d2b3a;--ffc-gray-50:#1d2327;--ffc-gray-100:#23282d;--ffc-gray-200:#2c3338;--ffc-gray-300:#3c434a;--ffc-gray-400:#646970;--ffc-gray-500:#8c8f94;--ffc-gray-600:#a7aaad;--ffc-gray-700:#c3c4c7;--ffc-gray-800:#e7e8ea;--ffc-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.3);--ffc-shadow-md:0 2px 8px rgba(0, 0, 0, 0.3);--ffc-shadow-lg:0 5px 30px rgba(0, 0, 0, 0.4);--ffc-bg:#1d2327;--ffc-bg-alt:#23282d;--ffc-bg-card:#2c3338;--ffc-bg-input:#23282d;--ffc-bg-overlay:rgba(0, 0, 0, 0.7);--ffc-inverse-surface:#e7e8ea;--ffc-inverse-on-surface:#1d2327;--ffc-text:#e7e8ea;--ffc-text-secondary:#c3c4c7;--ffc-text-muted:#a7aaad;--ffc-text-light:#9a9ea3;--ffc-text-on-primary:#213c4e;--ffc-text-on-danger:#452020;--ffc-text-on-success:#10361a;--ffc-border:#6f7c89;--ffc-border-light:#2c3338;--ffc-border-focus:#5dabde;--ffc-success-bg:#1a2e1a;--ffc-success-border:#4caf50;--ffc-success-text:#81c784;--ffc-warning-bg:#332b10;--ffc-warning-border:#f0b849;--ffc-warning-text:#ffe082;--ffc-danger-bg:#2e1515;--ffc-danger-border:#e88080;--ffc-danger-text:#ef9a9a;--ffc-info-bg:#0d2b3a;--ffc-info-border:#4fc3f7;--ffc-info-text:#81d4fa;--ffc-accent-bg:#2a2136;--ffc-accent-border:#b39ddb;--ffc-accent-text:#c5b3e6;--ffc-link:#5dabde;--ffc-link-hover:#7cbde8;--ffc-focus-ring:rgba(93, 171, 222, 0.6)}:root.ffc-dark-mode .ffc-cancel-page,:root.ffc-dark-mode .ffc-rereg-form-container,:root.ffc-dark-mode .ffc-shortcode,:root.ffc-dark-mode body.wp-admin{color:var(--ffc-text)}:root.ffc-dark-mode body.wp-admin{background-color:var(--ffc-bg)}:root.ffc-dark-mode:has(> body.wp-admin){color-scheme:dark}:root.ffc-dark-mode .wp-heading-inline,:root.ffc-dark-mode .wrap h1,:root.ffc-dark-mode .wrap h2,:root.ffc-dark-mode .wrap h3{color:var(--ffc-text)}:root.ffc-dark-mode .form-table td,:root.ffc-dark-mode .form-table td label,:root.ffc-dark-mode .form-table th,:root.ffc-dark-mode .form-table th label,:root.ffc-dark-mode fieldset legend{color:var(--ffc-text)}:root.ffc-dark-mode .form-table,:root.ffc-dark-mode .form-table tr{border-color:var(--ffc-border)}:root.ffc-dark-mode .description,:root.ffc-dark-mode .displaying-num,:root.ffc-dark-mode .howto,:root.ffc-dark-mode .subsubsub .count,:root.ffc-dark-mode p.description{color:var(--ffc-text-muted)}:root.ffc-dark-mode #titlediv #title,:root.ffc-dark-mode input[type=date],:root.ffc-dark-mode input[type=datetime-local],:root.ffc-dark-mode input[type=email],:root.ffc-dark-mode input[type=number],:root.ffc-dark-mode input[type=password],:root.ffc-dark-mode input[type=search],:root.ffc-dark-mode input[type=tel],:root.ffc-dark-mode input[type=text],:root.ffc-dark-mode input[type=time],:root.ffc-dark-mode input[type=url],:root.ffc-dark-mode select,:root.ffc-dark-mode textarea{color:var(--ffc-text);background-color:var(--ffc-bg-input);border-color:var(--ffc-border)}:root.ffc-dark-mode input::placeholder,:root.ffc-dark-mode textarea::placeholder{color:var(--ffc-text-light)}:root.ffc-dark-mode input:focus,:root.ffc-dark-mode select:focus,:root.ffc-dark-mode textarea:focus{border-color:var(--ffc-border-focus);box-shadow:0 0 0 1px var(--ffc-border-focus)}:root.ffc-dark-mode input[type=checkbox],:root.ffc-dark-mode input[type=radio]{color:var(--ffc-text);background-color:var(--ffc-bg-alt);border-color:var(--ffc-text-muted)}:root.ffc-dark-mode input:disabled,:root.ffc-dark-mode select:disabled,:root.ffc-dark-mode textarea:disabled{color:var(--ffc-text-muted);background-color:var(--ffc-bg-alt)}:root.ffc-dark-mode .card,:root.ffc-dark-mode .postbox{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .postbox .hndle,:root.ffc-dark-mode .postbox .postbox-header,:root.ffc-dark-mode .postbox h2{color:var(--ffc-text);border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table,:root.ffc-dark-mode table.widefat{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table th,:root.ffc-dark-mode .wp-list-table thead td,:root.ffc-dark-mode table.widefat th,:root.ffc-dark-mode table.widefat thead td{color:var(--ffc-text);background:var(--ffc-bg-alt);border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table td,:root.ffc-dark-mode table.widefat td{color:var(--ffc-text);border-top-color:var(--ffc-border)}:root.ffc-dark-mode .alternate,:root.ffc-dark-mode .striped>tbody>:nth-child(odd),:root.ffc-dark-mode .wp-list-table.striped>tbody>:nth-child(odd){background-color:var(--ffc-bg-alt)}:root.ffc-dark-mode .subsubsub,:root.ffc-dark-mode .subsubsub a,:root.ffc-dark-mode .tablenav,:root.ffc-dark-mode .tablenav .displaying-num,:root.ffc-dark-mode .tablenav-pages a{color:var(--ffc-text-secondary)}:root.ffc-dark-mode .button,:root.ffc-dark-mode .button-secondary{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .button-secondary:hover,:root.ffc-dark-mode .button:hover{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button.disabled,:root.ffc-dark-mode .button:disabled{color:var(--ffc-text-light);background:var(--ffc-bg);border-color:var(--ffc-border-light)}:root.ffc-dark-mode #major-publishing-actions{background:var(--ffc-bg-alt);border-top-color:var(--ffc-border)}:root.ffc-dark-mode .submitdelete{color:var(--ffc-danger)}:root.ffc-dark-mode .row-actions{color:var(--ffc-text-muted)}:root.ffc-dark-mode #screen-meta,:root.ffc-dark-mode #screen-meta-links .show-settings{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .notice a,:root.ffc-dark-mode div.error a,:root.ffc-dark-mode div.updated a{color:var(--ffc-primary)}:where(:root.ffc-dark-mode body.wp-admin) a{color:var(--ffc-primary)}:where(:root.ffc-dark-mode body.wp-admin) a:focus,:where(:root.ffc-dark-mode body.wp-admin) a:hover{color:var(--ffc-primary-hover)}:root.ffc-dark-mode .page-title-action{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .page-title-action:focus,:root.ffc-dark-mode .page-title-action:hover{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button-primary.disabled,:root.ffc-dark-mode .button-primary:disabled,:root.ffc-dark-mode .button-primary[disabled]{color:var(--ffc-text-light)!important;background:var(--ffc-bg)!important;border-color:var(--ffc-border-light)!important}:root.ffc-dark-mode input[type=color]{color:var(--ffc-text);background-color:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .mce-panel,:root.ffc-dark-mode .mce-statusbar,:root.ffc-dark-mode .mce-toolbar-grp,:root.ffc-dark-mode .quicktags-toolbar,:root.ffc-dark-mode .wp-editor-container,:root.ffc-dark-mode .wp-switch-editor{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .html-active .switch-html,:root.ffc-dark-mode .tmce-active .switch-tmce{background:var(--ffc-bg-card)}:root.ffc-dark-mode .mce-btn .mce-ico,:root.ffc-dark-mode .mce-btn button,:root.ffc-dark-mode .mce-path-item,:root.ffc-dark-mode .mce-wordcount{color:var(--ffc-text)}:root.ffc-dark-mode .mce-btn.mce-active,:root.ffc-dark-mode .mce-btn:hover{background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode #titlediv #title-prompt-text{color:var(--ffc-text-muted)}:root.ffc-dark-mode input[type=file]{color:var(--ffc-text)}:root.ffc-dark-mode input[type=file]::file-selector-button{margin-right:var(--ffc-spacing-sm);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);color:var(--ffc-text);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);cursor:pointer}:root.ffc-dark-mode input[type=file]::file-selector-button:hover{background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button-link:not(.button-link-delete){color:var(--ffc-primary)}:root.ffc-dark-mode .wp-picker-container .wp-color-result-text{color:var(--ffc-text);background:var(--ffc-bg-alt);border-left-color:var(--ffc-border)}:root.ffc-dark-mode .wp-picker-container .wp-color-result:focus .wp-color-result-text,:root.ffc-dark-mode .wp-picker-container .wp-color-result:hover .wp-color-result-text{background:var(--ffc-bg-card)}:root.ffc-dark-mode .wp-picker-container .iris-picker{background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab-wrapper{border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab{color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab-active,:root.ffc-dark-mode .nav-tab:hover{color:var(--ffc-text);background:var(--ffc-bg-card)}:root.ffc-dark-mode .notice,:root.ffc-dark-mode div.error,:root.ffc-dark-mode div.updated{color:var(--ffc-text);background:var(--ffc-bg-card)}:root.ffc-dark-mode .notice li,:root.ffc-dark-mode .notice p,:root.ffc-dark-mode .notice strong,:root.ffc-dark-mode div.error p,:root.ffc-dark-mode div.updated p{color:var(--ffc-text)}:root.ffc-dark-mode code,:root.ffc-dark-mode kbd{color:var(--ffc-text);background:var(--ffc-bg-alt)}:root.ffc-dark-mode .wp-header-end,:root.ffc-dark-mode hr{border-color:var(--ffc-border)}.ffc-shortcode .ffc-modal,.ffc-shortcode.ffc-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}.ffc-shortcode .ffc-modal[hidden]{display:none}.ffc-shortcode .ffc-modal-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--ffc-bg-overlay)}.ffc-shortcode .ffc-modal-content{position:relative;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-lg);max-width:500px;width:90%;max-height:90vh;overflow:auto}.ffc-shortcode .ffc-modal-lg{max-width:min(700px,95vw)}@media screen and (max-width:768px){.ffc-shortcode .ffc-modal-content{width:95%;max-height:95vh}}.ffc-shortcode .ffc-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);border-bottom:1px solid var(--ffc-gray-200)}.ffc-shortcode .ffc-modal-header h3{margin:0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-modal-close{background:0 0;border:none;font-size:var(--ffc-font-size-2xl);cursor:pointer;color:var(--ffc-gray-600);padding:0;line-height:1}.ffc-shortcode .ffc-modal-close:hover{color:var(--ffc-gray-800)}.ffc-shortcode .ffc-modal-body{padding:var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-modal-footer{display:flex;justify-content:flex-end;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-gray-200)}.ffc-shortcode .ffc-modal-body .ffc-form-group label{display:block;font-weight:600;margin-bottom:var(--ffc-spacing-2xs)}.ffc-shortcode .ffc-modal-body .ffc-form-group textarea{width:100%;box-sizing:border-box;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);color:var(--ffc-text);background:var(--ffc-bg-input);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-cancel-summary{margin:1.5rem 0;padding:1rem;background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm)}.ffc-cancel-summary dt{font-weight:600;color:var(--ffc-text-secondary)}.ffc-cancel-summary dd{margin:0 0 .75rem}.ffc-cancel-summary dd:last-child{margin-bottom:0}.ffc-hidden{position:absolute!important;left:-9999px!important;display:none!important}.ffc-initially-hidden{display:none}.ffc-honeypot-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.ffc-status-badge{display:inline-block;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;white-space:nowrap}.ffc-status-pending{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-loading{position:relative;pointer-events:none;opacity:.6}.ffc-loading::after{content:'';position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--ffc-border-light);border-top:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:ffc-spin 1s linear infinite}@keyframes ffc-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ffc-rate-limit-notice{background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-2xl);display:flex;align-items:center;gap:var(--ffc-spacing-md)}.ffc-rate-limit-icon{font-size:var(--ffc-font-size-2xl);color:var(--ffc-warning-text)}.ffc-rate-limit-icon::before{margin-right:0}.ffc-rate-limit-message{flex:1;color:var(--ffc-warning-text)}.ffc-rate-limit-message strong{color:var(--ffc-danger);font-family:monospace}.ffc-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.ffc-empty-state{text-align:center;padding:56px var(--ffc-spacing-2xl);color:var(--ffc-text-muted)}.ffc-empty-state .ffc-empty-state__icon{margin-bottom:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xl)}.ffc-empty-state .ffc-empty-state__title{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-empty-state .ffc-empty-state__text{max-width:36em;margin:0 auto;font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted)}.ffc-empty-state .ffc-empty-state__actions{margin:var(--ffc-spacing-lg) 0 0}@media (prefers-reduced-motion:reduce){.ffc-loading::after{animation:none}}.ffc-icon-api::before,.ffc-icon-award::before,.ffc-icon-building::before,.ffc-icon-bulb::before,.ffc-icon-calendar::before,.ffc-icon-chart::before,.ffc-icon-checkmark::before,.ffc-icon-chevron-down::before,.ffc-icon-chevron-left::before,.ffc-icon-chevron-right::before,.ffc-icon-chevron-up::before,.ffc-icon-clipboard::before,.ffc-icon-clock::before,.ffc-icon-cloud::before,.ffc-icon-code::before,.ffc-icon-copy::before,.ffc-icon-cross::before,.ffc-icon-database::before,.ffc-icon-debug::before,.ffc-icon-delete::before,.ffc-icon-doc::before,.ffc-icon-download::before,.ffc-icon-edit::before,.ffc-icon-email::before,.ffc-icon-error::before,.ffc-icon-external::before,.ffc-icon-eye::before,.ffc-icon-file::before,.ffc-icon-filter::before,.ffc-icon-gauge::before,.ffc-icon-globe::before,.ffc-icon-grid::before,.ffc-icon-grip::before,.ffc-icon-help::before,.ffc-icon-history::before,.ffc-icon-id::before,.ffc-icon-image::before,.ffc-icon-inbox::before,.ffc-icon-info::before,.ffc-icon-key::before,.ffc-icon-layout::before,.ffc-icon-link::before,.ffc-icon-list::before,.ffc-icon-lock::before,.ffc-icon-logout::before,.ffc-icon-map-pin::before,.ffc-icon-megaphone::before,.ffc-icon-minus::before,.ffc-icon-monitor::before,.ffc-icon-network::before,.ffc-icon-package::before,.ffc-icon-palette::before,.ffc-icon-phone::before,.ffc-icon-plus::before,.ffc-icon-print::before,.ffc-icon-qr::before,.ffc-icon-restore::before,.ffc-icon-robot::before,.ffc-icon-scroll::before,.ffc-icon-search::before,.ffc-icon-send::before,.ffc-icon-server::before,.ffc-icon-settings::before,.ffc-icon-share::before,.ffc-icon-shield::before,.ffc-icon-skip::before,.ffc-icon-sliders::before,.ffc-icon-success::before,.ffc-icon-sync::before,.ffc-icon-tag::before,.ffc-icon-unlock::before,.ffc-icon-upload::before,.ffc-icon-user-check::before,.ffc-icon-user::before,.ffc-icon-users::before,.ffc-icon-warning::before,.ffc-icon-wrench::before,.ffc-icon-zap::before{content:"";display:inline-block;flex-shrink:0;width:1.15em;height:1.15em;margin-right:.4em;vertical-align:-.2em;background-color:var(--ffc-icon-tone,currentColor);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.ffc-icon-api::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 19H6a4.25 4.25 0 0 1-.6-8.46 6.75 6.75 0 0 1 13.1-1.3A3.6 3.6 0 0 1 21 11.7'/%3E%3Cpath d='M15.6 14.4L15.8 13.0L18.2 13.0L18.4 14.4L18.7 14.6L20.1 14.1L21.3 16.1L20.1 17.0L20.1 17.4L21.3 18.3L20.1 20.3L18.7 19.8L18.4 20.0L18.2 21.4L15.8 21.4L15.6 20.0L15.3 19.8L13.9 20.3L12.7 18.3L13.9 17.4L13.9 17.0L12.7 16.1L13.9 14.1L15.3 14.6z'/%3E%3Ccircle cx='17' cy='17.2' r='1.3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 19H6a4.25 4.25 0 0 1-.6-8.46 6.75 6.75 0 0 1 13.1-1.3A3.6 3.6 0 0 1 21 11.7'/%3E%3Cpath d='M15.6 14.4L15.8 13.0L18.2 13.0L18.4 14.4L18.7 14.6L20.1 14.1L21.3 16.1L20.1 17.0L20.1 17.4L21.3 18.3L20.1 20.3L18.7 19.8L18.4 20.0L18.2 21.4L15.8 21.4L15.6 20.0L15.3 19.8L13.9 20.3L12.7 18.3L13.9 17.4L13.9 17.0L12.7 16.1L13.9 14.1L15.3 14.6z'/%3E%3Ccircle cx='17' cy='17.2' r='1.3'/%3E%3C/svg%3E")}.ffc-icon-award::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='9' r='6'/%3E%3Cpath d='M8.5 13.9L7 21l5-2.5 5 2.5-1.5-7.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='9' r='6'/%3E%3Cpath d='M8.5 13.9L7 21l5-2.5 5 2.5-1.5-7.1'/%3E%3C/svg%3E")}.ffc-icon-building::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v16M15 9h4a1 1 0 0 1 1 1v11M3 21h18'/%3E%3Cpath d='M8 8h3M8 12h3M8 16h3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v16M15 9h4a1 1 0 0 1 1 1v11M3 21h18'/%3E%3Cpath d='M8 8h3M8 12h3M8 16h3'/%3E%3C/svg%3E")}.ffc-icon-bulb::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2V16h5v-.1c0-.8.4-1.5 1-2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2V16h5v-.1c0-.8.4-1.5 1-2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E")}.ffc-icon-calendar::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E")}.ffc-icon-chart::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M7 20v-6M12 20V8M17 20V10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M7 20v-6M12 20V8M17 20V10'/%3E%3C/svg%3E")}.ffc-icon-checkmark::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E")}.ffc-icon-chevron-down::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}.ffc-icon-chevron-left::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E")}.ffc-icon-chevron-right::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E")}.ffc-icon-chevron-up::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E")}.ffc-icon-clipboard::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4V3h6v1M9 10h6M9 14h6M9 18h4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4V3h6v1M9 10h6M9 14h6M9 18h4'/%3E%3C/svg%3E")}.ffc-icon-clock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E")}.ffc-icon-cloud::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 18a4.5 4.5 0 0 1-.5-9A6 6 0 0 1 18 8.5a4.75 4.75 0 0 1-.5 9.5z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 18a4.5 4.5 0 0 1-.5-9A6 6 0 0 1 18 8.5a4.75 4.75 0 0 1-.5 9.5z'/%3E%3C/svg%3E")}.ffc-icon-code::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5M14 4l-4 16'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5M14 4l-4 16'/%3E%3C/svg%3E")}.ffc-icon-copy::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h10'/%3E%3C/svg%3E")}.ffc-icon-cross::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E")}.ffc-icon-database::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3z'/%3E%3Cpath d='M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3z'/%3E%3Cpath d='M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3'/%3E%3C/svg%3E")}.ffc-icon-debug::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='8' width='10' height='12' rx='5'/%3E%3Cpath d='M12 8v12M9 5l1.5 2M15 5l-1.5 2M3 12h4M17 12h4M4 7l3 2.5M20 7l-3 2.5M4 18l3-2M20 18l-3-2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='8' width='10' height='12' rx='5'/%3E%3Cpath d='M12 8v12M9 5l1.5 2M15 5l-1.5 2M3 12h4M17 12h4M4 7l3 2.5M20 7l-3 2.5M4 18l3-2M20 18l-3-2'/%3E%3C/svg%3E")}.ffc-icon-delete::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M9 7V4h6v3M6 7l1 13h10l1-13'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M9 7V4h6v3M6 7l1 13h10l1-13'/%3E%3C/svg%3E")}.ffc-icon-doc::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5a2 2 0 0 1 2-2h14v16H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 19V5M8 7h8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5a2 2 0 0 1 2-2h14v16H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 19V5M8 7h8'/%3E%3C/svg%3E")}.ffc-icon-download::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11M7 10l5 5 5-5M5 20h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11M7 10l5 5 5-5M5 20h14'/%3E%3C/svg%3E")}.ffc-icon-edit::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9l-4-4L4 16z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9l-4-4L4 16z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E")}.ffc-icon-email::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3.5 7l8.5 6 8.5-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3.5 7l8.5 6 8.5-6'/%3E%3C/svg%3E")}.ffc-icon-error::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9 9l6 6M15 9l-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9 9l6 6M15 9l-6 6'/%3E%3C/svg%3E")}.ffc-icon-external::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9'/%3E%3Cpath d='M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9'/%3E%3Cpath d='M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E")}.ffc-icon-eye::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}.ffc-icon-file::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E")}.ffc-icon-filter::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18l-7 8v6l-4-2v-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18l-7 8v6l-4-2v-4z'/%3E%3C/svg%3E")}.ffc-icon-gauge::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.2 17a9 9 0 1 1 15.6 0'/%3E%3Cpath d='M12.9 12.8L16 8.5'/%3E%3Ccircle cx='12' cy='14' r='1.6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.2 17a9 9 0 1 1 15.6 0'/%3E%3Cpath d='M12.9 12.8L16 8.5'/%3E%3Ccircle cx='12' cy='14' r='1.6'/%3E%3C/svg%3E")}.ffc-icon-globe::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18'/%3E%3C/svg%3E")}.ffc-icon-grid::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='4' y='13' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='4' y='13' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1.5'/%3E%3C/svg%3E")}.ffc-icon-grip::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-help::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6'/%3E%3Ccircle cx='12' cy='17' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6'/%3E%3Ccircle cx='12' cy='17' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-history::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5M12 7.5V12l3 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5M12 7.5V12l3 2'/%3E%3C/svg%3E")}.ffc-icon-id::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='5' width='19' height='14' rx='2'/%3E%3Cpath d='M6.5 15V9M10 9h2.5a3 3 0 0 1 0 6H10z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='5' width='19' height='14' rx='2'/%3E%3Cpath d='M6.5 15V9M10 9h2.5a3 3 0 0 1 0 6H10z'/%3E%3C/svg%3E")}.ffc-icon-image::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-9 9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-9 9'/%3E%3C/svg%3E")}.ffc-icon-inbox::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13l2.5-8h13L21 13v6H3z'/%3E%3Cpath d='M3 13h5l1.5 2.5h5L16 13h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13l2.5-8h13L21 13v6H3z'/%3E%3Cpath d='M3 13h5l1.5 2.5h5L16 13h5'/%3E%3C/svg%3E")}.ffc-icon-info::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6'/%3E%3Ccircle cx='12' cy='7.5' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6'/%3E%3Ccircle cx='12' cy='7.5' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-key::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.5' cy='15.5' r='4'/%3E%3Cpath d='M10.5 12.5L20 3M16 7l3 3M13.5 9.5l2 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.5' cy='15.5' r='4'/%3E%3Cpath d='M10.5 12.5L20 3M16 7l3 3M13.5 9.5l2 2'/%3E%3C/svg%3E")}.ffc-icon-layout::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M9 9v11'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M9 9v11'/%3E%3C/svg%3E")}.ffc-icon-link::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1 1'/%3E%3Cpath d='M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1-1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1 1'/%3E%3Cpath d='M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1-1'/%3E%3C/svg%3E")}.ffc-icon-list::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11'/%3E%3Ccircle cx='4.5' cy='6' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='12' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='18' r='1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11'/%3E%3Ccircle cx='4.5' cy='6' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='12' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='18' r='1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-lock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E")}.ffc-icon-logout::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M15 8l4 4-4 4M19 12H9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M15 8l4 4-4 4M19 12H9'/%3E%3C/svg%3E")}.ffc-icon-map-pin::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E")}.ffc-icon-megaphone::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10v4h3l7 4V6l-7 4z'/%3E%3Cpath d='M6 14l1.5 5h2.5l-1.3-4.3M17 9a4 4 0 0 1 0 6M19.5 6.5a7.5 7.5 0 0 1 0 11'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10v4h3l7 4V6l-7 4z'/%3E%3Cpath d='M6 14l1.5 5h2.5l-1.3-4.3M17 9a4 4 0 0 1 0 6M19.5 6.5a7.5 7.5 0 0 1 0 11'/%3E%3C/svg%3E")}.ffc-icon-minus::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E")}.ffc-icon-monitor::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4' width='15' height='10.5' rx='1.5'/%3E%3Cpath d='M7 18.5h6M10 14.5v4'/%3E%3Crect x='16' y='9' width='5.5' height='11' rx='1.2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4' width='15' height='10.5' rx='1.5'/%3E%3Cpath d='M7 18.5h6M10 14.5v4'/%3E%3Crect x='16' y='9' width='5.5' height='11' rx='1.2'/%3E%3C/svg%3E")}.ffc-icon-network::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='3' width='6' height='5' rx='1'/%3E%3Crect x='3' y='16' width='6' height='5' rx='1'/%3E%3Crect x='15' y='16' width='6' height='5' rx='1'/%3E%3Cpath d='M12 8v4M6 16v-2h12v2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='3' width='6' height='5' rx='1'/%3E%3Crect x='3' y='16' width='6' height='5' rx='1'/%3E%3Crect x='15' y='16' width='6' height='5' rx='1'/%3E%3Cpath d='M12 8v4M6 16v-2h12v2'/%3E%3C/svg%3E")}.ffc-icon-package::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5L12 3l9 4.5v9L12 21l-9-4.5z'/%3E%3Cpath d='M3 7.5l9 4.5 9-4.5M12 12v9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5L12 3l9 4.5v9L12 21l-9-4.5z'/%3E%3Cpath d='M3 7.5l9 4.5 9-4.5M12 12v9'/%3E%3C/svg%3E")}.ffc-icon-palette::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 1 0 0 18c1.1 0 1.6-.8 1.6-1.6 0-1.2-1-1.6-1-2.6 0-.9.7-1.6 1.6-1.6H17a4 4 0 0 0 4-4c0-4.6-4-8.2-9-8.2z'/%3E%3Ccircle cx='7.5' cy='11' r='1'/%3E%3Ccircle cx='10' cy='7' r='1'/%3E%3Ccircle cx='15' cy='7' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 1 0 0 18c1.1 0 1.6-.8 1.6-1.6 0-1.2-1-1.6-1-2.6 0-.9.7-1.6 1.6-1.6H17a4 4 0 0 0 4-4c0-4.6-4-8.2-9-8.2z'/%3E%3Ccircle cx='7.5' cy='11' r='1'/%3E%3Ccircle cx='10' cy='7' r='1'/%3E%3Ccircle cx='15' cy='7' r='1'/%3E%3C/svg%3E")}.ffc-icon-phone::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h3.5l1.8 4.6-2.3 1.5a11 11 0 0 0 5.9 5.9l1.5-2.3L20 15.5V19a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h3.5l1.8 4.6-2.3 1.5a11 11 0 0 0 5.9 5.9l1.5-2.3L20 15.5V19a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E")}.ffc-icon-plus::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}.ffc-icon-print::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 9V3h10v6'/%3E%3Crect x='3' y='9' width='18' height='8' rx='2'/%3E%3Cpath d='M7 14h10v7H7z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 9V3h10v6'/%3E%3Crect x='3' y='9' width='18' height='8' rx='2'/%3E%3Cpath d='M7 14h10v7H7z'/%3E%3C/svg%3E")}.ffc-icon-qr::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Cpath d='M14 14h3v3h-3zM20.5 14v.01M14 20.5h.01M17.5 20.5H21v-3.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Cpath d='M14 14h3v3h-3zM20.5 14v.01M14 20.5h.01M17.5 20.5H21v-3.5'/%3E%3C/svg%3E")}.ffc-icon-restore::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E")}.ffc-icon-robot::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 4.5V8M9 13v1M15 13v1M9 17h6'/%3E%3Ccircle cx='12' cy='3.5' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 4.5V8M9 13v1M15 13v1M9 17h6'/%3E%3Ccircle cx='12' cy='3.5' r='1'/%3E%3C/svg%3E")}.ffc-icon-scroll::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E")}.ffc-icon-search::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M20 20l-4.4-4.4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M20 20l-4.4-4.4'/%3E%3C/svg%3E")}.ffc-icon-send::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3L3 10.5l7 2.5 2.5 7z'/%3E%3Cpath d='M21 3L10 13'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3L3 10.5l7 2.5 2.5 7z'/%3E%3Cpath d='M21 3L10 13'/%3E%3C/svg%3E")}.ffc-icon-server::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='7' rx='1.5'/%3E%3Crect x='3' y='13' width='18' height='7' rx='1.5'/%3E%3Cpath d='M7 7.5h.01M7 16.5h.01M11 7.5h6M11 16.5h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='7' rx='1.5'/%3E%3Crect x='3' y='13' width='18' height='7' rx='1.5'/%3E%3Cpath d='M7 7.5h.01M7 16.5h.01M11 7.5h6M11 16.5h6'/%3E%3C/svg%3E")}.ffc-icon-settings::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Cpath d='M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9L7 7M17 17l2.1 2.1M4.9 19.1L7 17M17 7l2.1-2.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Cpath d='M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9L7 7M17 17l2.1 2.1M4.9 19.1L7 17M17 7l2.1-2.1'/%3E%3C/svg%3E")}.ffc-icon-share::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5.5' r='2.5'/%3E%3Ccircle cx='6' cy='12' r='2.5'/%3E%3Ccircle cx='18' cy='18.5' r='2.5'/%3E%3Cpath d='M8.2 10.8l7.6-4.1M8.2 13.2l7.6 4.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5.5' r='2.5'/%3E%3Ccircle cx='6' cy='12' r='2.5'/%3E%3Ccircle cx='18' cy='18.5' r='2.5'/%3E%3Cpath d='M8.2 10.8l7.6-4.1M8.2 13.2l7.6 4.1'/%3E%3C/svg%3E")}.ffc-icon-shield::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/%3E%3C/svg%3E")}.ffc-icon-skip::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5l9 7-9 7zM18 5v14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5l9 7-9 7zM18 5v14'/%3E%3C/svg%3E")}.ffc-icon-sliders::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1'/%3E%3Ccircle cx='15' cy='6' r='2'/%3E%3Ccircle cx='9' cy='12' r='2'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1'/%3E%3Ccircle cx='15' cy='6' r='2'/%3E%3Ccircle cx='9' cy='12' r='2'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3C/svg%3E")}.ffc-icon-success::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.5l2.8 2.8L16.5 9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.5l2.8 2.8L16.5 9'/%3E%3C/svg%3E")}.ffc-icon-sync::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.3-4.9L4 8M4 4v4h4M4 13a8 8 0 0 0 14.3 4.9L20 16M20 20v-4h-4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.3-4.9L4 8M4 4v4h4M4 13a8 8 0 0 0 14.3 4.9L20 16M20 20v-4h-4'/%3E%3C/svg%3E")}.ffc-icon-tag::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.5'/%3E%3C/svg%3E")}.ffc-icon-unlock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 7.7-1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 7.7-1.5'/%3E%3C/svg%3E")}.ffc-icon-upload::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V5M7 10l5-5 5 5M5 20h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V5M7 10l5-5 5 5M5 20h14'/%3E%3C/svg%3E")}.ffc-icon-user::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1.5-4 4.5-6 8-6s6.5 2 8 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1.5-4 4.5-6 8-6s6.5 2 8 6'/%3E%3C/svg%3E")}.ffc-icon-user-check::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='8' r='4'/%3E%3Cpath d='M3 21c1.4-3.8 4-5.8 7-5.8 1.6 0 3 .5 4.2 1.5M15.5 18.5l2 2 4-4.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='8' r='4'/%3E%3Cpath d='M3 21c1.4-3.8 4-5.8 7-5.8 1.6 0 3 .5 4.2 1.5M15.5 18.5l2 2 4-4.5'/%3E%3C/svg%3E")}.ffc-icon-users::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.5 3.4-5.5 6.5-5.5s5.7 2 6.5 5.5'/%3E%3Cpath d='M16 4.6a3.5 3.5 0 0 1 0 6.8M18 14.8c2 .7 3.2 2.5 3.5 5.2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.5 3.4-5.5 6.5-5.5s5.7 2 6.5 5.5'/%3E%3Cpath d='M16 4.6a3.5 3.5 0 0 1 0 6.8M18 14.8c2 .7 3.2 2.5 3.5 5.2'/%3E%3C/svg%3E")}.ffc-icon-warning::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5L2.5 20h19z'/%3E%3Cpath d='M12 10v4.5'/%3E%3Ccircle cx='12' cy='17.3' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5L2.5 20h19z'/%3E%3Cpath d='M12 10v4.5'/%3E%3Ccircle cx='12' cy='17.3' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-wrench::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 6.5a4 4 0 0 0 5 5L21 10a6 6 0 0 1-7.9 5.4L6 22.5 1.5 18l7.1-7.1A6 6 0 0 1 14 3l-1.5 1.5z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 6.5a4 4 0 0 0 5 5L21 10a6 6 0 0 1-7.9 5.4L6 22.5 1.5 18l7.1-7.1A6 6 0 0 1 14 3l-1.5 1.5z'/%3E%3C/svg%3E")}.ffc-icon-zap::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E")}.ffc-svg-icon{color:var(--ffc-icon-tone,currentColor)}.ffc-icon-tone-primary{--ffc-icon-tone:var(--ffc-primary)}.ffc-icon-tone-info{--ffc-icon-tone:var(--ffc-info)}.ffc-icon-tone-success{--ffc-icon-tone:var(--ffc-success)}.ffc-icon-tone-warning{--ffc-icon-tone:var(--ffc-warning-text)}.ffc-icon-tone-danger{--ffc-icon-tone:var(--ffc-danger)}.ffc-icon-tone-neutral{--ffc-icon-tone:var(--ffc-text-secondary)}.ffc-icon-badge{--ffc-icon-tone:currentColor;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2.25em;height:2.25em;border-radius:var(--ffc-radius-lg);background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-icon-badge::before{margin-right:0}.ffc-icon-badge.ffc-icon-badge-primary{background:var(--ffc-primary-light);color:var(--ffc-primary)}.ffc-icon-badge.ffc-icon-badge-info{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-icon-badge.ffc-icon-badge-success{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-icon-badge.ffc-icon-badge-warning{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-icon-badge.ffc-icon-badge-danger{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-icon-spin::before{animation:ffc-icon-spin 1s linear infinite}@keyframes ffc-icon-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ffc-icon-spin::before{animation:none}}@media (forced-colors:active){.ffc-icon-api::before,.ffc-icon-award::before,.ffc-icon-building::before,.ffc-icon-bulb::before,.ffc-icon-calendar::before,.ffc-icon-chart::before,.ffc-icon-checkmark::before,.ffc-icon-chevron-down::before,.ffc-icon-chevron-left::before,.ffc-icon-chevron-right::before,.ffc-icon-chevron-up::before,.ffc-icon-clipboard::before,.ffc-icon-clock::before,.ffc-icon-cloud::before,.ffc-icon-code::before,.ffc-icon-copy::before,.ffc-icon-cross::before,.ffc-icon-database::before,.ffc-icon-debug::before,.ffc-icon-delete::before,.ffc-icon-doc::before,.ffc-icon-download::before,.ffc-icon-edit::before,.ffc-icon-email::before,.ffc-icon-error::before,.ffc-icon-external::before,.ffc-icon-eye::before,.ffc-icon-file::before,.ffc-icon-filter::before,.ffc-icon-gauge::before,.ffc-icon-globe::before,.ffc-icon-grid::before,.ffc-icon-grip::before,.ffc-icon-help::before,.ffc-icon-history::before,.ffc-icon-id::before,.ffc-icon-image::before,.ffc-icon-inbox::before,.ffc-icon-info::before,.ffc-icon-key::before,.ffc-icon-layout::before,.ffc-icon-link::before,.ffc-icon-list::before,.ffc-icon-lock::before,.ffc-icon-logout::before,.ffc-icon-map-pin::before,.ffc-icon-megaphone::before,.ffc-icon-minus::before,.ffc-icon-monitor::before,.ffc-icon-network::before,.ffc-icon-package::before,.ffc-icon-palette::before,.ffc-icon-phone::before,.ffc-icon-plus::before,.ffc-icon-print::before,.ffc-icon-qr::before,.ffc-icon-restore::before,.ffc-icon-robot::before,.ffc-icon-scroll::before,.ffc-icon-search::before,.ffc-icon-send::before,.ffc-icon-server::before,.ffc-icon-settings::before,.ffc-icon-share::before,.ffc-icon-shield::before,.ffc-icon-skip::before,.ffc-icon-sliders::before,.ffc-icon-success::before,.ffc-icon-sync::before,.ffc-icon-tag::before,.ffc-icon-unlock::before,.ffc-icon-upload::before,.ffc-icon-user-check::before,.ffc-icon-user::before,.ffc-icon-users::before,.ffc-icon-warning::before,.ffc-icon-wrench::before,.ffc-icon-zap::before{forced-color-adjust:none;background-color:CanvasText}.ffc-icon-badge,.ffc-icon-badge.ffc-icon-badge-danger,.ffc-icon-badge.ffc-icon-badge-info,.ffc-icon-badge.ffc-icon-badge-primary,.ffc-icon-badge.ffc-icon-badge-success,.ffc-icon-badge.ffc-icon-badge-warning{border:1px solid CanvasText}}.ffc-visibility-restricted{padding:var(--ffc-spacing-2xl);background:var(--ffc-warning-light);border:1px solid var(--ffc-warning);border-radius:var(--ffc-radius-md);text-align:center}.ffc-visibility-restricted .ffc-calendar-title{margin:0 0 var(--ffc-spacing-md);font-size:1.2em;color:var(--ffc-text)}.ffc-visibility-restricted .ffc-restricted-message{color:var(--ffc-text-muted)}.ffc-visibility-restricted .ffc-restricted-message a{color:var(--ffc-primary);font-weight:600}.ffc-scheduling-restricted{padding:var(--ffc-spacing-2xl);text-align:center}.ffc-scheduling-restricted .ffc-restricted-message{color:var(--ffc-text-muted)}.ffc-scheduling-restricted .ffc-restricted-message a{color:var(--ffc-primary);font-weight:600}.ffc-admin-bypass-notice{padding:var(--ffc-spacing-md) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl);background:var(--ffc-info-light);border:1px solid var(--ffc-info);border-radius:var(--ffc-radius-sm);font-size:.9em;color:var(--ffc-info)}.ffc-badge{display:inline-block;padding:3px var(--ffc-spacing-sm);border-radius:var(--ffc-radius-xs);font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.3px}.ffc-pill{display:inline-block;padding:3px var(--ffc-spacing-md);border-radius:var(--ffc-radius-pill);font-size:var(--ffc-font-size-xs);font-weight:500;cursor:default}.ffc-pill-has-tip{cursor:help}.ffc-pill-row-color{background:var(--ffc-badge-row-bg);color:var(--ffc-badge-row-text)}.ffc-btn{display:inline-block;padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);border:none;border-radius:var(--ffc-radius-sm);font-family:var(--ffc-font-family);font-size:var(--ffc-font-size-base);font-weight:500;cursor:pointer;text-decoration:none;text-align:center;transition:all .2s ease}.ffc-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-btn:disabled{opacity:.6;cursor:not-allowed}.ffc-btn-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-btn-primary:hover{background:var(--ffc-primary-hover)}.ffc-btn-primary:disabled{background:var(--ffc-gray-300)}.ffc-btn-secondary{background:var(--ffc-gray-200);color:var(--ffc-gray-800)}.ffc-btn-secondary:hover{background:var(--ffc-gray-300)}.ffc-btn-success{background:var(--ffc-success);color:var(--ffc-text-on-success)}.ffc-btn-success:hover{background:var(--ffc-success-hover)}.ffc-btn-danger{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-btn-danger:hover{background:var(--ffc-danger-hover)}@media (prefers-reduced-motion:reduce){.ffc-btn{transition:none}}.ffc-badge-private{background:var(--ffc-danger-light);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger)}.ffc-flex{display:flex}.ffc-mb-md{margin-bottom:var(--ffc-spacing-lg)}.ffc-color-dot{display:inline-block;width:12px;height:12px;border-radius:var(--ffc-radius-full);vertical-align:middle;background-color:var(--ffc-color,currentColor)}.ffc-toggle,.form-table td .ffc-toggle,.form-table td fieldset .ffc-toggle{display:inline-flex;align-items:center;gap:var(--ffc-spacing-md);cursor:pointer;user-select:none;line-height:1.3;position:relative}.ffc-toggle input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ffc-toggle-track{position:relative;flex:0 0 auto;width:38px;height:22px;background:var(--ffc-border);border-radius:11px;transition:background-color .15s ease}.ffc-toggle-track::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:var(--ffc-radius-full);background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .15s ease}.ffc-toggle input[type=checkbox]:checked+.ffc-toggle-track{background:var(--ffc-primary)}.ffc-toggle input[type=checkbox]:checked+.ffc-toggle-track::after{transform:translateX(16px)}.ffc-toggle input[type=checkbox]:focus-visible+.ffc-toggle-track{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-toggle input[type=checkbox]:disabled+.ffc-toggle-track{opacity:.5;cursor:not-allowed}.ffc-toggle-label{color:inherit}@media (prefers-reduced-motion:reduce){.ffc-toggle-track,.ffc-toggle-track::after{transition:none}}.ffc-control-steps{--ffc-control-halo:color-mix(in srgb, var(--ffc-primary) 18%, transparent);--ffc-control-steps-rail:6px;--ffc-control-steps-dot:8px;--ffc-control-steps-thumb:20px;--ffc-control-steps-shape:var(--ffc-radius-full);--ffc-control-steps-gap:76px;--ffc-control-steps-idle:var(--ffc-border);--ffc-control-steps-rail-bg:var(--ffc-gray-300);--ffc-control-steps-fill:var(--ffc-primary);display:inline-block;vertical-align:top;min-width:0;margin:0;padding:0;border:0}.ffc-control-steps-track{display:flex}.ffc-control-steps-stop{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--ffc-spacing-xs);width:var(--ffc-control-steps-gap);text-align:center;cursor:pointer}.ffc-control-steps-stop input{position:absolute;width:1px;height:1px;margin:0;opacity:0}.ffc-control-steps-stop:not(:first-child)::before{content:"";position:absolute;top:calc(var(--ffc-control-steps-thumb)/ 2 - var(--ffc-control-steps-rail)/ 2);right:50%;width:100%;height:var(--ffc-control-steps-rail);border-radius:var(--ffc-control-steps-rail);background:var(--ffc-control-steps-rail-bg)}.ffc-control-steps-mark{position:relative;z-index:var(--ffc-z-raised);display:grid;place-items:center;width:var(--ffc-control-steps-thumb);height:var(--ffc-control-steps-thumb)}.ffc-control-steps-mark::after{content:"";width:var(--ffc-control-steps-dot);height:var(--ffc-control-steps-dot);border-radius:var(--ffc-control-steps-shape);background:var(--ffc-bg-card);box-shadow:inset 0 0 0 2px var(--ffc-control-steps-idle);transition:width .15s ease,height .15s ease,box-shadow .15s ease,background-color .15s ease}.ffc-control-steps-label{padding:0 var(--ffc-spacing-3xs);color:var(--ffc-text-muted);font-size:var(--ffc-font-size-xs);line-height:1.25}.ffc-control-steps-stop:has(input:checked)::before,.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked)::before{background:var(--ffc-control-steps-fill)}.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked) .ffc-control-steps-mark::after{background:var(--ffc-control-steps-fill);box-shadow:none}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-mark::after{width:var(--ffc-control-steps-thumb);height:var(--ffc-control-steps-thumb);background:var(--ffc-bg-card);box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),var(--ffc-shadow-sm)}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{color:var(--ffc-text);font-weight:600}.ffc-control-steps-stop:hover:not(:has(input:checked)) .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 2px var(--ffc-control-steps-fill)}.ffc-control-steps-stop:has(input:checked):hover .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 8px var(--ffc-control-halo)}.ffc-control-steps-stop:has(input:focus-visible) .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 2px var(--ffc-bg-card),0 0 0 4px var(--ffc-primary)}.ffc-control-steps-stop:has(input:checked):active .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 12px var(--ffc-control-halo)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:first-child input:checked)){--ffc-control-steps-fill:var(--ffc-gray-600)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:not(:first-child):not(:last-child) input:checked)),.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:not(:first-child):not(:last-child) input:checked)){--ffc-control-steps-fill:var(--ffc-warning)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:last-child input:checked)),.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:first-child input:checked)){--ffc-control-steps-fill:var(--ffc-danger)}.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:last-child input:checked)){--ffc-control-steps-fill:var(--ffc-success)}.ffc-control-steps:where(:has([data-tone=neutral] input:checked)){--ffc-control-steps-fill:var(--ffc-gray-600)}.ffc-control-steps:where(:has([data-tone=primary] input:checked)){--ffc-control-steps-fill:var(--ffc-primary)}.ffc-control-steps:where(:has([data-tone=info] input:checked)){--ffc-control-steps-fill:var(--ffc-info)}.ffc-control-steps:where(:has([data-tone=success] input:checked)){--ffc-control-steps-fill:var(--ffc-success)}.ffc-control-steps:where(:has([data-tone=warning] input:checked)){--ffc-control-steps-fill:var(--ffc-warning)}.ffc-control-steps:where(:has([data-tone=danger] input:checked)){--ffc-control-steps-fill:var(--ffc-danger)}.ffc-control-steps-sm{--ffc-control-steps-rail:4px;--ffc-control-steps-dot:6px;--ffc-control-steps-thumb:16px;--ffc-control-steps-gap:60px}.ffc-control-steps-lg{--ffc-control-steps-rail:8px;--ffc-control-steps-dot:10px;--ffc-control-steps-thumb:26px;--ffc-control-steps-gap:96px}.ffc-control-steps-many{--ffc-control-steps-gap:56px}.ffc-control-steps-square{--ffc-control-steps-shape:var(--ffc-radius-sm)}.ffc-control-steps-fluid{display:block}.ffc-control-steps-fluid .ffc-control-steps-stop{flex:1 1 0;width:auto}.ffc-control-steps-labels-selected .ffc-control-steps-stop:not(:has(input:checked)) .ffc-control-steps-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ffc-control-steps-labels-selected .ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{white-space:nowrap}.ffc-control-steps:disabled{--ffc-control-steps-fill:var(--ffc-gray-400);--ffc-control-steps-idle:var(--ffc-gray-300)}.ffc-control-steps:disabled .ffc-control-steps-stop{cursor:not-allowed}.ffc-control-steps:disabled .ffc-control-steps-label{color:var(--ffc-text-muted)}.ffc-control-steps-desc{display:none;margin-top:var(--ffc-spacing-xs)}.ffc-control-steps:has(.ffc-control-steps-stop:first-child input:checked) .ffc-control-steps-desc[data-step="1"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(10) input:checked) .ffc-control-steps-desc[data-step="10"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(11) input:checked) .ffc-control-steps-desc[data-step="11"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(2) input:checked) .ffc-control-steps-desc[data-step="2"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(3) input:checked) .ffc-control-steps-desc[data-step="3"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(4) input:checked) .ffc-control-steps-desc[data-step="4"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(5) input:checked) .ffc-control-steps-desc[data-step="5"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(6) input:checked) .ffc-control-steps-desc[data-step="6"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(7) input:checked) .ffc-control-steps-desc[data-step="7"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(8) input:checked) .ffc-control-steps-desc[data-step="8"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(9) input:checked) .ffc-control-steps-desc[data-step="9"]{display:block}@media (max-width:480px){.ffc-control-steps{display:block}.ffc-control-steps .ffc-control-steps-stop{flex:1 1 0;width:auto}.ffc-control-steps-many .ffc-control-steps-stop:not(:has(input:checked)) .ffc-control-steps-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ffc-control-steps-many .ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{white-space:nowrap}}@media (prefers-reduced-motion:reduce){.ffc-control-steps-mark::after{transition:none}}@media (forced-colors:active){.ffc-control-steps-mark::after{forced-color-adjust:none;background:Canvas;box-shadow:inset 0 0 0 2px CanvasText}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-mark::after,.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked) .ffc-control-steps-mark::after{background:Highlight;box-shadow:none}.ffc-control-steps-stop:not(:first-child)::before{forced-color-adjust:none;background:CanvasText}}.ffc-autosave-badge{display:inline-block;margin-left:var(--ffc-spacing-sm);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-xs);font-weight:500;line-height:1.5;vertical-align:middle}.ffc-autosave-badge--saving{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-autosave-badge--saved{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-autosave-badge--error{background:var(--ffc-danger-light);color:var(--ffc-danger-text)}.ffc-features-cell{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ffc-spacing-2xs)}.ffc-features-cell .ffc-toggle{margin:0}.ffc-features-badge{display:inline-block;margin-top:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:500;line-height:1.4}.ffc-features-badge--saving{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-features-badge--saved{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-features-badge--error{background:var(--ffc-danger-light);color:var(--ffc-danger-text)}#ffc-activity-log-table.ffc-loading{position:relative;opacity:.55;pointer-events:none;transition:opacity .15s ease}.ffc-captcha-mode{margin:0 0 var(--ffc-spacing-xl);max-width:46em}.ffc-captcha-mode-note,.ffc-captcha-mode-summary{display:block;margin-left:var(--ffc-spacing-3xl)}.ffc-captcha-mode-note{margin-top:var(--ffc-spacing-2xs);padding-left:var(--ffc-spacing-md);border-left:3px solid transparent}.ffc-captcha-mode-note--warning{border-left-color:var(--ffc-warning-border)}.ffc-captcha-mode-note--info{border-left-color:var(--ffc-info-border)}.ffc-email-disabled-notice{margin:0 0 var(--ffc-spacing-xl);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border-left:4px solid var(--ffc-warning-border);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);border-radius:2px}.ffc-email-disabled-notice p{margin:0}@media (forced-colors:active){.ffc-btn-danger,.ffc-btn-primary,.ffc-btn-secondary,.ffc-btn-success,:root.ffc-dark-mode .button,:root.ffc-dark-mode .button-primary.disabled,:root.ffc-dark-mode .button-primary[disabled],:root.ffc-dark-mode .button-secondary,:root.ffc-dark-mode .button.disabled,:root.ffc-dark-mode .mce-btn.mce-active{border:1px solid ButtonText}.ffc-autosave-badge--error,.ffc-autosave-badge--saved,.ffc-autosave-badge--saving,.ffc-features-badge--error,.ffc-features-badge--saved,.ffc-features-badge--saving,.ffc-pill-row-color,.ffc-status-pending{border:1px solid CanvasText}}.ffc-admin-page .ffc-required{color:var(--ffc-danger)}
+:root{--ffc-primary:#2271b1;--ffc-primary-hover:#135e96;--ffc-primary-light:#e7f3ff;--ffc-success:#00801e;--ffc-success-hover:#006618;--ffc-success-light:#e7f5ec;--ffc-warning:#ba8d14;--ffc-warning-light:#fff8e5;--ffc-danger:#d63638;--ffc-danger-hover:#b32d2e;--ffc-danger-light:#fcf0f1;--ffc-info:#006ba1;--ffc-info-light:#e5f5fa;--ffc-gray-50:#fafafa;--ffc-gray-100:#f6f7f7;--ffc-gray-200:#e7e8ea;--ffc-gray-300:#c3c4c7;--ffc-gray-400:#8c8f94;--ffc-gray-500:#646970;--ffc-gray-600:#50575e;--ffc-gray-700:#3c434a;--ffc-gray-800:#1d2327;--ffc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--ffc-font-size-2xs:max(11px, 0.6875rem);--ffc-font-size-xs:max(12px, 0.75rem);--ffc-font-size-sm:max(13px, 0.8125rem);--ffc-font-size-base:max(14px, 0.875rem);--ffc-font-size-lg:max(16px, 1rem);--ffc-font-size-xl:max(18px, 1.125rem);--ffc-font-size-2xl:max(24px, 1.5rem);--ffc-spacing-3xs:2px;--ffc-spacing-2xs:4px;--ffc-spacing-xs:6px;--ffc-spacing-sm:8px;--ffc-spacing-md:10px;--ffc-spacing-lg:12px;--ffc-spacing-xl:16px;--ffc-spacing-2xl:20px;--ffc-spacing-3xl:24px;--ffc-radius-xs:3px;--ffc-radius-sm:4px;--ffc-radius-md:6px;--ffc-radius-lg:8px;--ffc-radius-full:50%;--ffc-radius-pill:12px;--ffc-form-width:600px;--ffc-z-raised:1;--ffc-z-sticky:10;--ffc-z-dropdown:100;--ffc-z-overlay:1000;--ffc-z-modal:100000;--ffc-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.1);--ffc-shadow-md:0 2px 8px rgba(0, 0, 0, 0.1);--ffc-shadow-lg:0 5px 30px rgba(0, 0, 0, 0.15);--ffc-transition-fast:0.15s ease;--ffc-transition-base:0.2s ease;--ffc-transition-slow:0.3s ease;--ffc-bg:#ffffff;--ffc-bg-alt:#f6f7f7;--ffc-badge-row-bg:var(--ffc-bg-alt);--ffc-badge-row-text:var(--ffc-text);--ffc-bg-card:#ffffff;--ffc-bg-input:#ffffff;--ffc-bg-overlay:rgba(0, 0, 0, 0.5);--ffc-text:#1d2327;--ffc-text-secondary:#50575e;--ffc-text-muted:#646970;--ffc-text-light:#737579;--ffc-text-on-primary:#ffffff;--ffc-text-on-danger:#ffffff;--ffc-text-on-success:#ffffff;--ffc-text-on-warning:#2e2200;--ffc-inverse-surface:#1d2327;--ffc-inverse-on-surface:#ffffff;--ffc-border:#8e8f91;--ffc-border-light:#dcdcde;--ffc-border-focus:#2271b1;--ffc-success-bg:#e7f5ec;--ffc-success-border:#00801e;--ffc-success-text:#0a5c1a;--ffc-warning-bg:#fff8e5;--ffc-warning-border:#dba617;--ffc-warning-text:#6e4e00;--ffc-danger-bg:#fcf0f1;--ffc-danger-border:#d63638;--ffc-danger-text:#8a2424;--ffc-info-bg:#e5f5fa;--ffc-info-border:#006ba1;--ffc-info-text:#004b70;--ffc-accent-bg:#f3eefb;--ffc-accent-border:#6b4fa8;--ffc-accent-text:#4b2e83;--ffc-link:#2271b1;--ffc-link-hover:#135e96;--ffc-focus-ring:rgba(34, 113, 177, 0.75)}:root.ffc-dark-mode{--ffc-primary:#5dabde;--ffc-primary-hover:#7cbde8;--ffc-primary-light:#1a2f42;--ffc-success:#4caf50;--ffc-success-hover:#6ec071;--ffc-success-light:#1a2e1a;--ffc-warning:#f0b849;--ffc-warning-light:#332b10;--ffc-danger:#e88080;--ffc-danger-hover:#ee9595;--ffc-danger-light:#2e1515;--ffc-info:#4fc3f7;--ffc-info-light:#0d2b3a;--ffc-gray-50:#1d2327;--ffc-gray-100:#23282d;--ffc-gray-200:#2c3338;--ffc-gray-300:#3c434a;--ffc-gray-400:#646970;--ffc-gray-500:#8c8f94;--ffc-gray-600:#a7aaad;--ffc-gray-700:#c3c4c7;--ffc-gray-800:#e7e8ea;--ffc-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.3);--ffc-shadow-md:0 2px 8px rgba(0, 0, 0, 0.3);--ffc-shadow-lg:0 5px 30px rgba(0, 0, 0, 0.4);--ffc-bg:#1d2327;--ffc-bg-alt:#23282d;--ffc-bg-card:#2c3338;--ffc-bg-input:#23282d;--ffc-bg-overlay:rgba(0, 0, 0, 0.7);--ffc-inverse-surface:#e7e8ea;--ffc-inverse-on-surface:#1d2327;--ffc-text:#e7e8ea;--ffc-text-secondary:#c3c4c7;--ffc-text-muted:#a7aaad;--ffc-text-light:#9a9ea3;--ffc-text-on-primary:#213c4e;--ffc-text-on-danger:#452020;--ffc-text-on-success:#10361a;--ffc-border:#6f7c89;--ffc-border-light:#2c3338;--ffc-border-focus:#5dabde;--ffc-success-bg:#1a2e1a;--ffc-success-border:#4caf50;--ffc-success-text:#81c784;--ffc-warning-bg:#332b10;--ffc-warning-border:#f0b849;--ffc-warning-text:#ffe082;--ffc-danger-bg:#2e1515;--ffc-danger-border:#e88080;--ffc-danger-text:#ef9a9a;--ffc-info-bg:#0d2b3a;--ffc-info-border:#4fc3f7;--ffc-info-text:#81d4fa;--ffc-accent-bg:#2a2136;--ffc-accent-border:#b39ddb;--ffc-accent-text:#c5b3e6;--ffc-link:#5dabde;--ffc-link-hover:#7cbde8;--ffc-focus-ring:rgba(93, 171, 222, 0.6)}:root.ffc-dark-mode .ffc-cancel-page,:root.ffc-dark-mode .ffc-rereg-form-container,:root.ffc-dark-mode .ffc-shortcode,:root.ffc-dark-mode body.wp-admin{color:var(--ffc-text)}:root.ffc-dark-mode body.wp-admin{background-color:var(--ffc-bg)}:root.ffc-dark-mode:has(> body.wp-admin){color-scheme:dark}:root.ffc-dark-mode .wp-heading-inline,:root.ffc-dark-mode .wrap h1,:root.ffc-dark-mode .wrap h2,:root.ffc-dark-mode .wrap h3{color:var(--ffc-text)}:root.ffc-dark-mode .form-table td,:root.ffc-dark-mode .form-table td label,:root.ffc-dark-mode .form-table th,:root.ffc-dark-mode .form-table th label,:root.ffc-dark-mode fieldset legend{color:var(--ffc-text)}:root.ffc-dark-mode .form-table,:root.ffc-dark-mode .form-table tr{border-color:var(--ffc-border)}:root.ffc-dark-mode .description,:root.ffc-dark-mode .displaying-num,:root.ffc-dark-mode .howto,:root.ffc-dark-mode .subsubsub .count,:root.ffc-dark-mode p.description{color:var(--ffc-text-muted)}:root.ffc-dark-mode #titlediv #title,:root.ffc-dark-mode input[type=date],:root.ffc-dark-mode input[type=datetime-local],:root.ffc-dark-mode input[type=email],:root.ffc-dark-mode input[type=number],:root.ffc-dark-mode input[type=password],:root.ffc-dark-mode input[type=search],:root.ffc-dark-mode input[type=tel],:root.ffc-dark-mode input[type=text],:root.ffc-dark-mode input[type=time],:root.ffc-dark-mode input[type=url],:root.ffc-dark-mode select,:root.ffc-dark-mode textarea{color:var(--ffc-text);background-color:var(--ffc-bg-input);border-color:var(--ffc-border)}:root.ffc-dark-mode input::placeholder,:root.ffc-dark-mode textarea::placeholder{color:var(--ffc-text-light)}:root.ffc-dark-mode input:focus,:root.ffc-dark-mode select:focus,:root.ffc-dark-mode textarea:focus{border-color:var(--ffc-border-focus);box-shadow:0 0 0 1px var(--ffc-border-focus)}:root.ffc-dark-mode input[type=checkbox],:root.ffc-dark-mode input[type=radio]{color:var(--ffc-text);background-color:var(--ffc-bg-alt);border-color:var(--ffc-text-muted)}:root.ffc-dark-mode input:disabled,:root.ffc-dark-mode select:disabled,:root.ffc-dark-mode textarea:disabled{color:var(--ffc-text-muted);background-color:var(--ffc-bg-alt)}:root.ffc-dark-mode .card,:root.ffc-dark-mode .postbox{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .postbox .hndle,:root.ffc-dark-mode .postbox .postbox-header,:root.ffc-dark-mode .postbox h2{color:var(--ffc-text);border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table,:root.ffc-dark-mode table.widefat{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table th,:root.ffc-dark-mode .wp-list-table thead td,:root.ffc-dark-mode table.widefat th,:root.ffc-dark-mode table.widefat thead td{color:var(--ffc-text);background:var(--ffc-bg-alt);border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .wp-list-table td,:root.ffc-dark-mode table.widefat td{color:var(--ffc-text);border-top-color:var(--ffc-border)}:root.ffc-dark-mode .alternate,:root.ffc-dark-mode .striped>tbody>:nth-child(odd),:root.ffc-dark-mode .wp-list-table.striped>tbody>:nth-child(odd){background-color:var(--ffc-bg-alt)}:root.ffc-dark-mode .subsubsub,:root.ffc-dark-mode .subsubsub a,:root.ffc-dark-mode .tablenav,:root.ffc-dark-mode .tablenav .displaying-num,:root.ffc-dark-mode .tablenav-pages a{color:var(--ffc-text-secondary)}:root.ffc-dark-mode .button,:root.ffc-dark-mode .button-secondary{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .button-secondary:hover,:root.ffc-dark-mode .button:hover{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button.disabled,:root.ffc-dark-mode .button:disabled{color:var(--ffc-text-light);background:var(--ffc-bg);border-color:var(--ffc-border-light)}:root.ffc-dark-mode #major-publishing-actions{background:var(--ffc-bg-alt);border-top-color:var(--ffc-border)}:root.ffc-dark-mode .submitdelete{color:var(--ffc-danger)}:root.ffc-dark-mode .row-actions{color:var(--ffc-text-muted)}:root.ffc-dark-mode #screen-meta,:root.ffc-dark-mode #screen-meta-links .show-settings{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .notice a,:root.ffc-dark-mode div.error a,:root.ffc-dark-mode div.updated a{color:var(--ffc-primary)}:where(:root.ffc-dark-mode body.wp-admin) a{color:var(--ffc-primary)}:where(:root.ffc-dark-mode body.wp-admin) a:focus,:where(:root.ffc-dark-mode body.wp-admin) a:hover{color:var(--ffc-primary-hover)}:root.ffc-dark-mode .page-title-action{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .page-title-action:focus,:root.ffc-dark-mode .page-title-action:hover{color:var(--ffc-text);background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button-primary.disabled,:root.ffc-dark-mode .button-primary:disabled,:root.ffc-dark-mode .button-primary[disabled]{color:var(--ffc-text-light)!important;background:var(--ffc-bg)!important;border-color:var(--ffc-border-light)!important}:root.ffc-dark-mode input[type=color]{color:var(--ffc-text);background-color:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .mce-panel,:root.ffc-dark-mode .mce-statusbar,:root.ffc-dark-mode .mce-toolbar-grp,:root.ffc-dark-mode .quicktags-toolbar,:root.ffc-dark-mode .wp-editor-container,:root.ffc-dark-mode .wp-switch-editor{color:var(--ffc-text);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .html-active .switch-html,:root.ffc-dark-mode .tmce-active .switch-tmce{background:var(--ffc-bg-card)}:root.ffc-dark-mode .mce-btn .mce-ico,:root.ffc-dark-mode .mce-btn button,:root.ffc-dark-mode .mce-path-item,:root.ffc-dark-mode .mce-wordcount{color:var(--ffc-text)}:root.ffc-dark-mode .mce-btn.mce-active,:root.ffc-dark-mode .mce-btn:hover{background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode #titlediv #title-prompt-text{color:var(--ffc-text-muted)}:root.ffc-dark-mode input[type=file]{color:var(--ffc-text)}:root.ffc-dark-mode input[type=file]::file-selector-button{margin-right:var(--ffc-spacing-sm);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);color:var(--ffc-text);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);cursor:pointer}:root.ffc-dark-mode input[type=file]::file-selector-button:hover{background:var(--ffc-bg-card);border-color:var(--ffc-border-focus)}:root.ffc-dark-mode .button-link:not(.button-link-delete){color:var(--ffc-primary)}:root.ffc-dark-mode .wp-picker-container .wp-color-result-text{color:var(--ffc-text);background:var(--ffc-bg-alt);border-left-color:var(--ffc-border)}:root.ffc-dark-mode .wp-picker-container .wp-color-result:focus .wp-color-result-text,:root.ffc-dark-mode .wp-picker-container .wp-color-result:hover .wp-color-result-text{background:var(--ffc-bg-card)}:root.ffc-dark-mode .wp-picker-container .iris-picker{background:var(--ffc-bg-card);border-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab-wrapper{border-bottom-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab{color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border-color:var(--ffc-border)}:root.ffc-dark-mode .nav-tab-active,:root.ffc-dark-mode .nav-tab:hover{color:var(--ffc-text);background:var(--ffc-bg-card)}:root.ffc-dark-mode .notice,:root.ffc-dark-mode div.error,:root.ffc-dark-mode div.updated{color:var(--ffc-text);background:var(--ffc-bg-card)}:root.ffc-dark-mode .notice li,:root.ffc-dark-mode .notice p,:root.ffc-dark-mode .notice strong,:root.ffc-dark-mode div.error p,:root.ffc-dark-mode div.updated p{color:var(--ffc-text)}:root.ffc-dark-mode code,:root.ffc-dark-mode kbd{color:var(--ffc-text);background:var(--ffc-bg-alt)}:root.ffc-dark-mode .wp-header-end,:root.ffc-dark-mode hr{border-color:var(--ffc-border)}.ffc-shortcode .ffc-modal,.ffc-shortcode.ffc-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}.ffc-shortcode .ffc-modal[hidden]{display:none}.ffc-shortcode .ffc-modal-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--ffc-bg-overlay)}.ffc-shortcode .ffc-modal-content{position:relative;background:var(--ffc-bg-card);border-radius:var(--ffc-radius-sm);box-shadow:var(--ffc-shadow-lg);max-width:500px;width:90%;max-height:90vh;overflow:auto}.ffc-shortcode .ffc-modal-lg{max-width:min(700px,95vw)}@media screen and (max-width:768px){.ffc-shortcode .ffc-modal-content{width:95%;max-height:95vh}}.ffc-shortcode .ffc-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);border-bottom:1px solid var(--ffc-gray-200)}.ffc-shortcode .ffc-modal-header h3{margin:0;font-size:var(--ffc-font-size-xl)}.ffc-shortcode .ffc-modal-close{background:0 0;border:none;font-size:var(--ffc-font-size-2xl);cursor:pointer;color:var(--ffc-gray-600);padding:0;line-height:1}.ffc-shortcode .ffc-modal-close:hover{color:var(--ffc-gray-800)}.ffc-shortcode .ffc-modal-body{padding:var(--ffc-spacing-2xl)}.ffc-shortcode .ffc-modal-footer{display:flex;justify-content:flex-end;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-xl) var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-gray-200)}.ffc-shortcode .ffc-modal-body .ffc-form-group label{display:block;font-weight:600;margin-bottom:var(--ffc-spacing-2xs)}.ffc-shortcode .ffc-modal-body .ffc-form-group textarea{width:100%;box-sizing:border-box;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);color:var(--ffc-text);background:var(--ffc-bg-input);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-cancel-summary{margin:1.5rem 0;padding:1rem;background:var(--ffc-bg-alt);border-radius:var(--ffc-radius-sm)}.ffc-cancel-summary dt{font-weight:600;color:var(--ffc-text-secondary)}.ffc-cancel-summary dd{margin:0 0 .75rem}.ffc-cancel-summary dd:last-child{margin-bottom:0}.ffc-hidden{position:absolute!important;left:-9999px!important;display:none!important}.ffc-initially-hidden{display:none}.ffc-honeypot-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.ffc-status-badge{display:inline-block;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;white-space:nowrap}.ffc-status-pending{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-loading{position:relative;pointer-events:none;opacity:.6}.ffc-loading::after{content:'';position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--ffc-border-light);border-top:2px solid var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:ffc-spin 1s linear infinite}@keyframes ffc-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ffc-rate-limit-notice{background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-radius:var(--ffc-radius-sm);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-2xl);display:flex;align-items:center;gap:var(--ffc-spacing-md)}.ffc-rate-limit-icon{font-size:var(--ffc-font-size-2xl);color:var(--ffc-warning-text)}.ffc-rate-limit-icon::before{margin-right:0}.ffc-rate-limit-message{flex:1;color:var(--ffc-warning-text)}.ffc-rate-limit-message strong{color:var(--ffc-danger);font-family:monospace}.ffc-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.ffc-empty-state{text-align:center;padding:56px var(--ffc-spacing-2xl);color:var(--ffc-text-muted)}.ffc-empty-state .ffc-empty-state__icon{margin-bottom:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xl)}.ffc-empty-state .ffc-empty-state__title{margin:0 0 var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-empty-state .ffc-empty-state__text{max-width:36em;margin:0 auto;font-size:var(--ffc-font-size-base);color:var(--ffc-text-muted)}.ffc-empty-state .ffc-empty-state__actions{margin:var(--ffc-spacing-lg) 0 0}@media (prefers-reduced-motion:reduce){.ffc-loading::after{animation:none}}.ffc-icon-api::before,.ffc-icon-award::before,.ffc-icon-building::before,.ffc-icon-bulb::before,.ffc-icon-calendar::before,.ffc-icon-chart::before,.ffc-icon-checkmark::before,.ffc-icon-chevron-down::before,.ffc-icon-chevron-left::before,.ffc-icon-chevron-right::before,.ffc-icon-chevron-up::before,.ffc-icon-clipboard::before,.ffc-icon-clock::before,.ffc-icon-cloud::before,.ffc-icon-code::before,.ffc-icon-copy::before,.ffc-icon-cross::before,.ffc-icon-database::before,.ffc-icon-debug::before,.ffc-icon-delete::before,.ffc-icon-doc::before,.ffc-icon-download::before,.ffc-icon-edit::before,.ffc-icon-email::before,.ffc-icon-error::before,.ffc-icon-external::before,.ffc-icon-eye::before,.ffc-icon-file::before,.ffc-icon-filter::before,.ffc-icon-gauge::before,.ffc-icon-globe::before,.ffc-icon-grid::before,.ffc-icon-grip::before,.ffc-icon-help::before,.ffc-icon-history::before,.ffc-icon-id::before,.ffc-icon-image::before,.ffc-icon-inbox::before,.ffc-icon-info::before,.ffc-icon-key::before,.ffc-icon-layout::before,.ffc-icon-link::before,.ffc-icon-list::before,.ffc-icon-lock::before,.ffc-icon-logout::before,.ffc-icon-map-pin::before,.ffc-icon-megaphone::before,.ffc-icon-minus::before,.ffc-icon-monitor::before,.ffc-icon-network::before,.ffc-icon-package::before,.ffc-icon-palette::before,.ffc-icon-phone::before,.ffc-icon-plus::before,.ffc-icon-print::before,.ffc-icon-qr::before,.ffc-icon-restore::before,.ffc-icon-robot::before,.ffc-icon-scroll::before,.ffc-icon-search::before,.ffc-icon-send::before,.ffc-icon-server::before,.ffc-icon-settings::before,.ffc-icon-share::before,.ffc-icon-shield::before,.ffc-icon-skip::before,.ffc-icon-sliders::before,.ffc-icon-success::before,.ffc-icon-sync::before,.ffc-icon-tag::before,.ffc-icon-unlock::before,.ffc-icon-upload::before,.ffc-icon-user-check::before,.ffc-icon-user::before,.ffc-icon-users::before,.ffc-icon-warning::before,.ffc-icon-wrench::before,.ffc-icon-zap::before{content:"";display:inline-block;flex-shrink:0;width:1.15em;height:1.15em;margin-right:.4em;vertical-align:-.2em;background-color:var(--ffc-icon-tone,currentColor);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.ffc-icon-api::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 19H6a4.25 4.25 0 0 1-.6-8.46 6.75 6.75 0 0 1 13.1-1.3A3.6 3.6 0 0 1 21 11.7'/%3E%3Cpath d='M15.6 14.4L15.8 13.0L18.2 13.0L18.4 14.4L18.7 14.6L20.1 14.1L21.3 16.1L20.1 17.0L20.1 17.4L21.3 18.3L20.1 20.3L18.7 19.8L18.4 20.0L18.2 21.4L15.8 21.4L15.6 20.0L15.3 19.8L13.9 20.3L12.7 18.3L13.9 17.4L13.9 17.0L12.7 16.1L13.9 14.1L15.3 14.6z'/%3E%3Ccircle cx='17' cy='17.2' r='1.3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 19H6a4.25 4.25 0 0 1-.6-8.46 6.75 6.75 0 0 1 13.1-1.3A3.6 3.6 0 0 1 21 11.7'/%3E%3Cpath d='M15.6 14.4L15.8 13.0L18.2 13.0L18.4 14.4L18.7 14.6L20.1 14.1L21.3 16.1L20.1 17.0L20.1 17.4L21.3 18.3L20.1 20.3L18.7 19.8L18.4 20.0L18.2 21.4L15.8 21.4L15.6 20.0L15.3 19.8L13.9 20.3L12.7 18.3L13.9 17.4L13.9 17.0L12.7 16.1L13.9 14.1L15.3 14.6z'/%3E%3Ccircle cx='17' cy='17.2' r='1.3'/%3E%3C/svg%3E")}.ffc-icon-award::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='9' r='6'/%3E%3Cpath d='M8.5 13.9L7 21l5-2.5 5 2.5-1.5-7.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='9' r='6'/%3E%3Cpath d='M8.5 13.9L7 21l5-2.5 5 2.5-1.5-7.1'/%3E%3C/svg%3E")}.ffc-icon-building::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v16M15 9h4a1 1 0 0 1 1 1v11M3 21h18'/%3E%3Cpath d='M8 8h3M8 12h3M8 16h3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v16M15 9h4a1 1 0 0 1 1 1v11M3 21h18'/%3E%3Cpath d='M8 8h3M8 12h3M8 16h3'/%3E%3C/svg%3E")}.ffc-icon-bulb::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2V16h5v-.1c0-.8.4-1.5 1-2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.5 10.9c.6.5 1 1.2 1 2V16h5v-.1c0-.8.4-1.5 1-2A6 6 0 0 0 12 3z'/%3E%3C/svg%3E")}.ffc-icon-calendar::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E")}.ffc-icon-chart::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M7 20v-6M12 20V8M17 20V10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h16'/%3E%3Cpath d='M7 20v-6M12 20V8M17 20V10'/%3E%3C/svg%3E")}.ffc-icon-checkmark::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E")}.ffc-icon-chevron-down::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}.ffc-icon-chevron-left::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E")}.ffc-icon-chevron-right::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E")}.ffc-icon-chevron-up::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 15l6-6 6 6'/%3E%3C/svg%3E")}.ffc-icon-clipboard::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4V3h6v1M9 10h6M9 14h6M9 18h4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4V3h6v1M9 10h6M9 14h6M9 18h4'/%3E%3C/svg%3E")}.ffc-icon-clock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E")}.ffc-icon-cloud::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 18a4.5 4.5 0 0 1-.5-9A6 6 0 0 1 18 8.5a4.75 4.75 0 0 1-.5 9.5z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 18a4.5 4.5 0 0 1-.5-9A6 6 0 0 1 18 8.5a4.75 4.75 0 0 1-.5 9.5z'/%3E%3C/svg%3E")}.ffc-icon-code::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5M14 4l-4 16'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7l-5 5 5 5M16 7l5 5-5 5M14 4l-4 16'/%3E%3C/svg%3E")}.ffc-icon-copy::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h10'/%3E%3C/svg%3E")}.ffc-icon-cross::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E")}.ffc-icon-database::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3z'/%3E%3Cpath d='M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3z'/%3E%3Cpath d='M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3'/%3E%3C/svg%3E")}.ffc-icon-debug::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='8' width='10' height='12' rx='5'/%3E%3Cpath d='M12 8v12M9 5l1.5 2M15 5l-1.5 2M3 12h4M17 12h4M4 7l3 2.5M20 7l-3 2.5M4 18l3-2M20 18l-3-2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='7' y='8' width='10' height='12' rx='5'/%3E%3Cpath d='M12 8v12M9 5l1.5 2M15 5l-1.5 2M3 12h4M17 12h4M4 7l3 2.5M20 7l-3 2.5M4 18l3-2M20 18l-3-2'/%3E%3C/svg%3E")}.ffc-icon-delete::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M9 7V4h6v3M6 7l1 13h10l1-13'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M9 7V4h6v3M6 7l1 13h10l1-13'/%3E%3C/svg%3E")}.ffc-icon-doc::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5a2 2 0 0 1 2-2h14v16H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 19V5M8 7h8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5a2 2 0 0 1 2-2h14v16H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 19V5M8 7h8'/%3E%3C/svg%3E")}.ffc-icon-download::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11M7 10l5 5 5-5M5 20h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v11M7 10l5 5 5-5M5 20h14'/%3E%3C/svg%3E")}.ffc-icon-edit::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9l-4-4L4 16z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9l-4-4L4 16z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E")}.ffc-icon-email::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3.5 7l8.5 6 8.5-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3.5 7l8.5 6 8.5-6'/%3E%3C/svg%3E")}.ffc-icon-error::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9 9l6 6M15 9l-6 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9 9l6 6M15 9l-6 6'/%3E%3C/svg%3E")}.ffc-icon-external::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9'/%3E%3Cpath d='M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9'/%3E%3Cpath d='M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E")}.ffc-icon-eye::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}.ffc-icon-file::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E")}.ffc-icon-filter::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18l-7 8v6l-4-2v-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18l-7 8v6l-4-2v-4z'/%3E%3C/svg%3E")}.ffc-icon-gauge::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.2 17a9 9 0 1 1 15.6 0'/%3E%3Cpath d='M12.9 12.8L16 8.5'/%3E%3Ccircle cx='12' cy='14' r='1.6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.2 17a9 9 0 1 1 15.6 0'/%3E%3Cpath d='M12.9 12.8L16 8.5'/%3E%3Ccircle cx='12' cy='14' r='1.6'/%3E%3C/svg%3E")}.ffc-icon-globe::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18'/%3E%3C/svg%3E")}.ffc-icon-grid::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='4' y='13' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='4' width='7' height='7' rx='1.5'/%3E%3Crect x='4' y='13' width='7' height='7' rx='1.5'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1.5'/%3E%3C/svg%3E")}.ffc-icon-grip::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='6' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='12' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='9' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3Ccircle cx='15' cy='18' r='1.2' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-help::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6'/%3E%3Ccircle cx='12' cy='17' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6'/%3E%3Ccircle cx='12' cy='17' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-history::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5M12 7.5V12l3 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5M12 7.5V12l3 2'/%3E%3C/svg%3E")}.ffc-icon-id::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='5' width='19' height='14' rx='2'/%3E%3Cpath d='M6.5 15V9M10 9h2.5a3 3 0 0 1 0 6H10z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='5' width='19' height='14' rx='2'/%3E%3Cpath d='M6.5 15V9M10 9h2.5a3 3 0 0 1 0 6H10z'/%3E%3C/svg%3E")}.ffc-icon-image::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-9 9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-9 9'/%3E%3C/svg%3E")}.ffc-icon-inbox::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13l2.5-8h13L21 13v6H3z'/%3E%3Cpath d='M3 13h5l1.5 2.5h5L16 13h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13l2.5-8h13L21 13v6H3z'/%3E%3Cpath d='M3 13h5l1.5 2.5h5L16 13h5'/%3E%3C/svg%3E")}.ffc-icon-info::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6'/%3E%3Ccircle cx='12' cy='7.5' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6'/%3E%3Ccircle cx='12' cy='7.5' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-key::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.5' cy='15.5' r='4'/%3E%3Cpath d='M10.5 12.5L20 3M16 7l3 3M13.5 9.5l2 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.5' cy='15.5' r='4'/%3E%3Cpath d='M10.5 12.5L20 3M16 7l3 3M13.5 9.5l2 2'/%3E%3C/svg%3E")}.ffc-icon-layout::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M9 9v11'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M9 9v11'/%3E%3C/svg%3E")}.ffc-icon-link::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1 1'/%3E%3Cpath d='M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1-1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1 1'/%3E%3Cpath d='M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1-1'/%3E%3C/svg%3E")}.ffc-icon-list::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11'/%3E%3Ccircle cx='4.5' cy='6' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='12' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='18' r='1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11'/%3E%3Ccircle cx='4.5' cy='6' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='12' r='1' fill='currentColor' stroke='none'/%3E%3Ccircle cx='4.5' cy='18' r='1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-lock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E")}.ffc-icon-logout::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M15 8l4 4-4 4M19 12H9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M15 8l4 4-4 4M19 12H9'/%3E%3C/svg%3E")}.ffc-icon-map-pin::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E")}.ffc-icon-megaphone::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10v4h3l7 4V6l-7 4z'/%3E%3Cpath d='M6 14l1.5 5h2.5l-1.3-4.3M17 9a4 4 0 0 1 0 6M19.5 6.5a7.5 7.5 0 0 1 0 11'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10v4h3l7 4V6l-7 4z'/%3E%3Cpath d='M6 14l1.5 5h2.5l-1.3-4.3M17 9a4 4 0 0 1 0 6M19.5 6.5a7.5 7.5 0 0 1 0 11'/%3E%3C/svg%3E")}.ffc-icon-minus::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E")}.ffc-icon-monitor::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4' width='15' height='10.5' rx='1.5'/%3E%3Cpath d='M7 18.5h6M10 14.5v4'/%3E%3Crect x='16' y='9' width='5.5' height='11' rx='1.2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4' width='15' height='10.5' rx='1.5'/%3E%3Cpath d='M7 18.5h6M10 14.5v4'/%3E%3Crect x='16' y='9' width='5.5' height='11' rx='1.2'/%3E%3C/svg%3E")}.ffc-icon-network::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='3' width='6' height='5' rx='1'/%3E%3Crect x='3' y='16' width='6' height='5' rx='1'/%3E%3Crect x='15' y='16' width='6' height='5' rx='1'/%3E%3Cpath d='M12 8v4M6 16v-2h12v2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='3' width='6' height='5' rx='1'/%3E%3Crect x='3' y='16' width='6' height='5' rx='1'/%3E%3Crect x='15' y='16' width='6' height='5' rx='1'/%3E%3Cpath d='M12 8v4M6 16v-2h12v2'/%3E%3C/svg%3E")}.ffc-icon-package::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5L12 3l9 4.5v9L12 21l-9-4.5z'/%3E%3Cpath d='M3 7.5l9 4.5 9-4.5M12 12v9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7.5L12 3l9 4.5v9L12 21l-9-4.5z'/%3E%3Cpath d='M3 7.5l9 4.5 9-4.5M12 12v9'/%3E%3C/svg%3E")}.ffc-icon-palette::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 1 0 0 18c1.1 0 1.6-.8 1.6-1.6 0-1.2-1-1.6-1-2.6 0-.9.7-1.6 1.6-1.6H17a4 4 0 0 0 4-4c0-4.6-4-8.2-9-8.2z'/%3E%3Ccircle cx='7.5' cy='11' r='1'/%3E%3Ccircle cx='10' cy='7' r='1'/%3E%3Ccircle cx='15' cy='7' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 1 0 0 18c1.1 0 1.6-.8 1.6-1.6 0-1.2-1-1.6-1-2.6 0-.9.7-1.6 1.6-1.6H17a4 4 0 0 0 4-4c0-4.6-4-8.2-9-8.2z'/%3E%3Ccircle cx='7.5' cy='11' r='1'/%3E%3Ccircle cx='10' cy='7' r='1'/%3E%3Ccircle cx='15' cy='7' r='1'/%3E%3C/svg%3E")}.ffc-icon-phone::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h3.5l1.8 4.6-2.3 1.5a11 11 0 0 0 5.9 5.9l1.5-2.3L20 15.5V19a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h3.5l1.8 4.6-2.3 1.5a11 11 0 0 0 5.9 5.9l1.5-2.3L20 15.5V19a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E")}.ffc-icon-plus::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}.ffc-icon-print::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 9V3h10v6'/%3E%3Crect x='3' y='9' width='18' height='8' rx='2'/%3E%3Cpath d='M7 14h10v7H7z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 9V3h10v6'/%3E%3Crect x='3' y='9' width='18' height='8' rx='2'/%3E%3Cpath d='M7 14h10v7H7z'/%3E%3C/svg%3E")}.ffc-icon-qr::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Cpath d='M14 14h3v3h-3zM20.5 14v.01M14 20.5h.01M17.5 20.5H21v-3.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Cpath d='M14 14h3v3h-3zM20.5 14v.01M14 20.5h.01M17.5 20.5H21v-3.5'/%3E%3C/svg%3E")}.ffc-icon-restore::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E")}.ffc-icon-robot::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 4.5V8M9 13v1M15 13v1M9 17h6'/%3E%3Ccircle cx='12' cy='3.5' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 4.5V8M9 13v1M15 13v1M9 17h6'/%3E%3Ccircle cx='12' cy='3.5' r='1'/%3E%3C/svg%3E")}.ffc-icon-scroll::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E")}.ffc-icon-search::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M20 20l-4.4-4.4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M20 20l-4.4-4.4'/%3E%3C/svg%3E")}.ffc-icon-send::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3L3 10.5l7 2.5 2.5 7z'/%3E%3Cpath d='M21 3L10 13'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3L3 10.5l7 2.5 2.5 7z'/%3E%3Cpath d='M21 3L10 13'/%3E%3C/svg%3E")}.ffc-icon-server::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='7' rx='1.5'/%3E%3Crect x='3' y='13' width='18' height='7' rx='1.5'/%3E%3Cpath d='M7 7.5h.01M7 16.5h.01M11 7.5h6M11 16.5h6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='7' rx='1.5'/%3E%3Crect x='3' y='13' width='18' height='7' rx='1.5'/%3E%3Cpath d='M7 7.5h.01M7 16.5h.01M11 7.5h6M11 16.5h6'/%3E%3C/svg%3E")}.ffc-icon-settings::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Cpath d='M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9L7 7M17 17l2.1 2.1M4.9 19.1L7 17M17 7l2.1-2.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Cpath d='M12 2v3M12 19v3M2 12h3M19 12h3M4.9 4.9L7 7M17 17l2.1 2.1M4.9 19.1L7 17M17 7l2.1-2.1'/%3E%3C/svg%3E")}.ffc-icon-share::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5.5' r='2.5'/%3E%3Ccircle cx='6' cy='12' r='2.5'/%3E%3Ccircle cx='18' cy='18.5' r='2.5'/%3E%3Cpath d='M8.2 10.8l7.6-4.1M8.2 13.2l7.6 4.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5.5' r='2.5'/%3E%3Ccircle cx='6' cy='12' r='2.5'/%3E%3Ccircle cx='18' cy='18.5' r='2.5'/%3E%3Cpath d='M8.2 10.8l7.6-4.1M8.2 13.2l7.6 4.1'/%3E%3C/svg%3E")}.ffc-icon-shield::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z'/%3E%3C/svg%3E")}.ffc-icon-skip::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5l9 7-9 7zM18 5v14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5l9 7-9 7zM18 5v14'/%3E%3C/svg%3E")}.ffc-icon-sliders::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1'/%3E%3Ccircle cx='15' cy='6' r='2'/%3E%3Ccircle cx='9' cy='12' r='2'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1'/%3E%3Ccircle cx='15' cy='6' r='2'/%3E%3Ccircle cx='9' cy='12' r='2'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3C/svg%3E")}.ffc-icon-success::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.5l2.8 2.8L16.5 9'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.5l2.8 2.8L16.5 9'/%3E%3C/svg%3E")}.ffc-icon-sync::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.3-4.9L4 8M4 4v4h4M4 13a8 8 0 0 0 14.3 4.9L20 16M20 20v-4h-4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.3-4.9L4 8M4 4v4h4M4 13a8 8 0 0 0 14.3 4.9L20 16M20 20v-4h-4'/%3E%3C/svg%3E")}.ffc-icon-tag::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.5'/%3E%3C/svg%3E")}.ffc-icon-unlock::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 7.7-1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 7.7-1.5'/%3E%3C/svg%3E")}.ffc-icon-upload::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V5M7 10l5-5 5 5M5 20h14'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V5M7 10l5-5 5 5M5 20h14'/%3E%3C/svg%3E")}.ffc-icon-user::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1.5-4 4.5-6 8-6s6.5 2 8 6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c1.5-4 4.5-6 8-6s6.5 2 8 6'/%3E%3C/svg%3E")}.ffc-icon-user-check::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='8' r='4'/%3E%3Cpath d='M3 21c1.4-3.8 4-5.8 7-5.8 1.6 0 3 .5 4.2 1.5M15.5 18.5l2 2 4-4.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='8' r='4'/%3E%3Cpath d='M3 21c1.4-3.8 4-5.8 7-5.8 1.6 0 3 .5 4.2 1.5M15.5 18.5l2 2 4-4.5'/%3E%3C/svg%3E")}.ffc-icon-users::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.5 3.4-5.5 6.5-5.5s5.7 2 6.5 5.5'/%3E%3Cpath d='M16 4.6a3.5 3.5 0 0 1 0 6.8M18 14.8c2 .7 3.2 2.5 3.5 5.2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.5 3.4-5.5 6.5-5.5s5.7 2 6.5 5.5'/%3E%3Cpath d='M16 4.6a3.5 3.5 0 0 1 0 6.8M18 14.8c2 .7 3.2 2.5 3.5 5.2'/%3E%3C/svg%3E")}.ffc-icon-warning::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5L2.5 20h19z'/%3E%3Cpath d='M12 10v4.5'/%3E%3Ccircle cx='12' cy='17.3' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5L2.5 20h19z'/%3E%3Cpath d='M12 10v4.5'/%3E%3Ccircle cx='12' cy='17.3' r='1.1' fill='currentColor' stroke='none'/%3E%3C/svg%3E")}.ffc-icon-wrench::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 6.5a4 4 0 0 0 5 5L21 10a6 6 0 0 1-7.9 5.4L6 22.5 1.5 18l7.1-7.1A6 6 0 0 1 14 3l-1.5 1.5z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 6.5a4 4 0 0 0 5 5L21 10a6 6 0 0 1-7.9 5.4L6 22.5 1.5 18l7.1-7.1A6 6 0 0 1 14 3l-1.5 1.5z'/%3E%3C/svg%3E")}.ffc-icon-zap::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2L4 14h7l-1 8 9-12h-7z'/%3E%3C/svg%3E")}:root{--ffc-icon-mask-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");--ffc-icon-mask-x:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E")}.ffc-svg-icon{color:var(--ffc-icon-tone,currentColor)}.ffc-icon-tone-primary{--ffc-icon-tone:var(--ffc-primary)}.ffc-icon-tone-info{--ffc-icon-tone:var(--ffc-info)}.ffc-icon-tone-success{--ffc-icon-tone:var(--ffc-success)}.ffc-icon-tone-warning{--ffc-icon-tone:var(--ffc-warning-text)}.ffc-icon-tone-danger{--ffc-icon-tone:var(--ffc-danger)}.ffc-icon-tone-neutral{--ffc-icon-tone:var(--ffc-text-secondary)}.ffc-icon-badge{--ffc-icon-tone:currentColor;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2.25em;height:2.25em;border-radius:var(--ffc-radius-lg);background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-icon-badge::before{margin-right:0}.ffc-icon-badge.ffc-icon-badge-primary{background:var(--ffc-primary-light);color:var(--ffc-primary)}.ffc-icon-badge.ffc-icon-badge-info{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-icon-badge.ffc-icon-badge-success{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-icon-badge.ffc-icon-badge-warning{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-icon-badge.ffc-icon-badge-danger{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-icon-spin::before{animation:ffc-icon-spin 1s linear infinite}@keyframes ffc-icon-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ffc-icon-spin::before{animation:none}}@media (forced-colors:active){.ffc-icon-api::before,.ffc-icon-award::before,.ffc-icon-building::before,.ffc-icon-bulb::before,.ffc-icon-calendar::before,.ffc-icon-chart::before,.ffc-icon-checkmark::before,.ffc-icon-chevron-down::before,.ffc-icon-chevron-left::before,.ffc-icon-chevron-right::before,.ffc-icon-chevron-up::before,.ffc-icon-clipboard::before,.ffc-icon-clock::before,.ffc-icon-cloud::before,.ffc-icon-code::before,.ffc-icon-copy::before,.ffc-icon-cross::before,.ffc-icon-database::before,.ffc-icon-debug::before,.ffc-icon-delete::before,.ffc-icon-doc::before,.ffc-icon-download::before,.ffc-icon-edit::before,.ffc-icon-email::before,.ffc-icon-error::before,.ffc-icon-external::before,.ffc-icon-eye::before,.ffc-icon-file::before,.ffc-icon-filter::before,.ffc-icon-gauge::before,.ffc-icon-globe::before,.ffc-icon-grid::before,.ffc-icon-grip::before,.ffc-icon-help::before,.ffc-icon-history::before,.ffc-icon-id::before,.ffc-icon-image::before,.ffc-icon-inbox::before,.ffc-icon-info::before,.ffc-icon-key::before,.ffc-icon-layout::before,.ffc-icon-link::before,.ffc-icon-list::before,.ffc-icon-lock::before,.ffc-icon-logout::before,.ffc-icon-map-pin::before,.ffc-icon-megaphone::before,.ffc-icon-minus::before,.ffc-icon-monitor::before,.ffc-icon-network::before,.ffc-icon-package::before,.ffc-icon-palette::before,.ffc-icon-phone::before,.ffc-icon-plus::before,.ffc-icon-print::before,.ffc-icon-qr::before,.ffc-icon-restore::before,.ffc-icon-robot::before,.ffc-icon-scroll::before,.ffc-icon-search::before,.ffc-icon-send::before,.ffc-icon-server::before,.ffc-icon-settings::before,.ffc-icon-share::before,.ffc-icon-shield::before,.ffc-icon-skip::before,.ffc-icon-sliders::before,.ffc-icon-success::before,.ffc-icon-sync::before,.ffc-icon-tag::before,.ffc-icon-unlock::before,.ffc-icon-upload::before,.ffc-icon-user-check::before,.ffc-icon-user::before,.ffc-icon-users::before,.ffc-icon-warning::before,.ffc-icon-wrench::before,.ffc-icon-zap::before{forced-color-adjust:none;background-color:CanvasText}.ffc-icon-badge,.ffc-icon-badge.ffc-icon-badge-danger,.ffc-icon-badge.ffc-icon-badge-info,.ffc-icon-badge.ffc-icon-badge-primary,.ffc-icon-badge.ffc-icon-badge-success,.ffc-icon-badge.ffc-icon-badge-warning{border:1px solid CanvasText}}.ffc-visibility-restricted{padding:var(--ffc-spacing-2xl);background:var(--ffc-warning-light);border:1px solid var(--ffc-warning);border-radius:var(--ffc-radius-md);text-align:center}.ffc-visibility-restricted .ffc-calendar-title{margin:0 0 var(--ffc-spacing-md);font-size:1.2em;color:var(--ffc-text)}.ffc-visibility-restricted .ffc-restricted-message{color:var(--ffc-text-muted)}.ffc-visibility-restricted .ffc-restricted-message a{color:var(--ffc-primary);font-weight:600}.ffc-scheduling-restricted{padding:var(--ffc-spacing-2xl);text-align:center}.ffc-scheduling-restricted .ffc-restricted-message{color:var(--ffc-text-muted)}.ffc-scheduling-restricted .ffc-restricted-message a{color:var(--ffc-primary);font-weight:600}.ffc-admin-bypass-notice{padding:var(--ffc-spacing-md) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl);background:var(--ffc-info-light);border:1px solid var(--ffc-info);border-radius:var(--ffc-radius-sm);font-size:.9em;color:var(--ffc-info)}.ffc-badge{display:inline-block;padding:3px var(--ffc-spacing-sm);border-radius:var(--ffc-radius-xs);font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.3px}.ffc-pill{display:inline-block;padding:3px var(--ffc-spacing-md);border-radius:var(--ffc-radius-pill);font-size:var(--ffc-font-size-xs);font-weight:500;cursor:default}.ffc-pill-has-tip{cursor:help}.ffc-pill-row-color{background:var(--ffc-badge-row-bg);color:var(--ffc-badge-row-text)}.ffc-btn{display:inline-block;padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);border:none;border-radius:var(--ffc-radius-sm);font-family:var(--ffc-font-family);font-size:var(--ffc-font-size-base);font-weight:500;cursor:pointer;text-decoration:none;text-align:center;transition:all .2s ease}.ffc-btn:focus-visible{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-btn:disabled{opacity:.6;cursor:not-allowed}.ffc-btn-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary)}.ffc-btn-primary:hover{background:var(--ffc-primary-hover)}.ffc-btn-primary:disabled{background:var(--ffc-gray-300)}.ffc-btn-secondary{background:var(--ffc-gray-200);color:var(--ffc-gray-800)}.ffc-btn-secondary:hover{background:var(--ffc-gray-300)}.ffc-btn-success{background:var(--ffc-success);color:var(--ffc-text-on-success)}.ffc-btn-success:hover{background:var(--ffc-success-hover)}.ffc-btn-danger{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-btn-danger:hover{background:var(--ffc-danger-hover)}@media (prefers-reduced-motion:reduce){.ffc-btn{transition:none}}.ffc-badge-private{background:var(--ffc-danger-light);color:var(--ffc-danger-text);border:1px solid var(--ffc-danger)}.ffc-flex{display:flex}.ffc-mb-md{margin-bottom:var(--ffc-spacing-lg)}.ffc-color-dot{display:inline-block;width:12px;height:12px;border-radius:var(--ffc-radius-full);vertical-align:middle;background-color:var(--ffc-color,currentColor)}.ffc-control-steps,.ffc-control-toggle{--ffc-control-halo:color-mix(in srgb, var(--ffc-primary) 18%, transparent);--ffc-control-knob-shadow:0 1px 2px rgba(0, 0, 0, 0.2);--ffc-control-knob-ink:#50575e}.ffc-control-toggle,.form-table td .ffc-control-toggle,.form-table td fieldset .ffc-control-toggle{display:inline-flex;align-items:center;gap:var(--ffc-spacing-md);cursor:pointer;user-select:none;line-height:1.3;position:relative}.ffc-control-toggle input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ffc-control-toggle-track{position:relative;isolation:isolate;flex:0 0 auto;width:38px;height:22px;background:var(--ffc-border);border-radius:11px;transition:background-color .15s ease}.ffc-control-toggle-track::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:var(--ffc-radius-full);background:#fff;box-shadow:var(--ffc-control-knob-shadow);transition:transform .15s ease,width .15s ease,box-shadow .15s ease}.ffc-control-toggle input[type=checkbox]:checked+.ffc-control-toggle-track{background:var(--ffc-primary)}.ffc-control-toggle input[type=checkbox]:checked+.ffc-control-toggle-track::after{transform:translateX(16px)}.ffc-control-toggle:hover input[type=checkbox]:not(:disabled)+.ffc-control-toggle-track::after{box-shadow:var(--ffc-control-knob-shadow),0 0 0 7px var(--ffc-control-halo)}.ffc-control-toggle:active input[type=checkbox]:not(:disabled)+.ffc-control-toggle-track::after{width:22px;box-shadow:var(--ffc-control-knob-shadow),0 0 0 9px var(--ffc-control-halo)}.ffc-control-toggle:active input[type=checkbox]:checked:not(:disabled)+.ffc-control-toggle-track::after{transform:translateX(12px)}.ffc-control-toggle input[type=checkbox]:focus-visible+.ffc-control-toggle-track{outline:2px solid var(--ffc-primary);outline-offset:2px}.ffc-control-toggle input[type=checkbox]:disabled+.ffc-control-toggle-track{background:var(--ffc-gray-300);cursor:not-allowed}.ffc-control-toggle input[type=checkbox]:disabled:checked+.ffc-control-toggle-track{background:var(--ffc-gray-400)}.ffc-control-toggle input[type=checkbox]:disabled+.ffc-control-toggle-track::after{box-shadow:none}.ffc-control-toggle:has(input[type=checkbox]:disabled){cursor:not-allowed}.ffc-control-toggle:has(input[type=checkbox]:disabled) .ffc-control-toggle-label{color:var(--ffc-text-muted)}.ffc-control-toggle-label{color:inherit}.ffc-control-toggle-mark .ffc-control-toggle-track::before{content:"";position:absolute;z-index:var(--ffc-z-raised);top:6px;left:6px;width:10px;height:10px;background-color:var(--ffc-control-knob-ink);-webkit-mask:var(--ffc-icon-mask-x) center/contain no-repeat;mask:var(--ffc-icon-mask-x) center/contain no-repeat;transition:transform .15s ease}.ffc-control-toggle-mark input[type=checkbox]:checked+.ffc-control-toggle-track::before{-webkit-mask-image:var(--ffc-icon-mask-check);mask-image:var(--ffc-icon-mask-check);transform:translateX(16px)}.ffc-control-toggle-mark input[type=checkbox]:disabled+.ffc-control-toggle-track::before{background-color:var(--ffc-gray-400)}@media (prefers-reduced-motion:reduce){.ffc-control-toggle-track,.ffc-control-toggle-track::after,.ffc-control-toggle-track::before{transition:none}}@media (forced-colors:active){.ffc-control-toggle-mark .ffc-control-toggle-track::before{forced-color-adjust:none;background-color:CanvasText}}.ffc-control-steps{--ffc-control-steps-rail:6px;--ffc-control-steps-dot:8px;--ffc-control-steps-thumb:20px;--ffc-control-steps-shape:var(--ffc-radius-full);--ffc-control-steps-gap:76px;--ffc-control-steps-idle:var(--ffc-border);--ffc-control-steps-rail-bg:var(--ffc-gray-300);--ffc-control-steps-fill:var(--ffc-primary);display:inline-block;vertical-align:top;min-width:0;margin:0;padding:0;border:0}.ffc-control-steps-track{display:flex}.ffc-control-steps-stop{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--ffc-spacing-xs);width:var(--ffc-control-steps-gap);text-align:center;cursor:pointer}.ffc-control-steps-stop input{position:absolute;width:1px;height:1px;margin:0;opacity:0}.ffc-control-steps-stop:not(:first-child)::before{content:"";position:absolute;top:calc(var(--ffc-control-steps-thumb)/ 2 - var(--ffc-control-steps-rail)/ 2);right:50%;width:100%;height:var(--ffc-control-steps-rail);border-radius:var(--ffc-control-steps-rail);background:var(--ffc-control-steps-rail-bg)}.ffc-control-steps-mark{position:relative;z-index:var(--ffc-z-raised);display:grid;place-items:center;width:var(--ffc-control-steps-thumb);height:var(--ffc-control-steps-thumb)}.ffc-control-steps-mark::after{content:"";width:var(--ffc-control-steps-dot);height:var(--ffc-control-steps-dot);border-radius:var(--ffc-control-steps-shape);background:var(--ffc-bg-card);box-shadow:inset 0 0 0 2px var(--ffc-control-steps-idle);transition:width .15s ease,height .15s ease,box-shadow .15s ease,background-color .15s ease}.ffc-control-steps-label{padding:0 var(--ffc-spacing-3xs);color:var(--ffc-text-muted);font-size:var(--ffc-font-size-xs);line-height:1.25}.ffc-control-steps-stop:has(input:checked)::before,.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked)::before{background:var(--ffc-control-steps-fill)}.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked) .ffc-control-steps-mark::after{background:var(--ffc-control-steps-fill);box-shadow:none}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-mark::after{width:var(--ffc-control-steps-thumb);height:var(--ffc-control-steps-thumb);background:var(--ffc-bg-card);box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),var(--ffc-shadow-sm)}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{color:var(--ffc-text);font-weight:600}.ffc-control-steps-stop:hover:not(:has(input:checked)) .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 2px var(--ffc-control-steps-fill)}.ffc-control-steps-stop:has(input:checked):hover .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 8px var(--ffc-control-halo)}.ffc-control-steps-stop:has(input:focus-visible) .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 2px var(--ffc-bg-card),0 0 0 4px var(--ffc-primary)}.ffc-control-steps-stop:has(input:checked):active .ffc-control-steps-mark::after{box-shadow:inset 0 0 0 3px var(--ffc-control-steps-fill),0 0 0 12px var(--ffc-control-halo)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:first-child input:checked)){--ffc-control-steps-fill:var(--ffc-gray-600)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:not(:first-child):not(:last-child) input:checked)),.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:not(:first-child):not(:last-child) input:checked)){--ffc-control-steps-fill:var(--ffc-warning)}.ffc-control-steps-severity:where(:has(.ffc-control-steps-stop:last-child input:checked)),.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:first-child input:checked)){--ffc-control-steps-fill:var(--ffc-danger)}.ffc-control-steps-traffic:where(:has(.ffc-control-steps-stop:last-child input:checked)){--ffc-control-steps-fill:var(--ffc-success)}.ffc-control-steps:where(:has([data-tone=neutral] input:checked)){--ffc-control-steps-fill:var(--ffc-gray-600)}.ffc-control-steps:where(:has([data-tone=primary] input:checked)){--ffc-control-steps-fill:var(--ffc-primary)}.ffc-control-steps:where(:has([data-tone=info] input:checked)){--ffc-control-steps-fill:var(--ffc-info)}.ffc-control-steps:where(:has([data-tone=success] input:checked)){--ffc-control-steps-fill:var(--ffc-success)}.ffc-control-steps:where(:has([data-tone=warning] input:checked)){--ffc-control-steps-fill:var(--ffc-warning)}.ffc-control-steps:where(:has([data-tone=danger] input:checked)){--ffc-control-steps-fill:var(--ffc-danger)}.ffc-control-steps-sm{--ffc-control-steps-rail:4px;--ffc-control-steps-dot:6px;--ffc-control-steps-thumb:16px;--ffc-control-steps-gap:60px}.ffc-control-steps-lg{--ffc-control-steps-rail:8px;--ffc-control-steps-dot:10px;--ffc-control-steps-thumb:26px;--ffc-control-steps-gap:96px}.ffc-control-steps-many{--ffc-control-steps-gap:56px}.ffc-control-steps-square{--ffc-control-steps-shape:var(--ffc-radius-sm)}.ffc-control-steps-fluid{display:block}.ffc-control-steps-fluid .ffc-control-steps-stop{flex:1 1 0;width:auto}.ffc-control-steps-labels-selected .ffc-control-steps-stop:not(:has(input:checked)) .ffc-control-steps-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ffc-control-steps-labels-selected .ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{white-space:nowrap}.ffc-control-steps:disabled{--ffc-control-steps-fill:var(--ffc-gray-400);--ffc-control-steps-idle:var(--ffc-gray-300)}.ffc-control-steps:disabled .ffc-control-steps-stop{cursor:not-allowed}.ffc-control-steps:disabled .ffc-control-steps-label{color:var(--ffc-text-muted)}.ffc-control-steps-desc{display:none;margin-top:var(--ffc-spacing-xs)}.ffc-control-steps:has(.ffc-control-steps-stop:first-child input:checked) .ffc-control-steps-desc[data-step="1"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(10) input:checked) .ffc-control-steps-desc[data-step="10"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(11) input:checked) .ffc-control-steps-desc[data-step="11"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(2) input:checked) .ffc-control-steps-desc[data-step="2"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(3) input:checked) .ffc-control-steps-desc[data-step="3"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(4) input:checked) .ffc-control-steps-desc[data-step="4"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(5) input:checked) .ffc-control-steps-desc[data-step="5"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(6) input:checked) .ffc-control-steps-desc[data-step="6"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(7) input:checked) .ffc-control-steps-desc[data-step="7"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(8) input:checked) .ffc-control-steps-desc[data-step="8"],.ffc-control-steps:has(.ffc-control-steps-stop:nth-child(9) input:checked) .ffc-control-steps-desc[data-step="9"]{display:block}@media (max-width:480px){.ffc-control-steps{display:block}.ffc-control-steps .ffc-control-steps-stop{flex:1 1 0;width:auto}.ffc-control-steps-many .ffc-control-steps-stop:not(:has(input:checked)) .ffc-control-steps-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.ffc-control-steps-many .ffc-control-steps-stop:has(input:checked) .ffc-control-steps-label{white-space:nowrap}}@media (prefers-reduced-motion:reduce){.ffc-control-steps-mark::after{transition:none}}@media (forced-colors:active){.ffc-control-steps-mark::after{forced-color-adjust:none;background:Canvas;box-shadow:inset 0 0 0 2px CanvasText}.ffc-control-steps-stop:has(input:checked) .ffc-control-steps-mark::after,.ffc-control-steps-stop:has(~ .ffc-control-steps-stop input:checked) .ffc-control-steps-mark::after{background:Highlight;box-shadow:none}.ffc-control-steps-stop:not(:first-child)::before{forced-color-adjust:none;background:CanvasText}}.ffc-autosave-badge{display:inline-block;margin-left:var(--ffc-spacing-sm);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-xs);font-weight:500;line-height:1.5;vertical-align:middle}.ffc-autosave-badge--saving{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-autosave-badge--saved{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-autosave-badge--error{background:var(--ffc-danger-light);color:var(--ffc-danger-text)}.ffc-features-cell{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ffc-spacing-2xs)}.ffc-features-cell .ffc-control-toggle{margin:0}.ffc-features-badge{display:inline-block;margin-top:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:500;line-height:1.4}.ffc-features-badge--saving{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-features-badge--saved{background:var(--ffc-success-light);color:var(--ffc-success)}.ffc-features-badge--error{background:var(--ffc-danger-light);color:var(--ffc-danger-text)}#ffc-activity-log-table.ffc-loading{position:relative;opacity:.55;pointer-events:none;transition:opacity .15s ease}.ffc-captcha-mode{margin:0 0 var(--ffc-spacing-xl);max-width:46em}.ffc-captcha-mode-note,.ffc-captcha-mode-summary{display:block;margin-left:var(--ffc-spacing-3xl)}.ffc-captcha-mode-note{margin-top:var(--ffc-spacing-2xs);padding-left:var(--ffc-spacing-md);border-left:3px solid transparent}.ffc-captcha-mode-note--warning{border-left-color:var(--ffc-warning-border)}.ffc-captcha-mode-note--info{border-left-color:var(--ffc-info-border)}.ffc-email-disabled-notice{margin:0 0 var(--ffc-spacing-xl);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border-left:4px solid var(--ffc-warning-border);background:var(--ffc-warning-bg);color:var(--ffc-warning-text);border-radius:2px}.ffc-email-disabled-notice p{margin:0}@media (forced-colors:active){.ffc-btn-danger,.ffc-btn-primary,.ffc-btn-secondary,.ffc-btn-success,:root.ffc-dark-mode .button,:root.ffc-dark-mode .button-primary.disabled,:root.ffc-dark-mode .button-primary[disabled],:root.ffc-dark-mode .button-secondary,:root.ffc-dark-mode .button.disabled,:root.ffc-dark-mode .mce-btn.mce-active{border:1px solid ButtonText}.ffc-autosave-badge--error,.ffc-autosave-badge--saved,.ffc-autosave-badge--saving,.ffc-features-badge--error,.ffc-features-badge--saved,.ffc-features-badge--saving,.ffc-pill-row-color,.ffc-status-pending{border:1px solid CanvasText}}.ffc-admin-page .ffc-required{color:var(--ffc-danger)}
/*# sourceMappingURL=ffc-common.min.css.map */
\ No newline at end of file
diff --git a/assets/css/ffc-user-dashboard.css b/assets/css/ffc-user-dashboard.css
index 30a4b151f..33747011d 100644
--- a/assets/css/ffc-user-dashboard.css
+++ b/assets/css/ffc-user-dashboard.css
@@ -1199,54 +1199,6 @@
gap: var(--ffc-spacing-md);
}
-.ffc-toggle-label {
- display: flex;
- align-items: center;
- gap: var(--ffc-spacing-lg);
- cursor: pointer;
- font-size: var(--ffc-font-size-base);
- color: var(--ffc-text);
- padding: var(--ffc-spacing-xs) 0;
-}
-
-.ffc-toggle-label input[type="checkbox"] {
- display: none;
-}
-
-.ffc-toggle-switch {
- position: relative;
- width: 40px;
- height: 22px;
- background: var(--ffc-border);
- border-radius: 11px;
- transition: background 0.2s;
- flex-shrink: 0;
-}
-
-.ffc-toggle-switch::after {
- content: '';
- position: absolute;
- top: 2px;
- left: 2px;
- width: 18px;
- height: 18px;
- /* Branco nos dois temas de propósito: no escuro a pista é escura, e um
- botão em var(--ffc-bg-card) sumiria dentro dela. Mesma decisão do
- interruptor de ffc-common.css (#1126). */
- background: #fff;
- border-radius: var(--ffc-radius-full);
- transition: transform 0.2s;
- box-shadow: var(--ffc-shadow-sm);
-}
-
-.ffc-toggle-label input:checked + .ffc-toggle-switch {
- background: var(--ffc-primary);
-}
-
-.ffc-toggle-label input:checked + .ffc-toggle-switch::after {
- transform: translateX(18px);
-}
-
/* ==========================================================================
LGPD SECTION
========================================================================== */
diff --git a/assets/css/ffc-user-dashboard.min.css b/assets/css/ffc-user-dashboard.min.css
index 76b712c9b..3645c6d0d 100644
--- a/assets/css/ffc-user-dashboard.min.css
+++ b/assets/css/ffc-user-dashboard.min.css
@@ -1,2 +1,2 @@
-.ffc-user-dashboard{max-width:1500px;margin:var(--ffc-spacing-2xl) auto;padding:var(--ffc-spacing-3xl);background:var(--ffc-bg);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;color:var(--ffc-text)}.ffc-dashboard-notice{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-2xl);border-radius:var(--ffc-radius-md);border-left:4px solid var(--ffc-border);font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-notice-info{background:var(--ffc-info-bg);border-left-color:var(--ffc-primary);color:var(--ffc-info-text)}.ffc-notice-warning{background:var(--ffc-warning-bg);border-left-color:var(--ffc-warning);color:var(--ffc-warning-text)}.ffc-notice-admin-viewing{background:var(--ffc-warning-bg);border-left-color:var(--ffc-warning-border);color:var(--ffc-warning-text);font-weight:600}.ffc-notice-admin-viewing strong{color:var(--ffc-warning-text)}.ffc-dashboard-notice p{margin:.4em 0}.ffc-dashboard-notice .button{margin-top:var(--ffc-spacing-sm)}.ffc-dashboard-tabs{display:flex;gap:var(--ffc-spacing-3xs);margin-bottom:var(--ffc-spacing-3xl);border-bottom:2px solid var(--ffc-border-light)}.ffc-tab{padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);background:0 0;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:var(--ffc-font-size-base);font-weight:500;color:var(--ffc-text-muted);transition:color .2s,border-color .2s,background .2s;border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0;margin-bottom:-2px;white-space:nowrap}.ffc-tab:hover{color:var(--ffc-text);background:var(--ffc-bg-alt)}.ffc-tab.is-active{color:var(--ffc-primary);border-bottom-color:var(--ffc-primary);font-weight:600;background:0 0}.ffc-tab-content{display:none;padding:var(--ffc-spacing-2xs) 0;animation:ffcFadeIn .25s ease}.ffc-tab-content.is-active{display:block}@keyframes ffcFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.ffc-loading{text-align:center;padding:48px var(--ffc-spacing-2xl);color:var(--ffc-text-muted);font-size:var(--ffc-font-size-base)}.ffc-loading::after{content:'';display:inline-block;width:18px;height:18px;margin-left:var(--ffc-spacing-sm);border:2px solid var(--ffc-border);border-top-color:var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:ffcSpin .8s linear infinite;vertical-align:middle}@keyframes ffcSpin{to{transform:rotate(360deg)}}.ffc-dashboard-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--ffc-spacing-lg);margin-bottom:var(--ffc-spacing-3xl)}.ffc-dashboard-summary:empty{display:none}.ffc-summary-card{background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-lg);padding:var(--ffc-spacing-xl) var(--ffc-spacing-xl);text-align:center;transition:box-shadow .2s,border-color .2s}.ffc-summary-card:hover{border-color:var(--ffc-border);box-shadow:var(--ffc-shadow-sm)}.ffc-summary-number{font-size:28px;font-weight:700;color:var(--ffc-primary);line-height:1.2}.ffc-summary-number.ffc-summary-date{font-size:var(--ffc-font-size-lg);font-weight:600}.ffc-summary-detail{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);margin-top:var(--ffc-spacing-3xs)}.ffc-summary-label{font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.6px;font-weight:600;margin-top:var(--ffc-spacing-sm)}.ffc-filter-bar{display:flex;align-items:center;gap:var(--ffc-spacing-sm);flex-wrap:wrap;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md)}.ffc-filter-bar label{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);display:flex;align-items:center;gap:var(--ffc-spacing-xs);font-weight:500}.ffc-filter-bar input[type=date],.ffc-filter-bar input[type=text]{padding:var(--ffc-spacing-xs) var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);background:var(--ffc-bg);color:var(--ffc-text);transition:border-color .15s,box-shadow .15s}.ffc-filter-bar input[type=date]:focus,.ffc-filter-bar input[type=text]:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-filter-bar input[type=text]{min-width:160px}.ffc-filter-bar .button{padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-sm);font-weight:500;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all .15s;line-height:1.4}.ffc-filter-bar .ffc-filter-apply{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-filter-bar .ffc-filter-apply:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-filter-bar .ffc-filter-clear{background:var(--ffc-bg);color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-filter-bar .ffc-filter-clear:hover{background:var(--ffc-bg-alt);color:var(--ffc-text)}.ffc-page-size-select{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);margin-left:auto}.ffc-page-size-select a{color:var(--ffc-primary);text-decoration:none;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border-radius:var(--ffc-radius-xs);transition:background .15s}.ffc-page-size-select a:hover{background:var(--ffc-primary-light)}.ffc-page-size-select strong{color:var(--ffc-text);background:var(--ffc-primary-light);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:var(--ffc-radius-xs);font-weight:600}.ffc-appointments-table,.ffc-audience-bookings-table,.ffc-certificates-table,.ffc-recruitment-table,.ffc-reregistrations-table{width:100%;border-collapse:separate;border-spacing:0;margin-top:0;border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);overflow:hidden}.ffc-appointments-table th,.ffc-audience-bookings-table th,.ffc-certificates-table th,.ffc-recruitment-table th,.ffc-reregistrations-table th{background:var(--ffc-bg-alt);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);text-align:left;font-weight:600;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--ffc-border-light)}.ffc-appointments-table td,.ffc-audience-bookings-table td,.ffc-certificates-table td,.ffc-recruitment-table td,.ffc-reregistrations-table td{padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border-bottom:1px solid var(--ffc-border-light);vertical-align:middle;font-size:var(--ffc-font-size-sm);color:var(--ffc-text)}.ffc-appointments-table tr:last-child td,.ffc-audience-bookings-table tr:last-child td,.ffc-certificates-table tr:last-child td,.ffc-recruitment-table tr:last-child td,.ffc-reregistrations-table tr:last-child td{border-bottom:none}.ffc-appointments-table tbody tr:hover,.ffc-audience-bookings-table tbody tr:hover,.ffc-certificates-table tbody tr:hover,.ffc-recruitment-table tbody tr:hover,.ffc-reregistrations-table tbody tr:hover{background:var(--ffc-primary-light)}.ffc-certificates-table{table-layout:fixed}.ffc-certificates-table td:first-child,.ffc-certificates-table th:first-child{width:20%}.ffc-certificates-table td:nth-child(2),.ffc-certificates-table th:nth-child(2){width:13%}.ffc-certificates-table td:nth-child(3),.ffc-certificates-table th:nth-child(3){width:15%;text-align:center}.ffc-certificates-table td:nth-child(4),.ffc-certificates-table th:nth-child(4){width:22%;word-break:break-all}.ffc-certificates-table td:nth-child(5),.ffc-certificates-table th:nth-child(5){width:17%}.ffc-certificates-table td:nth-child(5){font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-2xs);font-weight:500;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ffc-certificates-table td:nth-child(6),.ffc-certificates-table th:nth-child(6){width:13%;text-align:center}.ffc-certificates-table .ffc-consent-yes{color:var(--ffc-success);font-weight:600}.ffc-certificates-table .ffc-consent-no{color:var(--ffc-danger);font-weight:600}.ffc-btn-edit,.ffc-btn-pdf,.ffc-btn-receipt{display:inline-flex!important;align-items:center;vertical-align:middle;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg)!important;font-size:var(--ffc-font-size-xs)!important;font-weight:500;text-decoration:none!important;white-space:nowrap;border-radius:var(--ffc-radius-sm)!important;transition:all .15s;line-height:1.4;cursor:pointer}.ffc-btn-pdf{background:var(--ffc-danger)!important;color:var(--ffc-text-on-danger)!important;border:1px solid var(--ffc-danger)!important}.ffc-btn-pdf:hover{background:var(--ffc-danger-hover)!important;border-color:var(--ffc-danger-hover)!important;color:var(--ffc-text-on-danger)!important}.ffc-btn-pdf::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0H4zm5.5 1.5v3h3l-3-3zM5.5 8a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H6.75v1h.75a.5.5 0 0 1 0 1h-.75v1.5a.5.5 0 0 1-1 0V8zm3.5-.5a.5.5 0 0 0-.5.5v3.5a.5.5 0 0 0 .5.5h.5a1.5 1.5 0 0 0 0-3H9.5v-1a.5.5 0 0 0-.5-.5z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0H4zm5.5 1.5v3h3l-3-3zM5.5 8a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H6.75v1h.75a.5.5 0 0 1 0 1h-.75v1.5a.5.5 0 0 1-1 0V8zm3.5-.5a.5.5 0 0 0-.5.5v3.5a.5.5 0 0 0 .5.5h.5a1.5 1.5 0 0 0 0-3H9.5v-1a.5.5 0 0 0-.5-.5z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-btn-receipt{background:var(--ffc-primary)!important;color:var(--ffc-text-on-primary)!important;border:1px solid var(--ffc-primary)!important}.ffc-btn-receipt:hover{background:var(--ffc-primary-hover)!important;border-color:var(--ffc-primary-hover)!important;color:var(--ffc-text-on-primary)!important}.ffc-btn-receipt::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 13 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27zM4 5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1H4z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 13 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27zM4 5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1H4z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-btn-edit{background:var(--ffc-primary)!important;color:var(--ffc-text-on-primary)!important;border:1px solid var(--ffc-primary)!important}.ffc-btn-edit:hover{background:var(--ffc-primary-hover)!important;border-color:var(--ffc-primary-hover)!important;color:var(--ffc-text-on-primary)!important}.ffc-btn-edit::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-appointments-table td:last-child,.ffc-certificates-table td:last-child,.ffc-reregistrations-table td:last-child{white-space:nowrap}.ffc-appointments-table td:last-child>*+*,.ffc-reregistrations-table td:last-child>*+*{margin-left:var(--ffc-spacing-xs)}.ffc-dashboard-status{padding:3px var(--ffc-spacing-md);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:600;display:inline-block;letter-spacing:.2px;text-transform:capitalize}.ffc-dashboard-status.ffc-dashboard-status-pending{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-dashboard-status.ffc-dashboard-status-confirmed{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-dashboard-status.ffc-dashboard-status-cancelled{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-dashboard-status.ffc-dashboard-status-completed{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-dashboard-status.ffc-dashboard-status-no_show{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-appointments-table .ffc-cancel-appointment{display:inline-block;vertical-align:middle;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-xs);line-height:1.4;min-height:0;background:0 0;color:var(--ffc-danger);border:1px solid var(--ffc-danger);border-radius:var(--ffc-radius-sm);cursor:pointer;white-space:nowrap;transition:all .15s}.ffc-appointments-table .ffc-cancel-appointment:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-appointments-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-appointments-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-appointments-table .ffc-row-cancelled{background:var(--ffc-danger-bg)}.ffc-appointments-table .ffc-row-cancelled td{color:var(--ffc-text-muted)}#ffc-tabpanel-appointments h3,#ffc-tabpanel-audience h3,#ffc-tabpanel-reregistrations h3{margin-top:0;margin-bottom:var(--ffc-spacing-lg);color:var(--ffc-text);font-size:var(--ffc-font-size-lg);font-weight:600;border-bottom:1px solid var(--ffc-border-light);padding-bottom:var(--ffc-spacing-md)}.ffc-audience-bookings-table td:first-child,.ffc-audience-bookings-table th:first-child{width:17%}.ffc-audience-bookings-table td:nth-child(2),.ffc-audience-bookings-table th:nth-child(2){width:12%}.ffc-audience-bookings-table td:nth-child(3),.ffc-audience-bookings-table th:nth-child(3){width:10%}.ffc-audience-bookings-table td:nth-child(4),.ffc-audience-bookings-table th:nth-child(4){width:24%}.ffc-audience-bookings-table td:nth-child(5),.ffc-audience-bookings-table th:nth-child(5){width:17%}.ffc-audience-bookings-table td:nth-child(6),.ffc-audience-bookings-table th:nth-child(6){width:20%}.ffc-audience-bookings-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-audience-bookings-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-audience-bookings-table .ffc-row-cancelled{background:var(--ffc-danger-bg)}.ffc-audience-bookings-table .ffc-row-cancelled td{color:var(--ffc-text-muted)}.ffc-audience-bookings-table .ffc-audience-tag{display:block;margin-bottom:var(--ffc-spacing-2xs)}.ffc-audience-bookings-table .ffc-audience-tag:last-child{margin-bottom:0}.ffc-reregistrations-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-reregistrations-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-reregistrations-table .ffc-auth-code{font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-xs);font-weight:600;letter-spacing:.5px;background:var(--ffc-bg-alt);padding:3px var(--ffc-spacing-sm);border-radius:var(--ffc-radius-sm);border:1px solid var(--ffc-border-light);white-space:nowrap}.ffc-dashboard-status.ffc-dashboard-status-submitted{background:var(--ffc-primary-light);color:var(--ffc-primary-hover)}.ffc-dashboard-status.ffc-dashboard-status-approved{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-dashboard-status.ffc-dashboard-status-rejected{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-dashboard-status.ffc-dashboard-status-expired{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-dashboard-status.ffc-dashboard-status-in_progress{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-profile-logout{text-align:right;margin-bottom:var(--ffc-spacing-lg)}.ffc-logout-link{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);color:var(--ffc-text-secondary);text-decoration:none;font-size:var(--ffc-font-size-sm);font-weight:500;padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg);transition:all .2s ease}.ffc-logout-link:hover{color:var(--ffc-danger-text);border-color:var(--ffc-danger);background:var(--ffc-danger-bg)}.ffc-logout-link .ffc-icon-logout{display:inline-flex}.ffc-logout-link .ffc-icon-logout::before{margin-right:0}.ffc-profile-info{background:var(--ffc-bg);padding:0;border-radius:var(--ffc-radius-md);margin-top:0;display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--ffc-border-light);overflow:hidden}.ffc-profile-field{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin:0;border-bottom:1px solid var(--ffc-border-light);border-right:1px solid var(--ffc-border-light)}.ffc-profile-field:nth-child(2n){border-right:none}.ffc-profile-field:last-child,.ffc-profile-field:nth-last-child(2):nth-child(odd){border-bottom:none}.ffc-profile-field:last-child:nth-child(2n){border-bottom:none}.ffc-profile-field label{display:block;font-size:var(--ffc-font-size-2xs);font-weight:600;color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--ffc-spacing-2xs)}.ffc-profile-field .ffc-field-value{color:var(--ffc-text);font-size:var(--ffc-font-size-base);font-weight:500;line-height:1.5}.ffc-profile-field .ffc-cpf-list,.ffc-profile-field .ffc-email-list,.ffc-profile-field .ffc-name-list{list-style:none;padding:0;margin:0}.ffc-profile-field .ffc-cpf-list li,.ffc-profile-field .ffc-email-list li,.ffc-profile-field .ffc-name-list li{padding:var(--ffc-spacing-3xs) 0;color:var(--ffc-text);font-size:var(--ffc-font-size-base);font-weight:500}.ffc-profile-field .ffc-cpf-list li::before,.ffc-profile-field .ffc-email-list li::before,.ffc-profile-field .ffc-name-list li::before{content:'';display:inline-block;width:6px;height:6px;border-radius:var(--ffc-radius-full);background:var(--ffc-primary);margin-right:var(--ffc-spacing-sm);vertical-align:middle}.ffc-profile-actions{display:flex;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl)}.ffc-profile-actions .button{padding:9px var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);font-weight:500;border-radius:var(--ffc-radius-md);cursor:pointer;transition:all .15s;line-height:1.4;text-decoration:none;display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs)}.ffc-profile-actions .button-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);box-shadow:var(--ffc-shadow-sm)}.ffc-profile-actions .button-primary:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-profile-actions .button:not(.button-primary){background:var(--ffc-bg);color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-profile-actions .button:not(.button-primary):hover{background:var(--ffc-bg-alt);color:var(--ffc-text);border-color:var(--ffc-border)}.ffc-profile-actions .ffc-leave-all-groups-btn{color:var(--ffc-danger-text);border-color:var(--ffc-danger)}.ffc-profile-actions .ffc-leave-all-groups-btn:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger);border-color:var(--ffc-danger)}.ffc-password-form{margin-top:var(--ffc-spacing-lg);padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md)}.ffc-password-form .ffc-profile-field{padding:0;border:none;margin-bottom:var(--ffc-spacing-lg)}.ffc-password-form .ffc-profile-field label{font-size:var(--ffc-font-size-sm);text-transform:none;letter-spacing:0;font-weight:600;color:var(--ffc-text);margin-bottom:var(--ffc-spacing-2xs)}.ffc-password-form input[type=password]{color:var(--ffc-text);width:100%;max-width:340px;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);transition:border-color .15s,box-shadow .15s}.ffc-password-form input[type=password]:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-password-form .button-primary{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);border-radius:var(--ffc-radius-md)}.ffc-profile-section{margin-top:var(--ffc-spacing-3xl);padding-top:var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-border-light)}.ffc-profile-section h3{font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);margin:0 0 var(--ffc-spacing-lg) 0}.ffc-audience-join-section{margin-top:var(--ffc-spacing-3xl);padding-top:var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-border-light)}.ffc-audience-join-section h3{font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);margin:0 0 var(--ffc-spacing-xs) 0}.ffc-audience-limit-msg{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);margin:0 0 var(--ffc-spacing-xl) 0}.ffc-audience-parent-group{margin-bottom:var(--ffc-spacing-xl)}.ffc-audience-parent-group:last-child{margin-bottom:0}.ffc-audience-parent-header{display:flex;align-items:center;gap:var(--ffc-spacing-md);width:100%;font-size:var(--ffc-font-size-base);font-weight:600;font-family:inherit;color:var(--ffc-text);padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0;cursor:pointer;transition:background .15s;text-align:left}.ffc-audience-parent-header:hover{background:var(--ffc-bg-alt)}.ffc-audience-parent-header[aria-expanded=true]{border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0}.ffc-audience-parent-header[aria-expanded=false]{border-radius:var(--ffc-radius-md)}.ffc-audience-header-name{flex:1}.ffc-audience-toggle-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:var(--ffc-font-size-lg);font-weight:700;color:var(--ffc-text-muted);line-height:1}.ffc-audience-children-list.ffc-audience-collapsed{display:none}.ffc-audience-subgroup{margin-bottom:0}.ffc-audience-subgroup .ffc-audience-parent-header{font-size:var(--ffc-font-size-sm);font-weight:500;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg) var(--ffc-spacing-md) 28px;min-height:44px;box-sizing:border-box;background:var(--ffc-bg);border-radius:0;border-bottom:1px solid var(--ffc-border-light);border-top:none;border-left:none;border-right:none}.ffc-audience-subgroup .ffc-audience-parent-header[aria-expanded=false],.ffc-audience-subgroup .ffc-audience-parent-header[aria-expanded=true]{border-radius:0}.ffc-audience-subgroup .ffc-audience-children-list{border:none;border-radius:0}.ffc-audience-subgroup .ffc-audience-join-item{padding-left:42px}.ffc-audience-children-list{display:flex;flex-direction:column;border-left:1px solid var(--ffc-border-light);border-right:1px solid var(--ffc-border-light);border-bottom:1px solid var(--ffc-border-light);border-radius:0 0 var(--ffc-radius-md) var(--ffc-radius-md);overflow:hidden}.ffc-audience-join-item{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg) var(--ffc-spacing-md) 28px;min-height:44px;box-sizing:border-box;background:var(--ffc-bg);border-bottom:1px solid var(--ffc-border-light);transition:background .15s}.ffc-audience-join-item:last-child{border-bottom:none}.ffc-audience-join-item:hover{background:var(--ffc-bg-alt)}.ffc-audience-join-item .ffc-audience-name{font-weight:500;font-size:var(--ffc-font-size-base);color:var(--ffc-text);display:flex;align-items:center;gap:var(--ffc-spacing-md)}.ffc-audience-dot{width:12px;height:12px;border-radius:var(--ffc-radius-full);display:inline-block;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.ffc-audience-join-item .button{flex-shrink:0;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xs);font-weight:500;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all .15s;line-height:1.4}.ffc-audience-join-item .button.button-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-audience-join-item .button.button-primary:hover{background:var(--ffc-primary-hover)}.ffc-audience-join-item .button.button-primary:disabled{background:var(--ffc-border);border-color:var(--ffc-border);cursor:not-allowed;opacity:.7}.ffc-audience-join-item .ffc-audience-leave-btn{background:0 0;color:var(--ffc-danger);border:1px solid var(--ffc-danger)}.ffc-audience-join-item .ffc-audience-leave-btn:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-audience-join-item.is-member{background:var(--ffc-primary-light);border-color:var(--ffc-border-focus)}.ffc-audience-item-actions{display:flex;align-items:center;gap:var(--ffc-spacing-sm);flex-shrink:0}.ffc-audience-inline-toggle{background:0 0;border:none;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center}.ffc-notif-list{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-toggle-label{display:flex;align-items:center;gap:var(--ffc-spacing-lg);cursor:pointer;font-size:var(--ffc-font-size-base);color:var(--ffc-text);padding:var(--ffc-spacing-xs) 0}.ffc-toggle-label input[type=checkbox]{display:none}.ffc-toggle-switch{position:relative;width:40px;height:22px;background:var(--ffc-border);border-radius:11px;transition:background .2s;flex-shrink:0}.ffc-toggle-switch::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:var(--ffc-radius-full);transition:transform .2s;box-shadow:var(--ffc-shadow-sm)}.ffc-toggle-label input:checked+.ffc-toggle-switch{background:var(--ffc-primary)}.ffc-toggle-label input:checked+.ffc-toggle-switch::after{transform:translateX(18px)}.ffc-lgpd-section .ffc-lgpd-desc{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);margin:0 0 var(--ffc-spacing-md) 0;line-height:1.5}.ffc-lgpd-export-btn{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl)!important;font-size:var(--ffc-font-size-sm)!important;border-radius:var(--ffc-radius-md)!important}.ffc-lgpd-delete-btn{color:var(--ffc-danger)!important;border-color:var(--ffc-danger)!important;padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl)!important;font-size:var(--ffc-font-size-sm)!important;border-radius:var(--ffc-radius-md)!important}.ffc-lgpd-delete-btn:hover{background:var(--ffc-danger)!important;color:var(--ffc-text-on-danger)!important}.ffc-profile-edit-form{border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt)}.ffc-profile-edit-form h3{margin:0 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-profile-edit-form .ffc-profile-field{padding:0;border:none;margin-bottom:var(--ffc-spacing-lg)}.ffc-profile-edit-form .ffc-profile-field label{font-size:var(--ffc-font-size-sm);text-transform:none;letter-spacing:0;font-weight:600;color:var(--ffc-text);margin-bottom:var(--ffc-spacing-2xs)}.ffc-profile-edit-form input[type=tel],.ffc-profile-edit-form input[type=text],.ffc-profile-edit-form textarea{color:var(--ffc-text);width:100%;max-width:450px;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);transition:border-color .15s,box-shadow .15s}.ffc-profile-edit-form input:focus,.ffc-profile-edit-form textarea:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-profile-edit-form textarea{resize:vertical;font-family:inherit}.ffc-profile-edit-actions{display:flex;align-items:center;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl)}.ffc-profile-edit-actions .button{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);border-radius:var(--ffc-radius-md)}.ffc-pagination{display:flex;align-items:center;justify-content:center;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl);padding-top:var(--ffc-spacing-lg);border-top:1px solid var(--ffc-border-light)}.ffc-pagination-btn{padding:var(--ffc-spacing-xs) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);font-weight:500;background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background .15s;line-height:1.4}.ffc-pagination-btn:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-pagination-btn:disabled{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text-muted);cursor:not-allowed}.ffc-pagination-info{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-appointments-table{overflow:visible}.ffc-cal-export-wrap{position:relative;display:inline-block;vertical-align:middle}.ffc-cal-export-btn{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-xs);line-height:1.4;background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);cursor:pointer;white-space:nowrap;transition:background .15s}.ffc-cal-export-btn:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover);color:var(--ffc-text-on-primary)}.ffc-cal-export-btn svg{flex-shrink:0}.ffc-cal-export-dropdown{display:none;position:absolute;right:0;top:100%;margin-top:var(--ffc-spacing-2xs);min-width:200px;background:var(--ffc-bg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);box-shadow:var(--ffc-shadow-md);z-index:var(--ffc-z-overlay);overflow:hidden}.ffc-cal-export-dropdown.is-open{display:block}.ffc-cal-export-dropdown a{display:flex;align-items:center;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);color:var(--ffc-text);text-decoration:none;font-size:var(--ffc-font-size-sm);transition:background .15s;border-bottom:1px solid var(--ffc-border-light)}.ffc-cal-export-dropdown a:last-child{border-bottom:none}.ffc-cal-export-dropdown a:hover{background:var(--ffc-primary-light)}.ffc-cal-export-dropdown a svg{flex-shrink:0}.ffc-error{background:var(--ffc-danger-bg);border-left:4px solid var(--ffc-danger);color:var(--ffc-danger-text);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);margin:var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-base)}.ffc-empty-state p{font-size:var(--ffc-font-size-lg);margin:var(--ffc-spacing-sm) 0}@media (max-width:768px){.ffc-user-dashboard{padding:var(--ffc-spacing-xl);margin:var(--ffc-spacing-lg) auto}.ffc-dashboard-summary{grid-template-columns:1fr}.ffc-filter-bar{flex-direction:column;align-items:stretch;gap:var(--ffc-spacing-md)}.ffc-filter-bar label{flex-direction:column;align-items:stretch}.ffc-filter-bar input[type=text]{min-width:0;width:100%}.ffc-filter-bar input[type=date]{width:100%}.ffc-filter-bar .button{width:100%;text-align:center;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg)}.ffc-page-size-select{margin-left:0;text-align:center}.ffc-dashboard-tabs{flex-direction:column;gap:0;border-bottom:none}.ffc-tab{border-bottom:1px solid var(--ffc-border-light);border-radius:0;text-align:left;margin-bottom:0}.ffc-tab.is-active{border-left:3px solid var(--ffc-primary);border-bottom:1px solid var(--ffc-border-light);background:var(--ffc-primary-light)}.ffc-profile-info{grid-template-columns:1fr}.ffc-profile-field{border-right:none}.ffc-profile-field:last-child{border-bottom:none}.ffc-profile-actions{flex-direction:column}.ffc-profile-actions .button{justify-content:center}.ffc-appointments-table,.ffc-audience-bookings-table,.ffc-certificates-table,.ffc-reregistrations-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.ffc-certificates-table tbody,.ffc-certificates-table thead,.ffc-certificates-table tr{display:table;width:100%;table-layout:fixed}.ffc-certificates-table td,.ffc-certificates-table th{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xs);font-size:var(--ffc-font-size-xs)}.ffc-certificates-table td:nth-child(5){font-size:10px}.ffc-certificates-table .button{padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-2xs)}}#ffc-tabpanel-recruitment .ffc-recruitment-my-calls>h2{margin:0 0 var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xl);font-weight:600;color:var(--ffc-text)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice{border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice header{margin-bottom:var(--ffc-spacing-lg);border-bottom:1px solid var(--ffc-border-light);padding-bottom:var(--ffc-spacing-lg)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice header h3{margin:0 0 var(--ffc-spacing-sm);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice h4{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-secondary);text-transform:uppercase;letter-spacing:.3px}#ffc-tabpanel-recruitment .ffc-recruitment-banner{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-md);border-radius:var(--ffc-radius-md);font-size:var(--ffc-font-size-xs);font-weight:500}#ffc-tabpanel-recruitment .ffc-banner-preliminary{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}#ffc-tabpanel-recruitment .ffc-banner-definitive{background:var(--ffc-success-bg);color:var(--ffc-success-text)}@media (prefers-reduced-motion:reduce){.ffc-tab-content{animation:none}.ffc-loading::after{animation:none}.ffc-tab{transition:none}.ffc-audience-join-item{transition:none}.ffc-password-form input{transition:none}}@media (forced-colors:active){.ffc-dashboard-status.ffc-dashboard-status-approved,.ffc-dashboard-status.ffc-dashboard-status-cancelled,.ffc-dashboard-status.ffc-dashboard-status-completed,.ffc-dashboard-status.ffc-dashboard-status-confirmed,.ffc-dashboard-status.ffc-dashboard-status-expired,.ffc-dashboard-status.ffc-dashboard-status-in_progress,.ffc-dashboard-status.ffc-dashboard-status-no_show,.ffc-dashboard-status.ffc-dashboard-status-pending,.ffc-dashboard-status.ffc-dashboard-status-rejected,.ffc-dashboard-status.ffc-dashboard-status-submitted{border:1px solid CanvasText}}.ffc-set-password-card{max-width:420px;margin:0 auto;padding:var(--ffc-spacing-3xl);background:var(--ffc-bg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-lg)}.ffc-set-password-card h2{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-xl);color:var(--ffc-text)}.ffc-set-password-card>p{margin:0 0 var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-base);color:var(--ffc-text-secondary)}.ffc-set-password-field{margin:0 0 var(--ffc-spacing-xl) 0}.ffc-set-password-field label{display:block;margin-bottom:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-sm);font-weight:600;color:var(--ffc-text)}.ffc-set-password-field input[type=password]{width:100%;box-sizing:border-box;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-set-password-actions{margin:0}.ffc-set-password-actions .button{width:100%;padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-base);font-weight:600;text-align:center;vertical-align:middle}
+.ffc-user-dashboard{max-width:1500px;margin:var(--ffc-spacing-2xl) auto;padding:var(--ffc-spacing-3xl);background:var(--ffc-bg);border-radius:var(--ffc-radius-lg);box-shadow:var(--ffc-shadow-md);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;color:var(--ffc-text)}.ffc-dashboard-notice{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-2xl);border-radius:var(--ffc-radius-md);border-left:4px solid var(--ffc-border);font-size:var(--ffc-font-size-base);line-height:1.5}.ffc-notice-info{background:var(--ffc-info-bg);border-left-color:var(--ffc-primary);color:var(--ffc-info-text)}.ffc-notice-warning{background:var(--ffc-warning-bg);border-left-color:var(--ffc-warning);color:var(--ffc-warning-text)}.ffc-notice-admin-viewing{background:var(--ffc-warning-bg);border-left-color:var(--ffc-warning-border);color:var(--ffc-warning-text);font-weight:600}.ffc-notice-admin-viewing strong{color:var(--ffc-warning-text)}.ffc-dashboard-notice p{margin:.4em 0}.ffc-dashboard-notice .button{margin-top:var(--ffc-spacing-sm)}.ffc-dashboard-tabs{display:flex;gap:var(--ffc-spacing-3xs);margin-bottom:var(--ffc-spacing-3xl);border-bottom:2px solid var(--ffc-border-light)}.ffc-tab{padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);background:0 0;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:var(--ffc-font-size-base);font-weight:500;color:var(--ffc-text-muted);transition:color .2s,border-color .2s,background .2s;border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0;margin-bottom:-2px;white-space:nowrap}.ffc-tab:hover{color:var(--ffc-text);background:var(--ffc-bg-alt)}.ffc-tab.is-active{color:var(--ffc-primary);border-bottom-color:var(--ffc-primary);font-weight:600;background:0 0}.ffc-tab-content{display:none;padding:var(--ffc-spacing-2xs) 0;animation:ffcFadeIn .25s ease}.ffc-tab-content.is-active{display:block}@keyframes ffcFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.ffc-loading{text-align:center;padding:48px var(--ffc-spacing-2xl);color:var(--ffc-text-muted);font-size:var(--ffc-font-size-base)}.ffc-loading::after{content:'';display:inline-block;width:18px;height:18px;margin-left:var(--ffc-spacing-sm);border:2px solid var(--ffc-border);border-top-color:var(--ffc-primary);border-radius:var(--ffc-radius-full);animation:ffcSpin .8s linear infinite;vertical-align:middle}@keyframes ffcSpin{to{transform:rotate(360deg)}}.ffc-dashboard-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--ffc-spacing-lg);margin-bottom:var(--ffc-spacing-3xl)}.ffc-dashboard-summary:empty{display:none}.ffc-summary-card{background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-lg);padding:var(--ffc-spacing-xl) var(--ffc-spacing-xl);text-align:center;transition:box-shadow .2s,border-color .2s}.ffc-summary-card:hover{border-color:var(--ffc-border);box-shadow:var(--ffc-shadow-sm)}.ffc-summary-number{font-size:28px;font-weight:700;color:var(--ffc-primary);line-height:1.2}.ffc-summary-number.ffc-summary-date{font-size:var(--ffc-font-size-lg);font-weight:600}.ffc-summary-detail{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);margin-top:var(--ffc-spacing-3xs)}.ffc-summary-label{font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.6px;font-weight:600;margin-top:var(--ffc-spacing-sm)}.ffc-filter-bar{display:flex;align-items:center;gap:var(--ffc-spacing-sm);flex-wrap:wrap;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md)}.ffc-filter-bar label{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);display:flex;align-items:center;gap:var(--ffc-spacing-xs);font-weight:500}.ffc-filter-bar input[type=date],.ffc-filter-bar input[type=text]{padding:var(--ffc-spacing-xs) var(--ffc-spacing-md);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-sm);background:var(--ffc-bg);color:var(--ffc-text);transition:border-color .15s,box-shadow .15s}.ffc-filter-bar input[type=date]:focus,.ffc-filter-bar input[type=text]:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-filter-bar input[type=text]{min-width:160px}.ffc-filter-bar .button{padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-sm);font-weight:500;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all .15s;line-height:1.4}.ffc-filter-bar .ffc-filter-apply{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-filter-bar .ffc-filter-apply:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-filter-bar .ffc-filter-clear{background:var(--ffc-bg);color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-filter-bar .ffc-filter-clear:hover{background:var(--ffc-bg-alt);color:var(--ffc-text)}.ffc-page-size-select{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted);margin-left:auto}.ffc-page-size-select a{color:var(--ffc-primary);text-decoration:none;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-xs);border-radius:var(--ffc-radius-xs);transition:background .15s}.ffc-page-size-select a:hover{background:var(--ffc-primary-light)}.ffc-page-size-select strong{color:var(--ffc-text);background:var(--ffc-primary-light);padding:var(--ffc-spacing-3xs) var(--ffc-spacing-sm);border-radius:var(--ffc-radius-xs);font-weight:600}.ffc-appointments-table,.ffc-audience-bookings-table,.ffc-certificates-table,.ffc-recruitment-table,.ffc-reregistrations-table{width:100%;border-collapse:separate;border-spacing:0;margin-top:0;border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);overflow:hidden}.ffc-appointments-table th,.ffc-audience-bookings-table th,.ffc-certificates-table th,.ffc-recruitment-table th,.ffc-reregistrations-table th{background:var(--ffc-bg-alt);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);text-align:left;font-weight:600;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--ffc-border-light)}.ffc-appointments-table td,.ffc-audience-bookings-table td,.ffc-certificates-table td,.ffc-recruitment-table td,.ffc-reregistrations-table td{padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);border-bottom:1px solid var(--ffc-border-light);vertical-align:middle;font-size:var(--ffc-font-size-sm);color:var(--ffc-text)}.ffc-appointments-table tr:last-child td,.ffc-audience-bookings-table tr:last-child td,.ffc-certificates-table tr:last-child td,.ffc-recruitment-table tr:last-child td,.ffc-reregistrations-table tr:last-child td{border-bottom:none}.ffc-appointments-table tbody tr:hover,.ffc-audience-bookings-table tbody tr:hover,.ffc-certificates-table tbody tr:hover,.ffc-recruitment-table tbody tr:hover,.ffc-reregistrations-table tbody tr:hover{background:var(--ffc-primary-light)}.ffc-certificates-table{table-layout:fixed}.ffc-certificates-table td:first-child,.ffc-certificates-table th:first-child{width:20%}.ffc-certificates-table td:nth-child(2),.ffc-certificates-table th:nth-child(2){width:13%}.ffc-certificates-table td:nth-child(3),.ffc-certificates-table th:nth-child(3){width:15%;text-align:center}.ffc-certificates-table td:nth-child(4),.ffc-certificates-table th:nth-child(4){width:22%;word-break:break-all}.ffc-certificates-table td:nth-child(5),.ffc-certificates-table th:nth-child(5){width:17%}.ffc-certificates-table td:nth-child(5){font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-2xs);font-weight:500;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ffc-certificates-table td:nth-child(6),.ffc-certificates-table th:nth-child(6){width:13%;text-align:center}.ffc-certificates-table .ffc-consent-yes{color:var(--ffc-success);font-weight:600}.ffc-certificates-table .ffc-consent-no{color:var(--ffc-danger);font-weight:600}.ffc-btn-edit,.ffc-btn-pdf,.ffc-btn-receipt{display:inline-flex!important;align-items:center;vertical-align:middle;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg)!important;font-size:var(--ffc-font-size-xs)!important;font-weight:500;text-decoration:none!important;white-space:nowrap;border-radius:var(--ffc-radius-sm)!important;transition:all .15s;line-height:1.4;cursor:pointer}.ffc-btn-pdf{background:var(--ffc-danger)!important;color:var(--ffc-text-on-danger)!important;border:1px solid var(--ffc-danger)!important}.ffc-btn-pdf:hover{background:var(--ffc-danger-hover)!important;border-color:var(--ffc-danger-hover)!important;color:var(--ffc-text-on-danger)!important}.ffc-btn-pdf::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0H4zm5.5 1.5v3h3l-3-3zM5.5 8a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H6.75v1h.75a.5.5 0 0 1 0 1h-.75v1.5a.5.5 0 0 1-1 0V8zm3.5-.5a.5.5 0 0 0-.5.5v3.5a.5.5 0 0 0 .5.5h.5a1.5 1.5 0 0 0 0-3H9.5v-1a.5.5 0 0 0-.5-.5z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0H4zm5.5 1.5v3h3l-3-3zM5.5 8a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H6.75v1h.75a.5.5 0 0 1 0 1h-.75v1.5a.5.5 0 0 1-1 0V8zm3.5-.5a.5.5 0 0 0-.5.5v3.5a.5.5 0 0 0 .5.5h.5a1.5 1.5 0 0 0 0-3H9.5v-1a.5.5 0 0 0-.5-.5z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-btn-receipt{background:var(--ffc-primary)!important;color:var(--ffc-text-on-primary)!important;border:1px solid var(--ffc-primary)!important}.ffc-btn-receipt:hover{background:var(--ffc-primary-hover)!important;border-color:var(--ffc-primary-hover)!important;color:var(--ffc-text-on-primary)!important}.ffc-btn-receipt::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 13 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27zM4 5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1H4z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M1.92.506a.5.5 0 0 1 .434.14L3 1.293l.646-.647a.5.5 0 0 1 .708 0L5 1.293l.646-.647a.5.5 0 0 1 .708 0L7 1.293l.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .801.13l.5 1A.5.5 0 0 1 13 2v12a.5.5 0 0 1-.053.224l-.5 1a.5.5 0 0 1-.8.13L11 14.707l-.646.647a.5.5 0 0 1-.708 0L9 14.707l-.646.647a.5.5 0 0 1-.708 0L7 14.707l-.646.647a.5.5 0 0 1-.708 0L5 14.707l-.646.647a.5.5 0 0 1-.708 0L3 14.707l-.646.647a.5.5 0 0 1-.801-.13l-.5-1A.5.5 0 0 1 1 14V2a.5.5 0 0 1 .053-.224l.5-1a.5.5 0 0 1 .367-.27zM4 5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h8a.5.5 0 0 0 0-1H4zm0 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1H4z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-btn-edit{background:var(--ffc-primary)!important;color:var(--ffc-text-on-primary)!important;border:1px solid var(--ffc-primary)!important}.ffc-btn-edit:hover{background:var(--ffc-primary-hover)!important;border-color:var(--ffc-primary-hover)!important;color:var(--ffc-text-on-primary)!important}.ffc-btn-edit::before{content:'';display:inline-block;width:14px;height:14px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z'/%3E%3C/svg%3E") no-repeat center;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z'/%3E%3C/svg%3E") no-repeat center;flex-shrink:0}.ffc-appointments-table td:last-child,.ffc-certificates-table td:last-child,.ffc-reregistrations-table td:last-child{white-space:nowrap}.ffc-appointments-table td:last-child>*+*,.ffc-reregistrations-table td:last-child>*+*{margin-left:var(--ffc-spacing-xs)}.ffc-dashboard-status{padding:3px var(--ffc-spacing-md);border-radius:10px;font-size:var(--ffc-font-size-2xs);font-weight:600;display:inline-block;letter-spacing:.2px;text-transform:capitalize}.ffc-dashboard-status.ffc-dashboard-status-pending{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-dashboard-status.ffc-dashboard-status-confirmed{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-dashboard-status.ffc-dashboard-status-cancelled{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-dashboard-status.ffc-dashboard-status-completed{background:var(--ffc-info-bg);color:var(--ffc-info-text)}.ffc-dashboard-status.ffc-dashboard-status-no_show{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-appointments-table .ffc-cancel-appointment{display:inline-block;vertical-align:middle;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-xs);line-height:1.4;min-height:0;background:0 0;color:var(--ffc-danger);border:1px solid var(--ffc-danger);border-radius:var(--ffc-radius-sm);cursor:pointer;white-space:nowrap;transition:all .15s}.ffc-appointments-table .ffc-cancel-appointment:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-appointments-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-appointments-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-appointments-table .ffc-row-cancelled{background:var(--ffc-danger-bg)}.ffc-appointments-table .ffc-row-cancelled td{color:var(--ffc-text-muted)}#ffc-tabpanel-appointments h3,#ffc-tabpanel-audience h3,#ffc-tabpanel-reregistrations h3{margin-top:0;margin-bottom:var(--ffc-spacing-lg);color:var(--ffc-text);font-size:var(--ffc-font-size-lg);font-weight:600;border-bottom:1px solid var(--ffc-border-light);padding-bottom:var(--ffc-spacing-md)}.ffc-audience-bookings-table td:first-child,.ffc-audience-bookings-table th:first-child{width:17%}.ffc-audience-bookings-table td:nth-child(2),.ffc-audience-bookings-table th:nth-child(2){width:12%}.ffc-audience-bookings-table td:nth-child(3),.ffc-audience-bookings-table th:nth-child(3){width:10%}.ffc-audience-bookings-table td:nth-child(4),.ffc-audience-bookings-table th:nth-child(4){width:24%}.ffc-audience-bookings-table td:nth-child(5),.ffc-audience-bookings-table th:nth-child(5){width:17%}.ffc-audience-bookings-table td:nth-child(6),.ffc-audience-bookings-table th:nth-child(6){width:20%}.ffc-audience-bookings-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-audience-bookings-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-audience-bookings-table .ffc-row-cancelled{background:var(--ffc-danger-bg)}.ffc-audience-bookings-table .ffc-row-cancelled td{color:var(--ffc-text-muted)}.ffc-audience-bookings-table .ffc-audience-tag{display:block;margin-bottom:var(--ffc-spacing-2xs)}.ffc-audience-bookings-table .ffc-audience-tag:last-child{margin-bottom:0}.ffc-reregistrations-table.ffc-table-past td{color:var(--ffc-text-muted)}.ffc-reregistrations-table .ffc-row-past{background:var(--ffc-bg-alt)}.ffc-reregistrations-table .ffc-auth-code{font-family:'Courier New',Courier,monospace;font-size:var(--ffc-font-size-xs);font-weight:600;letter-spacing:.5px;background:var(--ffc-bg-alt);padding:3px var(--ffc-spacing-sm);border-radius:var(--ffc-radius-sm);border:1px solid var(--ffc-border-light);white-space:nowrap}.ffc-dashboard-status.ffc-dashboard-status-submitted{background:var(--ffc-primary-light);color:var(--ffc-primary-hover)}.ffc-dashboard-status.ffc-dashboard-status-approved{background:var(--ffc-success-bg);color:var(--ffc-success-text)}.ffc-dashboard-status.ffc-dashboard-status-rejected{background:var(--ffc-danger-bg);color:var(--ffc-danger-text)}.ffc-dashboard-status.ffc-dashboard-status-expired{background:var(--ffc-bg-alt);color:var(--ffc-text-secondary)}.ffc-dashboard-status.ffc-dashboard-status-in_progress{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}.ffc-profile-logout{text-align:right;margin-bottom:var(--ffc-spacing-lg)}.ffc-logout-link{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);color:var(--ffc-text-secondary);text-decoration:none;font-size:var(--ffc-font-size-sm);font-weight:500;padding:var(--ffc-spacing-xs) var(--ffc-spacing-lg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg);transition:all .2s ease}.ffc-logout-link:hover{color:var(--ffc-danger-text);border-color:var(--ffc-danger);background:var(--ffc-danger-bg)}.ffc-logout-link .ffc-icon-logout{display:inline-flex}.ffc-logout-link .ffc-icon-logout::before{margin-right:0}.ffc-profile-info{background:var(--ffc-bg);padding:0;border-radius:var(--ffc-radius-md);margin-top:0;display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--ffc-border-light);overflow:hidden}.ffc-profile-field{padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);margin:0;border-bottom:1px solid var(--ffc-border-light);border-right:1px solid var(--ffc-border-light)}.ffc-profile-field:nth-child(2n){border-right:none}.ffc-profile-field:last-child,.ffc-profile-field:nth-last-child(2):nth-child(odd){border-bottom:none}.ffc-profile-field:last-child:nth-child(2n){border-bottom:none}.ffc-profile-field label{display:block;font-size:var(--ffc-font-size-2xs);font-weight:600;color:var(--ffc-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--ffc-spacing-2xs)}.ffc-profile-field .ffc-field-value{color:var(--ffc-text);font-size:var(--ffc-font-size-base);font-weight:500;line-height:1.5}.ffc-profile-field .ffc-cpf-list,.ffc-profile-field .ffc-email-list,.ffc-profile-field .ffc-name-list{list-style:none;padding:0;margin:0}.ffc-profile-field .ffc-cpf-list li,.ffc-profile-field .ffc-email-list li,.ffc-profile-field .ffc-name-list li{padding:var(--ffc-spacing-3xs) 0;color:var(--ffc-text);font-size:var(--ffc-font-size-base);font-weight:500}.ffc-profile-field .ffc-cpf-list li::before,.ffc-profile-field .ffc-email-list li::before,.ffc-profile-field .ffc-name-list li::before{content:'';display:inline-block;width:6px;height:6px;border-radius:var(--ffc-radius-full);background:var(--ffc-primary);margin-right:var(--ffc-spacing-sm);vertical-align:middle}.ffc-profile-actions{display:flex;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl)}.ffc-profile-actions .button{padding:9px var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);font-weight:500;border-radius:var(--ffc-radius-md);cursor:pointer;transition:all .15s;line-height:1.4;text-decoration:none;display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs)}.ffc-profile-actions .button-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);box-shadow:var(--ffc-shadow-sm)}.ffc-profile-actions .button-primary:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-profile-actions .button:not(.button-primary){background:var(--ffc-bg);color:var(--ffc-text-secondary);border:1px solid var(--ffc-border)}.ffc-profile-actions .button:not(.button-primary):hover{background:var(--ffc-bg-alt);color:var(--ffc-text);border-color:var(--ffc-border)}.ffc-profile-actions .ffc-leave-all-groups-btn{color:var(--ffc-danger-text);border-color:var(--ffc-danger)}.ffc-profile-actions .ffc-leave-all-groups-btn:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger);border-color:var(--ffc-danger)}.ffc-password-form{margin-top:var(--ffc-spacing-lg);padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md)}.ffc-password-form .ffc-profile-field{padding:0;border:none;margin-bottom:var(--ffc-spacing-lg)}.ffc-password-form .ffc-profile-field label{font-size:var(--ffc-font-size-sm);text-transform:none;letter-spacing:0;font-weight:600;color:var(--ffc-text);margin-bottom:var(--ffc-spacing-2xs)}.ffc-password-form input[type=password]{color:var(--ffc-text);width:100%;max-width:340px;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);transition:border-color .15s,box-shadow .15s}.ffc-password-form input[type=password]:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-password-form .button-primary{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);border-radius:var(--ffc-radius-md)}.ffc-profile-section{margin-top:var(--ffc-spacing-3xl);padding-top:var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-border-light)}.ffc-profile-section h3{font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);margin:0 0 var(--ffc-spacing-lg) 0}.ffc-audience-join-section{margin-top:var(--ffc-spacing-3xl);padding-top:var(--ffc-spacing-2xl);border-top:1px solid var(--ffc-border-light)}.ffc-audience-join-section h3{font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text);margin:0 0 var(--ffc-spacing-xs) 0}.ffc-audience-limit-msg{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted);margin:0 0 var(--ffc-spacing-xl) 0}.ffc-audience-parent-group{margin-bottom:var(--ffc-spacing-xl)}.ffc-audience-parent-group:last-child{margin-bottom:0}.ffc-audience-parent-header{display:flex;align-items:center;gap:var(--ffc-spacing-md);width:100%;font-size:var(--ffc-font-size-base);font-weight:600;font-family:inherit;color:var(--ffc-text);padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0;cursor:pointer;transition:background .15s;text-align:left}.ffc-audience-parent-header:hover{background:var(--ffc-bg-alt)}.ffc-audience-parent-header[aria-expanded=true]{border-radius:var(--ffc-radius-md) var(--ffc-radius-md) 0 0}.ffc-audience-parent-header[aria-expanded=false]{border-radius:var(--ffc-radius-md)}.ffc-audience-header-name{flex:1}.ffc-audience-toggle-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:var(--ffc-font-size-lg);font-weight:700;color:var(--ffc-text-muted);line-height:1}.ffc-audience-children-list.ffc-audience-collapsed{display:none}.ffc-audience-subgroup{margin-bottom:0}.ffc-audience-subgroup .ffc-audience-parent-header{font-size:var(--ffc-font-size-sm);font-weight:500;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg) var(--ffc-spacing-md) 28px;min-height:44px;box-sizing:border-box;background:var(--ffc-bg);border-radius:0;border-bottom:1px solid var(--ffc-border-light);border-top:none;border-left:none;border-right:none}.ffc-audience-subgroup .ffc-audience-parent-header[aria-expanded=false],.ffc-audience-subgroup .ffc-audience-parent-header[aria-expanded=true]{border-radius:0}.ffc-audience-subgroup .ffc-audience-children-list{border:none;border-radius:0}.ffc-audience-subgroup .ffc-audience-join-item{padding-left:42px}.ffc-audience-children-list{display:flex;flex-direction:column;border-left:1px solid var(--ffc-border-light);border-right:1px solid var(--ffc-border-light);border-bottom:1px solid var(--ffc-border-light);border-radius:0 0 var(--ffc-radius-md) var(--ffc-radius-md);overflow:hidden}.ffc-audience-join-item{display:flex;align-items:center;justify-content:space-between;padding:var(--ffc-spacing-md) var(--ffc-spacing-lg) var(--ffc-spacing-md) 28px;min-height:44px;box-sizing:border-box;background:var(--ffc-bg);border-bottom:1px solid var(--ffc-border-light);transition:background .15s}.ffc-audience-join-item:last-child{border-bottom:none}.ffc-audience-join-item:hover{background:var(--ffc-bg-alt)}.ffc-audience-join-item .ffc-audience-name{font-weight:500;font-size:var(--ffc-font-size-base);color:var(--ffc-text);display:flex;align-items:center;gap:var(--ffc-spacing-md)}.ffc-audience-dot{width:12px;height:12px;border-radius:var(--ffc-radius-full);display:inline-block;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.ffc-audience-join-item .button{flex-shrink:0;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xs);font-weight:500;border-radius:var(--ffc-radius-sm);cursor:pointer;transition:all .15s;line-height:1.4}.ffc-audience-join-item .button.button-primary{background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary)}.ffc-audience-join-item .button.button-primary:hover{background:var(--ffc-primary-hover)}.ffc-audience-join-item .button.button-primary:disabled{background:var(--ffc-border);border-color:var(--ffc-border);cursor:not-allowed;opacity:.7}.ffc-audience-join-item .ffc-audience-leave-btn{background:0 0;color:var(--ffc-danger);border:1px solid var(--ffc-danger)}.ffc-audience-join-item .ffc-audience-leave-btn:hover{background:var(--ffc-danger);color:var(--ffc-text-on-danger)}.ffc-audience-join-item.is-member{background:var(--ffc-primary-light);border-color:var(--ffc-border-focus)}.ffc-audience-item-actions{display:flex;align-items:center;gap:var(--ffc-spacing-sm);flex-shrink:0}.ffc-audience-inline-toggle{background:0 0;border:none;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center}.ffc-notif-list{display:flex;flex-direction:column;gap:var(--ffc-spacing-md)}.ffc-lgpd-section .ffc-lgpd-desc{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-secondary);margin:0 0 var(--ffc-spacing-md) 0;line-height:1.5}.ffc-lgpd-export-btn{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl)!important;font-size:var(--ffc-font-size-sm)!important;border-radius:var(--ffc-radius-md)!important}.ffc-lgpd-delete-btn{color:var(--ffc-danger)!important;border-color:var(--ffc-danger)!important;padding:var(--ffc-spacing-sm) var(--ffc-spacing-xl)!important;font-size:var(--ffc-font-size-sm)!important;border-radius:var(--ffc-radius-md)!important}.ffc-lgpd-delete-btn:hover{background:var(--ffc-danger)!important;color:var(--ffc-text-on-danger)!important}.ffc-profile-edit-form{border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);padding:var(--ffc-spacing-2xl);background:var(--ffc-bg-alt)}.ffc-profile-edit-form h3{margin:0 0 var(--ffc-spacing-xl) 0;font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}.ffc-profile-edit-form .ffc-profile-field{padding:0;border:none;margin-bottom:var(--ffc-spacing-lg)}.ffc-profile-edit-form .ffc-profile-field label{font-size:var(--ffc-font-size-sm);text-transform:none;letter-spacing:0;font-weight:600;color:var(--ffc-text);margin-bottom:var(--ffc-spacing-2xs)}.ffc-profile-edit-form input[type=tel],.ffc-profile-edit-form input[type=text],.ffc-profile-edit-form textarea{color:var(--ffc-text);width:100%;max-width:450px;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);transition:border-color .15s,box-shadow .15s}.ffc-profile-edit-form input:focus,.ffc-profile-edit-form textarea:focus{border-color:var(--ffc-primary);box-shadow:0 0 0 1px var(--ffc-primary);outline:0}.ffc-profile-edit-form textarea{resize:vertical;font-family:inherit}.ffc-profile-edit-actions{display:flex;align-items:center;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl)}.ffc-profile-edit-actions .button{padding:var(--ffc-spacing-sm) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-sm);border-radius:var(--ffc-radius-md)}.ffc-pagination{display:flex;align-items:center;justify-content:center;gap:var(--ffc-spacing-md);margin-top:var(--ffc-spacing-xl);padding-top:var(--ffc-spacing-lg);border-top:1px solid var(--ffc-border-light)}.ffc-pagination-btn{padding:var(--ffc-spacing-xs) var(--ffc-spacing-xl);font-size:var(--ffc-font-size-sm);font-weight:500;background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);cursor:pointer;transition:background .15s;line-height:1.4}.ffc-pagination-btn:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover)}.ffc-pagination-btn:disabled{background:var(--ffc-bg-alt);border-color:var(--ffc-border);color:var(--ffc-text-muted);cursor:not-allowed}.ffc-pagination-info{font-size:var(--ffc-font-size-sm);color:var(--ffc-text-muted)}.ffc-appointments-table{overflow:visible}.ffc-cal-export-wrap{position:relative;display:inline-block;vertical-align:middle}.ffc-cal-export-btn{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);font-size:var(--ffc-font-size-xs);line-height:1.4;background:var(--ffc-primary);color:var(--ffc-text-on-primary);border:1px solid var(--ffc-primary);border-radius:var(--ffc-radius-sm);cursor:pointer;white-space:nowrap;transition:background .15s}.ffc-cal-export-btn:hover{background:var(--ffc-primary-hover);border-color:var(--ffc-primary-hover);color:var(--ffc-text-on-primary)}.ffc-cal-export-btn svg{flex-shrink:0}.ffc-cal-export-dropdown{display:none;position:absolute;right:0;top:100%;margin-top:var(--ffc-spacing-2xs);min-width:200px;background:var(--ffc-bg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);box-shadow:var(--ffc-shadow-md);z-index:var(--ffc-z-overlay);overflow:hidden}.ffc-cal-export-dropdown.is-open{display:block}.ffc-cal-export-dropdown a{display:flex;align-items:center;gap:var(--ffc-spacing-md);padding:var(--ffc-spacing-md) var(--ffc-spacing-lg);color:var(--ffc-text);text-decoration:none;font-size:var(--ffc-font-size-sm);transition:background .15s;border-bottom:1px solid var(--ffc-border-light)}.ffc-cal-export-dropdown a:last-child{border-bottom:none}.ffc-cal-export-dropdown a:hover{background:var(--ffc-primary-light)}.ffc-cal-export-dropdown a svg{flex-shrink:0}.ffc-error{background:var(--ffc-danger-bg);border-left:4px solid var(--ffc-danger);color:var(--ffc-danger-text);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-radius:var(--ffc-radius-md);margin:var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-base)}.ffc-empty-state p{font-size:var(--ffc-font-size-lg);margin:var(--ffc-spacing-sm) 0}@media (max-width:768px){.ffc-user-dashboard{padding:var(--ffc-spacing-xl);margin:var(--ffc-spacing-lg) auto}.ffc-dashboard-summary{grid-template-columns:1fr}.ffc-filter-bar{flex-direction:column;align-items:stretch;gap:var(--ffc-spacing-md)}.ffc-filter-bar label{flex-direction:column;align-items:stretch}.ffc-filter-bar input[type=text]{min-width:0;width:100%}.ffc-filter-bar input[type=date]{width:100%}.ffc-filter-bar .button{width:100%;text-align:center;padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg)}.ffc-page-size-select{margin-left:0;text-align:center}.ffc-dashboard-tabs{flex-direction:column;gap:0;border-bottom:none}.ffc-tab{border-bottom:1px solid var(--ffc-border-light);border-radius:0;text-align:left;margin-bottom:0}.ffc-tab.is-active{border-left:3px solid var(--ffc-primary);border-bottom:1px solid var(--ffc-border-light);background:var(--ffc-primary-light)}.ffc-profile-info{grid-template-columns:1fr}.ffc-profile-field{border-right:none}.ffc-profile-field:last-child{border-bottom:none}.ffc-profile-actions{flex-direction:column}.ffc-profile-actions .button{justify-content:center}.ffc-appointments-table,.ffc-audience-bookings-table,.ffc-certificates-table,.ffc-reregistrations-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.ffc-certificates-table tbody,.ffc-certificates-table thead,.ffc-certificates-table tr{display:table;width:100%;table-layout:fixed}.ffc-certificates-table td,.ffc-certificates-table th{padding:var(--ffc-spacing-sm) var(--ffc-spacing-xs);font-size:var(--ffc-font-size-xs)}.ffc-certificates-table td:nth-child(5){font-size:10px}.ffc-certificates-table .button{padding:var(--ffc-spacing-2xs) var(--ffc-spacing-sm);font-size:var(--ffc-font-size-2xs)}}#ffc-tabpanel-recruitment .ffc-recruitment-my-calls>h2{margin:0 0 var(--ffc-spacing-xl);font-size:var(--ffc-font-size-xl);font-weight:600;color:var(--ffc-text)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice{border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);padding:var(--ffc-spacing-xl);margin-bottom:var(--ffc-spacing-xl)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice header{margin-bottom:var(--ffc-spacing-lg);border-bottom:1px solid var(--ffc-border-light);padding-bottom:var(--ffc-spacing-lg)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice header h3{margin:0 0 var(--ffc-spacing-sm);font-size:var(--ffc-font-size-lg);font-weight:600;color:var(--ffc-text)}#ffc-tabpanel-recruitment .ffc-recruitment-my-notice h4{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-sm);font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-text-secondary);text-transform:uppercase;letter-spacing:.3px}#ffc-tabpanel-recruitment .ffc-recruitment-banner{display:inline-block;padding:var(--ffc-spacing-2xs) var(--ffc-spacing-md);border-radius:var(--ffc-radius-md);font-size:var(--ffc-font-size-xs);font-weight:500}#ffc-tabpanel-recruitment .ffc-banner-preliminary{background:var(--ffc-warning-bg);color:var(--ffc-warning-text)}#ffc-tabpanel-recruitment .ffc-banner-definitive{background:var(--ffc-success-bg);color:var(--ffc-success-text)}@media (prefers-reduced-motion:reduce){.ffc-tab-content{animation:none}.ffc-loading::after{animation:none}.ffc-tab{transition:none}.ffc-audience-join-item{transition:none}.ffc-password-form input{transition:none}}@media (forced-colors:active){.ffc-dashboard-status.ffc-dashboard-status-approved,.ffc-dashboard-status.ffc-dashboard-status-cancelled,.ffc-dashboard-status.ffc-dashboard-status-completed,.ffc-dashboard-status.ffc-dashboard-status-confirmed,.ffc-dashboard-status.ffc-dashboard-status-expired,.ffc-dashboard-status.ffc-dashboard-status-in_progress,.ffc-dashboard-status.ffc-dashboard-status-no_show,.ffc-dashboard-status.ffc-dashboard-status-pending,.ffc-dashboard-status.ffc-dashboard-status-rejected,.ffc-dashboard-status.ffc-dashboard-status-submitted{border:1px solid CanvasText}}.ffc-set-password-card{max-width:420px;margin:0 auto;padding:var(--ffc-spacing-3xl);background:var(--ffc-bg);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-lg)}.ffc-set-password-card h2{margin:0 0 var(--ffc-spacing-lg) 0;font-size:var(--ffc-font-size-xl);color:var(--ffc-text)}.ffc-set-password-card>p{margin:0 0 var(--ffc-spacing-2xl) 0;font-size:var(--ffc-font-size-base);color:var(--ffc-text-secondary)}.ffc-set-password-field{margin:0 0 var(--ffc-spacing-xl) 0}.ffc-set-password-field label{display:block;margin-bottom:var(--ffc-spacing-xs);font-size:var(--ffc-font-size-sm);font-weight:600;color:var(--ffc-text)}.ffc-set-password-field input[type=password]{width:100%;box-sizing:border-box;padding:var(--ffc-spacing-sm) var(--ffc-spacing-md);font-size:var(--ffc-font-size-base);background:var(--ffc-bg);color:var(--ffc-text);border:1px solid var(--ffc-border);border-radius:var(--ffc-radius-sm)}.ffc-set-password-actions{margin:0}.ffc-set-password-actions .button{width:100%;padding:var(--ffc-spacing-md) var(--ffc-spacing-2xl);font-size:var(--ffc-font-size-base);font-weight:600;text-align:center;vertical-align:middle}
/*# sourceMappingURL=ffc-user-dashboard.min.css.map */
\ No newline at end of file
diff --git a/assets/css/ffc-user-permissions.css b/assets/css/ffc-user-permissions.css
index 5c356bb41..ecd22586e 100644
--- a/assets/css/ffc-user-permissions.css
+++ b/assets/css/ffc-user-permissions.css
@@ -3,7 +3,7 @@
*
* Grouped-card layout for the per-user capability manager on the WordPress
* user-edit / profile screen. The toggle switch itself comes from
- * ffc-common.css (.ffc-toggle); this file adds the panel, context summary,
+ * ffc-common.css (.ffc-control-toggle); this file adds the panel, context summary,
* search/preset toolbar, collapsible group cards, slug chips and origin
* badges.
*
@@ -429,12 +429,12 @@
}
/* role-granted capability: amber, "locked" toggle */
-.ffc-toggle.ffc-cap-toggle--byrole input[type="checkbox"]:checked + .ffc-toggle-track {
+.ffc-control-toggle.ffc-cap-toggle--byrole input[type="checkbox"]:checked + .ffc-control-toggle-track {
background: var(--ffc-warning);
cursor: not-allowed;
}
-.ffc-toggle.ffc-cap-toggle--byrole .ffc-toggle-track::after {
+.ffc-control-toggle.ffc-cap-toggle--byrole .ffc-control-toggle-track::after {
box-shadow: 0 0 0 2px var(--ffc-warning-bg);
}
diff --git a/assets/css/ffc-user-permissions.min.css b/assets/css/ffc-user-permissions.min.css
index 25dc1b49f..b73a93409 100644
--- a/assets/css/ffc-user-permissions.min.css
+++ b/assets/css/ffc-user-permissions.min.css
@@ -1,2 +1,2 @@
-.ffc-cap-panel{width:100%;margin:var(--ffc-spacing-sm) 0 var(--ffc-spacing-2xs);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);overflow:hidden}.ffc-cap-context{display:grid;grid-template-columns:1fr;gap:1px;background:var(--ffc-border-light);border-bottom:1px solid var(--ffc-border-light)}.ffc-cap-context-item{display:flex;flex-direction:column;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);background:var(--ffc-bg-alt)}.ffc-cap-context-label{font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ffc-text-muted)}.ffc-cap-context-val{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);align-items:center}.ffc-cap-context-hint{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-chip{display:inline-block;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-md);border-radius:11px;font-size:var(--ffc-font-size-xs);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);color:var(--ffc-text)}.ffc-cap-chip--color{border-color:var(--ffc-cap-chip-color,var(--ffc-border));box-shadow:inset 3px 0 0 var(--ffc-cap-chip-color,var(--ffc-border))}.ffc-cap-audiences{grid-column:1/-1}.ffc-cap-audience-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--ffc-spacing-3xs) var(--ffc-spacing-lg);max-height:180px;overflow-y:auto;padding:var(--ffc-spacing-3xs) 0}.ffc-cap-aud{display:flex;align-items:center;gap:7px;padding:3px 0;font-size:var(--ffc-font-size-sm);cursor:pointer}.ffc-cap-aud input{margin:0}.ffc-cap-aud-dot{width:9px;height:9px;border-radius:var(--ffc-radius-full);flex:0 0 auto;background:var(--ffc-cap-chip-color,var(--ffc-border))}.ffc-cap-aud-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ffc-cap-toolbar{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-sm);align-items:center;justify-content:space-between;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-bottom:1px solid var(--ffc-border-light)}.ffc-cap-search{flex:1 1 220px;min-width:180px;max-width:360px;padding:var(--ffc-spacing-xs) var(--ffc-spacing-md)}.ffc-cap-presets{display:inline-flex;gap:var(--ffc-spacing-xs)}.ffc-cap-group{border-bottom:1px solid var(--ffc-bg-alt)}.ffc-cap-group:last-child{border-bottom:0}.ffc-cap-group-h{display:flex;align-items:center;gap:var(--ffc-spacing-md);width:100%;padding:11px var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border:0;border-bottom:1px solid var(--ffc-bg-alt);cursor:pointer;text-align:left;font:inherit;color:var(--ffc-text)}.ffc-cap-group-h:hover{background:var(--ffc-bg-alt)}.ffc-cap-caret{width:0;height:0;border-left:6px solid var(--ffc-text-muted);border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .15s ease}.ffc-cap-group:not(.is-collapsed) .ffc-cap-caret{transform:rotate(90deg)}.ffc-cap-gtitle{font-weight:600;font-size:var(--ffc-font-size-sm)}.ffc-cap-badge-admin{font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 7px;border-radius:10px;color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border)}.ffc-cap-section{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-sm);padding-bottom:var(--ffc-spacing-2xs);border-bottom:1px solid var(--ffc-border-light);font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ffc-text-muted)}.ffc-cap-section:first-child{margin-top:0}.ffc-cap-badge-surface{display:inline-block;margin-left:var(--ffc-spacing-xs);padding:1px var(--ffc-spacing-xs);border-radius:9px;font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.3px;vertical-align:middle;border:1px solid transparent}.ffc-cap-badge-surface--api{color:var(--ffc-info-text);background:var(--ffc-info-bg);border-color:var(--ffc-info-border)}.ffc-cap-badge-surface--frontend{color:var(--ffc-success-text);background:var(--ffc-success-bg);border-color:var(--ffc-success-border)}.ffc-cap-badge-surface--admin{color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border-color:var(--ffc-border-light)}.ffc-cap-gmeta{margin-left:auto;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-group.is-collapsed .ffc-cap-group-body{display:none}.ffc-cap-row{display:grid;grid-template-columns:48px 1fr auto;gap:var(--ffc-spacing-lg);align-items:start;padding:11px var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}.ffc-cap-row:first-child{border-top:0}.ffc-cap-row:hover{background:var(--ffc-bg-alt)}.ffc-cap-row-toggle{padding-top:1px}.ffc-cap-row-name{display:block;font-weight:600}.ffc-cap-row-desc{display:block;margin-top:var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-slug{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);margin-top:var(--ffc-spacing-xs);padding:3px 7px;border-radius:var(--ffc-radius-sm);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border)}.ffc-cap-copy{border:0;background:0 0;padding:0;cursor:pointer;font-size:var(--ffc-font-size-xs);line-height:1;color:var(--ffc-text-muted)}.ffc-cap-copy:hover{color:var(--ffc-text)}.ffc-cap-origin{align-self:center;white-space:nowrap;font-size:var(--ffc-font-size-2xs);font-weight:600;padding:var(--ffc-spacing-3xs) 9px;border-radius:11px}.ffc-cap-origin--user{color:var(--ffc-success-text);background:var(--ffc-success-bg);border:1px solid var(--ffc-success-border)}.ffc-cap-origin--role{color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border)}.ffc-cap-origin--none{color:var(--ffc-text-muted);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border)}.ffc-cap-role-chips{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-sm);margin:var(--ffc-spacing-3xs) 0 var(--ffc-spacing-xs)}.ffc-cap-role{display:inline-flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border-radius:20px;border:1px solid var(--ffc-border);background:var(--ffc-bg-card);cursor:pointer;font:inherit;color:var(--ffc-text);transition:box-shadow .12s,border-color .12s,background .12s}.ffc-cap-role:hover{border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-cap-role.is-on{background:var(--ffc-primary-light);border-color:var(--ffc-primary);color:var(--ffc-primary-hover)}.ffc-cap-role-mark{width:16px;height:16px;border-radius:var(--ffc-radius-full);border:1.5px solid var(--ffc-border);display:inline-flex;align-items:center;justify-content:center}.ffc-cap-role.is-on .ffc-cap-role-mark{background:var(--ffc-primary);border-color:var(--ffc-primary)}.ffc-cap-role.is-on .ffc-cap-role-mark::after{content:"✓";color:var(--ffc-bg-card);font-size:var(--ffc-font-size-2xs);line-height:1}.ffc-cap-role-nm{font-weight:600;font-size:var(--ffc-font-size-sm)}.ffc-cap-role-ct{font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted)}.ffc-cap-role.is-on .ffc-cap-role-ct{color:var(--ffc-primary-hover)}.ffc-cap-role[disabled]{opacity:.6;cursor:progress}.ffc-cap-role-other{display:block;margin-top:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-chip--muted{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-toggle.ffc-cap-toggle--byrole input[type=checkbox]:checked+.ffc-toggle-track{background:var(--ffc-warning);cursor:not-allowed}.ffc-toggle.ffc-cap-toggle--byrole .ffc-toggle-track::after{box-shadow:0 0 0 2px var(--ffc-warning-bg)}.ffc-cap-row.is-lit{background:var(--ffc-warning-bg);box-shadow:inset 3px 0 0 var(--ffc-warning-border)}.ffc-cap-role-tag{display:none;margin-left:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-2xs);font-weight:600;color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-radius:9px;padding:1px 7px;vertical-align:middle}.ffc-cap-row.is-lit .ffc-cap-role-tag:not(:empty){display:inline-block}.ffc-role-impact{max-width:860px}.ffc-role-pick{font-weight:600}.ffc-role-pick select{margin-left:var(--ffc-spacing-2xs);max-width:320px}.ffc-cap-savestate{align-self:center;min-width:48px;text-align:right;font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-success-text)}.ffc-cap-group[hidden],.ffc-cap-row[hidden]{display:none}.ffc-cap-group[data-ffc-hue=certificates]{--ffc-cap-hue:#2271b1}.ffc-cap-group[data-ffc-hue=forms]{--ffc-cap-hue:#7c3aed}.ffc-cap-group[data-ffc-hue=appointments]{--ffc-cap-hue:#0d9488}.ffc-cap-group[data-ffc-hue=calendars]{--ffc-cap-hue:#16a34a}.ffc-cap-group[data-ffc-hue=audiences]{--ffc-cap-hue:#ca8a04}.ffc-cap-group[data-ffc-hue=reregistration]{--ffc-cap-hue:#db2777}.ffc-cap-group[data-ffc-hue=custom_fields]{--ffc-cap-hue:#dc2626}.ffc-cap-group[data-ffc-hue=url_shortener]{--ffc-cap-hue:#ea580c}.ffc-cap-group[data-ffc-hue=settings]{--ffc-cap-hue:#64748b}.ffc-cap-group[data-ffc-hue=system]{--ffc-cap-hue:#334155}.ffc-cap-group[data-ffc-hue=recruitment]{--ffc-cap-hue:#4338ca}.ffc-cap-group[data-ffc-hue=date_messages]{--ffc-cap-hue:#c026d3}.ffc-cap-group[data-ffc-hue=neutral]{--ffc-cap-hue:#9ca3af}.ffc-cap-group-h{border-left:4px solid var(--ffc-cap-hue,transparent)}.ffc-cap-row{position:relative}.ffc-cap-row::before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--ffc-cap-hue,var(--ffc-border));opacity:var(--ffc-tier-strength, .5)}.ffc-cap-row[data-ffc-tier=view]{--ffc-tier-strength:0.32}.ffc-cap-row[data-ffc-tier=download]{--ffc-tier-strength:0.40}.ffc-cap-row[data-ffc-tier=book]{--ffc-tier-strength:0.42}.ffc-cap-row[data-ffc-tier=cancel]{--ffc-tier-strength:0.46}.ffc-cap-row[data-ffc-tier=call]{--ffc-tier-strength:0.50}.ffc-cap-row[data-ffc-tier=reveal]{--ffc-tier-strength:0.58}.ffc-cap-row[data-ffc-tier=export]{--ffc-tier-strength:0.58}.ffc-cap-row[data-ffc-tier=import]{--ffc-tier-strength:0.64}.ffc-cap-row[data-ffc-tier=edit]{--ffc-tier-strength:0.70}.ffc-cap-row[data-ffc-tier=manage]{--ffc-tier-strength:0.85}.ffc-cap-row[data-ffc-tier=bypass]{--ffc-tier-strength:0.85}.ffc-cap-row[data-ffc-tier=delete]{--ffc-tier-strength:1}.ffc-blocked-roles__group{margin:0 0 var(--ffc-spacing-lg)}.ffc-blocked-roles__legend{margin:0 0 var(--ffc-spacing-xs);font-weight:600}.ffc-blocked-roles__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--ffc-spacing-2xs) var(--ffc-spacing-2xl)}.ffc-blocked-roles__grid .ffc-checkbox-label{display:flex;align-items:center;gap:var(--ffc-spacing-xs);margin:0;padding:var(--ffc-spacing-3xs) 0}.ffc-blocked-roles__group--recommended .ffc-blocked-roles__legend{color:var(--ffc-success-text)}.ffc-blocked-roles__group--recommended em{color:var(--ffc-success-text);font-style:normal;font-size:var(--ffc-font-size-xs)}.ffc-blocked-roles__group--admin{padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-alt)}.ffc-blocked-roles__group--admin>summary{cursor:pointer;font-weight:600;list-style:revert}.ffc-blocked-roles__hint{margin:var(--ffc-spacing-xs) 0 var(--ffc-spacing-md)}@media (forced-colors:active){.ffc-cap-badge-surface--admin,.ffc-cap-badge-surface--api,.ffc-cap-badge-surface--frontend,.ffc-cap-chip--muted{border:1px solid CanvasText}}
+.ffc-cap-panel{width:100%;margin:var(--ffc-spacing-sm) 0 var(--ffc-spacing-2xs);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-card);overflow:hidden}.ffc-cap-context{display:grid;grid-template-columns:1fr;gap:1px;background:var(--ffc-border-light);border-bottom:1px solid var(--ffc-border-light)}.ffc-cap-context-item{display:flex;flex-direction:column;gap:var(--ffc-spacing-2xs);padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);background:var(--ffc-bg-alt)}.ffc-cap-context-label{font-size:var(--ffc-font-size-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ffc-text-muted)}.ffc-cap-context-val{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-xs);align-items:center}.ffc-cap-context-hint{font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-chip{display:inline-block;padding:var(--ffc-spacing-3xs) var(--ffc-spacing-md);border-radius:11px;font-size:var(--ffc-font-size-xs);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border);color:var(--ffc-text)}.ffc-cap-chip--color{border-color:var(--ffc-cap-chip-color,var(--ffc-border));box-shadow:inset 3px 0 0 var(--ffc-cap-chip-color,var(--ffc-border))}.ffc-cap-audiences{grid-column:1/-1}.ffc-cap-audience-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--ffc-spacing-3xs) var(--ffc-spacing-lg);max-height:180px;overflow-y:auto;padding:var(--ffc-spacing-3xs) 0}.ffc-cap-aud{display:flex;align-items:center;gap:7px;padding:3px 0;font-size:var(--ffc-font-size-sm);cursor:pointer}.ffc-cap-aud input{margin:0}.ffc-cap-aud-dot{width:9px;height:9px;border-radius:var(--ffc-radius-full);flex:0 0 auto;background:var(--ffc-cap-chip-color,var(--ffc-border))}.ffc-cap-aud-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ffc-cap-toolbar{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-sm);align-items:center;justify-content:space-between;padding:var(--ffc-spacing-lg) var(--ffc-spacing-xl);border-bottom:1px solid var(--ffc-border-light)}.ffc-cap-search{flex:1 1 220px;min-width:180px;max-width:360px;padding:var(--ffc-spacing-xs) var(--ffc-spacing-md)}.ffc-cap-presets{display:inline-flex;gap:var(--ffc-spacing-xs)}.ffc-cap-group{border-bottom:1px solid var(--ffc-bg-alt)}.ffc-cap-group:last-child{border-bottom:0}.ffc-cap-group-h{display:flex;align-items:center;gap:var(--ffc-spacing-md);width:100%;padding:11px var(--ffc-spacing-xl);background:var(--ffc-bg-alt);border:0;border-bottom:1px solid var(--ffc-bg-alt);cursor:pointer;text-align:left;font:inherit;color:var(--ffc-text)}.ffc-cap-group-h:hover{background:var(--ffc-bg-alt)}.ffc-cap-caret{width:0;height:0;border-left:6px solid var(--ffc-text-muted);border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .15s ease}.ffc-cap-group:not(.is-collapsed) .ffc-cap-caret{transform:rotate(90deg)}.ffc-cap-gtitle{font-weight:600;font-size:var(--ffc-font-size-sm)}.ffc-cap-badge-admin{font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 7px;border-radius:10px;color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border)}.ffc-cap-section{margin:var(--ffc-spacing-xl) 0 var(--ffc-spacing-sm);padding-bottom:var(--ffc-spacing-2xs);border-bottom:1px solid var(--ffc-border-light);font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ffc-text-muted)}.ffc-cap-section:first-child{margin-top:0}.ffc-cap-badge-surface{display:inline-block;margin-left:var(--ffc-spacing-xs);padding:1px var(--ffc-spacing-xs);border-radius:9px;font-size:var(--ffc-font-size-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.3px;vertical-align:middle;border:1px solid transparent}.ffc-cap-badge-surface--api{color:var(--ffc-info-text);background:var(--ffc-info-bg);border-color:var(--ffc-info-border)}.ffc-cap-badge-surface--frontend{color:var(--ffc-success-text);background:var(--ffc-success-bg);border-color:var(--ffc-success-border)}.ffc-cap-badge-surface--admin{color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border-color:var(--ffc-border-light)}.ffc-cap-gmeta{margin-left:auto;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-group.is-collapsed .ffc-cap-group-body{display:none}.ffc-cap-row{display:grid;grid-template-columns:48px 1fr auto;gap:var(--ffc-spacing-lg);align-items:start;padding:11px var(--ffc-spacing-xl);border-top:1px solid var(--ffc-border-light)}.ffc-cap-row:first-child{border-top:0}.ffc-cap-row:hover{background:var(--ffc-bg-alt)}.ffc-cap-row-toggle{padding-top:1px}.ffc-cap-row-name{display:block;font-weight:600}.ffc-cap-row-desc{display:block;margin-top:var(--ffc-spacing-3xs);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-slug{display:inline-flex;align-items:center;gap:var(--ffc-spacing-xs);margin-top:var(--ffc-spacing-xs);padding:3px 7px;border-radius:var(--ffc-radius-sm);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--ffc-font-size-xs);color:var(--ffc-text-secondary);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border)}.ffc-cap-copy{border:0;background:0 0;padding:0;cursor:pointer;font-size:var(--ffc-font-size-xs);line-height:1;color:var(--ffc-text-muted)}.ffc-cap-copy:hover{color:var(--ffc-text)}.ffc-cap-origin{align-self:center;white-space:nowrap;font-size:var(--ffc-font-size-2xs);font-weight:600;padding:var(--ffc-spacing-3xs) 9px;border-radius:11px}.ffc-cap-origin--user{color:var(--ffc-success-text);background:var(--ffc-success-bg);border:1px solid var(--ffc-success-border)}.ffc-cap-origin--role{color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border)}.ffc-cap-origin--none{color:var(--ffc-text-muted);background:var(--ffc-bg-alt);border:1px solid var(--ffc-border)}.ffc-cap-role-chips{display:flex;flex-wrap:wrap;gap:var(--ffc-spacing-sm);margin:var(--ffc-spacing-3xs) 0 var(--ffc-spacing-xs)}.ffc-cap-role{display:inline-flex;align-items:center;gap:var(--ffc-spacing-sm);padding:var(--ffc-spacing-2xs) var(--ffc-spacing-lg);border-radius:20px;border:1px solid var(--ffc-border);background:var(--ffc-bg-card);cursor:pointer;font:inherit;color:var(--ffc-text);transition:box-shadow .12s,border-color .12s,background .12s}.ffc-cap-role:hover{border-color:var(--ffc-primary);box-shadow:0 0 0 3px var(--ffc-focus-ring)}.ffc-cap-role.is-on{background:var(--ffc-primary-light);border-color:var(--ffc-primary);color:var(--ffc-primary-hover)}.ffc-cap-role-mark{width:16px;height:16px;border-radius:var(--ffc-radius-full);border:1.5px solid var(--ffc-border);display:inline-flex;align-items:center;justify-content:center}.ffc-cap-role.is-on .ffc-cap-role-mark{background:var(--ffc-primary);border-color:var(--ffc-primary)}.ffc-cap-role.is-on .ffc-cap-role-mark::after{content:"✓";color:var(--ffc-bg-card);font-size:var(--ffc-font-size-2xs);line-height:1}.ffc-cap-role-nm{font-weight:600;font-size:var(--ffc-font-size-sm)}.ffc-cap-role-ct{font-size:var(--ffc-font-size-2xs);color:var(--ffc-text-muted)}.ffc-cap-role.is-on .ffc-cap-role-ct{color:var(--ffc-primary-hover)}.ffc-cap-role[disabled]{opacity:.6;cursor:progress}.ffc-cap-role-other{display:block;margin-top:var(--ffc-spacing-2xs);font-size:var(--ffc-font-size-xs);color:var(--ffc-text-muted)}.ffc-cap-chip--muted{background:var(--ffc-bg-alt);color:var(--ffc-text-muted)}.ffc-control-toggle.ffc-cap-toggle--byrole input[type=checkbox]:checked+.ffc-control-toggle-track{background:var(--ffc-warning);cursor:not-allowed}.ffc-control-toggle.ffc-cap-toggle--byrole .ffc-control-toggle-track::after{box-shadow:0 0 0 2px var(--ffc-warning-bg)}.ffc-cap-row.is-lit{background:var(--ffc-warning-bg);box-shadow:inset 3px 0 0 var(--ffc-warning-border)}.ffc-cap-role-tag{display:none;margin-left:var(--ffc-spacing-sm);font-size:var(--ffc-font-size-2xs);font-weight:600;color:var(--ffc-warning-text);background:var(--ffc-warning-bg);border:1px solid var(--ffc-warning-border);border-radius:9px;padding:1px 7px;vertical-align:middle}.ffc-cap-row.is-lit .ffc-cap-role-tag:not(:empty){display:inline-block}.ffc-role-impact{max-width:860px}.ffc-role-pick{font-weight:600}.ffc-role-pick select{margin-left:var(--ffc-spacing-2xs);max-width:320px}.ffc-cap-savestate{align-self:center;min-width:48px;text-align:right;font-size:var(--ffc-font-size-xs);font-weight:600;color:var(--ffc-success-text)}.ffc-cap-group[hidden],.ffc-cap-row[hidden]{display:none}.ffc-cap-group[data-ffc-hue=certificates]{--ffc-cap-hue:#2271b1}.ffc-cap-group[data-ffc-hue=forms]{--ffc-cap-hue:#7c3aed}.ffc-cap-group[data-ffc-hue=appointments]{--ffc-cap-hue:#0d9488}.ffc-cap-group[data-ffc-hue=calendars]{--ffc-cap-hue:#16a34a}.ffc-cap-group[data-ffc-hue=audiences]{--ffc-cap-hue:#ca8a04}.ffc-cap-group[data-ffc-hue=reregistration]{--ffc-cap-hue:#db2777}.ffc-cap-group[data-ffc-hue=custom_fields]{--ffc-cap-hue:#dc2626}.ffc-cap-group[data-ffc-hue=url_shortener]{--ffc-cap-hue:#ea580c}.ffc-cap-group[data-ffc-hue=settings]{--ffc-cap-hue:#64748b}.ffc-cap-group[data-ffc-hue=system]{--ffc-cap-hue:#334155}.ffc-cap-group[data-ffc-hue=recruitment]{--ffc-cap-hue:#4338ca}.ffc-cap-group[data-ffc-hue=date_messages]{--ffc-cap-hue:#c026d3}.ffc-cap-group[data-ffc-hue=neutral]{--ffc-cap-hue:#9ca3af}.ffc-cap-group-h{border-left:4px solid var(--ffc-cap-hue,transparent)}.ffc-cap-row{position:relative}.ffc-cap-row::before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--ffc-cap-hue,var(--ffc-border));opacity:var(--ffc-tier-strength, .5)}.ffc-cap-row[data-ffc-tier=view]{--ffc-tier-strength:0.32}.ffc-cap-row[data-ffc-tier=download]{--ffc-tier-strength:0.40}.ffc-cap-row[data-ffc-tier=book]{--ffc-tier-strength:0.42}.ffc-cap-row[data-ffc-tier=cancel]{--ffc-tier-strength:0.46}.ffc-cap-row[data-ffc-tier=call]{--ffc-tier-strength:0.50}.ffc-cap-row[data-ffc-tier=reveal]{--ffc-tier-strength:0.58}.ffc-cap-row[data-ffc-tier=export]{--ffc-tier-strength:0.58}.ffc-cap-row[data-ffc-tier=import]{--ffc-tier-strength:0.64}.ffc-cap-row[data-ffc-tier=edit]{--ffc-tier-strength:0.70}.ffc-cap-row[data-ffc-tier=manage]{--ffc-tier-strength:0.85}.ffc-cap-row[data-ffc-tier=bypass]{--ffc-tier-strength:0.85}.ffc-cap-row[data-ffc-tier=delete]{--ffc-tier-strength:1}.ffc-blocked-roles__group{margin:0 0 var(--ffc-spacing-lg)}.ffc-blocked-roles__legend{margin:0 0 var(--ffc-spacing-xs);font-weight:600}.ffc-blocked-roles__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--ffc-spacing-2xs) var(--ffc-spacing-2xl)}.ffc-blocked-roles__grid .ffc-checkbox-label{display:flex;align-items:center;gap:var(--ffc-spacing-xs);margin:0;padding:var(--ffc-spacing-3xs) 0}.ffc-blocked-roles__group--recommended .ffc-blocked-roles__legend{color:var(--ffc-success-text)}.ffc-blocked-roles__group--recommended em{color:var(--ffc-success-text);font-style:normal;font-size:var(--ffc-font-size-xs)}.ffc-blocked-roles__group--admin{padding:var(--ffc-spacing-sm) var(--ffc-spacing-lg);border:1px solid var(--ffc-border-light);border-radius:var(--ffc-radius-md);background:var(--ffc-bg-alt)}.ffc-blocked-roles__group--admin>summary{cursor:pointer;font-weight:600;list-style:revert}.ffc-blocked-roles__hint{margin:var(--ffc-spacing-xs) 0 var(--ffc-spacing-md)}@media (forced-colors:active){.ffc-cap-badge-surface--admin,.ffc-cap-badge-surface--api,.ffc-cap-badge-surface--frontend,.ffc-cap-chip--muted{border:1px solid CanvasText}}
/*# sourceMappingURL=ffc-user-permissions.min.css.map */
\ No newline at end of file
diff --git a/assets/js/ffc-admin-autosave.js b/assets/js/ffc-admin-autosave.js
index 07f6cfae7..bdf734953 100644
--- a/assets/js/ffc-admin-autosave.js
+++ b/assets/js/ffc-admin-autosave.js
@@ -77,15 +77,15 @@
if ($explicit && $explicit.length) {
return $explicit;
}
- // `.ffc-toggle` wraps ` ` + `` + label
+ // `.ffc-control-toggle` wraps ` ` + `` + label
// text. Injecting the badge between the input and the track kills
- // the `input:checked + .ffc-toggle-track` CSS rule that recolors
+ // the `input:checked + .ffc-control-toggle-track` CSS rule that recolors
// the track on toggle-on — so the toggle visually stays "off"
// even after the save succeeds. Anchor the badge AFTER the
// wrapping label instead so the track stays adjacent.
// A steps control (#1745) is one field made of one radio per step:
// its badge goes after the whole control, once.
- var $anchor = $field.closest('.ffc-toggle, .ffc-control-steps');
+ var $anchor = $field.closest('.ffc-control-toggle, .ffc-control-steps');
if (!$anchor.length) {
$anchor = $field;
}
diff --git a/assets/js/ffc-admin-autosave.min.js b/assets/js/ffc-admin-autosave.min.js
index 393d1319c..fd7f1fc41 100644
--- a/assets/js/ffc-admin-autosave.min.js
+++ b/assets/js/ffc-admin-autosave.min.js
@@ -1,2 +1,2 @@
-!function(e){"use strict";if(window.FFC&&window.FFC.Admin){var t="ffc-autosave-badge";window.FFC.Admin.autoSaveField=function(a,o){if(!(o=o||{}).key)return window.console&&window.console.warn("FFC.Admin.autoSaveField: missing config.key"),{destroy:function(){}};var i=o.strings||{},r=i.saving||"Saving…",f=i.saved||"Saved",u=i.error||"Save failed",c=i.invalid||"Enter a valid value",d="number"==typeof o.debounce?o.debounce:400,s=function(n,a){if(a&&a.length)return a;var o=n.closest(".ffc-toggle, .ffc-control-steps");o.length||(o=n);var i=o.next("."+t);if(i.length)return i;var r=e(' ');return o.after(r),r}(a,o.$badge),v=null,l=null;function m(){if(v=null,!(t=a[0])||"function"!=typeof t.checkValidity||t.checkValidity()||(n(s,"error",t.validationMessage||c),"function"==typeof t.reportValidity&&t.reportValidity(),0)){var t;n(s,"saving",r);var i=function(t,n){if("function"==typeof n)return n(t);if(t.is(":checkbox"))return t.is(":checked")?"1":"0";if(t.is(":radio")){var a=t.attr("name");return a?e('input[name="'+a+'"]:checked').val():t.val()}return t.val()}(a,o.transform),d=e.extend({key:o.key,value:i},o.payload||{}),m=window.ffcAdminAutosave;!o.request&&m&&m.nonce&&(d.nonce=m.nonce),window.FFC.request(o.action||"ffc_update_setting",d,o.request).then(function(){n(s,"saved",f),l=setTimeout(function(){!function(e){e.attr("hidden","hidden").text("")}(s)},1800),function(e,t){"function"==typeof window.CustomEvent&&document.dispatchEvent(new window.CustomEvent("ffc:setting-saved",{detail:{key:e,value:t}}))}(o.key,i)}).catch(function(e){n(s,"error",e&&e.message?e.message:u)})}}var g=o.$group&&o.$group.length?o.$group:a,p=o.confirmOff?"change.ffcAutoSave":"change.ffcAutoSave input.ffcAutoSave";return g.on(p,function(){!o.confirmOff||!a.is(":checkbox")||a.is(":checked")||window.confirm(o.confirmOff)?(v&&clearTimeout(v),l&&(clearTimeout(l),l=null),v=setTimeout(m,d)):a.prop("checked",!0)}),{destroy:function(){g.off("change.ffcAutoSave input.ffcAutoSave"),v&&clearTimeout(v),l&&clearTimeout(l),s.remove()}}},window.FFC.Admin.bootAutoSaveFields=o,e(o)}function n(e,n,a){e.removeClass(t+"--saving "+t+"--saved "+t+"--error").addClass(t+"--"+n).text(a||"").removeAttr("hidden")}function a(t,n){var a={};e("["+t+"]").each(function(){var o=e(this);if(!o.data("ffcAutoSaveBound")){var i=o.attr(t),r=void 0!==o.attr("data-ffc-autosave-multi"),f=o.is(":radio");if(i){if(r||f){if(a[i])return void o.data("ffcAutoSaveBound",!0);a[i]=!0}o.data("ffcAutoSaveBound",!0);var u=e.extend({key:i},n||{}),c=o.attr("data-ffc-autosave-debounce");c&&!isNaN(parseInt(c,10))&&(u.debounce=parseInt(c,10));var d=o.attr("data-ffc-confirm-off");if(d&&(u.confirmOff=d),f){var s=e("["+t+'="'+i+'"]:radio');s.not(o).data("ffcAutoSaveBound",!0),u.$group=s}if(r){var v=e("["+t+'="'+i+'"][data-ffc-autosave-multi]');v.not(o).data("ffcAutoSaveBound",!0),u.$group=v,u.transform=function(){return function(t){var n=[];return t.filter(":checked").each(function(){n.push(e(this).val())}),n}(v)}}window.FFC.Admin.autoSaveField(o,u)}}})}function o(){var e;a("data-ffc-autosave-key",{strings:(e=window.ffcAdminAutosave)&&e.strings||{}});var t=function(){var e=window.ffcFormMetaAutosave;return e&&e.ajaxUrl&&e.postId?{action:e.action||"ffc_update_form_meta",payload:{post_id:e.postId},request:{nonce:e.nonce,ajaxUrl:e.ajaxUrl},strings:e.strings||{}}:null}();t&&a("data-ffc-autosave-form-key",t)}}(jQuery);
+!function(e){"use strict";if(window.FFC&&window.FFC.Admin){var t="ffc-autosave-badge";window.FFC.Admin.autoSaveField=function(a,o){if(!(o=o||{}).key)return window.console&&window.console.warn("FFC.Admin.autoSaveField: missing config.key"),{destroy:function(){}};var i=o.strings||{},r=i.saving||"Saving…",f=i.saved||"Saved",c=i.error||"Save failed",u=i.invalid||"Enter a valid value",d="number"==typeof o.debounce?o.debounce:400,s=function(n,a){if(a&&a.length)return a;var o=n.closest(".ffc-control-toggle, .ffc-control-steps");o.length||(o=n);var i=o.next("."+t);if(i.length)return i;var r=e(' ');return o.after(r),r}(a,o.$badge),v=null,l=null;function m(){if(v=null,!(t=a[0])||"function"!=typeof t.checkValidity||t.checkValidity()||(n(s,"error",t.validationMessage||u),"function"==typeof t.reportValidity&&t.reportValidity(),0)){var t;n(s,"saving",r);var i=function(t,n){if("function"==typeof n)return n(t);if(t.is(":checkbox"))return t.is(":checked")?"1":"0";if(t.is(":radio")){var a=t.attr("name");return a?e('input[name="'+a+'"]:checked').val():t.val()}return t.val()}(a,o.transform),d=e.extend({key:o.key,value:i},o.payload||{}),m=window.ffcAdminAutosave;!o.request&&m&&m.nonce&&(d.nonce=m.nonce),window.FFC.request(o.action||"ffc_update_setting",d,o.request).then(function(){n(s,"saved",f),l=setTimeout(function(){!function(e){e.attr("hidden","hidden").text("")}(s)},1800),function(e,t){"function"==typeof window.CustomEvent&&document.dispatchEvent(new window.CustomEvent("ffc:setting-saved",{detail:{key:e,value:t}}))}(o.key,i)}).catch(function(e){n(s,"error",e&&e.message?e.message:c)})}}var g=o.$group&&o.$group.length?o.$group:a,p=o.confirmOff?"change.ffcAutoSave":"change.ffcAutoSave input.ffcAutoSave";return g.on(p,function(){!o.confirmOff||!a.is(":checkbox")||a.is(":checked")||window.confirm(o.confirmOff)?(v&&clearTimeout(v),l&&(clearTimeout(l),l=null),v=setTimeout(m,d)):a.prop("checked",!0)}),{destroy:function(){g.off("change.ffcAutoSave input.ffcAutoSave"),v&&clearTimeout(v),l&&clearTimeout(l),s.remove()}}},window.FFC.Admin.bootAutoSaveFields=o,e(o)}function n(e,n,a){e.removeClass(t+"--saving "+t+"--saved "+t+"--error").addClass(t+"--"+n).text(a||"").removeAttr("hidden")}function a(t,n){var a={};e("["+t+"]").each(function(){var o=e(this);if(!o.data("ffcAutoSaveBound")){var i=o.attr(t),r=void 0!==o.attr("data-ffc-autosave-multi"),f=o.is(":radio");if(i){if(r||f){if(a[i])return void o.data("ffcAutoSaveBound",!0);a[i]=!0}o.data("ffcAutoSaveBound",!0);var c=e.extend({key:i},n||{}),u=o.attr("data-ffc-autosave-debounce");u&&!isNaN(parseInt(u,10))&&(c.debounce=parseInt(u,10));var d=o.attr("data-ffc-confirm-off");if(d&&(c.confirmOff=d),f){var s=e("["+t+'="'+i+'"]:radio');s.not(o).data("ffcAutoSaveBound",!0),c.$group=s}if(r){var v=e("["+t+'="'+i+'"][data-ffc-autosave-multi]');v.not(o).data("ffcAutoSaveBound",!0),c.$group=v,c.transform=function(){return function(t){var n=[];return t.filter(":checked").each(function(){n.push(e(this).val())}),n}(v)}}window.FFC.Admin.autoSaveField(o,c)}}})}function o(){var e;a("data-ffc-autosave-key",{strings:(e=window.ffcAdminAutosave)&&e.strings||{}});var t=function(){var e=window.ffcFormMetaAutosave;return e&&e.ajaxUrl&&e.postId?{action:e.action||"ffc_update_form_meta",payload:{post_id:e.postId},request:{nonce:e.nonce,ajaxUrl:e.ajaxUrl},strings:e.strings||{}}:null}();t&&a("data-ffc-autosave-form-key",t)}}(jQuery);
//# sourceMappingURL=ffc-admin-autosave.min.js.map
\ No newline at end of file
diff --git a/assets/js/ffc-cert-email-mode.js b/assets/js/ffc-cert-email-mode.js
index 08a2401e6..3fe980d8e 100644
--- a/assets/js/ffc-cert-email-mode.js
+++ b/assets/js/ffc-cert-email-mode.js
@@ -1,7 +1,7 @@
/**
* Per-form certificate email — Global/Custom toggle behaviour (#964).
*
- * The form editor's email metabox renders a `.ffc-toggle` (`#ffc_email_custom_mode`)
+ * The form editor's email metabox renders a `.ffc-control-toggle` (`#ffc_email_custom_mode`)
* that chooses between the shared GLOBAL default text and a per-form CUSTOM copy.
* The toggle is UI-only — the effective mode is re-derived server-side from the
* stored subject/body on every load, so nothing here needs to be persisted:
diff --git a/assets/js/ffc-user-capabilities.js b/assets/js/ffc-user-capabilities.js
index 12a4fe8cc..fbb145ab0 100644
--- a/assets/js/ffc-user-capabilities.js
+++ b/assets/js/ffc-user-capabilities.js
@@ -64,7 +64,7 @@
function refreshRow(row, roleSet) {
var slug = row.getAttribute('data-ffc-cap-slug');
var cb = row.querySelector('.ffc-cap-checkbox');
- var tg = row.querySelector('.ffc-toggle');
+ var tg = row.querySelector('.ffc-control-toggle');
var origin = row.querySelector('[data-ffc-origin]');
if (!cb) { return; }
if (roleSet.has(slug)) {
diff --git a/assets/js/ffc-user-capabilities.min.js b/assets/js/ffc-user-capabilities.min.js
index d2df783eb..160526e38 100644
--- a/assets/js/ffc-user-capabilities.min.js
+++ b/assets/js/ffc-user-capabilities.min.js
@@ -1,2 +1,2 @@
-!function(){"use strict";var e=window.ffcUserPerms||{},t=e.roleCaps||{},r=e.i18n||{},c=new Set,a=new Set;function n(e,t){e&&(e.className="ffc-cap-origin ffc-cap-origin--"+t,e.textContent=function(e){return"user"===e?r.user||"User":"role"===e?r.role||"Role":r.none||"—"}(t))}function o(e){var t=e.querySelectorAll(".ffc-cap-checkbox:checked").length,r=e.querySelector(".ffc-cap-count");r&&(r.textContent=String(t))}function f(e){e.querySelectorAll(".ffc-cap-group").forEach(o)}function i(e){var r,o=(r=new Set,c.forEach(function(e){(t[e]||[]).forEach(function(e){r.add(e)})}),r);e.querySelectorAll(".ffc-cap-row").forEach(function(e){!function(e,t){var r=e.getAttribute("data-ffc-cap-slug"),c=e.querySelector(".ffc-cap-checkbox"),o=e.querySelector(".ffc-toggle"),f=e.querySelector("[data-ffc-origin]");c&&(t.has(r)?(c.checked=!0,c.disabled=!0,o&&o.classList.add("ffc-cap-toggle--byrole"),n(f,"role")):(c.disabled=!1,c.checked=a.has(r),o&&o.classList.remove("ffc-cap-toggle--byrole"),n(f,c.checked?"user":"none")))}(e,o)}),f(e)}function l(e,t,r){var c=new Set(t);e.querySelectorAll(".ffc-cap-row").forEach(function(e){var t=c.has(e.getAttribute("data-ffc-cap-slug"));e.classList.toggle("is-lit",t);var a=e.querySelector("[data-ffc-role-tag]");a&&(a.textContent=t&&r?r:"")})}function d(t,a){var n=a.getAttribute("data-ffc-role"),o=!c.has(n);a.disabled=!0;var f=new URLSearchParams;f.append("action","ffc_toggle_user_role"),f.append("nonce",e.nonce||""),f.append("user_id",String(e.userId||0)),f.append("role",n),f.append("assign",o?"1":"0"),fetch(e.ajaxUrl,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f.toString()}).then(function(e){return e.json()}).then(function(e){a.disabled=!1,e&&e.success?(o?c.add(n):c.delete(n),a.classList.toggle("is-on",o),a.setAttribute("aria-pressed",o?"true":"false"),i(t)):window.alert(function(e){if(-1===e||"-1"===e||!e||"object"!=typeof e)return r.errNonce||r.error||"Error";switch(e.data&&e.data.message?e.data.message:""){case"cannot_edit_admin":return r.errAdmin||r.error||"Error";case"role_not_assignable":return r.errRole||r.error||"Error";case"forbidden":return r.errForbidden||r.error||"Error";case"user_not_found":return r.errUser||r.error||"Error";default:return r.error||"Error"}}(e))}).catch(function(){a.disabled=!1,window.alert(r.errNetwork||r.error||"Error")})}function u(e,t){e.classList.toggle("is-collapsed",t);var r=e.querySelector(".ffc-cap-group-h");r&&r.setAttribute("aria-expanded",t?"false":"true")}function s(){var i=document.querySelector(".ffc-cap-panel");if(i){e=window.ffcUserPerms||{},t=e.roleCaps||{},r=e.i18n||{},c=new Set(Array.isArray(e.assigned)?e.assigned:[]),a=new Set,i.querySelectorAll(".ffc-cap-row").forEach(function(e){"1"===e.getAttribute("data-ffc-user-granted")&&a.add(e.getAttribute("data-ffc-cap-slug"))}),i.querySelectorAll(".ffc-cap-role[data-ffc-role]").forEach(function(r){var c=r.getAttribute("data-ffc-role");r.addEventListener("mouseenter",function(){var e=r.querySelector(".ffc-cap-role-nm");l(i,t[c]||[],e?e.textContent:"")}),r.addEventListener("mouseleave",function(){l(i,[],"")}),r.addEventListener("focus",function(){var e=r.querySelector(".ffc-cap-role-nm");l(i,t[c]||[],e?e.textContent:"")}),r.addEventListener("blur",function(){l(i,[],"")}),r.addEventListener("click",function(){e.ajaxUrl&&d(i,r)})}),i.querySelectorAll("[data-ffc-preset]").forEach(function(e){e.addEventListener("click",function(){!function(e,t){e.querySelectorAll(".ffc-cap-checkbox").forEach(function(e){if(!e.disabled){e.checked=t;var r=e.closest(".ffc-cap-row");if(r){var c=r.getAttribute("data-ffc-cap-slug");t?a.add(c):a.delete(c),n(r.querySelector("[data-ffc-origin]"),t?"user":"none")}}}),f(e)}(i,"all"===e.getAttribute("data-ffc-preset"))})});var s=i.querySelector(".ffc-cap-search");s&&s.addEventListener("input",function(){!function(e,t){var r=t.trim().toLowerCase();e.querySelectorAll(".ffc-cap-group").forEach(function(e){var t=!1;e.querySelectorAll(".ffc-cap-row").forEach(function(e){var c=e.getAttribute("data-ffc-cap-name")||"",a=e.getAttribute("data-ffc-cap-slug")||"",n=!r||-1!==c.indexOf(r)||-1!==a.indexOf(r);e.hidden=!n,n&&(t=!0)}),e.hidden=!t,r&&t&&u(e,!1)})}(i,s.value)}),i.querySelectorAll(".ffc-cap-group-h").forEach(function(e){e.addEventListener("click",function(){var t=e.closest(".ffc-cap-group");t&&u(t,!t.classList.contains("is-collapsed"))})}),i.querySelectorAll(".ffc-cap-copy").forEach(function(e){e.addEventListener("click",function(t){t.preventDefault(),function(e){var t=e.getAttribute("data-ffc-copy")||"";t&&navigator.clipboard&&navigator.clipboard.writeText&&navigator.clipboard.writeText(t);var r=e.textContent;e.textContent="✓",setTimeout(function(){e.textContent=r},900)}(e)})}),i.querySelectorAll(".ffc-cap-checkbox").forEach(function(e){e.addEventListener("change",function(){if(!e.disabled){var t=e.closest(".ffc-cap-row");if(t){var r=t.getAttribute("data-ffc-cap-slug");e.checked?a.add(r):a.delete(r),n(t.querySelector("[data-ffc-origin]"),e.checked?"user":"none")}var c=e.closest(".ffc-cap-group");c&&o(c)}})})}}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",s):s(),window.ffcUserPermissionsInit=s}();
+!function(){"use strict";var e=window.ffcUserPerms||{},t=e.roleCaps||{},r=e.i18n||{},c=new Set,a=new Set;function n(e,t){e&&(e.className="ffc-cap-origin ffc-cap-origin--"+t,e.textContent=function(e){return"user"===e?r.user||"User":"role"===e?r.role||"Role":r.none||"—"}(t))}function o(e){var t=e.querySelectorAll(".ffc-cap-checkbox:checked").length,r=e.querySelector(".ffc-cap-count");r&&(r.textContent=String(t))}function f(e){e.querySelectorAll(".ffc-cap-group").forEach(o)}function i(e){var r,o=(r=new Set,c.forEach(function(e){(t[e]||[]).forEach(function(e){r.add(e)})}),r);e.querySelectorAll(".ffc-cap-row").forEach(function(e){!function(e,t){var r=e.getAttribute("data-ffc-cap-slug"),c=e.querySelector(".ffc-cap-checkbox"),o=e.querySelector(".ffc-control-toggle"),f=e.querySelector("[data-ffc-origin]");c&&(t.has(r)?(c.checked=!0,c.disabled=!0,o&&o.classList.add("ffc-cap-toggle--byrole"),n(f,"role")):(c.disabled=!1,c.checked=a.has(r),o&&o.classList.remove("ffc-cap-toggle--byrole"),n(f,c.checked?"user":"none")))}(e,o)}),f(e)}function l(e,t,r){var c=new Set(t);e.querySelectorAll(".ffc-cap-row").forEach(function(e){var t=c.has(e.getAttribute("data-ffc-cap-slug"));e.classList.toggle("is-lit",t);var a=e.querySelector("[data-ffc-role-tag]");a&&(a.textContent=t&&r?r:"")})}function d(t,a){var n=a.getAttribute("data-ffc-role"),o=!c.has(n);a.disabled=!0;var f=new URLSearchParams;f.append("action","ffc_toggle_user_role"),f.append("nonce",e.nonce||""),f.append("user_id",String(e.userId||0)),f.append("role",n),f.append("assign",o?"1":"0"),fetch(e.ajaxUrl,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f.toString()}).then(function(e){return e.json()}).then(function(e){a.disabled=!1,e&&e.success?(o?c.add(n):c.delete(n),a.classList.toggle("is-on",o),a.setAttribute("aria-pressed",o?"true":"false"),i(t)):window.alert(function(e){if(-1===e||"-1"===e||!e||"object"!=typeof e)return r.errNonce||r.error||"Error";switch(e.data&&e.data.message?e.data.message:""){case"cannot_edit_admin":return r.errAdmin||r.error||"Error";case"role_not_assignable":return r.errRole||r.error||"Error";case"forbidden":return r.errForbidden||r.error||"Error";case"user_not_found":return r.errUser||r.error||"Error";default:return r.error||"Error"}}(e))}).catch(function(){a.disabled=!1,window.alert(r.errNetwork||r.error||"Error")})}function u(e,t){e.classList.toggle("is-collapsed",t);var r=e.querySelector(".ffc-cap-group-h");r&&r.setAttribute("aria-expanded",t?"false":"true")}function s(){var i=document.querySelector(".ffc-cap-panel");if(i){e=window.ffcUserPerms||{},t=e.roleCaps||{},r=e.i18n||{},c=new Set(Array.isArray(e.assigned)?e.assigned:[]),a=new Set,i.querySelectorAll(".ffc-cap-row").forEach(function(e){"1"===e.getAttribute("data-ffc-user-granted")&&a.add(e.getAttribute("data-ffc-cap-slug"))}),i.querySelectorAll(".ffc-cap-role[data-ffc-role]").forEach(function(r){var c=r.getAttribute("data-ffc-role");r.addEventListener("mouseenter",function(){var e=r.querySelector(".ffc-cap-role-nm");l(i,t[c]||[],e?e.textContent:"")}),r.addEventListener("mouseleave",function(){l(i,[],"")}),r.addEventListener("focus",function(){var e=r.querySelector(".ffc-cap-role-nm");l(i,t[c]||[],e?e.textContent:"")}),r.addEventListener("blur",function(){l(i,[],"")}),r.addEventListener("click",function(){e.ajaxUrl&&d(i,r)})}),i.querySelectorAll("[data-ffc-preset]").forEach(function(e){e.addEventListener("click",function(){!function(e,t){e.querySelectorAll(".ffc-cap-checkbox").forEach(function(e){if(!e.disabled){e.checked=t;var r=e.closest(".ffc-cap-row");if(r){var c=r.getAttribute("data-ffc-cap-slug");t?a.add(c):a.delete(c),n(r.querySelector("[data-ffc-origin]"),t?"user":"none")}}}),f(e)}(i,"all"===e.getAttribute("data-ffc-preset"))})});var s=i.querySelector(".ffc-cap-search");s&&s.addEventListener("input",function(){!function(e,t){var r=t.trim().toLowerCase();e.querySelectorAll(".ffc-cap-group").forEach(function(e){var t=!1;e.querySelectorAll(".ffc-cap-row").forEach(function(e){var c=e.getAttribute("data-ffc-cap-name")||"",a=e.getAttribute("data-ffc-cap-slug")||"",n=!r||-1!==c.indexOf(r)||-1!==a.indexOf(r);e.hidden=!n,n&&(t=!0)}),e.hidden=!t,r&&t&&u(e,!1)})}(i,s.value)}),i.querySelectorAll(".ffc-cap-group-h").forEach(function(e){e.addEventListener("click",function(){var t=e.closest(".ffc-cap-group");t&&u(t,!t.classList.contains("is-collapsed"))})}),i.querySelectorAll(".ffc-cap-copy").forEach(function(e){e.addEventListener("click",function(t){t.preventDefault(),function(e){var t=e.getAttribute("data-ffc-copy")||"";t&&navigator.clipboard&&navigator.clipboard.writeText&&navigator.clipboard.writeText(t);var r=e.textContent;e.textContent="✓",setTimeout(function(){e.textContent=r},900)}(e)})}),i.querySelectorAll(".ffc-cap-checkbox").forEach(function(e){e.addEventListener("change",function(){if(!e.disabled){var t=e.closest(".ffc-cap-row");if(t){var r=t.getAttribute("data-ffc-cap-slug");e.checked?a.add(r):a.delete(r),n(t.querySelector("[data-ffc-origin]"),e.checked?"user":"none")}var c=e.closest(".ffc-cap-group");c&&o(c)}})})}}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",s):s(),window.ffcUserPermissionsInit=s}();
//# sourceMappingURL=ffc-user-capabilities.min.js.map
\ No newline at end of file
diff --git a/assets/js/ffc-user-dashboard-profile.js b/assets/js/ffc-user-dashboard-profile.js
index 9e8584f82..647413982 100644
--- a/assets/js/ffc-user-dashboard-profile.js
+++ b/assets/js/ffc-user-dashboard-profile.js
@@ -40,10 +40,11 @@
var has = Object.prototype.hasOwnProperty.call(prefs, key);
var on = defaultOn ? (!has || prefs[key] !== false) : !!prefs[key];
var checked = on ? ' checked' : '';
- return '' +
+ // The plugin's one toggle (#1748): the checkbox stays focusable.
+ return '' +
' ' +
- ' ' +
- '' + label + ' ';
+ ' ' +
+ '' + label + ' ';
}
function showEditForm() {
diff --git a/assets/js/ffc-user-dashboard-profile.min.js b/assets/js/ffc-user-dashboard-profile.min.js
index d6f5b58aa..4cba2445f 100644
--- a/assets/js/ffc-user-dashboard-profile.min.js
+++ b/assets/js/ffc-user-dashboard-profile.min.js
@@ -1,2 +1,2 @@
-!function(e){"use strict";var s=FFCDashboard.helpers,a=s.esc,t=s.escAttr;function o(e,s,t,o){var f=''+e+" ";return t&&t.length>1?(f+='
',t.forEach(function(e){f+=""+a(e)+" "}),f+=" "):t&&1===t.length?f+='
'+a(t[0])+"
":f+='
'+a(o||"-")+"
",f+="
"}function f(e,s,a,t){var o=Object.prototype.hasOwnProperty.call(a,e);return''+s+" "}function r(){var s=e("#ffc-tabpanel-profile"),o=FFCDashboard.panels.profile.state;if(o){var f=ffcDashboard.strings,r='",s.html(r),window.FFC&&window.FFC.Fields&&window.FFC.Fields.initMasks(s.find(".ffc-profile-edit-form"))}}function n(s){var a=e(".ffc-lgpd-status");a.text(ffcDashboard.strings.loading||"Loading...").css("color","#666").show();var t=ffcDashboard.restUrl+"user/privacy-request";ffcDashboard.viewAsUserId&&(t+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(t,{method:"POST",data:{type:s},nonce:ffcDashboard.nonce}).then(function(e){a.text(e.message||ffcDashboard.strings.privacyRequestSent||"Request sent!").css("color","#28a745")}).catch(function(e){var s=ffcDashboard.strings.privacyRequestError||"Error";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(s=e.xhr.responseJSON.message),a.text(s).css("color","#d63638")})}FFCDashboard.panels.profile={state:null,bindEvents:function(){e(document).on("click",".ffc-profile-edit-btn",function(e){e.preventDefault(),r()}),e(document).on("click",".ffc-profile-save-btn",function(s){s.preventDefault(),function(){var s={display_name:e("#ffc-edit-display-name").val(),phone:e("#ffc-edit-phone").val(),department:e("#ffc-edit-department").val(),organization:e("#ffc-edit-organization").val(),notes:e("#ffc-edit-notes").val(),birth_date:e("#ffc-edit-birth-date").val()},a=e(".ffc-profile-save-btn"),t=e(".ffc-profile-save-status");a.prop("disabled",!0),t.text(ffcDashboard.strings.saving||"Saving...").show().css("color","#666");var o=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(o+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(o,{method:"PUT",data:s,nonce:ffcDashboard.nonce}).then(function(e){FFCDashboard.panels.profile.state=null,FFCDashboard.panels.profile.render(e)}).catch(function(e){var s=ffcDashboard.strings.saveError||"Error saving profile";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(s=e.xhr.responseJSON.message),t.text(s).css("color","#d63638"),a.prop("disabled",!1)})}()}),e(document).on("click",".ffc-profile-cancel-btn",function(e){e.preventDefault();var s=FFCDashboard.panels.profile.state;s&&FFCDashboard.panels.profile.render(s)}),e(document).on("click",".ffc-password-save-btn",function(s){s.preventDefault(),function(){var s=ffcDashboard.strings,a=e("#ffc-current-password").val(),t=e("#ffc-new-password").val(),o=e("#ffc-confirm-password").val(),f=e(".ffc-password-status");if(a&&t&&o)if(t===o)if(t.length<8)f.text(s.passwordTooShort||"Min 8 characters").css("color","#d63638");else{var r=e(".ffc-password-save-btn");r.prop("disabled",!0),f.text(s.saving||"Saving...").css("color","#666");var n=ffcDashboard.restUrl+"user/change-password";ffcDashboard.viewAsUserId&&(n+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(n,{method:"POST",data:{current_password:a,new_password:t},nonce:ffcDashboard.nonce}).then(function(a){f.text(a.message||s.passwordChanged||"Password changed!").css("color","#28a745"),e("#ffc-current-password, #ffc-new-password, #ffc-confirm-password").val(""),r.prop("disabled",!1)}).catch(function(e){var a=s.passwordError||"Error";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(a=e.xhr.responseJSON.message),f.text(a).css("color","#d63638"),r.prop("disabled",!1)})}else f.text(s.passwordMismatch||"Passwords do not match").css("color","#d63638");else f.text(s.passwordError||"All fields required").css("color","#d63638")}()}),e(document).on("click",".ffc-password-toggle-btn",function(s){s.preventDefault(),e("#ffc-tabpanel-profile .ffc-password-form").slideToggle(200)}),e(document).on("click",".ffc-lgpd-export-btn",function(e){e.preventDefault(),n("export_personal_data")}),e(document).on("click",".ffc-lgpd-delete-btn",function(e){e.preventDefault(),confirm(ffcDashboard.strings.confirmDeletion||"Are you sure?")&&n("remove_personal_data")}),e(document).on("change",".ffc-notif-toggle",function(){!function(){var s={};e(".ffc-notif-toggle").each(function(){s[e(this).data("key")]=e(this).is(":checked")});var a=e(".ffc-notif-status"),t=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(t+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(t,{method:"PUT",data:{preferences:s},nonce:ffcDashboard.nonce}).then(function(e){e.preferences&&FFCDashboard.panels.profile.state&&(FFCDashboard.panels.profile.state.preferences=e.preferences),a.text(ffcDashboard.strings.notifSaved||"Saved").show(),setTimeout(function(){a.fadeOut()},2e3)}).catch(function(){a.text(ffcDashboard.strings.saveError||"Error").css("color","#d63638").show()})}()})},load:function(){var s=e("#ffc-tabpanel-profile");if(!(s.find(".ffc-profile-info").length>0)){s.html(''+ffcDashboard.strings.loading+"
");var a=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(a+="?viewAsUserId="+ffcDashboard.viewAsUserId);var t=this;FFC.rest(a,{nonce:ffcDashboard.nonce}).then(function(e){t.render(e)}).catch(function(){s.html(''+ffcDashboard.strings.error+"
")})}},render:function(s){var r=e("#ffc-tabpanel-profile");this.state=s;var n=ffcDashboard.strings,i="";ffcDashboard.logoutUrl&&(i+='"),i+='',i+=o(n.name,"ffc-name-list",s.names,s.display_name),i+=o(n.linkedEmails,"ffc-email-list",s.emails,s.email),i+=o(n.cpfRf,"ffc-cpf-list",s.cpfs_masked,s.cpf_masked),i+='
'+(n.phone||"Phone:")+" ",i+='
'+a(s.phone||"-")+"
",i+='
'+(n.department||"Department:")+" ",i+='
'+a(s.department||"-")+"
",i+='
'+(n.organization||"Organization:")+" ",i+='
'+a(s.organization||"-")+"
",i+='
'+(n.birthDate||"Birth date:")+" ",i+='
'+a(s.birth_date_display||"-")+"
",s.notes&&(i+='
'+(n.notesLabel||"Notes:")+" ",i+='
'+a(s.notes)+"
"),s.audience_groups&&s.audience_groups.length>0&&(i+='
',i+="
"+(n.audienceGroups||"Groups")+" ",i+='
',s.audience_groups.forEach(function(e){i+=''+a(e.name)+" "}),i+="
"),i+='
'+n.memberSince+" ",i+='
'+a(s.member_since||"-")+"
",i+="
",i+='',i+=''+(n.editProfile||"Edit Profile")+" ",i+=''+(n.changePassword||"Change Password")+" ",s.audience_groups&&s.audience_groups.length>0&&(i+=''+(n.leaveAllGroups||"Leave all groups")+" "),i+="
",i+='",i+='
',FFCDashboard.audienceJoin&&"function"==typeof FFCDashboard.audienceJoin.load&&setTimeout(function(){FFCDashboard.audienceJoin.load()},0);var l=s.preferences||{};i+='',i+="
"+(n.notificationSection||"Notification Preferences")+" ",i+='
',i+=f("notify_appointment_reminder",n.notifAppointmentReminder||"Appointment reminder",l,!0),ffcDashboard.dateMessagesEnabled&&(i+=f("notify_date_messages",n.notifDateMessages||"Date messages (such as birthday greetings)",l,!0)),i+="
",i+='
',i+="
",i+='',i+="
"+(n.privacySection||"Privacy & Data (LGPD)")+" ",i+='
'+(n.exportDataDesc||"Request a copy of all your personal data stored in the system.")+"
",i+='
'+(n.exportData||"Export My Data")+" ",i+='
'+(n.deletionDataDesc||"Request deletion of your personal data. An administrator will review your request.")+"
",i+='
'+(n.requestDeletion||"Request Data Deletion")+" ",i+='
',i+="
",r.html(i)},reload:function(){this.state=null;var s=e("#ffc-tabpanel-profile");s.html(''+ffcDashboard.strings.loading+"
");var a=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(a+="?viewAsUserId="+ffcDashboard.viewAsUserId);var t=this;FFC.rest(a,{nonce:ffcDashboard.nonce}).then(function(e){t.render(e)}).catch(function(){s.html(''+ffcDashboard.strings.error+"
")})}}}(jQuery);
+!function(e){"use strict";var a=FFCDashboard.helpers,s=a.esc,t=a.escAttr;function o(e,a,t,o){var r=''+e+" ";return t&&t.length>1?(r+='
',t.forEach(function(e){r+=""+s(e)+" "}),r+=" "):t&&1===t.length?r+='
'+s(t[0])+"
":r+='
'+s(o||"-")+"
",r+="
"}function r(e,a,s,t){var o=Object.prototype.hasOwnProperty.call(s,e);return''+a+" "}function f(){var a=e("#ffc-tabpanel-profile"),o=FFCDashboard.panels.profile.state;if(o){var r=ffcDashboard.strings,f='",a.html(f),window.FFC&&window.FFC.Fields&&window.FFC.Fields.initMasks(a.find(".ffc-profile-edit-form"))}}function n(a){var s=e(".ffc-lgpd-status");s.text(ffcDashboard.strings.loading||"Loading...").css("color","#666").show();var t=ffcDashboard.restUrl+"user/privacy-request";ffcDashboard.viewAsUserId&&(t+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(t,{method:"POST",data:{type:a},nonce:ffcDashboard.nonce}).then(function(e){s.text(e.message||ffcDashboard.strings.privacyRequestSent||"Request sent!").css("color","#28a745")}).catch(function(e){var a=ffcDashboard.strings.privacyRequestError||"Error";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(a=e.xhr.responseJSON.message),s.text(a).css("color","#d63638")})}FFCDashboard.panels.profile={state:null,bindEvents:function(){e(document).on("click",".ffc-profile-edit-btn",function(e){e.preventDefault(),f()}),e(document).on("click",".ffc-profile-save-btn",function(a){a.preventDefault(),function(){var a={display_name:e("#ffc-edit-display-name").val(),phone:e("#ffc-edit-phone").val(),department:e("#ffc-edit-department").val(),organization:e("#ffc-edit-organization").val(),notes:e("#ffc-edit-notes").val(),birth_date:e("#ffc-edit-birth-date").val()},s=e(".ffc-profile-save-btn"),t=e(".ffc-profile-save-status");s.prop("disabled",!0),t.text(ffcDashboard.strings.saving||"Saving...").show().css("color","#666");var o=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(o+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(o,{method:"PUT",data:a,nonce:ffcDashboard.nonce}).then(function(e){FFCDashboard.panels.profile.state=null,FFCDashboard.panels.profile.render(e)}).catch(function(e){var a=ffcDashboard.strings.saveError||"Error saving profile";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(a=e.xhr.responseJSON.message),t.text(a).css("color","#d63638"),s.prop("disabled",!1)})}()}),e(document).on("click",".ffc-profile-cancel-btn",function(e){e.preventDefault();var a=FFCDashboard.panels.profile.state;a&&FFCDashboard.panels.profile.render(a)}),e(document).on("click",".ffc-password-save-btn",function(a){a.preventDefault(),function(){var a=ffcDashboard.strings,s=e("#ffc-current-password").val(),t=e("#ffc-new-password").val(),o=e("#ffc-confirm-password").val(),r=e(".ffc-password-status");if(s&&t&&o)if(t===o)if(t.length<8)r.text(a.passwordTooShort||"Min 8 characters").css("color","#d63638");else{var f=e(".ffc-password-save-btn");f.prop("disabled",!0),r.text(a.saving||"Saving...").css("color","#666");var n=ffcDashboard.restUrl+"user/change-password";ffcDashboard.viewAsUserId&&(n+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(n,{method:"POST",data:{current_password:s,new_password:t},nonce:ffcDashboard.nonce}).then(function(s){r.text(s.message||a.passwordChanged||"Password changed!").css("color","#28a745"),e("#ffc-current-password, #ffc-new-password, #ffc-confirm-password").val(""),f.prop("disabled",!1)}).catch(function(e){var s=a.passwordError||"Error";e.xhr&&e.xhr.responseJSON&&e.xhr.responseJSON.message&&(s=e.xhr.responseJSON.message),r.text(s).css("color","#d63638"),f.prop("disabled",!1)})}else r.text(a.passwordMismatch||"Passwords do not match").css("color","#d63638");else r.text(a.passwordError||"All fields required").css("color","#d63638")}()}),e(document).on("click",".ffc-password-toggle-btn",function(a){a.preventDefault(),e("#ffc-tabpanel-profile .ffc-password-form").slideToggle(200)}),e(document).on("click",".ffc-lgpd-export-btn",function(e){e.preventDefault(),n("export_personal_data")}),e(document).on("click",".ffc-lgpd-delete-btn",function(e){e.preventDefault(),confirm(ffcDashboard.strings.confirmDeletion||"Are you sure?")&&n("remove_personal_data")}),e(document).on("change",".ffc-notif-toggle",function(){!function(){var a={};e(".ffc-notif-toggle").each(function(){a[e(this).data("key")]=e(this).is(":checked")});var s=e(".ffc-notif-status"),t=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(t+="?viewAsUserId="+ffcDashboard.viewAsUserId),FFC.rest(t,{method:"PUT",data:{preferences:a},nonce:ffcDashboard.nonce}).then(function(e){e.preferences&&FFCDashboard.panels.profile.state&&(FFCDashboard.panels.profile.state.preferences=e.preferences),s.text(ffcDashboard.strings.notifSaved||"Saved").show(),setTimeout(function(){s.fadeOut()},2e3)}).catch(function(){s.text(ffcDashboard.strings.saveError||"Error").css("color","#d63638").show()})}()})},load:function(){var a=e("#ffc-tabpanel-profile");if(!(a.find(".ffc-profile-info").length>0)){a.html(''+ffcDashboard.strings.loading+"
");var s=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(s+="?viewAsUserId="+ffcDashboard.viewAsUserId);var t=this;FFC.rest(s,{nonce:ffcDashboard.nonce}).then(function(e){t.render(e)}).catch(function(){a.html(''+ffcDashboard.strings.error+"
")})}},render:function(a){var f=e("#ffc-tabpanel-profile");this.state=a;var n=ffcDashboard.strings,i="";ffcDashboard.logoutUrl&&(i+='"),i+='',i+=o(n.name,"ffc-name-list",a.names,a.display_name),i+=o(n.linkedEmails,"ffc-email-list",a.emails,a.email),i+=o(n.cpfRf,"ffc-cpf-list",a.cpfs_masked,a.cpf_masked),i+='
'+(n.phone||"Phone:")+" ",i+='
'+s(a.phone||"-")+"
",i+='
'+(n.department||"Department:")+" ",i+='
'+s(a.department||"-")+"
",i+='
'+(n.organization||"Organization:")+" ",i+='
'+s(a.organization||"-")+"
",i+='
'+(n.birthDate||"Birth date:")+" ",i+='
'+s(a.birth_date_display||"-")+"
",a.notes&&(i+='
'+(n.notesLabel||"Notes:")+" ",i+='
'+s(a.notes)+"
"),a.audience_groups&&a.audience_groups.length>0&&(i+='
',i+="
"+(n.audienceGroups||"Groups")+" ",i+='
',a.audience_groups.forEach(function(e){i+=''+s(e.name)+" "}),i+="
"),i+='
'+n.memberSince+" ",i+='
'+s(a.member_since||"-")+"
",i+="
",i+='',i+=''+(n.editProfile||"Edit Profile")+" ",i+=''+(n.changePassword||"Change Password")+" ",a.audience_groups&&a.audience_groups.length>0&&(i+=''+(n.leaveAllGroups||"Leave all groups")+" "),i+="
",i+='",i+='
',FFCDashboard.audienceJoin&&"function"==typeof FFCDashboard.audienceJoin.load&&setTimeout(function(){FFCDashboard.audienceJoin.load()},0);var l=a.preferences||{};i+='',i+="
"+(n.notificationSection||"Notification Preferences")+" ",i+='
',i+=r("notify_appointment_reminder",n.notifAppointmentReminder||"Appointment reminder",l,!0),ffcDashboard.dateMessagesEnabled&&(i+=r("notify_date_messages",n.notifDateMessages||"Date messages (such as birthday greetings)",l,!0)),i+="
",i+='
',i+="
",i+='',i+="
"+(n.privacySection||"Privacy & Data (LGPD)")+" ",i+='
'+(n.exportDataDesc||"Request a copy of all your personal data stored in the system.")+"
",i+='
'+(n.exportData||"Export My Data")+" ",i+='
'+(n.deletionDataDesc||"Request deletion of your personal data. An administrator will review your request.")+"
",i+='
'+(n.requestDeletion||"Request Data Deletion")+" ",i+='
',i+="
",f.html(i)},reload:function(){this.state=null;var a=e("#ffc-tabpanel-profile");a.html(''+ffcDashboard.strings.loading+"
");var s=ffcDashboard.restUrl+"user/profile";ffcDashboard.viewAsUserId&&(s+="?viewAsUserId="+ffcDashboard.viewAsUserId);var t=this;FFC.rest(s,{nonce:ffcDashboard.nonce}).then(function(e){t.render(e)}).catch(function(){a.html(''+ffcDashboard.strings.error+"
")})}}}(jQuery);
//# sourceMappingURL=ffc-user-dashboard-profile.min.js.map
\ No newline at end of file
diff --git a/includes/admin/class-ffc-admin-ui.php b/includes/admin/class-ffc-admin-ui.php
index 8cf3d5264..c5125c682 100644
--- a/includes/admin/class-ffc-admin-ui.php
+++ b/includes/admin/class-ffc-admin-ui.php
@@ -3,7 +3,7 @@
* Reusable admin UI helpers.
*
* Currently exposes `render_toggle()` — emits the markup contract the
- * `.ffc-toggle` CSS expects (label > hidden checkbox + decorative
+ * `.ffc-control-toggle` CSS expects (label > hidden checkbox + decorative
* track + visible label text). Keeping the markup behind a helper lets
* every call-site stay consistent without copying the HTML.
*
@@ -46,7 +46,7 @@ public static function autosave_strings(): array {
}
/**
- * Render a toggle switch (`.ffc-toggle`) — visually a switch, an
+ * Render a toggle switch (`.ffc-control-toggle`) — visually a switch, an
* accessible checkbox underneath.
*
* Usage:
@@ -75,7 +75,10 @@ public static function autosave_strings(): array {
* `.ffc-field-required`), `title` (optional
* string, tooltip on the wrapper label),
* `data` (optional array of
- * data-* attributes on the input).
+ * data-* attributes on the input), `mark`
+ * (optional bool, draws a check or a cross
+ * on the knob so on and off do not rest on
+ * colour alone; #1748).
*/
public static function render_toggle( array $args ): void {
$name = $args['name'] ?? '';
@@ -92,7 +95,7 @@ public static function render_toggle( array $args ): void {
$input_class = trim( (string) ( $args['input_class'] ?? '' ) );
$data = $args['data'] ?? array();
- $wrapper_class = 'ffc-toggle' . ( '' !== $extra ? ' ' . $extra : '' );
+ $wrapper_class = 'ffc-control-toggle' . ( ! empty( $args['mark'] ) ? ' ffc-control-toggle-mark' : '' ) . ( '' !== $extra ? ' ' . $extra : '' );
$title_attr = '' !== $title ? ' title="' . esc_attr( $title ) . '"' : '';
$data_attrs = '';
@@ -120,9 +123,9 @@ public static function render_toggle( array $args ): void {
$input_class_attr, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- pre-escaped above.
$data_attrs // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- pre-escaped above.
);
- echo ' ';
+ echo ' ';
if ( '' !== $label ) {
- echo '' . esc_html( $label ) . ' ';
+ echo '' . esc_html( $label ) . ' ';
}
echo ' ';
}
diff --git a/includes/admin/class-ffc-admin-user-capabilities.php b/includes/admin/class-ffc-admin-user-capabilities.php
index d18a33978..bcd388eb5 100644
--- a/includes/admin/class-ffc-admin-user-capabilities.php
+++ b/includes/admin/class-ffc-admin-user-capabilities.php
@@ -81,7 +81,7 @@ public static function enqueue_scripts( string $hook_suffix ): void {
return;
}
$s = \FreeFormCertificate\Core\AssetHelper::asset_suffix();
- // ffc-common.css carries the .ffc-toggle switch styles reused by the
+ // ffc-common.css carries the .ffc-control-toggle switch styles reused by the
// capability rows; ffc-user-permissions.css adds the grouped-card
// layout, slug chips, origin badges and search/preset toolbar.
wp_enqueue_style(
diff --git a/includes/admin/class-ffc-cert-template-admin-screen.php b/includes/admin/class-ffc-cert-template-admin-screen.php
index 45b3576a8..ba2fbf64b 100644
--- a/includes/admin/class-ffc-cert-template-admin-screen.php
+++ b/includes/admin/class-ffc-cert-template-admin-screen.php
@@ -830,10 +830,10 @@ public function render_options_metabox( \WP_Post $post ): void {
$toggle_help = __( 'When on, this template appears in the certificate form editor’s “Load” dropdown.', 'ffcertificate' );
}
?>
-
+
>
-
-
+
+
diff --git a/includes/admin/class-ffc-form-list-columns.php b/includes/admin/class-ffc-form-list-columns.php
index b5e05d4ed..98ba8e162 100644
--- a/includes/admin/class-ffc-form-list-columns.php
+++ b/includes/admin/class-ffc-form-list-columns.php
@@ -265,7 +265,7 @@ private static function get_feature_states( int $post_id ): array {
/**
* Render the three feature toggles for one row.
*
- * Each toggle keeps the markup contract `.ffc-toggle` expects — the
+ * Each toggle keeps the markup contract `.ffc-control-toggle` expects — the
* underlying checkbox carries the `data-ffc-form-id` /
* `data-ffc-feature` attributes the JS handler reads on change.
*
diff --git a/includes/audience/class-ffc-audience-admin-audience-renderer.php b/includes/audience/class-ffc-audience-admin-audience-renderer.php
index 417f9c7e3..1e3390db5 100644
--- a/includes/audience/class-ffc-audience-admin-audience-renderer.php
+++ b/includes/audience/class-ffc-audience-admin-audience-renderer.php
@@ -411,7 +411,7 @@ static function ( string $label ): string {
(input_class) because
// ffc-custom-fields-admin.js serialises each row via those selectors.
// Unique ids via the {{data.index}} mustache so cloned rows don't collide.
diff --git a/includes/core/class-ffc-icons.php b/includes/core/class-ffc-icons.php
index ff9251e67..9391f016d 100644
--- a/includes/core/class-ffc-icons.php
+++ b/includes/core/class-ffc-icons.php
@@ -414,6 +414,17 @@ public static function svg( string $name, int $size = 20 ): string {
);
}
+ /**
+ * Icons a component draws where no `.ffc-icon-*` class can reach -- a
+ * pseudo-element of another control, such as the toggle knob's mark
+ * (#1748). Each becomes a `--ffc-icon-mask-` custom property on
+ * `:root`, holding the same mask the class would use, so the drawing still
+ * has one source.
+ *
+ * @var array
+ */
+ public const MASKS = array( 'check', 'x' );
+
/**
* The CSS that draws every `.ffc-icon-*` class, between its markers.
*
@@ -473,7 +484,13 @@ public static function stylesheet(): string {
. " }\n"
. '}';
- return self::CSS_BEGIN . "\n" . $base . "\n\n" . implode( "\n\n", $rules ) . "\n\n" . self::tone_rules() . "\n\n" . $forced . "\n" . self::CSS_END;
+ $masks = array();
+ foreach ( self::MASKS as $icon ) {
+ $masks[] = ' --ffc-icon-mask-' . $icon . ': url("data:image/svg+xml,' . self::data_uri_body( $icon ) . '");';
+ }
+ $mask_vars = ":root {\n" . implode( "\n", $masks ) . "\n}";
+
+ return self::CSS_BEGIN . "\n" . $base . "\n\n" . implode( "\n\n", $rules ) . "\n\n" . $mask_vars . "\n\n" . self::tone_rules() . "\n\n" . $forced . "\n" . self::CSS_END;
}
/**
diff --git a/includes/recruitment/class-ffc-recruitment-admin-assets-manager.php b/includes/recruitment/class-ffc-recruitment-admin-assets-manager.php
index 12ff3aff7..8ab9a1af5 100644
--- a/includes/recruitment/class-ffc-recruitment-admin-assets-manager.php
+++ b/includes/recruitment/class-ffc-recruitment-admin-assets-manager.php
@@ -70,7 +70,7 @@ public static function maybe_enqueue( string $hook_suffix ): void {
$css_ver = file_exists( $css_path ) ? (string) filemtime( $css_path ) : FFC_VERSION;
$js_ver = file_exists( $js_path ) ? (string) filemtime( $js_path ) : FFC_VERSION;
- // ffc-common.css carries the .ffc-toggle switch styles used by the
+ // ffc-common.css carries the .ffc-control-toggle switch styles used by the
// notice/reason editors (render_toggle); load it as a dependency.
$s = \FreeFormCertificate\Core\AssetHelper::asset_suffix();
wp_enqueue_style(
diff --git a/includes/settings/tabs/class-ffc-tab-advanced.php b/includes/settings/tabs/class-ffc-tab-advanced.php
index ee0fcf0fb..e7141bc15 100644
--- a/includes/settings/tabs/class-ffc-tab-advanced.php
+++ b/includes/settings/tabs/class-ffc-tab-advanced.php
@@ -38,7 +38,7 @@ protected function init(): void {
/**
* Enqueue auto-save infrastructure when this tab is active. Powers
- * the `.ffc-toggle` switches for the activity-log master flag and
+ * the `.ffc-control-toggle` switches for the activity-log master flag and
* the per-module debug flags.
*
* @param string $hook Current admin page hook.
diff --git a/includes/settings/tabs/class-ffc-tab-cache.php b/includes/settings/tabs/class-ffc-tab-cache.php
index 4c8188d53..f6ed8e338 100644
--- a/includes/settings/tabs/class-ffc-tab-cache.php
+++ b/includes/settings/tabs/class-ffc-tab-cache.php
@@ -38,7 +38,7 @@ protected function init(): void {
/**
* Enqueue auto-save infrastructure when this tab is active so the
- * `.ffc-toggle` switches in the view persist inline via the
+ * `.ffc-control-toggle` switches in the view persist inline via the
* `ffc_update_setting` endpoint.
*
* @param string $hook Current admin page hook.
diff --git a/includes/settings/tabs/class-ffc-tab-ip-diagnostics.php b/includes/settings/tabs/class-ffc-tab-ip-diagnostics.php
index 8abe88517..f25abbd55 100644
--- a/includes/settings/tabs/class-ffc-tab-ip-diagnostics.php
+++ b/includes/settings/tabs/class-ffc-tab-ip-diagnostics.php
@@ -56,7 +56,7 @@ protected function init(): void {
/**
* Enqueue the auto-save infrastructure when this tab is active — powers the
- * `shadow_logging` `.ffc-toggle` switch.
+ * `shadow_logging` `.ffc-control-toggle` switch.
*
* @param string $hook Current admin page hook.
*/
@@ -631,7 +631,7 @@ private function render_config_form(): void {
echo '
';
echo '';
- // Shadow logging — a `.ffc-toggle` with autosave (allowlisted key
+ // Shadow logging — a `.ffc-control-toggle` with autosave (allowlisted key
// `shadow_logging`). Kept a NAMED field in this form so the form Save
// also writes its current state: autosave + form-save stay consistent,
// never clobber (the settings-autosave invariant, see CLAUDE.md).
diff --git a/includes/settings/tabs/class-ffc-tab-modulos.php b/includes/settings/tabs/class-ffc-tab-modulos.php
index 42aed8e93..b17498d95 100644
--- a/includes/settings/tabs/class-ffc-tab-modulos.php
+++ b/includes/settings/tabs/class-ffc-tab-modulos.php
@@ -42,7 +42,7 @@ protected function init(): void {
}
/**
- * Enqueue the settings-autosave infra so the per-module `.ffc-toggle`
+ * Enqueue the settings-autosave infra so the per-module `.ffc-control-toggle`
* switches bind to the incremental settings AJAX endpoint.
*
* @param string $hook Current admin page hook.
diff --git a/includes/settings/tabs/class-ffc-tab-rate-limit.php b/includes/settings/tabs/class-ffc-tab-rate-limit.php
index 304986204..d87b625b4 100644
--- a/includes/settings/tabs/class-ffc-tab-rate-limit.php
+++ b/includes/settings/tabs/class-ffc-tab-rate-limit.php
@@ -37,7 +37,7 @@ protected function init(): void {
/**
* Enqueue auto-save infrastructure when this tab is active. Powers
- * the `.ffc-toggle` switches for the per-group feature flags
+ * the `.ffc-control-toggle` switches for the per-group feature flags
* (ip/email/cpf/global/device "enabled" + their satellites).
*
* @param string $hook Current admin page hook.
diff --git a/includes/settings/tabs/class-ffc-tab-smtp.php b/includes/settings/tabs/class-ffc-tab-smtp.php
index e801085cb..5a72dbba3 100644
--- a/includes/settings/tabs/class-ffc-tab-smtp.php
+++ b/includes/settings/tabs/class-ffc-tab-smtp.php
@@ -61,7 +61,7 @@ public function enqueue_scripts( string $hook ): void {
FFC_VERSION,
true
);
- // Powers the `.ffc-toggle` switch on `disable_all_emails`.
+ // Powers the `.ffc-control-toggle` switch on `disable_all_emails`.
$this->enqueue_autosave_infra();
}
diff --git a/includes/settings/tabs/class-ffc-tab-url-shortener.php b/includes/settings/tabs/class-ffc-tab-url-shortener.php
index de2765b81..c91681c88 100644
--- a/includes/settings/tabs/class-ffc-tab-url-shortener.php
+++ b/includes/settings/tabs/class-ffc-tab-url-shortener.php
@@ -35,7 +35,7 @@ protected function init(): void {
}
/**
- * Enqueue autosave infra so the two `.ffc-toggle` switches on this tab
+ * Enqueue autosave infra so the two `.ffc-control-toggle` switches on this tab
* (url_shortener_enabled / url_shortener_auto_create) bind to the
* incremental settings AJAX endpoint.
*
diff --git a/includes/settings/tabs/class-ffc-tab-user-access.php b/includes/settings/tabs/class-ffc-tab-user-access.php
index 61dd05968..ab0b6852f 100644
--- a/includes/settings/tabs/class-ffc-tab-user-access.php
+++ b/includes/settings/tabs/class-ffc-tab-user-access.php
@@ -37,7 +37,7 @@ protected function init(): void {
}
/**
- * Enqueue autosave infra so the three `.ffc-toggle` switches on this tab
+ * Enqueue autosave infra so the three `.ffc-control-toggle` switches on this tab
* (block_wp_admin / bypass_for_admins / allow_admin_bar) bind to the
* incremental settings AJAX endpoint via their `user_access_*` allowlist keys.
*
diff --git a/includes/settings/views/ffc-tab-smtp.php b/includes/settings/views/ffc-tab-smtp.php
index 7a9a57849..af316eafe 100644
--- a/includes/settings/views/ffc-tab-smtp.php
+++ b/includes/settings/views/ffc-tab-smtp.php
@@ -66,7 +66,7 @@
wrapper rather than — WP admin's
// `.form-table td fieldset label { display: inline-block }`
- // rule was overriding `.ffc-toggle { display: inline-flex }`
+ // rule was overriding `.ffc-control-toggle { display: inline-flex }`
// and rendering the toggle track over the label text.
?>
diff --git a/tests/Unit/AdminStylesheetTokensTest.php b/tests/Unit/AdminStylesheetTokensTest.php
index 1200e5662..9120aaebd 100644
--- a/tests/Unit/AdminStylesheetTokensTest.php
+++ b/tests/Unit/AdminStylesheetTokensTest.php
@@ -105,7 +105,7 @@ final class AdminStylesheetTokensTest extends TestCase {
'ffc-audience.css' => 2,
'ffc-audience-admin.css' => 4,
'ffc-frontend.css' => 4,
- 'ffc-user-dashboard.css' => 2,
+ 'ffc-user-dashboard.css' => 1,
'ffc-user-permissions.css' => 13,
// The palette itself, and the two sheets whose literals ARE the point:
@@ -117,7 +117,11 @@ final class AdminStylesheetTokensTest extends TestCase {
// opting out of the theme, and here it is how a theme is declared.
// The ratchet still bites: six is the whole of `--ffc-accent-*`, so a
// seventh has to be argued.
- 'ffc-common.css' => 123,
+ //
+ // 123 -> 124 in #1748: the ink of the toggle's optional mark. The knob
+ // is white in both themes by decision, so what is drawn on it cannot
+ // follow a token that lightens in the dark theme.
+ 'ffc-common.css' => 124,
'ffc-code-editor-dark.css' => 35,
'ffc-pdf-core.css' => 12,
// The screenshot viewer in core's "View details" modal (#1716). That
@@ -1185,7 +1189,7 @@ public function test_the_control_scan_can_see_the_shape_it_forbids(): void {
);
$this->assertSame(
array(),
- self::detect_controls( ".x .ffc-toggle-track { background: var(--ffc-bg-alt); }" ),
+ self::detect_controls( ".x .ffc-control-toggle-track { background: var(--ffc-bg-alt); }" ),
'A toggle track carries no text.'
);
}
diff --git a/tests/Unit/AdminUITest.php b/tests/Unit/AdminUITest.php
index 1f94e66ed..f3b529ae0 100644
--- a/tests/Unit/AdminUITest.php
+++ b/tests/Unit/AdminUITest.php
@@ -44,14 +44,14 @@ public function test_renders_nothing_when_name_is_missing(): void {
public function test_renders_unchecked_toggle_by_default(): void {
$html = $this->capture( array( 'name' => 'my_key' ) );
- $this->assertStringContainsString( 'class="ffc-toggle"', $html );
+ $this->assertStringContainsString( 'class="ffc-control-toggle"', $html );
$this->assertStringContainsString( 'name="my_key"', $html );
$this->assertStringContainsString( 'id="my_key"', $html );
$this->assertStringContainsString( 'type="checkbox"', $html );
$this->assertStringContainsString( 'value="1"', $html );
$this->assertStringNotContainsString( 'checked', $html );
$this->assertStringNotContainsString( 'disabled', $html );
- $this->assertStringContainsString( '
assertStringContainsString( ' 'My toggle',
)
);
- $this->assertStringContainsString( 'My toggle ', $html );
+ $this->assertStringContainsString( 'My toggle ', $html );
}
public function test_separate_id_and_name(): void {
@@ -83,7 +83,7 @@ public function test_separate_id_and_name(): void {
public function test_appends_extra_class(): void {
$html = $this->capture( array( 'name' => 'k', 'class' => 'is-large' ) );
- $this->assertStringContainsString( 'class="ffc-toggle is-large"', $html );
+ $this->assertStringContainsString( 'class="ffc-control-toggle is-large"', $html );
}
public function test_emits_data_attributes(): void {
@@ -121,9 +121,9 @@ public function test_get_toggle_returns_markup_instead_of_echoing(): void {
$echoed = (string) ob_get_clean();
$this->assertSame( '', $echoed, 'get_toggle must not echo' );
- $this->assertStringContainsString( 'class="ffc-toggle"', $returned );
+ $this->assertStringContainsString( 'class="ffc-control-toggle"', $returned );
$this->assertStringContainsString( 'name="k"', $returned );
- $this->assertStringContainsString( 'My toggle ', $returned );
+ $this->assertStringContainsString( 'My toggle ', $returned );
}
/**
@@ -332,6 +332,25 @@ public function test_stat_card_link_needs_both_url_and_label(): void {
$this->assertStringNotContainsString( ' 'Calendars', 'link' => 'Manage' ) ) );
}
+ public function test_toggle_mark_is_opt_in(): void {
+ ob_start();
+ AdminUI::render_toggle(
+ array(
+ 'name' => 'flag',
+ 'mark' => true,
+ 'class' => 'extra',
+ )
+ );
+ $marked = (string) ob_get_clean();
+ ob_start();
+ AdminUI::render_toggle( array( 'name' => 'flag' ) );
+ $plain = (string) ob_get_clean();
+
+ $this->assertStringContainsString( '