/* global React, useLang, useBP */
/* ============================================================
   Sessions — the wedding-photography packages.
   Sub-sections (all mounted in one editorial flow):
     #sessions-plans    Three plans, side-by-side
     #sessions-addons   Add-ons + extended-location grid
     #sessions-details  Numbered details (wardrobe, hair, transport, etc.)
     #sessions-album    Album & side-film offer
   ============================================================ */

const { useState: useS } = React;

/* ----------------------------------------------------------------
   Top of the section — editorial hero
   ---------------------------------------------------------------- */
const SessionsHero = () => {
  const { t } = useLang();
  const { notLg } = useBP();
  return (
    <div id="sessions" style={{ padding: notLg ? "72px var(--page-pad) 40px" : "112px var(--page-pad) 56px", borderTop: "1px solid var(--hairline)" }}>
      <div style={{ display: "flex", alignItems: "baseline", gap: 16, marginBottom: 48, flexWrap: "wrap" }}>
        <Folio>{t("sess.folio")}</Folio>
        <div style={{ flex: 1 }} />
        <Folio>TOKYO · KYOTO</Folio>
        <Folio>2026</Folio>
      </div>
      <div style={{
        display: "grid",
        gridTemplateColumns: notLg ? "1fr" : "1.2fr 1fr",
        gap: notLg ? 32 : 80,
        alignItems: notLg ? "start" : "end",
      }}>
        <div>
          <Kicker>{t("sess.kicker")}</Kicker>
          <h2
            style={{
              fontFamily: "var(--font-display)",
              fontSize: "clamp(40px, 7.2vw, 96px)",
              lineHeight: 0.98,
              letterSpacing: "-0.015em",
              margin: "16px 0 0",
              color: "var(--ink-1)",
            }}
          >
            <span style={{ display: "block" }}>{t("sess.title")}</span>
            <span style={{ display: "block" }}>{t("sess.title.l2")}</span>
          </h2>
        </div>
        <p style={{ fontFamily: "var(--font-serif)", fontSize: 17, lineHeight: 1.85, color: "var(--ink-2)", margin: 0 }}>
          {t("sess.intro")}
        </p>
      </div>
    </div>
  );
};

/* ----------------------------------------------------------------
   Plan card — one of three columns
   ---------------------------------------------------------------- */
const PlanCard = ({ id, popular, image }) => {
  const { t, lang } = useLang();
  const rows = [
    `p.${id}.duration`,
    `p.${id}.transport`,
    `p.${id}.photos`,
    `p.${id}.retouch`,
    `p.${id}.outfits`,
    `p.${id}.locations`,
  ];
  return (
    <article
      style={{
        background: popular ? "var(--paper-warm)" : "transparent",
        padding: popular ? "32px 28px 36px" : "32px 4px 36px",
        borderTop: popular ? "1px solid var(--ink-1)" : "1px solid var(--hairline)",
        position: "relative",
        display: "flex",
        flexDirection: "column",
        gap: 18,
      }}
    >
      {popular && (
        <div style={{ position: "absolute", top: -10, left: 28, background: "var(--vermilion)", color: "var(--paper-warm)", fontFamily: "var(--font-sans)", fontSize: 10, letterSpacing: "0.18em", textTransform: "uppercase", padding: "3px 8px", lineHeight: 1.3 }}>
          {t("p.popular")}
        </div>
      )}
      <div style={{ display: "flex", alignItems: "baseline", gap: 12 }}>
        <Kicker color="muted">{t(`p.${id}.kicker`)}</Kicker>
      </div>
      <div>
        <h3 style={{ fontFamily: "var(--font-display)", fontSize: 40, lineHeight: 1, letterSpacing: "-0.01em", color: "var(--ink-1)", margin: "4px 0 6px" }}>
          {t(`p.${id}.name`)}
        </h3>
        <div style={{ fontFamily: "var(--font-display)", fontSize: 22, color: "var(--foiga-bronze)", letterSpacing: "0.01em" }}>
          {t(`p.${id}.price`)}
        </div>
      </div>
      {image && (
        <div
          style={{
            width: "100%",
            aspectRatio: "4 / 3",
            background: `url('${image}') center/cover no-repeat`,
            marginTop: 4,
          }}
        />
      )}
      <Hairline style={{ marginTop: 6 }} />
      <ul style={{ listStyle: "none", padding: 0, margin: 0, display: "flex", flexDirection: "column", gap: 12 }}>
        {rows.map((k) => (
          <li key={k} style={{ fontFamily: "var(--font-serif)", fontSize: 14.5, lineHeight: 1.55, color: "var(--ink-2)", display: "flex", gap: 10 }}>
            <span style={{ color: "var(--foiga-bronze)", flexShrink: 0 }}>·</span>
            <span>{t(k)}</span>
          </li>
        ))}
        {id === "c" && (
          <li style={{ fontFamily: "var(--font-serif)", fontSize: 14.5, lineHeight: 1.55, color: "var(--ink-1)", display: "flex", gap: 10, fontWeight: 500 }}>
            <span style={{ color: "var(--vermilion)", flexShrink: 0 }}>＋</span>
            <span>{t("p.c.album")}</span>
          </li>
        )}
      </ul>
      <div style={{ marginTop: "auto", paddingTop: 14 }}>
        <a
          href="#inquire"
          style={{
            fontFamily: "var(--font-sans)",
            fontSize: 11,
            letterSpacing: "0.18em",
            textTransform: "uppercase",
            color: "var(--ink-1)",
            borderBottom: "1px solid var(--ink-1)",
            paddingBottom: 4,
          }}
        >
          {t("p.cta")}
        </a>
      </div>
    </article>
  );
};

