.builderiusContent :is([hidden]){display:none}:where(builderius-collection,builderius-pagination,builderius-tabs,builderius-accordion,builderius-slider,builderius-swiper,builderius-toggle,builderius-image-compare-viewer,builderius-lottie,builderius-smart-form,builderius-menu-toggle){display:block}:root{--badge--filled-bg:var(--color--primary--500);--badge--filled-tx:var(--color--base--0);--badge--ghost-tx:var(--color--primary--600);--badge--outlined-bg:var(--color--primary--50);--badge--outlined-br:var(--color--primary--500);--badge--outlined-tx:var(--color--primary--600);--badge--tonal-bg:var(--color--primary--100);--badge--tonal-tx:var(--color--primary--600);--button--filled-bg-disabled:var(--color--base--300);--button--filled-bg-enabled:var(--color--primary--500);--button--filled-bg-focused:var(--color--primary--600);--button--filled-bg-hovered:var(--color--primary--600);--button--filled-bg-pressed:var(--color--primary--700);--button--filled-tonal-bg-disabled:var(--color--base--300);--button--filled-tonal-bg-enabled:var(--color--primary--100);--button--filled-tonal-bg-focused:var(--color--primary--200);--button--filled-tonal-bg-hovered:var(--color--primary--200);--button--filled-tonal-bg-pressed:var(--color--primary--300);--button--filled-tonal-tx-disabled:var(--color--base--0);--button--filled-tonal-tx-enabled:var(--color--primary--600);--button--filled-tonal-tx-focused:var(--color--base--0);--button--filled-tonal-tx-hovered:var(--color--base--0);--button--filled-tonal-tx-pressed:var(--color--base--0);--button--filled-tx-disabled:var(--color--base--0);--button--filled-tx-enabled:var(--color--base--0);--button--filled-tx-focused:var(--color--base--0);--button--filled-tx-hovered:var(--color--base--0);--button--filled-tx-pressed:var(--color--base--0);--button--ghost-tx-disabled:var(--color--base--500);--button--ghost-tx-enabled:var(--color--primary--500);--button--ghost-tx-focused:var(--color--primary--600);--button--ghost-tx-hovered:var(--color--primary--600);--button--ghost-tx-pressed:var(--color--primary--700);--button--outlined-bg-disabled:var(--color--base--0);--button--outlined-bg-focused:var(--color--primary--50);--button--outlined-bg-hovered:var(--color--primary--50);--button--outlined-bg-pressed:var(--color--primary--100);--button--outlined-br-disabled:var(--color--base--500);--button--outlined-br-enabled:var(--color--primary--400);--button--outlined-br-focused:var(--color--primary--500);--button--outlined-br-hovered:var(--color--primary--500);--button--outlined-br-pressed:var(--color--primary--600);--button--outlined-tx-disabled:var(--color--base--500);--button--outlined-tx-enabled:var(--color--primary--600);--button--outlined-tx-focused:var(--color--primary--700);--button--outlined-tx-hovered:var(--color--primary--700);--button--outlined-tx-pressed:var(--color--primary--800);--button--size-sm-scale:.85;--button--size-lg-scale:1.3;--color--primary--original:oklch(.64 .149 259);--color--primary--50:oklch(from var(--color--primary--original) .97 calc(c * .15) h);--color--primary--100:oklch(from var(--color--primary--original) .93 calc(c * .25) h);--color--primary--200:oklch(from var(--color--primary--original) .87 calc(c * .45) h);--color--primary--300:oklch(from var(--color--primary--original) .78 calc(c * .65) h);--color--primary--400:oklch(from var(--color--primary--original) .68 calc(c * .85) h);--color--primary--500:oklch(from var(--color--primary--original) .58 calc(c * 1) h);--color--primary--600:oklch(from var(--color--primary--original) .48 calc(c * .95) h);--color--primary--700:oklch(from var(--color--primary--original) .39 calc(c * .85) h);--color--primary--800:oklch(from var(--color--primary--original) .31 calc(c * .7) h);--color--primary--900:oklch(from var(--color--primary--original) .25 calc(c * .5) h);--color--primary--950:oklch(from var(--color--primary--original) .18 calc(c * .4) h);--color--base--0:oklch(1 0 0);--color--base--50:oklch(from var(--color--primary--original) .97 .008 h);--color--base--100:oklch(from var(--color--primary--original) .93 .01 h);--color--base--200:oklch(from var(--color--primary--original) .87 .012 h);--color--base--300:oklch(from var(--color--primary--original) .78 .014 h);--color--base--400:oklch(from var(--color--primary--original) .68 .015 h);--color--base--500:oklch(from var(--color--primary--original) .58 .015 h);--color--base--600:oklch(from var(--color--primary--original) .48 .014 h);--color--base--700:oklch(from var(--color--primary--original) .39 .012 h);--color--base--800:oklch(from var(--color--primary--original) .31 .01 h);--color--base--900:oklch(from var(--color--primary--original) .25 .008 h);--color--base--950:oklch(from var(--color--primary--original) .18 .006 h);--color--base--1000:oklch(0 0 0);--color--error--original:oklch(.55 .2 25);--color--error--light:oklch(from var(--color--error--original) .78 calc(c * .65) h);--color--error--dark:oklch(from var(--color--error--original) .39 calc(c * .85) h);--color--success--original:oklch(.65 .18 145);--color--success--light:oklch(from var(--color--success--original) .78 calc(c * .65) h);--color--success--dark:oklch(from var(--color--success--original) .39 calc(c * .85) h);--radius--none:var(--size--0);--radius--xxs:var(--size--1);--radius--xs:var(--size--2);--radius--sm:var(--size--3);--radius--md:var(--size--4);--radius--lg:var(--size--5);--radius--xl:var(--size--6);--radius--2xl:var(--size--8);--radius--3xl:var(--size--10);--radius--4xl:var(--size--12);--radius--5xl:var(--size--16);--radius--6xl:var(--size--20);--radius--7xl:var(--size--28);--radius--8xl:var(--size--32);--radius--9xl:var(--size--40);--radius--10xl:var(--size--48);--size--0:0px;--size--1:2px;--size--2:4px;--size--3:6px;--size--4:8px;--size--5:10px;--size--6:12px;--size--7:14px;--size--8:16px;--size--9:18px;--size--10:20px;--size--12:24px;--size--14:28px;--size--16:32px;--size--18:36px;--size--20:40px;--size--24:48px;--size--28:56px;--size--32:64px;--size--36:72px;--size--40:80px;--size--48:96px;--size--56:112px;--size--64:128px;--size--72:144px;--size--80:160px;--size--96:192px;--size--128:256px;--size--160:320px;--size--192:384px;--spacing--none:var(--size--0);--spacing--xxs:var(--size--1);--spacing--xs:var(--size--2);--spacing--sm:var(--size--4);--spacing--md:var(--size--6);--spacing--lg:var(--size--8);--spacing--xl:var(--size--10);--spacing--2xl:var(--size--12);--spacing--3xl:var(--size--16);--spacing--4xl:var(--size--20);--spacing--5xl:var(--size--24);--spacing--6xl:var(--size--28);--spacing--7xl:var(--size--32);--spacing--8xl:var(--size--36);--spacing--9xl:var(--size--40);--spacing--10xl:var(--size--48);--spacing--11xl:var(--size--56);--spacing--12xl:var(--size--64);--spacing--13xl:var(--size--72);--spacing--14xl:var(--size--80);--spacing--15xl:var(--size--96);--text--color--content:var(--color--base--800);--text--color--heading:var(--color--base--950);--text--size--badge-max:var(--size--7);--text--size--badge-min:var(--size--7);--text--size--button-max:var(--size--8);--text--size--button-min:var(--size--7);--text--size--content-max:var(--size--8);--text--size--content-min:var(--size--7);--text--size--h1-max:var(--size--20);--text--size--h1-min:var(--size--16);--text--size--h2-max:var(--size--16);--text--size--h2-min:var(--size--12);--text--size--h3-max:var(--size--14);--text--size--h3-min:var(--size--10);--text--size--h4-max:var(--size--12);--text--size--h4-min:var(--size--9);--text--size--h5-max:var(--size--10);--text--size--h5-min:var(--size--8);--text--size--h6-max:var(--size--8);--text--size--h6-min:var(--size--8);--container--full:100%;--container--max:1280px;--container--narrow:820px;--container--min:350px;--container--width:var(--container--max);--font--family-emoji:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font--family-sans-serif:system-ui,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,Helvetica,Arial,"Helvetica Neue",sans-serif,var(--font--family-emoji);--font--family-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--font--family-emoji);--font--family:var(--font--family-sans-serif);--font--spacing-block:var(--size--8);--font--line-height:1.5;--font--weight:400;--border--width:calc(var(--size--1) / 2);--border--color:var(--color--primary--600);--border--radius:var(--radius--xl);--outline--width:var(--size--1);--outline--border:var(--outline--width) solid var(--color--base--800);--box--shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);--box--shadow-focus-with-button:0 0 0 var(--outline--width) var(--border-color);--spacing--block:var(--spacing--sm);--spacing--block-start:var(--spacing--block);--spacing--block-end:var(--spacing--block);--spacing--inline:var(--spacing--lg);--spacing--inline-start:var(--spacing--inline);--spacing--inline-end:var(--spacing--inline);--grid--item-min-width:240px;--grid--item-max-width:1fr;--grid--row-gap:var(--spacing--block);--grid--col-gap:var(--spacing--inline);--grid--gap:var(--grid--row-gap) var(--grid--col-gap);--section--padding-block:var(--spacing--xl);--section--padding-inline:var(--spacing--lg);--blockquote--border-color:var(--color--primary--400);--blockquote--cite-color:var(--color--primary--600);--blockquote--border-width:.25rem;--blockquote--padding:var(--spacing--lg);--figcaption--padding:var(--spacing--lg);--figcaption--color:var(--color--base--600);--table--border-color:var(--color--base--400);--table--row-stripped-background-color:var(--color--base--50);--code--background-color:var(--color--base--200);--code--color:var(--color--base--700);--code--kbd-background-color:var(--color--base--50);--code--kbd-color:var(--color--base--200);--switch--background-color:var(--color--base--200);--switch--checked-background-color:var(--color--primary--500);--switch--color:var(--color--base--0);--switch--thumb-box-shadow:0 0 0 rgba(0,0,0,0);--accordion--border-color:var(--color--base--300);--accordion--active-summary-color:var(--color--primary--200);--accordion--close-summary-color:var(--color--base--600);--accordion--open-summary-color:var(--color--base--900);--accordion--closed-summary-background:transparent;--accordion--open-summary-background:var(--color--base--50);--accordion--active-summary-background:var(--color--base--200);--accordion--icon-circle:15px;--accordion--icon-circle-color:transparent;--accordion--spacing-inline:var(--spacing--inline);--accordion--spacing-block:var(--spacing--block);--card--background-color:var(--color--base--0);--card--border-color:var(--color--base--50);--card--box-shadow:var(--box--shadow);--card--border-radius:var(--border--radius);--pagination--item-radius:calc(var(--border--radius) / 2);--transition:.2s ease-in-out;--icon--minus:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M5 11V13H19V11H5Z\"></path></svg>");--icon--plus:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2h6Z\"/></svg>");--icon--chevron:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m12 13.2 5-5 1.4 1.4L12 16 5.6 9.6l1.5-1.4 4.9 5Z\"/></svg>");--icon--caret:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m13.2 12-5-5 1.4-1.4L16 12l-6.4 6.4L8.2 17l5-5Z\"/></svg>");--icon--arrow:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m13 16.2 5.4-5.4 1.4 1.4L12 20l-7.8-7.8 1.4-1.4 5.4 5.4V4h2v12.2Z\"/></svg>");--icon--search:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m18 16.6 4.3 4.3-1.4 1.4-4.3-4.3a9 9 0 1 1 1.4-1.4Zm-2-.7A7 7 0 0 0 11 4a7 7 0 1 0 4.9 12l.1-.1Z\"/></svg>");--icon--close:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m12 10.6 5-5 1.4 1.5-5 4.9 5 5-1.5 1.4-4.9-5-5 5L5.6 17l5-5-5-5L7 5.7l5 5Z\"/></svg>");--icon--base:var(--icon--chevron)}html{height:100%;scroll-behavior:smooth}body{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;accent-color:var(--color--primary--original);background-color:var(--color--base--0);color:var(--text--color--content);font-weight:var(--font--weight);font-size:var(--font--size--content);line-height:var(--font--line-height);font-family:var(--font--family);text-rendering:optimizeLegibility;overflow-wrap:break-word;margin:0 auto;display:flex;flex-direction:column;width:100%;height:100%}::before,::after{text-decoration:inherit;vertical-align:inherit}[hidden]{display:none}h1,h2,h3,h4,h5,h6{--font-weight:700;margin-top:0;margin-bottom:0;color:var(--text--color--heading);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--font-line-height);font-family:var(--font--family)}h1{--font-size:var(--font--size--1);--font-line-height:1.125;--spacing-block-start:var(--size--24)}h2{--font-size:var(--font--size--2);--font-line-height:1.15;--spacing-block-start:var(--size--20)}h3{--font-size:var(--font--size--3);--font-line-height:1.15;--spacing-block-start:var(--size--16)}h4{--font-size:var(--font--size--4);--font-line-height:1.4;--spacing-block-start:var(--size--12)}h5{--font-size:var(--font--size--5);--font-line-height:1.5;--spacing-block-start:var(--size--12)}h6{--font-size:var(--font--size--6);--font-line-height:1.25;--spacing-block-start:var(--size--10)}pre,code,kbd,samp{--font-family:var(--font--family-monospace);font-size:.875em;font-family:var(--font-family);font-weight:var(--font-weight);max-width:100%;-moz-tab-size:2;-o-tab-size:2;tab-size:2}kbd{--font-weight:bolder;background-color:var(--code--kbd-background-color);color:var(--code--kbd-color);vertical-align:baseline}p{color:var(--text--color--content);font-style:normal;font-weight:var(--font--weight)}p{margin-top:0;margin-bottom:0}a{--text-decoration:underline;--color-text:var(--color--primary--500);outline-style:none;color:var(--color-text);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),box-shadow var(--transition),-webkit-text-decoration var(--transition)}a:where(:hover,:active,:focus){--color-text:var(--color--primary--400);--text-decoration:none;cursor:pointer}:where(button,[role=button],[type=submit]),.button,.btn-filled{--background-color:var(--button--filled-bg-enabled);--color-text:var(--button--filled-tx-enabled);--spacing-block:var(--spacing--block);--spacing-inline:var(--spacing--inline);--border-radius:var(--radius--xs);--border-color:transparent;--border-style:solid;--border-width:1px;--text-decoration:none;--font-weight:600;--font-size:var(--font--size--button);display:flex;justify-content:center;color:var(--color-text);background-color:var(--background-color);padding:var(--spacing-block) var(--spacing-inline);border-radius:var(--border-radius);border:var(--border-width) var(--border-style) var(--border-color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--font--line-height);text-align:center;text-decoration:var(--text-decoration);cursor:pointer;user-select:none;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}:where(button,.button,[role=button],[type=submit]):is([aria-current]:not([aria-current=false])),:where(button,.button,[role=button],[type=submit]):is(:hover,:active){--background-color:var(--button--filled-bg-hovered)}:where(button,.button,[role=button],[type=submit],a):is([aria-current]:not([aria-current=false])):focus:not(:focus-visible){outline-style:none}:where(button,.button,[role=button],[type=submit],a):active{--background-color:var(--button--filled-bg-pressed)}:where(button,.button,[role=button],[type=submit],a):focus-visible,:where(button,.button,[role=button],[type=submit],a):is([aria-current]:not([aria-current=false])):focus-visible{outline:var(--outline--border)}:where(button,.button,[role=button],[type=submit])[disabled]{--background-color:var(--button--filled-bg-disabled);--color-text:var(--button--filled-tx-disabled);pointer-events:none}:where(button,.button,[role=button],[type=submit])[aria-busy=true]::before{filter:brightness(0) invert(1)}:where([role=tab]){--background-color:transparent;--color-text:var(--button--outlined-tx-enabled);--border-color:var(--button--outlined-br-enabled);--spacing-block:var(--spacing--block);--spacing-inline:var(--spacing--inline);--border-radius:var(--radius--xs);--border-style:solid;--border-width:1px;--text-decoration:none;--font-weight:600;--font-size:var(--font--size--button);display:flex;justify-content:center;color:var(--color-text);background-color:var(--background-color);padding:var(--spacing-block) var(--spacing-inline);border-radius:var(--border-radius);border:var(--border-width) var(--border-style) var(--border-color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--font--line-height);text-align:center;text-decoration:var(--text-decoration);cursor:pointer}:where([role=tab]):is(:hover){--background-color:var(--button--outlined-bg-hovered);--border-color:var(--button--outlined-br-hovered)}:where([role=tab].active){--border-color:transparent;--background-color:var(--button--filled-bg-enabled);--color-text:var(--button--filled-tx-enabled)}:where([role=tab].active):is(:hover){--background-color:var(--button--filled-bg-hovered);--color-text:var(--button--filled-tx-hovered)}:where([role=tab])[disabled]{--border-color:transparent;--background-color:var(--button--filled-bg-disabled);--color-text:var(--button--filled-tx-disabled);pointer-events:none}.btn-tonal{--background-color:var(--button--filled-tonal-bg-enabled);--color-text:var(--button--filled-tonal-tx-enabled)}.btn-tonal:where(:hover){--background-color:var(--button--filled-tonal-bg-hovered)}.btn-tonal:where(:active){--background-color:var(--button--filled-tonal-bg-pressed)}.btn-tonal:where([disabled]){--background-color:var(--button--filled-tonal-bg-disabled);--color-text:var(--button--filled-tonal-tx-disabled)}.btn-outlined{--background-color:transparent;--color-text:var(--button--outlined-tx-enabled);--border-color:var(--button--outlined-br-enabled)}.btn-outlined:where(:hover){--background-color:var(--button--outlined-bg-hovered);--border-color:var(--button--outlined-br-hovered)}.btn-outlined:where(:active){--background-color:var(--button--outlined-bg-pressed);--border-color:var(--button--outlined-br-pressed);--color-text:var(--button--outlined-tx-pressed)}.btn-outlined:where([disabled]){--background-color:var(--button--outlined-bg-disabled);--border-color:var(--button--outlined-br-disabled);--color-text:var(--button--outlined-tx-disabled)}.btn-ghost{--background-color:transparent;--color-text:var(--button--ghost-tx-enabled)}.btn-ghost:where(:hover){--background-color:transparent;--color-text:var(--button--ghost-tx-hovered)}.btn-ghost:where(:active){--background-color:transparent;--color-text:var(--button--ghost-tx-pressed)}.btn-ghost:where([disabled]){--background-color:transparent;--color-text:var(--button--ghost-tx-disabled)}:where(button,[role=button],[type=submit],.button,.btn-filled,.btn-tonal,.btn-outlined,.btn-ghost):is(.size-sm){--spacing-block:calc(var(--spacing--block) * var(--button--size-sm-scale));--spacing-inline:calc(var(--spacing--inline) * var(--button--size-sm-scale));padding:var(--spacing-block) var(--spacing-inline);font-size:var(--font-size)}:where(button,[role=button],[type=submit],.button,.btn-filled,.btn-tonal,.btn-outlined,.btn-ghost):is(.size-lg){--spacing-block:calc(var(--spacing--block) * var(--button--size-lg-scale));--spacing-inline:calc(var(--spacing--inline) * var(--button--size-lg-scale));padding:var(--spacing-block) var(--spacing-inline);font-size:var(--font-size)}:where(.badge,.badge-filled,.badge-tonal,.badge-outlined,.badge-ghost){--background-color:var(--badge--filled-bg);--color-text:var(--badge--filled-tx);--spacing-block:var(--spacing--sm);--spacing-inline:var(--spacing--md);--border-radius:var(--radius--2xl);--border-color:transparent;--border-style:solid;--border-width:1px;--text-decoration:none;--font-weight:400;--font-size:var(--font--size--badge);--font-line-height:1.1;display:inline-block;color:var(--color-text);background-color:var(--background-color);padding:var(--spacing-block) var(--spacing-inline);border-radius:var(--border-radius);border:var(--border-width) var(--border-style) var(--border-color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--font-line-height);text-align:center;text-decoration:var(--text-decoration);text-transform:uppercase;cursor:pointer;user-select:none;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}.badge-tonal{--border-color:transparent;--background-color:var(--badge--tonal-bg);--color-text:var(--badge--tonal-tx)}.badge-outlined{--border-color:var(--badge--outlined-br);--background-color:var(--badge--outlined-bg);--color-text:var(--badge--outlined-tx)}.badge-ghost{--background-color:transparent;--border-color:transparent;--color-text:var(--badge--ghost-tx);--spacing-inline:var(--spacing--none)}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}a,button,input,label,select,textarea{-ms-touch-action:manipulation;touch-action:manipulation}:where(input:not([type="checkbox"],[type="radio"],[type="submit"]),textarea,select){font-size:inherit;font-family:var(--font--family);border-radius:var(--radius--xs);background-color:var(--color--base--50);border:var(--border--width) solid var(--color--base--200);padding:var(--spacing--sm);width:100%;color:var(--text--color--content)}label{font-size:calc(var(--font--size--content) * .9);margin-top:.5rem;text-indent:.15em;line-height:calc(var(--font--line-height) * 1.45)}:where(input:not([type="checkbox"],[type="radio"]),textarea,select):focus{outline:2px solid var(--color--base--600)}:where(input,textarea)::placeholder{color:var(--color--base--600);opacity:.7}label:has(+[required])::after{content:"(*" attr(data-text-required) ")";margin-left:.5ch;color:var(--color--base--600)}.field-group>:not(.field-group-prepend,.field-group-append){border-right:unset;border-radius:0}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline-width:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[role=switch]{--border-width:.1875rem;--background-color:var(--switch--background-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.25em;height:1.25em;border:var(--border--width) solid var(--border--color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[role=switch]:focus-visible,[role=switch]:focus{--background-color:var(--switch--background-color);--border-color:var(--switch--background-color)}[role=switch]:checked{--background-color:var(--switch--checked-background-color);--border-color:var(--switch--checked-background-color);background-image:none}[role=switch]:not([aria-invalid]){--border-color:var(--switch--background-color)}details:where(:hover,:focus) summary::before,details:where(:hover,:focus) summary::after{box-shadow:0 0 0 24px var(--accordion--active-summary-color)}details:where([open]){background-color:var(--accordion--open-summary-background);padding-block-end:var(--accordion--spacing-block)}details:where([open]) summary{color:var(--accordion--open-summary-color)}details:where([open]) summary::before,details:where([open]) summary::after{--icon-rotate:-180deg}summary:where(.icon-right){background-image:radial-gradient(circle calc(var(--accordion--icon-circle) + 0px) at calc(100% - var(--accordion--icon-circle)) 50%,var(--accordion--icon-circle-color) 100%,transparent 100%)}summary:where(.icon-style-plus){--icon:var(--icon--plus)}summary:where(.icon-style-arrow){--icon:var(--icon--arrow)}summary:where(.icon-style-caret){--icon:var(--icon--caret)}summary:where(.icon-right)::before{content:unset}summary>:where(h1,h2,h3,h4,h5,h6){font-weight:500;font-size:var(--font--size--5)}:is([role=dialog],dialog):where([open],.open){padding:var(--spacing--2xl);position:fixed;top:50%;left:50%;margin:0;transform:translate(-50%,-50%);background-color:var(--card--background-color);border:var(--border--width) solid var(--border--color);box-shadow:var(--box--shadow);border-radius:var(--radius--md);z-index:9999;display:flex;flex-direction:column}:is([role=dialog],dialog):where([open],.open).cookie-notice{transform:unset;top:unset;left:unset;bottom:var(--spacing--lg);right:var(--spacing--lg);max-width:60ch}:where([role=dialog],dialog):where([open],.open)>div{padding:var(--modal--spacing-block-start) var(--modal--spacing) var(--modal--spacing)}:is([role=dialog],dialog):where([open],.open)+.backdrop{position:fixed;inset:0 0 0 0;background-color:var(--modal--overlay-background-color);z-index:9998}:where([role=dialog],dialog) [data-action=close]{display:flex;align-items:center;column-gap:var(--spacing-inline);order:-1;align-self:flex-end;width:16px;height:16px;border-radius:32px;mask-image:var(--icon--close);-webkit-mask-image:var(--icon--close);mask-size:1rem;mask-position:center center;mask-repeat:no-repeat;background-color:currentColor}:where([role=dialog],dialog) button span{width:0;height:0;overflow:clip;position:fixed}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}button,input,textarea,select{font:inherit}main{flex:1}section{padding:var(--section--padding-block) var(--section--padding-inline)}table{--table-border-color:var(--color--base--200);width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}:where(thead) th,:where(thead) td,:where(tfoot) th,:where(tfoot) td{--font-weight:600;--border-width:calc(var(--border--width) * 2)}:where(thead) th{border-bottom:var(--border-width) solid var(--table-border-color)}:where(tfoot) th,:where(tfoot) td{border-top:var(--border-width) solid var(--table-border-color);border-bottom-width:0}.striped-rows :where(tr:nth-child(odd))>*{background-color:var(--table--row-stripped-background-color)}iframe{border-style:none;max-width:100%}img{display:block;height:auto;max-width:100%;border-style:none;object-fit:cover;object-position:center}svg:not(:root){overflow:hidden}.container{--max-width:var(--container--width);margin-left:auto;margin-right:auto;width:100%;max-width:var(--max-width)}.page-content{width:100%}.page-content :where(h1,h2,h3,h4,h5,h6):not(:first-child){margin-top:var(--spacing-block-start)}.page-content :where(h1,h2,h3,h4,h5,h6){margin-bottom:var(--spacing--block-end,var(--spacing--block))}.page-content :where(p,ul,ol,dl,blockquote):not(:last-child){margin-bottom:var(--spacing--block-end,var(--spacing--block))}.page-content :where(blockquote):not(:first-child){margin-top:var(--spacing--block)}.font-size-1{font-size:var(--font--size--1);--font-line-height:1.125;--spacing-block-start:var(--size--24)}.font-size-2{font-size:var(--font--size--2);--font-line-height:1.15;--spacing-block-start:var(--size--20)}.font-size-3{font-size:var(--font--size--3);--font-line-height:1.15;--spacing-block-start:var(--size--16)}.font-size-4{font-size:var(--font--size--4);--font-line-height:1.4;--spacing-block-start:var(--size--12)}.font-size-5{font-size:var(--font--size--5);--font-line-height:1.5;--spacing-block-start:var(--size--12)}.font-size-6{font-size:var(--font--size--6);--font-line-height:1.25;--spacing-block-start:var(--size--10)}.builderiusContent{display:contents}*:focus:not(:focus-visible){outline-style:none}*:focus:focus-visible{outline:var(--outline--border)}.search-button{--icon:var(--icon--search);display:flex;font-size:inherit;color:var(--color--base--0);padding-top:unset;padding-bottom:unset;align-items:center;min-height:2em;line-height:2em;border-style:none;outline-style:none}.icon-btn{display:inherit;--icon-height:var(--size--8);--icon-width:var(--size--8);--icon-bg:var(--button--filled-bg-enabled);--icon-fill-color:var(--button--filled-tx-enabled)}:where(.icon-btn) .icon{mask-image:var(--icon--search);-webkit-mask-image:var(--icon--search);background-color:currentColor;mask-size:1em;mask-position:center center;mask-repeat:no-repeat;height:var(--icon-height);width:var(--icon-width)}:where(.icon-btn) svg{height:var(--icon-height);width:var(--icon-width)}:where(.icon-btn) svg path{fill:var(--icon-fill-color)}:where(.icon-btn):is(.btn-tonal) svg path{--icon-fill-color:var(--button--filled-tonal-tx-enabled)}:where(.icon-btn):is(.btn-outlined) svg path{--icon-fill-color:var(--button--outlined-tx-enabled)}:where(.icon-btn):is(.btn-ghost) svg path{--icon-fill-color:var(--button--ghost-tx-enabled)}:where(.icon-btn):is(.badge) svg path{--icon-fill-color:var(--button--filled-tx-enabled)}:where(.icon-btn):is(.badge-tonal) svg path{--icon-fill-color:var(--badge--tonal-tx)}:where(.icon-btn):is(.badge-outlined) svg path{--icon-fill-color:var(--badge--outlined-tx)}:where(.icon-btn):is(.badge-ghost) svg path{--icon-fill-color:var(--badge--ghost-tx)}.icon-end{--icon-size:1.5em;--spacing-inline:.5em;display:inline-flex;align-items:center;gap:var(--spacing--inline)}.icon-start{display:inline-flex;align-items:center;--icon-size:1.5em;--spacing-inline:.5em;gap:var(--spacing--inline)}.page-numbers:where(a):hover,.page-numbers:where(.current){color:var(--color--base--0);background-color:var(--color--primary--400);border-color:var(--color--primary--400)}:where(.icon-right) [data-accordion-header]{flex-direction:row;justify-content:flex-start}:where(.icon-right) [aria-hidden=true]{margin-inline-start:auto;transform:rotate(90deg)}:where(.icon-right) [aria-expanded=true] [aria-hidden=true]{transform:rotate(0)}@media (prefers-color-scheme:dark){:root{--color--primary--50:oklch(from var(--color--primary--original) .18 calc(c * .4) h);--color--primary--100:oklch(from var(--color--primary--original) .25 calc(c * .5) h);--color--primary--200:oklch(from var(--color--primary--original) .31 calc(c * .7) h);--color--primary--300:oklch(from var(--color--primary--original) .39 calc(c * .85) h);--color--primary--400:oklch(from var(--color--primary--original) .48 calc(c * .95) h);--color--primary--500:oklch(from var(--color--primary--original) .58 calc(c * 1) h);--color--primary--600:oklch(from var(--color--primary--original) .68 calc(c * .85) h);--color--primary--700:oklch(from var(--color--primary--original) .78 calc(c * .65) h);--color--primary--800:oklch(from var(--color--primary--original) .87 calc(c * .45) h);--color--primary--900:oklch(from var(--color--primary--original) .93 calc(c * .25) h);--color--primary--950:oklch(from var(--color--primary--original) .97 calc(c * .15) h);--color--base--0:oklch(0 0 none);--color--base--50:oklch(from var(--color--primary--original) .18 .006 h);--color--base--100:oklch(from var(--color--primary--original) .25 .008 h);--color--base--200:oklch(from var(--color--primary--original) .31 .01 h);--color--base--300:oklch(from var(--color--primary--original) .39 .012 h);--color--base--400:oklch(from var(--color--primary--original) .48 .014 h);--color--base--500:oklch(from var(--color--primary--original) .58 .015 h);--color--base--600:oklch(from var(--color--primary--original) .68 .015 h);--color--base--700:oklch(from var(--color--primary--original) .78 .014 h);--color--base--800:oklch(from var(--color--primary--original) .87 .012 h);--color--base--900:oklch(from var(--color--primary--original) .93 .01 h);--color--base--950:oklch(from var(--color--primary--original) .97 .008 h);--color--base--1000:oklch(1 0 none)}}:is(.tds-page,.page-content) :is(.tds-faqs,.tdh-faqs){display:grid;gap:12px;min-width:0}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq){display:block;margin:0;padding:0;border:1px solid #d2c8b8;border-radius:10px;background:#fffdf8;overflow:hidden;color:#152630}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq):first-child{padding:0}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary{display:flex;align-items:center;justify-content:space-between;gap:20px;position:relative;box-sizing:border-box;list-style:none;margin:0;padding:21px 24px;min-height:68px;background:rgba(255,255,255,0);border:0;color:#152630;font-family:inherit;font-size:17px;font-weight:650;line-height:1.5;letter-spacing:0;text-align:left;cursor:pointer}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary::-webkit-details-marker{display:none}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary::marker{content:""}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary::before{content:none}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary::after{content:"+";display:grid;place-items:center;position:static;flex:0 0 28px;width:28px;height:28px;margin:0;padding:0;border:1px solid #c8b594;border-radius:50%;background:#f5ead6;color:#70470e;font-size:21px;font-weight:500;line-height:1;transform:none;mask:none;-webkit-mask:none;box-shadow:none;transition:none}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)[open]>summary{background:#faf1e1}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)[open]>summary::after{content:"−";transform:none}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary:hover{background:#faf1e1}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary:focus-visible{outline:3px solid #9e650d;outline-offset:-4px;border-radius:9px}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>p{box-sizing:border-box;margin:0;padding:20px 24px 24px;color:#465960;font-size:15px;font-weight:400;line-height:1.8}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>p+p{padding-top:0}@media (max-width:600px){:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>summary{padding:18px;gap:14px;font-size:16px}:is(.tds-page,.page-content) details:is(.tds-faq,.tdh-faq)>p{padding:18px 18px 22px}}.page-content{min-height:100vh;margin:0;padding:0;background:#101e27;color:#f4f6f2;font-family:Inter,ui-sans-serif,system-ui,sans-serif}.page-content *{box-sizing:border-box}.tdcs-wrap{width:min(1240px,calc(100% - 64px));min-height:100vh;margin-inline:auto;display:flex;flex-direction:column}.tdcs-top{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:34px 0 28px;border-bottom:1px solid #40525b}.tdcs-brand{color:#fff;text-decoration:none;font-size:clamp(20px,2.3vw,30px);font-weight:800;line-height:1;letter-spacing:-1.3px}.tdcs-brand:hover{color:#fbad2f}.tdcs-topline{color:#a8bbc2;font-size:12px;letter-spacing:.04em}.tdcs-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);align-items:start;gap:clamp(36px,6vw,96px);padding:clamp(70px,9vw,128px) 0 88px;flex:1}.tdcs-intro{max-width:580px}.tdcs-eyebrow{margin:0 0 24px;color:#fbad2f;font-size:11px;font-weight:800;line-height:1.5;letter-spacing:.16em}.tdcs-title{margin:0;max-width:620px;color:#fff;font-size:clamp(44px,5.2vw,78px);line-height:1.04;letter-spacing:-.055em;font-weight:760}.tdcs-lead{margin:32px 0 0;color:#c7d4d7;font-size:clamp(18px,1.55vw,22px);line-height:1.6}.tdcs-support{margin:24px 0 0;color:#eff2ee;font-size:16px;line-height:1.75}.tdcs-services{display:flex;flex-wrap:wrap;gap:10px;margin:34px 0 0}.tdcs-service{display:inline-flex;align-items:center;min-height:34px;padding:7px 13px;border:1px solid #60737c;border-radius:999px;color:#d7e0e0;font-size:12px;line-height:1.3}.tdcs-email{display:inline-block;margin:42px 0 0;color:#b8c9cd;font-size:14px;line-height:1.6;overflow-wrap:anywhere;text-underline-offset:4px}.tdcs-enquiry{min-width:0;padding:clamp(26px,3.5vw,44px);border:1px solid #d2cabd;border-radius:14px;background:#f7f5ef;color:#152630;box-shadow:0 24px 70px rgba(0,0,0,.17)}.tdcs-enquiry .tdcs-eyebrow{margin-bottom:12px;color:#86530d}.tdcs-form-title{margin:0;color:#152630;font-size:clamp(29px,2.6vw,38px);line-height:1.14;letter-spacing:-.035em}.tdcs-form-description{margin:14px 0 25px;color:#4d5d63;font-size:14px;line-height:1.7}.tdcs-enquiry craftforms-form{display:block;color:#152630}.tdcs-enquiry craftforms-form form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:18px;margin:0}.tdcs-enquiry craftforms-form .form-field{display:flex;flex-direction:column;align-items:stretch;gap:7px;min-width:0;margin:0}.tdcs-enquiry craftforms-form label{display:block;color:#152630;font-size:13px;font-weight:700;line-height:1.5}.tdcs-enquiry craftforms-form :is(input,select,textarea){box-sizing:border-box;width:100%;max-width:100%;min-height:46px;padding:11px 12px !important;border:1px solid #89969b;border-radius:6px;background:#fff;color:#152630;font:inherit;font-size:15px;line-height:1.5}.tdcs-enquiry craftforms-form textarea{min-height:125px;resize:vertical}.tdcs-enquiry craftforms-form :is([data-craftforms-field="brief"],[data-craftforms-field="service"],.wp-block-group){grid-column:1/-1}.tdcs-enquiry craftforms-form :is(input,select,textarea,button):focus-visible,.tdcs-brand:focus-visible{outline:3px solid #b87514;outline-offset:3px}.tdcs-enquiry craftforms-form button[type="submit"]{justify-self:start;grid-column:1/-1;min-height:48px;padding:12px 20px;border:2px solid #152630;border-radius:6px;background:#fbad2f;color:#152630;font:inherit;font-size:14px;font-weight:800;cursor:pointer}.tdcs-enquiry craftforms-form button[type="submit"]:hover{background:#ffc66a}.tdcs-enquiry craftforms-form .wp-block-craftforms-form-error{color:#9c2424}.tdcs-bottom{display:flex;justify-content:space-between;gap:16px 30px;padding:24px 0 32px;border-top:1px solid #40525b;color:#a8bbc2;font-size:11px;line-height:1.6}@media (max-width:900px){.tdcs-grid{grid-template-columns:1fr;gap:48px;padding:70px 0}.tdcs-intro{max-width:740px}.tdcs-enquiry{max-width:760px}}@media (max-width:600px){.tdcs-wrap{width:calc(100% - 36px)}.tdcs-top{align-items:flex-start;flex-direction:column;gap:12px;padding:25px 0}.tdcs-grid{padding:52px 0 58px;gap:36px}.tdcs-title{font-size:clamp(40px,11vw,56px)}.tdcs-enquiry{padding:23px 19px}.tdcs-bottom{flex-direction:column;padding-bottom:26px}}.tdcs-email:hover{color:#fbad2f}main.page-content{height:auto !important;min-height:100vh;background:#101e27}.page-content>.tdcs-wrap{background:#101e27}html,body{background:#101e27}.builderiusContent .uni-node-ud95795c98{width:250px}.craftforms-notification{--display:flex;--padding:1rem;--gap:.5rem;--border-radius:4px;--margin:10px 0;--font-size:14px;--line-height:1.4;--bg:#fff;--color:#333;--border-width:4px;--border-color:#ccc;--shadow:0 2px 8px rgba(0,0,0,.15);--success-color:#22c55e;--success-color-text:#0d873a;--error-color:#ef4444;--error-color-text:#a31717;--warning-color:#f59e0b;--warning-color-text:#8e5d0b;--info-color:#3b82f6;--info-color-text:#134597;--close-color:#999;--close-hover-color:#666;--close-hover-bg:rgba(0,0,0,.05);--close-size:24px;display:var(--display);gap:var(--gap);justify-content:space-between;background:var(--bg);color:var(--color);border-left:var(--border-width) solid var(--border-color);padding:var(--padding);border-radius:var(--border-radius);box-shadow:var(--shadow);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:var(--font-size);line-height:var(--line-height);position:relative;opacity:0;transition:all .3s ease;margin:var(--margin);max-width:100%;word-wrap:break-word}.craftforms-notification :where(.craftforms-notification-text){display:block;color:inherit;margin:0}.craftforms-notification :where(p){margin:0;text-align:start}.craftforms-notification :where(p):last-child{margin-bottom:0}.craftforms-notification :where(.craftforms-notification-close){background:none;border:none;font-size:16px;color:var(--close-color);cursor:pointer;padding:4px;line-height:1;width:var(--close-size);height:var(--close-size);display:flex;align-items:center;justify-content:center;border-radius:2px}.craftforms-notification :where(.craftforms-notification-close):hover{color:var(--close-hover-color);background:var(--close-hover-bg)}.craftforms-notification :where(.craftforms-notification-close):focus{outline:2px solid #3b82f6;outline-offset:1px}.craftforms-notification-overlay{--z-index:99999;--max-width:400px;--min-width:250px;position:fixed;z-index:var(--z-index);pointer-events:auto;max-width:var(--max-width);min-width:var(--min-width)}.craftforms-notification-overlay :where(.craftforms-notification){margin:0 0 10px 0}.craftforms-notification-overlay :where(.craftforms-notification):last-child{margin-bottom:0}@media (max-width: 768px){:where(.craftforms-notification){padding:.875rem;font-size:13px}}@media (max-width: 480px){.craftforms-notification-overlay :where(.craftforms-notification){padding:.75rem;font-size:12px}}@keyframes craftforms-notification-slide-in-right{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes craftforms-notification-slide-in-left{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes craftforms-notification-fade-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.craftforms-notification-overlay.craftforms-notification-right :where(.craftforms-notification){animation:craftforms-notification-slide-in-right .3s ease}.craftforms-notification-overlay.craftforms-notification-left :where(.craftforms-notification){animation:craftforms-notification-slide-in-left .3s ease}.craftforms-notification-overlay.craftforms-notification-center :where(.craftforms-notification){animation:craftforms-notification-fade-in .3s ease}
/* CraftForms Form Validation & UI Styles */

/* Hide form before custom element is defined */
craftforms-form:not(:defined) {
    visibility: hidden;
}

/* Hide form while initializing */
craftforms-form[data-craftforms-pending] {
    visibility: hidden;
}

/* Override theme layout classes that win over UA [hidden] rule */
craftforms-form [hidden] {
    display: none !important;
}

/* ========================================
   CSS Variables
   ======================================== */

:root {
    --cf-color-valid: #51a88a;
    --cf-color-invalid: #c16464;
}

/* ========================================
   Form Field Validation States
   ======================================== */

/* Valid field styling - green border */
.wp-block-craftforms-form {
    input.wp-block-craftforms-text-input:user-valid,
    textarea.wp-block-craftforms-textarea:user-valid,
    select.wp-block-craftforms-select:user-valid {
        border-color: var(--cf-color-valid);
        border-width: 1px;
        outline: none;
    }

    /* Focus state for valid fields */
    input.wp-block-craftforms-text-input:user-valid:focus,
    textarea.wp-block-craftforms-textarea:user-valid:focus,
    select.wp-block-craftforms-select:user-valid:focus {
        border-color: var(--cf-color-valid);
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-color-valid) 10%, transparent);
    }

    /* Valid radio and checkbox styling - green outline */
   /* .wp-block-craftforms-radio-field input[type="radio"]:user-valid,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"]:user-valid {
        outline: 2px solid var(--cf-color-valid);
        outline-offset: 2px;
    }*/

    /* Focus state for valid radio/checkbox */
    /*.wp-block-craftforms-radio-field input[type="radio"]:user-valid:focus,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"]:user-valid:focus {
        outline: 2px solid var(--cf-color-valid);
        outline-offset: 2px;
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-color-valid) 10%, transparent);
    }*/
}

