{"id":2258,"date":"2025-07-23T11:17:31","date_gmt":"2025-07-23T02:17:31","guid":{"rendered":"https:\/\/plumlady.co.jp\/apps\/note\/?page_id=2258"},"modified":"2026-03-30T17:13:10","modified_gmt":"2026-03-30T08:13:10","slug":"recipe","status":"publish","type":"page","link":"https:\/\/plumlady.co.jp\/apps\/note\/recipe\/","title":{"rendered":"\u30ec\u30b7\u30d4\u96c6"},"content":{"rendered":"<div class=\"rtop\" id=\"rtop\">\r\n  <!-- ===== HERO \/ SEARCH ===== -->\r\n  <section class=\"rtop__hero\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"heroMain\" aria-label=\"\u30e1\u30a4\u30f3\u753b\u50cf\">\r\n        <picture>\r\n          <source media=\"(min-width: 900px)\" srcset=\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u98df\u3079\u65b9\u307e\u3067\u3001\u3061\u3083\u3093\u3068\u5c4a\u304f\u3002PC.png\" \/>\r\n          <img\r\n            src=\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u98df\u3079\u65b9\u307e\u3067\u3001\u3061\u3083\u3093\u3068\u5c4a\u304f\u3002PC.png\"\r\n            alt=\"\u98df\u3079\u65b9\u307e\u3067\u3061\u3083\u3093\u3068\u5c4a\u304f\"\r\n            loading=\"eager\"\r\n            fetchpriority=\"high\"\r\n            decoding=\"async\"\r\n          \/>\r\n        <\/picture>\r\n      <\/div>\r\n\r\n      <div class=\"heroSearch\" aria-label=\"\u30ec\u30b7\u30d4\u691c\u7d22\uff08\u4e0a\u90e8\uff09\">\r\n        <label class=\"heroSearch__label\" for=\"q\">\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22<\/label>\r\n\r\n        <div class=\"heroSearch__row\">\r\n          <input\r\n            id=\"q\"\r\n            class=\"heroSearch__input\"\r\n            type=\"search\"\r\n            placeholder=\"\u6750\u6599\u3084\u98df\u6750\u3067\u63a2\u3059\"\r\n            autocomplete=\"off\"\r\n            aria-label=\"\u30ec\u30b7\u30d4\u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u3067\u691c\u7d22\"\r\n          \/>\r\n\r\n          <div class=\"heroSearch__actions\">\r\n            <button class=\"btn btn--primary\" id=\"qBtn\" type=\"button\" aria-label=\"\u691c\u7d22\">\u691c\u7d22<\/button>\r\n            <button class=\"btn btn--ghost heroReset\" id=\"resetCondTop\" type=\"button\" aria-label=\"\u6761\u4ef6\u3092\u30ea\u30bb\u30c3\u30c8\">\u6761\u4ef6\u30ea\u30bb\u30c3\u30c8<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"heroPopular\" aria-label=\"\u3044\u307e\u4eba\u6c17\u306e\u98df\u6750\uff0f\u30ad\u30fc\u30ef\u30fc\u30c9\">\r\n          <div class=\"heroPopular__title\" role=\"heading\" aria-level=\"2\">\u3044\u307e\u4eba\u6c17\u306e\u98df\u6750\uff0f\u30ad\u30fc\u30ef\u30fc\u30c9<\/div>\r\n          <div class=\"chips chips--hero\" id=\"chipsTop\" aria-label=\"\u4eba\u6c17\u30ad\u30fc\u30ef\u30fc\u30c9\uff08\u4e0a\u90e8\uff09\"><!-- chips injected --><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"heroSearch__result\" id=\"heroResult\" aria-live=\"polite\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== NEW RECIPES (horizontal) ===== -->\r\n  <section class=\"sec\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"secHead\">\r\n        <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u65b0\u7740\u30ec\u30b7\u30d4<\/div>\r\n      <\/div>\r\n      <div class=\"rail\" id=\"newRail\" aria-label=\"\u65b0\u7740\u30ec\u30b7\u30d4\uff08\u6a2a\u30b9\u30af\u30ed\u30fc\u30eb\uff09\"><!-- cards injected --><\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== RECOMMENDED (slider) ===== -->\r\n  <section class=\"sec sec--recommend\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"secHead\">\r\n        <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u304a\u3059\u3059\u3081<\/div>\r\n      <\/div>\r\n      <div class=\"slider\" aria-label=\"\u304a\u3059\u3059\u3081\u30b9\u30e9\u30a4\u30c0\u30fc\">\r\n        <button class=\"slider__nav slider__nav--prev\" type=\"button\" id=\"slPrev\" aria-label=\"\u524d\u3078\">\u2039<\/button>\r\n        <div class=\"slider__viewport\" id=\"slViewport\">\r\n          <div class=\"slider__track\" id=\"slTrack\"><!-- slides injected --><\/div>\r\n        <\/div>\r\n        <button class=\"slider__nav slider__nav--next\" type=\"button\" id=\"slNext\" aria-label=\"\u6b21\u3078\">\u203a<\/button>\r\n      <\/div>\r\n      <div class=\"dots\" id=\"slDots\" aria-label=\"\u30b9\u30e9\u30a4\u30c0\u30fc\u306e\u4f4d\u7f6e\"><!-- dots injected --><\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== PRODUCTS (icons) ===== -->\r\n  <section class=\"sec\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"secHead\">\r\n        <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u5546\u54c1\u304b\u3089\u30ec\u30b7\u30d4\u3092\u9078\u3076<\/div>\r\n      <\/div>\r\n      <div class=\"products\" id=\"products\" aria-label=\"\u5546\u54c1\u4e00\u89a7\uff087\u7a2e\uff09\"><!-- product icons injected --><\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== FEATURED (two blocks) ===== -->\r\n  <section class=\"sec\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"two\">\r\n        <div class=\"panel\">\r\n          <div class=\"secHead secHead--tight\">\r\n            <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u4eba\u6c17\u306e\u5b9a\u756a\u30ec\u30b7\u30d4<\/div>\r\n          <\/div>\r\n          <div id=\"classicSlot\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"panel\">\r\n          <div class=\"secHead secHead--tight\">\r\n            <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u65ec\u306e\u30ec\u30b7\u30d4<\/div>\r\n          <\/div>\r\n          <div id=\"seasonSlot\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== MAIN LIST ===== -->\r\n  <section class=\"sec sec--last\" id=\"listSec\">\r\n    <div class=\"rtop__wrap\">\r\n      <div class=\"secHead secHead--row\">\r\n        <div class=\"secHead__title\" role=\"heading\" aria-level=\"2\">\u30ec\u30b7\u30d4\u4e00\u89a7<\/div>\r\n        <div class=\"meta\" id=\"meta\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"listSearch\" aria-label=\"\u4e00\u89a7\u5185\u691c\u7d22\">\r\n<div class=\"listSearch__row\">\r\n  <input\r\n    id=\"q2\"\r\n    class=\"listSearch__input\"\r\n    type=\"search\"\r\n    placeholder=\"\u98df\u6750\u30fb\u6750\u6599\u3067\u63a2\u3059\"\r\n    autocomplete=\"off\"\r\n    aria-label=\"\u4e00\u89a7\u5185\u3067\u30ec\u30b7\u30d4\u3092\u691c\u7d22\"\r\n  \/>\r\n\r\n  <div class=\"listSearch__actions\" aria-label=\"\u4e00\u89a7\u5185\u691c\u7d22\u30a2\u30af\u30b7\u30e7\u30f3\">\r\n    <button class=\"btn btn--primary listSearch__btn\" id=\"qBtn2\" type=\"button\" aria-label=\"\u4e00\u89a7\u5185\u691c\u7d22\">\u691c\u7d22<\/button>\r\n    <button class=\"btn btn--ghost\" id=\"clear\" type=\"button\">\u6761\u4ef6\u30ea\u30bb\u30c3\u30c8<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n\r\n        <div class=\"suggest\" id=\"suggest\" aria-label=\"\u691c\u7d22\u5019\u88dc\" hidden=\"\">\r\n          <div class=\"suggest__label\">\u5019\u88dc<\/div>\r\n          <div class=\"suggest__list\" id=\"suggestList\"><!-- suggestion chips injected --><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"listControls\" aria-label=\"\u4e26\u3073\u66ff\u3048\u3068\u8868\u793a\u4ef6\u6570\">\r\n        <div class=\"select\">\r\n          <label class=\"select__label\" for=\"sort\">\u4e26\u3073\u66ff\u3048<\/label>\r\n          <select id=\"sort\" class=\"select__field\" aria-label=\"\u4e26\u3073\u66ff\u3048\">\r\n            <option value=\"new\">\u65b0\u7740\u9806<\/option>\r\n            <option value=\"popular\">\u4eba\u6c17\u9806<\/option>\r\n            <option value=\"timeAsc\">\u8abf\u7406\u6642\u9593\u304c\u77ed\u3044\u9806<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div class=\"select\">\r\n          <label class=\"select__label\" for=\"per\">\u8868\u793a\u4ef6\u6570<\/label>\r\n          <select id=\"per\" class=\"select__field\" aria-label=\"\u8868\u793a\u4ef6\u6570\">\r\n            <option value=\"12\">12<\/option>\r\n            <option value=\"24\">24<\/option>\r\n            <option value=\"48\">48<\/option>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"listGrid\" id=\"grid\" aria-live=\"polite\"><\/div>\r\n\r\n      <div class=\"empty\" id=\"empty\" hidden=\"\">\r\n        <div class=\"empty__box\">\r\n          <div class=\"empty__title\">\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f<\/div>\r\n          <div class=\"empty__text\">\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5909\u3048\u308b\u304b\u3001\u6761\u4ef6\u3092\u6e1b\u3089\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <nav class=\"pager\" aria-label=\"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\">\r\n        <button class=\"btn btn--ghost\" id=\"prev\" type=\"button\">\u524d\u3078<\/button>\r\n        <div class=\"pager__info\" id=\"pageInfo\"><\/div>\r\n        <button class=\"btn btn--ghost\" id=\"next\" type=\"button\">\u6b21\u3078<\/button>\r\n      <\/nav>\r\n    <\/div>\r\n  <\/section>\r\n<\/div>\r\n\r\n<style>\r\n\/* =========================================================\r\n   RTop CSS \u2014 \u5b8c\u6210\u7248\uff08\u7701\u7565\u306a\u3057\uff09\r\n   - \u898b\u5207\u308c\u5bfe\u7b56\uff08safe-area \/ overflow\uff09\r\n   - \u80cc\u666f\u30d9\u30fc\u30b9\u767d\r\n   - \u4e0a\u90e8\u691c\u7d22\uff1a\u30b9\u30de\u30db\u306f input 100% + \u30dc\u30bf\u30f3\u306f\u4e0b\u306b2\u5217\r\n   - \u4e00\u89a7\u5185\u691c\u7d22\uff1a\u30b9\u30de\u30db\u306f\u7e26\u7a4d\u307f\r\n   - \u30ec\u30b7\u30d4\u4e00\u89a7\uff1a\u30b9\u30de\u30db2\u30ab\u30e9\u30e0\u306e\u307e\u307e\u5927\u304d\u304f\r\n   - \u6587\u5b57\u8a70\u307e\u308a\u6539\u5584\uff08letter-spacing\/line-height\u3092\u8abf\u6574\uff09\r\n   - \u30b9\u30de\u30db\u306e\u30e1\u30a4\u30f3\u753b\u50cf\uff1a\u89d2\u4e38\u306a\u3057\uff06\u5c11\u3057\u5927\u304d\u3081\uff08\u30d5\u30eb\u30d6\u30ea\u30fc\u30c9\u6c17\u5473\uff09\r\n   - \u304a\u3059\u3059\u3081\uff1a\u975e\u8868\u793a\r\n========================================================= *\/\r\n\r\n\/* ===== Scope ===== *\/\r\n#rtop.rtop{\r\n  --bg:#fff;\r\n  --fg:#0b0f19;\r\n  --muted:#4b5563;\r\n  --line:#e5e7eb;\r\n  --soft:#f6f7f9;\r\n  --radius:18px;\r\n  --shadow:0 14px 36px rgba(0,0,0,.06);\r\n  --primary:#111;\r\n  --primaryFg:#fff;\r\n  --accent:#f59e0b;\r\n\r\n  --fs-base: 16px;\r\n  --lh-base: 1.8;     \/* \u2605\u5c11\u3057\u3086\u3068\u308a *\/\r\n  --ls-base: .02em;   \/* \u2605\u8a70\u307e\u308a\u89e3\u6d88\uff08\u5168\u4f53\uff09 *\/\r\n\r\n  --fs-h1: clamp(1.85rem, 1.35rem + 1.5vw, 2.35rem);\r\n  --fs-h2: clamp(1.35rem, 1.12rem + .85vw, 1.65rem);\r\n  --fs-h3: clamp(1.12rem, 1.0rem + .35vw, 1.25rem);\r\n\r\n  --head-underline-h: 10px;\r\n  --head-underline-y: 78%;\r\n  --head-underline-radius: 999px;\r\n\r\n  font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Hiragino Kaku Gothic ProN\", \"Noto Sans JP\", \"Yu Gothic\", sans-serif;\r\n  color:var(--fg);\r\n  font-size: var(--fs-base);\r\n  line-height: var(--lh-base);\r\n  letter-spacing: var(--ls-base);\r\n  text-rendering: optimizeLegibility;\r\n  -webkit-font-smoothing: antialiased;\r\n  -moz-osx-font-smoothing: grayscale;\r\n\r\n  width: 100%;\r\n  margin: 0;\r\n  background: #fff;\r\n  overflow-x: hidden;\r\n}\r\n\r\n\/* \u306f\u307f\u51fa\u3057\u539f\u56e0\u306b\u306a\u308a\u3084\u3059\u3044\u8981\u7d20\u306e\u57fa\u672c\u5bfe\u7b56 *\/\r\n#rtop *,\r\n#rtop *::before,\r\n#rtop *::after{ box-sizing:border-box; }\r\n\r\n#rtop img,\r\n#rtop svg{ max-width:100%; height:auto; }\r\n\r\n#rtop a{ color:inherit; text-decoration:none; }\r\n#rtop a:hover{ text-decoration:underline; text-underline-offset:3px; }\r\n\r\n\/* wrap\uff1a\u7aef\u304c\u5207\u308c\u306a\u3044\uff08safe-area\u5bfe\u5fdc\uff09 *\/\r\n#rtop .rtop__wrap{\r\n  max-width:1100px;\r\n  margin:0 auto;\r\n  padding-left: max(14px, env(safe-area-inset-left));\r\n  padding-right: max(14px, env(safe-area-inset-right));\r\n}\r\n\r\n\/* Buttons *\/\r\n#rtop .btn{\r\n  border:1px solid var(--line);\r\n  background:var(--bg);\r\n  color:var(--fg);\r\n  border-radius:999px;\r\n  padding:.68rem 1.05rem;\r\n  cursor:pointer;\r\n  font-weight:900;\r\n  font-size: 1rem;\r\n  transition:.15s ease;\r\n  max-width: 100%;\r\n  letter-spacing: .02em;\r\n}\r\n#rtop .btn:hover{ transform:translateY(-1px); }\r\n#rtop .btn:disabled{ opacity:.5; cursor:not-allowed; transform:none; }\r\n#rtop .btn--primary{ background:var(--primary); color:var(--primaryFg); border-color:var(--primary); }\r\n#rtop .btn--ghost{ background:transparent; }\r\n\r\n\/* Sections *\/\r\n#rtop .sec{ padding:22px 0; }\r\n#rtop .sec--last{ padding-bottom:34px; scroll-margin-top: 14px; }\r\n\r\n\/* Heads *\/\r\n#rtop .secHead{\r\n  display:flex;\r\n  align-items:flex-end;\r\n  justify-content:space-between;\r\n  gap:12px;\r\n  margin-bottom:12px;\r\n}\r\n#rtop .secHead--row{ flex-wrap:wrap; }\r\n#rtop .secHead--tight{ margin-bottom:10px; }\r\n\r\n#rtop .secHead__title{\r\n  margin:0;\r\n  font-size: var(--fs-h2);\r\n  letter-spacing:.04em; \/* \u2605\u898b\u51fa\u3057\u306f\u5c11\u3057\u5e83\u3081 *\/\r\n  font-weight: 1000;\r\n  line-height: 1.25;\r\n  display: inline-block;\r\n  position: relative;\r\n  padding: .08em .1em .12em;\r\n}\r\n#rtop .secHead__title::after{\r\n  content:\"\";\r\n  position:absolute;\r\n  left: .02em;\r\n  right: .02em;\r\n  top: var(--head-underline-y);\r\n  height: var(--head-underline-h);\r\n  border-radius: var(--head-underline-radius);\r\n  background: rgba(245,158,11,.28);\r\n  z-index: -1;\r\n}\r\n\r\n\/* Hero *\/\r\n#rtop .rtop__hero{\r\n  padding: 14px 0 10px;\r\n  border-bottom: 1px solid var(--line);\r\n  background: #fff;\r\n}\r\n\r\n\/* \u30e1\u30a4\u30f3\u753b\u50cf\uff08\u57fa\u672c\uff1a\u89d2\u4e38\uff09 *\/\r\n#rtop .heroMain{\r\n  margin: 6px 0 14px;\r\n  border-radius: calc(var(--radius) + 2px);\r\n  overflow: hidden;\r\n  border: 1px solid var(--line);\r\n  box-shadow: var(--shadow);\r\n  background: #f3f4f6;\r\n}\r\n#rtop .heroMain picture,\r\n#rtop .heroMain img{\r\n  width: 100%;\r\n  display:block;\r\n}\r\n\r\n@media (min-width: 900px){\r\n  #rtop .heroMain{\r\n    margin: 8px 0 12px;\r\n    border-radius: calc(var(--radius) + 4px);\r\n    padding: 0;\r\n    background: #f3f4f6;\r\n  }\r\n  #rtop .heroMain img{\r\n    width: 100%;\r\n    height: auto;\r\n    max-height: 420px;\r\n    object-fit: contain;\r\n    background: transparent;\r\n    display: block;\r\n  }\r\n}\r\n\r\n\/* Search (top) *\/\r\n#rtop .heroSearch{\r\n  margin-top: 0;\r\n  padding: 0;\r\n  background: transparent;\r\n  border: none;\r\n  box-shadow: none;\r\n}\r\n#rtop .heroSearch__label{ display:none; }\r\n\r\n\/* actions\uff1aPC\u3067\u306f\u30ec\u30a4\u30a2\u30a6\u30c8\u306b\u5f71\u97ff\u3055\u305b\u306a\u3044\uff08absolute\u30dc\u30bf\u30f3\u4ed5\u69d8\u3092\u7dad\u6301\uff09 *\/\r\n#rtop .heroSearch__actions{ display: contents; }\r\n\r\n\/* PC\/\u30bf\u30d6\u30ec\u30c3\u30c8\uff1a\u5165\u529b\u306b\u30dc\u30bf\u30f3\u3092\u91cd\u306d\u308b *\/\r\n#rtop .heroSearch__row{\r\n  position: relative;\r\n  display: block;\r\n}\r\n#rtop .heroSearch__input{\r\n  width: 100%;\r\n  height: 54px;\r\n  padding: 0 188px 0 16px;\r\n  border-radius: 12px;\r\n  border: 2px solid #111;\r\n  background: #fff;\r\n  outline: none;\r\n  font-size: 1.05rem;\r\n  font-weight: 900;\r\n  letter-spacing: .02em;\r\n}\r\n#rtop .heroSearch__input::placeholder{ color:#6b7280; font-weight:900; }\r\n#rtop .heroSearch__input:focus{ border-color:#111; box-shadow: 0 0 0 4px rgba(17,17,17,.07); }\r\n\r\n#rtop #qBtn.btn{\r\n  position: absolute;\r\n  top: 50%;\r\n  right: 10px;\r\n  transform: translateY(-50%);\r\n  height: 40px;\r\n  min-width: 68px;\r\n  padding: 0 .95rem;\r\n  font-size: 1rem;\r\n}\r\n#rtop .heroReset{\r\n  position:absolute;\r\n  top:50%;\r\n  right: 88px;\r\n  transform: translateY(-50%);\r\n  height: 40px;\r\n  min-width: 108px;\r\n  padding: 0 .95rem;\r\n  font-size: .95rem;\r\n  border-radius: 999px;\r\n  background: rgba(255,255,255,.92);\r\n  backdrop-filter: blur(2px);\r\n}\r\n#rtop .heroReset:hover{ transform: translateY(calc(-50% - 1px)); }\r\n\r\n\/* Hero Popular *\/\r\n#rtop .heroPopular{ margin-top: 14px; }\r\n#rtop .heroPopular__title{\r\n  font-weight: 1000;\r\n  font-size: var(--fs-h3);\r\n  letter-spacing: .04em; \/* \u2605\u5c11\u3057\u5e83\u3081 *\/\r\n  margin-bottom: 10px;\r\n  line-height: 1.25;\r\n  display:inline-block;\r\n  position:relative;\r\n  padding: .06em .08em .1em;\r\n}\r\n#rtop .heroPopular__title::after{\r\n  content:\"\";\r\n  position:absolute;\r\n  left:.02em;\r\n  right:.02em;\r\n  top: 80%;\r\n  height: 8px;\r\n  border-radius: 999px;\r\n  background: rgba(245,158,11,.22);\r\n  z-index:-1;\r\n}\r\n\r\n\/* Chips *\/\r\n#rtop .chips{ display:flex; flex-wrap:wrap; gap:10px; }\r\n#rtop .chip{\r\n  border:1px solid var(--line);\r\n  background:#fff;\r\n  border-radius:999px;\r\n  padding:.58rem 1rem;\r\n  font-weight:900;\r\n  cursor:pointer;\r\n  transition:.15s ease;\r\n  font-size: 1rem;\r\n  max-width: 100%;\r\n  letter-spacing: .02em;\r\n}\r\n#rtop .chip:hover{ transform:translateY(-1px); }\r\n#rtop .chip[aria-pressed=\"true\"]{ border-color:#111; box-shadow:0 10px 24px rgba(0,0,0,.08); }\r\n\r\n\/* New rail *\/\r\n#rtop .rail{\r\n  display:grid;\r\n  grid-auto-flow:column;\r\n  grid-auto-columns:minmax(230px, 1fr);\r\n  gap:12px;\r\n  overflow:auto;\r\n  padding:6px 4px 10px;\r\n  scroll-snap-type:x mandatory;\r\n}\r\n#rtop .rail::-webkit-scrollbar{ height:10px; }\r\n#rtop .rail::-webkit-scrollbar-thumb{ background:#ddd; border-radius:999px; }\r\n#rtop .rail > *{ scroll-snap-align:start; }\r\n\r\n\/* Cards *\/\r\n#rtop .card{\r\n  border:1px solid var(--line);\r\n  border-radius:var(--radius);\r\n  overflow:hidden;\r\n  background:#fff;\r\n  box-shadow:var(--shadow);\r\n  display:flex;\r\n  flex-direction:column;\r\n  min-height:100%;\r\n}\r\n#rtop .thumb{ position:relative; aspect-ratio:4\/3; background:#f3f4f6; overflow:hidden; }\r\n#rtop .thumb img{ width:100%; height:100%; object-fit:cover; display:block; }\r\n\r\n\/* \u2605\u65b0\u7740\u30ec\u30b7\u30d4\u306e\u30bf\u30a4\u30c8\u30eb\uff1a\u5927\u304d\u304f\uff06\u8a70\u307e\u308a\u89e3\u6d88 *\/\r\n#rtop .title{\r\n  margin:10px 12px 0;\r\n  font-weight:1000;\r\n  line-height:1.55;          \/* \u2605\u3086\u3068\u308a *\/\r\n  font-size: clamp(1.35rem, 1.05rem + .7vw, 1.7rem); \/* \u2605\u5927\u304d\u3081 *\/\r\n  letter-spacing: .04em;     \/* \u2605\u8a70\u307e\u308a\u89e3\u6d88 *\/\r\n}\r\n\r\n\/* Stats *\/\r\n#rtop .stats{\r\n  margin-top: 10px;\r\n  padding: 10px 12px 12px;\r\n  display:flex;\r\n  gap:10px;\r\n  flex-wrap:wrap;\r\n}\r\n#rtop .pill{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap:8px;\r\n  border:1px solid var(--line);\r\n  background:#fff;\r\n  border-radius:999px;\r\n  padding:.46rem .72rem;\r\n  font-weight:1000;\r\n  color:#111;\r\n  font-size:1rem;\r\n  letter-spacing: .02em;\r\n}\r\n#rtop .ico{ opacity:.95; }\r\n\r\n\/* Slider *\/\r\n#rtop .slider{ position:relative; }\r\n#rtop .slider__viewport{\r\n  overflow:hidden;\r\n  border-radius:var(--radius);\r\n  border:1px solid var(--line);\r\n  box-shadow:var(--shadow);\r\n  background:#fff;\r\n}\r\n#rtop .slider__track{ display:flex; transition: transform .35s ease; }\r\n#rtop .slide{ min-width:100%; position:relative; aspect-ratio:16\/6; background:#f3f4f6; }\r\n#rtop .slide img{ width:100%; height:100%; object-fit:cover; display:block; }\r\n#rtop .slider__nav{\r\n  z-index: 5;\r\n  position:absolute; top:50%; transform:translateY(-50%);\r\n  width:42px; height:42px; border-radius:999px; border:1px solid var(--line);\r\n  background:rgba(255,255,255,.98); box-shadow:var(--shadow);\r\n  cursor:pointer; font-size:24px; font-weight:900;\r\n}\r\n#rtop .slider__nav--prev{ left:-20px; }\r\n#rtop .slider__nav--next{ right:-20px; }\r\n#rtop .dots{ display:flex; justify-content:center; gap:8px; margin-top:10px; }\r\n#rtop .dot{ width:10px; height:10px; border-radius:999px; border:1px solid var(--line); background:#fff; cursor:pointer; }\r\n#rtop .dot[aria-pressed=\"true\"]{ background:var(--accent); border-color:var(--accent); }\r\n\r\n\/* Products *\/\r\n#rtop .products{\r\n  display:grid;\r\n  grid-template-columns:repeat(2, minmax(0, 1fr));\r\n  gap:10px;\r\n}\r\n#rtop .product{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:12px;\r\n  padding:12px;\r\n  border-radius:16px;\r\n  border:1px solid var(--line);\r\n  background:#fff;\r\n  box-shadow:var(--shadow);\r\n  cursor:pointer;\r\n  transition:.15s ease;\r\n  text-align:left;\r\n  max-width: 100%;\r\n}\r\n#rtop .product:hover{ transform:translateY(-1px); }\r\n#rtop .product[aria-pressed=\"true\"]{ border-color:#111; }\r\n#rtop .productIco{\r\n  width:46px;\r\n  height:46px;\r\n  border-radius:999px;\r\n  background:var(--soft);\r\n  border:1px dashed var(--line);\r\n  flex:0 0 auto;\r\n  display:grid;\r\n  place-items:center;\r\n  overflow:hidden;\r\n}\r\n#rtop .productIco::before{\r\n  content:\"\";\r\n  width:22px; height:22px;\r\n  border-radius:6px;\r\n  background:rgba(0,0,0,.06);\r\n  display:block;\r\n}\r\n#rtop .productName{\r\n  font-weight:1000;\r\n  line-height:1.3;\r\n  font-size: 1.05rem;\r\n  max-width: 100%;\r\n  letter-spacing: .03em;\r\n}\r\n\r\n\/* Featured panels *\/\r\n#rtop .two{ display:grid; gap:14px; grid-template-columns:1fr; }\r\n#rtop .panel{\r\n  border:1px solid var(--line);\r\n  border-radius:var(--radius);\r\n  background:#fff;\r\n  box-shadow:var(--shadow);\r\n  padding:14px;\r\n}\r\n#rtop .feature{\r\n  display:grid;\r\n  gap:12px;\r\n  grid-template-columns:1fr;\r\n  align-items:center;\r\n}\r\n#rtop .feature .thumb{ border-radius:14px; border:1px solid var(--line); }\r\n#rtop .feature .title{\r\n  margin:0;\r\n  font-size: clamp(1.35rem, 1.05rem + .7vw, 1.7rem); \/* \u2605\u5927\u304d\u304f *\/\r\n  font-weight:1000;\r\n  line-height:1.55;      \/* \u2605\u3086\u3068\u308a *\/\r\n  letter-spacing:.04em;  \/* \u2605\u8a70\u307e\u308a\u89e3\u6d88 *\/\r\n}\r\n#rtop .feature .sub{\r\n  margin:8px 0 0;\r\n  color:var(--muted);\r\n  font-weight:900;\r\n  font-size: 1rem;\r\n  letter-spacing:.02em;\r\n  line-height:1.75;\r\n}\r\n#rtop .feature .stats{ padding:0; margin-top:10px; }\r\n#rtop .seasonBadge{ display:none; }\r\n\r\n\/* ===== \u4e00\u89a7\uff1a\u753b\u50cf\uff0b\u30c6\u30ad\u30b9\u30c8\uff08\u67a0\u306a\u3057\uff09 ===== *\/\r\n#rtop .listGrid{\r\n  display:grid;\r\n  grid-template-columns:repeat(1, minmax(0,1fr));\r\n  gap: 22px;\r\n}\r\n#rtop .listItem{\r\n  background: transparent;\r\n  border: none;\r\n  box-shadow: none;\r\n  border-radius: 0;\r\n  min-width: 0;\r\n}\r\n#rtop .listThumb{\r\n  display:block;\r\n  width:100%;\r\n  aspect-ratio: 16\/10;\r\n  overflow:hidden;\r\n  background:#f3f4f6;\r\n}\r\n#rtop .listThumb img{\r\n  width:100%;\r\n  height:100%;\r\n  object-fit:cover;\r\n  display:block;\r\n}\r\n#rtop .listTitle{\r\n  margin: 10px 0 0;\r\n  font-weight: 1000;\r\n  line-height: 1.6;       \/* \u2605\u3086\u3068\u308a *\/\r\n  font-size: 1.28rem;\r\n  letter-spacing: .04em;  \/* \u2605\u8a70\u307e\u308a\u89e3\u6d88 *\/\r\n  word-break: break-word;\r\n}\r\n#rtop .listMeta{\r\n  margin: 8px 0 0;\r\n  display:flex;\r\n  align-items:center;\r\n  gap: 16px;\r\n  flex-wrap:wrap;\r\n  font-weight: 1000;\r\n  font-size: 1.05rem;\r\n  letter-spacing: .02em;\r\n}\r\n#rtop .m{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap: 10px;\r\n}\r\n\r\n\/* List tags *\/\r\n#rtop .tags{\r\n  margin-top: 10px;\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n  gap:10px;\r\n}\r\n#rtop .tag{\r\n  border:1px solid rgba(249,115,22,.45);\r\n  color:#ea580c;\r\n  background:#fff;\r\n  border-radius:999px;\r\n  padding:.46rem .8rem;\r\n  font-weight: 1000;\r\n  font-size: 1rem;\r\n  max-width: 100%;\r\n  letter-spacing:.02em;\r\n}\r\n\r\n\/* Meta \/ empty \/ pager *\/\r\n#rtop .meta{ color:var(--muted); font-weight:900; font-size: 1.05rem; letter-spacing:.02em; }\r\n#rtop .empty{ padding:18px 0 6px; }\r\n#rtop .empty__box{ border:1px dashed var(--line); border-radius:var(--radius); padding:16px; background:#fff; }\r\n#rtop .empty__title{ font-weight:900; margin-bottom:6px; font-size: 1.1rem; letter-spacing:.02em; }\r\n#rtop .empty__text{ color:var(--muted); font-weight:900; font-size: 1rem; letter-spacing:.02em; }\r\n#rtop .pager{ display:flex; justify-content:center; align-items:center; gap:10px; margin-top:14px; flex-wrap:wrap; }\r\n#rtop .pager__info{ color:var(--muted); font-weight:900; min-width:160px; text-align:center; font-size: 1.05rem; letter-spacing:.02em; }\r\n\r\n\/* \u4e00\u89a7\u5185\u691c\u7d22\uff1a\u30dc\u30bf\u30f3\u5217\uff08PC\u7528\u306e\u57fa\u672c\u30ec\u30a4\u30a2\u30a6\u30c8\uff09 *\/\r\n#rtop .listSearch__actions{\r\n  display: flex;\r\n  gap: 10px;\r\n  align-items: center;\r\n  flex: 0 0 auto;\r\n}\r\n\r\n\r\n\/* List search *\/\r\n#rtop .listSearch{\r\n  margin: 10px 0 12px;\r\n  border: 1px solid var(--line);\r\n  border-radius: var(--radius);\r\n  box-shadow: var(--shadow);\r\n  background:#fff;\r\n  padding: 12px;\r\n}\r\n#rtop .listSearch__row{\r\n  position: relative;\r\n  display: flex;\r\n  gap: 10px;\r\n  align-items: center;\r\n  flex-wrap: wrap;\r\n  min-width: 0;\r\n}\r\n#rtop .listSearch__input{\r\n  flex: 1 1 260px;\r\n  min-width: 0;\r\n  height: 48px;\r\n  padding: 0 14px;\r\n  border-radius: 12px;\r\n  border: 1px solid var(--line);\r\n  font-weight: 900;\r\n  font-size: 1.05rem;\r\n  outline: none;\r\n  letter-spacing:.02em;\r\n}\r\n#rtop .listSearch__input::placeholder{ color:#6b7280; font-weight:900; }\r\n#rtop .listSearch__input:focus{ border-color:#111; box-shadow: 0 0 0 4px rgba(17,17,17,.07); }\r\n#rtop .listSearch__btn{ padding:.68rem 1.05rem; }\r\n\r\n\/* Suggestions *\/\r\n#rtop .suggest{\r\n  margin-top:10px;\r\n  padding-top:10px;\r\n  border-top:1px solid var(--line);\r\n}\r\n#rtop .suggest__label{\r\n  font-size:1rem;\r\n  font-weight:900;\r\n  color:var(--muted);\r\n  margin-bottom:8px;\r\n  letter-spacing:.02em;\r\n}\r\n#rtop .suggest__list{\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n  gap:10px;\r\n}\r\n#rtop .sug{\r\n  border:1px solid var(--line);\r\n  background:#fff;\r\n  border-radius:999px;\r\n  padding:.5rem .95rem;\r\n  font-weight:900;\r\n  cursor:pointer;\r\n  transition:.15s ease;\r\n  font-size: 1rem;\r\n  max-width: 100%;\r\n  letter-spacing:.02em;\r\n}\r\n#rtop .sug:hover{ transform:translateY(-1px); }\r\n#rtop .sug:active{ transform:translateY(0); }\r\n\r\n\/* List controls *\/\r\n#rtop .listControls{\r\n  margin: 0 0 14px;\r\n  padding: 0;\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n  gap:10px;\r\n  align-items:flex-end;\r\n}\r\n#rtop .select{ min-width: 0; }\r\n#rtop .select__label{\r\n  display:block;\r\n  font-size:1rem;\r\n  color:var(--muted);\r\n  font-weight:900;\r\n  margin-bottom:4px;\r\n  letter-spacing:.02em;\r\n}\r\n#rtop .select__field{\r\n  border:1px solid var(--line);\r\n  border-radius:12px;\r\n  padding:.62rem .8rem;\r\n  font-weight:900;\r\n  background:#fff;\r\n  font-size: 1.05rem;\r\n  max-width: 100%;\r\n  letter-spacing:.02em;\r\n}\r\n\r\n\/* Responsive *\/\r\n@media (min-width: 560px){\r\n  #rtop .feature{ grid-template-columns:200px 1fr; }\r\n}\r\n@media (min-width: 700px){\r\n  #rtop .products{ grid-template-columns:repeat(4, minmax(0, 1fr)); }\r\n  #rtop .product{\r\n    flex-direction:column;\r\n    align-items:center;\r\n    text-align:center;\r\n    gap:10px;\r\n    padding:14px 10px;\r\n  }\r\n  #rtop .listGrid{ grid-template-columns:repeat(3, minmax(0,1fr)); gap: 26px; }\r\n}\r\n@media (min-width: 900px){\r\n  #rtop .two{ grid-template-columns:1.1fr .9fr; }\r\n  #rtop .products{ grid-template-columns:repeat(7, minmax(0, 1fr)); }\r\n  #rtop .product{ padding:14px 10px; }\r\n  #rtop .productIco{ width:48px; height:48px; }\r\n  #rtop .listGrid{ grid-template-columns:repeat(4, minmax(0,1fr)); }\r\n}\r\n\r\n\/* =========================================================\r\n   \ud83d\udcf1 MOBILE \u6700\u7d42\u8abf\u6574\uff08680px\u4ee5\u4e0b\uff09\r\n   - \u30e1\u30a4\u30f3\u753b\u50cf\uff1a\u89d2\u4e38\u306a\u3057 + \u5c11\u3057\u5927\u304d\u3081\uff08\u30d5\u30eb\u30d6\u30ea\u30fc\u30c9\u6c17\u5473\uff09\r\n   - \u6587\u5b57\u8a70\u307e\u308a\uff1a\u3055\u3089\u306b\u5c11\u3057\u3060\u3051\u5e83\u3052\u308b\r\n========================================================= *\/\r\n@media (max-width: 680px){\r\n\r\n  \/* \u5165\u529b \u2192 \u30dc\u30bf\u30f3\u7fa4\uff08\u4e0b\uff09 *\/\r\n  #rtop .listSearch__row{\r\n    display: grid;\r\n    grid-template-columns: 1fr;\r\n    gap: 10px;\r\n  }\r\n\r\n  \/* \u5165\u529b\u306f100% *\/\r\n  #rtop .listSearch__input{\r\n    width: 100%;\r\n    min-width: 0;\r\n  }\r\n\r\n  \/* \u30dc\u30bf\u30f3\u306f\u4e0b\u30672\u5217 *\/\r\n  #rtop .listSearch__actions{\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 10px;\r\n  }\r\n\r\n  \/* \u30dc\u30bf\u30f3\u306f\u5e45\u3044\u3063\u3071\u3044 *\/\r\n  #rtop .listSearch__btn,\r\n  #rtop #clear.btn{\r\n    width: 100%;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  \/* \u5168\u4f53\uff1a\u30b9\u30de\u30db\u306f\u3055\u3089\u306b\u5c11\u3057\u4f59\u767d\uff08\u6587\u5b57\u306e\u8a70\u307e\u308a\u5bfe\u7b56\uff09 *\/\r\n  #rtop.rtop{\r\n    --ls-base: .03em;\r\n  }\r\n\r\n  \/* wrap\u306e\u5de6\u53f3\u4f59\u767d\u3092\u30b9\u30de\u30db\u6700\u9069\u5316\uff08safe-area\u512a\u5148\uff09 *\/\r\n  #rtop .rtop__wrap{\r\n    padding-left: max(12px, env(safe-area-inset-left));\r\n    padding-right: max(12px, env(safe-area-inset-right));\r\n  }\r\n\r\n  #rtop .sec{ padding:18px 0; }\r\n\r\n  \/* ===== \u30e1\u30a4\u30f3\u753b\u50cf\uff1a\u89d2\u4e38\u306a\u3057\uff06\u5c11\u3057\u5927\u304d\u304f ===== *\/\r\n  #rtop .heroMain{\r\n    border-radius: 0;      \/* \u2605\u89d2\u4e38\u306a\u3057 *\/\r\n    box-shadow: none;      \/* \u2605\u30b9\u30c3\u30ad\u30ea *\/\r\n    border-left: none;\r\n    border-right: none;\r\n\r\n    \/* \u2605\u5de6\u53f3\u3092\u5c11\u3057\u5e83\u3052\u3066\u5927\u304d\u304f\u898b\u305b\u308b\uff08wrap\u306e\u4f59\u767d\u5206\u3092\u6253\u3061\u6d88\u3059\uff09 *\/\r\n    margin-left: calc(-1 * max(12px, env(safe-area-inset-left)));\r\n    margin-right: calc(-1 * max(12px, env(safe-area-inset-right)));\r\n  }\r\n  #rtop .heroMain img{\r\n    width: 100%;\r\n    height: auto;\r\n    object-fit: cover;     \/* \u2605\u8feb\u529b\u5bc4\u308a *\/\r\n  }\r\n\r\n  \/* ===== \u4e0a\u90e8\u691c\u7d22\uff1a\u5165\u529b\u6b04\u3092\u6700\u5927\u5316 ===== *\/\r\n  #rtop .heroSearch__row{\r\n    position: static;\r\n    display: grid;\r\n    grid-template-columns: 1fr;\r\n    gap: 10px;\r\n  }\r\n\r\n  #rtop .heroSearch__input{\r\n    height: 50px;\r\n    font-size: 1.02rem;\r\n    padding: 0 14px;\r\n  }\r\n\r\n  #rtop .heroSearch__actions{\r\n    display:grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap:10px;\r\n  }\r\n\r\n  #rtop #qBtn.btn,\r\n  #rtop .heroReset{\r\n    position: static;\r\n    top: auto;\r\n    right: auto;\r\n    transform: none;\r\n    height: 44px;\r\n    min-width: 0;\r\n    width: 100%;\r\n  }\r\n\r\n  \/* ===== \u30b9\u30e9\u30a4\u30c0\u30fc\uff1a\u30ca\u30d3\u4f4d\u7f6e\uff08\u30b9\u30de\u30db\uff09 ===== *\/\r\n  #rtop .slider__nav{\r\n    width:42px;\r\n    height:42px;\r\n    background:rgba(255,255,255,.96);\r\n  }\r\n  #rtop .slider__nav--prev{ left:8px; }\r\n  #rtop .slider__nav--next{ right:8px; }\r\n\r\n  #rtop .slide{ aspect-ratio:16\/9; }\r\n\r\n  \/* ===== \u7279\u96c6\uff08\u30b9\u30de\u30db\uff09 ===== *\/\r\n  #rtop .feature{\r\n    grid-template-columns:150px 1fr;\r\n    align-items:start;\r\n    gap:12px;\r\n  }\r\n  #rtop .feature .thumb{ aspect-ratio:1\/1; overflow:hidden; }\r\n\r\n  \/* ===== \u30ec\u30b7\u30d4\u4e00\u89a7\uff1a2\u30ab\u30e9\u30e0\u306e\u307e\u307e\u5927\u304d\u304f ===== *\/\r\n  #rtop .listGrid{\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 12px;\r\n  }\r\n\r\n  #rtop .listThumb{\r\n    aspect-ratio: 4 \/ 5;\r\n    border-radius: 14px;\r\n  }\r\n\r\n  #rtop .listTitle{\r\n    margin: 6px 0 0;\r\n    font-size: 1.12rem;\r\n    line-height: 1.55;\r\n    letter-spacing: .05em;\r\n  }\r\n\r\n  #rtop .listMeta{\r\n    margin: 6px 0 0;\r\n    gap: 12px;\r\n    font-size: 1rem;\r\n  }\r\n\r\n  #rtop .m{ gap: 8px; }\r\n\r\n  \/* ===== \u4e00\u89a7\u5185\u691c\u7d22\uff1a\u7e26\u7a4d\u307f ===== *\/\r\n  #rtop .listSearch{ padding: 10px; }\r\n\r\n  \/* controls *\/\r\n  #rtop .listControls{ gap: 8px; }\r\n  #rtop .select{ flex:1 1 140px; }\r\n  #rtop #clear.btn{ width: 100%; }\r\n\r\n  \/* underline *\/\r\n  #rtop.rtop{ --head-underline-h: 9px; }\r\n}\r\n\r\n\/* Reduced motion *\/\r\n@media (prefers-reduced-motion: reduce){\r\n  #rtop .btn,\r\n  #rtop .chip,\r\n  #rtop .sug,\r\n  #rtop .product{ transition:none; }\r\n  #rtop .btn:hover,\r\n  #rtop .chip:hover,\r\n  #rtop .sug:hover,\r\n  #rtop .product:hover{ transform:none; }\r\n  #rtop .slider__track{ transition:none; }\r\n}\r\n\r\n\/* =========================================================\r\n   Icon system\uff08\u4e00\u89a7\u3068\u30d4\u30eb\u306e\u898b\u305f\u76ee\u3092\u7d71\u4e00\uff09\r\n   - TIME\uff1a\u5f93\u6765\u306eCSS\uff08\u6642\u8a08\uff09\r\n   - KCAL\uff1a\u30a4\u30f3\u30e9\u30a4\u30f3SVG\uff08\u708e\uff09 \u2190 data:image \u3092\u4f7f\u308f\u306a\u3044\u306e\u3067\u78ba\u5b9f\u306b\u8868\u793a\r\n========================================================= *\/\r\n\r\n\/* \u5171\u901a\uff1a\u4e00\u89a7(m .ic) \u3068 \u30ab\u30fc\u30c9(pill .ico) *\/\r\n#rtop .m .ic,\r\n#rtop .pill .ico{\r\n  width:22px;\r\n  height:22px;\r\n  border-radius:999px;\r\n  display:inline-block;\r\n  position:relative;\r\n  flex:0 0 auto;\r\n  background:#fff;\r\n}\r\n\r\n\/* --- TIME (green clock) --- *\/\r\n#rtop .ic--time,\r\n#rtop .ico--time{\r\n  border:2px solid rgba(22,163,74,.35);\r\n}\r\n#rtop .ic--time::before,\r\n#rtop .ico--time::before{\r\n  content:\"\";\r\n  position:absolute;\r\n  left:50%;\r\n  top:50%;\r\n  width:2px;\r\n  height:7px;\r\n  background:#16a34a;\r\n  transform:translate(-50%,-70%);\r\n  border-radius:2px;\r\n}\r\n#rtop .ic--time::after,\r\n#rtop .ico--time::after{\r\n  content:\"\";\r\n  position:absolute;\r\n  left:50%;\r\n  top:50%;\r\n  width:6px;\r\n  height:2px;\r\n  background:#16a34a;\r\n  transform:translate(-5%,-50%);\r\n  border-radius:2px;\r\n}\r\n\r\n\/* --- KCAL (outline flame: inline SVG) --- *\/\r\n#rtop .ic--kcal,\r\n#rtop .ico--kcal{\r\n  border:2px solid rgba(239,68,68,.35);  \/* \u5916\u67a0\u306e\u4e38 *\/\r\n  background:#fff;\r\n  display:inline-grid;\r\n  place-items:center;\r\n}\r\n\r\n\/* SVG\u30b5\u30a4\u30ba *\/\r\n#rtop .ic--kcal svg,\r\n#rtop .ico--kcal svg{\r\n  width:16px;\r\n  height:16px;\r\n  display:block;\r\n}\r\n\r\n\/* \u5ff5\u306e\u305f\u3081\uff1a\u904e\u53bb\u306e\u7591\u4f3c\u8981\u7d20\u708e\u306f\u7121\u52b9\u5316\uff08KCAL\u3060\u3051\uff09 *\/\r\n#rtop .ic--kcal::before,\r\n#rtop .ic--kcal::after,\r\n#rtop .ico--kcal::before,\r\n#rtop .ico--kcal::after{\r\n  content:none !important;\r\n}\r\n\r\n\/* pill\u5185\u306e\u30a2\u30a4\u30b3\u30f3\u4f4d\u7f6e\u8abf\u6574 *\/\r\n#rtop .pill .ico{ margin-right:2px; }\r\n\r\n\/* \u304a\u3059\u3059\u3081\u306f\u4e00\u65e6\u975e\u8868\u793a *\/\r\n#rtop .sec--recommend{ display:none; }\r\n\r\n\/* \u5546\u54c1\u30dc\u30bf\u30f3\uff1a\u30a2\u30a4\u30b3\u30f3\u4e0a\u30fb\u5546\u54c1\u540d\u4e0b\u306b\u56fa\u5b9a *\/\r\n#rtop .product{\r\n  flex-direction: column;\r\n  align-items: center;\r\n  text-align: center;\r\n  gap: 10px;\r\n}\r\n\r\n\/* \u4e38\u5f62\u30a2\u30a4\u30b3\u30f3\u306b\u753b\u50cf\u3092\u30d5\u30a3\u30c3\u30c8 *\/\r\n#rtop .productIco{\r\n  width: 56px;\r\n  height: 56px;\r\n  border-radius: 999px;\r\n  overflow: hidden;\r\n  border: 1px solid var(--line);\r\n  background: #fff;\r\n}\r\n\r\n\/* \u30c0\u30df\u30fc\u8868\u793a\uff08productIco::before\uff09\u3092\u6d88\u3059 *\/\r\n#rtop .productIco::before{\r\n  content: none;\r\n}\r\n\r\n\/* \u753b\u50cf\u3092\u4e38\u306e\u4e2d\u306b\u3074\u3063\u305f\u308a *\/\r\n#rtop .productIco img{\r\n  object-fit: cover;\r\n  object-position: center;\r\n  transform: scale(1.08); \/* \u5c11\u3057\u3060\u3051\u5bc4\u305b\u308b *\/\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(() => {\r\n  const DATA = {\r\n    newRecipes: [\r\n{\r\n  date:\"2026\/03\/30\",\r\n  title:\"\u6885\u9162\u9999\u308b\u30a8\u30b9\u30cb\u30c3\u30af\u713c\u304d\u305d\u3070\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/umezu_yakisoba\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/03\/\u6885\u9162\u9999\u308b\u30a8\u30b9\u30cb\u30c3\u30af\u713c\u304d\u305d\u3070.png\",\r\n  timeMin:15,\r\n  kcal:590\r\n},\r\n\r\n{ \r\n  date:\"2026\/01\/01\",\r\n  title:\"\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3.png\",\r\n  timeMin:40,\r\n  kcal:560,\r\n},\r\n{ \r\n  date:\"2026\/01\/01\",\r\n  title:\"\u3055\u3064\u307e\u3044\u3082\u3068\u30af\u30ea\u30fc\u30e0\u30c1\u30fc\u30ba\u306e\u6885\u30b5\u30e9\u30c0\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u3055\u3064\u307e\u3044\u3082\u306e\u6885\u30b5\u30e9\u30c0\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u3055\u3064\u307e\u3044\u3082\u6885\u30b5\u30e9\u30c0.png\",\r\n  timeMin:15,\r\n  kcal:250,\r\n},\r\n      { date:\"2025\/07\/01\", title:\"\u6885\u3068\u3057\u3089\u3059\u306e\u51b7\u88fd\u30d1\u30b9\u30bf\", url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u6885\u3068\u3057\u3089\u3059\u306e\u51b7\u88fd\u30d1\u30b9\u30bf\/\", image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30d1\u30b9\u30bf.png\", timeMin:20, kcal:510, tags:[\"\u3057\u3089\u3059\",\"\u51b7\u88fd\"] }\r\n    ],\r\n\r\n    recommends: [\r\n      { url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u6885\u3068\u3057\u3089\u3059\u306e\u51b7\u88fd\u30d1\u30b9\u30bf\/\", image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30d1\u30b9\u30bf.png\" },\r\n      { url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u30a2\u30dc\u30ab\u30c9\u306e\u6885\u5e72\u3057\u548c\u3048\/\", image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30a2\u30dc\u30ab\u30c9.png\" },\r\n      { url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u8c5a\u8089\u306e\u6885\u751f\u59dc\u713c\u304d\/\", image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u751f\u59dc\u713c\u304d.png\" }\r\n    ],\r\n\r\n    \/* ===========================\r\n       B\u6848\uff1a\u30e6\u30fc\u30b6\u30fc\u304c\u6253\u3061\u305d\u3046\u306a\u691c\u7d22\u8a9e\u30c8\u30c3\u30d720\r\n       - suggest\uff08\u5019\u88dc\uff09\u306b\u3082\u6df7\u305c\u308b\r\n    =========================== *\/\r\n    topSearches: [\r\n      \"\u6885\", \"\u6885\u5e72\u3057\", \"\u6885\u3060\u308c\", \"\u6885\u9162\",\r\n      \"\u3057\u305d\", \"\u306f\u3061\u307f\u3064\", \"\u304b\u3064\u304a\",\r\n      \"\u8c5a\u8089\", \"\u306d\u304e\", \"\u3057\u3089\u3059\", \"\u30a2\u30dc\u30ab\u30c9\",\r\n      \"\u308c\u3093\u3053\u3093\", \"\u304d\u3085\u3046\u308a\", \"\u30e1\u30f3\u30de\",\r\n      \"\u9eba\", \"\u30d1\u30b9\u30bf\", \"\u3054\u98ef\", \"\u4e3c\", \"\u934b\", \"\u4f5c\u308a\u7f6e\u304d\"\r\n    ],\r\n\r\n    \/* ===========================\r\n       B\u6848\uff1a\u691c\u7d22\u3086\u3089\u304e\u5438\u53ce\uff08\u540c\u7fa9\u8a9e\u8f9e\u66f8\uff09\r\n       - \u2605\u4eca\u56de\uff1a\u691c\u7d22\u6642\u306f\u300c1\u6bb5\u3060\u3051\u5c55\u958b\u300d(\u9023\u9396\u3057\u306a\u3044)\u3067\u4f7f\u3046\r\n    =========================== *\/\r\n    synonyms: {\r\n      \"\u9eba\": [\"\u30d1\u30b9\u30bf\",\"\u30b9\u30d1\u30b2\u30c3\u30c6\u30a3\",\"\u30b9\u30d1\u30b2\u30c6\u30a3\",\"\u30de\u30ab\u30ed\u30cb\",\"\u3046\u3069\u3093\",\"\u305d\u3070\",\"\u305d\u3046\u3081\u3093\",\"\u4e2d\u83ef\u9eba\",\"\u30e9\u30fc\u30e1\u30f3\"],\r\n      \"\u30d1\u30b9\u30bf\": [\"\u9eba\",\"\u30b9\u30d1\u30b2\u30c3\u30c6\u30a3\",\"\u30b9\u30d1\u30b2\u30c6\u30a3\"],\r\n      \"\u3054\u306f\u3093\": [\"\u3054\u98ef\",\"\u7c73\",\"\u708a\u304d\u8fbc\u307f\",\"\u708a\u98ef\u5668\"],\r\n      \"\u3054\u98ef\": [\"\u3054\u306f\u3093\",\"\u7c73\",\"\u708a\u304d\u8fbc\u307f\",\"\u708a\u98ef\u5668\"],\r\n      \"\u4e3c\": [\"\u3069\u3093\u3076\u308a\",\"\u4e3c\u3076\u308a\"],\r\n      \"\u3069\u3093\u3076\u308a\": [\"\u4e3c\",\"\u4e3c\u3076\u308a\"],\r\n      \"\u934b\": [\"\u306a\u3079\",\"\u30b9\u30fc\u30d7\",\"\u6c41\",\"\u3042\u3063\u305f\u304b\"],\r\n      \"\u305f\u308c\": [\"\u30bf\u30ec\",\"\u30bd\u30fc\u30b9\",\"\u30c9\u30ec\u30c3\u30b7\u30f3\u30b0\",\"\u6885\u3060\u308c\"],\r\n      \"\u30bf\u30ec\": [\"\u305f\u308c\",\"\u30bd\u30fc\u30b9\",\"\u30c9\u30ec\u30c3\u30b7\u30f3\u30b0\",\"\u6885\u3060\u308c\"],\r\n      \"\u4f5c\u308a\u7f6e\u304d\": [\"\u5e38\u5099\u83dc\",\"\u30b9\u30c8\u30c3\u30af\",\"\u4fdd\u5b58\",\"\u3064\u304f\u308a\u304a\u304d\"],\r\n      \"\u3064\u304f\u308a\u304a\u304d\": [\"\u4f5c\u308a\u7f6e\u304d\",\"\u5e38\u5099\u83dc\",\"\u30b9\u30c8\u30c3\u30af\"],\r\n      \"\u304a\u3064\u307e\u307f\": [\"\u3064\u307e\u307f\",\"\u9152\u306e\u80b4\",\"\u526f\u83dc\",\"\u5c0f\u9262\"],\r\n      \"\u6642\u77ed\": [\"\u7c21\u5358\",\"\u3059\u3050\",\"5\u5206\",\"10\u5206\",\"\u624b\u8efd\"]\r\n    },\r\n\r\n    popularKeywords: [\"\u3057\u3089\u3059\",\"\u30a2\u30dc\u30ab\u30c9\",\"\u306d\u304e\",\"\u30ab\u30c4\u30aa\",\"\u308c\u3093\u3053\u3093\",\"\u8c5a\u8089\",\"\u6885\u3060\u308c\",\"\u751f\u59dc\",\"\u51b7\u88fd\",\"\u4e3c\"],\r\n\r\n    products: [\r\n      { key:\"\u306f\u3061\u307f\u3064\u6885\", name:\"\u306f\u3061\u307f\u3064\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u3010TOP\u3011\u306f\u3061\u307f\u3064\u3064\u3076\u308c\u6885.png\" },\r\n      { key:\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\", name:\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/16.png\" },\r\n      { key:\"\u304b\u3064\u304a\u6885\", name:\"\u304b\u3064\u304a\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u3010\u6b63\u65b9\u5f62\u3011\u304b\u3064\u304a\u6885.png\" },\r\n      { key:\"\u3057\u305d\u6885\", name:\"\u3057\u305d\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/17.png\" },\r\n      { key:\"\u798f\u8336\u6885\", name:\"\u798f\u8336\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/18.png\" },\r\n      { key:\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\", name:\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u3010TOP\u3011\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885.png\" },\r\n      { key:\"\u6885\u9162\", name:\"\u6885\u9162\", icon:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/1000\u00d71000\u304a\u3070\u3042\u3061\u3083\u3093\u5546\u54c1\u30da\u30fc\u30b8\u753b\u50cf-1.png\" }\r\n    ],\r\n\r\n    classic: {\r\n      title:\"\u8c5a\u8089\u306e\u6885\u751f\u59dc\u713c\u304d\",\r\n      url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u8c5a\u8089\u306e\u6885\u751f\u59dc\u713c\u304d\/\",\r\n      image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u751f\u59dc\u713c\u304d.png\",\r\n      timeMin:20,\r\n      kcal:405,\r\n      note:\"\u3044\u3064\u3082\u306e\u751f\u59dc\u713c\u304d\u306b\u3001\u6885\u306e\u30ad\u30ec\u3002\u3054\u306f\u3093\u304c\u9032\u3080\u5b9a\u756a\u67a0\u3002\"\r\n    },\r\n\r\nseason: {\r\n  badge:\"\u51ac\",\r\n  title:\"\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3.png\",\r\n  timeMin:40,\r\n  kcal:560\r\n},\r\n\r\n\r\nrecipes: [\r\n  {\r\n    title:\"\u6885\u3068\u3057\u3089\u3059\u306e\u51b7\u88fd\u30d1\u30b9\u30bf\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u6885\u3068\u3057\u3089\u3059\u306e\u51b7\u88fd\u30d1\u30b9\u30bf\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30d1\u30b9\u30bf.png\",\r\n    timeMin:20,\r\n    kcal:510,\r\n    tags:[\"\u9b5a\",\"\u4e3b\u98df\",\"\u51b7\u88fd\"],\r\n    keywords:[\"\u9eba\",\"\u30d1\u30b9\u30bf\",\"\u30b9\u30d1\u30b2\u30c3\u30c6\u30a3\",\"\u30b9\u30d1\u30b2\u30c6\u30a3\",\"\u51b7\u88fd\",\"\u590f\",\"\u3055\u3063\u3071\u308a\",\"\u6642\u77ed\",\"\u7c21\u5358\",\"\u3057\u3089\u3059\",\"\u6885\",\"\u6885\u5e72\u3057\",\"\u30e9\u30f3\u30c1\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\",\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:90\r\n  },\r\n  {\r\n    title:\"\u30a2\u30dc\u30ab\u30c9\u306e\u6885\u5e72\u3057\u548c\u3048\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u30a2\u30dc\u30ab\u30c9\u306e\u6885\u5e72\u3057\u548c\u3048\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30a2\u30dc\u30ab\u30c9.png\",\r\n    timeMin:10,\r\n    kcal:190,\r\n    tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\"],\r\n    keywords:[\"\u30a2\u30dc\u30ab\u30c9\",\"\u548c\u3048\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\",\"\u7c21\u5358\",\"10\u5206\",\"\u706b\u3092\u4f7f\u308f\u306a\u3044\",\"\u3055\u3063\u3071\u308a\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:88\r\n  },\r\n  {\r\n    title:\"\u30cd\u30ae\u5869\u6885\u30c0\u30ec\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u30cd\u30ae\u5869\u6885\u30c0\u30ec\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u4e07\u80fd\u305f\u308c.png\",\r\n    timeMin:10,\r\n    kcal:55,\r\n    tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u4f5c\u308a\u7f6e\u304d\"],\r\n    keywords:[\"\u306d\u304e\",\"\u30cd\u30ae\",\"\u305f\u308c\",\"\u30bf\u30ec\",\"\u4e07\u80fd\",\"\u4f5c\u308a\u7f6e\u304d\",\"\u5e38\u5099\u83dc\",\"\u7c21\u5358\",\"10\u5206\",\"\u6885\",\"\u6885\u5e72\u3057\",\"\u6885\u3060\u308c\"],\r\n    productKeys:[\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:92\r\n  },\r\n  {\r\n    title:\"\u30ab\u30c4\u30aa\u306e\u6885\u6f2c\u3051\u4e3c\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u30ab\u30c4\u30aa\u306e\u6885\u6f2c\u3051\u4e3c\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u304b\u3064\u304a\u4e3c.png\",\r\n    timeMin:45,\r\n    kcal:395,\r\n    tags:[\"\u9b5a\",\"\u4e3b\u98df\",\"\u4e3c\"],\r\n    keywords:[\"\u4e3c\",\"\u3069\u3093\u3076\u308a\",\"\u4e3c\u3076\u308a\",\"\u30ab\u30c4\u30aa\",\"\u304b\u3064\u304a\",\"\u9c39\",\"\u523a\u8eab\",\"\u6f2c\u3051\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:86\r\n  },\r\n  {\r\n    title:\"\u8c5a\u8089\u306e\u6885\u751f\u59dc\u713c\u304d\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u8c5a\u8089\u306e\u6885\u751f\u59dc\u713c\u304d\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u751f\u59dc\u713c\u304d.png\",\r\n    timeMin:20,\r\n    kcal:405,\r\n    tags:[\"\u8089\",\"\u4e3b\u83dc\"],\r\n    keywords:[\"\u8c5a\u8089\",\"\u751f\u59dc\",\"\u3057\u3087\u3046\u304c\",\"\u751f\u59dc\u713c\u304d\",\"\u713c\u304d\",\"\u30e1\u30a4\u30f3\",\"\u5b9a\u756a\",\"\u7c21\u5358\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\",\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:94\r\n  },\r\n  {\r\n    title:\"\u308c\u3093\u3053\u3093\u306e\u6885\u3059\u308a\u6d41\u3057\u6c41\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u308c\u3093\u3053\u3093\u306e\u6885\u3059\u308a\u6d41\u3057\u6c41\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u30ec\u30f3\u30b3\u30f3\u3059\u308a\u304a\u308d\u3057\u6c41.png\",\r\n    timeMin:50,\r\n    kcal:80,\r\n    tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u6c41\u7269\"],\r\n    keywords:[\"\u308c\u3093\u3053\u3093\",\"\u84ee\u6839\",\"\u6c41\",\"\u6c41\u7269\",\"\u30b9\u30fc\u30d7\",\"\u3055\u3063\u3071\u308a\",\"\u3042\u3063\u3055\u308a\",\"\u3084\u3055\u3057\u3044\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:84\r\n  },\r\n  {\r\n    title:\"\u708a\u98ef\u5668\u3067\u3064\u304f\u308b\u6885\u3054\u98ef\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u708a\u98ef\u5668\u3067\u4f5c\u308b\u6885\u3054\u98ef\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u3054\u98ef.png\",\r\n    timeMin:60,\r\n    kcal:380,\r\n    tags:[\"\u4e3b\u98df\",\"\u3054\u98ef\"],\r\n    keywords:[\"\u3054\u98ef\",\"\u3054\u306f\u3093\",\"\u7c73\",\"\u708a\u98ef\u5668\",\"\u708a\u304d\u8fbc\u307f\",\"\u7c21\u5358\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\",\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:80\r\n  },\r\n  {\r\n    title:\"\u6885\u30ad\u30e5\u30a6\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u6885\u30ad\u30e5\u30a6\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u6885\u30ad\u30e5\u30a6.png\",\r\n    timeMin:5,\r\n    kcal:30,\r\n    tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\"],\r\n    keywords:[\"\u304d\u3085\u3046\u308a\",\"\u80e1\u74dc\",\"\u30ad\u30e5\u30a6\u30ea\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\",\"\u7c21\u5358\",\"5\u5206\",\"\u3055\u3063\u3071\u308a\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\",\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:78\r\n  },\r\n  {\r\n    title:\"\u6885\u934b\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u767d\u307f\u305d\u6885\u934b\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u767d\u307f\u305d.png\",\r\n    timeMin:35,\r\n    kcal:160,\r\n    tags:[\"\u4e3b\u83dc\",\"\u934b\"],\r\n    keywords:[\"\u934b\",\"\u306a\u3079\",\"\u6c41\",\"\u6c41\u7269\",\"\u30b9\u30fc\u30d7\",\"\u3042\u3063\u305f\u304b\",\"\u6e29\u304b\u3044\",\"\u51ac\",\"\u767d\u307f\u305d\",\"\u5473\u564c\",\"\u5bb6\u65cf\",\"\u6885\",\"\u6885\u5e72\u3057\"],\r\n    productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\",\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:82\r\n  },\r\n  {\r\n    title:\"\u30e1\u30f3\u30de\u306e\u6885\u5e72\u3057\u548c\u3048\",\r\n    url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u30a6\u30e1\u30f3\u30de\/\",\r\n    image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2025\/07\/\u30a6\u30e1\u30f3\u30de.png\",\r\n    timeMin:5,\r\n    kcal:35,\r\n    tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\"],\r\n    keywords:[\"\u30e1\u30f3\u30de\",\"\u7af9\u306e\u5b50\",\"\u305f\u3051\u306e\u3053\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\",\"\u7c21\u5358\",\"5\u5206\",\"\u4f5c\u308a\u7f6e\u304d\",\"\u6885\",\"\u6885\u5e72\u3057\",\"\u548c\u3048\"],\r\n    productKeys:[\"\u304b\u3064\u304a\u6885\",\"\u3057\u305d\u6885\",\"\u798f\u8336\u6885\",\"\u304a\u3070\u3042\u3061\u3083\u3093\u5bb6\u306e\u6885\"],\r\n    updated:\"2025-07-01\",\r\n    popularScore:79\r\n  },\r\n\r\n{\r\n  title:\"\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u8c46\u4e73\u3067\u30d8\u30eb\u30b7\u30fc\u713c\u304d\u6885\u30b0\u30e9\u30bf\u30f3.png\",\r\n  timeMin:40,\r\n  kcal:560,\r\n  tags:[\"\u8089\",\"\u4e3b\u83dc\"],\r\n  keywords:[\r\n    \"\u30b0\u30e9\u30bf\u30f3\",\"\u713c\u304d\",\"\u30aa\u30fc\u30d6\u30f3\",\"\u30c1\u30fc\u30ba\",\"\u8c46\u4e73\",\"\u30db\u30ef\u30a4\u30c8\u30bd\u30fc\u30b9\",\"\u30de\u30ab\u30ed\u30cb\",\r\n    \"\u9d8f\u8089\",\"\u9d8f\u3082\u3082\u8089\",\"\u7389\u306d\u304e\",\"\u3057\u3081\u3058\",\r\n    \"\u7c21\u5358\",\"\u3042\u3063\u305f\u304b\",\"\u51ac\",\r\n    \"\u6885\",\"\u6885\u5e72\u3057\",\"\u306f\u3061\u307f\u3064\u6885\"\r\n  ],\r\n  productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\"],\r\n  updated:\"2026-01-01\",\r\n  popularScore:85\r\n},\r\n\r\n{\r\n  title:\"\u3055\u3064\u307e\u3044\u3082\u3068\u30af\u30ea\u30fc\u30e0\u30c1\u30fc\u30ba\u306e\u6885\u30b5\u30e9\u30c0\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/\u3055\u3064\u307e\u3044\u3082\u306e\u6885\u30b5\u30e9\u30c0\/\",\r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/01\/\u3055\u3064\u307e\u3044\u3082\u6885\u30b5\u30e9\u30c0.png\",\r\n  timeMin:15,\r\n  kcal:250,\r\n  tags:[\"\u91ce\u83dc\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\"],\r\n  keywords:[\r\n    \"\u3055\u3064\u307e\u3044\u3082\",\"\u30b5\u30c4\u30de\u30a4\u30e2\",\"\u828b\",\r\n    \"\u30af\u30ea\u30fc\u30e0\u30c1\u30fc\u30ba\",\"\u30c1\u30fc\u30ba\",\r\n    \"\u308a\u3093\u3054\",\"\u30ec\u30fc\u30ba\u30f3\",\r\n    \"\u30b5\u30e9\u30c0\",\"\u30c7\u30ea\",\"\u526f\u83dc\",\"\u304a\u3064\u307e\u307f\",\r\n    \"\u30ec\u30f3\u30b8\",\"\u96fb\u5b50\u30ec\u30f3\u30b8\",\"\u6642\u77ed\",\"\u7c21\u5358\",\"\u706b\u3092\u4f7f\u308f\u306a\u3044\",\"\u4f5c\u308a\u7f6e\u304d\",\r\n    \"\u6885\",\"\u6885\u5e72\u3057\",\"\u306f\u3061\u307f\u3064\u6885\"\r\n  ],\r\n  productKeys:[\"\u306f\u3061\u307f\u3064\u6885\",\"\u3042\u307e\u3061\u3083\u3065\u308b\u6885\"],\r\n  updated:\"2026-01-01\",\r\n  popularScore:83\r\n},\r\n\r\n{\r\n  title:\"\u6885\u9162\u9999\u308b\u30a8\u30b9\u30cb\u30c3\u30af\u713c\u304d\u305d\u3070\",\r\n  url:\"https:\/\/plumlady.co.jp\/apps\/note\/umezu_yakisoba\/\", \r\n  image:\"https:\/\/plumlady.co.jp\/apps\/note\/wp-content\/uploads\/2026\/03\/\u6885\u9162\u9999\u308b\u30a8\u30b9\u30cb\u30c3\u30af\u713c\u304d\u305d\u3070.png\", \r\n  timeMin:15,\r\n  kcal:590,\r\n  tags:[\"\u8089\",\"\u4e3b\u98df\",\"\u9eba\"],\r\n  keywords:[\r\n    \"\u713c\u304d\u305d\u3070\",\"\u9eba\",\"\u4e2d\u83ef\u9eba\",\r\n    \"\u8c5a\u8089\",\"\u8c5a\u30d0\u30e9\u8089\",\r\n    \"\u30ad\u30e3\u30d9\u30c4\",\"\u30cb\u30e9\",\"\u3082\u3084\u3057\",\r\n    \"\u6885\u9162\",\"\u6885\",\r\n    \"\u30ca\u30f3\u30d7\u30e9\u30fc\",\"\u30a8\u30b9\u30cb\u30c3\u30af\",\r\n    \"\u3055\u3063\u3071\u308a\",\"\u6642\u77ed\",\"\u30d5\u30e9\u30a4\u30d1\u30f3\"\r\n  ],\r\n  productKeys:[\"\u6885\u9162\"],\r\n  updated:\"2026-03-30\",\r\n  popularScore:84\r\n}\r\n\r\n]\r\n\r\n  };\r\n\r\n  const ICON = {\r\n    kcal: `\r\n      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n        <g fill=\"none\" stroke=\"#ef4444\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n          <path d=\"M12 2c2.2 2.3 3.4 4.7 3.4 7 0 1.4-.5 2.7-1.4 3.7 2.1-.5 4-2.6 4-5.6 2.2 2.3 3.6 5.3 3.6 8.3C20.6 19.7 16.7 22 12 22S3.4 19.7 3.4 15.4C3.4 11.4 6.1 6.9 12 2z\"\/>\r\n          <path d=\"M12 12c1.6 1.5 2.5 2.9 2.5 4.3 0 2-1.5 3.7-2.5 3.7s-2.5-1.7-2.5-3.7c0-1.4.9-2.8 2.5-4.3z\"\/>\r\n        <\/g>\r\n      <\/svg>\r\n    `\r\n  };\r\n\r\n  const $ = (sel, root=document) => root.querySelector(sel);\r\n\r\n  const el = (tag, attrs={}, kids=[]) => {\r\n    const n = document.createElement(tag);\r\n    Object.entries(attrs).forEach(([k,v]) => {\r\n      if (k === \"class\") n.className = v;\r\n      else if (k === \"html\") n.innerHTML = v;\r\n      else if (k === \"aria\") Object.entries(v).forEach(([ak,av]) => n.setAttribute(`aria-${ak}`, av));\r\n      else if (k === \"role\") n.setAttribute(\"role\", v);\r\n      else if (k.startsWith(\"on\") && typeof v === \"function\") n.addEventListener(k.slice(2).toLowerCase(), v);\r\n      else n.setAttribute(k, v);\r\n    });\r\n    kids.forEach(c => n.appendChild(typeof c === \"string\" ? document.createTextNode(c) : c));\r\n    return n;\r\n  };\r\n\r\n  const imgEl = (src, alt, loading=\"lazy\") => el(\"img\", { src, alt: alt || \"\", loading });\r\n\r\n  \/\/ \u65e2\u5b58\u306e\u8efd\u3044\u6b63\u898f\u5316\uff08\u4e3b\u306bUI\u5074\u3067\u4f7f\u7528\uff09\r\n  const norm = s => (s || \"\").toString().trim().toLowerCase();\r\n\r\n  \/* =========================================================\r\n     \u540c\u7fa9\u8a9e\uff1a1\u6bb5\u3060\u3051\u5c55\u958b\uff08\u9023\u9396\u3057\u306a\u3044\uff09\u7528\r\n  ========================================================= *\/\r\n\r\n  \/* =========================\r\n     \u540c\u7fa9\u8a9e\uff1a\u6b63\u898f\u5316\uff08NFKC + \u3072\u3089\u304c\u306a\u2192\u30ab\u30bf\u30ab\u30ca + \u5c0f\u6587\u5b57\u5316\uff09\r\n  ========================= *\/\r\n  function normalizeTerm(s){\r\n    s = (s ?? \"\").toString().trim();\r\n    if (!s) return \"\";\r\n    \/\/ \u5168\u89d2\u534a\u89d2\u306a\u3069\u3092\u63c3\u3048\u308b\r\n    try { s = s.normalize(\"NFKC\"); } catch(e) {}\r\n    \/\/ \u3072\u3089\u304c\u306a\u2192\u30ab\u30bf\u30ab\u30ca\uff08\u3089\u30fc\u3081\u3093\/\u30e9\u30fc\u30e1\u30f3\u3092\u5bc4\u305b\u308b\uff09\r\n    s = s.replace(\/[\\u3041-\\u3096]\/g, ch => String.fromCharCode(ch.charCodeAt(0) + 0x60));\r\n    \/\/ \u82f1\u5b57\u306f\u5c0f\u6587\u5b57\u5316\r\n    s = s.toLowerCase();\r\n    return s;\r\n  }\r\n\r\n  \/* =========================\r\n     \u540c\u7fa9\u8a9e\uff1a1\u6bb5\u5c55\u958b\u7528\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\r\n     - FWD: key -> values\r\n     - REV: value -> keys\r\n  ========================= *\/\r\n  function buildSynOneHopIndex(dict){\r\n    const FWD = new Map(); \/\/ nk -> Set(nv)\r\n    const REV = new Map(); \/\/ nv -> Set(nk)\r\n\r\n    if (!dict) return { FWD, REV };\r\n\r\n    Object.entries(dict).forEach(([k, arr]) => {\r\n      const nk = normalizeTerm(k);\r\n      if (!nk) return;\r\n\r\n      const vals = Array.isArray(arr) ? arr : [];\r\n      if (!FWD.has(nk)) FWD.set(nk, new Set());\r\n\r\n      vals.forEach(v => {\r\n        const nv = normalizeTerm(v);\r\n        if (!nv) return;\r\n        FWD.get(nk).add(nv);\r\n\r\n        if (!REV.has(nv)) REV.set(nv, new Set());\r\n        REV.get(nv).add(nk);\r\n      });\r\n    });\r\n\r\n    return { FWD, REV };\r\n  }\r\n\r\n  \/* =========================\r\n     \u540c\u7fa9\u8a9e\uff1a1\u6bb5\u3060\u3051\u5c55\u958b\uff08\u9023\u9396\u3057\u306a\u3044\uff09\r\n     - \u5165\u529b\u8a9e q \u306b\u5bfe\u3057\u3066\r\n       A) q\u304ckey\u306a\u3089 values \u3092\u8db3\u3059\r\n       B) q\u304cvalue\u3068\u3057\u3066\u542b\u307e\u308c\u308bkey\u304c\u3042\u308c\u3070\u3001\u305d\u306ekey \u3068 \u305d\u306ekey\u306evalues \u3092\u8db3\u3059\r\n     \u203b\u3053\u3053\u3067\u5897\u3048\u305f\u8a9e\u306f \u201c\u8ffd\u52a0\u5c55\u958b\u3057\u306a\u3044\u201d\r\n  ========================= *\/\r\n  function expandQueryOneHop(q, synIndex){\r\n    const nq = normalizeTerm(q);\r\n    if (!nq) return [];\r\n\r\n    const out = new Set([nq]);\r\n\r\n    if (!synIndex) return Array.from(out);\r\n\r\n    const { FWD, REV } = synIndex;\r\n\r\n    \/\/ A) q\u304ckey\u306e\u5834\u5408\uff1avalues\u3092\u8ffd\u52a0\r\n    if (FWD.has(nq)){\r\n      for (const v of FWD.get(nq)) out.add(v);\r\n    }\r\n\r\n    \/\/ B) q\u304cvalue\u3068\u3057\u3066\u5165\u3063\u3066\u3044\u308b key \u3092\u62fe\u3046\uff08\u9006\u5f15\u304d\uff09\r\n    if (REV.has(nq)){\r\n      for (const nk of REV.get(nq)){\r\n        out.add(nk); \/\/ \u305d\u306ekey\u81ea\u4f53\u3082\u5019\u88dc\u306b\u542b\u3081\u308b\r\n        \/\/ \u305d\u306ekey\u306evalues\u30821\u6bb5\u3068\u3057\u3066\u8ffd\u52a0\uff08\u305f\u3060\u3057\u3053\u3053\u304b\u3089\u5148\u306f\u5c55\u958b\u3057\u306a\u3044\uff09\r\n        if (FWD.has(nk)){\r\n          for (const v of FWD.get(nk)) out.add(v);\r\n        }\r\n      }\r\n    }\r\n\r\n    return Array.from(out);\r\n  }\r\n\r\n  \/\/ \u2605 \u540c\u7fa9\u8a9e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff081\u6bb5\u5c55\u958b\u5c02\u7528\uff09\u30921\u56de\u69cb\u7bc9\r\n  const SYN1 = buildSynOneHopIndex(DATA.synonyms);\r\n\r\n  const root = $(\"#rtop\");\r\n  if (!root) return;\r\n\r\n  const dom = {\r\n    q: $(\"#q\", root),\r\n    qBtn: $(\"#qBtn\", root),\r\n    resetCondTop: $(\"#resetCondTop\", root),\r\n    chipsTop: $(\"#chipsTop\", root),\r\n    heroResult: $(\"#heroResult\", root),\r\n\r\n    newRail: $(\"#newRail\", root),\r\n\r\n    slTrack: $(\"#slTrack\", root),\r\n    slDots: $(\"#slDots\", root),\r\n    slPrev: $(\"#slPrev\", root),\r\n    slNext: $(\"#slNext\", root),\r\n    slViewport: $(\"#slViewport\", root),\r\n\r\n    products: $(\"#products\", root),\r\n\r\n    classicSlot: $(\"#classicSlot\", root),\r\n    seasonSlot: $(\"#seasonSlot\", root),\r\n\r\n    q2: $(\"#q2\", root),\r\n    qBtn2: $(\"#qBtn2\", root),\r\n    suggest: $(\"#suggest\", root),\r\n    suggestList: $(\"#suggestList\", root),\r\n\r\n    sort: $(\"#sort\", root),\r\n    per: $(\"#per\", root),\r\n    clear: $(\"#clear\", root),\r\n\r\n    grid: $(\"#grid\", root),\r\n    empty: $(\"#empty\", root),\r\n    meta: $(\"#meta\", root),\r\n    prev: $(\"#prev\", root),\r\n    next: $(\"#next\", root),\r\n    pageInfo: $(\"#pageInfo\", root),\r\n  };\r\n\r\n  const state = { q:\"\", chip:\"\", product:\"\", sort:\"new\", per:12, page:1 };\r\n\r\n  function syncInputs(){\r\n    const v = state.q || \"\";\r\n    if (dom.q && dom.q.value !== v) dom.q.value = v;\r\n    if (dom.q2 && dom.q2.value !== v) dom.q2.value = v;\r\n  }\r\n\r\n  function resetConditionsOnly(){\r\n    state.q = \"\";\r\n    state.chip = \"\";   \/\/ \u2605A\u6848\uff1achip\u306f\u6761\u4ef6\u3068\u3057\u3066\u4f7f\u308f\u306a\u3044\r\n    state.product = \"\";\r\n    state.page = 1;\r\n    state.sort = \"new\";\r\n    state.per = 12;\r\n\r\n    syncInputs();\r\n    dom.sort.value = \"new\";\r\n    dom.per.value = \"12\";\r\n\r\n    renderTopChips();\r\n    renderProducts();\r\n    renderSuggest(false);\r\n    renderList();\r\n  }\r\n\r\n  \/* \u5171\u901a\uff1a\u6642\u9593\uff0b\u30ab\u30ed\u30ea\u30fc\uff08\u8868\u793a\u306f\u3053\u306e2\u3064\u3060\u3051\uff09 *\/\r\n  function timeKcalRow(r){\r\n    const time = (r.timeMin != null) ? `${r.timeMin}\u5206` : \"\u2014\";\r\n    const kcal = (r.kcal != null) ? `${r.kcal}kcal` : \"\u2014kcal\";\r\n    return el(\"div\", { class:\"listMeta\" }, [\r\n      el(\"span\", { class:\"m m--time\" }, [\r\n        el(\"span\", { class:\"ic ic--time\", aria:{ hidden:\"true\" } }, [\"\"]),\r\n        time\r\n      ]),\r\n      el(\"span\", { class:\"m m--kcal\" }, [\r\n        el(\"span\", { class:\"ic ic--kcal\", aria:{ hidden:\"true\" }, html: ICON.kcal }, []),\r\n        kcal\r\n      ])\r\n    ]);\r\n  }\r\n\r\n  function tagsRow(r){\r\n    const tags = (r.tags || []).filter(Boolean).slice(0, 3);\r\n    if (!tags.length) return el(\"div\", { class:\"tags\" }, []);\r\n    return el(\"div\", { class:\"tags\" }, tags.map(t => el(\"span\", { class:\"tag\" }, [`#${t}`])));\r\n  }\r\n\r\n  \/* \u65b0\u7740\u30ab\u30fc\u30c9\uff08\u67a0\u3042\u308a\uff09 *\/\r\n  const recipeCard = (r, opts={}) => el(\"article\", { class:\"card\" }, [\r\n    el(\"a\", { href:r.url || \"#\", class:\"thumb\" }, [\r\n      r.image ? imgEl(r.image, r.title || \"recipe\", opts.loading || \"lazy\") : \"\"\r\n    ]),\r\n    el(\"div\", { class:\"title\" }, [\r\n      el(\"a\", { href:r.url || \"#\" }, [r.title || \"Untitled\"])\r\n    ]),\r\n    el(\"div\", { class:\"stats\" }, [\r\n      el(\"span\", { class:\"pill pill--time\" }, [\r\n        el(\"span\", { class:\"ico ico--time\", aria:{ hidden:\"true\" } }, [\"\"]),\r\n        (r.timeMin != null ? `${r.timeMin}\u5206` : \"\u2014\")\r\n      ]),\r\n      el(\"span\", { class:\"pill pill--kcal\" }, [\r\n        el(\"span\", { class:\"ico ico--kcal\", aria:{ hidden:\"true\" }, html: ICON.kcal }, []),\r\n        (r.kcal != null ? `${r.kcal}kcal` : \"\u2014kcal\")\r\n      ])\r\n    ])\r\n  ]);\r\n\r\n  \/* \u4e00\u89a7\uff1a\u753b\u50cf\u5bc4\u305b\uff08\u67a0\u306a\u3057\uff09 *\/\r\n  const listItem = (r) => el(\"article\", { class:\"listItem\" }, [\r\n    el(\"a\", { href:r.url || \"#\", class:\"listThumb\" }, [\r\n      r.image ? imgEl(r.image, r.title || \"recipe\", \"lazy\") : \"\"\r\n    ]),\r\n    el(\"div\", { class:\"listTitle\" }, [\r\n      el(\"a\", { href:r.url || \"#\" }, [r.title || \"Untitled\"])\r\n    ]),\r\n    timeKcalRow(r),\r\n    tagsRow(r)\r\n  ]);\r\n\r\n  \/* \u7279\u96c6\uff1a\u5b9a\u756a\uff08\u6642\u9593\uff0b\u30ab\u30ed\u30ea\u30fc\u306e\u307f\uff09 *\/\r\n  const featureClassic = (r) => el(\"div\", { class:\"feature\" }, [\r\n    el(\"a\", { href:r.url || \"#\", class:\"thumb\" }, [ imgEl(r.image, r.title || \"classic\", \"lazy\") ]),\r\n    el(\"div\", {}, [\r\n      el(\"div\", { class:\"title\", role:\"heading\", \"aria-level\":\"3\" }, [\r\n        el(\"a\", { href:r.url || \"#\" }, [r.title || \"\"])\r\n      ]),\r\n      r.note ? el(\"p\", { class:\"sub\" }, [r.note]) : \"\",\r\n      el(\"div\", { class:\"stats\" }, [\r\n        el(\"span\", { class:\"pill pill--time\" }, [\r\n          el(\"span\", { class:\"ico ico--time\", aria:{ hidden:\"true\" } }, [\"\"]),\r\n          (r.timeMin != null ? `${r.timeMin}\u5206` : \"\u2014\")\r\n        ]),\r\n        el(\"span\", { class:\"pill pill--kcal\" }, [\r\n          el(\"span\", { class:\"ico ico--kcal\", aria:{ hidden:\"true\" }, html: ICON.kcal }, []),\r\n          (r.kcal != null ? `${r.kcal}kcal` : \"\u2014kcal\")\r\n        ])\r\n      ])\r\n    ])\r\n  ]);\r\n\r\n  \/* \u7279\u96c6\uff1a\u65ec\uff08\u6642\u9593\uff0b\u30ab\u30ed\u30ea\u30fc\u306e\u307f\uff09 *\/\r\n  const featureSeason = (r) => el(\"div\", { class:\"feature feature--season\" }, [\r\n    el(\"a\", { href:r.url || \"#\", class:\"thumb\" }, [\r\n      imgEl(r.image, r.title || \"season\", \"lazy\"),\r\n      r.badge ? el(\"div\", { class:\"seasonBadge\" }, [String(r.badge)]) : \"\"\r\n    ]),\r\n    el(\"div\", {}, [\r\n      el(\"div\", { class:\"title\", role:\"heading\", \"aria-level\":\"3\" }, [\r\n        el(\"a\", { href:r.url || \"#\" }, [r.title || \"\"])\r\n      ]),\r\n      el(\"div\", { class:\"stats\" }, [\r\n        el(\"span\", { class:\"pill pill--time\" }, [\r\n          el(\"span\", { class:\"ico ico--time\", aria:{ hidden:\"true\" } }, [\"\"]),\r\n          (r.timeMin != null ? `${r.timeMin}\u5206` : \"\u2014\")\r\n        ]),\r\n        el(\"span\", { class:\"pill pill--kcal\" }, [\r\n          el(\"span\", { class:\"ico ico--kcal\", aria:{ hidden:\"true\" }, html: ICON.kcal }, []),\r\n          (r.kcal != null ? `${r.kcal}kcal` : \"\u2014kcal\")\r\n        ])\r\n      ])\r\n    ])\r\n  ]);\r\n\r\n  \/* =========================================================\r\n     \u2705 A\u6848\uff1a\u4eba\u6c17\u30ad\u30fc\u30ef\u30fc\u30c9(chip)\u306f\u300c\u691c\u7d22\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u300d\u306b\u3059\u308b\r\n     - chip\u306e\u62bc\u4e0b\u72b6\u614b = state.q \u3068\u4e00\u81f4\r\n     - chip\u3092\u62bc\u3057\u305f\u3089 state.q \u3092\u7f6e\u304d\u63db\u3048\uff08AND\u306b\u306a\u3089\u306a\u3044\uff09\r\n  ========================================================= *\/\r\n  function renderTopChips(){\r\n    dom.chipsTop.innerHTML = \"\";\r\n    (DATA.popularKeywords || []).forEach(k => {\r\n      const pressed = (state.q === k);\r\n\r\n      dom.chipsTop.appendChild(el(\"button\", {\r\n        class:\"chip\",\r\n        type:\"button\",\r\n        aria:{ pressed: pressed ? \"true\":\"false\" },\r\n        onClick: ()=> {\r\n          \/\/ \u2705 chip\u306f\u691c\u7d22\u5165\u529b\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff1a\u62bc\u3057\u305f\u8a9e\u3067\u691c\u7d22\u8a9e\u3092\u7f6e\u304d\u63db\u3048\r\n          state.q = (state.q === k) ? \"\" : k;\r\n\r\n          \/\/ \u2705 \u65e7chip\u6761\u4ef6\u306f\u4f7f\u308f\u306a\u3044\uff08AND\u3067\u5206\u304b\u308a\u306b\u304f\u304f\u306a\u308b\u305f\u3081\uff09\r\n          state.chip = \"\";\r\n\r\n          state.page = 1;\r\n          syncInputs();\r\n\r\n          renderTopChips();\r\n          renderProducts();\r\n          renderSuggest(true);\r\n          renderList();\r\n\r\n          $(\"#listSec\")?.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n        }\r\n      }, [`#${k}`]));\r\n    });\r\n  }\r\n\r\n  function syncTopChipPressedUI(){\r\n    [...dom.chipsTop.children].forEach(btn => {\r\n      const key = (btn.textContent || \"\").replace(\/^#\/, \"\");\r\n      btn.setAttribute(\"aria-pressed\", (key === state.q) ? \"true\" : \"false\");\r\n    });\r\n  }\r\n\r\n  function renderProducts(){\r\n    dom.products.innerHTML = \"\";\r\n    (DATA.products || []).forEach(p => {\r\n      const pressed = state.product === p.key;\r\n\r\n      dom.products.appendChild(el(\"button\", {\r\n        class:\"product\",\r\n        type:\"button\",\r\n        aria:{ pressed: pressed ? \"true\":\"false\" },\r\n        onClick: ()=> {\r\n          state.product = (state.product === p.key) ? \"\" : p.key;\r\n          state.page = 1;\r\n          renderProducts();\r\n          renderTopChips();\r\n          renderSuggest(true);\r\n          renderList();\r\n          $(\"#listSec\")?.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n        }\r\n      }, [\r\n        el(\"span\", { class:\"productIco\", aria:{ hidden:\"true\" } }, [\r\n          p.icon\r\n            ? imgEl(p.icon, `${p.name}\u306e\u30a2\u30a4\u30b3\u30f3`, \"lazy\")\r\n            : el(\"span\", {}, [\" \"])\r\n        ]),\r\n        el(\"span\", { class:\"productName\" }, [p.name])\r\n      ]));\r\n    });\r\n  }\r\n\r\n  function renderNew(){\r\n    dom.newRail.innerHTML = \"\";\r\n    (DATA.newRecipes || []).slice(0, 3).forEach((r, idx) => {\r\n      dom.newRail.appendChild(recipeCard(r, { loading: idx === 0 ? \"eager\" : \"lazy\" }));\r\n    });\r\n  }\r\n\r\n  \/* ===== Slider ===== *\/\r\n  let slIndex = 0;\r\n  let slTimer = null;\r\n  let autoEnabled = true;\r\n\r\n  function setSlide(i){\r\n    const items = DATA.recommends || [];\r\n    if (!items.length) return;\r\n    slIndex = (i + items.length) % items.length;\r\n    dom.slTrack.style.transform = `translateX(${-100 * slIndex}%)`;\r\n    [...dom.slDots.children].forEach((d, idx) => d.setAttribute(\"aria-pressed\", idx === slIndex ? \"true\" : \"false\"));\r\n  }\r\n  function stopAuto(){ if (slTimer) clearInterval(slTimer); slTimer = null; }\r\n  function stopAutoForever(){ autoEnabled = false; stopAuto(); }\r\n  function startAuto(){ if (!autoEnabled) return; stopAuto(); slTimer = setInterval(()=> setSlide(slIndex+1), 5000); }\r\n\r\n  function renderSlider(){\r\n    const items = DATA.recommends || [];\r\n    dom.slTrack.innerHTML = \"\";\r\n    dom.slDots.innerHTML = \"\";\r\n\r\n    items.forEach((s, idx) => {\r\n      dom.slTrack.appendChild(el(\"a\", { class:\"slide\", href: s.url || \"#\" }, [\r\n        s.image ? imgEl(s.image, \"recommend\", idx === 0 ? \"eager\" : \"lazy\") : \"\"\r\n      ]));\r\n\r\n      dom.slDots.appendChild(el(\"button\", {\r\n        class:\"dot\",\r\n        type:\"button\",\r\n        aria:{ pressed: idx===0 ? \"true\":\"false\" },\r\n        onClick: ()=>{ stopAutoForever(); setSlide(idx); }\r\n      }));\r\n    });\r\n\r\n    dom.slPrev.addEventListener(\"click\", ()=>{ stopAutoForever(); setSlide(slIndex-1); });\r\n    dom.slNext.addEventListener(\"click\", ()=>{ stopAutoForever(); setSlide(slIndex+1); });\r\n\r\n    let startX = null;\r\n    dom.slViewport.addEventListener(\"pointerdown\", (e)=>{ startX = e.clientX; });\r\n    dom.slViewport.addEventListener(\"pointerup\", (e)=>{\r\n      if (startX == null) return;\r\n      const dx = e.clientX - startX;\r\n      startX = null;\r\n      if (Math.abs(dx) < 40) return;\r\n      stopAutoForever();\r\n      dx < 0 ? setSlide(slIndex+1) : setSlide(slIndex-1);\r\n    });\r\n\r\n    setSlide(0);\r\n    startAuto();\r\n  }\r\n\r\n  function renderFeatured(){\r\n    dom.classicSlot.innerHTML = \"\";\r\n    dom.seasonSlot.innerHTML = \"\";\r\n    if (DATA.classic) dom.classicSlot.appendChild(featureClassic(DATA.classic));\r\n    if (DATA.season) dom.seasonSlot.appendChild(featureSeason(DATA.season));\r\n  }\r\n\r\n  function getSuggestItems(){\r\n    const base = [].concat(DATA.popularKeywords || []).concat((DATA.products || []).map(p => p.key));\r\n    const uniq = Array.from(new Set(base.filter(Boolean)));\r\n\r\n    const q = norm(dom.q2.value);\r\n    if (!q) return uniq.slice(0, 6);\r\n\r\n    const hits = uniq.filter(x => norm(x).includes(q));\r\n    return hits.slice(0, 8);\r\n  }\r\n\r\n  function renderSuggest(forceShow){\r\n    if (!dom.suggest || !dom.suggestList) return;\r\n\r\n    const hasFocus = document.activeElement === dom.q2;\r\n    const q = (dom.q2.value || \"\").trim();\r\n    const items = getSuggestItems();\r\n    const shouldShow = !!forceShow || (hasFocus && (q.length > 0 || items.length > 0));\r\n\r\n    if (!shouldShow || items.length === 0){\r\n      dom.suggest.hidden = true;\r\n      dom.suggestList.innerHTML = \"\";\r\n      return;\r\n    }\r\n\r\n    dom.suggest.hidden = false;\r\n    dom.suggestList.innerHTML = \"\";\r\n    items.forEach(word => {\r\n      dom.suggestList.appendChild(el(\"button\", {\r\n        class:\"sug\",\r\n        type:\"button\",\r\n        aria:{ label: `\u5019\u88dc\uff1a${word}` },\r\n        onClick: ()=>{\r\n          state.q = word;\r\n          state.chip = \"\"; \/\/ \u2705 A\u6848\uff1a\u5165\u529b\u304c\u6761\u4ef6\u306e\u4e3b\u5f79\r\n          state.page = 1;\r\n          syncInputs();\r\n          renderTopChips();\r\n          renderList();\r\n        }\r\n      }, [word]));\r\n    });\r\n  }\r\n\r\n  function getFiltered(){\r\n    const q = normalizeTerm(state.q);\r\n    let list = (DATA.recipes || []).slice();\r\n\r\nif (state.product){\r\n  const np = normalizeTerm(state.product);\r\n  list = list.filter(r => {\r\n    const keys = Array.isArray(r.productKeys) ? r.productKeys : [];\r\n    return keys.map(normalizeTerm).includes(np);\r\n  });\r\n}\r\n\r\n\r\n\r\n    \/\/ \u2605A\u6848\uff1achip\u306f\u6761\u4ef6\u3068\u3057\u3066\u4f7f\u308f\u306a\u3044\u304c\u3001\u4fdd\u967a\u3067\u6b8b\u3057\u3066\u304a\u304f\uff08\u901a\u5e38\u306f\u7a7a\uff09\r\n    if (state.chip){\r\n      const chip = normalizeTerm(state.chip);\r\n      list = list.filter(r => {\r\n        const tags = (r.tags || []).map(normalizeTerm);\r\n        return tags.includes(chip) || normalizeTerm(r.title).includes(chip);\r\n      });\r\n    }\r\n\r\n    if (q){\r\n      \/\/ \u30b9\u30da\u30fc\u30b9\u3092\u542b\u3080\u5834\u5408\u306f \u201c\u5c55\u958b\u3057\u306a\u3044\u201d\uff08\u66b4\u767a\u9632\u6b62\uff09\r\n      const hasSpace = \/\\s\/.test(state.q || \"\");\r\n      const terms = hasSpace\r\n        ? [normalizeTerm(state.q)]\r\n        : expandQueryOneHop(state.q, SYN1);\r\n\r\n      list = list.filter(r => {\r\nconst hay = [\r\n  r.title,\r\n  (r.tags||[]).join(\" \"),\r\n  (r.keywords||[]).join(\" \"),\r\n  \/\/ \u2705 productKeys \u3092\u691c\u7d22\u5bfe\u8c61\u3078\r\n  (Array.isArray(r.productKeys) ? r.productKeys : []).join(\" \"),\r\n  String(r.timeMin||\"\"),\r\n  String(r.kcal||\"\")\r\n].map(normalizeTerm).join(\" \");\r\n\r\n\r\n        return terms.some(t => t && hay.includes(t));\r\n      });\r\n    }\r\n\r\n    if (state.sort === \"new\") list.sort((a,b) => (b.updated||\"\").localeCompare(a.updated||\"\"));\r\n    if (state.sort === \"popular\") list.sort((a,b) => (b.popularScore||0) - (a.popularScore||0));\r\n    if (state.sort === \"timeAsc\") list.sort((a,b) => (a.timeMin||9999) - (b.timeMin||9999));\r\n\r\n    return list;\r\n  }\r\n\r\n  function paginate(list){\r\n    const per = Math.max(1, Number(state.per) || 12);\r\n    const total = list.length;\r\n    const pages = Math.max(1, Math.ceil(total \/ per));\r\n    const page = Math.min(Math.max(1, state.page), pages);\r\n    const start = (page-1)*per;\r\n    return { total, pages, page, slice: list.slice(start, start+per) };\r\n  }\r\n\r\n  function renderList(){\r\n    syncTopChipPressedUI();\r\n    syncInputs();\r\n\r\n    const filtered = getFiltered();\r\n    const { total, pages, page, slice } = paginate(filtered);\r\n    state.page = page;\r\n\r\n    const cond = [\r\n      state.product ? `\u5546\u54c1\uff1a${state.product}` : \"\",\r\n      state.chip ? `#${state.chip}` : \"\",\r\n      state.q ? `\u691c\u7d22\uff1a${state.q}` : \"\"\r\n    ].filter(Boolean).join(\" \/ \");\r\n\r\n    dom.meta.textContent = `${total}\u4ef6${cond ? \"\uff08\" + cond + \"\uff09\" : \"\"}`;\r\n\r\n    dom.grid.innerHTML = \"\";\r\n    slice.forEach(r => dom.grid.appendChild(listItem(r)));\r\n\r\n    dom.empty.hidden = total !== 0;\r\n\r\n    dom.pageInfo.textContent = `${page} \/ ${pages}`;\r\n    dom.prev.disabled = page <= 1;\r\n    dom.next.disabled = page >= pages;\r\n\r\n    if (dom.heroResult) dom.heroResult.innerHTML = \"\";\r\n  }\r\n\r\n  function doSearchFrom(value, scrollToList){\r\n    state.q = value || \"\";\r\n    state.chip = \"\"; \/\/ \u2705 A\u6848\uff1a\u5165\u529b\u691c\u7d22\u304c\u4e3b\u5f79\u306a\u306e\u3067chip\u89e3\u9664\r\n    state.page = 1;\r\n    syncInputs();\r\n    renderTopChips();\r\n    renderList();\r\n    renderSuggest(true);\r\n    if (scrollToList) $(\"#listSec\")?.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n  }\r\n\r\n  dom.qBtn.addEventListener(\"click\", ()=> doSearchFrom(dom.q.value, true));\r\n  dom.q.addEventListener(\"keydown\", (e)=>{ if (e.key === \"Enter\") doSearchFrom(dom.q.value, true); });\r\n\r\n  dom.qBtn2.addEventListener(\"click\", ()=> doSearchFrom(dom.q2.value, false));\r\n  dom.q2.addEventListener(\"keydown\", (e)=>{ if (e.key === \"Enter\") doSearchFrom(dom.q2.value, false); });\r\n\r\n  dom.q2.addEventListener(\"focus\", ()=> renderSuggest(true));\r\n  dom.q2.addEventListener(\"blur\", ()=>{ setTimeout(()=> renderSuggest(false), 120); });\r\n  dom.q2.addEventListener(\"input\", ()=>{ renderSuggest(true); });\r\n\r\n  dom.resetCondTop.addEventListener(\"click\", ()=> resetConditionsOnly());\r\n\r\n  dom.sort.addEventListener(\"change\", ()=>{ state.sort = dom.sort.value; state.page = 1; renderList(); });\r\n  dom.per.addEventListener(\"change\", ()=>{ state.per = dom.per.value; state.page = 1; renderList(); });\r\n  dom.clear.addEventListener(\"click\", ()=> resetConditionsOnly());\r\n\r\n  dom.prev.addEventListener(\"click\", ()=>{ state.page = Math.max(1, state.page - 1); renderList(); });\r\n  dom.next.addEventListener(\"click\", ()=>{ state.page = state.page + 1; renderList(); });\r\n\r\n  dom.sort.value = \"new\";\r\n  dom.per.value = \"12\";\r\n\r\n  renderTopChips();\r\n  renderNew();\r\n  renderSlider();     \/* \u30bb\u30af\u30b7\u30e7\u30f3\u306f\u975e\u8868\u793a\u3060\u304c\u3001\u52d5\u4f5c\u3057\u3066\u3082\u554f\u984c\u306a\u3057 *\/\r\n  renderProducts();\r\n  renderFeatured();\r\n  renderSuggest(false);\r\n  renderList();\r\n})();\r\n<\/script>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 \u691c\u7d22 \u6761\u4ef6\u30ea\u30bb\u30c3\u30c8 \u3044\u307e\u4eba\u6c17\u306e\u98df\u6750\uff0f\u30ad\u30fc\u30ef\u30fc\u30c9 \u65b0\u7740\u30ec\u30b7\u30d4 \u304a\u3059\u3059\u3081 \u2039 \u203a \u5546\u54c1\u304b [&hellip;]","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2258","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/pages\/2258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/comments?post=2258"}],"version-history":[{"count":119,"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/pages\/2258\/revisions"}],"predecessor-version":[{"id":4257,"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/pages\/2258\/revisions\/4257"}],"wp:attachment":[{"href":"https:\/\/plumlady.co.jp\/apps\/note\/wp-json\/wp\/v2\/media?parent=2258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}