const Plans = () => {
  const { t } = useLang();
  const { sm, md } = useBP();
  return (
    <div id="sessions-plans" style={{ padding: sm ? "32px var(--page-pad) 72px" : "56px var(--page-pad) 96px" }}>
      <div style={{
        display: "grid",
        gridTemplateColumns: sm ? "1fr" : md ? "1fr" : "repeat(3, 1fr)",
        gap: sm ? 36 : 28,
        alignItems: "stretch",
      }}>
        <PlanCard id="a" image={window.__resources.p18} />
        <PlanCard id="b" image={window.__resources.p14} popular />
        <PlanCard id="c" image={window.__resources.p08} />
      </div>
      <p style={{ fontFamily: "var(--font-serif)", fontSize: 14, lineHeight: 1.7, color: "var(--ink-3)", marginTop: 40, maxWidth: 720, fontStyle: "italic" }}>
        ※ {t("p.common.area")}
      </p>
    </div>
  );
};

/* ----------------------------------------------------------------
   Short Sessions — casual / kimono / family portraits
   Two compact cards + add-ons strip + editorial notes.
   ---------------------------------------------------------------- */
const ShortPlanCard = ({ id, image, accent }) => {
  const { t } = useLang();
  const { sm } = useBP();
  const rows = [
    `short.${id}.duration`,
    `short.${id}.outfit`,
    `short.${id}.location`,
    `short.${id}.transport`,
    `short.${id}.party`,
    `short.${id}.target`,
    `short.${id}.photos`,
  ];
  return (
    <article
      style={{
        background: "var(--paper)",
        border: "1px solid var(--hairline)",
        padding: sm ? "28px 24px 32px" : "32px 32px 36px",
        position: "relative",
        display: "flex",
        flexDirection: "column",
        gap: 18,
      }}
    >
      {accent && (
        <div
          style={{
            position: "absolute",
            top: -10,
            right: 28,
            background: "var(--vermilion)",
            color: "var(--paper-warm)",
            fontFamily: "var(--font-sans)",
            fontSize: 10,
            letterSpacing: "0.18em",
            textTransform: "uppercase",
            padding: "3px 8px",
            lineHeight: 1.3,
          }}
        >
          ● {t("short.b.extendable")}
        </div>
      )}
      <div style={{ display: "flex", alignItems: "baseline", justifyContent: "space-between", gap: 12 }}>
        <Kicker color="muted">{t(`short.${id}.kicker`)}</Kicker>
        <span
          style={{
            fontFamily: "var(--font-latin-sans)",
            fontSize: 10,
            letterSpacing: "0.22em",
            textTransform: "uppercase",
            color: "var(--foiga-bronze)",
          }}
        >
          {t("short.summer").replace(/^●\s*/, "")}
        </span>
      </div>
      <div>
        <h3
          style={{
            fontFamily: "var(--font-display)",
            fontSize: sm ? 32 : 40,
            lineHeight: 1,
            letterSpacing: "-0.01em",
            color: "var(--ink-1)",
            margin: "4px 0 8px",
          }}
        >
          {t(`short.${id}.name`)}
        </h3>
        <div style={{ display: "flex", alignItems: "baseline", gap: 12, flexWrap: "wrap" }}>
          <span style={{ fontFamily: "var(--font-display)", fontSize: 26, color: "var(--foiga-bronze)", letterSpacing: "0.01em" }}>
            {t(`short.${id}.price`)}
          </span>
          <span
            style={{
              fontFamily: "var(--font-latin-sans)",
              fontSize: 11,
              letterSpacing: "0.14em",
              textTransform: "uppercase",
              color: "var(--ink-3)",
              textDecoration: "line-through",
              textDecorationColor: "var(--ink-3)",
            }}
          >
            {t(`short.${id}.price.was`)}
          </span>
        </div>
      </div>
      {image && (
        <div
          style={{
            width: "100%",
            aspectRatio: "16 / 10",
            background: `url('${image}') center/cover no-repeat`,
            marginTop: 4,
          }}
        />
      )}
      <Hairline style={{ marginTop: 6 }} />
      <ul style={{ listStyle: "none", padding: 0, margin: 0, display: "flex", flexDirection: "column", gap: 12 }}>
        {rows.map((k) => (
          <li
            key={k}
            style={{
              fontFamily: "var(--font-serif)",
              fontSize: 14.5,
              lineHeight: 1.55,
              color: "var(--ink-2)",
              display: "flex",
              gap: 10,
            }}
          >
            <span style={{ color: "var(--foiga-bronze)", flexShrink: 0 }}>·</span>
            <span>{t(k)}</span>
          </li>
        ))}
      </ul>
      <div style={{ marginTop: "auto", paddingTop: 14 }}>
        <a
          href="#inquire"
          style={{
            fontFamily: "var(--font-sans)",
            fontSize: 11,
            letterSpacing: "0.18em",
            textTransform: "uppercase",
            color: "var(--ink-1)",
            borderBottom: "1px solid var(--ink-1)",
            paddingBottom: 4,
          }}
        >
          {t("p.cta")}
        </a>
      </div>
    </article>
  );
};

