/* Foshan Living webfonts.
   SUBSTITUTION: visitlondon.com sets its interface in a geometric-humanist sans
   (Gotham family). No binaries were supplied, so we use Figtree from Google Fonts
   as the nearest free match, with Noto Sans SC for Chinese. */
/* latin-ext */
@font-face {
  font-family: 'Figtree';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/44525497-f8ef-40fb-b421-34366e917188.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Figtree';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/3fd2bf43-3e80-425d-8dc8-4541de0e8689.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;
}
/* latin-ext */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/0080c93b-78d3-42ec-a006-f15c5f558c50.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url("../fonts/cd749a02-dc18-4eac-9936-4d5a58c9be99.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;
}

































































































/* cyrillic */

/* vietnamese */

/* latin-ext */

/* latin */


































































































/* cyrillic */

/* vietnamese */

/* latin-ext */

/* latin */


































































































/* cyrillic */

/* vietnamese */

/* latin-ext */

/* latin */


































































































/* cyrillic */

/* vietnamese */

/* latin-ext */

/* latin */



:root{
/* ---- Brand ------------------------------------------------------------ */
/* A single saturated red carries the whole brand, as on visitlondon.com.
   Ours is a Foshan red — kiln-fired lion-dance red, a shade warmer. */
--red-700:#8E1116;--red-600:#A81820;--red-500:#D8232A;--red-400:#E9575C;
--red-100:#FBE2E3;--red-50:#FDF3F3;
/* Secondary — Lingnan roof-tile jade, for sustainability and quiet sections */
--jade-600:#0A5A50;--jade-500:#0E7C6E;--jade-100:#E1F0ED;
/* Gold — used only for offer flags and star ratings */
--gold-500:#C08A1E;--gold-100:#F8EEDA;

/* ---- Neutrals --------------------------------------------------------- */
--ink-900:#111111;--ink-800:#1F1F1F;--ink-700:#333333;--ink-600:#555555;
--ink-500:#767676;--ink-400:#9B9B9B;--ink-300:#CFCFCF;--ink-200:#E4E4E4;
--ink-100:#F1F1F1;--ink-50:#F7F7F7;--white:#FFFFFF;

/* ---- Signal ----------------------------------------------------------- */
--signal-green:#1F7A45;--signal-amber:#B27500;--signal-red:#C4262E;--signal-blue:#1B5E9E;

/* ---- Semantic --------------------------------------------------------- */
--surface-page:var(--white);
--surface-sunken:var(--ink-50);
--surface-card:var(--white);
--surface-inset:var(--ink-100);
--surface-inverse:var(--ink-900);
--surface-brand:var(--red-500);
--surface-brand-dark:var(--red-600);
--surface-brand-soft:var(--red-50);
--surface-secondary:var(--jade-500);
--surface-secondary-soft:var(--jade-100);

--text-heading:var(--ink-900);
--text-body:var(--ink-700);
--text-muted:var(--ink-500);
--text-faint:var(--ink-400);
--text-inverse:var(--white);
--text-brand:var(--red-600);
--text-link:var(--ink-900);
--text-link-hover:var(--red-600);
--text-price:var(--ink-900);

--border-hairline:var(--ink-200);
--border-rule:var(--ink-300);
--border-strong:var(--ink-900);
--border-brand:var(--red-500);
--border-focus:var(--ink-900);

--overlay-scrim:rgba(17,17,17,.6);
--overlay-protect:linear-gradient(to top,rgba(17,17,17,.82) 0%,rgba(17,17,17,.42) 45%,rgba(17,17,17,0) 85%); /* @kind other */
}

