// sections.jsx — All page sections for Repos top page. // Components are made global at the end of this file so app.jsx can use them. // ──────────────────────────────────────────────────────────── // Top nav (sticky) // ──────────────────────────────────────────────────────────── function Nav() { const [open, setOpen] = React.useState(false); const links = [ ["#concept", "コンセプト"], ["#first", "はじめての方へ"], ["#service", "サービス"], ["#shop", "ホームケア"], ["#training", "養成講座"], ["#voice", "お客様の声"], ["#availability", "空席案内"], ["#access", "アクセス"]]; // Drawer menu mirrors the footer (Menu / Shop / Reserve) const drawerGroups = [ ["Menu", [ ["#service-shaving", "シェービング"], ["#service-facial", "フェイシャル"], ["#service-headspa", "ヘッドスパ"], ["#service-body", "ボディエステ"], ["#service-bridal", "ブライダル"]]], ["Shop", [ ["#shop", "ホームケア商品"], ["#wellness", "機能性下着"], ["#training", "バザルト養成講座"]]], ["Reserve", [ ["#availability", "空席案内"], ["#campaign", "キャンペーン"], ["#access", "アクセス"]]]]; React.useEffect(() => { document.body.style.overflow = open ? "hidden" : ""; return () => {document.body.style.overflow = "";}; }, [open]); return (
setOpen(false)}> Repos Shaving & Esthetic Salon LINEで予約
setOpen(false)}>
); } function LineIcon({ size = 16, color = "#fff" }) { return ( ); } // ──────────────────────────────────────────────────────────── // Hero // ──────────────────────────────────────────────────────────── function Hero() { return (
Total Care Salon for Skin & Scalp

肌と頭皮の
両方をととのえる
女性のためのケア時間

シェービングを軸に、頭皮ケア・バザルトストーン・ホームケアまで。肌悩みのあるあなたが、迷わず安心して相談できる場所へ。

LINEで予約・相談する はじめての方へ
OPEN
水〜金 9:30–17:30 / 土日 9:00–17:00
CLOSED
月・火(第3日曜)
RESERVATION
LINE 24h 受付
空席案内はこちら
); } // ──────────────────────────────────────────────────────────── // Concept // ──────────────────────────────────────────────────────────── function Concept() {return (
01

Concept — 01

肌のことも、髪のことも
まとめて、ルポへ

シェービング&エステサロン ルポ は、 シェービングと頭皮ケアの両方を専門に扱うサロンです。肌悩みのある女性が、ご自宅では手の届きにくい部分まで 丁寧に手をかけられる時間を用意しています。

ご来店ごとに、その日の肌や頭皮・髪の様子に合わせて施術を
組み立て、ご自宅で続けられるホームケアまでご一緒に考えます。

); } // ──────────────────────────────────────────────────────────── // First-visit reassurance // ──────────────────────────────────────────────────────────── function FirstVisit() { const cards = [ { n: "01", title: "はじめてでも、迷わず。", body: "ご来店前にLINEで簡単なカウンセリングが可能です。気になる肌悩みや希望の仕上がりを、当日までにじっくりお聞かせください。" }, { n: "02", title: "肌に触れる前に、まず対話を。", body: "施術前のカウンセリングで、肌・頭皮の状態を確認。お一人おひとりに合わせた進め方をご相談してから始めます。" }, { n: "03", title: "おうちまで、ご一緒に。", body: "ご来店後の数日間が大切な時間。ご自宅で続けていただけるホームケアもサロンと同じものをお渡しできます。" }]; return (
03

For Your First Visit — 03

three things to know

はじめての方へ
お伝えしたい3つのこと

{cards.map((c) =>
{c.n}

{c.title}

{c.body}

)}
); } function FAQ() { const items = [ { q: "シェービングは初めてですが、痛くないですか?", a: "産毛・うぶ毛をやわらかく整えるシェービングのため、お肌への負担を最小限に。\nスチームや保湿の工程をはさみながら、ゆっくりと進めますので、初めての方も安心していらしてください。" }, { q: "肌が敏感でも受けられますか?", a: "ご来店前のLINEカウンセリングで肌状態をうかがい、当日も施術前にもう一度確認します。\nコンディションによっては内容を調整したり、頭皮ケアやホームケアのご相談のみのご来店も承っています。" }, { q: "メニューの所要時間はどのくらい?", a: "シェービング単体で約60〜80分、バザルトストーンや頭皮ケアを組み合わせる場合は90〜120分ほどが目安です。\nご予約時にお時間の希望もお知らせください。" }, { q: "予約はLINEだけですか?", a: "メインはLINE予約(24時間受付)です。\nお電話でも承りますが、施術中はつながりにくい時間帯があるため、はじめての方はLINEからのご連絡がおすすめです。" }, { q: "男性も来店できますか?", a: "現在は女性のお客様を中心にご案内しています。\n男性のご来店についてはご紹介制で承っておりますので、まずはLINEからお問い合わせください。" }]; return (
{items.map((it, i) =>
Q{String(i + 1).padStart(2, "0")} {it.q}
{it.a}
)}
); } // FAQ as its own section (placed between Voice and Staff). function FAQSection() { return (
FAQ

