@charset "UTF-8";@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-cyrillic-wght-normal-JEOLYBOO.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-greek-ext-wght-normal-EOVOK2B5.woff2") format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-greek-wght-normal-IRE366VL.woff2") format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-vietnamese-wght-normal-CE5GGD3W.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-latin-ext-wght-normal-HA22NDSG.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-latin-wght-normal-NRMW37G5.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-cyrillic-ext-wght-normal-JQUONSEA.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-vietnamese-wght-normal-TOS5SH3L.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-latin-ext-wght-normal-UBEBQO7H.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url("./media/plus-jakarta-sans-latin-wght-normal-XZSBT77D.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--fond: #f8fafc;--surface: #ffffff;--texte: #0f172a;--texte-discret: #475569;--bordure: #cbd5e1;--bordure-forte: #64748b;--accent: #006930;--accent-texte: #006930;--accent-survol: #083d22;--sur-accent: #ffffff;--accent-doux: #e6f4ea;--danger: #b3141b;--danger-fond: #fee2e2;--avert: #8a4a00;--avert-fond: #fef3c7;--succes: #14532d;--succes-fond: #dcfce7;--info: #1d4ed8;--info-fond: #e0e7ff;--neutre: #475569;--neutre-fond: #f1f5f9;--focus: #1d4ed8;--survol: #eef2f7;--lisere: #00853f;--sur-danger: #ffffff;--voile: rgb(15 23 42 / .55);--espace-1: .25rem;--espace-2: .5rem;--espace-3: .75rem;--espace-4: 1rem;--espace-5: 1.5rem;--espace-6: 2.5rem;--rayon-s: 4px;--rayon: 8px;--rayon-l: 16px;--ombre-1: 0 1px 2px rgb(15 23 42 / .06), 0 3px 10px -2px rgb(15 23 42 / .1);--carte-bordure: transparent;--ombre-2: 0 4px 12px -2px rgb(15 23 42 / .08);--ombre-3: 0 16px 32px -4px rgb(15 23 42 / .12);--police: Inter Variable, Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--police-titre: "Plus Jakarta Sans Variable", "Plus Jakarta Sans", var(--police);--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--haut-entete: 3.25rem}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--fond: #0b1220;--surface: #131c2e;--texte: #e7edf6;--texte-discret: #a9b6c8;--bordure: #2b3a52;--bordure-forte: #7b8aa0;--accent: #71dc8b;--accent-texte: #71dc8b;--accent-survol: #9ff0b3;--sur-accent: #00210b;--accent-doux: #12301e;--danger: #ff9ea1;--danger-fond: #3d1a1c;--avert: #ffb77d;--avert-fond: #3a2610;--succes: #86e3a0;--succes-fond: #12301e;--info: #9db4ff;--info-fond: #1c2748;--neutre: #b6c2d3;--neutre-fond: #1e293b;--focus: #fbbf24;--survol: #1b2740;--sur-danger: #3d0a0c;--voile: rgb(0 0 0 / .65);--ombre-1: none;--carte-bordure: var(--bordure);--ombre-2: none;--ombre-3: none}}:root[data-theme=dark]{color-scheme:dark;--fond: #0b1220;--surface: #131c2e;--texte: #e7edf6;--texte-discret: #a9b6c8;--bordure: #2b3a52;--bordure-forte: #7b8aa0;--accent: #71dc8b;--accent-texte: #71dc8b;--accent-survol: #9ff0b3;--sur-accent: #00210b;--accent-doux: #12301e;--danger: #ff9ea1;--danger-fond: #3d1a1c;--avert: #ffb77d;--avert-fond: #3a2610;--succes: #86e3a0;--succes-fond: #12301e;--info: #9db4ff;--info-fond: #1c2748;--neutre: #b6c2d3;--neutre-fond: #1e293b;--focus: #fbbf24;--survol: #1b2740;--sur-danger: #3d0a0c;--voile: rgb(0 0 0 / .65);--ombre-1: none;--carte-bordure: var(--bordure);--ombre-2: none;--ombre-3: none}:root[data-theme=light]{color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-padding-top:4rem}body{margin:0;font-family:var(--police);font-size:14px;line-height:20px;color:var(--texte);background:var(--fond)}h1,h2,h3{font-family:var(--police-titre);font-weight:600;margin:0;color:var(--texte)}h1{font-size:24px;line-height:32px}h2{font-size:20px;line-height:28px;margin:var(--espace-5) 0 var(--espace-3)}h3{font-size:16px;line-height:24px;margin:0 0 var(--espace-3)}p{margin:0}a{color:var(--accent-texte);text-underline-offset:2px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}svg{flex:none}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:var(--espace-2);min-height:36px;padding:0 var(--espace-4);border:1px solid var(--bordure-forte);border-radius:var(--rayon);background:var(--surface);color:var(--texte);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}.btn:hover,button:hover{background:var(--survol)}.btn.primaire,button:not([class]),button.primaire{background:var(--accent);border-color:var(--accent);color:var(--sur-accent)}.btn.primaire:hover,button:not([class]):hover,button.primaire:hover{background:var(--accent-survol);border-color:var(--accent-survol)}button.secondaire{background:var(--surface);color:var(--texte);border-color:var(--bordure-forte)}button.secondaire:hover{background:var(--survol)}.btn.danger{background:var(--danger);border-color:var(--danger);color:var(--sur-danger)}.btn.discret{border-color:transparent;background:transparent}.btn.discret:hover{background:var(--survol)}.btn.icone{width:36px;padding:0}.btn.grand{min-height:44px}.btn:disabled,button:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.btn[aria-busy=true]:before,button[aria-busy=true]:before{content:"";width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:tourne .8s linear infinite}@keyframes tourne{to{transform:rotate(360deg)}}label,.etiq{display:block;font-weight:600;margin-bottom:var(--espace-1)}input[type=text],input[type=search],input[type=email],input[type=number],input:not([type]),select,textarea{width:100%;min-height:36px;padding:0 var(--espace-3);border:1px solid var(--bordure-forte);border-radius:var(--rayon);background:var(--surface);color:var(--texte);font:inherit}textarea{padding:var(--espace-2) var(--espace-3);min-height:80px}select{appearance:none;padding-right:2.5rem;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 1.25rem) 50%,calc(100% - .9rem) 50%;background-size:.4rem .4rem;background-repeat:no-repeat}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}input:disabled,select:disabled,textarea:disabled{opacity:.7;cursor:not-allowed}.champ{display:flex;flex-direction:column;gap:var(--espace-1);margin-bottom:var(--espace-4)}.champ>label{margin:0}.champ input,.champ select{max-width:28rem}.aide{font-size:13px;line-height:18px;color:var(--texte-discret)}.champ-erreur{display:flex;gap:var(--espace-1);align-items:center;color:var(--danger);font-size:13px;margin:0}.grille2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--espace-4)}@media(max-width:40rem){.grille2{grid-template-columns:minmax(0,1fr)}}input[type=checkbox],input[type=radio]{appearance:none;-webkit-appearance:none;flex:none;width:24px;height:24px;min-height:0;margin:0;padding:0;border:2px solid var(--bordure-forte);background:var(--surface) center/16px no-repeat;cursor:pointer;display:inline-grid;place-content:center}input[type=checkbox]{border-radius:var(--rayon-s)}input[type=radio]{border-radius:50%}input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.8'/%3E%3C/svg%3E")}input[type=radio]:checked{border-color:var(--accent);background-image:radial-gradient(circle,var(--accent) 0 5px,transparent 6px)}:root[data-theme=dark] input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2300210b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.8'/%3E%3C/svg%3E")}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2300210b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.8'/%3E%3C/svg%3E")}}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.5;cursor:not-allowed}.choix{display:flex;align-items:center;gap:var(--espace-3);min-height:44px;font-weight:500;margin:0;cursor:pointer}.carte{background:var(--surface);border:1px solid var(--carte-bordure);border-radius:var(--rayon);box-shadow:var(--ombre-1);padding:var(--espace-4);margin:var(--espace-4) 0}.carte.sans-marge{padding:0;overflow:hidden}.alerte{display:flex;gap:var(--espace-3);align-items:flex-start;padding:var(--espace-3) var(--espace-4);border:1px solid var(--bordure-forte);border-radius:var(--rayon);margin:var(--espace-3) 0;background:var(--surface);color:var(--texte)}.alerte>div{min-width:0}.alerte .al-titre{font-weight:700}.alerte ul{margin:var(--espace-2) 0 0;padding-left:var(--espace-5)}.alerte.erreur{background:var(--danger-fond);border-color:var(--danger)}.alerte.erreur .al-titre,.alerte.erreur>svg{color:var(--danger)}.alerte.info{background:var(--info-fond);border-color:var(--info)}.alerte.info>svg{color:var(--info)}.alerte.succes{background:var(--succes-fond);border-color:var(--succes)}.alerte.succes>svg{color:var(--succes)}.alerte.avert{background:var(--avert-fond);border-color:var(--avert)}.alerte.avert>svg{color:var(--avert)}.info{background:var(--info-fond);border-radius:var(--rayon);padding:var(--espace-3) var(--espace-4)}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 var(--espace-2);border-radius:9999px;font-size:12px;line-height:16px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.b-neutre{background:var(--neutre-fond);color:var(--neutre);box-shadow:inset 0 0 0 1px var(--bordure)}.b-info{background:var(--info-fond);color:var(--info)}.b-avert{background:var(--avert-fond);color:var(--avert)}.b-succes{background:var(--succes-fond);color:var(--succes)}.b-danger{background:var(--danger-fond);color:var(--danger)}.pastille{display:inline-block;padding:0 var(--espace-2);border-radius:var(--rayon-s);background:var(--neutre-fond);box-shadow:inset 0 0 0 1px var(--bordure);font-size:12px;font-weight:600;color:var(--texte-discret)}.succes{color:var(--succes)}.discret{color:var(--texte-discret)}.mono{font-family:var(--mono);font-size:13px}.intro{color:var(--texte-discret)}.entete-page{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--espace-3);margin-bottom:var(--espace-4)}.titrage{display:flex;align-items:center;flex-wrap:wrap;gap:var(--espace-3)}.actions,.barre{display:flex;flex-wrap:wrap;align-items:center;gap:var(--espace-2)}.barre{gap:var(--espace-3)}.fil{display:flex;flex-wrap:wrap;gap:var(--espace-2);align-items:center;font-size:13px;color:var(--texte-discret)}.fil a{display:inline-flex;align-items:center;min-height:24px}.masque-visuel{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{text-align:left;padding:0 var(--espace-3);height:40px;border-bottom:1px solid var(--bordure);vertical-align:middle}thead th{position:sticky;top:0;background:var(--surface);color:var(--texte-discret);font-size:13px;font-weight:600;border-bottom:2px solid var(--bordure);height:40px}thead th[aria-sort]{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}thead th[aria-sort=ascending]:after{content:" \2191"}thead th[aria-sort=descending]:after{content:" \2193"}tbody th{font-weight:600}tbody tr:hover>*{background:var(--survol)}tbody tr:last-child>*{border-bottom:0}td.long{height:auto;padding:var(--espace-2) var(--espace-3);white-space:pre-wrap;max-width:36rem}.carte>table{border:0}th .tri{all:unset;display:inline-flex;align-items:center;gap:4px;min-height:24px;cursor:pointer}th .tri:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@media(max-width:40rem){table{display:block;overflow-x:auto}}textarea.json,pre.json,.code{width:100%;font-family:var(--mono);font-size:13px;line-height:20px}pre.json,.code{overflow:auto;max-height:24rem;margin:0;padding:var(--espace-3);background:var(--neutre-fond);border:1px solid var(--bordure);border-radius:var(--rayon)}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.onglets{display:flex;gap:2px;border-bottom:1px solid var(--bordure);overflow-x:auto;margin:var(--espace-4) 0}.onglets a,.onglets button{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 var(--espace-4);border:0;border-bottom:3px solid transparent;border-radius:0;background:none;font-weight:500;color:var(--texte-discret);text-decoration:none;white-space:nowrap}.onglets a:hover,.onglets button:hover{background:var(--survol)}.onglets [aria-current=page],.onglets [aria-selected=true]{color:var(--accent-texte);border-bottom-color:var(--accent);font-weight:600}.onglets .n{background:var(--danger-fond);color:var(--danger);border-radius:9999px;font-size:12px;font-weight:700;padding:0 6px;min-width:20px;text-align:center}.grow{flex:1}.champ-recherche{width:20rem;max-width:100%}.filtres{margin:var(--espace-3) 0 var(--espace-4)}.lien-fort{font-weight:600;text-decoration:none}.lien-fort:hover{text-decoration:underline}.droite{text-align:right}.entete-carte{display:flex;flex-wrap:wrap;align-items:center;gap:var(--espace-3);padding:var(--espace-4)}.entete-carte h2{margin:0}.liste-sobre{margin:0;padding-left:var(--espace-5)}.defs{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--espace-2) var(--espace-5);margin:0;padding:0 var(--espace-4) var(--espace-4)}.defs dt{font-weight:600}.defs dd{margin:0}.formulaire{display:flex;flex-direction:column;gap:var(--espace-4);padding:0 var(--espace-4) var(--espace-4);max-width:48rem}.formulaire.nu{padding:0;max-width:none}.groupe{margin:0;padding:0;border:0}.groupe>legend{padding:0;font-weight:600}.cellule-actions{display:flex;justify-content:flex-end;gap:var(--espace-1)}.sous-titre{padding:0 var(--espace-4);margin:var(--espace-4) 0 var(--espace-2)}f-minimap{background:var(--surface);border:1px solid var(--bordure-forte);border-radius:var(--rayon);overflow:hidden}.f-minimap-node{fill:var(--bordure-forte)}.f-minimap-view{fill:var(--accent);fill-opacity:.15;stroke:var(--accent);stroke-width:6}.f-connection .f-connection-path{stroke:var(--bordure-forte);stroke-width:2}.f-connection.f-selected .f-connection-path{stroke:var(--accent);stroke-width:3}.f-connection-drag-handle{display:none}.f-marker path{fill:var(--bordure-forte)}.f-connection.f-selected .f-marker path{fill:var(--accent)}:root{--ff-white: #ffffff;--ff-black: #000000;--ff-gray-0: #ffffff;--ff-gray-25: #fcfcfc;--ff-gray-50: #f8f8f7;--ff-gray-75: #f2f2f0;--ff-gray-100: #e9e9e6;--ff-gray-150: #dcdcd7;--ff-gray-200: #c9c9c1;--ff-gray-300: #afafa5;--ff-gray-400: #8d8d81;--ff-gray-500: #69695f;--ff-gray-600: #505048;--ff-gray-700: #3c3c36;--ff-gray-800: #272722;--ff-gray-900: #1b1b18;--ff-gray-950: #141412;--ff-gray-1000: #0f0f0d;--ff-alpha-black-04: rgba(15, 15, 13, .04);--ff-alpha-black-06: rgba(15, 15, 13, .06);--ff-alpha-black-08: rgba(15, 15, 13, .08);--ff-alpha-black-10: rgba(15, 15, 13, .1);--ff-alpha-black-12: rgba(15, 15, 13, .12);--ff-alpha-black-15: rgba(15, 15, 13, .15);--ff-alpha-black-20: rgba(15, 15, 13, .2);--ff-alpha-black-30: rgba(15, 15, 13, .3);--ff-alpha-black-40: rgba(15, 15, 13, .4);--ff-alpha-black-60: rgba(15, 15, 13, .6);--ff-alpha-white-04: rgba(255, 255, 255, .04);--ff-alpha-white-06: rgba(255, 255, 255, .06);--ff-alpha-white-08: rgba(255, 255, 255, .08);--ff-alpha-white-10: rgba(255, 255, 255, .1);--ff-alpha-white-12: rgba(255, 255, 255, .12);--ff-alpha-white-15: rgba(255, 255, 255, .15);--ff-alpha-white-20: rgba(255, 255, 255, .2);--ff-alpha-white-30: rgba(255, 255, 255, .3);--ff-alpha-white-40: rgba(255, 255, 255, .4);--ff-alpha-white-60: rgba(255, 255, 255, .6);--ff-blue-100: #e8f2ff;--ff-blue-200: #bad8ff;--ff-blue-300: #7db7ff;--ff-blue-400: #4176ff;--ff-blue-500: #2759db;--ff-blue-600: #1b3f9e;--ff-green-100: #e7f7ef;--ff-green-300: #71c795;--ff-green-400: #2b9b5f;--ff-green-500: #1e7748;--ff-yellow-100: #fff5de;--ff-yellow-300: #e1b354;--ff-yellow-400: #bb8121;--ff-yellow-500: #916112;--ff-red-100: #feeceb;--ff-red-300: #e48d85;--ff-red-400: #c55245;--ff-red-500: #9e3a2f;--ff-radius-4: 4px;--ff-radius-6: 6px;--ff-radius-pill: 999px;--ff-font-family-sans: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ff-font-family-mono: ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--ff-font-size-xs: 12px;--ff-font-size-sm: 14px;--ff-font-size-md: 16px;--ff-font-size-lg: 18px;--ff-shadow-1: 0 1px 2px rgba(15, 15, 13, .05), 0 8px 20px rgba(15, 15, 13, .04);--ff-shadow-2: 0 10px 28px rgba(15, 15, 13, .08), 0 3px 10px rgba(15, 15, 13, .05);--ff-shadow-3: 0 18px 48px rgba(15, 15, 13, .12), 0 6px 16px rgba(15, 15, 13, .08)}:root{--ff-color-surface-page: var(--ff-gray-25);--ff-color-surface-canvas: var(--ff-gray-25);--ff-color-surface-card: var(--ff-white);--ff-color-surface-group: rgba(65, 118, 255, .14);--ff-color-surface-group-active: rgba(65, 118, 255, .2);--ff-color-surface-muted: var(--ff-gray-50);--ff-color-surface-soft: var(--ff-gray-75);--ff-color-surface-accent-soft: rgba(65, 118, 255, .1);--ff-color-border-default: var(--ff-alpha-black-12);--ff-color-border-subtle: var(--ff-alpha-black-08);--ff-color-border-strong: var(--ff-alpha-black-20);--ff-color-border-accent: var(--ff-blue-500);--ff-color-text-primary: var(--ff-gray-800);--ff-color-text-secondary: var(--ff-gray-500);--ff-color-text-tertiary: var(--ff-gray-400);--ff-color-text-inverse: var(--ff-white);--ff-color-accent: var(--ff-blue-500);--ff-color-accent-strong: var(--ff-blue-600);--ff-color-success: var(--ff-green-400);--ff-color-warning: var(--ff-yellow-400);--ff-color-danger: var(--ff-red-400);--ff-color-disabled-surface: var(--ff-gray-100);--ff-color-disabled-border: var(--ff-alpha-black-10);--ff-color-disabled-text: var(--ff-gray-300);--ff-color-selection-fill: rgba(65, 118, 255, .12);--ff-color-selection-stroke: rgba(65, 118, 255, .28);--ff-color-grid: var(--ff-alpha-black-08);--ff-color-grid-strong: var(--ff-alpha-black-15);--ff-color-connector-connected: var(--ff-blue-500);--ff-color-connection: var(--ff-gray-600);--ff-color-connection-muted: var(--ff-gray-300);--ff-color-connection-hover: var(--ff-alpha-black-12);--ff-color-grouping-drop-target-border: var(--ff-gray-800);--ff-color-grouping-drop-target-border-active: var(--ff-gray-800);--ff-color-waypoint-fill: var(--ff-white);--ff-color-waypoint-stroke: var(--ff-blue-500);--ff-color-waypoint-candidate-fill: var(--ff-white);--ff-color-waypoint-candidate-stroke: var(--ff-green-400);--ff-color-minimap-surface: var(--ff-white);--ff-color-minimap-node: var(--ff-gray-700);--ff-color-minimap-view: rgba(65, 118, 255, .14);--ff-color-magnetic-line: var(--ff-blue-500);--ff-color-magnetic-rect-fill: rgba(65, 118, 255, .08);--ff-color-magnetic-rect-border: rgba(65, 118, 255, .24);--ff-radius-node: var(--ff-radius-4);--ff-radius-group: var(--ff-radius-4);--ff-radius-control: var(--ff-radius-4);--ff-radius-socket-square: var(--ff-radius-6);--ff-radius-pill: var(--ff-radius-pill);--ff-font-sans: var(--ff-font-family-sans);--ff-font-mono: var(--ff-font-family-mono);--ff-font-size-body: var(--ff-font-size-sm);--ff-font-size-label: var(--ff-font-size-xs);--ff-shadow-surface: var(--ff-shadow-1);--ff-shadow-floating: var(--ff-shadow-2)}.dark,[data-theme=dark]{--ff-color-surface-page: var(--ff-gray-1000);--ff-color-surface-canvas: var(--ff-gray-1000);--ff-color-surface-card: var(--ff-gray-950);--ff-color-surface-group: rgba(125, 183, 255, .18);--ff-color-surface-group-active: rgba(125, 183, 255, .24);--ff-color-surface-muted: var(--ff-gray-900);--ff-color-surface-soft: var(--ff-gray-900);--ff-color-surface-accent-soft: rgba(125, 183, 255, .14);--ff-color-border-default: var(--ff-alpha-white-12);--ff-color-border-subtle: var(--ff-alpha-white-08);--ff-color-border-strong: var(--ff-alpha-white-20);--ff-color-border-accent: var(--ff-blue-300);--ff-color-text-primary: var(--ff-gray-100);--ff-color-text-secondary: var(--ff-gray-300);--ff-color-text-tertiary: var(--ff-gray-400);--ff-color-text-inverse: var(--ff-gray-1000);--ff-color-accent: var(--ff-blue-300);--ff-color-accent-strong: var(--ff-blue-200);--ff-color-success: var(--ff-green-300);--ff-color-warning: var(--ff-yellow-300);--ff-color-danger: var(--ff-red-300);--ff-color-disabled-surface: var(--ff-gray-800);--ff-color-disabled-border: var(--ff-alpha-white-10);--ff-color-disabled-text: var(--ff-gray-500);--ff-color-selection-fill: rgba(125, 183, 255, .16);--ff-color-selection-stroke: rgba(125, 183, 255, .34);--ff-color-grid: var(--ff-alpha-white-08);--ff-color-grid-strong: var(--ff-alpha-white-15);--ff-color-connector-connected: var(--ff-blue-300);--ff-color-connection: var(--ff-gray-200);--ff-color-connection-muted: var(--ff-gray-500);--ff-color-connection-hover: var(--ff-alpha-white-12);--ff-color-grouping-drop-target-border: var(--ff-gray-100);--ff-color-grouping-drop-target-border-active: var(--ff-gray-100);--ff-color-waypoint-fill: var(--ff-gray-950);--ff-color-waypoint-stroke: var(--ff-blue-300);--ff-color-waypoint-candidate-fill: var(--ff-white);--ff-color-waypoint-candidate-stroke: var(--ff-green-300);--ff-color-minimap-surface: var(--ff-gray-950);--ff-color-minimap-node: var(--ff-gray-200);--ff-color-minimap-view: rgba(125, 183, 255, .18);--ff-color-magnetic-line: var(--ff-blue-300);--ff-color-magnetic-rect-fill: rgba(125, 183, 255, .1);--ff-color-magnetic-rect-border: rgba(125, 183, 255, .24);--ff-shadow-surface: 0 1px 2px rgba(0, 0, 0, .28), 0 8px 20px rgba(0, 0, 0, .14);--ff-shadow-floating: 0 14px 36px rgba(0, 0, 0, .26), 0 4px 12px rgba(0, 0, 0, .16)}:root{--ff-flow-background-color: var(--ff-color-surface-page);--ff-flow-text-color: var(--ff-color-text-primary);--ff-flow-font-family: var(--ff-font-sans);--ff-flow-font-size: var(--ff-font-size-body);--ff-canvas-background-color: var(--ff-color-surface-canvas);--ff-node-background-color: var(--ff-color-surface-card);--ff-node-background-color-inverse: var(--ff-color-text-primary);--ff-node-border-color: var(--ff-color-border-default);--ff-node-border-color-selected: var(--ff-color-border-accent);--ff-node-color: var(--ff-color-text-primary);--ff-node-border-radius: var(--ff-radius-node);--ff-node-shadow: var(--ff-shadow-surface);--ff-node-shadow-selected: var(--ff-shadow-floating);--ff-node-width: 120px;--ff-node-min-height: 56px;--ff-node-padding: 24px;--ff-group-background-color: var(--ff-color-surface-group);--ff-group-background-color-active: var(--ff-color-surface-group-active);--ff-group-border-color: var(--ff-color-border-subtle);--ff-group-border-color-selected: var(--ff-color-border-accent);--ff-group-border-color-active: var(--ff-color-border-accent);--ff-group-color: var(--ff-color-text-secondary);--ff-group-border-radius: var(--ff-radius-group);--ff-group-min-width: 180px;--ff-group-min-height: 120px;--ff-group-padding: 24px;--ff-grouping-drop-target-border-color: var(--ff-color-grouping-drop-target-border);--ff-grouping-drop-target-border-style: dashed;--ff-grouping-drop-target-border-width: 1px;--ff-grouping-drop-target-border-color-active: var( --ff-color-grouping-drop-target-border-active );--ff-grouping-drop-target-border-style-active: dashed;--ff-grouping-drop-target-border-width-active: 2px;--ff-resize-handle-size: 8px;--ff-resize-handle-fill: var(--ff-color-accent);--ff-resize-handle-stroke: var(--ff-color-surface-card);--ff-resize-handle-ring: var(--ff-color-accent);--ff-resize-handle-radius: 1px;--ff-resize-handle-fill-active: var(--ff-color-surface-card);--ff-rotate-handle-size: 16px;--ff-rotate-handle-offset: 40px;--ff-rotate-handle-background-color: var(--ff-color-surface-card);--ff-rotate-handle-border-color: var(--ff-color-border-strong);--ff-rotate-handle-guide-color: var(--ff-color-border-strong);--ff-connector-background-color: var(--ff-color-surface-card);--ff-connector-border-color: var(--ff-color-text-secondary);--ff-connector-connected-color: var(--ff-color-connector-connected);--ff-connector-accent-color: var(--ff-color-accent);--ff-connector-disabled-color: var(--ff-color-disabled-surface);--ff-connector-disabled-border-color: var(--ff-color-disabled-border);--ff-connector-size: 14px;--ff-connector-border-width: 2px;--ff-connector-input-radius: var(--ff-radius-4);--ff-connector-node-ring-color: var(--ff-canvas-background-color);--ff-outlet-background-color: var(--ff-color-surface-muted);--ff-outlet-border-color: var(--ff-color-border-default);--ff-outlet-color: var(--ff-color-accent);--ff-outlet-disabled-background-color: var(--ff-color-disabled-surface);--ff-outlet-disabled-border-color: var(--ff-color-disabled-border);--ff-outlet-disabled-color: var(--ff-color-disabled-text);--ff-outlet-border-radius: var(--ff-radius-pill);--ff-outlet-padding-y: 6px;--ff-outlet-padding-x: 12px;--ff-connection-color: var(--ff-color-connection);--ff-snap-connection-color: var(--ff-color-connection-muted);--ff-connection-hover-color: var(--ff-color-connection-hover);--ff-connection-selected-color: var(--ff-color-accent);--ff-connection-label-color: var(--ff-color-text-secondary);--ff-connection-content-color: var(--ff-node-color);--ff-connection-content-background-color: var(--ff-node-background-color);--ff-connection-content-border-color: var(--ff-node-border-color);--ff-connection-content-border-color-selected: var(--ff-connection-selected-color);--ff-connection-content-border-radius: var(--ff-node-border-radius);--ff-connection-content-font-size: 13px;--ff-connection-content-padding-y: 2px;--ff-connection-content-padding-x: 8px;--ff-connection-width: 2px;--ff-connection-hit-width: 14px;--ff-connection-drag-handle-fill: var(--ff-color-surface-card);--ff-connection-drag-handle-stroke: var(--ff-color-accent);--ff-marker-color: var(--ff-connection-color);--ff-waypoint-fill: var(--ff-color-waypoint-fill);--ff-waypoint-stroke: var(--ff-color-waypoint-stroke);--ff-waypoint-candidate-fill: var(--ff-color-waypoint-candidate-fill);--ff-waypoint-candidate-stroke: var(--ff-color-waypoint-candidate-stroke);--ff-background-line-color: var(--ff-color-grid);--ff-background-dot-color: var(--ff-color-grid-strong);--ff-selection-area-color: var(--ff-color-selection-fill);--ff-selection-area-border-color: var(--ff-color-selection-stroke);--ff-minimap-background-color: var(--ff-color-minimap-surface);--ff-minimap-border-color: var(--ff-color-border-default);--ff-minimap-node-color: var(--ff-color-minimap-node);--ff-minimap-node-selected-color: var(--ff-color-accent);--ff-minimap-view-color: var(--ff-color-minimap-view);--ff-minimap-view-border-color: var(--ff-color-selection-stroke);--ff-minimap-border-radius: var(--ff-radius-node);--ff-minimap-shadow: var(--ff-shadow-floating);--ff-magnetic-line-color: var(--ff-color-magnetic-line);--ff-magnetic-rect-fill: var(--ff-color-magnetic-rect-fill);--ff-magnetic-rect-border-color: var(--ff-color-magnetic-rect-border);--ff-external-item-background-color: var(--ff-color-surface-card);--ff-external-item-border-color: var(--ff-color-border-default);--ff-external-item-color: var(--ff-color-text-primary);--ff-external-item-disabled-color: var(--ff-color-disabled-text);--ff-external-item-disabled-background-color: var(--ff-color-disabled-surface);--ff-external-item-border-radius: var(--ff-radius-node);--ff-external-item-shadow: var(--ff-shadow-surface);--ff-external-item-preview-shadow: var(--ff-shadow-floating);--ff-external-item-placeholder-background-color: var(--ff-color-surface-soft);--ff-external-item-placeholder-border-color: var(--ff-color-border-subtle)}f-flow,.f-flow{display:block;position:relative;width:100%;height:100%;overflow:hidden;pointer-events:all;-webkit-user-select:none;user-select:none;touch-action:none;color:var(--ff-flow-text-color);background:var(--ff-flow-background-color);font-family:var(--ff-flow-font-family);font-size:var(--ff-flow-font-size);line-height:1.4}f-flow .f-canvas,.f-flow .f-canvas{background:var(--ff-canvas-background-color)}f-flow .f-node,.f-flow .f-node{width:var(--ff-node-width);min-height:var(--ff-node-min-height);padding:var(--ff-node-padding);box-sizing:border-box;color:var(--ff-node-color);text-align:center;background:var(--ff-node-background-color);border:1px solid var(--ff-node-border-color);border-radius:var(--ff-node-border-radius);box-shadow:var(--ff-node-shadow)}f-flow .f-node .node-content,.f-flow .f-node .node-content{width:100%;height:100%;overflow:hidden}f-flow .f-node.f-selected,.f-flow .f-node.f-selected{border-color:var(--ff-node-border-color-selected);box-shadow:var(--ff-node-shadow-selected)}f-flow .f-node.f-dragging,.f-flow .f-node.f-dragging{box-shadow:var(--ff-node-shadow-selected)}f-flow .f-group,.f-flow .f-group{min-width:var(--ff-group-min-width);min-height:var(--ff-group-min-height);padding:var(--ff-group-padding);box-sizing:border-box;color:var(--ff-group-color);background:var(--ff-group-background-color);border:1px solid var(--ff-group-border-color);border-radius:var(--ff-group-border-radius)}f-flow .f-group.f-selected,.f-flow .f-group.f-selected{border-color:var(--ff-group-border-color-selected)}f-flow .f-drag-handle,.f-flow .f-drag-handle{cursor:move}f-flow .f-drag-handle img,.f-flow .f-drag-handle img{pointer-events:none}f-flow .f-resize-handle,.f-flow .f-resize-handle{position:absolute;width:var(--ff-resize-handle-size);height:var(--ff-resize-handle-size);box-sizing:border-box;border:1.5px solid var(--ff-resize-handle-stroke);border-radius:var(--ff-resize-handle-radius);background:var(--ff-resize-handle-fill);box-shadow:0 0 0 1px var(--ff-resize-handle-ring),0 1px 2px #0f0f0d2e;transition:background-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-resize-handle:hover,.f-flow .f-resize-handle:hover{box-shadow:0 0 0 1px var(--ff-resize-handle-ring),0 0 0 5px color-mix(in oklch,var(--ff-resize-handle-ring) 25%,transparent)}f-flow .f-resize-handle:active,.f-flow .f-resize-handle:active{background:var(--ff-resize-handle-fill-active);box-shadow:0 0 0 2px var(--ff-resize-handle-ring),0 0 0 6px color-mix(in oklch,var(--ff-resize-handle-ring) 28%,transparent)}f-flow .f-resize-handle.f-resize-handle-left,.f-flow .f-resize-handle.f-resize-handle-left{left:0;top:50%;transform:translate(-50%,-50%);cursor:col-resize}f-flow .f-resize-handle.f-resize-handle-left-top,.f-flow .f-resize-handle.f-resize-handle-left-top{left:0;top:0;transform:translate(-50%,-50%);cursor:nwse-resize}f-flow .f-resize-handle.f-resize-handle-top,.f-flow .f-resize-handle.f-resize-handle-top{left:50%;top:0;transform:translate(-50%,-50%);cursor:row-resize}f-flow .f-resize-handle.f-resize-handle-right-top,.f-flow .f-resize-handle.f-resize-handle-right-top{right:0;top:0;transform:translate(50%,-50%);cursor:nesw-resize}f-flow .f-resize-handle.f-resize-handle-right,.f-flow .f-resize-handle.f-resize-handle-right{right:0;top:50%;transform:translate(50%,-50%);cursor:col-resize}f-flow .f-resize-handle.f-resize-handle-right-bottom,.f-flow .f-resize-handle.f-resize-handle-right-bottom{right:0;bottom:0;transform:translate(50%,50%);cursor:nwse-resize}f-flow .f-resize-handle.f-resize-handle-bottom,.f-flow .f-resize-handle.f-resize-handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%);cursor:row-resize}f-flow .f-resize-handle.f-resize-handle-left-bottom,.f-flow .f-resize-handle.f-resize-handle-left-bottom{left:0;bottom:0;transform:translate(-50%,50%);cursor:nesw-resize}f-flow .f-rotate-handle,.f-flow .f-rotate-handle{position:absolute;left:50%;top:calc(var(--ff-rotate-handle-offset) * -1);display:inline-flex;align-items:center;justify-content:center;width:var(--ff-rotate-handle-size);height:var(--ff-rotate-handle-size);box-sizing:border-box;border:1px solid var(--ff-rotate-handle-border-color);border-radius:50%;background:var(--ff-rotate-handle-background-color);transform:translate(-50%);cursor:grab;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-rotate-handle:after,.f-flow .f-rotate-handle:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:calc(var(--ff-rotate-handle-offset) - var(--ff-rotate-handle-size));background:var(--ff-rotate-handle-guide-color);transform:translate(-50%);pointer-events:none}f-flow .f-rotate-handle:hover,.f-flow .f-rotate-handle:hover{border-color:var(--ff-color-accent);box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-color-accent) 22%,transparent)}f-flow .f-rotate-handle:active,.f-flow .f-rotate-handle:active{background:var(--ff-color-accent);border-color:var(--ff-color-accent);cursor:grabbing;box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-color-accent) 22%,transparent)}f-flow .f-node-input:not(.f-node),f-flow .f-node-output:not(.f-node),f-flow .f-connector-source:not(.f-node),f-flow .f-connector-target:not(.f-node),f-flow .f-connector-source-target:not(.f-node),.f-flow .f-node-input:not(.f-node),.f-flow .f-node-output:not(.f-node),.f-flow .f-connector-source:not(.f-node),.f-flow .f-connector-target:not(.f-node),.f-flow .f-connector-source-target:not(.f-node){position:absolute;width:var(--ff-connector-size);height:var(--ff-connector-size);box-sizing:border-box;border:var(--ff-connector-border-width) solid var(--ff-connector-border-color);border-radius:50%;background:var(--ff-connector-background-color);pointer-events:all;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}f-flow .f-node-input:not(.f-node).left,f-flow .f-node-output:not(.f-node).left,f-flow .f-connector-source:not(.f-node).left,f-flow .f-connector-target:not(.f-node).left,f-flow .f-connector-source-target:not(.f-node).left,.f-flow .f-node-input:not(.f-node).left,.f-flow .f-node-output:not(.f-node).left,.f-flow .f-connector-source:not(.f-node).left,.f-flow .f-connector-target:not(.f-node).left,.f-flow .f-connector-source-target:not(.f-node).left{left:calc(var(--ff-connector-size) / -2);top:50%;transform:translateY(-50%)}f-flow .f-node-input:not(.f-node).right,f-flow .f-node-output:not(.f-node).right,f-flow .f-connector-source:not(.f-node).right,f-flow .f-connector-target:not(.f-node).right,f-flow .f-connector-source-target:not(.f-node).right,.f-flow .f-node-input:not(.f-node).right,.f-flow .f-node-output:not(.f-node).right,.f-flow .f-connector-source:not(.f-node).right,.f-flow .f-connector-target:not(.f-node).right,.f-flow .f-connector-source-target:not(.f-node).right{right:calc(var(--ff-connector-size) / -2);top:50%;transform:translateY(-50%)}f-flow .f-node-input:not(.f-node).top,f-flow .f-node-output:not(.f-node).top,f-flow .f-connector-source:not(.f-node).top,f-flow .f-connector-target:not(.f-node).top,f-flow .f-connector-source-target:not(.f-node).top,.f-flow .f-node-input:not(.f-node).top,.f-flow .f-node-output:not(.f-node).top,.f-flow .f-connector-source:not(.f-node).top,.f-flow .f-connector-target:not(.f-node).top,.f-flow .f-connector-source-target:not(.f-node).top{top:calc(var(--ff-connector-size) / -2);left:50%;transform:translate(-50%)}f-flow .f-node-input:not(.f-node).top-left,f-flow .f-node-output:not(.f-node).top-left,f-flow .f-connector-source:not(.f-node).top-left,f-flow .f-connector-target:not(.f-node).top-left,f-flow .f-connector-source-target:not(.f-node).top-left,.f-flow .f-node-input:not(.f-node).top-left,.f-flow .f-node-output:not(.f-node).top-left,.f-flow .f-connector-source:not(.f-node).top-left,.f-flow .f-connector-target:not(.f-node).top-left,.f-flow .f-connector-source-target:not(.f-node).top-left{top:calc(var(--ff-connector-size) / -2);left:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).top-right,f-flow .f-node-output:not(.f-node).top-right,f-flow .f-connector-source:not(.f-node).top-right,f-flow .f-connector-target:not(.f-node).top-right,f-flow .f-connector-source-target:not(.f-node).top-right,.f-flow .f-node-input:not(.f-node).top-right,.f-flow .f-node-output:not(.f-node).top-right,.f-flow .f-connector-source:not(.f-node).top-right,.f-flow .f-connector-target:not(.f-node).top-right,.f-flow .f-connector-source-target:not(.f-node).top-right{top:calc(var(--ff-connector-size) / -2);right:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).bottom,f-flow .f-node-output:not(.f-node).bottom,f-flow .f-connector-source:not(.f-node).bottom,f-flow .f-connector-target:not(.f-node).bottom,f-flow .f-connector-source-target:not(.f-node).bottom,.f-flow .f-node-input:not(.f-node).bottom,.f-flow .f-node-output:not(.f-node).bottom,.f-flow .f-connector-source:not(.f-node).bottom,.f-flow .f-connector-target:not(.f-node).bottom,.f-flow .f-connector-source-target:not(.f-node).bottom{bottom:calc(var(--ff-connector-size) / -2);left:50%;transform:translate(-50%)}f-flow .f-node-input:not(.f-node).bottom-left,f-flow .f-node-output:not(.f-node).bottom-left,f-flow .f-connector-source:not(.f-node).bottom-left,f-flow .f-connector-target:not(.f-node).bottom-left,f-flow .f-connector-source-target:not(.f-node).bottom-left,.f-flow .f-node-input:not(.f-node).bottom-left,.f-flow .f-node-output:not(.f-node).bottom-left,.f-flow .f-connector-source:not(.f-node).bottom-left,.f-flow .f-connector-target:not(.f-node).bottom-left,.f-flow .f-connector-source-target:not(.f-node).bottom-left{bottom:calc(var(--ff-connector-size) / -2);left:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node).bottom-right,f-flow .f-node-output:not(.f-node).bottom-right,f-flow .f-connector-source:not(.f-node).bottom-right,f-flow .f-connector-target:not(.f-node).bottom-right,f-flow .f-connector-source-target:not(.f-node).bottom-right,.f-flow .f-node-input:not(.f-node).bottom-right,.f-flow .f-node-output:not(.f-node).bottom-right,.f-flow .f-connector-source:not(.f-node).bottom-right,.f-flow .f-connector-target:not(.f-node).bottom-right,.f-flow .f-connector-source-target:not(.f-node).bottom-right{bottom:calc(var(--ff-connector-size) / -2);right:calc(var(--ff-connector-size) / -2)}f-flow .f-node-input:not(.f-node):hover,f-flow .f-node-output:not(.f-node):hover,f-flow .f-connector-source:not(.f-node):hover,f-flow .f-connector-target:not(.f-node):hover,f-flow .f-connector-source-target:not(.f-node):hover,.f-flow .f-node-input:not(.f-node):hover,.f-flow .f-node-output:not(.f-node):hover,.f-flow .f-connector-source:not(.f-node):hover,.f-flow .f-connector-target:not(.f-node):hover,.f-flow .f-connector-source-target:not(.f-node):hover{box-shadow:0 0 0 4px color-mix(in oklch,var(--ff-connector-accent-color) 22%,transparent)}f-flow .f-node-input:not(.f-node).f-connector-connectable,f-flow .f-node-output:not(.f-node).f-connector-connectable,f-flow .f-connector-source:not(.f-node).f-connector-connectable,f-flow .f-connector-target:not(.f-node).f-connector-connectable,f-flow .f-connector-source-target:not(.f-node).f-connector-connectable,.f-flow .f-node-input:not(.f-node).f-connector-connectable,.f-flow .f-node-output:not(.f-node).f-connector-connectable,.f-flow .f-connector-source:not(.f-node).f-connector-connectable,.f-flow .f-connector-target:not(.f-node).f-connector-connectable,.f-flow .f-connector-source-target:not(.f-node).f-connector-connectable{border-color:var(--ff-connector-accent-color)}f-flow .f-node-input:not(.f-node).f-node-output-connected,f-flow .f-node-input:not(.f-node).f-node-input-connected,f-flow .f-node-input:not(.f-node).f-connector-connected,f-flow .f-node-output:not(.f-node).f-node-output-connected,f-flow .f-node-output:not(.f-node).f-node-input-connected,f-flow .f-node-output:not(.f-node).f-connector-connected,f-flow .f-connector-source:not(.f-node).f-node-output-connected,f-flow .f-connector-source:not(.f-node).f-node-input-connected,f-flow .f-connector-source:not(.f-node).f-connector-connected,f-flow .f-connector-target:not(.f-node).f-node-output-connected,f-flow .f-connector-target:not(.f-node).f-node-input-connected,f-flow .f-connector-target:not(.f-node).f-connector-connected,f-flow .f-connector-source-target:not(.f-node).f-node-output-connected,f-flow .f-connector-source-target:not(.f-node).f-node-input-connected,f-flow .f-connector-source-target:not(.f-node).f-connector-connected,.f-flow .f-node-input:not(.f-node).f-node-output-connected,.f-flow .f-node-input:not(.f-node).f-node-input-connected,.f-flow .f-node-input:not(.f-node).f-connector-connected,.f-flow .f-node-output:not(.f-node).f-node-output-connected,.f-flow .f-node-output:not(.f-node).f-node-input-connected,.f-flow .f-node-output:not(.f-node).f-connector-connected,.f-flow .f-connector-source:not(.f-node).f-node-output-connected,.f-flow .f-connector-source:not(.f-node).f-node-input-connected,.f-flow .f-connector-source:not(.f-node).f-connector-connected,.f-flow .f-connector-target:not(.f-node).f-node-output-connected,.f-flow .f-connector-target:not(.f-node).f-node-input-connected,.f-flow .f-connector-target:not(.f-node).f-connector-connected,.f-flow .f-connector-source-target:not(.f-node).f-node-output-connected,.f-flow .f-connector-source-target:not(.f-node).f-node-input-connected,.f-flow .f-connector-source-target:not(.f-node).f-connector-connected{background:var(--ff-connector-connected-color);border-color:var(--ff-connector-connected-color)}f-flow .f-node-input:not(.f-node).f-node-output-not-connectable,f-flow .f-node-input:not(.f-node).f-node-input-not-connectable,f-flow .f-node-input:not(.f-node).f-connector-not-connectable,f-flow .f-node-input:not(.f-node).f-node-input-disabled,f-flow .f-node-input:not(.f-node).f-node-output-disabled,f-flow .f-node-input:not(.f-node).f-connector-disabled,f-flow .f-node-output:not(.f-node).f-node-output-not-connectable,f-flow .f-node-output:not(.f-node).f-node-input-not-connectable,f-flow .f-node-output:not(.f-node).f-connector-not-connectable,f-flow .f-node-output:not(.f-node).f-node-input-disabled,f-flow .f-node-output:not(.f-node).f-node-output-disabled,f-flow .f-node-output:not(.f-node).f-connector-disabled,f-flow .f-connector-source:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-source:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-source:not(.f-node).f-connector-not-connectable,f-flow .f-connector-source:not(.f-node).f-node-input-disabled,f-flow .f-connector-source:not(.f-node).f-node-output-disabled,f-flow .f-connector-source:not(.f-node).f-connector-disabled,f-flow .f-connector-target:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-target:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-target:not(.f-node).f-connector-not-connectable,f-flow .f-connector-target:not(.f-node).f-node-input-disabled,f-flow .f-connector-target:not(.f-node).f-node-output-disabled,f-flow .f-connector-target:not(.f-node).f-connector-disabled,f-flow .f-connector-source-target:not(.f-node).f-node-output-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-node-input-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-connector-not-connectable,f-flow .f-connector-source-target:not(.f-node).f-node-input-disabled,f-flow .f-connector-source-target:not(.f-node).f-node-output-disabled,f-flow .f-connector-source-target:not(.f-node).f-connector-disabled,.f-flow .f-node-input:not(.f-node).f-node-output-not-connectable,.f-flow .f-node-input:not(.f-node).f-node-input-not-connectable,.f-flow .f-node-input:not(.f-node).f-connector-not-connectable,.f-flow .f-node-input:not(.f-node).f-node-input-disabled,.f-flow .f-node-input:not(.f-node).f-node-output-disabled,.f-flow .f-node-input:not(.f-node).f-connector-disabled,.f-flow .f-node-output:not(.f-node).f-node-output-not-connectable,.f-flow .f-node-output:not(.f-node).f-node-input-not-connectable,.f-flow .f-node-output:not(.f-node).f-connector-not-connectable,.f-flow .f-node-output:not(.f-node).f-node-input-disabled,.f-flow .f-node-output:not(.f-node).f-node-output-disabled,.f-flow .f-node-output:not(.f-node).f-connector-disabled,.f-flow .f-connector-source:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-source:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-source:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-source:not(.f-node).f-node-input-disabled,.f-flow .f-connector-source:not(.f-node).f-node-output-disabled,.f-flow .f-connector-source:not(.f-node).f-connector-disabled,.f-flow .f-connector-target:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-target:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-target:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-target:not(.f-node).f-node-input-disabled,.f-flow .f-connector-target:not(.f-node).f-node-output-disabled,.f-flow .f-connector-target:not(.f-node).f-connector-disabled,.f-flow .f-connector-source-target:not(.f-node).f-node-output-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-node-input-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-connector-not-connectable,.f-flow .f-connector-source-target:not(.f-node).f-node-input-disabled,.f-flow .f-connector-source-target:not(.f-node).f-node-output-disabled,.f-flow .f-connector-source-target:not(.f-node).f-connector-disabled{background:var(--ff-connector-disabled-color);border-color:var(--ff-connector-disabled-border-color);box-shadow:none}f-flow .f-node-input:not(.f-node),f-flow .f-connector-target:not(.f-node),.f-flow .f-node-input:not(.f-node),.f-flow .f-connector-target:not(.f-node){border-radius:var(--ff-connector-input-radius)}f-flow .f-connections-dragging .f-node-input:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-node-output:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-source:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),f-flow .f-connections-dragging .f-connector-source-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-node-input:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-node-output:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-source:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected),.f-flow .f-connections-dragging .f-connector-source-target:not(.f-connector-connectable):not(.f-node-input-connected):not(.f-node-output-connected):not(.f-connector-connected){border-color:var(--ff-connector-disabled-border-color)}f-flow .f-node-outlet,f-flow .f-connector-outlet,.f-flow .f-node-outlet,.f-flow .f-connector-outlet{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:32px;padding:var(--ff-outlet-padding-y) var(--ff-outlet-padding-x);box-sizing:border-box;border:1px solid var(--ff-outlet-border-color);border-radius:var(--ff-outlet-border-radius);background:var(--ff-outlet-background-color);color:var(--ff-outlet-color);pointer-events:all}f-flow .f-node-outlet.f-node-outlet-disabled,f-flow .f-node-outlet.f-connector-disabled,f-flow .f-connector-outlet.f-node-outlet-disabled,f-flow .f-connector-outlet.f-connector-disabled,.f-flow .f-node-outlet.f-node-outlet-disabled,.f-flow .f-node-outlet.f-connector-disabled,.f-flow .f-connector-outlet.f-node-outlet-disabled,.f-flow .f-connector-outlet.f-connector-disabled{background:var(--ff-outlet-disabled-background-color);border-color:var(--ff-outlet-disabled-border-color);color:var(--ff-outlet-disabled-color)}f-flow .f-connection-content,.f-flow .f-connection-content{box-sizing:border-box;color:var(--ff-connection-content-color);font-size:var(--ff-connection-content-font-size);padding:var(--ff-connection-content-padding-y) var(--ff-connection-content-padding-x);background:var(--ff-connection-content-background-color);border:1px solid var(--ff-connection-content-border-color);border-radius:var(--ff-connection-content-border-radius)}f-flow .f-connection .f-connection-selection,.f-flow .f-connection .f-connection-selection{fill:none;stroke:transparent;stroke-width:var(--ff-connection-hit-width)}f-flow .f-connection .f-connection-path,.f-flow .f-connection .f-connection-path{fill:none;stroke:var(--ff-connection-color);stroke-width:var(--ff-connection-width)}f-flow .f-connection .f-connection-drag-handle,.f-flow .f-connection .f-connection-drag-handle{fill:transparent;stroke:transparent;cursor:move}f-flow .f-connection.f-snap-connection .f-connection-path,.f-flow .f-connection.f-snap-connection .f-connection-path{stroke:var(--ff-snap-connection-color);stroke-dasharray:8 4}f-flow .f-connection.f-selected .f-connection-content,.f-flow .f-connection.f-selected .f-connection-content{border-color:var(--ff-connection-content-border-color-selected)}f-flow .f-connection.f-selected .f-connection-path,.f-flow .f-connection.f-selected .f-connection-path{stroke:var(--ff-connection-selected-color)}f-flow:not(.f-dragging) .f-connection:not(.f-dragging):not(.f-selected):not(.f-connection-selection-disabled):hover .f-connection-selection,.f-flow:not(.f-dragging) .f-connection:not(.f-dragging):not(.f-selected):not(.f-connection-selection-disabled):hover .f-connection-selection{stroke:var(--ff-connection-hover-color)}f-flow .f-marker,f-flow .connection-marker,.f-flow .f-marker,.f-flow .connection-marker{color:var(--ff-marker-color)}f-flow .f-marker circle,f-flow .f-marker rect,f-flow .f-marker path,f-flow .f-marker polygon,f-flow .f-marker line,f-flow .connection-marker circle,f-flow .connection-marker rect,f-flow .connection-marker path,f-flow .connection-marker polygon,f-flow .connection-marker line,.f-flow .f-marker circle,.f-flow .f-marker rect,.f-flow .f-marker path,.f-flow .f-marker polygon,.f-flow .f-marker line,.f-flow .connection-marker circle,.f-flow .connection-marker rect,.f-flow .connection-marker path,.f-flow .connection-marker polygon,.f-flow .connection-marker line{fill:currentColor;stroke:currentColor}f-flow .f-connection.f-snap-connection .f-marker,f-flow .f-connection.f-snap-connection .connection-marker,.f-flow .f-connection.f-snap-connection .f-marker,.f-flow .f-connection.f-snap-connection .connection-marker{color:var(--ff-snap-connection-color)}f-flow .f-connection.f-selected .f-marker,f-flow .f-connection.f-selected .connection-marker,.f-flow .f-connection.f-selected .f-marker,.f-flow .f-connection.f-selected .connection-marker{color:var(--ff-connection-selected-color)}f-flow .f-connection .f-connection-waypoints .f-candidate,f-flow .f-connection .f-connection-waypoints .f-waypoint,.f-flow .f-connection .f-connection-waypoints .f-candidate,.f-flow .f-connection .f-connection-waypoints .f-waypoint{vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;stroke-width:1.5}f-flow .f-connection .f-connection-waypoints .f-candidate:hover,f-flow .f-connection .f-connection-waypoints .f-waypoint:hover,.f-flow .f-connection .f-connection-waypoints .f-candidate:hover,.f-flow .f-connection .f-connection-waypoints .f-waypoint:hover{transform:scale(1.1)}f-flow .f-connection .f-connection-waypoints .f-candidate,.f-flow .f-connection .f-connection-waypoints .f-candidate{fill:var(--ff-waypoint-candidate-fill);stroke:var(--ff-waypoint-candidate-stroke)}f-flow .f-connection .f-connection-waypoints .f-waypoint,.f-flow .f-connection .f-connection-waypoints .f-waypoint{fill:var(--ff-waypoint-fill);stroke:var(--ff-waypoint-stroke);cursor:move}f-flow .f-connection .f-connection-drag-handle,.f-flow .f-connection .f-connection-drag-handle{fill:transparent;stroke:var(--ff-connection-drag-handle-stroke);stroke-width:1.5}.f-external-item{display:inline-flex;align-items:center;gap:8px;padding:12px 14px;box-sizing:border-box;color:var(--ff-external-item-color);background:var(--ff-external-item-background-color);border:1px solid var(--ff-external-item-border-color);border-radius:var(--ff-external-item-border-radius);box-shadow:var(--ff-external-item-shadow);cursor:grab;-webkit-user-select:none;user-select:none}.f-external-item.f-external-item-disabled{color:var(--ff-external-item-disabled-color);background:var(--ff-external-item-disabled-background-color);cursor:not-allowed}.f-external-item-preview{box-sizing:border-box;box-shadow:var(--ff-external-item-preview-shadow)}.f-external-item-placeholder{box-sizing:border-box;background:var(--ff-external-item-placeholder-background-color);border:1px dashed var(--ff-external-item-placeholder-border-color);border-radius:var(--ff-external-item-border-radius)}f-flow .f-background line,f-flow .f-background path,.f-flow .f-background line,.f-flow .f-background path{stroke:var(--ff-background-line-color)}f-flow .f-background circle,.f-flow .f-background circle{fill:var(--ff-background-dot-color)}f-flow .f-selection-area,.f-flow .f-selection-area{box-sizing:border-box;background:var(--ff-selection-area-color);border:1px solid var(--ff-selection-area-border-color)}f-flow .f-minimap,.f-flow .f-minimap{overflow:hidden;background:var(--ff-minimap-background-color);border:1px solid var(--ff-minimap-border-color);border-radius:var(--ff-minimap-border-radius);box-shadow:var(--ff-minimap-shadow);bottom:16px;right:16px;width:140px;height:120px}f-flow .f-minimap .f-minimap-node,f-flow .f-minimap .f-minimap-group,.f-flow .f-minimap .f-minimap-node,.f-flow .f-minimap .f-minimap-group{fill:var(--ff-minimap-node-color)}f-flow .f-minimap .f-minimap-node.f-selected,f-flow .f-minimap .f-minimap-group.f-selected,.f-flow .f-minimap .f-minimap-node.f-selected,.f-flow .f-minimap .f-minimap-group.f-selected{fill:var(--ff-minimap-node-selected-color)}f-flow .f-minimap .f-minimap-view,.f-flow .f-minimap .f-minimap-view{fill:var(--ff-minimap-view-color);stroke:var(--ff-minimap-view-border-color);stroke-width:1}f-flow .f-magnetic-lines .f-line,f-flow .f-line-alignment .f-line,.f-flow .f-magnetic-lines .f-line,.f-flow .f-line-alignment .f-line{background:var(--ff-magnetic-line-color)}f-flow .f-magnetic-rects .f-rect,.f-flow .f-magnetic-rects .f-rect{box-sizing:border-box;background:var(--ff-magnetic-rect-fill);border:1px solid var(--ff-magnetic-rect-border-color)}