:root{
/* ---- Families --------------------------------------------------------- */
--font-sans:"Figtree",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
--font-display:"Figtree",system-ui,-apple-system,Arial,sans-serif;
--font-cjk:"Noto Sans SC","Figtree",sans-serif;

/* ---- Sizes ------------------------------------------------------------ */
--size-display-1:56px;--size-display-2:44px;--size-display-3:34px;
--size-head-1:28px;--size-head-2:22px;--size-head-3:19px;
--size-body-lg:18px;--size-body:16px;--size-body-sm:14px;
--size-caption:13px;--size-label:12px;

/* ---- Line heights ----------------------------------------------------- */
--lh-display:1.08; /* @kind other */
--lh-head:1.2; /* @kind other */
--lh-body:1.6; /* @kind other */
--lh-tight:1.35; /* @kind other */
--lh-label:1.1; /* @kind other */

/* ---- Weights ---------------------------------------------------------- */
--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-black:800;

/* ---- Tracking --------------------------------------------------------- */
--track-display:-0.02em; /* @kind other */
--track-head:-0.01em; /* @kind other */
--track-body:0; /* @kind other */
--track-label:0.06em; /* @kind other */

/* ---- Composed roles --------------------------------------------------- */
--type-display:var(--weight-black) var(--size-display-1)/var(--lh-display) var(--font-display);
--type-title:var(--weight-bold) var(--size-display-3)/var(--lh-head) var(--font-display);
--type-head:var(--weight-bold) var(--size-head-1)/var(--lh-head) var(--font-display);
--type-card-title:var(--weight-bold) var(--size-head-3)/1.3 var(--font-display);
--type-body:var(--weight-regular) var(--size-body)/var(--lh-body) var(--font-sans);
--type-body-lg:var(--weight-regular) var(--size-body-lg)/var(--lh-body) var(--font-sans);
--type-caption:var(--weight-regular) var(--size-caption)/var(--lh-tight) var(--font-sans);
--type-label:var(--weight-bold) var(--size-label)/var(--lh-label) var(--font-sans);
--type-price:var(--weight-bold) var(--size-body)/1.2 var(--font-sans);
}

:root{
--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;
--space-6:24px;--space-7:32px;--space-8:48px;--space-9:64px;--space-10:96px;
--gutter-page:24px;--gutter-page-lg:40px;--gutter-col:20px;
--measure-prose:74ch;--measure-narrow:52ch;
--container-max:1280px;--container-text:760px;
--radius-0:0px;--radius-1:4px;--radius-2:8px;--radius-3:12px;--radius-pill:999px;
--rule-hair:1px;--rule-mid:2px;--rule-heavy:4px;
--control-h-sm:36px;--control-h:44px;--control-h-lg:52px;
--section-gap:56px;
}

:root{
--shadow-0:none;
--shadow-1:0 1px 3px rgba(17,17,17,.10);
--shadow-2:0 4px 14px rgba(17,17,17,.12);
--shadow-3:0 16px 40px rgba(17,17,17,.20);
--shadow-header:0 2px 6px rgba(17,17,17,.10);
--shadow-inset-hair:inset 0 0 0 1px var(--border-hairline);
--focus-ring:0 0 0 2px var(--white),0 0 0 4px var(--ink-900);
}

:root{
--ease-standard:cubic-bezier(.2,0,0,1); /* @kind other */
--ease-exit:cubic-bezier(.4,0,1,1); /* @kind other */
--ease-emphasis:cubic-bezier(.16,1,.3,1); /* @kind other */
--dur-1:120ms; /* @kind other */
--dur-2:200ms; /* @kind other */
--dur-3:300ms; /* @kind other */
--dur-4:450ms; /* @kind other */
--transition-control:color var(--dur-2) var(--ease-standard),background-color var(--dur-2) var(--ease-standard),border-color var(--dur-2) var(--ease-standard),box-shadow var(--dur-2) var(--ease-standard); /* @kind other */
}

*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;color:var(--text-heading);font-family:var(--font-display);font-weight:var(--weight-bold);letter-spacing:var(--track-head);line-height:var(--lh-head)}
h1{font-weight:var(--weight-black);letter-spacing:var(--track-display)}
p{margin:0;text-wrap:pretty}
a{color:var(--text-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:var(--transition-control)}
a:hover{color:var(--text-link-hover);text-decoration-thickness:2px}
::selection{background:var(--red-100);color:var(--ink-900)}
.fl-label{font:var(--type-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-muted)}
.fl-rule{border:0;border-top:var(--rule-hair) solid var(--border-hairline);margin:0}



html,body{margin:0;background:var(--surface-page);color:var(--text-body)}a{color:var(--text-link)}a:hover{color:var(--text-link-hover)}#root{min-width:1280px}
.fl-card{transition:box-shadow 180ms var(--ease-standard),transform 180ms var(--ease-standard)}.fl-card:hover{box-shadow:var(--shadow-2);transform:translateY(-2px)}.fl-card-img{transition:transform 450ms var(--ease-emphasis)}.fl-card:hover .fl-card-img{transform:scale(1.04)}.fl-card:hover .fl-card-title{text-decoration:underline;text-underline-offset:3px}.fl-megalink:hover{color:var(--red-600)!important;text-decoration:underline;text-underline-offset:3px}.fl-writer:hover .fl-writer-name{text-decoration:underline;text-underline-offset:3px}.fl-writer img{transition:filter 200ms var(--ease-standard)}.fl-writer:hover img{filter:grayscale(0)}