const ShortAddRow = ({ titleKey, priceKey, last }) => {
  const { t } = useLang();
  const { sm } = useBP();
  return (
    <div
      style={{
        display: "grid",
        gridTemplateColumns: sm ? "1fr auto" : "minmax(0,1fr) auto",
        gap: sm ? 12 : 32,
        alignItems: "baseline",
        padding: sm ? "16px 0" : "18px 0",
        borderBottom: last ? "1px solid var(--ink-1)" : "1px solid var(--hairline)",
      }}
    >
      <div style={{ fontFamily: "var(--font-display)", fontSize: sm ? 17 : 19, color: "var(--ink-1)", lineHeight: 1.3 }}>
        {t(titleKey)}
      </div>
      <div
        style={{
          fontFamily: "var(--font-sans)",
          fontSize: 13,
          letterSpacing: "0.04em",
          color: "var(--foiga-bronze)",
          textAlign: "right",
          whiteSpace: sm ? "normal" : "nowrap",
        }}
      >
        {t(priceKey)}
      </div>
    </div>
  );
};

const ShortSessions = () => {
  const { t } = useLang();
  const { sm, md, notLg } = useBP();
  const notes = [1, 2, 3, 4, 5, 6, 7];
  return (
    <div
      id="sessions-short"
      style={{
        background: "var(--paper-warm)",
        padding: sm ? "72px var(--page-pad)" : "112px var(--page-pad)",
        borderTop: "1px solid var(--hairline)",
        borderBottom: "1px solid var(--hairline)",
      }}
    >
      {/* heading */}
      <div style={{ display: "flex", alignItems: "baseline", gap: 16, marginBottom: 32, flexWrap: "wrap" }}>
        <Folio>{t("short.kicker")}</Folio>
        <div style={{ flex: 1 }} />
        <Folio>1 — 1.5 HRS</Folio>
        <Folio>GION · ASAKUSA</Folio>
      </div>

      <div
        style={{
          display: "grid",
          gridTemplateColumns: notLg ? "1fr" : "1.2fr 1fr",
          gap: notLg ? 32 : 80,
          alignItems: notLg ? "start" : "end",
          marginBottom: sm ? 48 : 72,
        }}
      >
        <div>
          <Kicker>— {t("short.kicker").replace(/^●\s*/, "")}</Kicker>
          <h2
            style={{
              fontFamily: "var(--font-display)",
              fontSize: "clamp(36px, 5.6vw, 76px)",
              lineHeight: 1,
              letterSpacing: "-0.015em",
              margin: "16px 0 0",
              color: "var(--ink-1)",
            }}
          >
            <span style={{ display: "block" }}>{t("short.title")}</span>
            <span style={{ display: "block" }}>{t("short.title.l2")}</span>
          </h2>
        </div>
        <p style={{ fontFamily: "var(--font-serif)", fontSize: 16, lineHeight: 1.85, color: "var(--ink-2)", margin: 0 }}>
          {t("short.intro")}
        </p>
      </div>

      {/* two plan cards */}
      <div
        style={{
          display: "grid",
          gridTemplateColumns: notLg ? "1fr" : "1fr 1fr",
          gap: sm ? 32 : 40,
          alignItems: "stretch",
        }}
      >
        <ShortPlanCard id="a" image={window.__resources.p13} />
        <ShortPlanCard id="b" image={window.__resources.p17} accent />
      </div>

      {/* add-ons + notes */}
      <div
        style={{
          marginTop: sm ? 56 : 96,
          display: "grid",
          gridTemplateColumns: notLg ? "1fr" : "1fr 1fr",
          gap: notLg ? 56 : 96,
        }}
      >
        <div>
          <Kicker>● {t("short.ad.title")}</Kicker>
          <p
            style={{
              fontFamily: "var(--font-serif)",
              fontStyle: "italic",
              fontSize: 13.5,
              lineHeight: 1.6,
              color: "var(--ink-3)",
              margin: "12px 0 22px",
              maxWidth: 460,
            }}
          >
            {t("short.ad.subtitle")}
          </p>
          <div style={{ borderTop: "1px solid var(--ink-1)" }}>
            <ShortAddRow titleKey="short.ad.time1"   priceKey="short.ad.time1.p" />
            <ShortAddRow titleKey="short.ad.time2"   priceKey="short.ad.time2.p" />
            <ShortAddRow titleKey="short.ad.party"   priceKey="short.ad.party.p" />
            <ShortAddRow titleKey="short.ad.retouch" priceKey="short.ad.retouch.p" last />
          </div>
        </div>

        <div>
          <Kicker>● {t("short.notes.title")}</Kicker>
          <ol
            style={{
              listStyle: "none",
              counterReset: "note",
              padding: 0,
              margin: "22px 0 0",
              display: "flex",
              flexDirection: "column",
              gap: 14,
            }}
          >
            {notes.map((n) => (
              <li
                key={n}
                style={{
                  counterIncrement: "note",
                  display: "grid",
                  gridTemplateColumns: "28px 1fr",
                  gap: 12,
                  fontFamily: "var(--font-serif)",
                  fontSize: 14,
                  lineHeight: 1.75,
                  color: "var(--ink-2)",
                  paddingBottom: 14,
                  borderBottom: n === notes.length ? "none" : "0.5px solid var(--hairline)",
                }}
              >
                <span
                  style={{
                    fontFamily: "var(--font-latin-sans)",
                    fontSize: 11,
                    letterSpacing: "0.18em",
                    color: "var(--foiga-bronze)",
                    paddingTop: 2,
                  }}
                >
                  {String(n).padStart(2, "0")}
                </span>
                <span>{t(`short.notes.${n}`)}</span>
              </li>
            ))}
          </ol>
        </div>
      </div>
    </div>
  );
};