/* Invalid field styling - red border */
.wp-block-craftforms-form {
    input.wp-block-craftforms-text-input:user-invalid,
    textarea.wp-block-craftforms-textarea:user-invalid,
    select.wp-block-craftforms-select:user-invalid {
        border-color: var(--cf-color-invalid);
        border-width: 1px;
        outline: none;
    }

    /* Also apply to fields with .invalid class (for backward compatibility) */
    input.wp-block-craftforms-text-input.invalid,
    textarea.wp-block-craftforms-textarea.invalid,
    select.wp-block-craftforms-select.invalid {
        border-color: var(--cf-color-invalid);
        border-width: 1px;
        outline: none;
    }

    /* Focus state for invalid fields */
    input.wp-block-craftforms-text-input:user-invalid:focus,
    textarea.wp-block-craftforms-textarea:user-invalid:focus,
    select.wp-block-craftforms-select:user-invalid:focus,
    input.wp-block-craftforms-text-input.invalid:focus,
    textarea.wp-block-craftforms-textarea.invalid:focus,
    select.wp-block-craftforms-select.invalid:focus {
        border-color: var(--cf-color-invalid);
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-color-invalid) 10%, transparent);
    }

    /* Invalid radio and checkbox styling - red outline */
    .wp-block-craftforms-radio-field input[type="radio"]:user-invalid,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"]:user-invalid,
    .wp-block-craftforms-radio-field input[type="radio"].invalid,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"].invalid {
        outline: 2px solid var(--cf-color-invalid);
        outline-offset: 2px;
    }

    /* Focus state for invalid radio/checkbox */
    .wp-block-craftforms-radio-field input[type="radio"]:user-invalid:focus,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"]:user-invalid:focus,
    .wp-block-craftforms-radio-field input[type="radio"].invalid:focus,
    .wp-block-craftforms-checkboxes-field input[type="checkbox"].invalid:focus {
        outline: 2px solid var(--cf-color-invalid);
        outline-offset: 2px;
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-color-invalid) 10%, transparent);
    }
}