FAQ

questions & answers

よくいただくご質問

); } // ──────────────────────────────────────────────────────────── // Services — three display modes (cards / story / tabs) // ──────────────────────────────────────────────────────────── const SERVICE_MENU = [ { id: "shaving", title: "シェービング", en: "Shaving Esthetic", tagline: "お顔そり・お背中を、肌悩みに合わせて。オイルとパックでしっとり仕上げる多彩なコース。", from: "8,800円〜", courses: [ { name: "お顔剃りベーシックコース", tag: "シンプルケア", time: "50分", price: "8,800円", desc: "オイルでお肌を整えながらゆっくりシェービング。初めての方・敏感肌の方におすすめ。", flow: ["カウンセリング", "オイルケアクレンジング", "ツボ押し(デトックスリンパ)", "保湿パック", "お顔・耳のシェービング", "眉デザインカット", "スキンケア", "頭皮・耳マッサージ"] }, { name: "モイスチャーシェービング", tag: "保湿ケア", time: "60分", price: "11,000円", desc: "トリプルパックで保湿に特化。乾燥が気になる方に、もっちりとした仕上がり。", flow: ["カウンセリング", "オイルケアクレンジング", "フェイシャルマッサージ", "小顔リンパケア", "保湿パック", "お顔・耳のシェービング", "眉デザインカット", "モイスチャーパック", "スキンケア", "頭皮・耳マッサージ"] }, { name: "お背中・美うなじシェービング", tag: "背中ケア", time: "60分", price: "8,800円", desc: "毛穴ケアをしてからシェービング(肩甲骨まで)。ウエストラインまでは +2,200円。", flow: ["カウンセリング", "背中クレンジング", "背中シェービング", "うなじシェービング", "保湿パック"], note: "ウエストラインまでの方は +2,200円で承ります。" }, { name: "成人式シェービング", tag: "成人式限定", time: "70分", price: "9,900円", desc: "振袖に似合う美しいうなじに。土日祝は 11,000円で承ります。", flow: ["カウンセリング", "オイルケアクレンジング", "お顔シェービング", "眉カット", "深め襟足シェービング", "ヘッドマッサージ", "鎮静パック", "お仕上げ"] }, { name: "プレミアムエステシェービング", tag: "乾燥・デリケート肌", time: "70分", price: "13,200円", desc: "ベーシック+デコルテリンパ+フェイシャルトリートメント+トリプルパック。", flow: ["お顔剃りベーシックコースの内容一式", "デコルテリンパマッサージ", "フェイシャルトリートメント", "トリプルパック"] }, { name: "毛穴レスエステシェービング", tag: "毛穴ケア", time: "60分", price: "13,200円", desc: "デコルテ/フェイシャルリンパに毛穴吸引をプラス。引き締まった肌へ。", flow: ["お顔剃りベーシックコースの内容一式", "デコルテ・フェイシャルリンパトリートメント+毛穴吸引", "トリプルパック"] }, { name: "美白エステシェービング", tag: "美肌仕上げ", time: "70分", price: "13,200円", desc: "漢方配合クリームでシェービング&パック。なめらかで美白の肌に。", flow: ["お顔剃りベーシックコースの内容一式", "漢方配合クリームでシェービング&パック", "フェイシャルリンパトリートメント", "トリプルパック"] }, { name: "天使の肌シェービングエステ", tag: "エイジングケア", time: "90分", price: "16,500円", desc: "高濃度プラセンタ+バザルト®ストーンフェイシャル。透明感とキメを整える。", flow: ["カウンセリング", "オイルケアクレンジング", "高濃度プラセンタエキス", "バザルト®ストーンフェイシャルトリートメント", "クリームパック", "高保湿クリームシェービング", "眉デザインカット", "プレミアムスキンケアパック", "お仕上げ"] }, { name: "スペシャルシェービングエステ", tag: "NEW・最強小顔", time: "120分", price: "22,000円", desc: "天使の肌+バザルト®ストーンヘッドスパの最強リフトケアコース。", flow: ["カウンセリング", "オイルケアクレンジング", "高濃度プラセンタエキス", "バザルト®ストーンフェイシャルトリートメント", "バザルト®ストーンヘッドスパトリートメント", "クリームパック", "高保湿クリームシェービング", "眉デザインカット", "プレミアムスキンケアパック", "お仕上げ"] }], options: [ ["美うなじ(襟足)", "2,200円"], ["美うなじ(深襟足)", "2,750円"], ["デコルテ", "2,750円"], ["背中(肩甲骨まで)", "3,850円"], ["背中(腰まで)", "6,050円"], ["上腕〜ひじ上", "3,850円"], ["ひじ下〜指先", "3,850円"]] }, { id: "facial", title: "フェイシャル", en: "Facial", tagline: "バザルト®温石で巡りを整える、リフトケア。お顔も頭皮も一体で。", from: "12,000円〜", courses: [ { name: "バザルト温石 ヘッド&フェイシャル", tag: "1番人気・リフトケア", time: "80分", price: "16,500円", desc: "頭皮・顔・首・デコルテを一体で整える当店1番人気。内側から引き上がるフェイスラインへ。", flow: ["カウンセリング", "オイルケア", "デコルテケア", "バザルト®ストーンフェイシャル", "バザルト®ストーンヘッドスパ", "保湿パック", "耳・頭マッサージ", "スキンケア"] }, { name: "リフトアップ小顔フェイシャル", tag: "ベーシックリフト", time: "80分", price: "12,000円", desc: "足元から巡りを整え、くすみや疲れを和らげる基本のフェイシャルケア。", flow: ["カウンセリング", "足湯", "オイルクレンジング", "バザルト®ストーンフェイシャル", "保湿パック", "スキンケア"] }] }, { id: "headspa", title: "ヘッドスパ", en: "Head Spa", tagline: "頭皮を土台から整える、温石ヘッドスパ。髪のハリ・まとまりまで。", from: "9,900円〜", courses: [ { name: "極上 頭皮リセット温石小顔スパ", tag: "最上級ケア", time: "120分", price: "19,800円", desc: "頭皮洗浄と温石で首・肩・頭をゆるめ、フェイスラインと髪まで整えるRepos最上級スパ。", flow: ["カウンセリング", "足湯", "マイクロスコープ頭皮カメラ", "オイルケア", "バザルト®ストーンヘッドスパ", "乳化トリートメント", "頭皮洗浄", "頭皮マッサージ", "お仕上げ"] }, { name: "頭皮リフト美髪スパ", tag: "月1ケア・人気", time: "100分", price: "16,800円", desc: "疲れと髪を同時に整える。ハリ・まとまりを引き出す、毎月のケアに。", flow: ["カウンセリング", "足湯", "マイクロスコープ頭皮カメラ", "オイルケア", "バザルト®ストーンヘッドスパ", "乳化トリートメント", "頭皮マッサージ", "お仕上げ"] }, { name: "頭皮リセットうるおいスパ", tag: "土台ケア", time: "90分", price: "11,000円", desc: "匂い・ベタつきが気になる方に。たっぷり栄養補給でさらさらの髪へ。", flow: ["カウンセリング", "マイクロスコープ頭皮カメラ", "オイルケア", "乳化トリートメント", "頭皮マッサージ", "頭皮洗浄", "お仕上げ"] }, { name: "温石 小顔リフトスパ(ドライ)", tag: "リラックス", time: "80分", price: "9,900円", desc: "頭・首・肩をじんわりほぐすドライヘッドスパ。眼精疲労・首肩こり・睡眠に。+2,200円で腕・肩ケア。", flow: ["カウンセリング", "足湯", "バザルト®ストーンヘッドスパ", "ツボ押しデトックスリンパ", "肩・首マッサージ"], note: "プラス2,200円で腕・肩リフレッシュケアも承ります。" }] }, { id: "body", title: "ボディエステ", en: "Body Esthetic", tagline: "温めたバザルト®ストーンの遠赤外線で芯から巡らせる、温活ボディトリートメント。冷え・むくみ・肩こり・姿勢のお悩みに。", from: "16,500円〜", courses: [ { name: "マシュマロバストトリートメント", tag: "バストライン", time: "120分", price: "22,000円", desc: "足先からデコルテまでしっかりトリートメント。女性らしいデコルテ&ふっくらバストでメリハリボディに。ウエストはくびれ、バストはふわふわに。", flow: ["カウンセリング", "足湯", "バザルト®ストーンふわふわバストトリートメント"] }, { name: "スペシャルボディトリートメント", tag: "美姿勢・引き締め", time: "100分", price: "19,800円", desc: "温活ボディに肋間筋ケアをプラス。呼吸がしやすく姿勢も美しく、太りにくく痩せやすい身体へ。", flow: ["カウンセリング", "足湯", "バザルト®ストーンスペシャルボディトリートメント"] }, { name: "温石ボディトリートメント", tag: "婦人科医推奨", time: "90分", price: "16,500円", desc: "遠赤外線の天然石で芯から温め基礎体温を上げる極上ケア。冷え・便秘・むくみ・肩こり・腰痛に。お顔のツボ押し付き。", flow: ["カウンセリング", "足湯", "バザルト®ストーンボディトリートメント"], note: "お顔のツボ押し付きです。" }, { name: "背中すっきり&温石ヘッドスパ", tag: "慢性肩こり", time: "90分", price: "16,500円", desc: "寝てしまう人続出。根本原因の背中からしっかりほぐし、羽が生えたように軽く。落ちにくい背中のお肉もスッキリ。", flow: ["カウンセリング", "足湯", "バザルト®ストーンヘッドスパ&背面トリートメント"] }] }, { id: "bridal", title: "ブライダル", en: "Bridal", tagline: "挙式当日、最高の自信と輝きを。ドレスから見える上半身を美肌に整える、花嫁様のためのシェービング&トリートメント。", from: "8,800円〜", courses: [ { name: "お試しシェービングコース", tag: "肌質改善", time: "70分", price: "8,800円", desc: "くすみ・乾燥・毛穴・黒ずみをケアして美肌に仕上げる肌質改善シェービング。本番に向けた最適な日取りやホームケアもアドバイス。〔顔・首〕", flow: ["カウンセリング", "保湿クレンジング", "肌質改善ケア(くすみ・乾燥・毛穴ケア)", "お顔・耳のシェービング", "保湿パック", "スキンケア"] }, { name: "ベーシックコース", tag: "基本", time: "90分", price: "22,000円", desc: "産毛や古い角質を除去して肌のトーンを明るく。ドレスから露出する上半身を美しく整える基本コース。〔顔・首・デコルテ・背中・うなじ〕", flow: ["カウンセリング", "背中ケア", "襟足・背中(肩甲骨まで)シェービング", "お顔オイルケアクレンジング", "デコルテフェイシャルトリートメント", "美姿勢ツボケア", "保湿パック", "お顔・デコルテシェービング", "眉デザインカット", "鎮静パック", "スキンケア", "お仕上げ"] }, { name: "スペシャルケアコース", tag: "二の腕ケア付き", time: "120分", price: "27,500円", desc: "ベーシックに上腕シェービングをプラス。二の腕の老廃物を流し、すっきり引き締まった印象に。〔顔・首・デコルテ・背中・うなじ・上腕〕", flow: ["カウンセリング", "背中ケア", "襟足・背中(肩甲骨まで)シェービング", "上腕(上腕からひじ上まで)シェービング", "お顔オイルケアクレンジング", "デコルテフェイシャルトリートメント", "美姿勢ツボケア", "上腕トリートメント", "保湿パック", "お顔・デコルテシェービング", "眉デザインカット", "鎮静パック", "スキンケア", "お仕上げ"] }, { name: "エレガントラインコース", tag: "人気No.1", time: "180分", price: "36,300円", desc: "スペシャルに加えバザルト®ストーンで深部のコリをほぐし、美しいフェイス〜首・デコルテラインへ。満足度・人気No.1コース。", flow: ["スペシャルケアコースの内容一式", "首スッキリトリートメント", "バザルト®ストーン フェイシャルケア", "バザルト®ストーン 二の腕ケア"] }, { name: "美姿勢ラインコース", tag: "極上", time: "210分", price: "44,000円", desc: "フェイシャル・背中・二の腕のバザルト®ストーンをご一緒に。肩甲骨からほぐし、巻き肩のお悩みもスッキリ。後ろ姿まで美しい花嫁へ。", flow: ["スペシャルケアコースの内容一式", "バザルト®ストーン フェイシャルケア", "バザルト®ストーン 背中ケア", "バザルト®ストーン 二の腕ケア"] }] }]; function CourseItem({ c }) { const [open, setOpen] = React.useState(false); const hasFlow = c.flow && c.flow.length > 0; return (
  • {c.tag && {c.tag}} {c.time}

    {c.desc}

    {hasFlow &&

    施術の流れ

      {c.flow.map((step, i) =>
    1. {step}
    2. )}
    {c.note &&

    ※{c.note}

    }
    }
  • ); } function Services() { const [open, setOpen] = React.useState("shaving"); // Open the matching menu when arriving via a #service- deep link // (from the hamburger menu), then scroll it into view. React.useEffect(() => { var pendingId = null; var finalizeTimer = null; var safetyTimer = null; var fixedTimers = []; var ro = null; function snap(id) { var el = document.getElementById("service-" + id); if (!el) return; el.scrollIntoView({ block: "start" }); } function finalize() { if (!pendingId) return; snap(pendingId); // one last correction before we stop watching pendingId = null; document.documentElement.style.scrollBehavior = ""; // restore smooth if (ro) { ro.disconnect(); ro = null; } } function bump() { if (!pendingId) return; snap(pendingId); clearTimeout(finalizeTimer); finalizeTimer = setTimeout(finalize, 450); } // Layout can settle via a CSS transition ending, a non-transition size // change (ResizeObserver), or — in case neither fires reliably — a // handful of fixed-delay checks. Any one of these is enough; they're // all idempotent (snapping to an already-correct position is a no-op). function onTransitionEnd(e) { if (e.propertyName !== "grid-template-rows") return; bump(); } function openFromHash() { const m = (window.location.hash || "").match(/^#service-(.+)$/); if (!m) return; const id = decodeURIComponent(m[1]); if (!SERVICE_MENU.some((s) => s.id === id)) return; pendingId = id; // Clicking a hamburger-drawer link both navigates AND closes the // drawer; the drawer's own body scroll-lock (overflow:hidden) is only // released once React re-renders, which can lag a tick behind this // handler. While locked, scrollIntoView is a no-op — clear it directly // here so scrolling is never blocked. document.body.style.overflow = ""; // Disable global smooth-scroll for the whole open sequence so the // browser's native hash jump doesn't animate toward the panel's // pre-collapse position and fight our snaps. Restored once settled. document.documentElement.style.scrollBehavior = "auto"; setOpen(id); fixedTimers.forEach(clearTimeout); fixedTimers = [0, 60, 150, 300, 500, 750, 1050, 1500, 2200, 3200].map( function (ms) { return setTimeout(function () { snap(id); }, ms); } ); requestAnimationFrame(function () { snap(id); }); clearTimeout(finalizeTimer); finalizeTimer = setTimeout(finalize, 2400); if (ro) ro.disconnect(); ro = new ResizeObserver(bump); ro.observe(document.body); ro.observe(document.documentElement); clearTimeout(safetyTimer); safetyTimer = setTimeout(finalize, 7000); } var menu = document.querySelector(".svc-menu"); if (menu) menu.addEventListener("transitionend", onTransitionEnd); openFromHash(); window.addEventListener("hashchange", openFromHash); return () => { window.removeEventListener("hashchange", openFromHash); if (menu) menu.removeEventListener("transitionend", onTransitionEnd); clearTimeout(finalizeTimer); clearTimeout(safetyTimer); fixedTimers.forEach(clearTimeout); if (ro) ro.disconnect(); }; }, []); return (
    04

    Our Care — 04

    menu & price

    シェービングを軸にした
    5つのケアメニュー

    {SERVICE_MENU.map((s) => { const isOpen = open === s.id; return (

    {s.tagline}

    {s.courses.length > 0 &&
      {s.courses.map((c, i) => )}
    } {s.options &&

    オプションシェービング

      {s.options.map((o, i) =>
    • {o[0]}{o[1]}
    • )}
    }
    ); })}

    表示はすべて税込価格です。コース内容は当日の体調・肌状態に合わせて調整いたします。ご予約・ご相談はLINEから承ります。

    ); } Object.assign(window, { Nav, LineIcon, Hero, Concept, FirstVisit, FAQ, FAQSection, Services });