/* ----------------------------------------------------------------
   Add-ons — three highlight cards + extended-location list
   ---------------------------------------------------------------- */
const AddonHighlight = ({ titleKey, priceKey }) => {
  const { t } = useLang();
  return (
    <div style={{ borderTop: "1px solid var(--ink-1)", paddingTop: 18, display: "flex", flexDirection: "column", gap: 10 }}>
      <div style={{ fontFamily: "var(--font-display)", fontSize: 22, lineHeight: 1.25, color: "var(--ink-1)" }}>
        {t(titleKey)}
      </div>
      <div style={{ fontFamily: "var(--font-display)", fontSize: 26, color: "var(--foiga-bronze)", letterSpacing: "0.01em" }}>
        {t(priceKey)}
      </div>
    </div>
  );
};

const Addons = () => {
  const { t } = useLang();
  const { sm, md, notLg } = useBP();
  const locCols = sm ? 1 : md ? 2 : 4;
  const locs = [
    ["addons.kamakura",  "addons.kamakura.p"],
    ["addons.nara",      "addons.nara.p"],
    ["addons.echigo",    "addons.echigo.p"],
    ["addons.karuizawa", "addons.karuizawa.p"],
    ["addons.fuji",      "addons.fuji.p"],
    ["addons.okinawa",   "addons.okinawa.p"],
    ["addons.hokkaido",  "addons.hokkaido.p"],
    ["addons.other",     "addons.other.p"],
  ];
  return (
    <div id="sessions-addons" style={{ background: "var(--paper-cream)", padding: sm ? "72px var(--page-pad)" : "112px var(--page-pad)" }}>
      <SectionHead
        kicker={t("addons.kicker").replace(/^●\s*/, "")}
        title={t("addons.title")}
        subtitle={t("addons.subtitle")}
      />
      <div style={{
        display: "grid",
        gridTemplateColumns: sm ? "1fr" : notLg ? "repeat(3, 1fr)" : "repeat(3, 1fr)",
        gap: sm ? 28 : 56,
        padding: "0 var(--page-pad)",
      }}>
        <AddonHighlight titleKey="addons.night"  priceKey="addons.night.price" />
        <AddonHighlight titleKey="addons.album"  priceKey="addons.album.price" />
        <AddonHighlight titleKey="addons.film"   priceKey="addons.film.price" />
      </div>
      <div style={{ padding: "0 var(--page-pad)", marginTop: sm ? 56 : 96 }}>
        <Kicker>● {t("addons.loc.title")}</Kicker>
        <div
          style={{
            marginTop: 24,
            borderTop: "1px solid var(--ink-1)",
            display: "grid",
            gridTemplateColumns: `repeat(${locCols}, 1fr)`,
            gap: 0,
          }}
        >
          {locs.map(([nameK, priceK], i) => {
            const inLastRow = i >= locs.length - locCols;
            const col = i % locCols;
            return (
              <div
                key={nameK}
                style={{
                  padding: "20px 22px 20px 0",
                  borderBottom: inLastRow ? "1px solid var(--ink-1)" : "1px solid var(--hairline)",
                  borderRight: col < locCols - 1 ? "1px solid var(--hairline)" : "none",
                  display: "flex",
                  flexDirection: "column",
                  gap: 6,
                  paddingLeft: col === 0 ? 0 : 22,
                }}
              >
                <div style={{ fontFamily: "var(--font-display)", fontSize: 22, color: "var(--ink-1)" }}>
                  {t(nameK)}
                </div>
                <div style={{ fontFamily: "var(--font-sans)", fontSize: 13, letterSpacing: "0.04em", color: "var(--foiga-bronze)" }}>
                  {t(priceK)}
                </div>
              </div>
            );
          })}
        </div>
      </div>
    </div>
  );
};