/* Suppress invalid cue when label is present — label color change is sufficient */
.wp-block-craftforms-form {
    .wp-block-craftforms-label {
        word-break: normal;
    }
    /* Text / textarea / select: reset border when field has a label */
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input:user-invalid,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea:user-invalid,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select:user-invalid,
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input.invalid,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea.invalid,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select.invalid {
        border-color: revert;
        box-shadow: none;
    }

    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input:user-invalid:focus,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea:user-invalid:focus,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select:user-invalid:focus,
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input.invalid:focus,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea.invalid:focus,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select.invalid:focus {
        border-color: revert;
        box-shadow: none;
        outline: revert; /* restore browser focus ring (original user-invalid rule sets outline:none) */
    }

    /* Radio / checkbox: suppress per-input outline when group has a label */
    .wp-block-craftforms-radio-field:has(.wp-block-craftforms-label) input[type="radio"]:user-invalid,
    .wp-block-craftforms-checkboxes-field:has(.wp-block-craftforms-label) input[type="checkbox"]:user-invalid,
    .wp-block-craftforms-radio-field:has(.wp-block-craftforms-label) input[type="radio"].invalid,
    .wp-block-craftforms-checkboxes-field:has(.wp-block-craftforms-label) input[type="checkbox"].invalid {
        outline: none;
        box-shadow: none;
    }

    .wp-block-craftforms-radio-field:has(.wp-block-craftforms-label) input[type="radio"]:user-invalid:focus,
    .wp-block-craftforms-checkboxes-field:has(.wp-block-craftforms-label) input[type="checkbox"]:user-invalid:focus,
    .wp-block-craftforms-radio-field:has(.wp-block-craftforms-label) input[type="radio"].invalid:focus,
    .wp-block-craftforms-checkboxes-field:has(.wp-block-craftforms-label) input[type="checkbox"].invalid:focus {
        outline: revert; /* restore browser focus ring */
        box-shadow: none;
    }
}


