{"id":6572,"date":"2026-09-20T11:27:33","date_gmt":"2026-09-20T02:27:33","guid":{"rendered":"https:\/\/agriture.jp\/?page_id=6572"},"modified":"2026-09-28T20:52:39","modified_gmt":"2026-09-28T11:52:39","slug":"novelty-form","status":"publish","type":"page","link":"https:\/\/agriture.jp\/en\/novelty-form\/","title":{"rendered":"\u30ce\u30d9\u30eb\u30c6\u30a3\u30fc\u30d5\u30a9\u30fc\u30e0"},"content":{"rendered":"\n<style>\nbody:has(#agriture-form-page) #top_title_area,\nbody:has(#agriture-form-page) #breadcrumb,\nbody:has(#agriture-form-page) #sidebar{display:none!important}\nbody:has(#agriture-form-page) #content{max-width:none!important;width:100%!important}\nbody:has(#agriture-form-page) #main_content{width:100%!important;max-width:none!important}\nbody:has(#agriture-form-page) .l-mainContent__inner{padding-top:32px}\n<\/style>\n<div id=\"agriture-form-page\"><\/div>\n\n\n<div class=\"p-blogParts post_content\" data-partsID=\"7185\">\n<style>\n    #agriture-novelty-estimate {\n      --green: #1f4d33;\n      --green-light: #e8f0ea;\n      --green-mid: #cfe3d6;\n      --orange: #c8791f;\n      --border: #dcdfd9;\n      --bg: #F5F6F4;\n      --text: #222;\n      --muted: #6b7267;\n    }\n\n    #agriture-novelty-estimate * { box-sizing: border-box; }\n\n    #agriture-novelty-estimate .agriture-body {\n      font-family: \"Hiragino Sans\", \"Yu Gothic\", sans-serif;\n      background: var(--bg);\n      color: var(--text);\n      margin: 0; padding: 0;\n      font-size: 16px; line-height: normal; letter-spacing: normal; text-align: left;\n    }\n\n    #agriture-novelty-estimate div,\n    #agriture-novelty-estimate span,\n    #agriture-novelty-estimate p,\n    #agriture-novelty-estimate label,\n    #agriture-novelty-estimate button,\n    #agriture-novelty-estimate select,\n    #agriture-novelty-estimate input,\n    #agriture-novelty-estimate textarea,\n    #agriture-novelty-estimate img {\n      margin: 0; padding: 0; border: 0; background: none; box-shadow: none;\n      font-family: inherit; font-size: inherit; line-height: inherit; letter-spacing: inherit;\n      color: inherit; text-transform: none; max-width: 100%;\n    }\n\n    #agriture-novelty-estimate button { -webkit-appearance: none; appearance: none; width: auto; min-width: 0; text-shadow: none; text-decoration: none; border-radius: 0; }\n    #agriture-novelty-estimate img { height: auto; display: inline-block; vertical-align: middle; }\n\n    #agriture-novelty-estimate .wrap { max-width: 760px; margin: 0 auto; }\n\n    #agriture-novelty-estimate .h1-style { font-size: 25px; color: var(--green); margin-bottom: 6px; font-weight: bold; line-height: 1.5; }\n    #agriture-novelty-estimate .sub { color: var(--muted); font-size: 15px; margin-bottom: 28px; line-height: 1.7; }\n\n    #agriture-novelty-estimate .step { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 28px; margin-bottom: 20px; display: none; }\n    #agriture-novelty-estimate .step.active { display: block; }\n    #agriture-novelty-estimate .step .h2-style { font-size: 18px; color: var(--green); margin: 0 0 18px; border-left: 4px solid var(--orange); padding-left: 12px; line-height: 1.5; font-weight: bold; }\n    #agriture-novelty-estimate .step-intro { font-size: 15px; color: var(--muted); line-height: 1.8; margin: -8px 0 20px; background: var(--green-light); border-radius: 10px; padding: 14px 16px; }\n\n    #agriture-novelty-estimate .options { display: flex; flex-direction: column; gap: 12px; }\n    #agriture-novelty-estimate .opt { border: 1px solid var(--border); border-radius: 10px; padding: 18px 20px; cursor: pointer; transition: .15s; background: #fff; display: flex; justify-content: space-between; align-items: center; gap: 12px; }\n    #agriture-novelty-estimate .opt:hover { border-color: var(--green); }\n    #agriture-novelty-estimate .opt.selected { border-color: var(--green); background: var(--green-light); }\n    #agriture-novelty-estimate .opt .title { font-weight: bold; font-size: 17px; }\n    #agriture-novelty-estimate .opt .desc { font-size: 14px; color: var(--muted); margin-top: 4px; }\n    #agriture-novelty-estimate .opt .opt-fee { flex: 0 0 auto; background: var(--green-light); color: var(--green); font-weight: bold; font-size: 14px; border-radius: 999px; padding: 8px 16px; white-space: nowrap; }\n\n    #agriture-novelty-estimate label { display: block; font-size: 15px; margin: 18px 0 6px; color: var(--text); font-weight: bold; }\n    #agriture-novelty-estimate .field-note { font-size: 13.5px; color: var(--muted); line-height: 1.7; margin: -2px 0 8px; }\n\n    #agriture-novelty-estimate .package-preview { display: flex; gap: 16px; align-items: center; background: var(--green-light); border: 1px solid var(--green-mid); border-radius: 10px; padding: 16px; margin: 20px 0; }\n    #agriture-novelty-estimate .package-preview img { width: 110px; height: 110px; object-fit: contain; background: #fff; border-radius: 8px; flex: 0 0 auto; border: 1px solid var(--border); padding: 4px; }\n    #agriture-novelty-estimate .package-preview-text { font-size: 13px; color: var(--text); line-height: 1.7; flex: 1 1 auto; min-width: 0; }\n    #agriture-novelty-estimate .package-preview-text .pp-title { font-weight: bold; color: var(--green); margin-bottom: 4px; font-size: 14px; }\n    #agriture-novelty-estimate .package-preview-text .pp-desc { margin-bottom: 2px; }\n    #agriture-novelty-estimate .package-preview-text .pp-pending { font-size: 12.5px; color: var(--muted); margin-top: 6px; }\n    #agriture-novelty-estimate .package-preview-text .pp-badge { display: inline-block; background: var(--green); color: #fff; font-size: 11px; font-weight: bold; border-radius: 999px; padding: 3px 10px; margin-bottom: 6px; letter-spacing: .2px; }\n    #agriture-novelty-estimate .package-preview-text .pp-spec { background: #fff; border: 1px solid var(--green-mid); border-radius: 10px; padding: 12px 14px; margin-top: 10px; }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-row+.pp-spec-row { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--border); }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-label { flex: 0 0 auto; font-size: 12px; font-weight: bold; color: var(--muted); }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-value { text-align: right; font-size: 13px; color: var(--text); }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-value.price { font-size: 22px; font-weight: bold; color: var(--green); line-height: 1.2; letter-spacing: .3px; }\n    #agriture-novelty-estimate .package-preview-text .pp-spec-value.price .unit { font-size: 13px; margin-left: 2px; }\n\n    #agriture-novelty-estimate .weight-calc { background: var(--green-light); border-radius: 8px; padding: 10px 14px; font-size: 13px; color: var(--green); margin: 6px 0 4px; font-weight: bold; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 4px; }\n    #agriture-novelty-estimate .weight-calc .wc-formula { font-weight: normal; color: var(--text); }\n\n    #agriture-novelty-estimate select,\n    #agriture-novelty-estimate input[type=number],\n    #agriture-novelty-estimate input[type=text],\n    #agriture-novelty-estimate input[type=email],\n    #agriture-novelty-estimate input[type=url],\n    #agriture-novelty-estimate textarea {\n      width: 100%; padding: 14px 16px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px; font-family: inherit;\n    }\n    #agriture-novelty-estimate textarea { resize: vertical; min-height: 90px; }\n    #agriture-novelty-estimate select:focus, #agriture-novelty-estimate input:focus, #agriture-novelty-estimate textarea:focus { outline: none; border-color: var(--green); }\n\n    #agriture-novelty-estimate .item-row { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }\n    #agriture-novelty-estimate .item-row select { flex: 2; }\n    #agriture-novelty-estimate .item-row input { flex: 1; }\n    #agriture-novelty-estimate .item-row button { flex: 0 0 auto; background: #eee; border: none; border-radius: 8px; padding: 12px 14px; cursor: pointer; font-size: 14px; }\n\n    #agriture-novelty-estimate .ratio-meter { margin: 4px 0 20px; }\n    #agriture-novelty-estimate .ratio-meter-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }\n    #agriture-novelty-estimate .ratio-meter-label { font-size: 14px; font-weight: bold; color: var(--text); }\n    #agriture-novelty-estimate .ratio-meter-value { font-size: 22px; font-weight: bold; }\n    #agriture-novelty-estimate .ratio-meter-value.ok { color: var(--green); }\n    #agriture-novelty-estimate .ratio-meter-value.ng { color: #b23; }\n    #agriture-novelty-estimate .ratio-meter-track { width: 100%; height: 16px; background: #eee; border-radius: 999px; overflow: hidden; }\n    #agriture-novelty-estimate .ratio-meter-bar { height: 100%; border-radius: 999px; background: #b23; transition: width .2s, background .2s; }\n    #agriture-novelty-estimate .ratio-meter-bar.ok { background: var(--green); }\n    #agriture-novelty-estimate .ratio-meter-warning { font-size: 13px; margin-top: 8px; font-weight: bold; min-height: 18px; color: #b23; }\n    #agriture-novelty-estimate .ratio-meter-warning.ok { color: var(--green); }\n    #agriture-novelty-estimate .ratio-meter-warning.idle { color: var(--muted); font-weight: normal; }\n\n    #agriture-novelty-estimate .btns { display: flex; justify-content: space-between; margin-top: 24px; gap: 10px; }\n    #agriture-novelty-estimate button.nav { background: var(--green); color: #fff; border: none; border-radius: 8px; padding: 10px 20px; font-size: 14px; cursor: pointer; }\n    #agriture-novelty-estimate button.nav.secondary { background: #eee; color: #333; }\n    #agriture-novelty-estimate button.nav:disabled { opacity: .4; cursor: not-allowed; }\n\n    #agriture-novelty-estimate .add-row-btn { background: var(--green-light); color: var(--green); border: 1px dashed var(--green); border-radius: 8px; padding: 10px 16px; font-size: 13px; cursor: pointer; margin-top: 6px; }\n\n    #agriture-novelty-estimate .result { background: var(--green); color: #fff; border-radius: 12px; padding: 24px; }\n    #agriture-novelty-estimate .result .h2-style { color: #fff; border-left: 4px solid var(--orange); padding-left: 10px; font-size: 16px; font-weight: bold; }\n    #agriture-novelty-estimate .price-main { font-size: 34px; font-weight: bold; margin: 0 0 14px; letter-spacing: .5px; }\n    #agriture-novelty-estimate .breakdown { background: rgba(255,255,255,.08); border-radius: 10px; padding: 16px; font-size: 14px; line-height: 2; margin-bottom: 14px; }\n    #agriture-novelty-estimate .breakdown .line { display: flex; justify-content: space-between; padding: 3px 0; gap: 12px; }\n    #agriture-novelty-estimate .breakdown .line span:last-child { text-align: right; word-break: break-word; overflow-wrap: anywhere; }\n    #agriture-novelty-estimate .breakdown .line.total { border-top: 2px solid rgba(255,255,255,.4); margin-top: 10px; padding-top: 12px; font-weight: bold; font-size: 18px; }\n    #agriture-novelty-estimate .breakdown .line.sub-total { border-top: 1px dashed rgba(255,255,255,.3); margin-top: 6px; padding-top: 8px; font-weight: bold; }\n    #agriture-novelty-estimate .breakdown .product-title { font-weight: bold; font-size: 15px; margin: 14px 0 6px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.25); }\n    #agriture-novelty-estimate .breakdown .product-title:first-child { margin-top: 0; padding-top: 0; border-top: none; }\n    #agriture-novelty-estimate .notice { background: rgba(255,255,255,.1); border-radius: 8px; padding: 12px; font-size: 12px; margin-top: 14px; }\n    #agriture-novelty-estimate .notice.light { background: #fdf6ec; color: var(--orange); font-size: 13px; line-height: 1.8; }\n    #agriture-novelty-estimate .badge { display: inline-block; background: var(--orange); color: #fff; font-size: 11px; border-radius: 4px; padding: 2px 8px; margin-bottom: 8px; }\n\n    #agriture-novelty-estimate .contact-form { background: rgba(255,255,255,.08); border-radius: 10px; padding: 18px; margin-top: 16px; }\n    #agriture-novelty-estimate .contact-title { font-size: 13px; font-weight: bold; margin-bottom: 6px; }\n    #agriture-novelty-estimate .c-label { display: block; font-size: 13px; margin: 12px 0 4px; color: #fff; font-weight: bold; }\n    #agriture-novelty-estimate .contact-form input[type=text], #agriture-novelty-estimate .contact-form input[type=email] { width: 100%; padding: 12px 14px; border: 1px solid rgba(255,255,255,.4); border-radius: 8px; font-size: 15px; background: rgba(255,255,255,.95); color: var(--text); }\n    #agriture-novelty-estimate .contact-form.light { background: var(--green-light); }\n    #agriture-novelty-estimate .contact-form.light .contact-title { color: var(--green); font-size: 15px; }\n    #agriture-novelty-estimate .contact-form.light .c-label { color: var(--text); }\n    #agriture-novelty-estimate .contact-form.light input[type=text], #agriture-novelty-estimate .contact-form.light input[type=email] { border: 1px solid var(--border); background: #fff; }\n\n    #agriture-novelty-estimate .restart { margin-top: 20px; display: flex; gap: 10px; flex-wrap: wrap; }\n    #agriture-novelty-estimate .result .restart button.nav:not(.secondary) { background: var(--orange); color: #fff; }\n    #agriture-novelty-estimate .cta-btn { display: block; width: 100%; margin-top: 24px; padding: 20px 24px; background: var(--orange); color: #fff; border: none; border-radius: 12px; font-size: 18px; font-weight: bold; letter-spacing: .03em; cursor: pointer; box-shadow: 0 6px 18px rgba(0,0,0,.25); transition: .15s; }\n    #agriture-novelty-estimate .cta-btn:hover { background: #b06a19; }\n    #agriture-novelty-estimate .cta-btn:disabled { opacity: .6; cursor: not-allowed; }\n\n    #agriture-novelty-estimate .option-category { font-size: 16px; font-weight: bold; color: var(--green); margin: 44px 0 8px; padding-bottom: 10px; border-bottom: 2px solid var(--green-mid); }\n    #agriture-novelty-estimate .option-category:first-of-type { margin-top: 8px; }\n    #agriture-novelty-estimate .toggle-field { margin: 20px 0; }\n    #agriture-novelty-estimate .toggle-field .tf-label { font-size: 15px; font-weight: bold; color: var(--text); margin-bottom: 4px; }\n    #agriture-novelty-estimate .toggle-field .tf-desc { font-size: 13px; color: var(--muted); line-height: 1.7; margin-bottom: 10px; }\n    #agriture-novelty-estimate .toggle-btns { display: flex; gap: 10px; }\n    #agriture-novelty-estimate .toggle-btns.wrap { flex-wrap: wrap; }\n    #agriture-novelty-estimate .toggle-btns.wrap .toggle-btn { flex: 1 1 calc(50% - 5px); min-width: 120px; }\n    #agriture-novelty-estimate .toggle-btn { flex: 1; border: 2px solid var(--border); border-radius: 999px; background: #fff; padding: 16px 14px; font-size: 15px; font-weight: bold; color: var(--text); cursor: pointer; transition: .15s; text-align: center; }\n    #agriture-novelty-estimate .toggle-btn:hover { border-color: var(--green); }\n    #agriture-novelty-estimate .toggle-btn.on { border-color: var(--green); background: var(--green-mid); color: var(--green); }\n\n    #agriture-novelty-estimate .notice-important { background: var(--green-light); border: 2px solid var(--green); border-left: 8px solid var(--green); border-radius: 10px; padding: 16px 18px; margin-top: 18px; }\n    #agriture-novelty-estimate .notice-important .ni-title { color: var(--green); font-size: 16px; font-weight: 800; margin-bottom: 8px; }\n    #agriture-novelty-estimate .notice-important .ni-body { color: #22332a; font-size: 14px; line-height: 1.8; }\n    #agriture-novelty-estimate .notice-important .ni-body strong { color: var(--green); font-weight: 800; }\n\n    #agriture-novelty-estimate .reg-group-title { font-size: 16px; font-weight: bold; color: var(--green); margin: 24px 0 10px; }\n    #agriture-novelty-estimate .reg-group-title:first-child { margin-top: 0; }\n    #agriture-novelty-estimate .step .h2-style.section-gap { margin-top: 48px; }\n    #agriture-novelty-estimate .reg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\n    #agriture-novelty-estimate .reg-btn { border: 1px solid var(--border); border-radius: 10px; padding: 16px; background: #fff; cursor: pointer; text-align: left; transition: .15s; }\n    #agriture-novelty-estimate .reg-btn:hover { border-color: var(--green); background: var(--green-light); }\n    #agriture-novelty-estimate .reg-btn .rb-title { font-weight: bold; font-size: 16px; color: var(--text); }\n    #agriture-novelty-estimate .reg-btn .rb-desc { font-size: 13.5px; color: var(--muted); margin-top: 4px; line-height: 1.6; }\n    #agriture-novelty-estimate .reg-btn.custom { border-style: dashed; }\n    #agriture-novelty-estimate .reg-btn.custom .rb-title { color: var(--orange); }\n\n    #agriture-novelty-estimate .cart-box { margin-bottom: 24px; }\n    #agriture-novelty-estimate .cart-empty { font-size: 13px; color: var(--muted); background: var(--green-light); border-radius: 10px; padding: 14px 16px; }\n    #agriture-novelty-estimate .cart-item { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; margin-bottom: 10px; background: #fdfdfb; }\n    #agriture-novelty-estimate .cart-item .ci-badge { display: inline-block; background: var(--green); color: #fff; font-size: 10.5px; border-radius: 4px; padding: 2px 8px; margin-bottom: 6px; }\n    #agriture-novelty-estimate .cart-item .ci-name { font-weight: bold; font-size: 14.5px; }\n    #agriture-novelty-estimate .cart-item .ci-sub { font-size: 12.5px; color: var(--muted); margin-top: 3px; }\n    #agriture-novelty-estimate .cart-item .ci-price { font-size: 15px; font-weight: bold; color: var(--green); margin-top: 6px; }\n    #agriture-novelty-estimate .cart-item .ci-remove { flex: 0 0 auto; background: #eee; border: none; border-radius: 8px; padding: 8px 12px; font-size: 12px; cursor: pointer; color: #b23; }\n    #agriture-novelty-estimate .cart-limit-note { font-size: 12.5px; color: var(--orange); margin-top: 10px; }\n\n    #agriture-novelty-estimate .pkg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; margin: 4px 0 8px; }\n    #agriture-novelty-estimate .pkg-card { position: relative; border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px; cursor: pointer; background: #fff; transition: .15s; }\n    #agriture-novelty-estimate .pkg-card:hover { border-color: var(--green); }\n    #agriture-novelty-estimate .pkg-card.selected { border-color: var(--green); background: var(--green-light); box-shadow: 0 0 0 1px var(--green) inset; }\n    #agriture-novelty-estimate .pkg-card .pc-image { width: 100%; aspect-ratio: 4 \/ 3; object-fit: contain; background: var(--green-light); border-radius: 8px; margin-bottom: 10px; display: block; }\n    #agriture-novelty-estimate .pkg-card .pc-name { font-weight: bold; font-size: 16px; line-height: 1.4; }\n    #agriture-novelty-estimate .pkg-card .pc-size { font-size: 13.5px; color: var(--muted); margin: 5px 0 9px; }\n    #agriture-novelty-estimate .pkg-card .pc-cap { font-size: 13.5px; color: var(--green); font-weight: bold; line-height: 1.6; }\n    #agriture-novelty-estimate .pkg-card .pc-price { display: inline-block; background: var(--green-light); font-size: 14.5px; font-weight: bold; color: var(--green); border-radius: 999px; padding: 4px 14px; margin-bottom: 8px; }\n    #agriture-novelty-estimate .pkg-card .pc-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }\n    #agriture-novelty-estimate .pkg-card .pc-tag { background: var(--green-mid); color: var(--green); font-size: 12.5px; font-weight: bold; border-radius: 6px; padding: 3px 9px; }\n    #agriture-novelty-estimate .packing-fields { margin-top: 18px; }\n    #agriture-novelty-estimate .pkg-filter-note { background: var(--green-light); color: var(--green); border-radius: 8px; padding: 10px 14px; margin: 8px 0 12px; font-size: 13.5px; font-weight: bold; }\n    #agriture-novelty-estimate .pkg-empty { color: var(--orange); border: 1px dashed var(--orange); border-radius: 10px; padding: 14px 16px; font-size: 14px; }\n\n    #agriture-novelty-estimate .blend-cards { display: flex; flex-direction: column; gap: 14px; margin-bottom: 12px; }\n    #agriture-novelty-estimate .blend-card { border: 1px solid var(--border); border-radius: 12px; padding: 18px 20px; background: #fdfdfb; cursor: pointer; transition: .15s; }\n    #agriture-novelty-estimate .blend-card:hover { border-color: var(--green); }\n    #agriture-novelty-estimate .blend-card.selected { border-color: var(--green); background: var(--green-light); }\n    #agriture-novelty-estimate .blend-card .bname { font-weight: bold; font-size: 16px; color: var(--green); }\n    #agriture-novelty-estimate .blend-card .bratio { font-size: 13px; color: var(--muted); margin: 6px 0 10px; line-height: 1.7; }\n    #agriture-novelty-estimate .blend-card .bprices { display: flex; gap: 16px; font-size: 13px; flex-wrap: wrap; }\n    #agriture-novelty-estimate .blend-card .bprices div { background: var(--green-light); border-radius: 6px; padding: 6px 10px; }\n    #agriture-novelty-estimate .preset-blend-detail { margin-top: 12px; padding: 14px 16px; border-radius: 10px; background: var(--green-light); border-left: 4px solid var(--green); font-size: 14px; line-height: 1.8; }\n    #agriture-novelty-estimate .preset-blend-detail strong { color: var(--green); }\n\n    @media (max-width: 768px) {\n      #agriture-novelty-estimate .agriture-body { padding: 0; }\n      #agriture-novelty-estimate .step { padding: 20px 16px; border-radius: 12px; }\n      #agriture-novelty-estimate .h1-style { font-size: 20px; line-height: 1.45; }\n      #agriture-novelty-estimate .sub { font-size: 13px; margin-bottom: 20px; }\n      #agriture-novelty-estimate .step .h2-style { font-size: 16px; padding-left: 10px; }\n      #agriture-novelty-estimate .step-intro { font-size: 13px; padding: 12px 14px; }\n      #agriture-novelty-estimate .opt { flex-direction: column; align-items: stretch; padding: 16px; gap: 6px; }\n      #agriture-novelty-estimate .opt .desc { margin-top: 0; }\n      #agriture-novelty-estimate .opt .opt-fee { align-self: flex-start; white-space: normal; margin-top: 4px; }\n      #agriture-novelty-estimate .item-row { flex-wrap: wrap; gap: 8px; }\n      #agriture-novelty-estimate .item-row select { flex: 1 1 100%; }\n      #agriture-novelty-estimate .item-row input { flex: 1 1 0; width: auto; min-width: 0; }\n      #agriture-novelty-estimate .item-row button { flex: 0 0 auto; }\n      #agriture-novelty-estimate .ratio-meter-head { flex-wrap: wrap; gap: 2px 10px; }\n      #agriture-novelty-estimate .weight-calc { flex-direction: column; align-items: flex-start; gap: 4px; }\n      #agriture-novelty-estimate .toggle-btns, #agriture-novelty-estimate .toggle-btns.wrap { flex-direction: column; }\n      #agriture-novelty-estimate .toggle-btns.wrap .toggle-btn { flex: 1 1 auto; min-width: 0; }\n      #agriture-novelty-estimate .toggle-btn { padding: 14px 12px; font-size: 14px; }\n          #agriture-novelty-estimate .package-preview { flex-direction: column; align-items: stretch; padding: 12px; }\n      #agriture-novelty-estimate .package-preview img { width: 100%; height: 180px; }\n      #agriture-novelty-estimate .option-category { font-size: 15px; margin-top: 32px; }\n      #agriture-novelty-estimate .result { padding: 18px 16px; }\n      #agriture-novelty-estimate .price-main { font-size: 28px; }\n      #agriture-novelty-estimate .breakdown { padding: 14px 12px; font-size: 13px; line-height: 1.9; }\n      #agriture-novelty-estimate .breakdown .line { flex-wrap: wrap; align-items: baseline; gap: 0 10px; }\n      #agriture-novelty-estimate .breakdown .line span:first-child { flex: 1 1 auto; min-width: 0; }\n      #agriture-novelty-estimate .breakdown .line span:last-child { flex: 0 1 auto; max-width: 100%; margin-left: auto; }\n      #agriture-novelty-estimate .breakdown .line.total { font-size: 16px; }\n      #agriture-novelty-estimate .contact-form { padding: 14px; }\n      #agriture-novelty-estimate .btns { gap: 10px; margin-top: 20px; }\n      #agriture-novelty-estimate .btns button.nav { flex: 1 1 0; padding: 13px 12px; }\n      #agriture-novelty-estimate .restart button.nav { flex: 1 1 100%; padding: 14px 12px; }\n      #agriture-novelty-estimate .reg-grid { grid-template-columns: 1fr; }\n      #agriture-novelty-estimate .pkg-grid { grid-template-columns: 1fr; }\n          #agriture-novelty-estimate .cart-item { flex-direction: column; }\n    }\n\n    @media (max-width: 480px) {\n      #agriture-novelty-estimate .h1-style { font-size: 18px; }\n      #agriture-novelty-estimate .step { padding: 18px 14px; }\n      #agriture-novelty-estimate .price-main { font-size: 24px; }\n      #agriture-novelty-estimate .package-preview img { height: 150px; }\n      #agriture-novelty-estimate .package-preview-text .pp-spec-row { flex-direction: column; align-items: flex-start; gap: 2px; }\n      #agriture-novelty-estimate .package-preview-text .pp-spec-value { text-align: left; }\n      #agriture-novelty-estimate .breakdown { font-size: 12.5px; }\n      #agriture-novelty-estimate .breakdown .line { gap: 8px; }\n    }\n  <\/style>\n<div id=\"agriture-novelty-estimate\">\n  <div class=\"wrap agriture-body\">\n    <div class=\"h1-style\">\u30ce\u30d9\u30eb\u30c6\u30a3\u30fc \u30aa\u30ea\u30b8\u30ca\u30eb\u5546\u54c1 \u304b\u3093\u305f\u3093\u304a\u898b\u7a4d\u3082\u308a\u30fb\u767a\u6ce8\u30d5\u30a9\u30fc\u30e0<\/div>\n    <div class=\"sub\">\u30ce\u30d9\u30eb\u30c6\u30a3\u30fc\u3068\u3057\u3066\u4f5c\u308a\u305f\u3044\u30aa\u30ea\u30b8\u30ca\u30eb\u98df\u54c1\u306e\u5185\u5bb9\u3092\u9078\u3093\u3067\u3044\u304f\u3068\u3001\u305d\u306e\u5834\u3067\u6982\u7b97\u306e\u304a\u898b\u7a4d\u308a\u91d1\u984d\u304c\u308f\u304b\u308b\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<br>\n    <b>\u4f7f\u3044\u65b9\u306f\u304b\u3093\u305f\u30933\u30b9\u30c6\u30c3\u30d7<\/b>\u3000\u2460\u4e0b\u306e\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u4f5c\u308a\u305f\u3044\u5546\u54c1\u3092\u9078\u3076\u3000\u2192\u3000\u2461\u5473\u30fb\u5bb9\u91cf\u30fb\u6570\u91cf\u30fb\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9806\u756a\u306b\u9078\u3076\u3000\u2192\u3000\u2462\u304a\u898b\u7a4d\u308a\u91d1\u984d\u3092\u78ba\u8a8d\u3059\u308b<br>\n    \u5546\u54c1\u306f5\u7a2e\u985e\u307e\u3067\u307e\u3068\u3081\u3066\u9078\u3079\u307e\u3059\u30021\u7a2e\u985e\u9078\u3073\u7d42\u308f\u308b\u3068\u3053\u306e\u753b\u9762\u306b\u623b\u308a\u307e\u3059\u306e\u3067\u3001\u7d9a\u3051\u3066\u4ed6\u306e\u5546\u54c1\u3082\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002<\/div>\n\n    <!-- HOME -->\n    <div class=\"step active\" id=\"stepHome\">\n      <div class=\"h2-style\">\u4f5c\u308a\u305f\u3044\u5546\u54c1\u3092\u9078\u3076<\/div>\n      <div class=\"reg-group-title\">A. \u5b9a\u756a\u30e9\u30a4\u30f3\u30ca\u30c3\u30d7\u304b\u3089\u9078\u3076\uff08\u4e2d\u8eab\u304c\u6c7a\u307e\u3063\u3066\u3044\u308b\u5546\u54c1\u3067\u3059\uff09<\/div>\n      <div class=\"reg-grid\">\n        <div class=\"reg-btn\" data-type=\"vegSingle\">\n          <div class=\"rb-title\">\u4e7e\u71e5\u91ce\u83dc<\/div>\n          <div class=\"rb-desc\">\u30ad\u30e3\u30d9\u30c4\u30fb\u4eba\u53c2\u306a\u3069\u3001\u91ce\u83dc1\u7a2e\u985e\u3060\u3051\u3092\u888b\u306b\u8a70\u3081\u305f\u5546\u54c1\u3067\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn\" data-type=\"fruitSingle\">\n          <div class=\"rb-title\">\u30c9\u30e9\u30a4\u30d5\u30eb\u30fc\u30c4<\/div>\n          <div class=\"rb-desc\">\u3044\u3061\u3054\u30fb\u308a\u3093\u3054\u306a\u3069\u3001\u679c\u72691\u7a2e\u985e\u3060\u3051\u3092\u888b\u306b\u8a70\u3081\u305f\u5546\u54c1\u3067\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn\" data-type=\"vegMixPreset\">\n          <div class=\"rb-title\">\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9<\/div>\n          <div class=\"rb-desc\">\u5f0a\u793e\u304c\u914d\u5408\u6e08\u307f\u306e\u4eba\u6c17\u30d6\u30ec\u30f3\u30c95\u7a2e\u304b\u3089\u9078\u3076\u3060\u3051\u306e\u5546\u54c1\u3067\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn\" data-type=\"teaPreset\">\n          <div class=\"rb-title\">\u304a\u8336<\/div>\n          <div class=\"rb-desc\">\u4eac\u90fd\u91ce\u83dc\u3092\u4f7f\u3063\u305f5\u7a2e\u985e\u306e\u30d6\u30ec\u30f3\u30c9\u304b\u3089\u9078\u3079\u308b\u30015g\u5165\u308a\u306e\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\u3067\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn\" data-type=\"coffeePreset\">\n          <div class=\"rb-title\">\u30b3\u30fc\u30d2\u30fc<\/div>\n          <div class=\"rb-desc\">\u4eac\u90fd\u91ce\u83dc\u3092\u4f7f\u3063\u305f3\u7a2e\u985e\u306e\u30d6\u30ec\u30f3\u30c9\u304b\u3089\u9078\u3079\u308b\u30015g\u5165\u308a\u306e\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\u3067\u3059<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"reg-group-title\">B. \u4e2d\u8eab\u3092\u30aa\u30ea\u30b8\u30ca\u30eb\u3067\u4f5c\u308b\uff08\u914d\u5408\u304b\u3089\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9\u3057\u307e\u3059\uff09<\/div>\n      <div class=\"reg-grid\">\n        <div class=\"reg-btn custom\" data-type=\"vegMixCustom\">\n          <div class=\"rb-title\">\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9\uff08\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408\uff09<\/div>\n          <div class=\"rb-desc\">\u5165\u308c\u305f\u3044\u91ce\u83dc\u3068\u5272\u5408\u3092\u81ea\u5206\u3067\u6c7a\u3081\u3066\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30df\u30c3\u30af\u30b9\u3092\u4f5c\u308a\u307e\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn custom\" data-type=\"teaCustom\">\n          <div class=\"rb-title\">\u304a\u8336\uff08\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408\uff09<\/div>\n          <div class=\"rb-desc\">\u8336\u8449\u3084\u7d20\u6750\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u304a\u8336\u3092\u4f5c\u308a\u307e\u3059<\/div>\n        <\/div>\n        <div class=\"reg-btn custom\" data-type=\"coffeeCustom\">\n          <div class=\"rb-title\">\u30b3\u30fc\u30d2\u30fc\uff08\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408\uff09<\/div>\n          <div class=\"rb-desc\">\u30b3\u30fc\u30d2\u30fc\u8c46\u3084\u7d20\u6750\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30b3\u30fc\u30d2\u30fc\u3092\u4f5c\u308a\u307e\u3059<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"cart-limit-note\" id=\"cartLimitNote\" style=\"display:none;\">\u9078\u3079\u308b\u5546\u54c1\u306f5\u7a2e\u985e\u307e\u3067\u3067\u3059\u3002\u304a\u898b\u7a4d\u308a\u306b\u9032\u3080\u304b\u3001\u4e0d\u8981\u306a\u5546\u54c1\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/div>\n\n      <div class=\"h2-style section-gap\">\u9078\u3093\u3060\u5546\u54c1\u30ea\u30b9\u30c8<\/div>\n      <div class=\"cart-box\" id=\"cartBox\"><\/div>\n\n      <div class=\"btns\">\n        <span><\/span>\n        <button class=\"nav\" id=\"goEstimateBtn\" disabled onclick=\"goToEstimate()\">\u9078\u3093\u3060\u5546\u54c1\u306e\u304a\u898b\u7a4d\u308a\u91d1\u984d\u3092\u898b\u308b<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- WIZARD (\u5185\u5bb9\u306fJS\u3067\u52d5\u7684\u306b\u63cf\u753b) -->\n    <div class=\"step\" id=\"stepWizard\">\n      <div class=\"h2-style\" id=\"wizTitle\"><\/div>\n      <div class=\"step-intro\" id=\"wizIntro\" style=\"display:none;\"><\/div>\n      <div id=\"wizBody\"><\/div>\n      <div class=\"btns\">\n        <button class=\"nav secondary\" id=\"wizBackBtn\">\u623b\u308b<\/button>\n        <button class=\"nav\" id=\"wizNextBtn\">\u6b21\u3078<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- ESTIMATE -->\n    <div class=\"step result\" id=\"stepEstimate\">\n      <div class=\"h2-style\">\u304a\u898b\u7a4d\u308a\u7d50\u679c\uff08\u6982\u7b97\u30fb\u7a0e\u629c\uff09<\/div>\n      <div class=\"step-intro\">\u9078\u3093\u3067\u3044\u305f\u3060\u3044\u305f\u5185\u5bb9\u3067\u306e\u304a\u304a\u3088\u305d\u306e\u91d1\u984d\u3067\u3059\u3002\u5185\u8a33\u3082\u3042\u308f\u305b\u3066\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002<\/div>\n      <div class=\"price-main\" id=\"estMain\"><\/div>\n      <div class=\"breakdown\" id=\"estBreakdown\"><\/div>\n      <div class=\"notice\" id=\"estNotice\">\u3053\u306e\u91d1\u984d\u306f\u6982\u7b97\u3067\u3059\u3002\u6b63\u5f0f\u306a\u304a\u898b\u7a4d\u308a\u306f\u3001\u4e0b\u306e\u30d5\u30a9\u30fc\u30e0\u306b\u3054\u8a18\u5165\u3044\u305f\u3060\u304f\u3068\u62c5\u5f53\u8005\u304b\u3089\u304a\u9001\u308a\u3057\u307e\u3059\u3002\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408\u306e\u5546\u54c1\u306f\u3001\u3054\u6ce8\u6587\u524d\u306b\u5fc5\u305a\u8a66\u4f5c\u30b5\u30f3\u30d7\u30eb\u3092\u304a\u4f5c\u308a\u3057\u3066\u304a\u5c4a\u3051\u3057\u307e\u3059\u3002\u306a\u304a\u300c\u5225\u9014\u304a\u898b\u7a4d\u308a\u300d\u3068\u8868\u793a\u3055\u308c\u305f\u9805\u76ee\u306e\u91d1\u984d\u306f\u3001\u4e0a\u306e\u5408\u8a08\u306b\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002<\/div>\n\n      <div class=\"contact-form light\">\n        <div class=\"contact-title\">\u6b63\u5f0f\u306a\u304a\u898b\u7a4d\u308a\u3092\u304a\u9001\u308a\u3057\u307e\u3059\u3002\u9001\u308a\u5148\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044<\/div>\n        <label class=\"c-label\">\u4f1a\u793e\u540d\uff08\u500b\u4eba\u306e\u65b9\u306f\u7a7a\u6b04\u3067OK\uff09<\/label>\n        <input type=\"text\" id=\"contactCompany\" placeholder=\"\u682a\u5f0f\u4f1a\u793e\u25ef\u25ef\">\n        <label class=\"c-label\">\u3054\u62c5\u5f53\u8005\u540d\uff08\u5fc5\u9808\uff09<\/label>\n        <input type=\"text\" id=\"contactName\" placeholder=\"\u5c71\u7530 \u592a\u90ce\">\n        <label class=\"c-label\">\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff08\u5fc5\u9808\uff09<\/label>\n        <input type=\"email\" id=\"contactEmail\" placeholder=\"example@company.co.jp\">\n      <\/div>\n\n      <div class=\"notice\" id=\"submitStatus\" style=\"display:none;\"><\/div>\n      <button class=\"cta-btn\" id=\"submitEstimateBtn\" onclick=\"submitEstimate()\">\u3053\u306e\u5185\u5bb9\u3067\u76f8\u8ac7\u3059\u308b\uff08\u7121\u6599\uff09<\/button>\n\n      <div class=\"restart\">\n        <button class=\"nav secondary\" onclick=\"goStep('stepHome')\">\u5546\u54c1\u9078\u3073\u306b\u623b\u308b<\/button>\n        <button class=\"nav secondary\" onclick=\"location.reload()\">\u6700\u521d\u304b\u3089\u3084\u308a\u76f4\u3059<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n(function(){\n  var SCOPE = document.getElementById('agriture-novelty-estimate') || document;\n  function byId(id){ return SCOPE.querySelector('[id=\"'+id+'\"]') || document.getElementById(id); }\n\n  var ITEMS = [\n    { name: \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\", price: 4000 },\n    { name: \"\u30ad\u30e3\u30d9\u30c4\uff08\u4e09\u91cd\/\u611b\u77e5\uff09\", price: 6720 },\n    { name: \"\u5c0f\u677e\u83dc\", price: 9600 },\n    { name: \"\u30d6\u30ed\u30c3\u30b3\u30ea\u30fc\uff08\u623f\uff09\", price: 10400 },\n    { name: \"\u4eba\u53c2\", price: 5760 },\n    { name: \"\u3054\u307c\u3046\uff08\u9752\u68ee\/\u7fa4\u99ac\uff09\", price: 7040 },\n    { name: \"\u84ee\u6839\", price: 9600 },\n    { name: \"\u3054\u307c\u3046\uff08\u4eac\u90fd\u30fb\u3055\u3055\u304c\u304d\uff09\", price: 12710 },\n    { name: \"\u30aa\u30e9\u30f3\u30b8\u30a7\u4eba\u53c2\", price: 12710 },\n    { name: \"\u4eac\u304f\u308c\u306a\u3044\u4eba\u53c2\", price: 12710 },\n    { name: \"\u91d1\u6642\u4eba\u53c2\", price: 12710 },\n    { name: \"\u8056\u8b77\u9662\u5927\u6839\", price: 12710 },\n    { name: \"\u306b\u3093\u306b\u304f\", price: 12000 },\n    { name: \"\u7389\u306d\u304e\", price: 12710 },\n    { name: \"\u9752\u306d\u304e\", price: 14400 },\n    { name: \"\u4e5d\u6761\u306d\u304e\", price: 19000 },\n    { name: \"\u3048\u306e\u304d \u30db\u30ef\u30a4\u30c8\uff08\u672a\u30ab\u30c3\u30c8\uff09\", price: 7520 },\n    { name: \"\u3048\u306e\u304d \u30db\u30ef\u30a4\u30c8\uff0820mm\uff09\", price: 8000 },\n    { name: \"\u3048\u306e\u304d \u30db\u30ef\u30a4\u30c8\uff085mm\uff09\", price: 8800 },\n    { name: \"\u3048\u306e\u304d \u30d6\u30e9\u30a6\u30f3\uff08\u672a\u30ab\u30c3\u30c8\uff09\", price: 9120 },\n    { name: \"\u3048\u306e\u304d \u30d6\u30e9\u30a6\u30f3\uff0820mm\uff09\", price: 9600 },\n    { name: \"\u3048\u306e\u304d \u30d6\u30e9\u30a6\u30f3\uff085mm\uff09\", price: 10400 },\n    { name: \"\u690e\u8338\u30b9\u30e9\u30a4\u30b9 \u83cc\u5e8a\", price: 12000 },\n    { name: \"\u690e\u8338\u30b9\u30e9\u30a4\u30b9 \u9078\u5225\u54c1\u83cc\u5e8a\", price: 12800 },\n    { name: \"\u304b\u307c\u3061\u3083\", price: 5120 },\n    { name: \"\u30c8\u30de\u30c8\u30d5\u30ec\u30fc\u30af\", price: 6720 },\n    { name: \"\u30c8\u30de\u30c8\", price: 7200 },\n    { name: \"\u3088\u3082\u304e\u4e7e\u71e5\u8449\", price: 5940 },\n    { name: \"\u30e2\u30ea\u30f3\u30ac\", price: 8570 },\n    { name: \"\u30ec\u30e2\u30f3\", price: 7380 },\n    { name: \"\u30b7\u30fc\u30af\u30ef\u30fc\u30b5\u30fc\", price: 7680 },\n    { name: \"\u67da\u5b50\", price: 8570 },\n    { name: \"\u307f\u304b\u3093\", price: 24000 },\n    { name: \"\u308a\u3093\u3054\uff08\u30b9\u30c6\u30a3\u30c3\u30af\uff09\", price: 12800 },\n    { name: \"\u308a\u3093\u3054\uff08\u30c0\u30a4\u30b9\uff09\", price: 13710 },\n  ];\n  \n  var FRUIT_NAMES = [\"\u30ec\u30e2\u30f3\", \"\u30b7\u30fc\u30af\u30ef\u30fc\u30b5\u30fc\", \"\u67da\u5b50\", \"\u307f\u304b\u3093\", \"\u308a\u3093\u3054\uff08\u30b9\u30c6\u30a3\u30c3\u30af\uff09\", \"\u308a\u3093\u3054\uff08\u30c0\u30a4\u30b9\uff09\"];\n  var FRUIT_ITEMS = ITEMS.filter(function(i){ return FRUIT_NAMES.indexOf(i.name) >= 0; });\n  \n  var VEG_ITEMS = ITEMS.filter(function(i){ return FRUIT_NAMES.indexOf(i.name) < 0; });\n  \n  var FLAVOR_ADD_NAMES = FRUIT_NAMES.concat([\"\u3088\u3082\u304e\u4e7e\u71e5\u8449\", \"\u30e2\u30ea\u30f3\u30ac\"]);\n  var FLAVOR_ADD_ITEMS = ITEMS.filter(function(i){ return FLAVOR_ADD_NAMES.indexOf(i.name) >= 0; });\n  var TEA_LEAF_ITEMS = [\n    { name: \"\u30d0\u30e9\", price: null }, { name: \"\u685c\", price: null }, { name: \"\u91d1\u6728\u7280\", price: null },\n    { name: \"\u30ab\u30e2\u30df\u30fc\u30eb\", price: null }, { name: \"\u30a8\u30eb\u30c0\u30fc\", price: null }, { name: \"\u30e9\u30d9\u30f3\u30c0\u30fc\", price: null },\n    { name: \"\u304b\u308c\u3093\", price: null }, { name: \"\u30ab\u30ec\u30f3\u30c7\u30e5\u30e9\", price: null }, { name: \"\u30cf\u30a4\u30d3\u30b9\u30ab\u30b9\", price: null },\n    { name: \"\u30ec\u30e2\u30f3\u30b0\u30e9\u30b9\", price: null }, { name: \"\u30ab\u30e9\u30ad\", price: null }, { name: \"\u30af\u30ed\u30fc\u30d6\", price: null },\n    { name: \"\u30ab\u30eb\u30c0\u30e2\u30f3\", price: null },\n  ];\n  var COFFEE_ITEMS = [\n    { name: \"\u30d6\u30e9\u30b8\u30eb\u7523\", price: null }, { name: \"\u30b3\u30ed\u30f3\u30d3\u30a2\u7523\", price: null }, { name: \"\u30a8\u30c1\u30aa\u30d4\u30a2\u7523\", price: null },\n  ];\n\n  var ITEM_TAGS = { veg:'\u91ce\u83dc', fruit:'\u30d5\u30eb\u30fc\u30c4', teaFlavor:'\u30d5\u30ec\u30fc\u30d0\u30fc\uff08\u304a\u8336\uff09', coffeeFlavor:'\u30d5\u30ec\u30fc\u30d0\u30fc\uff08\u30b3\u30fc\u30d2\u30fc\uff09', teaLeaf:'\u8336\u8449', coffee:'\u30b3\u30fc\u30d2\u30fc' };\n  function blankIfDash(v){\n    var t = String(v == null ? '' : v).trim();\n    return \/^[-\uff0d\u30fc\u2015\u2010]*$\/.test(t) ? '' : t;\n  }\n  function makeMasterItem(name, price, origin, cut){\n    var n = String(name == null ? '' : name).trim();\n    var o = blankIfDash(origin), c = blankIfDash(cut);\n    var detail = [o, c].filter(Boolean).join('\u30fb');\n    return { name:n, price: price > 0 ? price : null, origin:o, cut:c, key:[n,o,c].join('\uff5c'), label: n + (detail ? '\uff5c' + detail : '') };\n  }\n  \n  function normalizeAnalog(list){\n    list.forEach(function(i){\n      var m = makeMasterItem(i.name, i.price == null ? 0 : i.price, '', '');\n      i.key = m.key; i.label = m.label; i.origin = ''; i.cut = '';\n    });\n  }\n  [ITEMS, FRUIT_ITEMS, VEG_ITEMS, FLAVOR_ADD_ITEMS, TEA_LEAF_ITEMS, COFFEE_ITEMS].forEach(normalizeAnalog);\n  \n  var TEA_FLAVOR_ITEMS = FLAVOR_ADD_ITEMS.slice();\n  var COFFEE_FLAVOR_ITEMS = FLAVOR_ADD_ITEMS.slice();\n  function flavorPoolFor(def){ return (def || {}).kind === 'coffee' ? COFFEE_FLAVOR_ITEMS : TEA_FLAVOR_ITEMS; }\n  \n  function replaceItems(target, items){\n    if (!items.length) return;\n    target.length = 0;\n    items.forEach(function(i){ target.push(i); });\n  }\n  function loadItemsMaster(){\n    return fetchMasterPart('?action=items', 'items')\n      .then(function(data){\n        if (data.result !== 'success') throw new Error(data.message || '\u53d6\u5f97\u30a8\u30e9\u30fc');\n        var rows = (data.items || []).map(function(i){\n          var item = makeMasterItem(i.name, Number(i.price), i.origin, i.cut);\n          item.tags = String(i.category || '').split(',').map(function(t){ return t.trim(); }).filter(Boolean);\n          return item;\n        }).filter(function(i){ return i.name; });\n        var byTag = function(tag){ return rows.filter(function(i){ return i.tags.indexOf(tag) >= 0; }); };\n        var flavors = byTag(ITEM_TAGS.teaFlavor);\n        byTag(ITEM_TAGS.coffeeFlavor).forEach(function(i){ if (flavors.indexOf(i) < 0) flavors.push(i); });\n        replaceItems(ITEMS, rows);\n        replaceItems(TEA_FLAVOR_ITEMS, byTag(ITEM_TAGS.teaFlavor));\n        replaceItems(COFFEE_FLAVOR_ITEMS, byTag(ITEM_TAGS.coffeeFlavor));\n        replaceItems(VEG_ITEMS, byTag(ITEM_TAGS.veg));\n        replaceItems(FRUIT_ITEMS, byTag(ITEM_TAGS.fruit));\n        replaceItems(FLAVOR_ADD_ITEMS, flavors);\n        replaceItems(TEA_LEAF_ITEMS, byTag(ITEM_TAGS.teaLeaf));\n        replaceItems(COFFEE_ITEMS, byTag(ITEM_TAGS.coffee));\n      })\n      ;\n  }\n\n  var PACK_MATERIAL = { tea: null, coffee: null };\n  var PACK_BAG = { tea: null, coffee: null };\n  function packKindOf(isTea){ return isTea ? 'tea' : 'coffee'; }\n  function packMaterialOf(isTea){ return PACK_MATERIAL[packKindOf(isTea)]; }\n  function packMaterialCostOf(isTea){ var m = packMaterialOf(isTea); return m ? m.price : TEABAG_COST; }\n  function packMaterialNameOf(isTea){ var m = packMaterialOf(isTea); return m ? m.name : (isTea ? '\u30bf\u30b0\u4ed8\u304d\u30e1\u30c3\u30b7\u30e5\u30d5\u30a3\u30eb\u30bf\u30fc' : '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af'); }\n\n  function tcWeightOptions(isTea, isSpecial){\n    var max = 5;\n    if (isSpecial) { var m = packMaterialOf(isTea); if (m ? m.maxG > 0 : false) max = Math.floor(m.maxG); }\n    var list = [];\n    for (var g = 1; g <= max; g++) list.push(g);\n    return list;\n  }\n  function bagForWeight(weight){\n    var fits = PACKAGES.filter(function(p){ return p.maxG >= weight; });\n    if (!fits.length) return null;\n    return fits.slice().sort(function(a, b){ return a.price - b.price; })[0];\n  }\n  function blendBagOf(isTea, isSpecial, weight){\n    if (isSpecial) return PACK_BAG[packKindOf(isTea)];\n    return bagForWeight(weight);\n  }\n\n  function loadPackagesMaster(){\n    return fetchMasterPart('?action=packages', 'packages')\n      .then(function(data){\n        if (data.result !== 'success') throw new Error(data.message || '\u53d6\u5f97\u30a8\u30e9\u30fc');\n        var pick = function(row, names){ var hit = names.filter(function(n){ return n in row; })[0]; return hit ? String(row[hit]).trim() : ''; };\n        var num = function(v){ var n = Number(String(v).replace(\/[^0-9.]\/g, '')); return isNaN(n) ? 0 : n; };\n        var stripSize = function(name){ return String(name || '').replace(\/\\s*\\d+(\\.\\d+)?\\s*[\u00d7xX\uff0a*]\\s*\\d+(\\.\\d+)?(\\s*[\uff08(]\\d+[\uff09)])?\\s*(mm)?\\s*$\/, '').trim(); };\n        var toPkgRow = function(r){\n          var size = pick(r, ['\u5916\u5bf8']);\n          var rawCode = pick(r, ['\u8cc7\u6750ID']); \/\/ \u8cc7\u6750ID\u306f\u4f1a\u793e\u5074\u3067\u5f8c\u304b\u3089\u63a1\u756a\u3055\u308c\u308b\u305f\u3081\u3001\u7a7a\u3067\u3082\u52d5\u304f\u3088\u3046\u306b\u3059\u308b\n          var name = stripSize(pick(r, ['\u5546\u54c1\u540d']));\n          return {\n            code: rawCode || ('NOID\uff5c' + name + '\uff5c' + size), \/\/ \u753b\u9762\u5185\u30671\u4ef6\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306eID\n            displayCode: rawCode,\n            name: name,\n            size: !size ? '' : (\/mm$\/.test(size) ? size : size + 'mm'),\n            price: num(pick(r, ['\u8ca9\u58f2\u4fa1\u683c','\u4fa1\u683c'])),\n            maxG: num(pick(r, ['\u6700\u5927\u5185\u5bb9\u91cf(g)','\u6700\u5927\u5185\u5bb9\u91cf','\u6700\u5927','\u5185\u5bb9\u91cf']).split(\/[\uff5e\u301c~-]\/).pop()),\n            img: String(r._image || '').trim(),\n            tags: pick(r, ['\u30bf\u30b0']).split('\/').map(function(t){ return t.trim(); }).filter(Boolean),\n          };\n        };\n        var bags = (data.rows || [])\n          .filter(function(r){ return pick(r, ['\u30ab\u30c6\u30b4\u30ea\u30fc','\u30ab\u30c6\u30b4\u30ea']) === '\u5c0f\u888b'; })\n          .map(toPkgRow)\n          .filter(function(p){ return p.name; })\n          .filter(function(p){ return p.price > 0; })\n          .filter(function(p){ return p.maxG > 0; });\n        if (!bags.length) throw new Error('\u5c0f\u888b\u304c0\u4ef6');\n        replaceItems(PACKAGES, bags);\n        var categoryOf = function(r){ return pick(r, ['\u30ab\u30c6\u30b4\u30ea\u30fc','\u30ab\u30c6\u30b4\u30ea']).replace(\/\u30d0\u30c3\u30af\/g, '\u30d0\u30c3\u30b0'); };\n        var firstOf = function(names){\n          return (data.rows || []).filter(function(r){ return names.indexOf(categoryOf(r)) >= 0; })\n            .map(toPkgRow).filter(function(p){ return p.price > 0; })[0] || null;\n        };\n        PACK_MATERIAL.tea = firstOf(['\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0']) || PACK_MATERIAL.tea;\n        PACK_BAG.tea = firstOf(['\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\u5c02\u7528\u888b']) || PACK_BAG.tea;\n        PACK_MATERIAL.coffee = firstOf(['\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af']) || PACK_MATERIAL.coffee;\n        PACK_BAG.coffee = firstOf(['\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\u7528\u5c0f\u888b', '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\u5c02\u7528\u888b']) || PACK_BAG.coffee;\n        if (PACK_MATERIAL.tea) TEABAG_COST = PACK_MATERIAL.tea.price;\n      })\n      ;\n  }\n  var TEA_PRESET_BLENDS = [\n    { name: \"\u8056\u8b77\u9662\u5927\u6839\u30d6\u30ec\u30f3\u30c9\", ingredients: [\"\u8056\u8b77\u9662\u5927\u6839\", \"\u3086\u305a\", \"\u714e\u8336\"] },\n    { name: \"\u91d1\u6642\u4eba\u53c2\u30d6\u30ec\u30f3\u30c9\", ingredients: [\"\u91d1\u6642\u4eba\u53c2\", \"\u30ab\u30e9\u30ad\", \"\u8efd\u7119\u714e\u307b\u3046\u3058\u8336\"] },\n    { name: \"\u4e5d\u6761\u8471\u30d6\u30ec\u30f3\u30c9\", ingredients: [\"\u4e5d\u6761\u8471\", \"\u30af\u30ed\u30fc\u30d6\", \"\u83ca\u5ddd\u7d05\u8336\"] },\n    { name: \"\u8cc0\u8302\u8304\u5b50\u30d6\u30ec\u30f3\u30c9\", ingredients: [\"\u8cc0\u8302\u8304\u5b50\", \"\u83ca\u5ddd\u7d05\u8336\"] },\n    { name: \"\u4e07\u9858\u5bfa\u3068\u3046\u304c\u3089\u3057\u30d6\u30ec\u30f3\u30c9\", ingredients: [\"\u4e07\u9858\u5bfa\u3068\u3046\u304c\u3089\u3057\", \"\u30ec\u30e2\u30f3\u30b0\u30e9\u30b9\", \"\u91cd\u7119\u714e\u307b\u3046\u3058\u8336\"] },\n  ];\n  var TEA_FLAVORS = TEA_PRESET_BLENDS.map(function(b){ return b.name; });\n  \n  var COFFEE_FLAVORS = [\"\u4e5d\u6761\u306d\u304e\u30d6\u30ec\u30f3\u30c9\", \"\u4f0f\u898b\u5510\u8f9b\u5b50\u30d6\u30ec\u30f3\u30c9\", \"\u8056\u8b77\u9662\u5927\u6839\u30d6\u30ec\u30f3\u30c9\"];\n\n  var TEA_PRESET_PRODUCTS = [\n    { name:'\u91ce\u83dc\u8336 \u8056\u8b77\u9662\u5927\u6839\uff08\u714e\u8336\uff09', detail:'\u8056\u8b77\u9662\u5927\u6839 \uff0b \u3086\u305a \uff0b \u714e\u8336', grams:5, discountQty:1000, price:{500:300,1000:250} },\n    { name:'\u91ce\u83dc\u8336 \u4e5d\u6761\u306d\u304e\uff08\u7d05\u8336\uff09', detail:'\u4e5d\u6761\u306d\u304e \uff0b \u7d05\u8336', grams:5, discountQty:1000, price:{500:300,1000:250} },\n    { name:'\u91ce\u83dc\u8336 \u8cc0\u8302\u8304\u5b50\uff08\u307b\u3046\u3058\u8336\uff09', detail:'\u8cc0\u8302\u8304\u5b50 \uff0b \u307b\u3046\u3058\u8336', grams:5, discountQty:1000, price:{500:300,1000:250} },\n    { name:'\u91ce\u83dc\u8336 \u4e07\u9858\u5bfa\u3068\u3046\u304c\u3089\u3057\uff08\u7d05\u8336\uff09', detail:'\u4e07\u9858\u5bfa\u3068\u3046\u304c\u3089\u3057 \uff0b \u30ec\u30e2\u30f3\u30b0\u30e9\u30b9 \uff0b \u91cd\u7119\u714e\u307b\u3046\u3058\u8336', grams:5, discountQty:1000, price:{500:300,1000:250} },\n    { name:'\u91ce\u83dc\u8336 \u91d1\u6642\u4eba\u53c2\uff08\u307b\u3046\u3058\u8336\uff09', detail:'\u91d1\u6642\u4eba\u53c2 \uff0b \u30ab\u30e9\u30ad\uff08\u30b7\u30ca\u30e2\u30f3\uff09\uff0b \u8efd\u7119\u714e\u307b\u3046\u3058\u8336', grams:5, discountQty:1000, price:{500:300,1000:250} }\n  ];\n  var COFFEE_PRESET_PRODUCTS = [\n    { name:'\u4e5d\u6761\u306d\u304e\u30d6\u30ec\u30f3\u30c9', detail:'', grams:20, price:{500:220,1000:220} },\n    { name:'\u4f0f\u898b\u5510\u8f9b\u5b50\u30d6\u30ec\u30f3\u30c9', detail:'', grams:20, price:{500:220,1000:220} },\n    { name:'\u8056\u8b77\u9662\u5927\u6839\u30d6\u30ec\u30f3\u30c9', detail:'', grams:20, price:{500:220,1000:220} }\n  ];\n\n  var BLENDS = [\n    { no: \"No.01\", name: \"\u5473\u564c\u6c41\u306e\u5177\u30df\u30c3\u30af\u30b9\", ratio: { \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\": 35, \"\u4eba\u53c2\": 25, \"\u3054\u307c\u3046\uff08\u9752\u68ee\/\u7fa4\u99ac\uff09\": 15, \"\u5c0f\u677e\u83dc\": 15, \"\u304b\u307c\u3061\u3083\": 10 }, price: { 500: 471, 1000: 427 } },\n    { no: \"No.02\", name: \"\u8c5a\u6c41\u30fb\u3051\u3093\u3061\u3093\u6c41\u30df\u30c3\u30af\u30b9\", ratio: { \"\u3054\u307c\u3046\uff08\u9752\u68ee\/\u7fa4\u99ac\uff09\": 25, \"\u4eba\u53c2\": 25, \"\u84ee\u6839\": 20, \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\": 20, \"\u304b\u307c\u3061\u3083\": 10 }, price: { 500: 506, 1000: 458 } },\n    { no: \"No.03\", name: \"\u91ce\u83dc\u30b9\u30fc\u30d7\u30fb\u30dd\u30c8\u30d5\u30df\u30c3\u30af\u30b9\", ratio: { \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\": 30, \"\u4eba\u53c2\": 20, \"\u5c0f\u677e\u83dc\": 15, \"\u30d6\u30ed\u30c3\u30b3\u30ea\u30fc\uff08\u623f\uff09\": 15, \"\u84ee\u6839\": 10, \"\u304b\u307c\u3061\u3083\": 10 }, price: { 500: 529, 1000: 478 } },\n    { no: \"No.04\", name: \"\u304d\u306e\u3053\u5165\u308a \u65e8\u307f\u30df\u30c3\u30af\u30b9\", ratio: { \"\u3048\u306e\u304d \u30db\u30ef\u30a4\u30c8\uff08\u672a\u30ab\u30c3\u30c8\uff09\": 25, \"\u690e\u8338\u30b9\u30e9\u30a4\u30b9 \u83cc\u5e8a\": 15, \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\": 30, \"\u4eba\u53c2\": 15, \"\u3054\u307c\u3046\uff08\u9752\u68ee\/\u7fa4\u99ac\uff09\": 15 }, price: { 500: 547, 1000: 494 } },\n    { no: \"No.05\", name: \"\u30b3\u30b9\u30c8\u91cd\u8996\u30df\u30c3\u30af\u30b9\", ratio: { \"\u30ad\u30e3\u30d9\u30c4\uff08\u9e7f\u5150\u5cf6\uff09\": 40, \"\u4eba\u53c2\": 30, \"\u3054\u307c\u3046\uff08\u9752\u68ee\/\u7fa4\u99ac\uff09\": 15, \"\u304b\u307c\u3061\u3083\": 15 }, price: { 500: 429, 1000: 390 } },\n  ];\n\n  var MASTER_API_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycby39oocVmOM8Z3-agh3uaCD5xd_2BEKWhRyFvAiGPcNn4PVNVnkM45WiIWstRWLtQM_\/exec';\n  function masterValue(row, keys){\n    for (var i=0; i<keys.length; i++) if ([undefined, null, ''].indexOf(row[keys[i]]) < 0) return row[keys[i]];\n    return '';\n  }\n  function masterNumber(row, keys){\n    \/\/ \u300c\u00a5471\u300d\u300c60g\u300d\u300c1,000\u300d\u306a\u3069\u306e\u8868\u8a18\u304b\u3089\u3082\u6570\u5b57\u3092\u53d6\u308a\u51fa\u3059\n    var raw = String(masterValue(row, keys)).replace(\/[^0-9.]\/g, '');\n    var n = Number(raw);\n    return (isFinite(n) ? raw !== '' : false) ? n : null;\n  }\n  function categoryTags(value){\n    return String(value || '').split(\/[,\uff0c\u3001\\\/\uff0f\\n]+\/).map(function(v){ return v.trim(); }).filter(Boolean);\n  }\n  function categoryIs(tags, names){\n    return tags.some(function(tag){ return names.indexOf(tag) >= 0; });\n  }\n  function normalizePresetProduct(row){\n    var name = String(masterValue(row, ['name','\u54c1\u76ee\u540d','\u5546\u54c1\u540d','title','\u30bf\u30a4\u30c8\u30eb'])).trim();\n    var detail = masterValue(row, ['detail','details','item','items','\u5185\u5bb9','\u9805\u76ee','\u914d\u5408','\u30d6\u30ec\u30f3\u30c9\u5185\u5bb9']);\n    if (Array.isArray(detail)) detail = detail.join('\u30fb');\n    else if (detail ? typeof detail === 'object' : false) detail = Object.keys(detail).map(function(k){ return k + ' ' + detail[k] + (String(detail[k]).indexOf('%') < 0 ? '%' : ''); }).join('\uff0f');\n    var grams = masterNumber(row, ['grams','gram','weight','\u4e00\u888b\u5bb9\u91cf(g)','\u4e00\u888b\u5bb9\u91cf\uff08g\uff09','\u30b0\u30e9\u30e0\u6570','\u5185\u5bb9\u91cf(g)','\u5185\u5bb9\u91cf']);\n    var p500 = masterNumber(row, ['price','unitPrice','price500','price_500','\u4e00\u888b\u5358\u4fa1','500\u888b\u5358\u4fa1','500\u888b\u4ee5\u4e0a\u5358\u4fa1','\u91d1\u984d']);\n    var discountQty = masterNumber(row, ['discountQty','discountQuantity','\u5272\u5f15\u888b\u6570']);\n    var discountPrice = masterNumber(row, ['discountPrice','price1000','price_1000','\u5272\u5f15\u4fa1\u683c','1000\u888b\u5358\u4fa1','1000\u888b\u4ee5\u4e0a\u5358\u4fa1','1,000\u888b\u4ee5\u4e0a\u5358\u4fa1','\u5272\u5f15\u5f8c\u5358\u4fa1']);\n    var p1000 = (discountQty != null ? discountPrice != null : false) ? discountPrice : p500;\n    if (p1000 == null) p1000 = p500;\n    return { id:masterValue(row, ['id','productId','\u5546\u54c1ID']), name:name, detail:String(detail || ''), grams:grams, discountQty:discountQty, discountPrice:discountPrice, price:{500:p500, 1000:p1000} };\n  }\n  function productDiscountQty(product){\n    if (product.discountQty != null ? product.discountPrice != null : false) return product.discountQty;\n    return product.price[1000] !== product.price[500] ? 1000 : null;\n  }\n  function productUnitPrice(product, qty){\n    var threshold = productDiscountQty(product);\n    return (threshold != null ? qty >= threshold : false) ? product.price[1000] : product.price[500];\n  }\n  function loadNoveltyMaster(){\n    if (!MASTER_API_URL || typeof fetch !== 'function') return Promise.reject(new Error('\u53d6\u5f97\u5148\u304c\u672a\u8a2d\u5b9a\u3067\u3059'));\n    return fetchMasterPart('?action=novelty', 'novelty')\n      .then(function(data){\n        var rows = data ? (data.rows || data.items) : data;\n        if (!data || data.result === 'error' || !Array.isArray(rows)) throw new Error('master response error');\n        var groups = { mix:[], tea:[], coffee:[] };\n        rows.forEach(function(row){\n          var tags = categoryTags(masterValue(row, ['category','\u30ab\u30c6\u30b4\u30ea\u30fc','\u30ab\u30c6\u30b4\u30ea']));\n          var product = normalizePresetProduct(row);\n          if (!product.name || product.grams == null || product.price[500] == null) return;\n          if (categoryIs(tags, ['\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9','\u91ce\u83dc\u30df\u30c3\u30af\u30b9'])) groups.mix.push(product);\n          if (categoryIs(tags, ['\u30d6\u30ec\u30f3\u30c9\u8336','\u91ce\u83dc\u8336','\u91ce\u83dc\u306e\u304a\u8336'])) groups.tea.push(product);\n          if (categoryIs(tags, ['\u30d6\u30ec\u30f3\u30c9\u30b3\u30fc\u30d2\u30fc','\u91ce\u83dc\u30b3\u30fc\u30d2\u30fc','\u91ce\u83dc\u306e\u30b3\u30fc\u30d2\u30fc'])) groups.coffee.push(product);\n        });\n        if (groups.mix.length) BLENDS = groups.mix;\n        if (groups.tea.length) TEA_PRESET_PRODUCTS = groups.tea;\n        if (groups.coffee.length) COFFEE_PRESET_PRODUCTS = groups.coffee;\n      })\n      ;\n  }\n  \n  function fetchMaster(query){\n    var ctrl = new AbortController();\n    var timer = setTimeout(function(){ ctrl.abort(); }, 15000);\n    return fetch(MASTER_API_URL + query, { cache:'no-store', signal: ctrl.signal })\n      .then(function(res){ if (!res.ok) throw new Error('HTTP ' + res.status); return res.json(); })\n      .then(function(data){ clearTimeout(timer); return data; }, function(err){ clearTimeout(timer); throw err; });\n  }\n  \n  var MASTER_ALL = null;\n  function fetchMasterAll(){\n    if (MASTER_ALL) return MASTER_ALL;\n    MASTER_ALL = fetchMaster('?action=all').then(function(data){\n      if (data.result !== 'success') throw new Error(data.message || '\u53d6\u5f97\u30a8\u30e9\u30fc');\n      return data;\n    });\n    return MASTER_ALL;\n  }\n  function fetchMasterPart(query, key){\n    return fetchMasterAll().then(function(all){\n      var part = all[key];\n      if (!part) throw new Error(key + '\u304c\u7a7a\u3067\u3059');\n      return key === 'items' ? { result:'success', items: part } : { result:'success', rows: part };\n    })['catch'](function(){ return fetchMaster(query); });\n  }\n  function loadCommonFees(){\n    return fetchMasterAll()\n      .then(function(all){ return all.fees; })\n      ['catch'](function(){ return fetchMaster('?action=fees').then(function(d){ return d.fees; }); })\n      .then(function(fees){ applyCommonFees(fees); })\n      ['catch'](function(err){ if (window.console) console.warn('\u5171\u901a\u6599\u91d1\u30de\u30b9\u30bf\u3092\u53d6\u5f97\u3067\u304d\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30d5\u30a9\u30fc\u30e0\u5185\u306e\u521d\u671f\u5024\u3067\u8a08\u7b97\u3057\u307e\u3059:', err); });\n  }\n  var MASTER_GATE = (function(){\n    var root = SCOPE.nodeType === 1 ? SCOPE : byId('agriture-novelty-estimate');\n    var box = document.createElement('div');\n    box.style.cssText = 'margin:0 0 14px;padding:12px 14px;border-radius:10px;font-size:14px;line-height:1.7;pointer-events:auto;';\n    root.insertBefore(box, root.firstChild);\n    function lock(on){ root.style.pointerEvents = on ? 'none' : ''; root.style.opacity = on ? '0.55' : ''; box.style.pointerEvents = 'auto'; }\n    function loading(){\n      box.style.cssText += ';background:#eef4ee;color:#2f5d3a;border:1px solid #cfe0d3;';\n      box.textContent = '\u6700\u65b0\u306e\u6599\u91d1\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u2026\uff08\u6570\u79d2\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\uff09';\n      box.style.display = 'block';\n      lock(true);\n    }\n    function failed(err){\n      box.style.cssText += ';background:#fdecea;color:#8b2f24;border:1px solid #f3c6c0;';\n      box.innerHTML = '\u6700\u65b0\u306e\u6599\u91d1\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u6b63\u3057\u3044\u91d1\u984d\u3092\u8868\u793a\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u304a\u624b\u6570\u3067\u3059\u304c\u518d\u8aad\u307f\u8fbc\u307f\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002'\n        + '<br><button type=\"button\" id=\"masterRetryBtn\" style=\"margin-top:8px;padding:8px 16px;border-radius:8px;border:1px solid #8b2f24;background:#fff;color:#8b2f24;font-weight:bold;cursor:pointer;\">\u518d\u8aad\u307f\u8fbc\u307f<\/button>'\n        + '<br><span style=\"font-size:12px;\">\u89e3\u6d88\u3057\u306a\u3044\u5834\u5408\u306f info@agriture.jp \u307e\u3067\u3054\u9023\u7d61\u304f\u3060\u3055\u3044\u3002<\/span>';\n      box.style.display = 'block';\n      lock(true);\n      byId('masterRetryBtn').addEventListener('click', start);\n      if (window.console) console.warn('\u30de\u30b9\u30bf\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f:', err);\n    }\n    function done(){ box.style.display = 'none'; lock(false); }\n    function start(){\n      loading();\n      return Promise.all([loadNoveltyMaster(), loadItemsMaster(), loadPackagesMaster()]).then(loadCommonFees).then(done)['catch'](failed);\n    }\n    return { start: start };\n  })();\n  MASTER_GATE.start();\n\n  var PACKAGES = [\n    { code:'PKG-015', name:'\u900f\u660eCP\u5e73\u888b', size:'100\u00d7120mm', price:17, maxG:10, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_11150.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u306a\u3057\uff08\u4e09\u65b9\u888b\u30fb\u30d2\u30fc\u30c8\u30b7\u30fc\u30eb\u5f0f\uff09','\u30b5\u30f3\u30d7\u30eb\u30fb\u500b\u5305\u88c5\u5411\u3051'] },\n    { code:'PKG-017', name:'\u900f\u660e\u5e73\u888b', size:'120\u00d7140mm', price:15, maxG:10, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_11500.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u306a\u3057','\u7121\u5730\u900f\u660e\u30fb\u5e95\u5165\u308c\u30bf\u30a4\u30d7'] },\n    { code:'PKG-012', name:'\u30c1\u30e3\u30c3\u30af\u4ed8AL\u30b9\u30bf\u30f3\u30c9\u888b \u9280', size:'130\u00d7130mm', price:35, maxG:40, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50620.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u30a2\u30eb\u30df\u7d20\u6750\uff08\u906e\u5149\u30fb\u9ad8\u30d0\u30ea\u30a2\uff09','\u8131\u9178\u7d20\u5264\u5bfe\u5fdc'] },\n    { code:'PKG-009', name:'\u30d0\u30a4\u30aa\u30de\u30b9\u8868\u900f\u660e\u30c1\u30e3\u30c3\u30af\u30af\u30e9\u30d5\u30c8', size:'120\u00d7150mm', price:44, maxG:40, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50985.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u30d0\u30a4\u30aa\u30de\u30b9\u7d20\u6750\uff08\u690d\u7269\u7531\u676520%\uff09','\u30af\u30e9\u30d5\u30c8\u7d19\u98a8'] },\n    { code:'PKG-004', name:'\u30c1\u30e3\u30c3\u30af\u4ed8\u534a\u900f\u660e\u30b9\u30bf\u30f3\u30c9\u888b', size:'110\u00d7170mm', price:41, maxG:40, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_11861.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u534a\u900f\u660e\uff08\u4e0a\u54c1\u306a\u898b\u305f\u76ee\uff09'] },\n    { code:'PKG-001', name:'\u30c1\u30e3\u30c3\u30af\u4ed8\u900f\u660e\u30b9\u30bf\u30f3\u30c9\u888b \u767d \u7a93\u4ed8', size:'120\u00d7200mm', price:49, maxG:40, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50413.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u7a93\u4ed8\u304d\uff08\u4e2d\u8eab\u304c\u898b\u3048\u308b\uff09'] },\n    { code:'PKG-007', name:'\u30c1\u30e3\u30c3\u30af\u900f\u660eCP\u5e73\u888b\uff08\u8efd\u91cf\u7269\u5411\uff09', size:'140\u00d7230mm', price:35, maxG:60, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_11160.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u5168\u9762\u30af\u30ea\u30a2','\u8efd\u91cf\u7269\u5411\u3051\uff08\u8010\u5bd2\u6027\u306f\u4f4e\u3081\uff09'] },\n    { code:'PKG-006', name:'\u30c1\u30e3\u30c3\u30af\u900f\u660eCP\u5e73\u888b\uff08\u8efd\u91cf\u7269\u5411\uff09', size:'160\u00d7230mm', price:40, maxG:60, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_51066.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u5168\u9762\u30af\u30ea\u30a2','\u8efd\u91cf\u7269\u5411\u3051\uff08\u8010\u5bd2\u6027\u306f\u4f4e\u3081\uff09'] },\n    { code:'PKG-003', name:'\u30c1\u30e3\u30c3\u30af\u4ed8\u900f\u660e\u30b9\u30bf\u30f3\u30c9\u888b \u767d \u7a93\u4ed8', size:'140\u00d7220mm', price:56, maxG:40, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50506.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u7a93\u4ed8\u304d','\u30b3\u30fc\u30d2\u30fc\u30fb\u7d05\u8336\u5411\u3051'] },\n    { code:'PKG-008', name:'\u30c1\u30e3\u30c3\u30af\u900f\u660eCP\u5e73\u888b\uff08\u8efd\u91cf\u7269\u5411\uff09', size:'170\u00d7260mm', price:38, maxG:80, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_11162.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u5168\u9762\u30af\u30ea\u30a2','\u8efd\u91cf\u7269\u5411\u3051\uff08\u8010\u5bd2\u6027\u306f\u4f4e\u3081\uff09'] },\n    { code:'PKG-010', name:'\u30d0\u30a4\u30aa\u30de\u30b9\u84b8\u7740\u30c1\u30e3\u30c3\u30af\u30af\u30e9\u30d5\u30c8SP', size:'180\u00d7240mm', price:69, maxG:80, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50879.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u30d0\u30a4\u30aa\u30de\u30b9\u7d20\u6750\uff08\u690d\u7269\u7531\u676520%\uff09','\u30af\u30e9\u30d5\u30c8\u7d19\u98a8'] },\n    { code:'PKG-011', name:'\u30d0\u30a4\u30aa\u30de\u30b9\u84b8\u7740\u30c1\u30e3\u30c3\u30af\u4e0a\u8cea\u7d19SP', size:'180\u00d7240mm', price:69, maxG:80, img:'https:\/\/www.seiwa-p.co.jp\/img\/goods\/S\/S_070002_50880.jpg', tags:['\u30c1\u30e3\u30c3\u30af\u4ed8\u304d','\u30d0\u30a4\u30aa\u30de\u30b9\u7d20\u6750\uff08\u690d\u7269\u7531\u676520%\uff09','\u4e0a\u8cea\u7d19\u98a8'] },\n  ];\n\n  var FILL_COST = 75;             \n  var FILL_COST_MIX = 75;         \n  var LABEL_COST = 15;            \n  var FRESHNESS_PRESERVER_COST = 4; \n  var MICROBE_FEE = 6000;         \n  var SHELF_FEE = 6000;           \n  var INIT_FEE_VEGMIX = 15000;    \n  var BULK_DISCOUNT_RATE = 0.875; \n  var VEGMIX_BAG_COST = 50;       \n  var VEGMIX_FIXED_WEIGHT = 60;\n  var BLEND_FEE_SELF = 50000;\n  var BLEND_FEE_COMPANY = 150000;\n  var TEABAG_COST = 29;           \n  var TEABAG_FILTER_G = 0.6;\n  var CUSTOM_BAG_TIER = { 60: 50, 200: 100 }; \n  var PRESET_MATERIAL_PER_100G = 3200; \n  var FILL_COST_PRESET = 75;  \n  var FLAVOR_G_MIN = 1;     \n  var FLAVOR_G_MAX = 5;     \n  var FLAVOR_G_DEFAULT = 5;\n  \n  function presetMaterialCost(g){ return PRESET_MATERIAL_PER_100G \/ 100 * g; }\n  function presetBagCost(g){ return (g + TEABAG_FILTER_G) <= 60 ? CUSTOM_BAG_TIER[60] : CUSTOM_BAG_TIER[200]; }\n  function presetPerBag(g){ return TEABAG_COST + FILL_COST_PRESET + presetMaterialCost(g) + presetBagCost(g); }\n  var SHIP_FEE = 300;         \n  var MIN_QTY = 500;        \n  var QTY_STEP = 10;        \n  var MIN_QTY_COMPANY = 100; \n  function tcMinQty(){ return (wiz ? (wiz.state ? wiz.state.method === 'company' : false) : false) ? MIN_QTY_COMPANY : MIN_QTY; }\n  var DRY_BAG_MIN_G = 10;   \n  var DRY_BAG_MAX_G = 80;   \n\n  function yen(n){ return Math.round(n).toLocaleString('ja-JP'); }\n  function esc(v){ return String(v==null?'':v).replace(\/[\\x26<>\"']\/g, function(c){ return {'\\x26':'\\x26amp;','<':'\\x26lt;','>':'\\x26gt;','\"':'\\x26quot;',\"'\":'\\x26#39;'}[c]; }); }\n  function goStep(id){\n    SCOPE.querySelectorAll('.step').forEach(function(s){ s.classList.remove('active'); });\n    byId(id).classList.add('active');\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  }\n\n  function initToggle(wrap, defaultValue){\n    if (!wrap) return;\n    var btns = wrap.querySelectorAll('.toggle-btn');\n    wrap.dataset.value = (typeof defaultValue === 'boolean') ? (defaultValue ? 'true' : 'false') : defaultValue;\n    btns.forEach(function(b){\n      b.classList.toggle('on', b.dataset.on === wrap.dataset.value);\n      b.addEventListener('click', function(){\n        wrap.dataset.value = b.dataset.on;\n        btns.forEach(function(x){ x.classList.toggle('on', x.dataset.on === wrap.dataset.value); });\n        wrap.dispatchEvent(new Event('change'));\n      });\n    });\n  }\n  function toggleValue(id){ var el = byId(id); return el ? el.dataset.value === 'true' : false; }\n  function toggleRaw(id){ var el = byId(id); return el ? el.dataset.value : null; }\n\n  var LABEL_SIDE_TEXT = { back: '\u88cf\u9762\u306e\u307f', front: '\u8868\u9762\u306e\u307f', both: '\u8868\u30fb\u88cf\u4e21\u65b9' };\n  function selectedPackageSupportsOxygenAbsorber(){\n    if (!wiz.def || (wiz.def.family !== 'single' ? wiz.def.family !== 'vegMixCustom' : false)) return false;\n    var pkg = PACKAGES.filter(function(p){ return p.code === wiz.state.pkgCode; })[0];\n    return pkg ? pkg.tags.some(function(tag){ return tag.indexOf('\u8131\u9178\u7d20\u5264\u5bfe\u5fdc') >= 0; }) : false;\n  }\n  function collectOptions(){\n    var labelSide = toggleRaw('optLabel');\n    return {\n      labelSide: labelSide,\n      label: labelSide !== 'none',\n      silica: toggleValue('optSilica'),\n      oxygenAbsorber: selectedPackageSupportsOxygenAbsorber() ? toggleValue('optOxygenAbsorber') : false,\n      design: toggleValue('optDesign'),\n      microbe: toggleValue('optMicrobe'),\n      shelf: toggleValue('optShelf'),\n    };\n  }\n  function optionLines(opt){\n    var lines = [];\n    if (opt.label) lines.push(['\u30e9\u30d9\u30eb\u30b7\u30fc\u30eb\u8cbc\u4ed8\uff08' + LABEL_SIDE_TEXT[opt.labelSide] + '\u30fb1\u888b\u3042\u305f\u308a\uff09', yen(labelFeeOf(opt)) + '\u5186']);\n    if (opt.silica) lines.push(['\u30b7\u30ea\u30ab\u30b2\u30eb\u540c\u68b1\uff081\u888b\u3042\u305f\u308a\uff09', yen(FRESHNESS_PRESERVER_COST) + '\u5186']);\n    if (opt.oxygenAbsorber) lines.push(['\u8131\u9178\u7d20\u5264\u540c\u68b1\uff081\u888b\u3042\u305f\u308a\uff09', yen(FRESHNESS_PRESERVER_COST) + '\u5186']);\n    return lines;\n  }\n  function optionExtraLines(opt){\n    var lines = [];\n    if (opt.microbe) lines.push(['\u5fae\u751f\u7269\u691c\u67fb', yen(MICROBE_FEE) + '\u5186']);\n    if (opt.shelf) lines.push(['\u8cde\u5473\u671f\u9650\u691c\u67fb', yen(SHELF_FEE) + '\u5186']);\n    if (opt.design) lines.push(['\u30d1\u30c3\u30b1\u30fc\u30b8\u30c7\u30b6\u30a4\u30f3', '\u5225\u9014\u304a\u898b\u7a4d\u308a']);\n    return lines;\n  }\n  \n  var LABEL_COST_FRONT = LABEL_COST;\n  var LABEL_COST_BOTH = LABEL_COST * 2;\n  function labelCostFor(side){\n    if (side === 'both') return LABEL_COST_BOTH;\n    if (side === 'front') return LABEL_COST_FRONT;\n    return LABEL_COST;\n  }\n  function applyCommonFees(fees){\n    if (!fees) return;\n    var num = function(v){ return typeof v === 'number' ? v : NaN; };\n    if (!isNaN(num(fees.label_back))) LABEL_COST = fees.label_back;\n    if (!isNaN(num(fees.label_front))) LABEL_COST_FRONT = fees.label_front;\n    if (!isNaN(num(fees.label_both))) LABEL_COST_BOTH = fees.label_both; else LABEL_COST_BOTH = LABEL_COST * 2;\n    if (!isNaN(num(fees.desiccant))) FRESHNESS_PRESERVER_COST = fees.desiccant;\n    if (!isNaN(num(fees.microbe))) MICROBE_FEE = fees.microbe;\n    if (!isNaN(num(fees.shelf))) SHELF_FEE = fees.shelf;\n    if (!isNaN(num(fees.ship_work))) SHIP_FEE = fees.ship_work;\n    if (!isNaN(num(fees.min_lot))) MIN_QTY = fees.min_lot;\n    if (!isNaN(num(fees.min_lot_company))) MIN_QTY_COMPANY = fees.min_lot_company;\n    if (!isNaN(num(fees.qty_step))) QTY_STEP = fees.qty_step;\n  }\n  \n  function freshnessFeeText(){\n    return FRESHNESS_PRESERVER_COST > 0 ? ('1\u888b\u3042\u305f\u308a' + yen(FRESHNESS_PRESERVER_COST) + '\u5186\u3067\u3059\u3002') : '\u8cbb\u7528\u306f\u304b\u304b\u308a\u307e\u305b\u3093\uff08\u7121\u6599\uff09\u3002';\n  }\n  function freshnessButtonText(){\n    return FRESHNESS_PRESERVER_COST > 0 ? ('\u5165\u308c\u308b\uff08+' + yen(FRESHNESS_PRESERVER_COST) + '\u5186\/\u888b\uff09') : '\u5165\u308c\u308b\uff08\u7121\u6599\uff09';\n  }\n  function labelFeeOf(opt){ return opt.label ? labelCostFor(opt.labelSide) : 0; }\n  function optionPerBagFee(opt){\n    return labelFeeOf(opt)\n      + (opt.silica ? FRESHNESS_PRESERVER_COST : 0)\n      + (opt.oxygenAbsorber ? FRESHNESS_PRESERVER_COST : 0);\n  }\n  function optionFlatFee(opt){ return (opt.microbe ? MICROBE_FEE : 0) + (opt.shelf ? SHELF_FEE : 0); }\n\n  function renderOptionsStepHTML(){\n    var html = ''\n    + '<div class=\"option-category\">\u30d1\u30c3\u30b1\u30fc\u30b8\u307e\u308f\u308a\u306e\u30aa\u30d7\u30b7\u30e7\u30f3<\/div>'\n    + '<div class=\"toggle-field\">'\n    + '  <div class=\"tf-label\">\u888b\u306b\u30e9\u30d9\u30eb\u30b7\u30fc\u30eb\u3092\u8cbc\u308b<\/div>'\n    + '  <div class=\"tf-desc\">\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30b7\u30fc\u30eb\u3092\u888b\u306b\u8cbc\u308b\u4f5c\u696d\u3067\u3059\u30021\u7b87\u6240' + yen(LABEL_COST) + '\u5186\uff08\u7a0e\u5225\uff09\u3002\u88cf\u306e\u539f\u6750\u6599\u30e9\u30d9\u30eb\u30821\u7b87\u6240\u3068\u3057\u3066\u8a08\u7b97\u3057\u3001\u8868\u30fb\u88cf\u306e\u4e21\u65b9\u306b\u8cbc\u308b\u5834\u5408\u306f1\u888b' + yen(LABEL_COST_BOTH) + '\u5186\u306b\u306a\u308a\u307e\u3059\u3002<\/div>'\n    + '  <div class=\"package-preview\">'\n    + '    <img decoding=\"async\" src=\"https:\/\/agriture.jp\/wp-content\/uploads\/2026\/09\/form-label-sample.webp\" alt=\"\u88cf\u30e9\u30d9\u30eb\u306e\u8a18\u8f09\u4f8b\">'\n    + '    <div class=\"package-preview-text\"><div class=\"pp-title\">\u88cf\u30e9\u30d9\u30eb\u306e\u8a18\u8f09\u4f8b\u306f\u3053\u3061\u3089\u306b\u306a\u308a\u307e\u3059<\/div><div>\u540d\u79f0\u30fb\u539f\u6750\u6599\u540d\u30fb\u5185\u5bb9\u91cf\u30fb\u4fdd\u5b58\u65b9\u6cd5\u30fb\u8ca9\u58f2\u8005\u30fb\u88fd\u9020\u8005\u30fb\u6804\u990a\u6210\u5206\u8868\u793a\u30fb\u8cde\u5473\u671f\u9650\u30fb\u30d0\u30fc\u30b3\u30fc\u30c9\u3092\u8a18\u8f09\u3057\u307e\u3059\uff08\u30b5\u30a4\u30ba\u76ee\u5b89\uff1a62\u00d770mm\uff09\u3002\u6587\u8a00\u30fb\u6210\u5206\u5024\u306f\u5b9f\u969b\u306e\u5546\u54c1\u306b\u5408\u308f\u305b\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002<\/div><\/div>'\n    + '  <\/div>'\n    + '  <div class=\"toggle-btns wrap\" id=\"optLabel\">'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"none\">\u8cbc\u3089\u306a\u3044<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"back\">\u88cf\u9762\u306e\u307f\uff08+' + yen(LABEL_COST) + '\u5186\/\u888b\uff09<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"front\">\u8868\u9762\u306e\u307f\uff08+' + yen(LABEL_COST_FRONT) + '\u5186\/\u888b\uff09<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"both\">\u8868\u30fb\u88cf\u4e21\u65b9\uff08+' + yen(LABEL_COST_BOTH) + '\u5186\/\u888b\uff09<\/button>'\n    + '  <\/div>'\n    + '<\/div>'\n    + '<div class=\"toggle-field\" id=\"optDesignField\">'\n    + '  <div class=\"tf-label\">\u30b7\u30fc\u30eb\u306e\u30c7\u30b6\u30a4\u30f3\u3092\u5f0a\u793e\u306b\u4f9d\u983c\u3059\u308b<\/div>'\n    + '  <div class=\"tf-desc\">\u30c7\u30b6\u30a4\u30f3\u30c7\u30fc\u30bf\u3092\u3054\u652f\u7d66\u3044\u305f\u3060\u3051\u308b\u5834\u5408\u306f\u8cbb\u7528\u306f\u304b\u304b\u308a\u307e\u305b\u3093\u3002\u5f0a\u793e\u3067\u30c7\u30b6\u30a4\u30f3\u3092\u4f5c\u308b\u5834\u5408\u306f\u5225\u9014\u304a\u898b\u7a4d\u308a\u3068\u306a\u308a\u307e\u3059\u3002<\/div>'\n    + '  <div class=\"toggle-btns\" id=\"optDesign\">'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"true\">\u30c7\u30b6\u30a4\u30f3\u3092\u4f9d\u983c\u3059\u308b\uff08\u5225\u9014\u304a\u898b\u7a4d\u308a\uff09<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"false\">\u4f9d\u983c\u3057\u306a\u3044\uff08\u30c7\u30fc\u30bf\u652f\u7d66\uff09<\/button>'\n    + '  <\/div>'\n    + '<\/div>'\n    + '<div class=\"toggle-field\">'\n    + '  <div class=\"tf-label\">\u888b\u306e\u4e2d\u306b\u30b7\u30ea\u30ab\u30b2\u30eb\u3092\u5165\u308c\u308b<\/div>'\n    + '  <div class=\"tf-desc\">\u6e7f\u6c17\u3092\u6291\u3048\u3066\u54c1\u8cea\u3092\u4fdd\u3061\u3084\u3059\u304f\u3057\u307e\u3059\u3002' + freshnessFeeText() + '\u8131\u9178\u7d20\u5264\u3068\u4f75\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/div>'\n    + '  <div class=\"toggle-btns\" id=\"optSilica\">'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"true\">' + freshnessButtonText() + '<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"false\">\u5165\u308c\u306a\u3044<\/button>'\n    + '  <\/div>'\n    + '<\/div>';\n    if (selectedPackageSupportsOxygenAbsorber()) {\n      var oxygenPkg = PACKAGES.filter(function(p){ return p.code === wiz.state.pkgCode; })[0];\n      html += '<div class=\"toggle-field\">'\n        + '  <div class=\"tf-label\">\u888b\u306e\u4e2d\u306b\u8131\u9178\u7d20\u5264\u3092\u5165\u308c\u308b<\/div>'\n        + '  <div class=\"tf-desc\">\u9078\u629e\u4e2d\u306e\u300c' + esc(oxygenPkg.name) + '\u300d\u306f\u8131\u9178\u7d20\u5264\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\u9178\u5316\u3092\u6291\u3048\u3066\u54c1\u8cea\u3092\u4fdd\u3061\u3084\u3059\u304f\u3057\u307e\u3059\u3002' + freshnessFeeText() + '\u30b7\u30ea\u30ab\u30b2\u30eb\u3068\u306e\u4f75\u7528\u3082\u53ef\u80fd\u3067\u3059\u3002<\/div>'\n        + '  <div class=\"toggle-btns\" id=\"optOxygenAbsorber\">'\n        + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"true\">' + freshnessButtonText() + '<\/button>'\n        + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"false\">\u5165\u308c\u306a\u3044<\/button>'\n        + '  <\/div>'\n        + '<\/div>';\n    }\n    html += ''\n    + '<div class=\"option-category\">\u691c\u67fb\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\uff08\u8ca9\u58f2\u3059\u308b\u5834\u5408\u306b\u5fc5\u8981\u3067\u3059\uff09<\/div>'\n    + '<div class=\"toggle-field\">'\n    + '  <div class=\"tf-label\">\u5fae\u751f\u7269\uff08\u5927\u8178\u83cc\uff09\u306e\u691c\u67fb\u3092\u3059\u308b<\/div>'\n    + '  <div class=\"tf-desc\">\u98df\u54c1\u3068\u3057\u3066\u5e97\u982d\u30fb\u30cd\u30c3\u30c8\u3067\u8ca9\u58f2\u3059\u308b\u5834\u5408\u306f\u5fc5\u9808\u306e\u691c\u67fb\u3067\u3059\u3002\u8cbb\u7528\u306f1\u30ed\u30c3\u30c8\u3042\u305f\u308a' + yen(MICROBE_FEE) + '\u5186\u3002\u8ca9\u58f2\u4e88\u5b9a\u304c\u3042\u308b\u65b9\u306f\u300c\u691c\u67fb\u3092\u884c\u3046\u300d\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002<\/div>'\n    + '  <div class=\"toggle-btns\" id=\"optMicrobe\">'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"true\">\u691c\u67fb\u3092\u884c\u3046\uff08+' + yen(MICROBE_FEE) + '\u5186\uff09<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"false\">\u691c\u67fb\u306f\u884c\u308f\u306a\u3044<\/button>'\n    + '  <\/div>'\n    + '<\/div>'\n    + '<div class=\"toggle-field\">'\n    + '  <div class=\"tf-label\">\u8cde\u5473\u671f\u9650\u3092\u6c7a\u3081\u308b\u305f\u3081\u306e\u691c\u67fb\u3092\u3059\u308b<\/div>'\n    + '  <div class=\"tf-desc\">\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u8a18\u8f09\u3059\u308b\u8cde\u5473\u671f\u9650\u3092\u6c7a\u3081\u308b\u305f\u3081\u306e\u691c\u67fb\u3067\u3059\u3002\u8cbb\u7528\u306f1\u56de' + yen(SHELF_FEE) + '\u5186\u30023\u30f6\u6708\u30fb6\u30f6\u6708\u306a\u3069\u671f\u9593\u3092\u6307\u5b9a\u3057\u3066\u5b9f\u969b\u306b\u6e2c\u5b9a\u3057\u307e\u3059\u3002<\/div>'\n    + '  <div class=\"toggle-btns\" id=\"optShelf\">'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"true\">\u691c\u67fb\u3092\u884c\u3046\uff08+' + yen(SHELF_FEE) + '\u5186\uff09<\/button>'\n    + '    <button type=\"button\" class=\"toggle-btn\" data-on=\"false\">\u691c\u67fb\u306f\u884c\u308f\u306a\u3044<\/button>'\n    + '  <\/div>'\n    + '<\/div>';\n    return html;\n  }\n  function bindOptionsStep(){\n    ['optSilica','optOxygenAbsorber','optDesign','optMicrobe','optShelf'].forEach(function(id){ initToggle(byId(id), false); });\n    initToggle(byId('optLabel'), 'none');\n    function syncDesignField(){\n      var side = toggleRaw('optLabel');\n      var show = (side === 'front' || side === 'both');\n      byId('optDesignField').style.display = show ? 'block' : 'none';\n      if (!show) {\n        var dw = byId('optDesign');\n        dw.dataset.value = 'false';\n        dw.querySelectorAll('.toggle-btn').forEach(function(b){ b.classList.toggle('on', b.dataset.on === 'false'); });\n      }\n    }\n    byId('optLabel').addEventListener('change', syncDesignField);\n    syncDesignField();\n  }\n\n  function renderPackageGridHTML(selectedCode, weight){\n    var filtered = weight ? PACKAGES.filter(function(p){ return p.maxG >= weight; }) : PACKAGES;\n    if (!filtered.length) return '<div class=\"pkg-empty\">\u3054\u5165\u529b\u306e\u91cf\u304c\u5165\u308b\u888b\u304c\u3042\u308a\u307e\u305b\u3093\u30021\u888b\u306e\u91cf\u3092\u6e1b\u3089\u3057\u3066\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002<\/div>';\n    return '<div class=\"pkg-grid\">' + filtered.map(function(p){\n      return '<div class=\"pkg-card' + (p.code === selectedCode ? ' selected' : '') + '\" data-code=\"' + p.code + '\" onclick=\"AGN.selectPackage(\\'' + p.code + '\\')\">'\n        + '<img decoding=\"async\" class=\"pc-image\" src=\"' + esc(p.img) + '\" alt=\"' + esc(p.name) + '\" loading=\"lazy\">'\n        + '<div class=\"pc-name\">' + esc(p.name) + '<\/div>'\n        + '<div class=\"pc-size\">' + esc(p.size) + '<\/div>'\n        + '<div class=\"pc-price\">' + yen(p.price) + '\u5186\/\u679a<\/div>'\n        + '<div class=\"pc-cap\">\u5165\u308b\u91cf\u306e\u76ee\u5b89\uff1a\u301c' + p.maxG + 'g\u7a0b\u5ea6<\/div>'\n        + '<div class=\"pc-tags\">' + p.tags.map(function(tag){ return '<span class=\"pc-tag\">' + esc(tag) + '<\/span>'; }).join('') + '<\/div>'\n        + '<\/div>';\n    }).join('') + '<\/div>';\n  }\n  function refreshPackageChoices(containerId, inputId){\n    var weight = parseFloat(byId(inputId).value);\n    var available = weight ? PACKAGES.filter(function(p){ return p.maxG >= weight; }) : PACKAGES;\n    if (available.length ? !available.some(function(p){ return p.code === wiz.state.pkgCode; }) : false) wiz.state.pkgCode = available[0].code;\n    var message = weight ? '<div class=\"pkg-filter-note\">1\u888b ' + weight + 'g \u304c\u5165\u308b\u888b\u3060\u3051\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/div>' : '';\n    byId(containerId).innerHTML = message + renderPackageGridHTML(wiz.state.pkgCode, weight);\n  }\n  function renderPackingQuantityHTML(){\n    return '<div class=\"packing-fields\">'\n      + '<label>\u4f5c\u308b\u500b\u6570\uff08\u888b\uff09<\/label>'\n      + '<div class=\"field-note\">\u4f5c\u308a\u305f\u3044\u888b\u6570\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u6700\u4f4e\u30ed\u30c3\u30c8\u306f' + MIN_QTY.toLocaleString() + '\u888b\u304b\u3089\u3067\u3059\u3002<\/div>'\n      + '<input type=\"number\" id=\"wizQty\" min=\"' + MIN_QTY + '\" step=\"' + QTY_STEP + '\" placeholder=\"\u4f8b\uff1a' + MIN_QTY + '\" value=\"' + (wiz.state.qty || '') + '\">'\n      + '<\/div>';\n  }\n  function readPackingQuantity(){\n    var qty = parseInt(byId('wizQty').value, 10);\n    if (!qty || qty < MIN_QTY) { alert('\u4f5c\u308b\u500b\u6570\u306f' + MIN_QTY + '\u888b\u4ee5\u4e0a\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044'); return null; }\n    wiz.state.qty = qty;\n    return wiz.state.qty;\n  }\n\n  function itemOptionsHTML(pool, selected){\n    return pool.map(function(i){\n      var priceLabel = i.price == null ? '\u4fa1\u683c\u306f\u5225\u9014\u304a\u898b\u7a4d\u308a' : (i.price.toLocaleString() + '\u5186\/kg');\n      var key = i.key || i.name, label = i.label || i.name;\n      return '<option value=\"' + esc(key) + '\"' + (key === selected ? ' selected' : '') + '>' + esc(label) + '\uff08' + priceLabel + '\uff09<\/option>';\n    }).join('');\n  }\n  function lookupItem(pool, key){\n    return pool.filter(function(i){ return (i.key || i.name) === key; })[0] || null;\n  }\n  function lookupPrice(pool, key){\n    var found = lookupItem(pool, key);\n    return found ? found.price : null;\n  }\n  \n  function mixMaterialCost(pool, items, weight){\n    var costPerKg = 0, unknownNames = [];\n    items.forEach(function(it){\n      var price = lookupPrice(pool, it.key);\n      if (price > 0) costPerKg += price * (it.ratio \/ 100);\n      else unknownNames.push(it.name);\n    });\n    var allUnknown = items.length > 0 ? unknownNames.length === items.length : false;\n    var cost = costPerKg * (weight \/ 1000);\n    var text = !unknownNames.length ? yen(cost) + '\u5186'\n      : (allUnknown ? unknownNames.join('\u30fb') + '\u306b\u3064\u3044\u3066\u306f\u5225\u9014\u304a\u898b\u7a4d\u308a'\n        : yen(cost) + '\u5186\uff08' + unknownNames.join('\u30fb') + '\u306e\u539f\u6599\u8cbb\u306f\u5225\u9014\u304a\u898b\u7a4d\u308a\uff09');\n    return { cost: cost, text: text };\n  }\n\n  var RATIO_STEP = 5;\n  function itemRowHTML(pool, name, ratio, noRatio){\n    var def = name || (pool[0] ? (pool[0].key || pool[0].name) : '') || '';\n    if (noRatio) {\n      return '<div class=\"item-row\">'\n        + '<select onchange=\"AGN.onRowChange(this)\" data-prev=\"' + esc(def) + '\">' + itemOptionsHTML(pool, def) + '<\/select>'\n        + '<button type=\"button\" onclick=\"AGN.removeRow(this)\">\u524a\u9664<\/button>'\n        + '<\/div>';\n    }\n    return '<div class=\"item-row\">'\n      + '<select onchange=\"AGN.onRowChange(this)\" data-prev=\"' + esc(def) + '\">' + itemOptionsHTML(pool, def) + '<\/select>'\n      + '<input type=\"number\" placeholder=\"\u6bd4\u7387%\uff085\u523b\u307f\uff09\" min=\"0\" max=\"100\" step=\"' + RATIO_STEP + '\" value=\"' + (ratio != null ? ratio : '') + '\" oninput=\"AGN.updateRatioTotal()\">'\n      + '<button type=\"button\" onclick=\"AGN.removeRow(this)\">\u524a\u9664<\/button>'\n      + '<\/div>';\n  }\n  function getRowItems(containerId){\n    var rows = SCOPE.querySelectorAll('#' + containerId + ' .item-row');\n    var items = [];\n    rows.forEach(function(r){\n      var key = r.querySelector('select').value;\n      var master = lookupItem(ITEMS, key) || lookupItem(TEA_LEAF_ITEMS, key) || lookupItem(COFFEE_ITEMS, key);\n      var ratioInput = r.querySelector('input');\n      var ratio = ratioInput ? parseFloat(ratioInput.value) : null;\n      if (key) items.push({ key: key, name: master ? master.label : key, ratio: ratio });\n    });\n    return items;\n  }\n  function updateRatioMeterUI(prefix, total){\n    var valueEl = byId(prefix + 'RatioMeterValue');\n    var barEl = byId(prefix + 'RatioMeterBar');\n    var warnEl = byId(prefix + 'RatioMeterWarning');\n    if (!valueEl) return;\n    var isOk = total === 100;\n    valueEl.textContent = total + '%';\n    valueEl.className = 'ratio-meter-value ' + (isOk ? 'ok' : 'ng');\n    barEl.style.width = Math.min(total, 100) + '%';\n    barEl.className = 'ratio-meter-bar ' + (isOk ? 'ok' : '');\n    warnEl.className = 'ratio-meter-warning' + (isOk ? ' ok' : (total === 0 ? ' idle' : ''));\n    if (isOk) warnEl.textContent = '\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\u304c100%\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u307e\u307e\u6b21\u306b\u304a\u9032\u307f\u3044\u305f\u3060\u3051\u307e\u3059\u3002';\n    else if (total === 0) warnEl.textContent = '\u305d\u308c\u305e\u308c\u306e\u884c\u306b\u6bd4\u7387\uff08%\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5408\u8a08\u304c100%\u306b\u306a\u308c\u3070OK\u3067\u3059\u3002';\n    else if (total < 100) warnEl.textContent = '\u914d\u5408\u6bd4\u7387\u304c' + (100 - total).toFixed(1).replace(\/\\.0$\/, '') + '%\u8db3\u308a\u3066\u3044\u307e\u305b\u3093\u3002';\n    else warnEl.textContent = '\u914d\u5408\u6bd4\u7387\u304c' + (total - 100).toFixed(1).replace(\/\\.0$\/, '') + '%\u8d85\u904e\u3057\u3066\u3044\u307e\u3059\u3002';\n  }\n\n  window.cart = [];\n  function renderCartBox(){\n    var box = byId('cartBox');\n    if (cart.length === 0) {\n      box.innerHTML = '<div class=\"cart-empty\">\u307e\u3060\u5546\u54c1\u304c\u9078\u3070\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e0a\u306e\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u4f5c\u308a\u305f\u3044\u5546\u54c1\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002<\/div>';\n    } else {\n      box.innerHTML = cart.map(function(item, idx){\n        return '<div class=\"cart-item\">'\n          + '<div><span class=\"ci-badge\">' + esc(item.badge) + '<\/span>'\n          + '<div class=\"ci-name\">' + esc(item.name) + '<\/div>'\n          + '<div class=\"ci-sub\">' + esc(item.sub) + '<\/div>'\n          + '<div class=\"ci-price\">' + yen(item.total) + '\u5186\uff08\u7a0e\u629c\uff09<\/div><\/div>'\n          + '<button class=\"ci-remove\" onclick=\"AGN.removeCartItem(' + idx + ')\">\u524a\u9664<\/button>'\n          + '<\/div>';\n      }).join('');\n    }\n    byId('goEstimateBtn').disabled = cart.length === 0;\n    byId('cartLimitNote').style.display = cart.length >= 5 ? 'block' : 'none';\n    SCOPE.querySelectorAll('.reg-btn').forEach(function(b){\n      b.style.opacity = cart.length >= 5 ? '.4' : '';\n      b.style.pointerEvents = cart.length >= 5 ? 'none' : '';\n    });\n  }\n  function removeCartItem(idx){ cart.splice(idx, 1); renderCartBox(); }\n  function addToCart(item){ cart.push(item); renderCartBox(); goStep('stepHome'); }\n\n  SCOPE.querySelectorAll('.reg-btn').forEach(function(btn){\n    btn.addEventListener('click', function(){\n      if (cart.length >= 5) return;\n      startWizard(btn.dataset.type);\n    });\n  });\n\n  var wiz = { type: null, stepIndex: 0, steps: [], state: {} };\n\n  var WIZ_DEFS = {\n    vegSingle:   { family: 'single', badge: '\u4e7e\u71e5\u91ce\u83dc', pool: VEG_ITEMS },\n    fruitSingle: { family: 'single', badge: '\u30c9\u30e9\u30a4\u30d5\u30eb\u30fc\u30c4', pool: FRUIT_ITEMS },\n    vegMixPreset:{ family: 'vegMixPreset', badge: '\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9' },\n    vegMixCustom:{ family: 'vegMixCustom', badge: '\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9\uff08\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9\uff09' },\n    teaPreset:   { family: 'flavor', badge: '\u304a\u8336', formatLabel: '\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0', flavorLabel: '\u30d6\u30ec\u30f3\u30c9' },\n    coffeePreset:{ family: 'flavor', badge: '\u30b3\u30fc\u30d2\u30fc', formatLabel: '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af', flavorLabel: '\u30d6\u30ec\u30f3\u30c9' },\n    teaCustom:   { family: 'blendCustom', badge: '\u304a\u8336\uff08\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9\uff09', kind: 'tea', basePool: TEA_LEAF_ITEMS, baseLabel: '\u8336\u8449' },\n    coffeeCustom:{ family: 'blendCustom', badge: '\u30b3\u30fc\u30d2\u30fc\uff08\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9\uff09', kind: 'coffee', basePool: COFFEE_ITEMS, baseLabel: '\u30b3\u30fc\u30d2\u30fc\u8c46' },\n  };\n  var FAMILY_STEPS = {\n    single: ['item', 'options'],\n    vegMixPreset: ['blend', 'options'],\n    vegMixCustom: ['ingredients', 'package', 'options'],\n    flavor: ['flavor', 'options'],\n    blendCustom: ['method', 'ingredients', 'format', 'options'],\n  };\n\n  function startWizard(type){\n    wiz.type = type;\n    wiz.def = WIZ_DEFS[type];\n    wiz.steps = FAMILY_STEPS[wiz.def.family];\n    wiz.stepIndex = 0;\n    wiz.state = {};\n    goStep('stepWizard');\n    renderWizStep();\n  }\n\n  function renderWizStep(){\n    var stepKey = wiz.steps[wiz.stepIndex];\n    byId('wizIntro').style.display = 'none';\n    byId('wizBackBtn').style.display = 'inline-block';\n    byId('wizBackBtn').textContent = wiz.stepIndex === 0 ? '\u5546\u54c1\u9078\u3073\u306b\u623b\u308b' : '\u524d\u306b\u623b\u308b';\n    byId('wizNextBtn').textContent = (wiz.stepIndex === wiz.steps.length - 1) ? '\u3053\u306e\u5185\u5bb9\u3067\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0\u3059\u308b' : '\u6b21\u3078\u9032\u3080';\n    RENDERERS[stepKey]();\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  }\n\n  byId('wizBackBtn').addEventListener('click', function(){\n    if (wiz.stepIndex === 0) { goStep('stepHome'); return; }\n    wiz.stepIndex--;\n    renderWizStep();\n  });\n  byId('wizNextBtn').addEventListener('click', function(){\n    var stepKey = wiz.steps[wiz.stepIndex];\n    if (!VALIDATORS[stepKey]()) return;\n    if (wiz.stepIndex === wiz.steps.length - 1) {\n      finishWizard();\n      return;\n    }\n    wiz.stepIndex++;\n    renderWizStep();\n  });\n\n  var RENDERERS = {};\n  var VALIDATORS = {};\n\n  RENDERERS.item = function(){\n    var def = wiz.def;\n    byId('wizTitle').textContent = def.badge + '\u306e\u4e2d\u8eab\u30fb1\u888b\u306e\u91cf\u30fb\u888b\u30fb\u500b\u6570\u3092\u6c7a\u3081\u3066\u304f\u3060\u3055\u3044';\n    var sel = wiz.state.itemName || (def.pool[0] ? (def.pool[0].key || def.pool[0].name) : '');\n    var pkg = wiz.state.pkgCode || PACKAGES[6].code;\n    byId('wizBody').innerHTML = ''\n      + '<label>\u3069\u306e' + def.badge + '\u3067\u4f5c\u308a\u307e\u3059\u304b\uff1f<\/label>'\n      + '<select id=\"wizItemSelect\">' + itemOptionsHTML(def.pool, sel) + '<\/select>'\n      + '<label>1\u888b\u306b\u5165\u308c\u308b\u91cf\uff08g\uff09<\/label>'\n      + '<div class=\"field-note\">1\u888b\u3042\u305f\u308a10g\u301c80g\u306e\u7bc4\u56f2\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u5165\u529b\u3059\u308b\u3068\u3001\u305d\u306e\u91cf\u304c\u5165\u308b\u888b\u3060\u3051\u304c\u4e0b\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/div>'\n      + '<input type=\"number\" id=\"wizWeight\" min=\"10\" max=\"80\" step=\"1\" placeholder=\"\u4f8b\uff1a30\" value=\"' + (wiz.state.weight || '') + '\">'\n      + '<label>\u5546\u54c1\u3092\u5165\u308c\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u30921\u3064\u9078\u3093\u3067\u304f\u3060\u3055\u3044<\/label>'\n      + '<div id=\"wizPackageChoices\"><\/div>'\n      + renderPackingQuantityHTML()\n      + '<div class=\"notice\" style=\"margin-top:16px;background:var(--green-light);color:var(--text);\">1,000\u888b\u4ee5\u4e0a\u3064\u304f\u308b\u3068\u539f\u6599\u8cbb\u304c\u5272\u5f15\u306b\u306a\u308a\u30011\u888b\u3042\u305f\u308a\u306e\u5358\u4fa1\u304c\u5b89\u304f\u306a\u308a\u307e\u3059\u3002<\/div>';\n    if (!wiz.state.pkgCode) wiz.state.pkgCode = pkg;\n    refreshPackageChoices('wizPackageChoices', 'wizWeight');\n    byId('wizWeight').addEventListener('input', function(){ refreshPackageChoices('wizPackageChoices', 'wizWeight'); });\n  };\n  window.selectPackage = function(code){\n    wiz.state.pkgCode = code;\n    SCOPE.querySelectorAll('.pkg-card').forEach(function(c){ c.classList.toggle('selected', c.dataset.code === code); });\n  };\n  VALIDATORS.item = function(){\n    var def = wiz.def;\n    var name = byId('wizItemSelect').value;\n    var weight = parseFloat(byId('wizWeight').value);\n    var pkgCode = wiz.state.pkgCode;\n    if (!weight || weight < DRY_BAG_MIN_G || weight > DRY_BAG_MAX_G) { alert('1\u888b\u306b\u5165\u308c\u308b\u91cf\u306f10g\u301c80g\u306e\u7bc4\u56f2\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044'); return false; }\n    if (!pkgCode) { alert('\u5546\u54c1\u3092\u5165\u308c\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var pkg = PACKAGES.filter(function(p){ return p.code === pkgCode; })[0];\n    if (!pkg || pkg.maxG < weight) { alert('\u5165\u529b\u3057\u305f\u91cf\u304c\u5165\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var qty = readPackingQuantity();\n    if (!qty) return false;\n    wiz.state.itemName = name;\n    wiz.state.weight = weight;\n    return true;\n  };\n\n  function finishSingle(){\n    var def = wiz.def;\n    var st = wiz.state;\n    var pkg = PACKAGES.filter(function(p){ return p.code === st.pkgCode; })[0];\n    var price = lookupPrice(def.pool, st.itemName);\n    var itemLabel = (lookupItem(def.pool, st.itemName) || {}).label || st.itemName;\n    var materialCost = (price || 0) * (st.weight \/ 1000);\n    var bulkApplied = st.qty >= 1000;\n    if (bulkApplied) materialCost *= BULK_DISCOUNT_RATE;\n    var opt = collectOptions();\n    var perBagFee = optionPerBagFee(opt);\n    var perBag = materialCost + pkg.price + FILL_COST + perBagFee;\n    var bagTotal = perBag * st.qty;\n    var flatFee = optionFlatFee(opt);\n    var grandTotal = bagTotal + flatFee;\n\n    var lines = [\n      ['\u54c1\u76ee', itemLabel],\n      ['\u539f\u6599\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', price == null ? '\u5225\u9014\u304a\u898b\u7a4d\u308a' : yen(materialCost) + '\u5186' + (bulkApplied ? '\uff081,000\u888b\u4ee5\u4e0a\u5272\u5f15\u9069\u7528\uff09' : '')],\n      ['\u30d1\u30c3\u30b1\u30fc\u30b8\uff08' + pkg.name + ' ' + pkg.size + '\uff09', yen(pkg.price) + '\u5186\/\u888b'],\n      ['\u888b\u8a70\u3081\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', yen(FILL_COST) + '\u5186'],\n    ];\n    lines = lines.concat(optionLines(opt));\n    lines.push(['1\u888b\u5358\u4fa1 \u5c0f\u8a08', yen(perBag) + '\u5186\/\u888b']);\n    lines.push(['\u5c0f\u8a08\uff08' + st.qty.toLocaleString() + '\u888b\uff09', yen(bagTotal) + '\u5186']);\n    lines = lines.concat(optionExtraLines(opt));\n    lines.push(['\u3053\u306e\u5546\u54c1\u306e\u5c0f\u8a08\uff08\u7a0e\u629c\uff09', yen(grandTotal) + '\u5186', true]);\n\n    return {\n      badge: def.badge,\n      name: itemLabel,\n      sub: st.weight + 'g \u00d7 ' + st.qty.toLocaleString() + '\u888b\uff08' + pkg.name + '\uff09',\n      lines: lines,\n      total: grandTotal,\n    };\n  }\n\n  RENDERERS.blend = function(){\n    byId('wizTitle').textContent = '\u3069\u306e\u30d6\u30ec\u30f3\u30c9\uff08\u5473\u306e\u7d44\u307f\u5408\u308f\u305b\uff09\u306b\u3057\u307e\u3059\u304b\uff1f';\n    byId('wizIntro').style.display = 'block';\n    byId('wizIntro').textContent = '\u304a\u597d\u307f\u306e\u5546\u54c1\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002\u5185\u5bb9\u30fb\u5bb9\u91cf\u30fb\u4fa1\u683c\u306f\u5404\u5546\u54c1\u306e\u30ab\u30fc\u30c9\u3067\u3054\u78ba\u8a8d\u3044\u305f\u3060\u3051\u307e\u3059\u3002';\n    var idx = wiz.state.blendIdx;\n    byId('wizBody').innerHTML = ''\n      + '<div class=\"blend-cards\">' + BLENDS.map(function(b, i){\n          return '<div class=\"blend-card' + (i === idx ? ' selected' : '') + '\" data-idx=\"' + i + '\" onclick=\"AGN.selectBlend(' + i + ')\">'\n            + '<div class=\"bname\">' + esc((b.no ? b.no + ' ' : '') + b.name) + '<\/div>'\n            + '<div class=\"bratio\">' + esc(b.detail || (b.ratio ? Object.keys(b.ratio).map(function(k){ return k + ' ' + b.ratio[k] + '%'; }).join('\uff0f') : '')) + '<\/div>'\n            + '<div class=\"bprices\"><div>' + yen(b.grams || VEGMIX_FIXED_WEIGHT) + 'g\uff1a' + yen(b.price[500]) + '\u5186\uff0f\u888b' + (productDiscountQty(b) != null ? '\u30fb' + yen(productDiscountQty(b)) + '\u888b\u4ee5\u4e0a ' + yen(b.price[1000]) + '\u5186\uff0f\u888b' : '') + '<\/div><\/div>'\n            + '<\/div>';\n        }).join('') + '<\/div>'\n      + renderPackingQuantityHTML();\n  };\n  window.selectBlend = function(idx){\n    wiz.state.blendIdx = idx;\n    SCOPE.querySelectorAll('.blend-card').forEach(function(c){ c.classList.toggle('selected', parseInt(c.dataset.idx, 10) === idx); });\n  };\n  VALIDATORS.blend = function(){\n    if (wiz.state.blendIdx == null) { alert('\u30d6\u30ec\u30f3\u30c9\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var qty = readPackingQuantity();\n    if (!qty) return false;\n    return true;\n  };\n  function finishVegMixPreset(){\n    var st = wiz.state;\n    var blend = BLENDS[st.blendIdx];\n    var discountQty = productDiscountQty(blend);\n    var discountApplied = discountQty != null ? st.qty >= discountQty : false;\n    var perBag = productUnitPrice(blend, st.qty);\n    var bagTotal = perBag * st.qty;\n    var opt = collectOptions();\n    var perBagFee = optionPerBagFee(opt);\n    var flatFee = optionFlatFee(opt);\n    var grandTotal = bagTotal + (perBagFee * st.qty) + flatFee;\n    var lines = [\n      ['\u30d6\u30ec\u30f3\u30c9', (blend.no ? blend.no + ' ' : '') + blend.name],\n      ['\u5185\u5bb9', blend.detail || (blend.ratio ? Object.keys(blend.ratio).map(function(k){ return k + ' ' + blend.ratio[k] + '%'; }).join('\uff0f') : '')],\n      ['1\u888b\u5358\u4fa1\uff08' + (blend.grams || VEGMIX_FIXED_WEIGHT) + 'g\u30fb\u30d1\u30c3\u30b1\u30fc\u30b8\u8fbc\u307f' + (discountApplied ? '\u30fb' + yen(discountQty) + '\u888b\u4ee5\u4e0a\u5272\u5f15' : '') + '\uff09', yen(perBag) + '\u5186\/\u888b'],\n    ];\n    lines = lines.concat(optionLines(opt));\n    lines.push(['\u5c0f\u8a08\uff08' + st.qty.toLocaleString() + '\u888b\uff09', yen(bagTotal + perBagFee * st.qty) + '\u5186']);\n    lines = lines.concat(optionExtraLines(opt));\n    lines.push(['\u3053\u306e\u5546\u54c1\u306e\u5c0f\u8a08\uff08\u7a0e\u629c\uff09', yen(grandTotal) + '\u5186', true]);\n    return {\n      badge: '\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9',\n      name: (blend.no ? blend.no + ' ' : '') + blend.name,\n      sub: (blend.grams || VEGMIX_FIXED_WEIGHT) + 'g \u00d7 ' + st.qty.toLocaleString() + '\u888b',\n      lines: lines,\n      total: grandTotal,\n    };\n  }\n\n  RENDERERS.ingredients = function(){\n    byId('wizTitle').textContent = '\u3069\u306e\u91ce\u83dc\u3092\u4f55\uff05\u305a\u3064\u5165\u308c\u307e\u3059\u304b\uff1f';\n    byId('wizIntro').style.display = 'block';\n    byId('wizIntro').textContent = '\u5165\u308c\u305f\u3044\u91ce\u83dc\u3092\u9078\u3093\u3067\u3001\u305d\u308c\u305e\u308c\u306e\u5272\u5408\uff08\uff05\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5408\u8a08\u304c\u3061\u3087\u3046\u3069100%\u306b\u306a\u308b\u3088\u3046\u306b\u30015%\u304d\u3056\u307f\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u91ce\u83dc\u306f20\u7a2e\u985e\u307e\u3067\u7d44\u307f\u5408\u308f\u305b\u3089\u308c\u307e\u3059\u3002\u203b\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408\u306b\u306f\u521d\u56de\u306e\u307f' + yen(INIT_FEE_VEGMIX) + '\u5186\uff08\u914d\u5408\u306e\u8a2d\u8a08\u30fb\u8a66\u4f5c\u8cbb\u7528\uff09\u304c\u304b\u304b\u308a\u307e\u3059\u3002';\n    var rows = wiz.state.rows || [];\n    byId('wizBody').innerHTML = ''\n      + '<div class=\"ratio-meter\">'\n      + '  <div class=\"ratio-meter-head\"><div class=\"ratio-meter-label\">\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08<\/div><div class=\"ratio-meter-value ng\" id=\"vmRatioMeterValue\">0%<\/div><\/div>'\n      + '  <div class=\"ratio-meter-track\"><div class=\"ratio-meter-bar\" id=\"vmRatioMeterBar\" style=\"width:0%;\"><\/div><\/div>'\n      + '  <div class=\"ratio-meter-warning\" id=\"vmRatioMeterWarning\"><\/div>'\n      + '<\/div>'\n      + '<div id=\"vmItemRows\">' + rows.map(function(r){ return itemRowHTML(VEG_ITEMS, r.name, r.ratio); }).join('') + '<\/div>'\n      + '<button type=\"button\" class=\"add-row-btn\" onclick=\"AGN.addVmRow()\">\uff0b \u91ce\u83dc\u3092\u8ffd\u52a0<\/button>';\n    if (rows.length === 0) addVmRow();\n    else updateVmRatioTotal();\n  };\n  window.addVmRow = function(){\n    var rows = SCOPE.querySelectorAll('#vmItemRows .item-row');\n    if (rows.length >= 20) { alert('\u91ce\u83dc\u306f\u6700\u592720\u7a2e\u985e\u307e\u3067\u3067\u3059\u3002'); return; }\n    byId('vmItemRows').insertAdjacentHTML('beforeend', itemRowHTML(VEG_ITEMS));\n    updateVmRatioTotal();\n  };\n  window.onRowChange = function(sel){\n    var rows = sel.parentElement.parentElement.querySelectorAll('select');\n    var dup = Array.prototype.some.call(rows, function(s){ return s !== sel ? s.value === sel.value : false; });\n    if (dup) { alert('\u300c' + sel.value + '\u300d\u306f\u3059\u3067\u306b\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059\u3002'); sel.value = sel.dataset.prev; return; }\n    sel.dataset.prev = sel.value;\n    updateVmRatioTotal();\n    updateTcRatioTotal();\n  };\n  window.removeRow = function(btn){\n    btn.parentElement.remove();\n    updateVmRatioTotal();\n    updateTcRatioTotal();\n  };\n  function updateVmRatioTotal(){\n    var el = byId('vmRatioMeterValue');\n    if (!el) return;\n    var total = 0;\n    SCOPE.querySelectorAll('#vmItemRows .item-row input').forEach(function(inp){ var v = parseFloat(inp.value); if (!isNaN(v)) total += v; });\n    var isOk = total === 100;\n    el.textContent = total + '%';\n    el.className = 'ratio-meter-value ' + (isOk ? 'ok' : 'ng');\n    byId('vmRatioMeterBar').style.width = Math.min(total, 100) + '%';\n    byId('vmRatioMeterBar').className = 'ratio-meter-bar ' + (isOk ? 'ok' : '');\n    var warnEl = byId('vmRatioMeterWarning');\n    warnEl.className = 'ratio-meter-warning' + (isOk ? ' ok' : (total === 0 ? ' idle' : ''));\n    warnEl.textContent = isOk ? '\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\u304c100%\u306b\u306a\u308a\u307e\u3057\u305f\u3002' : (total === 0 ? '\u305d\u308c\u305e\u308c\u306e\u884c\u306b\u6bd4\u7387\uff08%\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5408\u8a08\u304c100%\u306b\u306a\u308c\u3070OK\u3067\u3059\u3002' : total < 100 ? ('\u914d\u5408\u6bd4\u7387\u304c' + (100 - total).toFixed(1).replace(\/\\.0$\/, '') + '%\u8db3\u308a\u3066\u3044\u307e\u305b\u3093\u3002') : ('\u914d\u5408\u6bd4\u7387\u304c' + (total - 100).toFixed(1).replace(\/\\.0$\/, '') + '%\u8d85\u904e\u3057\u3066\u3044\u307e\u3059\u3002'));\n  }\n  VALIDATORS.ingredients = function(){\n    if (wiz.def.family === 'vegMixCustom') {\n      var items = getRowItems('vmItemRows');\n      if (items.length < 1) { alert('\u91ce\u83dc\u30921\u7a2e\u985e\u4ee5\u4e0a\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002'); return false; }\n      if (items.some(function(i){ return !i.ratio || i.ratio <= 0; })) { alert('\u3059\u3079\u3066\u306e\u884c\u306b\u6bd4\u7387\uff08%\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      if (items.some(function(i){ return i.ratio % RATIO_STEP !== 0; })) { alert('\u914d\u5408\u6bd4\u7387\u306f5%\u523b\u307f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      var total = items.reduce(function(s, i){ return s + i.ratio; }, 0);\n      if (Math.round(total) !== 100) { alert('\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\u3092100%\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      wiz.state.items = items;\n      wiz.state.rows = items;\n      return true;\n    }\n    return VALIDATORS.tcIngredients();\n  };\n\n  RENDERERS.package = function(){\n    byId('wizTitle').textContent = '1\u888b\u306e\u91cf\u30fb\u888b\u306e\u7a2e\u985e\u30fb\u4f5c\u308b\u500b\u6570\u3092\u6c7a\u3081\u3066\u304f\u3060\u3055\u3044';\n    var pkg = wiz.state.pkgCode || PACKAGES[6].code;\n    byId('wizBody').innerHTML = ''\n      + '<label>1\u888b\u306b\u5165\u308c\u308b\u91cf\uff08g\uff09<\/label>'\n      + '<div class=\"field-note\">1\u888b\u3042\u305f\u308a10g\u301c80g\u306e\u7bc4\u56f2\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u5165\u529b\u3059\u308b\u3068\u3001\u305d\u306e\u91cf\u304c\u5165\u308b\u888b\u3060\u3051\u304c\u4e0b\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/div>'\n      + '<input type=\"number\" id=\"wizWeight\" min=\"10\" max=\"80\" step=\"1\" placeholder=\"\u4f8b\uff1a30\" value=\"' + (wiz.state.weight || '') + '\">'\n      + '<label>\u5546\u54c1\u3092\u5165\u308c\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u30921\u3064\u9078\u3093\u3067\u304f\u3060\u3055\u3044<\/label>'\n      + '<div id=\"wizPackageChoices\"><\/div>'\n      + renderPackingQuantityHTML();\n    if (!wiz.state.pkgCode) wiz.state.pkgCode = pkg;\n    refreshPackageChoices('wizPackageChoices', 'wizWeight');\n    byId('wizWeight').addEventListener('input', function(){ refreshPackageChoices('wizPackageChoices', 'wizWeight'); });\n  };\n  VALIDATORS.package = function(){\n    var weight = parseFloat(byId('wizWeight').value);\n    if (!weight || weight < DRY_BAG_MIN_G || weight > DRY_BAG_MAX_G) { alert('1\u888b\u306b\u5165\u308c\u308b\u91cf\u306f10g\u301c80g\u306e\u7bc4\u56f2\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044'); return false; }\n    if (!wiz.state.pkgCode) { alert('\u5546\u54c1\u3092\u5165\u308c\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var pkg = PACKAGES.filter(function(p){ return p.code === wiz.state.pkgCode; })[0];\n    if (!pkg || pkg.maxG < weight) { alert('\u5165\u529b\u3057\u305f\u91cf\u304c\u5165\u308b\u888b\uff08\u30d1\u30c3\u30b1\u30fc\u30b8\uff09\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var qty = readPackingQuantity();\n    if (!qty) return false;\n    wiz.state.weight = weight;\n    return true;\n  };\n  function finishVegMixCustom(){\n    var st = wiz.state;\n    var pkg = PACKAGES.filter(function(p){ return p.code === st.pkgCode; })[0];\n    var material = mixMaterialCost(ITEMS, st.items, st.weight);\n    var materialCost = material.cost;\n    var opt = collectOptions();\n    var perBagFee = optionPerBagFee(opt);\n    var perBag = materialCost + pkg.price + FILL_COST + perBagFee;\n    var bagTotal = perBag * st.qty;\n    var flatFee = INIT_FEE_VEGMIX + optionFlatFee(opt);\n    var grandTotal = bagTotal + flatFee;\n    var ratioText = st.items.map(function(i){ return i.name + ' ' + i.ratio + '%'; }).join('\uff0f');\n    var lines = [\n      ['\u914d\u5408', ratioText],\n      ['\u539f\u6599\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', material.text],\n      ['\u30d1\u30c3\u30b1\u30fc\u30b8\uff08' + pkg.name + ' ' + pkg.size + '\uff09', yen(pkg.price) + '\u5186\/\u888b'],\n      ['\u888b\u8a70\u3081\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', yen(FILL_COST) + '\u5186'],\n    ];\n    lines = lines.concat(optionLines(opt));\n    lines.push(['1\u888b\u5358\u4fa1 \u5c0f\u8a08', yen(perBag) + '\u5186\/\u888b']);\n    lines.push(['\u5c0f\u8a08\uff08' + st.qty.toLocaleString() + '\u888b\uff09', yen(bagTotal) + '\u5186']);\n    lines.push(['\u521d\u56de\u30d6\u30ec\u30f3\u30c9\u521d\u671f\u8cbb\u7528', yen(INIT_FEE_VEGMIX) + '\u5186']);\n    lines = lines.concat(optionExtraLines(opt));\n    lines.push(['\u3053\u306e\u5546\u54c1\u306e\u5c0f\u8a08\uff08\u7a0e\u629c\u30fb\u521d\u56de\u8cbb\u7528\u8fbc\u307f\uff09', yen(grandTotal) + '\u5186', true]);\n    return {\n      badge: '\u4e7e\u71e5\u91ce\u83dc\u30df\u30c3\u30af\u30b9\uff08\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9\uff09',\n      name: '\u30aa\u30ea\u30b8\u30ca\u30eb\u914d\u5408',\n      sub: st.weight + 'g \u00d7 ' + st.qty.toLocaleString() + '\u888b\uff08' + pkg.name + '\uff09',\n      lines: lines,\n      total: grandTotal,\n    };\n  }\n\n  function currentPresetProducts(){ return wiz.type === 'coffeePreset' ? COFFEE_PRESET_PRODUCTS : TEA_PRESET_PRODUCTS; }\n  RENDERERS.flavor = function(){\n    var def = wiz.def;\n    var products = currentPresetProducts();\n    var idx = wiz.state.presetIdx;\n    byId('wizTitle').textContent = '\u3069\u306e' + def.flavorLabel + '\u3067\u4f5c\u308a\u307e\u3059\u304b\uff1f';\n    byId('wizIntro').style.display = 'block';\n    byId('wizIntro').textContent = '\u304a\u597d\u307f\u306e\u5546\u54c1\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002\u5185\u5bb9\u30fb\u5bb9\u91cf\u30fb\u4fa1\u683c\u306f\u5404\u5546\u54c1\u306e\u30ab\u30fc\u30c9\u3067\u3054\u78ba\u8a8d\u3044\u305f\u3060\u3051\u307e\u3059\u3002';\n    byId('wizBody').innerHTML = ''\n      + '<div class=\"blend-cards\">' + products.map(function(p, i){\n          return '<div class=\"blend-card' + (i === idx ? ' selected' : '') + '\" data-idx=\"' + i + '\" onclick=\"AGN.selectPresetProduct(' + i + ')\">'\n            + '<div class=\"bname\">' + esc(p.name) + '<\/div>'\n            + (p.detail ? '<div class=\"bratio\">' + esc(p.detail) + '<\/div>' : '')\n            + '<div class=\"bprices\"><div>' + yen(p.grams) + 'g\uff1a' + yen(p.price[500]) + '\u5186\uff0f\u888b' + (productDiscountQty(p) != null ? '\u30fb' + yen(productDiscountQty(p)) + '\u888b\u4ee5\u4e0a ' + yen(p.price[1000]) + '\u5186\uff0f\u888b' : '') + '<\/div><\/div>'\n            + '<\/div>';\n        }).join('') + '<\/div>'\n      + '<label>\u4f5c\u308b\u500b\u6570\uff08\u888b\uff09<\/label>'\n      + '<div class=\"field-note\">\u4f55\u888b\u4f5c\u308b\u304b\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u6700\u4f4e\u30ed\u30c3\u30c8\u306f' + MIN_QTY.toLocaleString() + '\u888b\u304b\u3089\u3067\u3059\u3002<\/div>'\n      + '<input type=\"number\" id=\"wizQty\" min=\"' + MIN_QTY + '\" step=\"' + QTY_STEP + '\" placeholder=\"\u4f8b\uff1a' + MIN_QTY + '\" value=\"' + (wiz.state.qty || '') + '\">';\n  };\n  window.selectPresetProduct = function(idx){\n    wiz.state.presetIdx = idx;\n    SCOPE.querySelectorAll('.blend-card').forEach(function(c){ c.classList.toggle('selected', parseInt(c.dataset.idx, 10) === idx); });\n  };\n  VALIDATORS.flavor = function(){\n    if (wiz.state.presetIdx == null || !currentPresetProducts()[wiz.state.presetIdx]) { alert(wiz.def.flavorLabel + '\u3092\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    var qty = parseInt(byId('wizQty').value, 10);\n    if (!qty || qty < MIN_QTY) { alert('\u4f5c\u308b\u500b\u6570\u306f' + MIN_QTY + '\u888b\u4ee5\u4e0a\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044'); return false; }\n    wiz.state.qty = qty;\n    return true;\n  };\n  function finishFlavor(){\n    var def = wiz.def;\n    var st = wiz.state;\n    var product = currentPresetProducts()[st.presetIdx];\n    var opt = collectOptions();\n    var perBagFee = optionPerBagFee(opt);\n    var discountQty = productDiscountQty(product);\n    var discountApplied = discountQty != null ? st.qty >= discountQty : false;\n    var perBagBase = productUnitPrice(product, st.qty);\n    var perBag = perBagBase + perBagFee;\n    var bagTotal = perBag * st.qty;\n    var flatFee = optionFlatFee(opt);\n    var grandTotal = bagTotal + flatFee;\n    var lines = [\n      [def.flavorLabel, product.name],\n      ...(product.detail ? [['\u5185\u5bb9', product.detail]] : []),\n      ['\u4ed5\u4e0a\u3052\u5f62\u614b', def.formatLabel + '\uff08' + product.grams + 'g\u30fb1\u888b1\u500b\uff09'],\n      ['\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u767b\u9332\u5358\u4fa1' + (discountApplied ? '\uff08' + yen(discountQty) + '\u888b\u4ee5\u4e0a\u5272\u5f15\uff09' : ''), yen(perBagBase) + '\u5186\/\u888b'],\n      ['1\u888b\u5358\u4fa1 \u5c0f\u8a08', yen(perBag) + '\u5186\/\u888b'],\n    ];\n    lines = lines.concat(optionLines(opt));\n    lines.push(['\u5c0f\u8a08\uff08' + st.qty.toLocaleString() + '\u888b\uff09', yen(bagTotal) + '\u5186']);\n    lines = lines.concat(optionExtraLines(opt));\n    lines.push(['\u3053\u306e\u5546\u54c1\u306e\u5c0f\u8a08\uff08\u7a0e\u629c\uff09', yen(grandTotal) + '\u5186', true]);\n    return {\n      badge: def.badge,\n      name: product.name,\n      sub: def.formatLabel + '1\u500b\uff08' + product.grams + 'g\uff09\u00d7 ' + st.qty.toLocaleString() + '\u888b',\n      lines: lines,\n      total: grandTotal,\n    };\n  }\n\n  RENDERERS.method = function(){\n    var def = wiz.def;\n    byId('wizTitle').textContent = '\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u914d\u5408\u306f\u3001\u3069\u3061\u3089\u306e\u65b9\u6cd5\u3067\u6c7a\u3081\u307e\u3059\u304b\uff1f';\n    byId('wizIntro').style.display = 'block';\n    byId('wizIntro').textContent = '\u3054\u81ea\u8eab\u3067\u914d\u5408\u3092\u6c7a\u3081\u308b\u65b9\u6cd5\u3068\u3001\u5f0a\u793e\u306b\u30ec\u30b7\u30d4\u4f5c\u308a\u3092\u304a\u307e\u304b\u305b\u3044\u305f\u3060\u304f\u65b9\u6cd5\u304c\u9078\u3079\u307e\u3059\u3002\u3069\u3061\u3089\u306e\u5834\u5408\u3082\u3054\u6ce8\u6587\u524d\u306b\u5fc5\u305a\u8a66\u4f5c\u30b5\u30f3\u30d7\u30eb\u3092\u304a\u4f5c\u308a\u3057\u3066\u304a\u5c4a\u3051\u3057\u307e\u3059\u3002\u203b\u30b5\u30f3\u30d7\u30eb\u306e\u5f8c\u306b\u88fd\u9020\u3078\u9032\u307e\u306a\u304b\u3063\u305f\u5834\u5408\u3067\u3082\u3001\u4e0b\u8a18\u306e\u8cbb\u7528\u306f\u767a\u751f\u3057\u307e\u3059\u306e\u3067\u3054\u4e86\u627f\u304f\u3060\u3055\u3044\u3002';\n    var sel = wiz.state.method;\n    byId('wizBody').innerHTML = '<div class=\"options\" id=\"methodOpts\">'\n      + '<div class=\"opt' + (sel === 'self' ? ' selected' : '') + '\" data-value=\"self\"><div><div class=\"title\">\u81ea\u5206\u3067\u914d\u5408\u3092\u6c7a\u3081\u308b<\/div><div class=\"desc\">\u5165\u308c\u305f\u3044\u539f\u6599\u3068\u3001\u305d\u306e\u5272\u5408\uff08\uff05\uff09\u3092\u3054\u81ea\u8eab\u3067\u6c7a\u3081\u3066\u3044\u305f\u3060\u304d\u307e\u3059<\/div><\/div><div class=\"opt-fee\">\u521d\u671f\u30d6\u30ec\u30f3\u30c9\u8cbb\u7528 ' + yen(BLEND_FEE_SELF) + '\u5186<\/div><\/div>'\n      + '<div class=\"opt' + (sel === 'company' ? ' selected' : '') + '\" data-value=\"company\"><div><div class=\"title\">\u5f0a\u793e\u306b\u30ec\u30b7\u30d4\u4f5c\u308a\u3092\u304a\u307e\u304b\u305b\u3059\u308b<\/div><div class=\"desc\">\u4f5c\u308a\u305f\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u6559\u3048\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3001\u5f0a\u793e\u304c\u914d\u5408\u3092\u8003\u3048\u3066\u3054\u63d0\u6848\u3057\u307e\u3059<\/div><\/div><div class=\"opt-fee\">\u30ec\u30b7\u30d4\u958b\u767a\u8cbb\u7528 ' + yen(BLEND_FEE_COMPANY) + '\u5186<\/div><\/div>'\n      + '<\/div>';\n    SCOPE.querySelectorAll('#methodOpts .opt').forEach(function(el){\n      el.addEventListener('click', function(){\n        SCOPE.querySelectorAll('#methodOpts .opt').forEach(function(o){ o.classList.remove('selected'); });\n        el.classList.add('selected');\n        wiz.state.method = el.dataset.value;\n      });\n    });\n  };\n  VALIDATORS.method = function(){\n    if (!wiz.state.method) { alert('\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u914d\u5408\u306f\u3001\u3069\u3061\u3089\u306e\u65b9\u6cd5\u3067\u6c7a\u3081\u307e\u3059\u304b\uff1f'); return false; }\n    return true;\n  };\n\n  function tcIngredientsHTML(){\n    var def = wiz.def;\n    var isSelf = wiz.state.method === 'self';\n    var baseRows = wiz.state.baseRows || [];\n    var genRows = wiz.state.genRows || [];\n    if (isSelf) {\n      return ''\n        + '<div class=\"ratio-meter\">'\n        + '  <div class=\"ratio-meter-head\"><div class=\"ratio-meter-label\">\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\uff08' + def.baseLabel + '\uff0b\u52a0\u3048\u308b\u7d20\u6750\u306e\u5408\u8a08\u3067100%\uff0f5%\u523b\u307f\uff09<\/div><div class=\"ratio-meter-value ng\" id=\"tcRatioMeterValue\">0%<\/div><\/div>'\n        + '  <div class=\"ratio-meter-track\"><div class=\"ratio-meter-bar\" id=\"tcRatioMeterBar\" style=\"width:0%;\"><\/div><\/div>'\n        + '  <div class=\"ratio-meter-warning\" id=\"tcRatioMeterWarning\"><\/div>'\n        + '<\/div>'\n        + '<div class=\"option-category\">' + def.baseLabel + '\uff08\u30d9\u30fc\u30b9\u306b\u306a\u308b\u539f\u6599\u3067\u3059\u30021\u7a2e\u985e\u4ee5\u4e0a\uff09<\/div>'\n        + '<div id=\"tcBaseRows\">' + baseRows.map(function(r){ return itemRowHTML(def.basePool, r.name, r.ratio); }).join('') + '<\/div>'\n        + '<button type=\"button\" class=\"add-row-btn\" onclick=\"AGN.addTcBaseRow()\">\uff0b ' + def.baseLabel + '\u3092\u8ffd\u52a0<\/button>'\n        + '<div class=\"option-category\">\u52a0\u3048\u308b\u7d20\u6750\uff08\u9999\u308a\u3084\u5473\u3065\u3051\u306b\u52a0\u3048\u308b\u539f\u6599\u3067\u3059\u3002\u4e0d\u8981\u306a\u5834\u5408\u306f\u8ffd\u52a0\u3057\u306a\u304f\u3066OK\uff09<\/div>'\n        + '<div class=\"field-note\">' + def.baseLabel + '\u3068\u5408\u308f\u305b\u3066' + TC_MAX_TOTAL_ROWS + '\u7a2e\u985e\u307e\u3067\u304a\u9078\u3073\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/div>'\n        + '<div class=\"field-note\">' + def.baseLabel + '\u306b\u5408\u308f\u305b\u3084\u3059\u3044\u679c\u7269\u30fb\u30cf\u30fc\u30d6\u985e\u304b\u3089\u304a\u9078\u3073\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/div>'\n        + '<div id=\"tcGenRows\">' + genRows.map(function(r){ return itemRowHTML(flavorPoolFor(def), r.name, r.ratio); }).join('') + '<\/div>'\n        + '<button type=\"button\" class=\"add-row-btn\" onclick=\"AGN.addTcGenRow()\">\uff0b \u7d20\u6750\u3092\u8ffd\u52a0<\/button>';\n    }\n    \/\/ \u5f0a\u793e\u306b\u304a\u4efb\u305b\u306e\u5834\u5408\u3082\u3001\u4f7f\u3044\u305f\u3044\u539f\u6599\u304c\u3042\u308c\u3070\u9078\u3079\u308b\u3088\u3046\u306b\u3059\u308b\uff08\u6bd4\u7387\u306f\u5f0a\u793e\u306b\u3066\u8a2d\u8a08\uff09\n    var basePrefRows = wiz.state.basePrefRows || [];\n    var prefRows = wiz.state.prefRows || [];\n    return ''\n      + '<div class=\"field-note\">\u914d\u5408\u6bd4\u7387\u306f\u3059\u3079\u3066\u5f0a\u793e\u306b\u3066\u8a2d\u8a08\u3044\u305f\u3057\u307e\u3059\u3002\u4f7f\u3044\u305f\u3044\u539f\u6599\u304c\u3042\u308c\u3070\u304a\u9078\u3073\u304f\u3060\u3055\u3044\uff08\u672a\u9078\u629e\u3067\u3082\u69cb\u3044\u307e\u305b\u3093\u3002\u5408\u308f\u305b\u3066' + TC_MAX_TOTAL_ROWS + '\u7a2e\u985e\u307e\u3067\uff09\u3002<\/div>'\n      + '<div class=\"option-category\">\u3054\u5e0c\u671b\u306e' + def.baseLabel + '\uff08\u4efb\u610f\uff09<\/div>'\n      + '<div id=\"tcBasePrefRows\">' + basePrefRows.map(function(r){ return itemRowHTML(def.basePool, r.name, null, true); }).join('') + '<\/div>'\n      + '<button type=\"button\" class=\"add-row-btn\" onclick=\"AGN.addTcBasePrefRow()\">\uff0b ' + def.baseLabel + '\u3092\u8ffd\u52a0<\/button>'\n      + '<div class=\"option-category\">\u4f7f\u3044\u305f\u3044\u7d20\u6750\uff08\u4efb\u610f\uff09<\/div>'\n      + '<div id=\"tcPrefRows\">' + prefRows.map(function(r){ return itemRowHTML(flavorPoolFor(def), r.name, null, true); }).join('') + '<\/div>'\n      + '<button type=\"button\" class=\"add-row-btn\" onclick=\"AGN.addTcPrefRow()\">\uff0b \u7d20\u6750\u3092\u8ffd\u52a0<\/button>'\n      + '<label>\u3069\u3093\u306a\u5546\u54c1\u306b\u3057\u305f\u3044\u3067\u3059\u304b\uff1f\uff08\u5fc5\u9808\uff09<\/label>'\n      + '<div class=\"field-note\">\u30a4\u30e1\u30fc\u30b8\u3060\u3051\u3067\u3082\u5927\u4e08\u592b\u3067\u3059\u3002\u4f8b\uff1a\u67d1\u6a58\u7cfb\u3067\u3059\u3063\u304d\u308a\u3057\u305f\u7518\u3055\u306b\u3057\u305f\u3044\uff0f\u30ea\u30e9\u30c3\u30af\u30b9\u3067\u304d\u308b\u9999\u308a\u306b\u3057\u305f\u3044\u3000\u306a\u3069<\/div>'\n      + '<textarea id=\"tcConcept\" placeholder=\"\u4f5c\u308a\u305f\u3044\u30a4\u30e1\u30fc\u30b8\u3084\u3054\u8981\u671b\u3092\u3054\u81ea\u7531\u306b\u3054\u8a18\u5165\u304f\u3060\u3055\u3044\">' + esc(wiz.state.concept || '') + '<\/textarea>';\n  }\n  RENDERERS.ingredients_blendCustom = function(){\n    byId('wizTitle').textContent = wiz.state.method === 'self' ? '\u3069\u306e\u539f\u6599\u3092\u4f55\uff05\u305a\u3064\u5165\u308c\u307e\u3059\u304b\uff1f' : '\u3069\u3093\u306a\u5473\u306b\u3057\u305f\u3044\u304b\u6559\u3048\u3066\u304f\u3060\u3055\u3044';\n    byId('wizBody').innerHTML = tcIngredientsHTML();\n    if (wiz.state.method === 'self') {\n      if (!wiz.state.baseRows || wiz.state.baseRows.length === 0) addTcBaseRow();\n      else updateTcRatioTotal();\n    }\n  };\n  \n  var TC_MAX_TOTAL_ROWS = 20;\n  function tcRowCount(){\n    return SCOPE.querySelectorAll('#tcBaseRows .item-row').length + SCOPE.querySelectorAll('#tcGenRows .item-row').length;\n  }\n  function tcLimitReached(){\n    if (tcRowCount() < TC_MAX_TOTAL_ROWS) return false;\n    alert('\u539f\u6599\u306f\u5408\u308f\u305b\u3066' + TC_MAX_TOTAL_ROWS + '\u7a2e\u985e\u307e\u3067\u304a\u9078\u3073\u3044\u305f\u3060\u3051\u307e\u3059\u3002\u8ffd\u52a0\u3059\u308b\u5834\u5408\u306f\u3001\u3044\u305a\u308c\u304b\u306e\u539f\u6599\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n    return true;\n  }\n  window.addTcBaseRow = function(){\n    if (tcLimitReached()) return;\n    byId('tcBaseRows').insertAdjacentHTML('beforeend', itemRowHTML(wiz.def.basePool));\n    updateTcRatioTotal();\n  };\n  window.addTcGenRow = function(){\n    if (tcLimitReached()) return;\n    byId('tcGenRows').insertAdjacentHTML('beforeend', itemRowHTML(flavorPoolFor(wiz.def)));\n    updateTcRatioTotal();\n  };\n  \n  window.addTcPrefRow = function(){\n    var rows = SCOPE.querySelectorAll('#tcPrefRows .item-row, #tcBasePrefRows .item-row');\n    if (rows.length >= TC_MAX_TOTAL_ROWS) { alert('\u539f\u6599\u306f\u5408\u308f\u305b\u3066' + TC_MAX_TOTAL_ROWS + '\u7a2e\u985e\u307e\u3067\u304a\u9078\u3073\u3044\u305f\u3060\u3051\u307e\u3059\u3002'); return; }\n    byId('tcPrefRows').insertAdjacentHTML('beforeend', itemRowHTML(flavorPoolFor(wiz.def), null, null, true));\n  };\n  window.addTcBasePrefRow = function(){\n    var rows = SCOPE.querySelectorAll('#tcPrefRows .item-row, #tcBasePrefRows .item-row');\n    if (rows.length >= TC_MAX_TOTAL_ROWS) { alert('\u539f\u6599\u306f\u5408\u308f\u305b\u3066' + TC_MAX_TOTAL_ROWS + '\u7a2e\u985e\u307e\u3067\u304a\u9078\u3073\u3044\u305f\u3060\u3051\u307e\u3059\u3002'); return; }\n    byId('tcBasePrefRows').insertAdjacentHTML('beforeend', itemRowHTML(wiz.def.basePool, null, null, true));\n  };\n  function updateTcRatioTotal(){\n    var el = byId('tcRatioMeterValue');\n    if (!el) return;\n    var total = 0;\n    SCOPE.querySelectorAll('#tcBaseRows .item-row input, #tcGenRows .item-row input').forEach(function(inp){ var v = parseFloat(inp.value); if (!isNaN(v)) total += v; });\n    var isOk = total === 100;\n    el.textContent = total + '%';\n    el.className = 'ratio-meter-value ' + (isOk ? 'ok' : 'ng');\n    byId('tcRatioMeterBar').style.width = Math.min(total, 100) + '%';\n    byId('tcRatioMeterBar').className = 'ratio-meter-bar ' + (isOk ? 'ok' : '');\n    var warnEl = byId('tcRatioMeterWarning');\n    warnEl.className = 'ratio-meter-warning' + (isOk ? ' ok' : (total === 0 ? ' idle' : ''));\n    warnEl.textContent = isOk ? '\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\u304c100%\u306b\u306a\u308a\u307e\u3057\u305f\u3002' : (total === 0 ? '\u305d\u308c\u305e\u308c\u306e\u884c\u306b\u6bd4\u7387\uff08%\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5408\u8a08\u304c100%\u306b\u306a\u308c\u3070OK\u3067\u3059\u3002' : total < 100 ? ('\u914d\u5408\u6bd4\u7387\u304c' + (100 - total).toFixed(1).replace(\/\\.0$\/, '') + '%\u8db3\u308a\u3066\u3044\u307e\u305b\u3093\u3002') : ('\u914d\u5408\u6bd4\u7387\u304c' + (total - 100).toFixed(1).replace(\/\\.0$\/, '') + '%\u8d85\u904e\u3057\u3066\u3044\u307e\u3059\u3002'));\n  }\n  VALIDATORS.tcIngredients = function(){\n    if (wiz.state.method === 'self') {\n      var baseItems = getRowItems('tcBaseRows');\n      var genItems = getRowItems('tcGenRows');\n      if (baseItems.length < 1) { alert(wiz.def.baseLabel + '\u306f1\u7a2e\u985e\u4ee5\u4e0a\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002'); return false; }\n      if (baseItems.some(function(i){ return !i.ratio || i.ratio <= 0; }) || genItems.some(function(i){ return !i.ratio || i.ratio <= 0; })) { alert('\u3059\u3079\u3066\u306e\u539f\u6599\u306b\u6bd4\u7387\uff08%\uff09\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      if (baseItems.concat(genItems).some(function(i){ return i.ratio % RATIO_STEP !== 0; })) { alert('\u914d\u5408\u6bd4\u7387\u306f5%\u523b\u307f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      var total = baseItems.concat(genItems).reduce(function(s, i){ return s + i.ratio; }, 0);\n      if (Math.round(total) !== 100) { alert('\u914d\u5408\u6bd4\u7387\u306e\u5408\u8a08\u3092100%\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002'); return false; }\n      wiz.state.baseRows = baseItems;\n      wiz.state.genRows = genItems;\n      wiz.state.selectedItems = baseItems.concat(genItems);\n    } else {\n      var concept = byId('tcConcept').value.trim();\n      if (!concept) { alert('\u3069\u3093\u306a\u5546\u54c1\u306b\u3057\u305f\u3044\u304b\u3092\u3054\u8a18\u5165\u304f\u3060\u3055\u3044\u3002'); return false; }\n      wiz.state.concept = concept;\n      var basePref = getRowItems('tcBasePrefRows').map(function(i){ return { key: i.key, name: i.name, ratio: null }; });\n      var pref = getRowItems('tcPrefRows').map(function(i){ return { key: i.key, name: i.name, ratio: null }; });\n      wiz.state.basePrefRows = basePref;\n      wiz.state.prefRows = pref;\n      wiz.state.selectedItems = basePref.concat(pref);\n    }\n    return true;\n  };\n\n  RENDERERS.format = function(){\n    var def = wiz.def;\n    var isTea = def.kind === 'tea';\n    byId('wizTitle').textContent = '\u4ed5\u4e0a\u3052\u65b9\u30fb1\u888b\u306e\u91cf\u30fb\u4f5c\u308b\u500b\u6570\u3092\u6c7a\u3081\u3066\u304f\u3060\u3055\u3044';\n    var fmt = wiz.state.format || 'plain';\n    var grams = wiz.state.teabagGrams || 3;\n    var html = '<div class=\"toggle-btns\" id=\"tcFormat\">'\n      + '<button type=\"button\" class=\"toggle-btn\" data-on=\"special\">' + (isTea ? ('\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\u306b\u52a0\u5de5\u3059\u308b\uff08' + yen(packMaterialCostOf(true)) + '\u5186\/\u500b\uff09') : ('\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\u306b\u52a0\u5de5\u3059\u308b\uff08' + yen(packMaterialCostOf(false)) + '\u5186\/\u500b\uff09')) + '<\/button>'\n      + '<button type=\"button\" class=\"toggle-btn\" data-on=\"plain\">' + (isTea ? '\u8336\u8449\u306e\u307e\u307e\u5c0f\u888b\u306b\u8a70\u3081\u308b' : '\u7c89\u672b\u306e\u307e\u307e\u5c0f\u888b\u306b\u8a70\u3081\u308b') + '<\/button>'\n      + '<\/div>';\n    html += '<div id=\"tcWeightWrap\"><label id=\"tcWeightLabel\">1\u888b\u306b\u5165\u308c\u308b\u91cf\uff08g\uff09<\/label><div class=\"field-note\" id=\"tcWeightNote\"><\/div>'\n      + '<select id=\"tcWeight\">' + tcWeightOptions(isTea, fmt === 'special').map(function(g){ return '<option value=\"' + g + '\"' + (g === grams ? ' selected' : '') + '>' + g + 'g<\/option>'; }).join('') + '<\/select><\/div>'\n      + '<label>\u4f5c\u308b\u500b\u6570\uff08\u888b\uff09<\/label><div class=\"field-note\">' + (tcMinQty() === MIN_QTY_COMPANY ? '\u4f55\u888b\u4f5c\u308b\u304b\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u5f0a\u793e\u306b\u30ec\u30b7\u30d4\u958b\u767a\u3092\u304a\u4efb\u305b\u3044\u305f\u3060\u304f\u5834\u5408\u306f\u3001\u6700\u4f4e\u30ed\u30c3\u30c8100\u888b\u304b\u3089\u3054\u6ce8\u6587\u3044\u305f\u3060\u3051\u307e\u3059\u3002' : '\u4f55\u888b\u4f5c\u308b\u304b\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002\u3054\u6307\u5b9a\u306e\u914d\u5408\u306e\u5834\u5408\u3001\u6700\u4f4e\u30ed\u30c3\u30c8\u306f500\u888b\u304b\u3089\u3067\u3059\u3002') + '<\/div><input type=\"number\" id=\"tcQty\" min=\"' + tcMinQty() + '\" step=\"10\" placeholder=\"\u4f8b\uff1a' + tcMinQty() + '\" value=\"' + (wiz.state.qty || '') + '\">';\n    byId('wizBody').innerHTML = html;\n    initToggle(byId('tcFormat'), fmt);\n    function syncFormat(){\n      var isSpecial = toggleRaw('tcFormat') === 'special';\n      var unitName = isTea ? '\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0' : '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af';\n      byId('tcWeightLabel').textContent = isSpecial ? (unitName + '1\u500b\u306b\u5165\u308c\u308b\u91cf\uff08g\uff09') : '1\u888b\u306b\u5165\u308c\u308b\u91cf\uff08g\uff09';\n      byId('tcWeightNote').textContent = isSpecial\n        ? ('1\u888b\u306b\u306f' + unitName + '\u30921\u500b\u304a\u5165\u308c\u3057\u307e\u3059\u3002\u4e2d\u306b\u5165\u308c\u308b\u91cf\u30921g\u301c5g\u304b\u3089\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002')\n        : '\u5c0f\u888b1\u3064\u3042\u305f\u308a\u306e\u91cf\u30921g\u301c5g\u304b\u3089\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002';\n    }\n    byId('tcFormat').addEventListener('change', syncFormat);\n    syncFormat();\n  };\n  VALIDATORS.format = function(){\n    var def = wiz.def;\n    var isTea = def.kind === 'tea';\n    var isSpecial = toggleRaw('tcFormat') === 'special';\n    var qty = parseInt(byId('tcQty').value, 10);\n    if (!qty || qty < tcMinQty()) { alert('\u4f5c\u308b\u500b\u6570\u306f' + tcMinQty() + '\u888b\u4ee5\u4e0a\u3067\u3054\u5165\u529b\u304f\u3060\u3055\u3044'); return false; }\n    wiz.state.format = isSpecial ? 'special' : 'plain';\n    wiz.state.qty = qty;\n    var weight = parseFloat(byId('tcWeight').value);\n    if (!weight || weight < 1 || weight > 5) { alert('1\u888b\u306b\u5165\u308c\u308b\u91cf\u306f1g\u301c5g\u306e\u7bc4\u56f2\u3067\u304a\u9078\u3073\u304f\u3060\u3055\u3044'); return false; }\n    wiz.state.weight = weight;\n    if (isSpecial) {\n      wiz.state.teabagGrams = weight;\n      wiz.state.teabagCount = 1; \/\/ 1\u888b\uff1d\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\uff08\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\uff091\u500b\n      wiz.state.totalBagWeight = weight + TEABAG_FILTER_G;\n    } else {\n      wiz.state.teabagCount = 0;\n      wiz.state.totalBagWeight = weight;\n    }\n    return true;\n  };\n  function finishBlendCustom(){\n    var def = wiz.def;\n    var st = wiz.state;\n    var isTea = def.kind === 'tea';\n    var isSelf = st.method === 'self';\n    var materialCostText, materialCost = 0, ratioText;\n    if (isSelf) {\n      var items = st.selectedItems || [];\n      var material = mixMaterialCost(def.basePool.concat(flavorPoolFor(def)), items, st.weight);\n      ratioText = items.map(function(i){ return i.name + ' ' + i.ratio + '%'; }).join('\uff0f');\n      materialCost = material.cost;\n      materialCostText = material.text;\n    } else {\n      ratioText = '\uff08\u5f0a\u793e\u306b\u3066\u8a2d\u8a08\uff09';\n      materialCostText = '\u30ec\u30b7\u30d4\u958b\u767a\u5f8c\u306b\u5225\u9014\u304a\u898b\u7a4d\u308a';\n    }\n    var isSpecial = st.format === 'special';\n    var bagWeight = st.totalBagWeight;\n    \/\/ \u888b\u306f\u8cc7\u6750\u30de\u30b9\u30bf\u304b\u3089\u3002\u52a0\u5de5\u3042\u308a\u306f\u5c02\u7528\u888b\u3001\u52a0\u5de5\u306a\u3057\u306f\u4e2d\u8eab\u304c\u5165\u308b\u4e00\u756a\u5b89\u3044\u5c0f\u888b\n    var bag = blendBagOf(isTea, isSpecial, bagWeight);\n    var bagCost = bag ? bag.price : (bagWeight <= 60 ? CUSTOM_BAG_TIER[60] : CUSTOM_BAG_TIER[200]);\n    var opt = collectOptions();\n    var perBagFee = optionPerBagFee(opt);\n    var packUnitCost = packMaterialCostOf(isTea);\n    var teabagFee = isSpecial ? packUnitCost : 0; \/\/ 1\u888b\uff1d\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\uff08\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\uff091\u500b\n    var perBag = materialCost + bagCost + FILL_COST_MIX + perBagFee + teabagFee;\n    var bagTotal = perBag * st.qty;\n    var blendFee = isSelf ? BLEND_FEE_SELF : BLEND_FEE_COMPANY;\n    var flatFee = blendFee + optionFlatFee(opt);\n    var grandTotal = bagTotal + flatFee;\n    var formatLabel = isTea ? (isSpecial ? '\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0\u52a0\u5de5' : '\u8336\u8449\u306e\u307e\u307e\u5c0f\u888b') : (isSpecial ? '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af\u52a0\u5de5' : '\u7c89\u672b\u306e\u307e\u307e\u5c0f\u888b');\n\n    var lines = [['\u914d\u5408', ratioText]];\n    if (isSelf ? false : st.concept) lines.push(['\u30b3\u30f3\u30bb\u30d7\u30c8\u30fb\u3054\u8981\u671b', st.concept]);\n    lines.push(['\u4ed5\u4e0a\u3052\u5f62\u614b', formatLabel + (isSpecial ? ('\uff08' + st.weight + 'g\/\u500b\u30fb1\u888b1\u500b\uff09') : '')]);\n    if (isSpecial) lines.push([packMaterialNameOf(isTea) + '\u4ee3\uff081\u888b\u3042\u305f\u308a\uff09', yen(packUnitCost) + '\u5186 \u00d7 1\u500b \uff1d ' + yen(teabagFee) + '\u5186']);\n    lines.push(['\u539f\u6599\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', materialCostText]);\n    lines.push([bag ? ('\u888b\u4ee3\uff08' + (bag.displayCode ? bag.displayCode + ' ' : '') + bag.name + '\u30fb1\u888b\u3042\u305f\u308a\uff09') : '\u888b\u4ee3\uff081\u888b\u3042\u305f\u308a\u30fb\u5f0a\u793e\u30d1\u30c3\u30b1\u30fc\u30b8\uff09', yen(bagCost) + '\u5186']);\n    lines.push(['\u888b\u8a70\u3081\u8cbb\uff081\u888b\u3042\u305f\u308a\uff09', yen(FILL_COST_MIX) + '\u5186']);\n    lines = lines.concat(optionLines(opt));\n    lines.push(['1\u888b\u5358\u4fa1 \u5c0f\u8a08', yen(perBag) + '\u5186\/\u888b']);\n    lines.push(['\u5c0f\u8a08\uff08' + st.qty.toLocaleString() + '\u888b\uff09', yen(bagTotal) + '\u5186']);\n    lines.push([isSelf ? '\u521d\u671f\u30d6\u30ec\u30f3\u30c9\u8cbb\u7528' : '\u30ec\u30b7\u30d4\u958b\u767a\u8cbb\u7528', yen(blendFee) + '\u5186']);\n    lines = lines.concat(optionExtraLines(opt));\n    lines.push(['\u3053\u306e\u5546\u54c1\u306e\u5c0f\u8a08\uff08\u7a0e\u629c\u30fb\u521d\u56de\u8cbb\u7528\u8fbc\u307f\uff09', yen(grandTotal) + '\u5186', true]);\n\n    return {\n      badge: def.badge,\n      name: isSelf ? '\u81ea\u5206\u3067\u914d\u5408' : '\u5f0a\u793e\u306b\u30ec\u30b7\u30d4\u958b\u767a\u3092\u304a\u4efb\u305b',\n      sub: (isSpecial ? ((isTea ? '\u30c6\u30a3\u30fc\u30d0\u30c3\u30b0' : '\u30c9\u30ea\u30c3\u30d7\u30d1\u30c3\u30af') + '1\u500b\uff08' + st.weight + 'g\uff09') : (st.weight + 'g')) + ' \u00d7 ' + st.qty.toLocaleString() + '\u888b',\n      lines: lines,\n      total: grandTotal,\n    };\n  }\n\n  var _origIngredientsRenderer = RENDERERS.ingredients;\n  RENDERERS.ingredients = function(){\n    if (wiz.def.family === 'vegMixCustom') { _origIngredientsRenderer(); }\n    else { RENDERERS.ingredients_blendCustom(); }\n  };\n\n  RENDERERS.options = function(){\n    byId('wizTitle').textContent = '\u8ffd\u52a0\u3057\u305f\u3044\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3042\u308a\u307e\u3059\u304b\uff1f';\n    byId('wizIntro').style.display = 'block';\n    byId('wizIntro').textContent = '\u5fc5\u8981\u306a\u3082\u306e\u3060\u3051\u304a\u9078\u3073\u304f\u3060\u3055\u3044\u3002\u4f55\u3082\u9078\u3070\u306a\u304f\u3066\u3082\u304a\u898b\u7a4d\u308a\u306b\u9032\u3081\u307e\u3059\u3002\u300c\u5225\u9014\u304a\u898b\u7a4d\u308a\u300d\u3068\u8868\u793a\u3055\u308c\u308b\u9805\u76ee\u306f\u3001\u3053\u306e\u753b\u9762\u306e\u6982\u7b97\u5408\u8a08\u306b\u306f\u542b\u307e\u308c\u307e\u305b\u3093\uff08\u5f8c\u65e5\u3054\u6848\u5185\u3057\u307e\u3059\uff09\u3002';\n    byId('wizBody').innerHTML = renderOptionsStepHTML();\n    bindOptionsStep();\n  };\n  VALIDATORS.options = function(){ return true; };\n\n  function finishWizard(){\n    var item;\n    switch (wiz.def.family) {\n      case 'single': item = finishSingle(); break;\n      case 'vegMixPreset': item = finishVegMixPreset(); break;\n      case 'vegMixCustom': item = finishVegMixCustom(); break;\n      case 'flavor': item = finishFlavor(); break;\n      case 'blendCustom': item = finishBlendCustom(); break;\n    }\n    addToCart(item);\n  }\n\n  function goToEstimate(){\n    if (cart.length === 0) return;\n    var breakdownHtml = '';\n    var grand = 0;\n    cart.forEach(function(item, idx){\n      breakdownHtml += '<div class=\"product-title\">' + (idx + 1) + '. [' + esc(item.badge) + '] ' + esc(item.name) + '<\/div>';\n      item.lines.forEach(function(l){\n        breakdownHtml += '<div class=\"line' + (l[2] ? ' total' : '') + '\"><span>' + esc(l[0]) + '<\/span><span>' + esc(l[1]) + '<\/span><\/div>';\n      });\n      grand += item.total;\n    });\n    breakdownHtml += '<div class=\"product-title\">\u304a\u898b\u7a4d\u308a\u5408\u8a08<\/div>';\n    breakdownHtml += '<div class=\"line sub-total\"><span>\u767a\u9001\u4f5c\u696d\uff081\u4ef6\u3042\u305f\u308a\u30fb\u9001\u6599\u306f\u5225\u9014\u5b9f\u8cbb\uff09<\/span><span>' + yen(SHIP_FEE) + '\u5186<\/span><\/div>';\n    grand += SHIP_FEE;\n    breakdownHtml += '<div class=\"line total\"><span>\u5408\u8a08\u91d1\u984d\uff08\u7a0e\u629c\uff09<\/span><span>' + yen(grand) + '\u5186<\/span><\/div>';\n    byId('estMain').textContent = '\u5408\u8a08 ' + yen(grand) + '\u5186\uff08\u7a0e\u629c\uff09';\n    byId('estBreakdown').innerHTML = breakdownHtml;\n    window.lastGrandTotal = grand;\n    goStep('stepEstimate');\n  }\n  window.goToEstimate = goToEstimate;\n\n  var GAS_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbyCgCWsgVUECceoXqeU7c1nhMTdUHNdfWK9m_ra_qibM4plzfG0nyc1bfpxiscLqDO77w\/exec';\n  \n  function saveEstimateLog(payload){\n    try {\n      fetch(MASTER_API_URL, {\n        method: 'POST',\n        mode: 'no-cors',\n        headers: { 'Content-Type': 'text\/plain;charset=utf-8' },\n        body: JSON.stringify(payload),\n      })['catch'](function(){});\n    } catch (err) {  }\n  }\n  window.submitEstimate = function(){\n    var company = byId('contactCompany').value.trim();\n    var name = byId('contactName').value.trim();\n    var email = byId('contactEmail').value.trim();\n    if (!name) { alert('\u3054\u62c5\u5f53\u8005\u540d\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002'); return; }\n    if (!email || email.indexOf('@') === -1) { alert('\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u3054\u5165\u529b\u304f\u3060\u3055\u3044\u3002'); return; }\n\n    var payload = {\n      formTitle: '\u30ce\u30d9\u30eb\u30c6\u30a3\u30fc \u30aa\u30ea\u30b8\u30ca\u30eb\u5546\u54c1 \u304a\u898b\u7a4d\u308a\u30d5\u30a9\u30fc\u30e0',\n      main: '\u5408\u8a08 ' + yen(window.lastGrandTotal) + '\u5186\uff08\u7a0e\u629c\uff09',\n      products: cart.map(function(item){ return { badge: item.badge, name: item.name, sub: item.sub, lines: item.lines, total: item.total }; }),\n      shipFee: SHIP_FEE,\n      grandTotal: window.lastGrandTotal,\n      company: company, name: name, email: email,\n    };\n\n    saveEstimateLog(payload);\n    var btn = byId('submitEstimateBtn');\n    var statusEl = byId('submitStatus');\n    btn.disabled = true;\n    btn.textContent = '\u9001\u4fe1\u4e2d...';\n\n    fetch(GAS_URL, {\n      method: 'POST', mode: 'no-cors',\n      headers: { 'Content-Type': 'application\/json' },\n      body: JSON.stringify(payload),\n    }).then(function(){\n      statusEl.textContent = '\u304a\u898b\u7a4d\u308a\u306e\u9001\u4fe1\u3092\u53d7\u3051\u4ed8\u3051\u307e\u3057\u305f\u3002\u3054\u5165\u529b\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5b9b\u306b\u81ea\u52d5\u8fd4\u4fe1\u30e1\u30fc\u30eb\u3092\u304a\u9001\u308a\u3057\u3066\u3044\u307e\u3059\u3002\u6570\u5206\u7d4c\u3063\u3066\u3082\u5c4a\u304b\u306a\u3044\u5834\u5408\u306f\u3001\u6b63\u3057\u304f\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3054\u3056\u3044\u307e\u3059\u306e\u3067\u3001\u304a\u624b\u6570\u3067\u3059\u304c info@agriture.jp \u307e\u3067\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002';\n      statusEl.style.display = 'block';\n      btn.textContent = '\u9001\u4fe1\u6e08\u307f';\n    }).catch(function(){\n      statusEl.textContent = '\u9001\u4fe1\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u901a\u4fe1\u74b0\u5883\u3092\u3054\u78ba\u8a8d\u306e\u3046\u3048\u3001\u518d\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002';\n      statusEl.style.display = 'block';\n      btn.disabled = false;\n      btn.textContent = '\u3053\u306e\u5185\u5bb9\u3067\u767a\u6ce8\u76f8\u8ac7\u3059\u308b';\n    });\n  };\n\n  window.AGN = {\n    selectPackage: window.selectPackage,\n    selectBlend: window.selectBlend,\n    selectPresetProduct: window.selectPresetProduct,\n    addVmRow: window.addVmRow,\n    onRowChange: window.onRowChange,\n    removeRow: window.removeRow,\n    addTcBaseRow: window.addTcBaseRow,\n    addTcGenRow: window.addTcGenRow,\n    addTcBasePrefRow: window.addTcBasePrefRow,\n    addTcPrefRow: window.addTcPrefRow,\n    updateRatioTotal: function(){ updateVmRatioTotal(); updateTcRatioTotal(); },\n    removeCartItem: removeCartItem,\n  };\n  window.goStep = goStep;\n\n  renderCartBox();\n})();\n  <\/script>\n\n<script>\n  (function () {\n    var root = document.getElementById('agriture-novelty-estimate');\n    if (!root) return;\n    function unlazy() {\n      root.querySelectorAll('img[data-src]').forEach(function (im) {\n        im.src = im.getAttribute('data-src');\n        im.removeAttribute('data-src');\n        im.classList.remove('lazyload');\n      });\n    }\n    unlazy();\n    new MutationObserver(unlazy).observe(root, { childList: true, subtree: true });\n    root.addEventListener('error', function (e) {\n      var t = e.target;\n      if (t && t.tagName === 'IMG') { t.style.display = 'none'; }\n    }, true);\n  })();\n<\/script>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"swell_btn_cv_data":"","footnotes":"","ssp_meta_description":"","ssp_meta_keyword":""},"class_list":["post-6572","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/pages\/6572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/comments?post=6572"}],"version-history":[{"count":8,"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/pages\/6572\/revisions"}],"predecessor-version":[{"id":7188,"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/pages\/6572\/revisions\/7188"}],"wp:attachment":[{"href":"https:\/\/agriture.jp\/en\/wp-json\/wp\/v2\/media?parent=6572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}