/* ----------------------------------------------------------------
   Details — accordion of the 8 numbered explanations
   ---------------------------------------------------------------- */
const DetailRow = ({ n, titleKey, bodyKey, open, onToggle }) => {
  const { t } = useLang();
  const { sm } = useBP();
  return (
    <div style={{ borderTop: "1px solid var(--hairline)" }}>
      <button
        onClick={onToggle}
        style={{
          width: "100%", textAlign: "left", display: "flex", alignItems: "baseline", gap: sm ? 16 : 32,
          padding: "26px 0", background: "transparent", border: 0, cursor: "pointer",
          color: "var(--ink-1)",
        }}
      >
        <span style={{ fontFamily: "var(--font-latin-sans)", fontSize: 11, letterSpacing: "0.22em", color: "var(--ink-3)", minWidth: 28 }}>
          {String(n).padStart(2, "0")}
        </span>
        <span style={{ flex: 1, fontFamily: "var(--font-display)", fontSize: sm ? 22 : 28, lineHeight: 1.2, letterSpacing: "-0.005em" }}>
          {t(titleKey).replace(/^\d+\s·\s/, "")}
        </span>
        <span style={{ fontFamily: "var(--font-display)", fontSize: sm ? 22 : 28, color: "var(--foiga-bronze)", transition: "transform 200ms ease", transform: open ? "rotate(45deg)" : "none", lineHeight: 1 }}>
          ＋
        </span>
      </button>
      <div
        style={{
          display: "grid",
          gridTemplateRows: open ? "1fr" : "0fr",
          transition: "grid-template-rows 280ms cubic-bezier(.2,.6,.2,1)",
          overflow: "hidden",
        }}
      >
        <div style={{ minHeight: 0 }}>
          <div style={{ paddingLeft: sm ? 44 : 60, paddingRight: sm ? 0 : 60, paddingBottom: 28, maxWidth: 820 }}>
            <p style={{ fontFamily: "var(--font-serif)", fontSize: sm ? 15 : 16, lineHeight: 1.95, color: "var(--ink-2)", margin: 0 }}>
              {t(bodyKey)}
            </p>
          </div>
        </div>
      </div>
    </div>
  );
};