/* ========================================
   Label Validation State Styling
   ======================================== */

/* Green label for valid fields */
.wp-block-craftforms-form {
    .wp-block-craftforms-label:has(+ input.wp-block-craftforms-text-input:user-valid),
    .wp-block-craftforms-label:has(+ textarea.wp-block-craftforms-textarea:user-valid),
    .wp-block-craftforms-label:has(+ select.wp-block-craftforms-select:user-valid) {
        color: var(--cf-color-valid);
    }

    /* Green label for valid radio/checkbox groups */
    .wp-block-craftforms-radio-field:has(input[type="radio"]:user-valid) .wp-block-craftforms-label,
    .wp-block-craftforms-checkboxes-field:has(input[type="checkbox"]:user-valid) .wp-block-craftforms-label {
        color: var(--cf-color-valid);
    }
}

/* Red label for invalid fields */
.wp-block-craftforms-form {
    .wp-block-craftforms-label:has(+ input.wp-block-craftforms-text-input:user-invalid),
    .wp-block-craftforms-label:has(+ textarea.wp-block-craftforms-textarea:user-invalid),
    .wp-block-craftforms-label:has(+ select.wp-block-craftforms-select:user-invalid),
    .wp-block-craftforms-label:has(+ input.wp-block-craftforms-text-input.invalid),
    .wp-block-craftforms-label:has(+ textarea.wp-block-craftforms-textarea.invalid),
    .wp-block-craftforms-label:has(+ select.wp-block-craftforms-select.invalid) {
        color: var(--cf-color-invalid);
    }

    /* Red label for invalid radio/checkbox groups */
    .wp-block-craftforms-radio-field:has(input[type="radio"]:user-invalid) .wp-block-craftforms-label,
    .wp-block-craftforms-checkboxes-field:has(input[type="checkbox"]:user-invalid) .wp-block-craftforms-label,
    .wp-block-craftforms-radio-field:has(input[type="radio"].invalid) .wp-block-craftforms-label,
    .wp-block-craftforms-checkboxes-field:has(input[type="checkbox"].invalid) .wp-block-craftforms-label {
        color: var(--cf-color-invalid);
    }

    /* Red label for invalid file/datepicker fields (invalid class on wrapper via data-attach-error-class) */
    .wp-block-craftforms-file-field.invalid .wp-block-craftforms-label,
    .wp-block-craftforms-booking-datepicker-field.invalid .wp-block-craftforms-label {
        color: var(--cf-color-invalid);
    }
}


