.elementor-kit-4{--e-global-color-primary:#2ca62f;--e-global-color-secondary:#025d03;--e-global-color-text:#4f4f4f;--e-global-color-accent:#28ae3d;--e-global-color-page:#f4f8f4;--e-global-color-mint:#e2f0e4;--e-global-typography-primary-font-family:"Fredoka";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Fredoka";--e-global-typography-secondary-font-weight:500;--e-global-typography-text-font-family:"Outfit";--e-global-typography-text-font-weight:500;--e-global-typography-accent-font-family:"Outfit";--e-global-typography-accent-font-weight:500;background-color:#f4f8f4;color:#4f4f4f;font-family:"Outfit", Sans-serif;}.elementor-kit-4 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1286px;}.e-con{--container-max-width:1286px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS */html, body { overflow-x: clip; }
@keyframes ffe-fade-up { from { opacity: 0; transform: translate3d(0, 24px, 0); } }
@media (prefers-reduced-motion: no-preference) {
  [data-load-in] { animation: ffe-fade-up 700ms cubic-bezier(0.22, 1, 0.36, 1) 150ms both; }
  [data-load-in="1"] { animation-delay: 240ms; }
  [data-load-in="2"] { animation-delay: 330ms; }
  [data-load-in="3"] { animation-delay: 420ms; }
  [data-load-in="4"] { animation-delay: 510ms; }
  [data-load-in="5"] { animation-delay: 600ms; }
}
@font-face { font-family: Inter; font-style: italic; font-weight: 600; font-display: swap; src: url("https://www.freshfoodexpoapac.com/wp-content/uploads/2026/10/ffe-inter-600-italic-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
/* Cap-trimmed text like the reference (globals.css :where(h1,h2,h3,p,li,label,.trim)), inside sections marked data-trim. */
[data-trim] :is(.e-heading-base, .e-paragraph-base):not([data-untrim]) { text-box: trim-both cap alphabetic; }
/* Two-tone headings: <em> is the accent run. */
:is(.e-heading-base, .e-paragraph-base) em { font-style: normal; color: #28ae3d; }
@media (max-width: 767px) { [data-br-md] br { display: none; } }
[data-nowrap] { white-space: nowrap; }
@media (min-width: 768px) { [data-nowrap-md] { white-space: nowrap; } }
[data-balance] { text-wrap: balance; }
[data-noevents] { pointer-events: none; }
[data-count] { font-variant-numeric: tabular-nums; }
@media (max-width: 767px) {
  [data-cq-m] { container-type: inline-size; }
  [data-zoom-m="903"] { zoom: 0.903; } /* Ecosystem cards: phone frame = desktop card x 0.903 */
  [data-zoom-m="619"] { zoom: 0.619; } /* Show cards: x 0.619 */
}
/* Pills (globals.css .btn / .pill): focus ring, 44px touch target, chevron nudge; cards: photo zoom. */
:is([data-btn], [data-group]):focus-visible { outline: 2px solid #025d03; outline-offset: 3px; }
@media (pointer: coarse) { [data-btn]::after { content: ""; position: absolute; inset: min(0px, calc((100% - 44px) / 2)); } }
[data-pill] span { display: inline; position: relative; left: 0; margin-left: 10px; } /* inline (not inline-block) so the word joiner keeps the chevron with the last word */
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
  [data-nudge], [data-group-nudge] { transition: transform 250ms cubic-bezier(0.22, 1, 0.36, 1); }
  [data-pill] span { transition: left 250ms cubic-bezier(0.22, 1, 0.36, 1); }
  [data-btn]:hover [data-nudge], [data-group]:hover [data-group-nudge] { transform: translateX(3px); }
  [data-btn]:hover [data-pill] span { left: 3px; }
  [data-zoom] { transition: transform 600ms cubic-bezier(0.22, 1, 0.36, 1); }
  [data-group]:hover [data-zoom] { transform: scale(1.04); }
}
/* Scroll reveal; .ffe-js is set by the "FFE motion" Custom Code snippet. */
@media (prefers-reduced-motion: no-preference) {
  .ffe-js [data-reveal] { opacity: 0; transform: translate3d(0, 24px, 0); transition: opacity 700ms cubic-bezier(0.22, 1, 0.36, 1), transform 700ms cubic-bezier(0.22, 1, 0.36, 1); }
  .ffe-js [data-reveal="fade"] { transform: none; }
  .ffe-js [data-reveal="scale"] { transform: scale(0.85); }
  .ffe-js [data-reveal].is-visible { opacity: 1; transform: none; }
  /* globals.css: transition-delay = --i * --stagger (90ms). Same specificity as the transition shorthand above would lose to it, hence the extra attribute. */
  .ffe-js [data-reveal][data-reveal-i="1"] { transition-delay: 90ms; } .ffe-js [data-reveal][data-reveal-i="2"] { transition-delay: 180ms; } .ffe-js [data-reveal][data-reveal-i="3"] { transition-delay: 270ms; }
  .ffe-js [data-reveal][data-reveal-i="4"] { transition-delay: 360ms; } .ffe-js [data-reveal][data-reveal-i="5"] { transition-delay: 450ms; }
}
.elementor-editor-active [data-reveal] { opacity: 1 !important; transform: none !important; }
/* Inner pages: a <br> that only breaks from lg (max-lg:hidden); title that must stay on one line from lg. */
@media (max-width: 1024px) { [data-br-lg] br { display: none; } }
@media (min-width: 1025px) { [data-nowrap-lg] { white-space: nowrap; } }
[data-prewrap] { white-space: pre-wrap; } @media (min-width: 1025px) { [data-prewrap-lg] { white-space: pre-wrap; } } /* whitespace-pre-wrap / lg:whitespace-pre-wrap copy (double spaces and 
 survive escaped-html) */
[data-nowrap-span] span { white-space: nowrap; } /* <span>…</span> inside a heading = the source's whitespace-nowrap run (a class is stripped from headings) */
/* Forms (globals.css .input / .checkbox / .pill): states the atomic schema can't express. .elementor lifts these above the widgets' own base and local classes. */
body .elementor [data-ffe-input] { appearance: none; outline: none; }
body .elementor [data-ffe-input]::placeholder { color: #cdcdcd; opacity: 1; }
body .elementor select[data-ffe-input]:invalid { color: #cdcdcd; } body .elementor select[data-ffe-input] option { color: #000; }
body .elementor [data-ffe-input]:is(:focus, :focus-within) { border-color: #28ae3d; box-shadow: 0 0 0 4px rgb(40 174 61 / .15); }
body .elementor [data-ffe-input]:is(:user-invalid, :has(:user-invalid)) { border-color: #d93025; box-shadow: 0 0 0 4px rgb(217 48 37 / .12); }
body .elementor [data-ffe-dial] input { outline: none; } body .elementor [data-ffe-dial] select { appearance: none; border: 0; }
body .elementor [data-dial-flag] { flex-shrink: 0; background: #fff url(/flags/sg.svg) center / cover no-repeat; }
/* Dial-code list (PhoneInput .dial-select): where the browser can style a select's list (Chrome/Edge 135+), padded rows in the
   country dropdown's look, long names wrapping; elsewhere the native list. */
@supports (appearance: base-select) {
  body .elementor [data-ffe-dial] select, body .elementor [data-ffe-dial] select::picker(select) { appearance: base-select; }
  body .elementor [data-ffe-dial] select::picker(select) { width: 300px; max-height: min(320px, 60dvh); overflow-x: hidden; margin-top: 6px; padding: 6px 0; border: 1px solid #cdcdcd; border-radius: 10px; background: #fff; box-shadow: 0 12px 32px -12px rgb(2 93 3 / .3); }
  body .elementor [data-ffe-dial] optgroup { padding-top: 6px; font-size: 12px; font-weight: 600; color: #4f4f4f; text-transform: uppercase; text-indent: 16px; }
  body .elementor [data-ffe-dial] option { padding: 9px 16px; font-size: 15px; line-height: 20px; font-weight: 500; white-space: normal; color: #1f1f1f; text-transform: none; text-indent: 0; }
  body .elementor [data-ffe-dial] option:is(:hover, :focus-visible, :checked) { background: #e2f0e4; color: #025d03; outline: none; }
  body .elementor [data-ffe-dial] option::checkmark { display: none; }
}
/* Country combobox (CountrySelect.tsx): chevron flips when open, listbox as in the source. */
body .elementor [data-ffe-cs] { position: relative; }
body .elementor [data-ffe-cs] [data-noevents] { transition: transform 250ms cubic-bezier(.22, 1, .36, 1); }
body .elementor [data-ffe-cs][data-open] [data-noevents] { transform: rotate(180deg); }
body .elementor [data-ffe-cs] > ul { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 20; max-height: 264px; overflow-y: auto; overscroll-behavior: contain; margin: 0; padding: 6px 0; list-style: none; background: #fff; border: 1px solid #cdcdcd; border-radius: 10px; box-shadow: 0 12px 32px -12px rgb(2 93 3 / .3); animation: ffe-cs-in 250ms cubic-bezier(.22, 1, .36, 1) both; }
body .elementor [data-ffe-cs] > ul[hidden] { display: none; }
body .elementor [data-ffe-cs] > ul > li { margin: 0; padding: 9px 16px; cursor: pointer; font-size: 15px; line-height: 20px; font-weight: 500; color: #1f1f1f; }
body .elementor [data-ffe-cs] > ul > li.is-active { background: #e2f0e4; color: #025d03; }
body .elementor [data-ffe-cs] > ul > li.ffe-cs-none { cursor: default; font-weight: 400; color: #4f4f4f; }
@keyframes ffe-cs-in { from { opacity: 0; } }
body .elementor [data-ffe-check], body .elementor [data-ffe-radio] { appearance: none; flex-shrink: 0; margin: 0; cursor: pointer; background: #fff center / 100% no-repeat; }
body .elementor [data-ffe-check]::before, body .elementor [data-ffe-radio]::before { content: none; }
body .elementor [data-ffe-check]:checked { border-color: #28ae3d; background-color: #28ae3d; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
body .elementor [data-ffe-radio] { border-radius: 50%; } body .elementor [data-ffe-radio]:checked { border-color: #28ae3d; background-color: #28ae3d; box-shadow: inset 0 0 0 4px #fff; }
body .elementor :is([data-ffe-check], [data-ffe-radio]):focus-visible { outline: 2px solid #025d03; outline-offset: 2px; }
body .elementor :is([data-ffe-check], [data-ffe-radio]):user-invalid { border-color: #d93025; }
body .elementor [data-ffe-turnstile].is-compact { min-height: 140px; } /* compact widget is 150x140 */
body .elementor [data-ffe-turnstile] { max-width: 100%; }
[data-span] { grid-column: 1 / -1; }
body .elementor .e-form-label-base :is(b, strong) { font-weight: 600; }
body .elementor [data-link="dark"] a { font-weight: 600; color: #000; text-decoration: none; text-underline-offset: 2px; } body .elementor [data-link="dark"] a:hover { text-decoration: underline; }
body .elementor [data-link="accent"] a { color: #28ae3d; text-decoration: underline; text-decoration-thickness: from-font; text-underline-offset: 2px; overflow-wrap: anywhere; transition: color 250ms cubic-bezier(.22,1,.36,1); } body .elementor [data-link="accent"] a:hover { color: #025d03; }
body .elementor [data-req] span { color: #e4051f; } /* the " *" run inside a required field's label */
/* SIAW trailer (SiawVideo.tsx). */
[data-ffe-video] video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
[data-ffe-video] button { position: absolute; right: 16px; bottom: 16px; width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%;
  background: rgb(0 0 0 / .4); color: #fff; backdrop-filter: blur(4px); cursor: pointer; transition: background-color 250ms cubic-bezier(.22,1,.36,1); }
[data-ffe-video] button:hover { background: rgb(0 0 0 / .6); }
[data-ffe-video] button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { [data-ffe-video] button { display: none; } }/* End custom CSS */