const Details = () => {
  const { t } = useLang();
  const { sm } = useBP();
  const [open, setOpen] = useS(0); // first one open by default
  const rows = [1, 2, 3, 4, 5, 6, 7, 8];
  return (
    <div id="sessions-details" style={{ padding: sm ? "72px var(--page-pad)" : "112px var(--page-pad)", background: "var(--paper)" }}>
      <SectionHead
        kicker={t("det.kicker").replace(/^●\s*/, "")}
        title={t("det.title")}
        subtitle={t("det.title.l2")}
        num="01 — 08"
      />
      <div style={{ padding: sm ? "0" : "0 var(--page-pad)", borderBottom: "1px solid var(--ink-1)" }}>
        {rows.map((n) => (
          <DetailRow
            key={n}
            n={n}
            titleKey={`det.${n}.title`}
            bodyKey={`det.${n}.body`}
            open={open === n - 1}
            onToggle={() => setOpen(open === n - 1 ? -1 : n - 1)}
          />
        ))}
      </div>
    </div>
  );
};

/* ----------------------------------------------------------------
   Album & Film — two-up offer with hanko accent
   ---------------------------------------------------------------- */
const Album = () => {
  const { t } = useLang();
  const { sm, notLg } = useBP();
  return (
    <div id="sessions-album" style={{ background: "var(--paper-cream)", padding: sm ? "72px var(--page-pad)" : "112px var(--page-pad)" }}>
      <SectionHead
        kicker={t("af.kicker").replace(/^●\s*/, "")}
        title={t("af.section.title")}
        subtitle={t("af.section.subtitle")}
      />
      <div style={{
        display: "grid",
        gridTemplateColumns: notLg ? "1fr" : "1fr 1fr",
        gap: notLg ? 48 : 56,
        padding: "0 var(--page-pad)",
      }}>
        <article style={{ display: "flex", flexDirection: "column", gap: 18 }}>
          <div style={{ aspectRatio: "1 / 1", background: `url(${window.__resources.p16}) center/cover no-repeat`, boxShadow: "var(--shadow-print)" }} />
          <div>
            <Kicker>● 01 · Album</Kicker>
            <h3 style={{ fontFamily: "var(--font-display)", fontSize: "clamp(28px, 4.4vw, 36px)", letterSpacing: "-0.01em", color: "var(--ink-1)", margin: "10px 0 6px", lineHeight: 1.1 }}>
              {t("af.album.title")}
            </h3>
            <div style={{ fontFamily: "var(--font-display)", fontSize: 22, color: "var(--foiga-bronze)" }}>
              {t("af.album.price")}
            </div>
            <Hairline ink width={48} style={{ margin: "20px 0" }} />
            <p style={{ fontFamily: "var(--font-serif)", fontSize: 15, lineHeight: 1.85, color: "var(--ink-2)", margin: 0, maxWidth: 460 }}>
              {t("af.album.body")}
            </p>
          </div>
        </article>
        <article style={{ display: "flex", flexDirection: "column", gap: 18 }}>
          <div style={{ aspectRatio: "1 / 1", background: `url(${window.__resources.p10}) center/cover no-repeat`, boxShadow: "var(--shadow-print)" }} />
          <div>
            <Kicker>● 02 · Film</Kicker>
            <h3 style={{ fontFamily: "var(--font-display)", fontSize: "clamp(28px, 4.4vw, 36px)", letterSpacing: "-0.01em", color: "var(--ink-1)", margin: "10px 0 6px", lineHeight: 1.1 }}>
              {t("af.film.title")}
            </h3>
            <div style={{ fontFamily: "var(--font-display)", fontSize: 22, color: "var(--foiga-bronze)" }}>
              {t("af.film.price")}
            </div>
            <Hairline ink width={48} style={{ margin: "20px 0" }} />
            <p style={{ fontFamily: "var(--font-serif)", fontSize: 15, lineHeight: 1.85, color: "var(--ink-2)", margin: 0, maxWidth: 460 }}>
              {t("af.film.body")}
            </p>
          </div>
        </article>
      </div>
      <div style={{ padding: "48px var(--page-pad) 0", display: "flex", alignItems: "center", gap: 20, flexWrap: "wrap" }}>
        <div
          style={{
            width: 64, height: 64, background: "var(--vermilion)", color: "var(--paper-warm)",
            fontFamily: "var(--font-display)", fontSize: 38, lineHeight: 1,
            display: "flex", alignItems: "center", justifyContent: "center", transform: "rotate(-4deg)",
          }}
        >
          寫
        </div>
        <a
          href="#inquire"
          style={{
            fontFamily: "var(--font-sans)", fontSize: 12, letterSpacing: "0.18em",
            textTransform: "uppercase", color: "var(--ink-1)",
            borderBottom: "1px solid var(--ink-1)", paddingBottom: 4,
          }}
        >
          {t("af.cta")}
        </a>
      </div>
    </div>
  );
};

/* ----------------------------------------------------------------
   Top-level export
   ---------------------------------------------------------------- */
const SessionsSection = () => (
  <section style={{ background: "var(--paper)" }}>
    <SessionsHero />
    <Plans />
    <ShortSessions />
    <Addons />
    <Details />
    <Album />
  </section>
);

Object.assign(window, { SessionsSection, SessionsHero, Plans, ShortSessions, Addons, Details, Album, PlanCard });