/* ========================================
   Form Layout Styles
   ======================================== */

/* Orientation, wrap, justification, grid columns and gap come from WordPress'
   per-block layout style (.wp-container-*) generated from the Layout panel.
   That style never sets `display` — core supplies it via its base layout
   stylesheet (:where(.is-layout-flex){display:flex} etc.), which a classic theme
   may not load on the front end. We replicate that base here, scoped to our block
   and at ZERO specificity (:where), so flex AND grid get their `display` everywhere
   while the .wp-container-* declarations (flex-direction, align-items, columns…)
   still override ours. */
:where(.craftforms-options-group.is-layout-flex) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}
:where(.craftforms-options-group.is-layout-grid) {
    display: grid;
}

/* Fill the field width so cards distribute across the row. The parent field
   is a flex column with align-items:flex-start, which otherwise shrinks the group
   to content width. */
.craftforms-options-group {
    width: 100%;
    box-sizing: border-box;
}

/* Options-group orientation. Unlike normal blocks, this <div> is hand-built in PHP
 * by the parent field's render method (e.g. radio-field-block.php), so it never
 * passes through WordPress' layout block support and never receives the per-block
 * .wp-container-*-is-layout-* style that carries flex-direction. The :where() base
 * above only sets display + align-items, so on the front end is-vertical had no CSS
 * backing it and fell back to a flex row. Supply the orientation explicitly here,
 * mirroring the field-wrapper fallback. The double-class specificity (0,2,0) beats
 * the :where() base while still letting the editor's .wp-container-* style win. */
.craftforms-options-group.is-layout-flex.is-vertical {
    flex-direction: column;
    align-items: flex-start;
}
.craftforms-options-group.is-layout-flex.is-horizontal {
    flex-direction: row;
    align-items: center;
}

/* ---------------------------------------------------------------------------
   Core Gutenberg Columns layout (for the embed).
   Forms use core wp:columns/wp:column to place fields side by side. Inside
   WordPress the flex layout comes from core's block-library stylesheet
   (wp-includes/blocks/columns/style.css). The embed never ships that file, so
   without these rules `.wp-block-columns` falls back to block flow and the
   columns stack. Replicate the essential subset here — scoped under the
   <craftforms-form> custom element so it can never leak onto a third-party
   host page, and without core's `!important` (the scope makes it unnecessary).
   Per-column widths ride inline as `style="flex-basis:…"` on each column, so
   they travel with the embedded HTML; only the base `display` was missing.
   --------------------------------------------------------------------------- */
:where(craftforms-form) .wp-block-columns {
    display: flex;
    box-sizing: border-box;
    flex-wrap: wrap;
    align-items: initial;
}
@media (min-width: 782px) {
    :where(craftforms-form) .wp-block-columns:not(.is-not-stacked-on-mobile) {
        flex-wrap: nowrap;
    }
    :where(craftforms-form) .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
        flex-basis: 0;
        flex-grow: 1;
    }
    :where(craftforms-form) .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column[style*="flex-basis"] {
        flex-grow: 0;
    }
}
@media (max-width: 781px) {
    :where(craftforms-form) .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
        flex-basis: 100%;
    }
}
:where(craftforms-form) .wp-block-columns.is-not-stacked-on-mobile {
    flex-wrap: nowrap;
}
:where(craftforms-form) .wp-block-columns.is-not-stacked-on-mobile > .wp-block-column {
    flex-basis: 0;
    flex-grow: 1;
}
:where(craftforms-form) .wp-block-columns.is-not-stacked-on-mobile > .wp-block-column[style*="flex-basis"] {
    flex-grow: 0;
}
:where(craftforms-form) .wp-block-columns.are-vertically-aligned-top    { align-items: flex-start; }
:where(craftforms-form) .wp-block-columns.are-vertically-aligned-center { align-items: center; }
:where(craftforms-form) .wp-block-columns.are-vertically-aligned-bottom { align-items: flex-end; }
:where(craftforms-form) .wp-block-column {
    flex-grow: 1;
    min-width: 0;
    word-break: break-word;
    overflow-wrap: break-word;
}
:where(craftforms-form) .wp-block-column.is-vertically-aligned-top     { align-self: flex-start; }
:where(craftforms-form) .wp-block-column.is-vertically-aligned-center  { align-self: center; }
:where(craftforms-form) .wp-block-column.is-vertically-aligned-bottom  { align-self: flex-end; }
:where(craftforms-form) .wp-block-column.is-vertically-aligned-stretch { align-self: stretch; }

/* Generic base layout `display` for core Group blocks that use flex/grid layout.
   Core supplies this from theme.json global styles, also unshipped by the embed.
   Only `display` is set here; the per-container .wp-container-* rules (gap,
   flex-direction, justify, grid columns) still arrive via the inline
   block-supports <style> the embed controller injects and override as intended. */
:where(craftforms-form) .is-layout-flex { display: flex; }
:where(craftforms-form) .is-layout-grid { display: grid; }

/* Inputs fill parent flex container cross-axis */
.wp-block-craftforms-text-input,
.wp-block-craftforms-textarea,
.wp-block-craftforms-select {
    min-width: 0;
    box-sizing: border-box;
    width: 100%;
}

/* Datepicker fills parent */
.craftforms-datepicker-wrapper {
    width: 100%;
    box-sizing: border-box;
}
.craftforms-datepicker-wrapper craftforms-booking-datepicker {
    display: block;
    width: 100%;
}
.craftforms-datepicker-wrapper .craftforms-datepicker-inputs {
    width: 100%;
}
.craftforms-datepicker-wrapper .craftforms-datepicker-input {
    width: 100%;
    box-sizing: border-box;
}

/* Field wrapper blocks fill parent container width */
.wp-block-craftforms-text-input-field,
.wp-block-craftforms-textarea-field,
.wp-block-craftforms-booking-datepicker-field,
.wp-block-craftforms-select-field,
.wp-block-craftforms-radio-field,
.wp-block-craftforms-checkboxes-field,
.wp-block-craftforms-file-field,
.wp-block-craftforms-range-slider-field,
.wp-block-craftforms-color-picker-field,
.wp-block-craftforms-repeater-field {
    min-width: 0;
    box-sizing: border-box;
    width: 100%;
}

/* Field container border — only visible when .has-field-border is set via the
 * "Field Container Border" panel. The baseline border:none !important overrides
 * any legacy inline border-* properties that get_block_wrapper_attributes() may
 * have injected from previously-stored __experimentalBorder attributes. The
 * .has-field-border rule has higher specificity (2 classes) so its !important
 * wins over the baseline !important. */
.wp-block-craftforms-radio-field,
.wp-block-craftforms-checkboxes-field {
    border: none !important;
    outline: none !important;
}
.wp-block-craftforms-radio-field.has-field-border,
.wp-block-craftforms-checkboxes-field.has-field-border {
    border-style: var(--cf-field-border-style, solid) !important;
    border-width: var(--cf-field-border-width, 1px) !important;
    border-color: var(--cf-field-border-color, currentColor) !important;
    border-radius: var(--cf-field-border-radius, 0) !important;
}

/* Field wrapper flex direction — column by default; row when user sets is-horizontal.
 * WordPress only injects flex-direction via a wp-container-* class when the layout
 * attribute is explicitly saved to the DB, so we supply the rules here as a reliable
 * fallback that works regardless of what WordPress generates. */
.wp-block-craftforms-text-input-field,
.wp-block-craftforms-textarea-field,
.wp-block-craftforms-booking-datepicker-field,
.wp-block-craftforms-select-field,
.wp-block-craftforms-radio-field,
.wp-block-craftforms-checkboxes-field,
.wp-block-craftforms-file-field,
.wp-block-craftforms-range-slider-field,
.wp-block-craftforms-color-picker-field,
.wp-block-craftforms-repeater-field {
    flex-direction: column;
    align-items: flex-start;
    /* --cf-field-gap is set via style="" when the user sets a custom gap in the editor.
     * This picks it up so the value works even when WP's inline <style> tag is stripped. */
    gap: var(--cf-field-gap, normal);
}

/* Vertical field wrappers: override .is-layout-flex { align-items: center }.
 * Double-class specificity (0,2,0) beats single-class WordPress global. */
.wp-block-craftforms-text-input-field.is-vertical,
.wp-block-craftforms-textarea-field.is-vertical,
.wp-block-craftforms-booking-datepicker-field.is-vertical,
.wp-block-craftforms-select-field.is-vertical,
.wp-block-craftforms-radio-field.is-vertical,
.wp-block-craftforms-checkboxes-field.is-vertical,
.wp-block-craftforms-file-field.is-vertical,
.wp-block-craftforms-range-slider-field.is-vertical,
.wp-block-craftforms-color-picker-field.is-vertical,
.wp-block-craftforms-repeater-field.is-vertical {
    align-items: flex-start;
}

/* Vertical + explicit justification overrides (0,3,0) */
.wp-block-craftforms-text-input-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-textarea-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-booking-datepicker-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-select-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-radio-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-checkboxes-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-file-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-range-slider-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-color-picker-field.is-vertical.is-content-justification-center,
.wp-block-craftforms-repeater-field.is-vertical.is-content-justification-center {
    align-items: center;
}

.wp-block-craftforms-text-input-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-textarea-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-booking-datepicker-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-select-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-radio-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-checkboxes-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-file-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-range-slider-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-color-picker-field.is-vertical.is-content-justification-right,
.wp-block-craftforms-repeater-field.is-vertical.is-content-justification-right {
    align-items: flex-end;
}

.wp-block-craftforms-text-input-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-textarea-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-booking-datepicker-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-select-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-radio-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-checkboxes-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-file-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-range-slider-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-color-picker-field.is-vertical.is-content-justification-stretch,
.wp-block-craftforms-repeater-field.is-vertical.is-content-justification-stretch {
    align-items: stretch;
}

.wp-block-craftforms-text-input-field.is-horizontal,
.wp-block-craftforms-textarea-field.is-horizontal,
.wp-block-craftforms-booking-datepicker-field.is-horizontal,
.wp-block-craftforms-select-field.is-horizontal,
.wp-block-craftforms-radio-field.is-horizontal,
.wp-block-craftforms-checkboxes-field.is-horizontal,
.wp-block-craftforms-file-field.is-horizontal,
.wp-block-craftforms-range-slider-field.is-horizontal,
.wp-block-craftforms-color-picker-field.is-horizontal,
.wp-block-craftforms-repeater-field.is-horizontal {
    flex-direction: row;
    align-items: center;
}

/* Prevent grid cells from stretching field wrapper height */
.wp-block-craftforms-radio-field,
.wp-block-craftforms-checkboxes-field {
    align-self: start;
}

/* InfoBlock: prevent padding from adding to block width */
.wp-block-craftforms-infoblock {
    box-sizing: border-box;
}

/* InfoBlock: restore missing Gutenberg flow-layout first-child margin reset */
:root :where(.is-layout-flow) > :not(template):first-of-type {
    margin-block-start: 0;
}

/* Form flow layout: replace Gutenberg margin-based spacing with flex gap */
.wp-block-craftforms-form.is-layout-flow {
    display: flex;
    flex-direction: column;
    gap: var(--cf-form-gap, 2rem);
}

.wp-block-craftforms-form.is-layout-flow > * {
    margin-block-start: 0;
    margin-block-end: 0;
}

/* ========================================
   Submit Button Processing State
   ======================================== */

/* Submit button with spinner during processing */
.wp-block-craftforms-submit-button.processing {
    position: relative;
    pointer-events: none;
    opacity: 0.7;
}

/* Spinner using CSS-only animation */
.wp-block-craftforms-submit-button.processing::after {
    content: "";
    position: absolute;
    width: 16px;
    height: 16px;
    top: 50%;
    right: 12px;
    margin-top: -8px;
    border: 1px solid transparent;
    border-top-color: currentColor;
    border-radius: 50%;
    animation: craftforms-spinner-rotate 0.6s linear infinite;
}

@keyframes craftforms-spinner-rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

/* Adjust button padding when processing to make room for spinner */
.wp-block-craftforms-submit-button.processing {
    padding-right: 40px;
}

/* ========================================
   Additional Field States
   ======================================== */

/* Disabled fields styling */
.wp-block-craftforms-form {
    input.wp-block-craftforms-text-input:disabled,
    textarea.wp-block-craftforms-textarea:disabled,
    select.wp-block-craftforms-select:disabled {
        opacity: 0.6;
        cursor: not-allowed;
        background-color: #f3f4f6;
    }
}

/* Read-only fields styling */
.wp-block-craftforms-form {
    input.wp-block-craftforms-text-input:read-only,
    textarea.wp-block-craftforms-textarea:read-only {
        background-color: #f9fafb;
        cursor: default;
    }
}


/* ========================================
   Option Swatches (color / image modes)
   ======================================== */

/* Hide native input visually but keep it accessible */
.wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"],
.wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"],
.wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"],
.wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

/* Swatch visual base */
.cf-swatch-visual {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--cf-swatch-width, auto);
    height: var(--cf-swatch-height, auto);
    cursor: pointer;
    overflow: hidden;
    border: 2px solid transparent;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    box-sizing: border-box;
}

/* Square shape (default) */
.cf-swatch-shape-square .cf-swatch-visual {
    border-radius: 4px;
}

/* Circle shape */
.cf-swatch-shape-circle .cf-swatch-visual {
    border-radius: 50%;
}

/* Image swatch: fill the visual area */
.cf-is-swatch-image .cf-swatch-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Selected state: ring highlight */
.wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:checked ~ .cf-swatch-visual{
    /*border-color: currentColor;*/
    box-shadow: 0 0 0 1px currentColor;
}

/* Focus ring: show on visual when sibling input is keyboard-focused */
.wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:focus-visible ~ .cf-swatch-visual {
    outline: 2px solid var(--cf-focus-color, currentColor);
    outline-offset: 2px;
}

/* Suppress the 0×0 focus ring on the hidden input itself */
.wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:focus,
.wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:focus,
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:focus,
.wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:focus,
.wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:focus,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:focus {
    outline: none;
}

/* Tooltip via Popover API */
.cf-option-annotation {
    font-size: 0.85em;
    color: #888;
    margin-left: 0.4em;
    flex-shrink: 0;
}

/* "Show annotation inside swatch": the annotation is nested inside .cf-swatch-visual,
   so it sits within the styled pill and inherits the pill's text color — including the
   selected-state color flip — instead of the grey sibling treatment above. */
.cf-is-swatch-text.cf-annotation-inside .cf-swatch-visual {
    gap: 0.35em;
}
.cf-is-swatch-text.cf-annotation-inside .cf-swatch-visual .cf-option-annotation {
    color: inherit;
    margin-left: 0;
    opacity: 0.85;
}

.cf-swatch-tooltip {
    position: absolute;
    inset: unset;
    border: none;
    background: rgba(0, 0, 0, 0.75);
    color: #fff;
    font-size: 12px;
    padding: 4px 8px;
    border-radius: 4px;
    pointer-events: none;
    margin: 0;
    max-width: 200px;
    white-space: normal;
    text-align: center;
    z-index: var(--cf-ui-z-index, 999);
}

/* Validation error ring on invalid swatch inputs */
/*.wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:user-invalid ~ .cf-swatch-visual,
.wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:user-invalid ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:user-invalid ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:user-invalid ~ .cf-swatch-visual {
    border-color: var(--cf-color-invalid, #c16464);
    box-shadow: 0 0 0 1px var(--cf-color-invalid, #c16464);
}*/


/* ========================================
   Card Options (optionStyle: "card")
   Data-driven product card: image + title + description + price.
   Scoped to the field via .cf-field-card so it applies in the editor
   iframe and on the frontend without any per-form custom CSS.
   ======================================== */

/* Layout (flex/grid) follows the Layout panel via WordPress' layout support.
   Only provide a default gap (valid for both flex and grid); an explicit blockGap
   set in the editor produces a higher-priority .wp-container-* rule that wins. */
.cf-field-card .craftforms-options-group {
    gap: var(--cf-card-gap, 12px);
}

.cf-field-card .wp-block-craftforms-radio-option,
.cf-field-card .wp-block-craftforms-checkbox-option {
    position: relative;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    /* Size the card to its image (no stretch): outer width = image width + the
       card's own padding + border, so the inner content box equals the image
       width exactly. Works in flex AND grid (justify-self stops grid-track stretch). */
    flex: 0 0 auto;
    width: calc(
        var(--cf-card-img-width, 300px)
        + (var(--cf-card-padding, 10px) + var(--cf-card-border-width, 2px)) * 2
    );
    max-width: 100%;
    justify-self: start;
    align-self: start;
    gap: 6px;
    margin: 0;
    padding: var(--cf-card-padding, 10px);
    border: var(--cf-card-border-width, 2px) solid var(--cf-card-border-color, #e4e4e7);
    border-radius: var(--cf-card-radius, 12px);
    background: var(--cf-card-bg, #fff);
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.cf-field-card .wp-block-craftforms-radio-option:hover,
.cf-field-card .wp-block-craftforms-checkbox-option:hover {
    border-color: var(--cf-card-border-hover, #c7cbd1);
}

/* Native control: visually hidden but focusable (keyboard + screen reader). */
.cf-field-card .wp-block-craftforms-radio-option > input,
.cf-field-card .wp-block-craftforms-checkbox-option > input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    margin: 0;
    pointer-events: none;
}

/* Selected state — distinguished by border weight + checkmark, not color alone. */
.cf-field-card .wp-block-craftforms-radio-option:has(> input:checked),
.cf-field-card .wp-block-craftforms-checkbox-option:has(> input:checked) {
    border-color: var(--cf-card-accent, #2563eb);
    box-shadow: 0 0 0 1px var(--cf-card-accent, #2563eb);
}

.cf-field-card .wp-block-craftforms-radio-option:has(> input:checked)::after,
.cf-field-card .wp-block-craftforms-checkbox-option:has(> input:checked)::after {
    content: "";
    position: absolute;
    top: 8px;
    right: 8px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--cf-card-accent, #2563eb) url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27white%27 stroke-width=%273%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M5 13l4 4L19 7%27/%3E%3C/svg%3E") center / 12px no-repeat;
}

/* Visible focus ring (the native control itself is hidden). */
.cf-field-card .wp-block-craftforms-radio-option:has(> input:focus-visible),
.cf-field-card .wp-block-craftforms-checkbox-option:has(> input:focus-visible) {
    outline: 2px solid var(--cf-card-accent, #2563eb);
    outline-offset: 2px;
}

/* The figure carries the fixed image box; the <img> just fills it and is cropped
   with object-fit:cover, so it never stretches the card. Width 100% = the card's
   inner content box, which the rule above sized to --cf-card-img-width. */
.cf-field-card .cf-card-img {
    margin: 0;
    width: 100%;
    height: var(--cf-card-img-height, 110px);
    border-radius: var(--cf-card-img-radius, 8px);
    overflow: hidden;
}

.cf-field-card .cf-card-img img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Placeholder box for options with no image — keeps every card the same height. */
.cf-field-card .cf-card-img.is-empty {
    background: var(--cf-card-img-placeholder, #f1f1f1);
}

.cf-field-card .cf-card-title {
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.2;
}

.cf-field-card .cf-card-desc {
    font-size: 0.8rem;
    line-height: 1.3;
    color: var(--cf-card-desc-color, #6b7280);
}

.cf-field-card .cf-card-price {
    margin: 0;
    margin-left: 0;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--cf-card-accent, #2563eb);
}


/* ========================================
   Default Mode Options
   ======================================== */

.wp-block-craftforms-checkbox-option:not(.cf-is-swatch-text):not(.cf-is-swatch-color):not(.cf-is-swatch-image),
.wp-block-craftforms-radio-option:not(.cf-is-swatch-text):not(.cf-is-swatch-color):not(.cf-is-swatch-image) {
    font-size: var(--cf-option-font-size, inherit);
}

/* ========================================
   Text Swatches
   ======================================== */

/* Hide native input visually but keep it accessible */
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"],
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

.cf-is-swatch-text .cf-swatch-visual {
    font-size:        var(--cf-ts-font-size,    inherit);
    font-weight:      var(--cf-ts-font-weight,  inherit);
    line-height:      var(--cf-ts-line-height,  inherit);
    color:            var(--cf-ts-color,        inherit);
    background-color: var(--cf-ts-bg,           transparent);
    border-style:     var(--cf-ts-border-style, solid);
    border-width:     var(--cf-ts-border-width, 1px);
    border-color:     var(--cf-ts-border-color, currentColor);
    border-radius:    var(--cf-ts-border-radius, 4px);
    padding:          var(--cf-ts-padding,      8px 16px);
    min-width:        var(--cf-swatch-width,    auto);
    min-height:       var(--cf-swatch-height,   auto);
    width:            auto;
    height:           auto;
    white-space:      nowrap;
    overflow:         visible;
}

.cf-is-swatch-text.cf-swatch-shape-circle .cf-swatch-visual {
    border-radius: var(--cf-ts-border-radius, 9999px);
}

/* Selected state */
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:checked ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:checked ~ .cf-swatch-visual {
    color:            var(--cf-ts-color-checked, #fff);
    background-color: var(--cf-ts-bg-checked,    var(--cf-ts-color, #000));
    border-color:     var(--cf-ts-border-color,  var(--cf-ts-color, currentColor));
}

/* Focus ring */
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:focus-visible ~ .cf-swatch-visual {
    outline:        2px solid var(--cf-focus-color, currentColor);
    outline-offset: 2px;
}

/* Suppress the 0×0 focus ring on the hidden input itself */
.wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:focus,
.wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:focus {
    outline: none;
}

/* Text-swatch chips get consistent wrapping + spacing, but their flow direction
   MUST still follow the Layout panel (.is-vertical / .is-horizontal handled by the
   base rules above). Do NOT hard-force `flex-direction: row` here — that selector
   used to also name `.is-vertical` and silently overrode a user's vertical choice,
   which is why text-swatch groups kept reverting to horizontal. Only set the
   chip-specific wrap + default gap; orientation is owned by the base rules.
   Applies in editor and front end since this stylesheet is enqueued for both. */
.craftforms-options-group.is-layout-flex:has(.cf-is-swatch-text) {
    flex-wrap: wrap;
    gap: 8px;
}

/* ========================================
   Repeater Group Layout
   ======================================== */

.craftforms-repeater-wrapper {
    display: block;
    width: 100%;
}

/* Inline SVG icons inside repeater add/remove buttons */
.cf-repeater-add svg.cf-repeater-icon,
.cf-repeater-remove svg.cf-repeater-icon {
    width: 1em;
    height: 1em;
    vertical-align: -0.125em;
    flex-shrink: 0;
}

.wp-block-craftforms-repeater-group {
    width: 100%;
    box-sizing: border-box;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.wp-block-craftforms-repeater-group.is-horizontal {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
}

/* Each repeated item: remove button stacks below the group fields */
.cf-repeater-item {
    display: flex;
    flex-direction: column;
    gap: var(--cf-field-gap, 0.5rem);
}

/* Any block dropped inside a repeater group fills the full width */
.wp-block-craftforms-repeater-group > * {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* Shared layout reset for add/remove buttons */
.cf-repeater-add,
.cf-repeater-remove {
    display: inline-flex;
    align-items: center;
    gap: 0.35em;
    cursor: pointer;
    font: inherit;
}

/* Z-index scale — controls layering of errors vs UI overlays (datepicker, tooltips, etc.) */
:root {
    --cf-error-z-index: 99;
    --cf-ui-z-index: 999;
}

/* Popover-mode error — positioned fixed by JS, shown via the Popover API (top layer), hidden by
   default, z-index below UI overlays. Once shown via showPopover(), the top layer makes the
   viewport (not any ancestor with `transform`/`filter`/`contain`, e.g. an Elementor widget
   wrapper) the containing block for `position: fixed`, so the viewport-relative coordinates set
   in _positionPopoverError() stay correct and track scroll with no extra math. */
.wp-block-craftforms-form-error[data-cf-error-popover] {
    display: none;
    position: fixed;
    z-index: var(--cf-error-z-index, 99);
    width: auto;
    box-sizing: border-box;
    margin: 0;
    padding: 0.35em 0.6em;
    border: 1px solid color-mix(in srgb, var(--cf-color-invalid, #c16464) 30%, transparent);
    border-radius: 0.25rem;
    background: #fff;
    color: var(--cf-color-error-text);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 0 0 1px color-mix(in srgb, var(--cf-color-invalid, #c16464) 15%, transparent);
    overflow: visible;
}

/* ========================================
   Payment gateway chooser (radio cards)
   Structural layout lives here; skins provide
   the accent/radius/background via --cf-gw-* tokens.
   ======================================== */

craftforms-form .cf-gateway-chooser {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}

/* Hide the chooser while there is nothing to charge.
   Each gateway pane already hides itself at a zero amount; without this the
   picker sat above two invisible panes and selecting one did nothing visible.
   data-cf-payable is written by reflectPayable() in payments/prepayment-checks.
   Absent attribute = no gateway has reported yet, so stay hidden until one does. */
craftforms-form [data-has="payment"]:not([data-cf-payable="true"]) .cf-gateway-chooser {
    display: none;
}

/* "Fill in the required fields" hint — shown only while there is a price but the
   form is still invalid; the form sets data-cf-needs-input in _syncPaymentPrice(). */
craftforms-form .cf-payment-hint {
    display: none;
    margin: 0 0 16px;
    padding: 12px 14px;
    border: 1px dashed currentColor;
    border-radius: 8px;
    font-size: 0.9em;
    opacity: 0.7;
}

craftforms-form [data-has="payment"][data-cf-needs-input="true"] .cf-payment-hint {
    display: block;
}

craftforms-form .cf-gateway-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 6px;
    flex: 1 1 160px;
    min-height: 62px;
    padding: 14px 16px;
    border: 2px solid var(--cf-gw-border, #d5d8dd);
    border-radius: var(--cf-gw-radius, 8px);
    background: var(--cf-gw-bg, #fff);
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

craftforms-form .cf-gateway-card:hover {
    border-color: var(--cf-gw-accent, #635bff);
}

craftforms-form .cf-gateway-card__radio {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}

craftforms-form .cf-gateway-card__logo {
    display: block;
    height: 22px;
}

craftforms-form .cf-gateway-card__logo .cf-gw-logo {
    height: 22px;
    width: auto;
}

craftforms-form .cf-gateway-card__label {
    font-size: 13px;
    line-height: 1.2;
    color: var(--cf-gw-label, #50575e);
}

craftforms-form .cf-gateway-card__check {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid var(--cf-gw-border, #d5d8dd);
    background: transparent;
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}

/* Selected card */
craftforms-form .cf-gateway-card:has(.cf-gateway-card__radio:checked) {
    border-color: var(--cf-gw-accent, #635bff);
    box-shadow: 0 0 0 1px var(--cf-gw-accent, #635bff);
    background: var(--cf-gw-bg-active, #fbfbff);
}

craftforms-form .cf-gateway-card:has(.cf-gateway-card__radio:checked) .cf-gateway-card__check {
    border-color: var(--cf-gw-accent, #635bff);
    background: var(--cf-gw-accent, #635bff);
    box-shadow: inset 0 0 0 3px var(--cf-gw-bg, #fff);
}

/* Keyboard focus ring */
craftforms-form .cf-gateway-card__radio:focus-visible + .cf-gateway-card__logo {
    outline: 2px solid var(--cf-gw-accent, #635bff);
    outline-offset: 3px;
    border-radius: 2px;
}

/* Panes: only the active gateway's embedded component is shown */
craftforms-form .cf-gateway-pane {
    display: none;
}

craftforms-form [data-has="payment"][data-active-gateway="stripe"] .cf-gateway-pane[data-gateway="stripe"],
craftforms-form [data-has="payment"][data-active-gateway="paypal"] .cf-gateway-pane[data-gateway="paypal"],
craftforms-form [data-has="payment"][data-active-gateway="square"] .cf-gateway-pane[data-gateway="square"] {
    display: block;
}

/* Embedded component error text + spacing */
craftforms-form .cf-stripe-error,
craftforms-form .cf-paypal-error,
craftforms-form .cf-square-error {
    display: none;
    margin-top: 8px;
    color: var(--cf-color-invalid, #c44d4d);
    font-size: 0.85em;
}

craftforms-form .cf-paypal-buttons {
    margin-top: 8px;
}

/* Square's card iframe sets its own height; give it room to render. */
craftforms-form .cf-square-card {
    min-height: 90px;
}

/* Sold-out state: renders instead of the checkout/payment UI when linked stock is 0 */
craftforms-form [data-has="payment"][data-sold-out="true"] {
    padding: 12px 16px;
    border: 1px solid var(--cf-color-invalid, #c44d4d);
    border-radius: 6px;
    background: color-mix(in srgb, var(--cf-color-invalid, #c44d4d) 8%, transparent);
}

craftforms-form .cf-payment-sold-out {
    margin: 0;
    color: var(--cf-color-invalid, #c44d4d);
    font-weight: 500;
}

/* Builderius fix */
.builderiusContent craftforms-form label:has(+ [required])::after {
    content: unset;
}
/* Reason shown while a "Block submission" condition matches. Sits next to the disabled
   submit button — a disabled button alone explains nothing, so the text carries the why. */
craftforms-form .craftforms-submit-block-notice {
    margin: 0 0 8px;
    padding: 8px 12px;
    border: 1px solid var(--cf-color-invalid, #c44d4d);
    border-radius: 6px;
    background: color-mix(in srgb, var(--cf-color-invalid, #c44d4d) 8%, transparent);
    color: var(--cf-color-invalid, #c44d4d);
    font-size: 0.9em;
}



/* CraftForms — Default Form Skin */

.wp-block-craftforms-form:not([class*="is-style-"]),
.wp-block-craftforms-form.is-style-default {

    /* ========================================
       Skin Variables
       ======================================== */

    --cf-color-invalid: #c44d4d;
    --cf-color-valid: #51a88a;
    --cf-color-error-text: var(--cf-color-invalid);
    --cf-input-padding: var(--wp--preset--spacing--20, 0.5rem);
    --cf-field-gap: var(--wp--preset--spacing--20, 0.5rem);
    --cf-options-gap: var(--wp--preset--spacing--20, 0.5rem);

    /* ========================================
       Shared Border Tokens
       ======================================== */

    --cf-input-border-color: #c0c4c9;
    --cf-input-border-radius: 4px;

    /* Text swatch defaults inherit the input tokens */
    --cf-ts-border-color: var(--cf-input-border-color);
    --cf-ts-font-size: 0.8em;
    --cf-option-font-size: 0.8em;
    --cf-focus-color: #1a1a1a;
    --cf-input-font-size: 1rem;

    /* Card options — flat/minimal variant for the default skin */
    --cf-card-radius: var(--cf-input-border-radius);   /* 4px, matches inputs */
    --cf-card-border-width: 1px;
    --cf-card-accent: var(--cf-focus-color);           /* #1a1a1a (price color) */

    /* Payment gateway chooser — flat, matches inputs */
    --cf-gw-accent: var(--cf-focus-color);             /* #1a1a1a */
    --cf-gw-radius: var(--cf-input-border-radius);     /* 4px */
    --cf-gw-border: var(--cf-input-border-color);      /* #c0c4c9 */
    --cf-gw-bg: #fff;
    --cf-gw-bg-active: #fafafa;

    /* ========================================
       Field Wrapper Gap (label / input / error)
       ======================================== */

    .wp-block-craftforms-text-input-field,
    .wp-block-craftforms-textarea-field,
    .wp-block-craftforms-select-field,
    .wp-block-craftforms-radio-field,
    .wp-block-craftforms-checkboxes-field,
    .wp-block-craftforms-booking-datepicker-field,
    .wp-block-craftforms-file-field,
    .wp-block-craftforms-range-slider-field,
    .wp-block-craftforms-color-picker-field,
    .wp-block-craftforms-repeater-field {
        gap: var(--cf-field-gap);
    }

    /* ========================================
       Input / Select / Textarea — Border + Padding
       ======================================== */

    .wp-block-craftforms-text-input,
    .wp-block-craftforms-textarea,
    .wp-block-craftforms-select {
        padding: var(--cf-input-padding);
        margin: 0;
        border: 1px solid var(--cf-input-border-color);
        border-radius: var(--cf-input-border-radius);
        font-size: var(--cf-input-font-size);
    }

    /* ========================================
       Datepicker & Color Picker — Border + Padding
       ======================================== */

    .craftforms-datepicker-input,
    .cf-cp-input {
        padding: var(--cf-input-padding);
        border: 1px solid var(--cf-input-border-color);
        border-radius: var(--cf-input-border-radius);
    }

    /* ========================================
       Options Group Gap
       ======================================== */

    .craftforms-options-group {
        gap: var(--cf-options-gap);
    }

    /* ========================================
       Card Options — flat selected state
       ======================================== */

    /* Flat selected state: 2px dark border, no colored ring */
    .cf-field-card .wp-block-craftforms-radio-option:has(> input:checked),
    .cf-field-card .wp-block-craftforms-checkbox-option:has(> input:checked) {
        border-color: var(--cf-focus-color);
        border-width: 2px;
        box-shadow: none;
    }

    /* Remove the checkmark badge */
    .cf-field-card .wp-block-craftforms-radio-option:has(> input:checked)::after,
    .cf-field-card .wp-block-craftforms-checkbox-option:has(> input:checked)::after {
        content: none;
    }

    /* ========================================
       InfoBlock — reset constrained layout margin
       ======================================== */

    .wp-block-craftforms-infoblock.is-layout-constrained > * {
        margin-block-start: 0;
    }

    .wp-block-craftforms-infoblock.is-layout-flow > * {
        margin-block-start: 0;
        margin-block-end: 0;
    }

    /* ========================================
       Form Error Color
       ======================================== */

    .wp-block-craftforms-form-error {
        color: var(--cf-color-error-text);
        font-size: var(--cf-error-font-size, 0.8em);
    }

    /* ========================================
       Repeater Buttons
       ======================================== */

    .cf-repeater-add {
        padding: 0.35em 0.9em;
        border: 1px solid var(--cf-input-border-color);
        border-radius: var(--cf-input-border-radius);
        background: transparent;
        color: inherit;
        font-size: 0.875em;
        line-height: 1.4;
        transition: background 0.15s, border-color 0.15s;

        &:hover:not(:disabled) {
            background: color-mix(in srgb, currentColor 6%, transparent);
        }

        &:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }
    }

    .cf-repeater-remove {
        padding: 0.2em 0.6em;
        border: 1px solid transparent;
        border-radius: var(--cf-input-border-radius);
        background: transparent;
        color: var(--cf-color-invalid);
        font-size: 0.8em;
        line-height: 1.4;
        align-self: flex-end;
        transition: background 0.15s;

        &:hover:not(:disabled) {
            background: color-mix(in srgb, var(--cf-color-invalid) 10%, transparent);
        }

        &:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }
    }
}



/* CraftForms — Modern Form Skin */

.wp-block-craftforms-form.is-style-modern craftforms-range-slider {
    --cf-rs-track-fill-color:    #4361ee;
    --cf-rs-handle-border-color: #4361ee;
    --cf-rs-handle-shadow-focus: 0 0 0 3px rgba(67,97,238,0.2);
    --cf-rs-tooltip-bg:          #1e293b;
}

.wp-block-craftforms-form.is-style-modern {

    /* ========================================
       Skin Variables
       ======================================== */

    --cf-color-invalid: #c44d4d;
    --cf-color-valid: #51a88a;
    --cf-color-error-text: var(--cf-color-invalid);
    --cf-input-padding: var(--wp--preset--spacing--20, 0.5rem);
    --cf-field-gap: var(--wp--preset--spacing--20, 0.5rem);
    --cf-options-gap: var(--wp--preset--spacing--20, 0.5rem);

    --cf-modern-input-bg: #f9fafb;
    --cf-modern-input-color: #20242f;
    --cf-modern-input-border-color: #c0c4c9;
    --cf-modern-input-border-radius: 0.25rem;
    --cf-modern-focus-color: #3b4ce2;
    --cf-modern-placeholder-color: #929292;

    /* Text swatch tokens — match input/select appearance */
    --cf-ts-font-size: 0.8em;
    --cf-option-font-size: 0.8em;
    --cf-ts-bg: var(--cf-modern-input-bg);
    --cf-ts-color: var(--cf-modern-input-color);
    --cf-ts-border-color: var(--cf-modern-input-border-color);
    --cf-ts-border-radius: var(--cf-modern-input-border-radius);
    --cf-ts-bg-checked: var(--cf-modern-focus-color);
    --cf-ts-color-checked: #fff;
    --cf-focus-color: var(--cf-modern-focus-color);

    /* Card options inherit the modern accent (keeps base 12px radius + shadow + checkmark) */
    --cf-card-accent: var(--cf-modern-focus-color);

    /* Payment gateway chooser — rounded, soft-filled to match modern inputs */
    --cf-gw-accent: var(--cf-modern-focus-color);          /* #3b4ce2 */
    --cf-gw-radius: 12px;
    --cf-gw-border: var(--cf-modern-input-border-color);   /* #c0c4c9 */
    --cf-gw-bg: var(--cf-modern-input-bg);                 /* #f9fafb */
    --cf-gw-bg-active: #fff;
    --cf-gw-label: var(--cf-modern-input-color);           /* #20242f */

    /* ========================================
       Field Wrapper Gap (label / input / error)
       ======================================== */

    .wp-block-craftforms-text-input-field,
    .wp-block-craftforms-textarea-field,
    .wp-block-craftforms-select-field,
    .wp-block-craftforms-radio-field,
    .wp-block-craftforms-checkboxes-field,
    .wp-block-craftforms-booking-datepicker-field,
    .wp-block-craftforms-file-field,
    .wp-block-craftforms-range-slider-field,
    .wp-block-craftforms-color-picker-field,
    .wp-block-craftforms-repeater-field {
        gap: var(--cf-field-gap);
    }

    /* ========================================
       Input / Select / Textarea
       ======================================== */

    .wp-block-craftforms-text-input,
    .wp-block-craftforms-textarea,
    .wp-block-craftforms-select {
        background: var(--cf-modern-input-bg);
        border: 1px solid var(--cf-modern-input-border-color);
        border-bottom-width: 2px;
        border-radius: var(--cf-modern-input-border-radius);
        color: var(--cf-modern-input-color);
        padding: var(--cf-input-padding);
        margin: 0;
        font-size: inherit;
        transition: border-color 0.15s ease-out;

        &::placeholder {
            color: var(--cf-modern-placeholder-color);
        }

        &:focus {
            outline: none;
            border-color: var(--cf-modern-focus-color);
        }
    }

    /* ========================================
       Select — chevron icon
       ======================================== */

    .wp-block-craftforms-select {
        appearance: none;
        background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2716%27 height=%2716%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%236B7280%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpolyline points=%276 9 12 15 18 9%27/%3E%3C/svg%3E");
        background-position: right 0.75rem center;
        background-repeat: no-repeat;
        background-size: 1rem;
        padding-right: 2.25rem;
    }

    /* ========================================
       Datepicker & Color Picker Input
       ======================================== */

    .craftforms-datepicker-input,
    .cf-cp-input {
        background: var(--cf-modern-input-bg);
        border: 1px solid var(--cf-modern-input-border-color);
        border-bottom-width: 2px;
        border-radius: var(--cf-modern-input-border-radius);
        color: var(--cf-modern-input-color);
        padding: var(--cf-input-padding);
        margin: 0;
        font-size: inherit;
        transition: border-color 0.15s ease-out;

        &::placeholder {
            color: var(--cf-modern-placeholder-color);
        }

        &:focus {
            outline: none;
            border-color: var(--cf-modern-focus-color);
        }
    }

    /* ========================================
       Options Group Gap
       ======================================== */

    .craftforms-options-group {
        gap: var(--cf-options-gap);
    }

    /* ========================================
       Radio & Checkbox Inputs
       ======================================== */

    input[type="radio"],
    input[type="checkbox"] {
        accent-color: var(--cf-modern-focus-color);
        width: 1rem;
        height: 1rem;
        cursor: pointer;
    }

    /* Labeled invalid inputs in modern skin: restore normal grey border (override base revert) */
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input:user-invalid,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea:user-invalid,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select:user-invalid,
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input.invalid,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea.invalid,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select.invalid {
        border-color: var(--cf-modern-input-border-color);
    }

    /* Labeled invalid inputs on focus: show blue focus border instead of grey or red */
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input:user-invalid:focus,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea:user-invalid:focus,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select:user-invalid:focus,
    .wp-block-craftforms-text-input-field:has(.wp-block-craftforms-label) input.wp-block-craftforms-text-input.invalid:focus,
    .wp-block-craftforms-textarea-field:has(.wp-block-craftforms-label) textarea.wp-block-craftforms-textarea.invalid:focus,
    .wp-block-craftforms-select-field:has(.wp-block-craftforms-label) select.wp-block-craftforms-select.invalid:focus {
        border-color: var(--cf-modern-focus-color);
        outline: none;
    }

    /* Non-swatch radio/checkbox: explicit blue focus ring (accent-color alone is browser-dependent) */
    .wp-block-craftforms-radio-option:not(.cf-is-swatch-color):not(.cf-is-swatch-image) input[type="radio"]:focus-visible,
    .wp-block-craftforms-checkbox-option:not(.cf-is-swatch-color):not(.cf-is-swatch-image) input[type="checkbox"]:focus-visible {
        outline: 2px solid var(--cf-modern-focus-color);
        outline-offset: 2px;
    }

    /* Swatch focus ring: use focus token color instead of currentColor */
    .wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
    .wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:focus-visible ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:focus-visible ~ .cf-swatch-visual {
        outline: 2px solid var(--cf-modern-focus-color);
        outline-offset: 2px;
    }
    .wp-block-craftforms-checkbox-option.cf-is-swatch-color input[type="checkbox"]:checked ~ .cf-swatch-visual,
    .wp-block-craftforms-checkbox-option.cf-is-swatch-image input[type="checkbox"]:checked ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-color input[type="radio"]:checked ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-image input[type="radio"]:checked ~ .cf-swatch-visual {
        border-color: var(--cf-modern-focus-color);
        box-shadow: 0 0 0 1px var(--cf-modern-focus-color);
    }

    /* ========================================
       Card Options — match modern input border
       ======================================== */

    .cf-field-card .wp-block-craftforms-radio-option,
    .cf-field-card .wp-block-craftforms-checkbox-option {
        border-width: var(--cf-card-border-width, 1px);
        border-color: var(--cf-modern-input-border-color);
        border-bottom-width: 2px;
    }

    /* ========================================
       Text Swatches — match input appearance
       ======================================== */

    .cf-is-swatch-text .cf-swatch-visual {
        border-bottom-width: 2px;
        transition: border-color 0.15s ease-out;
    }

    .wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:checked ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:checked ~ .cf-swatch-visual {
        border-color: var(--cf-modern-focus-color);
    }

    .wp-block-craftforms-checkbox-option.cf-is-swatch-text input[type="checkbox"]:focus-visible ~ .cf-swatch-visual,
    .wp-block-craftforms-radio-option.cf-is-swatch-text input[type="radio"]:focus-visible ~ .cf-swatch-visual {
        outline: 2px solid var(--cf-modern-focus-color);
    }

    /* ========================================
       InfoBlock — reset constrained layout margin
       ======================================== */

    .wp-block-craftforms-infoblock.is-layout-constrained > * {
        margin-block-start: 0;
    }

    .wp-block-craftforms-infoblock.is-layout-flow > * {
        margin-block-start: 0;
    }

    /* ========================================
       Form Error Color
       ======================================== */

    .wp-block-craftforms-form-error {
        color: var(--cf-color-error-text);
        font-size: var(--cf-error-font-size, 0.8em);
    }

    /* Modern popover-mode errors — styled like browser validation tooltips */
    .wp-block-craftforms-form-error[data-cf-error-popover] {
        background: #fff;
        color: var(--cf-color-error-text);
        border: 1px solid color-mix(in srgb, var(--cf-color-invalid, #c44d4d) 30%, transparent);
        border-radius: var(--cf-modern-input-border-radius, 0.25rem);
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 0 0 1px color-mix(in srgb, var(--cf-color-invalid, #c44d4d) 15%, transparent);
        padding: 0.35em 0.6em;
        line-height: 1.4;
        width: auto;
    }

    button[type="submit"]:focus-visible {
        outline: 2px solid var(--cf-modern-focus-color);
        outline-offset: 2px;
    }

    /* ========================================
       Repeater Buttons
       ======================================== */

    .cf-repeater-add {
        padding: 0.35em 0.9em;
        border: 1px solid var(--cf-modern-input-border-color);
        border-bottom-width: 2px;
        border-radius: var(--cf-modern-input-border-radius);
        background: var(--cf-modern-input-bg);
        color: var(--cf-modern-input-color);
        font-size: 0.875em;
        line-height: 1.4;
        transition: border-color 0.15s, background 0.15s;

        &:hover:not(:disabled) {
            border-color: var(--cf-modern-focus-color);
        }

        &:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }
    }

    .cf-repeater-remove {
        padding: 0.2em 0.6em;
        border: none;
        border-radius: var(--cf-modern-input-border-radius);
        background: transparent;
        color: var(--cf-color-invalid);
        font-size: 0.8em;
        line-height: 1.4;
        align-self: flex-end;
        transition: background 0.15s;

        &:hover:not(:disabled) {
            background: color-mix(in srgb, var(--cf-color-invalid) 10%, transparent);
        }

        &:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }
    }
}


.wp-block-craftforms-submit-button{border:none;border-radius:4px;cursor:pointer;display:inline-block;font-size:inherit;font-weight:600;line-height:inherit;padding:12px 24px;text-decoration:none;transition:all .2s ease}.wp-block-craftforms-submit-button.is-style-fill:hover:not(:disabled){background-color:#005a87;border-color:#005a87}.wp-block-craftforms-submit-button.is-style-fill:focus:not(:disabled){outline:2px solid #007cba;outline-offset:2px}.wp-block-craftforms-submit-button.is-style-outline:hover:not(:disabled){background-color:#007cba;color:#fff}.wp-block-craftforms-submit-button.is-style-outline:focus:not(:disabled){outline:2px solid #007cba;outline-offset:2px}.wp-block-craftforms-submit-button:disabled{cursor:not-allowed;opacity:.6}@media (max-width:600px){.wp-block-craftforms-submit-button{padding:14px 24px;width:100%}}.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative}