/* ============================================================
   LIFF Common Stylesheet — Modern refresh
   ------------------------------------------------------------
   Base: 実装済み Livewire 画面（Bootstrap/Codebase 風クラス）を
         そのまま活かして "見た目だけ" 塗り替える方針は継承。
   Look: iOS 18 風のガラス感 + ソフト UI。医療クリニック向けに
         色は控えめ、余白は広め、影は柔らかく多層。
   Compat: 既存 class 名（.membership-hero, .cs-inquiry-*, .btn-primary,
           .row, .col-6 など）は 100% 互換。variant-hero / variant-navy
           も引き続き機能する。
   ============================================================ */

/* ---------- 0. Font ---------- */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');

/* ---------- 1. Design Tokens ---------- */
:root {
    /* Brand（Orange 標準） */
    --liff-primary:      #eb6100;
    --liff-primary-600:  #d55500;
    --liff-primary-100:  #fff1e6;
    --liff-primary-50:   #fff8f2;
    --liff-primary-rgb:  235,97,0;

    /* Neutral — クリニック向けの清潔なクール白＋グレー階調
       (ink はやや濃く、muted はコントラスト強めで読みやすく) */
    --liff-ink:        #0b1220;
    --liff-ink-2:      #2b3648;
    --liff-muted:      #5b6b81;
    --liff-muted-2:    #94a3b8;
    --liff-line:       #edf0f5;      /* より薄い枠線 */
    --liff-line-2:     #f4f6fa;
    --liff-bg:         #f7f9fc;
    --liff-bg-2:       #eef2f7;
    --liff-white:      #ffffff;

    /* Semantic */
    --liff-success:    #16a34a;
    --liff-danger:     #dc2626;
    --liff-info:       #2563eb;

    /* Radius — 落ち着いた中庸サイズ */
    --liff-radius-sm:   6px;
    --liff-radius:      12px;
    --liff-radius-lg:   16px;
    --liff-radius-xl:   22px;
    --liff-radius-pill: 999px;

    /* Shadow — カードにしっかり効かせる（浮遊感を出す） */
    --liff-shadow-1: 0 1px 3px rgba(15,23,42,.06),
                     0 4px 10px -2px rgba(15,23,42,.08);
    --liff-shadow-2: 0 2px 6px rgba(15,23,42,.08),
                     0 12px 24px -8px rgba(15,23,42,.14);
    --liff-shadow-3: 0 4px 12px rgba(15,23,42,.10),
                     0 20px 40px -12px rgba(15,23,42,.20);
    --liff-shadow-primary: 0 3px 8px -2px rgba(var(--liff-primary-rgb),.24),
                           0 1px 2px rgba(var(--liff-primary-rgb),.14);

    /* Type */
    --liff-font:    "Noto Sans JP", -apple-system, BlinkMacSystemFont,
                    "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Meiryo",
                    system-ui, sans-serif;
    --liff-font-en: "Plus Jakarta Sans", "Inter", system-ui, sans-serif;
    --liff-font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular",
                     Menlo, Consolas, monospace;

    --liff-h1: 22px;
    --liff-h2: 19px;
    --liff-h3: 17px;
    --liff-body: 14px;
    --liff-small: 12px;
}

/* ---------- 2. Base ---------- */
* { box-sizing: border-box; }

html, body {
    font-family: var(--liff-font);
    color: var(--liff-ink);
    font-size: 14px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-size-adjust: 100%;
}
body {
    background: var(--liff-bg);
}

/* LIFF ページコンテナ（Sample Clinic のモック用）
   → 端末ぽく浮かべる。両サイド外側は淡い色 + ページ内は白 */
.liff-page,
.message-page {
    max-width: 480px;
    margin: 0 auto;
    background: var(--liff-white);
    min-height: 100vh;
    color: var(--liff-ink);
    font-feature-settings: "palt";
    position: relative;
    /* 端に薄く shadow — iframe 内でも枠が浮いて見える */
    box-shadow:
        0 0 0 1px rgba(15,23,42,.02),
        0 24px 48px -24px rgba(15,23,42,.08);
}

/* ページの上部カラーウォッシュは廃止（プレーンな白） */
/* Do not stack every .liff-page child. z-index here trapped
   .reservation-modal-overlay below CMS action_html (talk-room back). */
.liff-page > * { position: relative; }

a { color: var(--liff-primary); text-decoration: none; }
a:hover { text-decoration: underline; }

p { margin: 0 0 8px; }
p:last-child { margin-bottom: 0; }

hr { border: 0; border-top: 1px solid var(--liff-line); margin: 16px 0; }

/* ---------- 3. Header / Footer (CMS 帯) ---------- */
.p-3.border-bottom.bg-body-light {
    padding: 14px 18px !important;
    background: var(--liff-white) !important;
    border-bottom: 1px solid var(--liff-line) !important;
    display: flex;
    align-items: center;
    gap: 12px;
    position: sticky;
    top: 0;
    z-index: 10;
}
.p-3.border-bottom.bg-body-light::before {
    content: "";
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--liff-primary);
    flex: 0 0 auto;
    position: relative;
}
.p-3.border-bottom.bg-body-light strong {
    font-weight: 700;
    color: var(--liff-ink);
    font-size: 15px;
    letter-spacing: -.005em;
}
.p-3.border-bottom.bg-body-light .small.text-muted {
    color: var(--liff-muted) !important;
    font-size: 11px;
    letter-spacing: .02em;
}

.p-3.border-top {
    padding: 18px !important;
    background: transparent !important;
    border-top: 1px solid var(--liff-line-2) !important;
    color: var(--liff-muted-2) !important;
    font-size: 11px;
    text-align: center;
    letter-spacing: .08em;
    font-family: var(--liff-font-en);
    font-weight: 500;
}

/* ---------- 4. Spacing utils (Bootstrap 互換) ---------- */
.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}
.p-3{padding:1rem!important}.p-4{padding:1.25rem!important}
.p-5{padding:1.75rem!important}
.px-3{padding-left:1rem!important;padding-right:1rem!important}
.py-3{padding-top:1rem!important;padding-bottom:1rem!important}
.py-4{padding-top:1.25rem!important;padding-bottom:1.25rem!important}
.pb-0{padding-bottom:0!important}

.m-0{margin:0!important}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}
.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:.875rem!important}
.mb-4{margin-bottom:1.25rem!important}.mb-5{margin-bottom:2rem!important}
.mt-2{margin-top:.5rem!important}.mt-3{margin-top:.875rem!important}
.mt-4{margin-top:1.25rem!important}
.my-5{margin-top:2rem!important;margin-bottom:2rem!important}
.ms-auto{margin-left:auto!important}

/* ---------- 5. Display / Flex utils ---------- */
.d-block{display:block!important}
.d-flex{display:flex!important}
.d-grid{display:grid!important}
.d-none{display:none!important}
.d-inline-block{display:inline-block!important}
.flex-grow-1{flex:1 1 auto!important}
.align-items-center{align-items:center!important}
.align-items-start{align-items:flex-start!important}
.justify-content-between{justify-content:space-between!important}
.gap-2{gap:.5rem!important}
.w-100{width:100%!important}
.text-center{text-align:center!important}
.text-start{text-align:left!important}

/* ---------- 6. Row / Col ---------- */
.row {
    display: flex;
    flex-wrap: wrap;
    margin: 0 -6px;
}
.row.g-3 { margin: 0 -6px; }
.row.g-3 > [class*="col-"] { padding: 6px; }
.col-6  { flex: 0 0 50%;  max-width: 50%;  padding: 0 6px; }
.col-12 { flex: 0 0 100%; max-width: 100%; padding: 0 6px; }

/* ---------- 7. Typography ---------- */
.h1,h1{
    font-size:22px;font-weight:700;line-height:1.35;
    margin:0 0 14px;color:var(--liff-ink);letter-spacing:-.01em;
}
.h4,h4{
    font-size:19px;font-weight:700;line-height:1.4;
    margin:0 0 16px;color:var(--liff-ink);
    position:relative;padding-left:12px;
}
.h4::before,h4::before{
    content:"";
    position:absolute;
    left:0; top:.35em; bottom:.35em;
    width:3px;
    background:var(--liff-primary);
}
.h5{font-size:17px;font-weight:700;line-height:1.4;margin:0 0 12px;color:var(--liff-ink);letter-spacing:-.005em}
.h6{font-size:14px;font-weight:700;line-height:1.5;margin:0 0 8px;color:var(--liff-ink-2)}
.fs-5{font-size:17px;line-height:1.55;font-weight:500}
.display-1{
    font-size:52px;font-weight:700;color:var(--liff-ink);line-height:1.1;
}
.display-4{
    font-size:30px;font-weight:700;color:var(--liff-primary);line-height:1.2;
}

.fw-bold{font-weight:700!important}
.fw-medium{font-weight:500!important}
.fw-semibold{font-weight:600!important}
.small{font-size:12px}
.text-muted{color:var(--liff-muted)!important}
.text-body{color:var(--liff-ink)!important}
.text-primary{color:var(--liff-primary)!important}
.text-danger{color:var(--liff-danger)!important}
.text-decoration-none{text-decoration:none!important}

/* ---------- 8. Borders & rounded ---------- */
.border{border:1px solid var(--liff-line)!important}
.border-bottom{border-bottom:1px solid var(--liff-line)!important}
.border-top{border-top:1px solid var(--liff-line)!important}
.rounded{border-radius:var(--liff-radius)!important}
.rounded-pill{border-radius:var(--liff-radius-pill)!important}

/* ---------- 9. Backgrounds ---------- */
.bg-white{background:var(--liff-white)!important}
.bg-body-light{background:var(--liff-bg)!important}
.bg-body-extra-light{background:var(--liff-bg-2)!important}
.bg-primary{background:var(--liff-primary)!important;color:#fff}

/* ---------- 10. Buttons ---------- */
.btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    padding:12px 18px;
    font-size:15px;
    font-weight:600;
    border-radius:var(--liff-radius);
    border:1px solid transparent;
    background:transparent;
    color:var(--liff-ink);
    cursor:pointer;
    transition:transform .1s ease,
               background .15s ease,
               border-color .15s ease,
               color .15s ease,
               box-shadow .15s ease;
    text-decoration:none;
    line-height:1.4;
    font-family:inherit;
    min-height:48px;
    letter-spacing:0;
    position:relative;
}
.btn:hover{text-decoration:none}
.btn:active{transform:translateY(1px) scale(.995)}
.btn.w-100{width:100%}
.btn-sm{padding:8px 14px;font-size:13px;min-height:38px;border-radius:var(--liff-radius-sm)}

.btn-primary:not(.coupon-action):not(.cms-content-cta),
.btn.btn-primary:not(.coupon-action):not(.cms-content-cta){
    background: var(--liff-primary)!important;
    border-color: var(--liff-primary)!important;
    color:#fff!important;
    box-shadow: none;
}
.btn-primary:not(.coupon-action):not(.cms-content-cta):hover{
    background: var(--liff-primary-600)!important;
    border-color: var(--liff-primary-600)!important;
    color:#fff!important;
    box-shadow: none;
}
.btn-primary:not(.coupon-action)[disabled],
.btn-primary:not(.coupon-action).disabled{
    background:#f3b98a!important;
    border-color:transparent!important;
    box-shadow:none;
    cursor:not-allowed;
    opacity:.7;
}

.btn-outline-primary,
.btn.btn-outline-primary{
    background:var(--liff-white)!important;
    border:1.5px solid var(--liff-primary)!important;
    color:var(--liff-primary)!important;
    box-shadow: 0 1px 2px rgba(var(--liff-primary-rgb),.06);
}
.btn-outline-primary:hover{
    background:var(--liff-primary-50)!important;
}

.btn-outline-secondary:not(.coupon-action),
.btn.btn-outline-secondary:not(.coupon-action){
    background:var(--liff-white)!important;
    border-color:var(--liff-line)!important;
    color:var(--liff-ink-2)!important;
    box-shadow: var(--liff-shadow-1);
}
.btn-outline-secondary:not(.coupon-action):hover{
    background:var(--liff-bg)!important;
    border-color:var(--liff-muted-2)!important;
}

/* Outline danger — キャンセル系。目立たせない（テキストリンク寄り） */
.btn-outline-danger{
    background: transparent !important;
    border: 0 !important;
    color: var(--liff-muted) !important;
    text-decoration: underline;
    text-decoration-color: var(--liff-muted-2);
    text-underline-offset: 3px;
    font-weight: 500 !important;
    font-size: 13px !important;
    min-height: auto !important;
    padding: 6px 12px !important;
    box-shadow: none !important;
}
.btn-outline-danger:hover{
    background: transparent !important;
    color: var(--liff-danger) !important;
    text-decoration-color: var(--liff-danger);
}

.btn-close{
    width:32px;height:32px;padding:0;border-radius:50%;
    background:var(--liff-bg-2);border:0;color:var(--liff-muted);font-size:20px;line-height:1;
}
.btn-close::before{content:"×";display:block;transform:translateY(-1px)}

/* インライン style="background-color: #0D6EFD" 上書き。
   クーポン処理ボタンと本文 CTA（.cms-content-cta）は CRM の色を残す。 */
.btn-primary:not(.coupon-action):not(.cms-content-cta)[style*="background-color"]{
    background-color: var(--liff-primary)!important;
    border-color: var(--liff-primary)!important;
    color:#fff!important;
}

/* トークルームへ戻る (backbtn wide) */
.backbtn.wide{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    min-width:220px;
    padding:13px 20px;
    border-radius:var(--liff-radius-pill);
    background:var(--liff-white);
    border:1px solid var(--liff-line);
    color:var(--liff-ink-2);
    font-weight:600;
    font-size:14px;
    text-decoration:none;
    box-shadow:var(--liff-shadow-1);
    transition:background .15s ease, color .15s ease, border-color .15s ease;
}
.backbtn.wide:hover{
    background:var(--liff-bg);
    text-decoration:none;
    color:var(--liff-ink);
}
.backbtn.wide::before{
    content:"";
    width:16px;height:16px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 13.5a.5.5 0 01-.354-.146l-5-5a.5.5 0 010-.708l5-5a.5.5 0 11.708.708L3.707 8l4.647 4.646A.5.5 0 018 13.5z'/></svg>") no-repeat center/16px;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 13.5a.5.5 0 01-.354-.146l-5-5a.5.5 0 010-.708l5-5a.5.5 0 11.708.708L3.707 8l4.647 4.646A.5.5 0 018 13.5z'/></svg>") no-repeat center/16px;
}

/* ---------- 11. Card-ish: border rounded p-3/p-4 ---------- */
.border.rounded {
    border-radius: var(--liff-radius) !important;
    border: 1px solid var(--liff-line-2) !important;
    background: var(--liff-white);
    box-shadow: var(--liff-shadow-1);
    transition: box-shadow .22s cubic-bezier(.2,.7,.2,1),
                transform .22s cubic-bezier(.2,.7,.2,1),
                border-color .18s ease;
}
a.border.rounded,
button.border.rounded {
    color: var(--liff-ink) !important;
    text-decoration: none;
    display: block;
}
a.border.rounded:hover,
button.border.rounded:hover {
    box-shadow: var(--liff-shadow-2);
    border-color: var(--liff-muted-2);
    text-decoration: none;
}
a.border.rounded:active,
button.border.rounded:active {
    transform: translateY(1px);
    box-shadow: var(--liff-shadow-1);
}

/* タイル型（会員証メニューなど）: text-center border rounded p-3 */
a.border.rounded.text-center,
button.border.rounded.text-center {
    font-weight: 600;
    color: var(--liff-ink) !important;
    padding: 18px 12px !important;
    position: relative;
}

/* ---------- 12. Badges (少し角張らせて安定感) ---------- */
.badge{
    display:inline-flex;
    align-items:center;
    padding:4px 10px;
    font-size:11px;
    font-weight:700;
    border-radius:4px;         /* pill → 弱めのラウンド */
    line-height:1.4;
    letter-spacing:.03em;
    font-family:inherit;
}
.badge.text-bg-secondary,
.text-bg-secondary{
    background:var(--liff-primary-100);
    color:var(--liff-primary-600);
    box-shadow: inset 0 0 0 1px rgba(var(--liff-primary-rgb),.10);
}
.badge.bg-primary{
    background: linear-gradient(180deg,
                var(--liff-primary),
                color-mix(in oklch, var(--liff-primary) 88%, #000)) !important;
    color:#fff !important;
    box-shadow: 0 4px 8px -2px rgba(var(--liff-primary-rgb),.35);
}

/* ---------- 13. Forms ---------- */
.form-label{
    display:block;
    font-size:12.5px;
    font-weight:700;
    color:var(--liff-ink-2);
    margin:0 0 8px;
    letter-spacing:.01em;
}
/* Android の LINE 内ブラウザがダークモードで入力文字だけ白くするのを止める。 */
:root { color-scheme: only light; }
input, textarea, select,
.form-control, .form-select,
.cs-inquiry-composer textarea {
    color: var(--liff-ink) !important;
    -webkit-text-fill-color: var(--liff-ink) !important;
    caret-color: var(--liff-ink);
}
input::placeholder, textarea::placeholder,
.form-control::placeholder {
    color: var(--liff-muted-2) !important;
    -webkit-text-fill-color: var(--liff-muted-2) !important;
    opacity: 1;
}
.form-control,
.form-select{
    display:block;
    width:100%;
    padding:12px 14px;
    font-size:15px;
    font-family:inherit;
    line-height:1.5;
    color:var(--liff-ink);
    background:var(--liff-white);
    border:1px solid var(--liff-line);
    border-radius:var(--liff-radius);
    transition:border-color .18s ease, box-shadow .18s ease, background .18s ease;
    -webkit-appearance:none;
       -moz-appearance:none;
            appearance:none;
    min-height:48px;
    box-shadow: inset 0 1px 2px rgba(15,23,42,.03);
}
.form-control:hover,
.form-select:hover{ border-color:var(--liff-muted-2); }
.form-control:focus,
.form-select:focus{
    outline:none;
    border-color:var(--liff-primary);
    box-shadow:
        0 0 0 4px rgba(var(--liff-primary-rgb),.15),
        inset 0 1px 2px rgba(15,23,42,.03);
    background:var(--liff-white);
}
.form-control::placeholder{color:var(--liff-muted-2)}
.form-select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='%2364748b' d='M5.516 7.548L10 12.032l4.484-4.484L15.5 8.564 10 14.064 4.5 8.564z'/></svg>");
    background-repeat:no-repeat;
    background-position:right 14px center;
    background-size:20px;
    padding-right:40px;
}
textarea.form-control{min-height:120px;line-height:1.6}

/* checkbox / radio (iOS 風) */
.form-check-input{
    width:20px;height:20px;
    accent-color:var(--liff-primary);
    margin-right:8px;
}

/* ---------- 14. Table ---------- */
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th,.table td{
    padding:12px 6px;
    text-align:left;
    vertical-align:top;
    border-bottom:1px solid var(--liff-line-2);
}
.table th{
    font-weight:500;
    color:var(--liff-muted);
    width:36%;
    white-space:nowrap;
    font-size:12.5px;
    letter-spacing:.01em;
}
.table td{color:var(--liff-ink);font-weight:600}
.table.table-sm th,.table.table-sm td{padding:10px 6px;font-size:13px}
.table.mb-0 tr:last-child th,.table.mb-0 tr:last-child td{border-bottom:0}
.table tr:last-child th,.table tr:last-child td{border-bottom:0}

/* ---------- 15. Progress ---------- */
.progress{
    background:var(--liff-primary-100);
    border-radius:var(--liff-radius-pill);
    overflow:hidden;
    height:6px;
    box-shadow: inset 0 1px 2px rgba(15,23,42,.06);
}
.progress-bar{
    background:linear-gradient(90deg, var(--liff-primary), var(--liff-primary-600));
    height:100%;
}
.progress-bar-striped{
    background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.25) 50%,rgba(255,255,255,.25) 75%,transparent 75%);
    background-size:1rem 1rem;
}
.progress-bar-animated{
    animation:liff-progress-stripes 1s linear infinite;
}
@keyframes liff-progress-stripes{
    from{background-position:1rem 0}
    to{background-position:0 0}
}

/* ---------- 16. Hero (LIFF entry / error / login) ---------- */
.hero{
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    background:
        radial-gradient(1000px 500px at 50% -10%, rgba(var(--liff-primary-rgb),.10) 0%, transparent 60%),
        linear-gradient(180deg, var(--liff-primary-50) 0%, var(--liff-white) 320px) !important;
    padding:24px 20px;
    position:relative;
}
.hero-inner{width:100%;max-width:360px;position:relative;z-index:1}
.content.content-full{width:100%}

/* ---------- 17. FontAwesome fallback ---------- */
.fa,.fas,.fa-solid,.far,.fa-regular{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:1em;height:1em;
    font-style:normal;
    line-height:1;
}
.fa-3x{font-size:3em}
.fa-2x{font-size:2em}

/* 回転（loading） */
.fa-spin{
    animation:liff-spin 1.2s linear infinite;
    width:56px;height:56px;
    border-radius:50%;
    border:3px solid var(--liff-primary-100);
    border-top-color:var(--liff-primary);
    border-right-color:var(--liff-primary);
    display:inline-block;
    box-shadow: 0 8px 20px -8px rgba(var(--liff-primary-rgb),.4);
}
.fa-spin::before{content:none}
@keyframes liff-spin{to{transform:rotate(360deg)}}

/* ==============================================================
   COMPONENT-LEVEL STYLES
   ============================================================== */

/* ---------- 会員証カード （旧レイアウト：table 入り版）互換 ---------- */
.border.rounded.p-4.bg-body-extra-light {
    background: linear-gradient(135deg,
        var(--liff-primary) 0%,
        color-mix(in oklch, var(--liff-primary) 80%, #fff) 55%,
        color-mix(in oklch, var(--liff-primary) 70%, #fff) 100%) !important;
    border: 0 !important;
    border-radius: var(--liff-radius-lg) !important;
    padding: 22px !important;
    color: #fff !important;
    box-shadow:
        0 10px 24px -8px rgba(var(--liff-primary-rgb),.24),
        0 2px 4px rgba(var(--liff-primary-rgb),.12);
    position: relative;
    overflow: hidden;
    margin-bottom: 20px !important;
}
.border.rounded.p-4.bg-body-extra-light::before {
    content: "";
    position: absolute;
    top: -60px; right: -40px;
    width: 220px; height: 220px;
    border-radius: 50%;
    background: rgba(255,255,255,.12);
    pointer-events: none;
    filter: blur(6px);
}
.border.rounded.p-4.bg-body-extra-light::after {
    content: "MEMBERSHIP CARD";
    position: absolute;
    bottom: 16px; right: 18px;
    font-size: 10px;
    letter-spacing: .22em;
    font-weight: 700;
    color: rgba(255,255,255,.78);
    font-family: var(--liff-font-en);
}
.border.rounded.p-4.bg-body-extra-light .table th,
.border.rounded.p-4.bg-body-extra-light .table td {
    border-bottom-color: rgba(255,255,255,.18);
    color: #fff;
}
.border.rounded.p-4.bg-body-extra-light .table th {
    color: rgba(255,255,255,.75);
    font-weight: 500;
    font-size: 12px;
}
.border.rounded.p-4.bg-body-extra-light .table td {
    font-weight: 700;
    font-size: 14px;
}
.border.rounded.p-4.bg-body-extra-light .table tr:last-child th,
.border.rounded.p-4.bg-body-extra-light .table tr:last-child td {
    border-bottom: 0;
}

/* ---------- 会員証タイル: 6枚（プロフィール、チェックイン...） ---------- */
.liff-page .row.g-3.mb-4 > .col-6 > a.d-block.text-decoration-none.text-body.border.rounded.p-3.text-center,
.liff-page .row.g-3.mb-4 > .col-6 > button.d-block.w-100.border.rounded.p-3.text-center.bg-white {
    padding: 18px 8px !important;
    border-radius: var(--liff-radius) !important;
    border: 1px solid var(--liff-line-2) !important;
    background: var(--liff-white) !important;
    box-shadow: var(--liff-shadow-1);
    font-weight: 600;
    font-size: 13px;
    color: var(--liff-ink) !important;
    position: relative;
    line-height: 1.3;
    text-align: center;
    min-height: 92px;
    display: flex !important;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 8px;
    letter-spacing: .01em;
}
/* タイルアイコン（マスク画像で primary 色）
   ------------------------------------------------------------
   注: 各画像は個別セレクタ（href / class / 位置 / テキスト）で
       mask-image が指定される。マッチしないタイルには mask-image
       がつかず、下の "fallback" ルールで ::before 自体を非表示に。 */
.liff-page .row.g-3.mb-4 > .col-6 > a::before,
.liff-page .row.g-3.mb-4 > .col-6 > button::before {
    content: "";
    width: 32px; height: 32px;
    background-color: var(--liff-primary);
    -webkit-mask-size: 26px 26px;
            mask-size: 26px 26px;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    display: block;
    margin: 0 auto;
    position: relative;
}
/* --- Preview HTML 用: href="#" になっていても位置順で当てる ---
   タイル順は固定: 1)プロフィール 2)チェックイン 3)マイページ
                   4)予約 5)来院履歴 6)問診票
   → 1,3,4,5,6 番目の <a>（チェックインは <button>）に mask 復元。
   本番HTML (href=フルURL) でもマッチするので保険としても機能する。 */
.liff-page .row.g-3.mb-4 > .col-6:nth-child(1) > a::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21c0-4 4-6 8-6s8 2 8 6'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21c0-4 4-6 8-6s8 2 8 6'/></svg>") !important;
}
.liff-page .row.g-3.mb-4 > .col-6:nth-child(3) > a::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M4 6h16M4 12h16M4 18h10'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M4 6h16M4 12h16M4 18h10'/></svg>") !important;
}
.liff-page .row.g-3.mb-4 > .col-6:nth-child(4) > a::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='16' rx='2'/><path d='M8 3v4M16 3v4M3 10h18'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='16' rx='2'/><path d='M8 3v4M16 3v4M3 10h18'/></svg>") !important;
}
.liff-page .row.g-3.mb-4 > .col-6:nth-child(5) > a::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 2'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 2'/></svg>") !important;
}
.liff-page .row.g-3.mb-4 > .col-6:nth-child(6) > a::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='6' y='4' width='12' height='17' rx='2'/><path d='M9 3h6v3H9zM9 11h6M9 15h6M9 19h4'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='6' y='4' width='12' height='17' rx='2'/><path d='M9 3h6v3H9zM9 11h6M9 15h6M9 19h4'/></svg>") !important;
}

/* --- 本番用（href が localhost URL のとき） --- */
.liff-page .row.g-3.mb-4 > .col-6 > a[href*="member-profile"]::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21c0-4 4-6 8-6s8 2 8 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21c0-4 4-6 8-6s8 2 8 6'/></svg>");
}
.liff-page .row.g-3.mb-4 > .col-6 > button.js-membership-checkin-tile::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1.2'/><rect x='14' y='3' width='7' height='7' rx='1.2'/><rect x='3' y='14' width='7' height='7' rx='1.2'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1.2'/><rect x='14' y='3' width='7' height='7' rx='1.2'/><rect x='3' y='14' width='7' height='7' rx='1.2'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>");
}
.liff-page .row.g-3.mb-4 > .col-6 > a[href*="mypage"]::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M4 6h16M4 12h16M4 18h10'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M4 6h16M4 12h16M4 18h10'/></svg>");
}
.liff-page .row.g-3.mb-4 > .col-6 > a[href*="reservation"]::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='16' rx='2'/><path d='M8 3v4M16 3v4M3 10h18'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='16' rx='2'/><path d='M8 3v4M16 3v4M3 10h18'/></svg>");
}
.liff-page .row.g-3.mb-4 > .col-6 > a[href*="visit-history"]::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 2'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 2'/></svg>");
}
.liff-page .row.g-3.mb-4 > .col-6 > a[href*="questionnaire"]::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='6' y='4' width='12' height='17' rx='2'/><path d='M9 3h6v3H9zM9 11h6M9 15h6M9 19h4'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='6' y='4' width='12' height='17' rx='2'/><path d='M9 3h6v3H9zM9 11h6M9 15h6M9 19h4'/></svg>");
}

/* タイル hover */
.liff-page .row.g-3.mb-4 > .col-6 > a:hover,
.liff-page .row.g-3.mb-4 > .col-6 > button:hover {
    box-shadow: var(--liff-shadow-2);
    border-color: var(--liff-muted-2) !important;
}

/* ---------- Coupon list — 左アクセントバー付きカード ---------- */
.liff-page a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 {
    padding: 16px 16px 16px 20px !important;
    position: relative;
    overflow: hidden;
}
.liff-page a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3::before {
    content: "";
    position: absolute;
    top: 14px; bottom: 14px; left: 0;
    width: 3px;
    background: var(--liff-primary);
    border-radius: 0 2px 2px 0;
}
.liff-page a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 .fw-bold {
    color: var(--liff-ink);
    font-size: 15.5px;
    margin-bottom: 6px !important;
    letter-spacing: -.005em;
}

/* ---------- Reservation list / Survey list カード ---------- */
.liff-page a.d-block.border.rounded {
    color: var(--liff-ink) !important;
    padding: 20px 18px !important;
    margin-bottom: 20px !important;
    text-decoration: none;
    display: block;
}

/* ---------- Campaign list ---------- */
.campaign-list-slot {
    padding: 22px 18px !important;
}
.campaign-list-slot a.d-block.border.rounded.p-3 {
    padding: 0 !important;
    border-radius: var(--liff-radius) !important;
    border: 1px solid var(--liff-line-2) !important;
    background: var(--liff-white);
    box-shadow: var(--liff-shadow-1);
    overflow: hidden;
    position: relative;
    color: var(--liff-ink) !important;
    font-weight: 700;
    font-size: 15px;
    display: flex !important;
    align-items: stretch;
    gap: 16px;
    min-height: 92px;
    text-decoration: none !important;
    margin-bottom: 14px;
}
.campaign-list-slot a.d-block.border.rounded.p-3::before {
    content: "";
    flex: 0 0 100px;
    background:
        radial-gradient(circle at 30% 20%, rgba(255,255,255,.65), transparent 55%),
        linear-gradient(135deg, var(--liff-primary-100) 0%, #ffe0c2 100%);
    position: relative;
}
.campaign-list-slot a.d-block.border.rounded.p-3::after {
    content: "";
    align-self: center;
    width: 10px; height: 10px;
    border-right: 2px solid var(--liff-muted-2);
    border-bottom: 2px solid var(--liff-muted-2);
    transform: rotate(-45deg);
    margin-right: 18px;
    margin-left: auto;
}
.campaign-list-slot a.d-block.border.rounded.p-3 > * {
    align-self: center;
    padding: 14px 0;
}

/* ---------- Campaign detail ---------- */
.liff-page .m_list:has(.campaign-selected-body) > .m_title,
.liff-page .m_list:has(.campaign-selected-before) > .m_title,
.liff-page .m_list:has(.campaign-selected-after) > .m_title {
    margin: 0 24px 4px;
    padding-top: 14px;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.35;
    letter-spacing: -.01em;
    color: var(--liff-ink);
    text-align: left;
}
.liff-page .m_list:has(.campaign-selected-body) > p,
.liff-page .m_list:has(.campaign-selected-before) > p,
.liff-page .m_list:has(.campaign-selected-after) > p {
    margin: 0 24px;
    line-height: 1.5;
    text-align: left;
}
.liff-page .m_list:has(.campaign-selected-body) > p small,
.liff-page .m_list:has(.campaign-selected-before) > p small,
.liff-page .m_list:has(.campaign-selected-after) > p small {
    font-size: var(--liff-small);
    color: var(--liff-muted);
}
.campaign-selected-body,
.campaign-selected-before,
.campaign-selected-after {
    padding: 22px 18px !important;
}
.campaign-selected-body > p:first-child,
.campaign-selected-before > p:first-child,
.campaign-selected-after > p:first-child,
.campaign-selected-body .cms-content,
.campaign-selected-before .cms-content,
.campaign-selected-after .cms-content {
    font-size: 15px;
    line-height: 1.8;
    color: var(--liff-ink-2);
}
.campaign-selected-body > p:first-child,
.campaign-selected-before > p:first-child,
.campaign-selected-after > p:first-child,
.campaign-selected-body .cms-content > :first-child:not(.cms-content-cta-wrap),
.campaign-selected-before .cms-content > :first-child:not(.cms-content-cta-wrap),
.campaign-selected-after .cms-content > :first-child:not(.cms-content-cta-wrap) {
    margin-bottom: 24px;
}
.campaign-selected-body .cms-content img,
.campaign-selected-before .cms-content img,
.campaign-selected-after .cms-content img {
    max-width: 100%;
    height: auto;
}
.cms-content-cta-wrap {
    text-align: center;
    margin-top: 28px;
}
.cms-content-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 60%;
    max-width: 100%;
    box-sizing: border-box;
    text-decoration: none;
}

/* ---------- CMS liff news ---------- */
.cms-body-liff-news {
    padding: 22px 18px !important;
    font-size: 15px;
    line-height: 1.8;
    color: var(--liff-ink-2);
}
.cms-body-liff-news h1,
.cms-body-liff-news h2 {
    color: var(--liff-ink);
    font-weight: 700;
}

/* ---------- Inquiry chat（吹き出し／iMessage 風） ----------
   全体背景は他画面と同じ白系。thread のみ薄ピンクにして
   チャットルーム感を出す。 */
.cs-inquiry-chat {
    padding: 18px 16px !important;
    background: var(--liff-white);
    min-height: calc(100vh - 60px);
}
.cs-inquiry-head {
    display: flex; align-items: center; justify-content: space-between;
    margin: 0 0 14px;
    padding: 0 4px;
}
.cs-inquiry-head__title {
    color: var(--liff-primary) !important;
    font-weight: 700 !important;
    font-size: 16px !important;
    letter-spacing: -.005em;
}
.cs-inquiry-thread {
    background: #FDF1F2 !important;         /* チャット背景 */
    border-radius: 0 !important;
    padding: 22px 18px !important;
    border: 1px solid #f5e3e6 !important;
    box-shadow: none !important;
    min-height: 520px;                       /* 縦を大きく */
}
.cs-inquiry-date {
    text-align: center;
    margin: 14px 0 !important;
}
.cs-inquiry-date span {
    display: inline-block !important;
    background: rgba(255,255,255,.85) !important;
    color: var(--liff-muted) !important;
    padding: 5px 14px;
    border-radius: var(--liff-radius-pill);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .02em;
}
.cs-inquiry-bubble--customer .cs-inquiry-bubble__body {
    background: var(--liff-primary) !important;
    color: #fff !important;
    border-radius: 6px !important;         /* スクエア寄り */
    padding: 10px 14px !important;
    font-size: 14px;
    line-height: 1.5;
    box-shadow: none !important;
}
.cs-inquiry-bubble--staff .cs-inquiry-bubble__body {
    background: var(--liff-white) !important;
    color: var(--liff-ink) !important;
    border: 1px solid var(--liff-line) !important;
    border-radius: 6px !important;         /* スクエア寄り */
    padding: 10px 14px !important;
    font-size: 14px;
    line-height: 1.5;
    box-shadow: none !important;
}
.cs-inquiry-bubble__icon--dummy {
    background: linear-gradient(135deg, var(--liff-primary-100), #ffe0c2) !important;
    color: var(--liff-primary) !important;
    border-radius: 50%;
    width: 38px; height: 38px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700;
    font-size: 14px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 2px 4px rgba(var(--liff-primary-rgb),.1);
}
.cs-inquiry-bubble__name {
    font-size: 12px !important;
    color: var(--liff-muted) !important;
    margin-bottom: 4px !important;
    font-weight: 600;
}
.cs-inquiry-bubble__time {
    font-size: 10px !important;
    color: var(--liff-muted-2) !important;
    margin: 0 4px;
    font-family: var(--liff-font-en);
}
.cs-inquiry-composer {
    margin-top: 14px !important;
    background: var(--liff-white);
    border: 1px solid var(--liff-line) !important;
    border-radius: 4px !important;    /* スクエア */
    padding: 12px;
    box-shadow: none !important;
}
.cs-inquiry-composer textarea {
    height: 88px;
    max-height: 120px;
    resize: none;
    width: 100%;
    border: 0 !important;
    background: #fff !important;
    font-family: inherit;
    font-size: 14.5px;
    padding: 6px 4px !important;
    outline: none;
    color: var(--liff-ink);
}
.cs-inquiry-composer-actions {
    display: flex !important;
    gap: 8px !important;
    margin-top: 8px !important;
    align-items: center;
}
/* 「問い合わせを終了する」— 送信の下段、誤タップ防止で大きく離す */
.cs-inquiry-close {
    display: flex;
    justify-content: center;
    margin: 28px 0 4px;
    padding-top: 20px;
    border-top: 1px dashed var(--liff-line);
}
.cs-inquiry-close .btn {
    max-width: 260px;
    width: 100%;
    min-height: 44px;
    font-size: 13.5px;
    color: var(--liff-muted) !important;
    border-color: var(--liff-line) !important;
    background: var(--liff-white) !important;
}
.cs-inquiry-close .btn:hover {
    color: var(--liff-danger) !important;
    border-color: var(--liff-danger) !important;
}
.cs-inquiry-clip {
    width: 44px !important;
    height: 44px !important;
    border-radius: 4px !important;      /* スクエア */
    border: 1px solid var(--liff-line) !important;
    background: var(--liff-bg) !important;
    color: var(--liff-muted) !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    flex: 0 0 auto;
    transition: border-color .18s ease, color .18s ease, background .18s ease;
}
.cs-inquiry-clip::before {
    content: "";
    width: 20px; height: 20px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'><path d='M21.44 11.05l-9.19 9.19a5.5 5.5 0 01-7.78-7.78l9.19-9.19a3.5 3.5 0 014.95 4.95l-9.19 9.19a1.5 1.5 0 01-2.12-2.12L14.5 6.5'/></svg>") no-repeat center/contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'><path d='M21.44 11.05l-9.19 9.19a5.5 5.5 0 01-7.78-7.78l9.19-9.19a3.5 3.5 0 014.95 4.95l-9.19 9.19a1.5 1.5 0 01-2.12-2.12L14.5 6.5'/></svg>") no-repeat center/contain;
}
.cs-inquiry-clip.is-active {
    border-color: var(--liff-primary) !important;
    color: var(--liff-primary) !important;
    background: var(--liff-primary-50) !important;
}
.cs-inquiry-pending {
    margin-top: 10px !important;
    font-size: 12px;
    color: var(--liff-muted);
}
.cs-inquiry-pending a { color: var(--liff-info); }

/* ---------- Clinic search ----------
   ヘッダー: 薄い地図グリッド背景 + 中央にクリニック建物アイコン。
   ミニマルで軽く、テーマ色 tint と馴染む。 */
.liff-search-hero,
.liff-search-hero-empty {
    margin: 0 0 22px !important;
    height: 180px !important;
    background:
        /* 薄い地図グリッド */
        linear-gradient(rgba(15,23,42,.05) 1px, transparent 1px) 0 0 / 22px 22px,
        linear-gradient(90deg, rgba(15,23,42,.05) 1px, transparent 1px) 0 0 / 22px 22px,
        /* テーマ色のごく薄いウォッシュ */
        linear-gradient(180deg,
            var(--liff-primary-50) 0%,
            var(--liff-white) 60%,
            var(--liff-primary-50) 100%) !important;
    background-color: var(--liff-white) !important;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    border-radius: var(--liff-radius-lg);
    overflow: hidden;
    border: 1px solid var(--liff-line-2);
}

/* クリニック建物 + 十字マーク (テーマ色に mask で追従) */
.liff-search-hero::after,
.liff-search-hero-empty::after {
    content: "";
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 110px; height: 110px;
    background-color: var(--liff-primary);
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='black' stroke='black' stroke-linejoin='round' stroke-linecap='round'><rect x='24' y='44' width='72' height='58' rx='4' fill='none' stroke-width='4'/><rect x='34' y='58' width='12' height='10' rx='1.5'/><rect x='54' y='58' width='12' height='10' rx='1.5'/><rect x='74' y='58' width='12' height='10' rx='1.5'/><rect x='34' y='76' width='12' height='10' rx='1.5'/><rect x='74' y='76' width='12' height='10' rx='1.5'/><rect x='54' y='80' width='12' height='22' rx='1'/><circle cx='60' cy='24' r='16' fill='black'/><rect x='56' y='16' width='8' height='16' fill='white'/><rect x='52' y='20' width='16' height='8' fill='white'/></svg>") no-repeat center / contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='black' stroke='black' stroke-linejoin='round' stroke-linecap='round'><rect x='24' y='44' width='72' height='58' rx='4' fill='none' stroke-width='4'/><rect x='34' y='58' width='12' height='10' rx='1.5'/><rect x='54' y='58' width='12' height='10' rx='1.5'/><rect x='74' y='58' width='12' height='10' rx='1.5'/><rect x='34' y='76' width='12' height='10' rx='1.5'/><rect x='74' y='76' width='12' height='10' rx='1.5'/><rect x='54' y='80' width='12' height='22' rx='1'/><circle cx='60' cy='24' r='16' fill='black'/><rect x='56' y='16' width='8' height='16' fill='white'/><rect x='52' y='20' width='16' height='8' fill='white'/></svg>") no-repeat center / contain;
    opacity: .85;
}

.liff-search-entry {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
    padding: 20px 0 8px !important;
}
.liff-search-entry-card {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    padding: 20px 20px !important;
    background: var(--liff-white);
    border: 1px solid var(--liff-line-2);
    border-radius: var(--liff-radius);
    box-shadow: var(--liff-shadow-1);
    color: var(--liff-ink) !important;
    text-decoration: none !important;
    font-weight: 700;
    font-size: 15px;
    line-height: 1.5;
    position: relative;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.liff-search-entry-card:hover {
    transform: translateY(-1px);
    box-shadow: var(--liff-shadow-2);
    border-color: var(--liff-muted-2);
}
.liff-search-entry-card::before {
    content: "";
    width: 44px; height: 44px;
    border-radius: 12px;
    margin-right: 14px;
    flex: 0 0 auto;
    background: linear-gradient(135deg, var(--liff-primary-100), #ffe0c2)
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23eb6100' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z'/><circle cx='12' cy='10' r='3'/></svg>") no-repeat center/22px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.6);
}
.liff-search-entry-card::after {
    content: "";
    margin-left: auto;
    width: 10px; height: 10px;
    border-right: 2px solid var(--liff-muted-2);
    border-bottom: 2px solid var(--liff-muted-2);
    transform: rotate(-45deg);
}

/* ---------- Reservation modal (ボトムシート) ---------- */
.reservation-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15,20,25,.55);
    -webkit-backdrop-filter: blur(4px);
            backdrop-filter: blur(4px);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    z-index: 1000;
    padding: 0;
}

/* Modal open: hide CMS talk-room CTA / footer so they cannot overlap.
   Target .js-talk-room-back (CMS contract), not a specific wrapper class. */
.liff-page:has(.reservation-modal-overlay) .js-talk-room-back,
.liff-page:has(.reservation-modal-overlay) .backbtn.wide,
.liff-page:has(.reservation-modal-overlay) .d-block.text-center.my-5,
.liff-page:has(.reservation-modal-overlay) .p-3.border-top {
    display: none !important;
}
.liff-page:has(.reservation-modal-overlay) > *:has(.reservation-modal-overlay) {
    z-index: 20;
}
.reservation-modal-window {
    background: var(--liff-white);
    width: 100%;
    max-width: 480px;
    border-radius: var(--liff-radius-xl) var(--liff-radius-xl) 0 0;
    padding: 22px 20px 26px;
    max-height: 85vh;
    overflow: auto;
    box-shadow: 0 -8px 40px rgba(0,0,0,.15);
}
.reservation-modal-window::before {
    content: "";
    display: block;
    width: 44px; height: 5px;
    border-radius: 3px;
    background: var(--liff-line);
    margin: -6px auto 16px;
}
/* 予約作成の reservation-create.css と同じ中央カード。詳細画面はあの CSS を読まない。 */
.reservation-modal-overlay.reservation-modal-overlay--center {
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(0, 0, 0, .45);
    z-index: 1080;
}
.reservation-modal-overlay.reservation-modal-overlay--center .reservation-modal-window {
    width: 100%;
    max-width: 24rem;
    border-radius: .5rem;
    padding: 1rem;
    max-height: 85vh;
    box-shadow: none;
}
.reservation-modal-overlay.reservation-modal-overlay--center .reservation-modal-window::before {
    display: none;
}

/* ==============================================================
   ERROR / EMPTY STATE (message-page / hero)
   ============================================================== */
.message-page .hero {
    background:
        radial-gradient(1000px 500px at 50% -10%, rgba(var(--liff-primary-rgb),.10) 0%, transparent 60%),
        linear-gradient(180deg, var(--liff-primary-50) 0%, var(--liff-white) 320px) !important;
    min-height: calc(100vh - 8px) !important;
}
.message-page .content.content-full {
    padding: 36px 26px;
}
.message-page .display-1 {
    color: var(--liff-primary);
    font-size: 64px;
    font-weight: 800;
    margin-bottom: 14px;
    line-height: 1;
    letter-spacing: -.03em;
}
.message-page .fs-5 {
    color: var(--liff-ink);
    font-weight: 700;
    font-size: 18px;
    line-height: 1.55;
    letter-spacing: -.005em;
}
.message-page .text-muted {
    color: var(--liff-muted) !important;
    font-size: 13px !important;
    line-height: 1.75;
}

/* エラーアイコン枠 */
.liff-error-icon {
    width: 96px;
    height: 96px;
    margin: 0 auto 24px;
    border-radius: 50%;
    background: var(--liff-primary-100);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--liff-primary);
    position: relative;
}
.liff-error-icon svg { width: 44px; height: 44px; stroke: currentColor; }

/* ==============================================================
   Membership card v2 (画像ヒーロー + 情報パネル + FAB)
   ============================================================== */

.liff-page .p-4.membership-page {
    padding: 22px 18px 156px !important;
}

/* ---------- Hero (会員証画像枠) ---------- */
.membership-hero {
    margin: 0 0 18px;
    aspect-ratio: 16 / 10;
    border-radius: var(--liff-radius-lg);
    overflow: hidden;
    position: relative;
    box-shadow:
        0 8px 20px -8px rgba(var(--liff-primary-rgb),.22),
        0 2px 4px rgba(15,23,42,.05);
    background: var(--liff-primary-100);
}
.membership-hero > img,
.membership-hero > picture > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* --- placeholder (フラットな会員証カード風) --- */
.membership-hero-placeholder {
    position: absolute;
    inset: 0;
    color: #fff;
    background:
        radial-gradient(140% 80% at 100% 0%, rgba(255,255,255,.20) 0%, transparent 60%),
        radial-gradient(120% 100% at 0% 100%, rgba(0,0,0,.18) 0%, transparent 55%),
        linear-gradient(135deg,
            color-mix(in oklch, var(--liff-primary) 82%, #fff) 0%,
            var(--liff-primary) 55%,
            color-mix(in oklch, var(--liff-primary) 78%, #000) 100%);
    padding: 20px 22px;
    display: grid;
    grid-template-rows: auto 1fr auto;
    gap: 6px;
    font-family: var(--liff-font-en);
}
.membership-hero-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: -.005em;
}
.membership-hero-brand__mark {
    width: 28px; height: 28px;
    border-radius: 9px;
    background:
        radial-gradient(circle at 30% 30%, rgba(255,255,255,.95) 0%, transparent 55%),
        rgba(255,255,255,.28);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.35);
}
.membership-hero-chip {
    align-self: center;
    justify-self: start;
    width: 42px; height: 30px;
    border-radius: 7px;
    background: linear-gradient(180deg, #ffd591 0%, #f5b04a 100%);
    box-shadow:
        inset 0 -6px 8px rgba(0,0,0,.10),
        inset 0 6px 8px rgba(255,255,255,.35);
    position: relative;
}
.membership-hero-chip::before,
.membership-hero-chip::after {
    content: "";
    position: absolute;
    inset: 4px 4px;
    border-radius: 3px;
    background:
        linear-gradient(90deg, transparent 47%, rgba(0,0,0,.15) 47%, rgba(0,0,0,.15) 53%, transparent 53%),
        linear-gradient(0deg, transparent 47%, rgba(0,0,0,.15) 47%, rgba(0,0,0,.15) 53%, transparent 53%);
}
.membership-hero-number {
    font-family: var(--liff-font-mono);
    font-size: 17px;
    letter-spacing: .14em;
    font-weight: 600;
    align-self: end;
    text-shadow: 0 1px 2px rgba(0,0,0,.18);
}
.membership-hero-label {
    position: absolute;
    right: 22px; bottom: 18px;
    font-size: 10px;
    letter-spacing: .24em;
    font-weight: 800;
    color: rgba(255,255,255,.82);
    font-family: var(--liff-font-en);
}

/* ---------- Info panel ---------- */
.membership-info {
    margin: 0 0 22px;
    padding: 4px 4px 0;
}
.membership-info__name {
    margin: 0 0 4px;
    font-size: 28px;
    font-weight: 800;
    line-height: 1.15;
    color: var(--liff-ink);
    letter-spacing: -.02em;
}
.membership-info__name-suffix {
    font-size: 17px;
    font-weight: 500;
    color: var(--liff-muted);
    margin-left: 4px;
    letter-spacing: 0;
}
.membership-info__kana {
    margin: 0 0 14px;
    font-size: 11.5px;
    color: var(--liff-muted);
    letter-spacing: .12em;
    font-family: var(--liff-font-en);
    text-transform: uppercase;
    font-weight: 600;
}
.membership-info__meta {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 14px 16px;
    background: var(--liff-white);
    border: 1px solid var(--liff-line-2);
    border-radius: var(--liff-radius);
    box-shadow: var(--liff-shadow-1);
}
.membership-info__meta-item {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
.membership-info__meta-label {
    font-size: 11px;
    color: var(--liff-muted);
    font-weight: 600;
    letter-spacing: .02em;
}
.membership-info__meta-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--liff-ink);
    line-height: 1.2;
    display: flex;
    align-items: baseline;
    gap: 3px;
}
.membership-info__meta-value b {
    font-size: 24px;
    font-weight: 800;
    color: var(--liff-primary);
    letter-spacing: -.02em;
    font-family: var(--liff-font-en);
}
.membership-info__meta-value small {
    font-size: 12px;
    font-weight: 500;
    color: var(--liff-muted);
}
.membership-info__meta-divider {
    align-self: stretch;
    width: 1px;
    background: var(--liff-line);
    margin: 2px 0;
}

/* チェックイン入口。ボタンは既存の QR 起動に載せる。 */
.liff-page .ci-steps {
    list-style: none; margin: 0 0 40px; padding: 16px 18px;
    background: #f6f7f9; border-radius: 12px;
    display: flex; flex-direction: column; gap: 10px;
}
.liff-page .ci-steps__item {
    display: flex; align-items: center; gap: 10px;
    font-size: 13.5px; font-weight: 600; color: var(--liff-ink); line-height: 1.4;
}
.liff-page .ci-steps__num {
    flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: #fff; border: 1.5px solid var(--liff-ink);
    font-size: 11.5px; font-weight: 700; color: var(--liff-ink);
}
.liff-page .ci-action { text-align: center; }
.liff-page .ci-action__btn {
    display: flex !important; align-items: center; justify-content: center; gap: 8px;
    max-width: none !important; margin: 0 !important;
    min-height: 56px !important;
    font-size: 16px !important; font-weight: 700 !important;
    border-radius: 14px !important;
}
.liff-page .ci-action__icon {
    width: 20px; height: 20px; background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>") no-repeat center/contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>") no-repeat center/contain;
}
.liff-page .ci-action__note {
    margin: 14px 0 0; font-size: 12.5px; line-height: 1.8; color: var(--liff-muted);
}

/* ---------- Floating action button (QRチェックイン) — 画面下から大きく浮かす ---------- */
.membership-fab {
    position: fixed;
    left: 0; right: 0;
    bottom: calc(110px + env(safe-area-inset-bottom, 0px));  /* トークルーム戻る + Footer より上 */
    z-index: 40;
    background: var(--liff-white);
    border-top: 1px solid var(--liff-line);
    box-shadow: 0 -4px 12px -6px rgba(16,24,40,.12);
    padding: 12px 18px calc(14px + env(safe-area-inset-bottom, 0px));
    max-width: 480px;
    margin: 0 auto;
    pointer-events: none;
}
.liff-page:has(.membership-fab) {
    padding-bottom: calc(130px + env(safe-area-inset-bottom, 0px)) !important;
}
.membership-fab > * { pointer-events: auto; }
.membership-fab > * { pointer-events: auto; }
.membership-fab__guide {
    text-align: center;
    font-size: 11.5px;
    color: var(--liff-muted);
    margin: 0 0 10px;
    letter-spacing: .02em;
    font-weight: 500;
}
.membership-fab__btn {
    min-height: 54px !important;
    font-size: 15.5px !important;
    font-weight: 700 !important;
    border-radius: var(--liff-radius-pill) !important;
    letter-spacing: .01em;
    box-shadow:
        0 4px 12px -2px rgba(var(--liff-primary-rgb),.30),
        0 1px 2px rgba(var(--liff-primary-rgb),.16) !important;
}
.membership-fab__btn-icon {
    display: inline-block;
    width: 22px; height: 22px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>") no-repeat center/contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><path d='M14 14h3v3h-3zM19 14h2M17 19h4M14 21h1'/></svg>") no-repeat center/contain;
    margin-right: 4px;
    flex: 0 0 auto;
}

/* ==============================================================
   Variant B (会員証をリッチに主役化)
   ============================================================== */
body.variant-hero .liff-page .p-4.membership-page {
    background:
        radial-gradient(600px 300px at 50% 0%, rgba(var(--liff-primary-rgb),.14) 0%, transparent 60%),
        linear-gradient(180deg, var(--liff-primary-50) 0%, var(--liff-white) 280px) !important;
    padding-top: 26px !important;
}
body.variant-hero .membership-hero {
    aspect-ratio: 16 / 10;
    box-shadow:
        0 28px 56px -12px rgba(var(--liff-primary-rgb),.32),
        0 8px 16px -4px rgba(var(--liff-primary-rgb),.16),
        inset 0 1px 0 rgba(255,255,255,.36);
    transform: perspective(1200px) rotateX(1.2deg);
}
body.variant-hero .membership-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(115deg,
        rgba(255,255,255,.32) 0%,
        rgba(255,255,255,0) 30%,
        rgba(255,255,255,0) 65%,
        rgba(255,255,255,.16) 100%);
    pointer-events: none;
}
body.variant-hero .membership-info {
    padding: 18px;
    background: var(--liff-white);
    border-radius: var(--liff-radius-lg);
    box-shadow: var(--liff-shadow-2);
    margin-top: -32px;
    position: relative;
    z-index: 2;
    border: 1px solid var(--liff-line-2);
}
body.variant-hero .membership-info::before {
    content: "会員ステータス";
    display: inline-block;
    font-size: 10.5px;
    letter-spacing: .12em;
    font-weight: 800;
    color: var(--liff-primary);
    background: var(--liff-primary-100);
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: 10px;
    box-shadow: inset 0 0 0 1px rgba(var(--liff-primary-rgb),.14);
}
body.variant-hero .membership-info__meta {
    margin-top: 10px;
    padding: 12px 4px 0;
    background: transparent;
    border: 0;
    border-top: 1px solid var(--liff-line-2);
    border-radius: 0;
    box-shadow: none;
}
body.variant-hero .membership-info__meta-value b {
    font-size: 28px;
}
body.variant-hero .membership-hero-number {
    font-size: 19px;
    letter-spacing: .16em;
}

/* ---------- Talkroom back area 余白調整 ---------- */
.d-block.text-center.my-5 {
    margin: 28px 16px !important;
}

/* ---------- Section spacing ---------- */
.liff-page > div.p-4,
.liff-page > .p-4 {
    padding: 22px 18px !important;
}

/* Section headers */
.h5.mb-3 {
    margin-bottom: 14px !important;
    padding-left: 14px;
    position: relative;
    font-weight: 700;
}
.h5.mb-3::before {
    content: "";
    position: absolute;
    left: 0; top: .25em; bottom: .25em;
    width: 4px;
    border-radius: 999px;
    background: linear-gradient(180deg, var(--liff-primary), var(--liff-primary-600));
}

/* リスト */
.liff-page ul, .liff-page ol { padding-left: 20px; }
.liff-page ul li, .liff-page ol li { margin-bottom: 6px; }

/* Definition list (予約詳細で使用) — ラベルと値の横並び (左右) */
.liff-page dl {
    display: grid;
    grid-template-columns: 90px 1fr;
    column-gap: 16px;
    row-gap: 0;
    max-width: 340px;
    margin: 0 auto 24px !important;
    padding: 0;
    text-align: left;
}
.liff-page dl dt {
    font-size: 12.5px;
    color: var(--liff-muted);
    font-weight: 500;
    padding: 12px 0;
    border-bottom: 1px solid var(--liff-line-2);
    text-align: left;
    margin: 0;
    display: flex;
    align-items: center;
}
.liff-page dl dd {
    margin: 0 !important;
    padding: 12px 0;
    border-bottom: 1px solid var(--liff-line-2);
    font-size: 14.5px;
    font-weight: 600;
    color: var(--liff-ink);
    text-align: right;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}
/* 最後の行の下線は消す */
.liff-page dl dt:nth-last-of-type(1),
.liff-page dl dd:nth-last-of-type(1) {
    border-bottom: 0;
}

/* ==============================================================
   Tone variants — カラーパレット
   ------------------------------------------------------------
   すべて --liff-primary 系 4 変数 + rgb を上書きするだけ。
   既存 CSS のオレンジ運用がそのまま各色に差し替わる。
   <body class="variant-XXX"> で切り替え。
   ============================================================== */

/* Navy — 落ち着き・信頼 */
body.variant-navy {
    --liff-primary:      #1e2c47;
    --liff-primary-600:  #14203a;
    --liff-primary-100:  #e6ebf3;
    --liff-primary-50:   #f4f6fa;
    --liff-primary-rgb:  30,44,71;
}

/* Wakakusa — 若草色（はっきりしたフレッシュグリーン、#32cd32 寄り） */
body.variant-wakakusa {
    --liff-primary:      #3fb838;
    --liff-primary-600:  #329a2d;
    --liff-primary-100:  #d9f2d6;
    --liff-primary-50:   #edf9eb;
    --liff-primary-rgb:  63,184,56;
}

/* Silver — Apple 風、透明感のあるフロストシルバー
   （半透明 + backdrop-filter で "ガラス越しの銀" 表現） */
body.variant-silver {
    --liff-primary:      #8896ab;      /* 少し青みのある本体色 */
    --liff-primary-600:  #6b7a91;      /* テキスト・アクセント用の濃側 */
    --liff-primary-100:  #eaeef4;
    --liff-primary-50:   #f4f7fb;
    --liff-primary-rgb:  136,150,171;
}

/* Silver — Apple 風の明るく透明感のあるシルバー
   （淡い青灰、白に近くて空気感がある。ハイライト重視） */
body.variant-silver {
    --liff-primary:      #b0bccc;      /* 淡く明るい青灰 */
    --liff-primary-600:  #8f9cae;      /* ダーク側（テキスト・アクセント用） */
    --liff-primary-100:  #edf1f6;
    --liff-primary-50:   #f7f9fc;
    --liff-primary-rgb:  176,188,204;
}

/* Silver 専用のガラス質感 — 明るく透明感。ゴテゴテせず、控えめに。
   注: page-inquiry (ピンク) と併用時は inquiry 側が勝つよう、
       inquiry 側で個別に上書きする。 */

/* Primary ボタン: さりげない金属グラデ（明度差を抑える） */
body.variant-silver:not(.page-inquiry) .btn-primary:not(.coupon-action):not(.cms-content-cta),
body.variant-silver:not(.page-inquiry) .btn.btn-primary:not(.coupon-action):not(.cms-content-cta) {
    background: linear-gradient(180deg,
        #d3dae4 0%,       /* 明るめ */
        #b7c1d0 100%      /* 少し暗い */
    ) !important;
    border: 1px solid #a3aec0 !important;
    color: var(--liff-ink) !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.4);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.5),
        0 1px 2px rgba(107,122,145,.12) !important;
    font-weight: 600 !important;
}
body.variant-silver:not(.page-inquiry) .btn-primary:not(.coupon-action):not(.cms-content-cta):hover {
    background: linear-gradient(180deg,
        #c2cbd8 0%,
        #a3aec0 100%
    ) !important;
    border-color: #94a2b6 !important;
}

/* ヘッダーのブランドマーク: さりげないシルバー */
body.variant-silver .p-3.border-bottom.bg-body-light::before {
    background: linear-gradient(140deg,
        #d8dee8 0%,
        #b3bdcc 100%
    ) !important;
    border: 1px solid rgba(148, 162, 182, .35) !important;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.55),
        0 1px 2px rgba(107,122,145,.12) !important;
    -webkit-backdrop-filter: none;
            backdrop-filter: none;
}

/* 会員証プレースホルダー: 控えめヘアライン + わずかな反射のシルバー */
body.variant-silver .membership-hero-placeholder {
    background:
        /* 控えめなヘアライン（透明度低め） */
        repeating-linear-gradient(115deg,
            rgba(255,255,255,.035) 0px,
            rgba(255,255,255,.035) 1px,
            transparent 1px,
            transparent 4px),
        /* 光のスイープ (弱く) */
        linear-gradient(115deg,
            rgba(255,255,255,.18) 0%,
            rgba(255,255,255,0) 30%,
            rgba(255,255,255,0) 60%,
            rgba(255,255,255,.10) 85%),
        /* ベースの2階調グラデ */
        linear-gradient(160deg,
            #c2ccd9 0%,
            #a3aec0 100%
        ) !important;
    border: 1px solid rgba(148, 162, 182, .35);
    color: var(--liff-ink);
    text-shadow: 0 1px 0 rgba(255,255,255,.28);
    -webkit-backdrop-filter: none;
            backdrop-filter: none;
}
body.variant-silver .membership-hero {
    box-shadow:
        0 8px 20px -10px rgba(107,122,145,.22),
        0 2px 4px rgba(107,122,145,.10);
}

/* Sky — 落ち着き寄りのクリニックブルー（歯科・小児科・皮膚科） */
body.variant-sky {
    --liff-primary:      #459fca;
    --liff-primary-600:  #3583ac;
    --liff-primary-100:  #e0eef6;
    --liff-primary-50:   #f0f7fb;
    --liff-primary-rgb:  69,159,202;
}

/* Aqua — 爽やかな水色（クリニック感、はっきり寄り） */
body.variant-aqua {
    --liff-primary:      #38b6d1;      /* しっかりした水色 */
    --liff-primary-600:  #2596b0;
    --liff-primary-100:  #d9eff5;
    --liff-primary-50:   #eaf6fa;
    --liff-primary-rgb:  56,182,209;
}

/* ==============================================================
   Inquiry (問い合わせ関連) — ピンク基調で温かみのある印象
   <body class="page-inquiry"> で切替。tone variant と独立。
   ============================================================== */
body.page-inquiry {
    --liff-primary:      #f4a5a5;   /* 淡いコーラルピンク (#f08080 より薄) */
    --liff-primary-600:  #e88a8a;
    --liff-primary-100:  #fbe6e6;
    --liff-primary-50:   #fdf3f3;
    --liff-primary-rgb:  244,165,165;
}

/* inquiry-chat のスレッドは更にごく薄いピンクに */
body.page-inquiry .cs-inquiry-thread {
    background: #FDF1F2 !important;
    border-color: #f5e3e6 !important;
}

/* 入力欄の最小幅が内容に合わせて伸び、ページが横スクロールするのを止める。
   16px 未満だと iOS がフォーカス時に拡大し、その横スクロールが残る。 */
body.page-inquiry,
body.page-inquiry .liff-page {
    overflow-x: hidden;
}
body.page-inquiry .liff-page,
body.page-inquiry .cs-inquiry-chat,
body.page-inquiry .cs-inquiry-composer,
body.page-inquiry .cs-inquiry-composer-actions,
body.page-inquiry .cs-inquiry-thread {
    min-width: 0;
}
body.page-inquiry .cs-inquiry-chat,
body.page-inquiry .cs-inquiry-composer,
body.page-inquiry .cs-inquiry-composer-actions,
body.page-inquiry .cs-inquiry-thread {
    max-width: 100%;
}
body.page-inquiry .form-control,
body.page-inquiry .form-select,
body.page-inquiry .cs-inquiry-composer textarea {
    min-width: 0;
    max-width: 100%;
    font-size: 16px;
}
body.page-inquiry .cs-inquiry-composer textarea {
    overflow-x: hidden;
    overflow-wrap: anywhere;
}

/* inquiry-chat の "問い合わせ者" 吹き出しはブルー（ピンク背景で目立つ） */
body.page-inquiry .cs-inquiry-bubble--customer .cs-inquiry-bubble__body {
    background: #3d6bcc !important;
    color: #fff !important;
    box-shadow: none !important;
}

/* ==============================================================
   Navy 専用の個別調整（既存デザインとの互換）
   ============================================================== */

body.variant-navy .membership-hero-placeholder {
    background:
        radial-gradient(140% 80% at 100% 0%, rgba(255,255,255,.10) 0%, transparent 55%),
        linear-gradient(135deg, #2a3b60 0%, var(--liff-primary) 45%, #0f1a30 100%);
    color: #fff;
}
body.variant-navy .membership-hero-placeholder::before,
body.variant-navy .membership-hero-placeholder::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
}
body.variant-navy .membership-hero-placeholder::before {
    background-image:
        radial-gradient(rgba(255,255,255,.18) 1px, transparent 1.4px),
        radial-gradient(rgba(255,255,255,.06) 1px, transparent 1.4px);
    background-size: 12px 12px, 6px 6px;
    background-position: 0 0, 3px 3px;
    -webkit-mask-image: linear-gradient(135deg, rgba(0,0,0,.85) 0%, rgba(0,0,0,.15) 60%, transparent 100%);
            mask-image: linear-gradient(135deg, rgba(0,0,0,.85) 0%, rgba(0,0,0,.15) 60%, transparent 100%);
}
body.variant-navy .membership-hero-placeholder::after {
    background-image: repeating-linear-gradient(
        135deg,
        rgba(255,255,255,.04) 0px,
        rgba(255,255,255,.04) 1px,
        transparent 1px,
        transparent 5px
    );
}
body.variant-navy .membership-hero-brand__mark {
    background:
        radial-gradient(circle at 30% 30%, rgba(255,255,255,.9) 0%, transparent 55%),
        rgba(255,255,255,.20);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.28);
}
body.variant-navy .membership-hero-chip {
    background: linear-gradient(180deg, #d7dee9 0%, #96a2b8 100%);
}
body.variant-navy .membership-hero-label {
    color: rgba(255,255,255,.65);
    letter-spacing: .26em;
}

body.variant-navy.variant-hero .membership-hero,
body.variant-navy .membership-hero {
    box-shadow:
        0 20px 40px -12px rgba(30,44,71,.28),
        0 6px 14px -4px rgba(30,44,71,.14),
        inset 0 1px 0 rgba(255,255,255,.30);
    background: var(--liff-primary-100);
}
body.variant-navy.variant-hero .membership-hero {
    box-shadow:
        0 28px 56px -12px rgba(30,44,71,.34),
        0 8px 16px -4px rgba(30,44,71,.16),
        inset 0 1px 0 rgba(255,255,255,.36);
}

body.variant-navy .p-3.border-bottom.bg-body-light::before {
    background:
        radial-gradient(circle at 30% 30%, #a3b3d4 0%, transparent 55%),
        linear-gradient(140deg, var(--liff-primary) 0%, var(--liff-primary-600) 100%);
    box-shadow:
        0 6px 14px -4px rgba(30,44,71,.28),
        inset 0 1px 0 rgba(255,255,255,.35),
        inset 0 -2px 4px rgba(0,0,0,.12);
}

body.variant-navy .btn-primary:not(.coupon-action):not(.cms-content-cta)[style*="background-color"] {
    background: linear-gradient(180deg,
                var(--liff-primary) 0%,
                color-mix(in oklch, var(--liff-primary) 88%, #000) 100%) !important;
    background-color: var(--liff-primary) !important;
    border-color: transparent !important;
}
body.variant-navy .membership-fab {
    background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(244,246,250,.92) 30%, #f4f6fa 100%);
}

body.variant-navy a { color: var(--liff-primary); }

body.variant-navy .campaign-list-slot a.d-block.border.rounded.p-3::before {
    background: linear-gradient(135deg, var(--liff-primary-100) 0%, #cfd7e5 100%);
}
body.variant-navy .liff-search-hero,
body.variant-navy .liff-search-hero-empty {
    background:
        radial-gradient(circle at 30% 25%, rgba(255,255,255,.6), transparent 55%),
        linear-gradient(135deg, var(--liff-primary-100) 0%, #cfd7e5 100%) !important;
}
body.variant-navy .liff-search-hero-empty::after {
    color: var(--liff-primary-600);
}
body.variant-navy .liff-search-entry-card::before {
    background: linear-gradient(135deg, var(--liff-primary-100), #cfd7e5)
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%231e2c47' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z'/><circle cx='12' cy='10' r='3'/></svg>") no-repeat center/22px;
}
body.variant-navy .cs-inquiry-head__title { color: var(--liff-primary) !important; }
body.variant-navy .cs-inquiry-bubble__icon--dummy {
    background: linear-gradient(135deg, var(--liff-primary-100), #cfd7e5) !important;
    color: var(--liff-primary) !important;
}
body.variant-navy .liff-error-icon {
    background:
        radial-gradient(circle at 30% 25%, rgba(255,255,255,.7), transparent 55%),
        linear-gradient(135deg, var(--liff-primary-100), #cfd7e5);
    color: var(--liff-primary);
}
body.variant-navy .hero,
body.variant-navy .message-page .hero {
    background:
        radial-gradient(1000px 500px at 50% -10%, rgba(30,44,71,.10) 0%, transparent 60%),
        linear-gradient(180deg, var(--liff-primary-50) 0%, var(--liff-white) 320px) !important;
}
body.variant-navy.variant-hero .membership-info::before {
    background: var(--liff-primary-100);
    color: var(--liff-primary);
}

/* ==============================================================
   Native-app centered layout (calm variant)
   ------------------------------------------------------------
   "島として浮いている" 印象は避け、LIFF 幅 (480px) を素直に
   使いながら、テキストや項目を中央揃えでバランスを取る。
   コンテナに max-width を設けず、text-align で中央にする。
   ============================================================== */

/* メインコンテナ — LIFF 幅そのまま、上下パディングをたっぷり */
.liff-page div.p-4,
.liff-page .p-4 {
    padding: 40px 24px !important;
}

/* 見出しは中央揃え、アクセントバー無しでプレーンに + 下に余白広く */
.liff-page .h4,
.liff-page h4 {
    font-size: 20px;
    text-align: center;
    padding-left: 0;
    margin-top: 4px;
    margin-bottom: 36px;
}
.liff-page .h4::before,
.liff-page h4::before { display: none; }
.liff-page .h5,
.liff-page .h5.mb-3 {
    text-align: center;
    padding-left: 0;
}
.liff-page .h5.mb-3::before { display: none; }

/* 会員証画面 — FAB分の下余白キープ */
.liff-page .p-4.membership-page {
    padding: 32px 24px 200px !important;
}

/* 会員証情報パネル — 中央揃え */
.membership-info { text-align: center; padding: 4px 8px 0; }
.membership-info__meta { justify-content: center; gap: 20px; }
.membership-info__meta-item { align-items: center; text-align: center; }
.membership-info__meta-value { justify-content: center; }

/* Coupon list カード — テキスト中央寄せ、左アクセントバーは撤去、カード間隔広く */
.liff-page a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 {
    text-align: center;
    padding: 20px 16px !important;
    margin-bottom: 20px !important;
}
.liff-page a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3::before {
    display: none;
}

/* Reservation / Survey リストカード — 中央寄せ */
.liff-page a.d-block.border.rounded { text-align: center; }
.liff-page a.d-block.border.rounded p { text-align: center; }
.liff-page a.d-block.border.rounded .badge { margin-bottom: 6px; }

/* Inquiry history: <article class="border rounded p-3 mb-3"> のカード */
.liff-page article.border.rounded.p-3.mb-3 {
    padding: 24px 18px !important;
    margin-bottom: 20px !important;
    text-align: center;
}
.liff-page article.border.rounded.p-3.mb-3 .d-flex.justify-content-between {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 6px !important;
    margin-bottom: 12px !important;
    text-align: center !important;
}
.liff-page article.border.rounded.p-3.mb-3 .d-flex.justify-content-between > div {
    text-align: center;
}
.liff-page article.border.rounded.p-3.mb-3 p {
    text-align: center;
}
.liff-page article.border.rounded.p-3.mb-3 .badge {
    margin-top: 4px;
}
/* 問い合わせカード内の "問い合わせ内容をひらく" ボタン: outline-primary → 目立たせすぎない */
.liff-page article.border.rounded.p-3.mb-3 > button.btn.btn-outline-primary {
    max-width: 260px;
    margin: 12px auto 0 !important;
    display: flex;
    min-height: 42px;
    font-size: 13.5px;
}

/* Inquiry history empty state（空メッセージ）: 中央に大きく */
.liff-page .p-4:has(> h1.h4) > .text-muted.text-center,
.liff-page .p-4 > .text-center.text-muted,
.liff-page .p-4 > p.text-muted:only-of-type {
    padding: 40px 16px;
    text-align: center;
    color: var(--liff-muted) !important;
}

/* Campaign list — 中央 */
.campaign-list-slot a.d-block.border.rounded.p-3 {
    justify-content: center;
    text-align: center;
}

/* リスト上部の "新規予約" / "新規でお問い合わせを開始する" 系プライマリボタン
   — 幅を絞って中央、下のリストとの間隔をしっかり確保
   （Livewire ラッパーが挟まるので descendant セレクタで拾う） */
.liff-page .p-4 a.btn.btn-primary.w-100.mb-4:not(.coupon-action),
.liff-page .p-4 button.btn.btn-primary.w-100.mb-4:not(.coupon-action),
.liff-page .p-4 > a.btn.btn-primary.w-100:not(.coupon-action),
.liff-page .p-4 > button.btn.btn-primary.w-100:not(.coupon-action) {
    max-width: 300px;
    margin: 0 auto 36px !important;
    display: flex;
}

/* inquiry-start: フォーム末尾の STARTボタン、"問い合わせTOPへ戻る" の縦間隔を広く */
.liff-page .p-4 > button.btn.btn-primary.w-100.mt-2 {
    display: flex !important;
    max-width: 300px;
    margin: 40px auto 0 !important;
    clear: both;
}
.liff-page .p-4 > button.btn.btn-outline-secondary.w-100.mt-2 {
    display: flex !important;
    max-width: 300px;
    margin: 24px auto 0 !important;
    clear: both;
}

/* トークルームへ戻る — 中央、上下余白広めで統一 */
.d-block.text-center.my-5 { margin: 40px auto !important; }

/* 問い合わせTOPへ戻る 等の「戻る系」二次アクションボタン。
   backbtn.wide と同じ pill + 白背景 で統一。 */
.liff-page button.btn.btn-outline-secondary.w-100[wire\:click*="backToHistory"],
.liff-page button.btn.btn-outline-secondary.w-100[wire\:click*="back"] {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-width: 220px;
    max-width: 300px;
    width: 100% !important;
    padding: 13px 20px !important;
    border-radius: var(--liff-radius-pill) !important;
    background: var(--liff-white) !important;
    border: 1px solid var(--liff-line) !important;
    color: var(--liff-ink-2) !important;
    font-weight: 600 !important;
    font-size: 14px !important;
    text-decoration: none !important;
    box-shadow: var(--liff-shadow-1) !important;
    margin: 24px auto 0 !important;
    min-height: 46px !important;
    clear: both;
}
.liff-page button.btn.btn-outline-secondary.w-100[wire\:click*="backToHistory"]::before {
    content: "";
    width: 16px; height: 16px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 13.5a.5.5 0 01-.354-.146l-5-5a.5.5 0 010-.708l5-5a.5.5 0 11.708.708L3.707 8l4.647 4.646A.5.5 0 018 13.5z'/></svg>") no-repeat center/16px;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M8 13.5a.5.5 0 01-.354-.146l-5-5a.5.5 0 010-.708l5-5a.5.5 0 11.708.708L3.707 8l4.647 4.646A.5.5 0 018 13.5z'/></svg>") no-repeat center/16px;
    flex: 0 0 auto;
}

/* 「予約一覧へ戻る」等の <a class="d-block text-center text-decoration-none">
   はプレーンなテキストリンクとして中央に。 */
.liff-page .p-4 > a.d-block.text-center.text-decoration-none {
    display: block !important;
    color: var(--liff-primary) !important;
    font-weight: 500;
    font-size: 13.5px;
    text-decoration: underline !important;
    text-decoration-color: color-mix(in oklch, var(--liff-primary) 30%, transparent);
    text-underline-offset: 3px;
    padding: 12px 8px !important;
    margin: 20px auto 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    min-height: 0 !important;
}
.liff-page .p-4 > a.d-block.text-center.text-decoration-none:hover {
    text-decoration-color: var(--liff-primary) !important;
}

/* Form の各項目（.mb-3）— ラベル / 入力はすべて左寄せ、縦の余白は広めに */
.liff-page .mb-3 {
    text-align: left;
    margin-bottom: 20px !important;
}
.liff-page .form-label {
    text-align: left;
    display: block;
    margin-bottom: 8px !important;
}
.liff-page .form-control,
.liff-page .form-select,
.liff-page textarea.form-control {
    text-align: left !important;
}
.liff-page .form-control::placeholder { text-align: left; }
.liff-page .mb-3 > p { text-align: left; }

/* ページタイトル (h1.h4) は常に中央揃え — .mb-3 の左寄せより優先 */
.liff-page h1.h4,
.liff-page .h4.mb-3,
.liff-page .h4.mb-2,
.liff-page .h4.mb-0 {
    text-align: center !important;
}

/* ページタイトルとコンテンツの間隔 — 全画面で統一して広めに確保
   (.mb-0 / .mb-2 / .mb-3 などのユーティリティより優先) */
.liff-page h1.h4,
.liff-page h1.h4.mb-0,
.liff-page h1.h4.mb-2,
.liff-page h1.h4.mb-3 {
    margin-top: 8px !important;
    margin-bottom: 40px !important;
}
.liff-page .coupon-detail__header { padding-bottom: 16px !important; }
/* タイトルがラッパー (.p-4.pb-0) 単独で置かれている画面は、
   次のコンテンツブロックの上パディングと重複するので控えめに */
.liff-page .p-4.pb-0 > h1.h4 {
    margin-bottom: 16px !important;
}
/* タイトル直下の補足文（保有枚数・説明文など）はタイトルに寄せ、その後で間隔を取る */
.liff-page h1.h4 + p.text-muted,
.liff-page h1.h4 + p.small {
    margin-top: -28px !important;
    margin-bottom: 32px !important;
    text-align: center;
}
.liff-page h1.h4 + .inquiry-notice {
    margin-top: -12px !important;
    margin-bottom: 28px !important;
}
/* クーポン本文は CRM の dx-coupon-page-builder.css と同じクラス。
   枠の外（保有クーポンを見る、版、状態）は .coupon-liff-aside に置く。 */
.liff-page .coupon-liff {
    padding: 0;
}
.liff-page .coupon-sheet {
    background: #fff;
}
.liff-page .coupon-liff .dx-cp-preview-image { width: 100%; max-height: 220px; object-fit: contain; }
.liff-page .coupon-liff .dx-cp-preview-title { font-weight: 600; font-size: 1.05rem; padding: 12px 15px; text-align: left; }
.liff-page .coupon-liff .dx-cp-preview-text { font-size: 0.85rem; color: #495057; white-space: pre-wrap; padding: 12px 15px; border-bottom: 1px solid #eee; text-align: left; }
.liff-page .coupon-liff .dx-cp-badge { display: inline-block; color: #fff; font-size: 11px; font-weight: 400; padding: 3px 8px; border-radius: 3px; margin: 0 4px 8px 0; }
.liff-page .coupon-liff .dx-cp-meta { font-size: 12px; padding: 10px 15px; border-bottom: 1px solid #eee; text-align: left; }
.liff-page .coupon-liff .dx-cp-meta p { margin: 0; }
.liff-page .coupon-liff .dx-cp-meta p.mb-1 { margin-bottom: .25rem; }
.liff-page .coupon-liff .rounded-2 { border-radius: .375rem; }
.liff-page .coupon-liff .px-2 { padding-left: .5rem; padding-right: .5rem; }
.liff-page .coupon-liff .py-1 { padding-top: .25rem; padding-bottom: .25rem; }
.liff-page .coupon-liff .me-3 { margin-right: 1rem; }
.liff-page .coupon-liff .dx-cp-cta {
    display: block;
    box-sizing: border-box;
    width: calc(100% - 24px);
    border: 1px dashed #adb5bd;
    border-radius: 8px;
    padding: 10px;
    text-align: center;
    margin: 12px;
    background: #f8f9fa;
    font-size: 12px;
    font-weight: 400;
    font-family: inherit;
    line-height: 1.4;
    color: #6c757d;
    text-decoration: none;
    cursor: pointer;
    min-height: 0;
    letter-spacing: 0;
    box-shadow: none;
}
.liff-page .coupon-liff .dx-cp-cta.is-colored { border-style: solid; }
.liff-page .coupon-liff .dx-cp-cta:disabled {
    cursor: not-allowed;
    opacity: .7;
}
.liff-page .coupon-liff .coupon-definition-version {
    margin: 0;
    padding: 40px 16px;
    text-align: center;
}

/* 問い合わせ系ページの注意書き */
.liff-page .inquiry-notice {
    margin: 0 0 24px;
    padding: 12px 14px;
    background: var(--liff-bg, #f5f5f5);
    border-radius: 8px;
    font-size: 12px;
    line-height: 1.7;
    color: var(--liff-ink-2);
    text-align: left;
}

/* ---------- Form actions: フォーム末尾のボタン群を離す ---------- */
/* member-registration:         <div class="d-flex gap-2">「確認する」 */
/* member-registration-confirm: <div class="d-flex gap-2">「入力に戻る」「登録する」→ 縦積み */
/* member-profile:              <button class="btn btn-primary w-100">「変更する」 */
.liff-page div.d-flex.gap-2,
.liff-page .d-flex.gap-2 {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    align-items: stretch !important;
    margin-top: 40px !important;
}
.liff-page .d-flex.gap-2 > .btn {
    width: 100% !important;
    max-width: 300px !important;
    margin: 0 auto !important;
    flex: 0 0 auto !important;
}
/* member-profile の単独 "変更する" ボタン（.d-flex ではない） */
.liff-page > * > .p-4 > button.btn.btn-primary.w-100:not(.coupon-action),
.liff-page div.p-4 > button.btn.btn-primary.w-100:not(.coupon-action) {
    max-width: 300px;
    margin: 40px auto 0 !important;
    display: flex;
}

/* フォームボタン群の並び順: プライマリを先に見せる（確認画面の "登録する" を上に） */
.liff-page .d-flex.gap-2 > .btn-primary { order: 1; }
.liff-page .d-flex.gap-2 > .btn-outline-secondary,
.liff-page .d-flex.gap-2 > .btn-outline-primary { order: 2; }

/* Clinic search 入口タイル — 洗練された検索ボタン風
   （フラット・広めの letter-spacing・繊細な weight で高級感） */
.liff-search-entry-card {
    justify-content: center;
    text-align: center;
    font-size: 13.5px !important;
    font-weight: 500 !important;
    letter-spacing: .08em !important;
    color: var(--liff-ink) !important;
    padding: 22px 20px !important;
    min-height: 62px;
    background: var(--liff-white) !important;
    border: 1px solid var(--liff-line) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
    transition:
        border-color .2s ease,
        color .2s ease,
        background .2s ease,
        transform .12s ease;
    position: relative;
}
.liff-search-entry-card::before,
.liff-search-entry-card::after { display: none !important; }

.liff-search-entry-card:hover {
    border-color: var(--liff-ink) !important;
    color: var(--liff-ink) !important;
    background: var(--liff-primary-50) !important;
    transform: translateY(-1px);
}

/* クリニック検索: ラベルとボタンのペア。枠線は付けず、余白で区切る */
.liff-search-entry-item {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0;
    padding: 8px 4px;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 14px;
    box-shadow: none !important;
}
.liff-page .liff-search-hero,
.liff-page .liff-search-hero-empty { display: none !important; }
.liff-page .liff-search-entry {
    padding-top: 32px !important;
    gap: 20px !important;
}
.liff-search-entry-label {
    font-size: 13.5px;
    font-weight: 500;
    color: var(--liff-ink);
    letter-spacing: .04em;
    line-height: 1.6;
}
.liff-search-entry-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 22px;
    background: var(--liff-primary) !important;
    color: #fff !important;
    text-decoration: none !important;
    border: 1px solid var(--liff-primary) !important;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .12em;
    text-transform: uppercase;
    min-height: 40px;
    margin: 0 auto;
    min-width: 160px;
    transition: background .15s ease, border-color .15s ease;
}
.liff-search-entry-cta:hover {
    background: var(--liff-primary-600) !important;
    border-color: var(--liff-primary-600) !important;
    color: #fff !important;
}

/* Silver tone 時: 他画面のプライマリと同じメタリック仕上げに */
body.variant-silver .liff-search-entry-cta {
    background: linear-gradient(180deg, #d3dae4 0%, #b7c1d0 100%) !important;
    border: 1px solid #a3aec0 !important;
    color: var(--liff-ink) !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.4);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.5),
        0 1px 2px rgba(107,122,145,.12);
}
body.variant-silver .liff-search-entry-cta:hover {
    background: linear-gradient(180deg, #c2cbd8 0%, #a3aec0 100%) !important;
    border-color: #94a2b6 !important;
    color: var(--liff-ink) !important;
}
.liff-search-entry-cta::after {
    content: "";
    width: 12px; height: 12px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M6.5 3l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center/12px;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M6.5 3l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center/12px;
}

/* 同ページの検索実行ボタン (.liff-search-btn) も同じ洗練トーンに */
.liff-search-btn {
    background: var(--liff-ink) !important;
    color: #fff !important;
    border: 0 !important;
    height: 40px !important;
    min-width: 96px !important;
    padding: 0 20px !important;
    border-radius: 4px !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: .12em !important;
    text-transform: uppercase !important;
    transition: background .15s ease;
}
.liff-search-btn:hover {
    background: var(--liff-ink-2) !important;
}

/* ==============================================================
   会員登録フォーム: 必須項目 / 任意項目 セクションラベル
   ============================================================== */
.liff-page .form-section-label {
    display: block;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    color: var(--liff-primary);
    letter-spacing: .18em;
    text-transform: uppercase;
    margin: 28px 0 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--liff-line);
    position: relative;
}
.liff-page .form-section-label:first-of-type {
    margin-top: 8px;
}
/* 必須バッジ — ラベル横の赤い「必須」ピル */
.liff-page .req-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 8px;
    padding: 3px 7px;
    border-radius: 4px;
    background: var(--liff-danger);
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: .04em;
    vertical-align: 1px;
}
.liff-page label.form-label {
    display: flex;
    align-items: center;
}

/* 会員登録 確認: ボタン上の余白 */
.liff-page .member-profile + .d-flex.gap-2 { margin-top: 32px; }
.liff-page .form-section-label--optional {
    color: var(--liff-muted);
    margin-top: 36px;
}

/* ==============================================================
   会員プロフィール: 3セクション (基本情報/連絡先/住所) + 定義リスト
   ============================================================== */
.liff-page .member-profile {
    max-width: 340px;
    margin: 0 auto 24px;
    text-align: left;
}
.liff-page .member-profile__group-label {
    font-size: 11px;
    font-weight: 700;
    color: var(--liff-primary);
    letter-spacing: .16em;
    text-transform: uppercase;
    margin: 28px 0 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--liff-line);
    text-align: left;
}
.liff-page .member-profile__group-label:first-child {
    margin-top: 0;
}
.liff-page .member-profile__list {
    display: grid;
    grid-template-columns: 92px 1fr;
    column-gap: 16px;
    row-gap: 0;
    margin: 0 0 8px !important;
    padding: 0;
}
.liff-page .member-profile__list dt {
    font-size: 12px;
    color: var(--liff-muted);
    font-weight: 500;
    padding: 12px 0;
    border-bottom: 1px solid var(--liff-line-2);
    margin: 0;
    text-align: left;
    align-self: center;
}
.liff-page .member-profile__list dd {
    margin: 0 !important;
    padding: 12px 0;
    border-bottom: 1px solid var(--liff-line-2);
    font-size: 14px;
    font-weight: 600;
    color: var(--liff-ink);
    text-align: right;
    line-height: 1.4;
    align-self: center;
}
.liff-page .member-profile__list dt:last-of-type,
.liff-page .member-profile__list dd:last-of-type {
    border-bottom: 0;
}
.liff-page .member-profile__value--break {
    word-break: break-all;
    font-size: 13px;
}

/* ==============================================================
   マイページ — 6タイル (プロフィール/診察券/来院履歴/チェックイン/
                        チェックアウト/マイクーポン) */
.mypage-screen {
    padding: 40px 20px !important;
}
.mypage-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin: 0 auto;
    max-width: 420px;
}
.mypage-tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 14px;
    background: var(--liff-white);
    border: 1px solid var(--liff-line);
    border-radius: 14px;
    padding: 22px 16px;
    text-decoration: none !important;
    color: var(--liff-ink) !important;
    min-height: 120px;
    box-shadow: var(--liff-shadow-1);
    transition: box-shadow .18s ease, border-color .18s ease, transform .12s ease;
}
.mypage-tile__icon {
    margin: 0 auto;
}
.mypage-tile__label {
    text-align: center;
}
.mypage-tile:hover {
    box-shadow: var(--liff-shadow-2);
    border-color: color-mix(in oklch, var(--liff-primary) 30%, var(--liff-line));
    transform: translateY(-2px);
}
/* アイコンは円形バッジ内に配置 — テーマ色 tint 背景 + 白抜きアイコンで存在感 */
.mypage-tile__icon {
    width: 56px; height: 56px;
    border-radius: 50%;
    background-color: var(--liff-primary-100);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}
.mypage-tile__icon::before {
    content: "";
    width: 30px; height: 30px;
    background-color: var(--liff-primary);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: contain;
            mask-size: contain;
    display: block;
}
.mypage-tile__label {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--liff-ink);
    letter-spacing: .02em;
    line-height: 1.3;
    word-break: keep-all;
    overflow-wrap: anywhere;
}
/* ラベルが長いもの (プライバシーポリシー等) だけ少し縮小 */
.mypage-tile[data-tile="privacy"] .mypage-tile__label {
    font-size: 11.5px;
    letter-spacing: 0;
}

/* 各タイル用のアイコン (Phosphor / Heroicons ライクな 24viewBox 塗り絵風) */
.mypage-tile[data-tile="profile"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 12a5 5 0 100-10 5 5 0 000 10zm0 2c-4.4 0-8 2.7-8 6v1c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-1c0-3.3-3.6-6-8-6z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 12a5 5 0 100-10 5 5 0 000 10zm0 2c-4.4 0-8 2.7-8 6v1c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-1c0-3.3-3.6-6-8-6z'/></svg>");
}
.mypage-tile[data-tile="card"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M3 6.5C3 5.1 4.1 4 5.5 4h13C19.9 4 21 5.1 21 6.5v11c0 1.4-1.1 2.5-2.5 2.5h-13C4.1 20 3 18.9 3 17.5v-11zm5 3.5a2 2 0 100 4 2 2 0 000-4zm5 .5c-.4 0-.75.35-.75.75s.35.75.75.75h5a.75.75 0 000-1.5h-5zm0 3c-.4 0-.75.35-.75.75s.35.75.75.75h3.5a.75.75 0 000-1.5H13z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M3 6.5C3 5.1 4.1 4 5.5 4h13C19.9 4 21 5.1 21 6.5v11c0 1.4-1.1 2.5-2.5 2.5h-13C4.1 20 3 18.9 3 17.5v-11zm5 3.5a2 2 0 100 4 2 2 0 000-4zm5 .5c-.4 0-.75.35-.75.75s.35.75.75.75h5a.75.75 0 000-1.5h-5zm0 3c-.4 0-.75.35-.75.75s.35.75.75.75h3.5a.75.75 0 000-1.5H13z'/></svg>");
}
.mypage-tile[data-tile="history"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 3a9 9 0 100 18 9 9 0 000-18zm.75 4.5a.75.75 0 00-1.5 0v5c0 .2.08.4.22.53l3 3a.75.75 0 101.06-1.06L12.75 12.2V7.5z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 3a9 9 0 100 18 9 9 0 000-18zm.75 4.5a.75.75 0 00-1.5 0v5c0 .2.08.4.22.53l3 3a.75.75 0 101.06-1.06L12.75 12.2V7.5z'/></svg>");
}
.mypage-tile[data-tile="checkin"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 4c-.55 0-1 .45-1 1s.45 1 1 1h4v12h-4c-.55 0-1 .45-1 1s.45 1 1 1h4.5c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5H14zm-2.72 5.28a.75.75 0 010-1.06.75.75 0 011.06 0l3.5 3.5c.3.3.3.77 0 1.06l-3.5 3.5a.75.75 0 11-1.06-1.06l2.22-2.22H4.75a.75.75 0 010-1.5h8.75l-2.22-2.22z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 4c-.55 0-1 .45-1 1s.45 1 1 1h4v12h-4c-.55 0-1 .45-1 1s.45 1 1 1h4.5c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5H14zm-2.72 5.28a.75.75 0 010-1.06.75.75 0 011.06 0l3.5 3.5c.3.3.3.77 0 1.06l-3.5 3.5a.75.75 0 11-1.06-1.06l2.22-2.22H4.75a.75.75 0 010-1.5h8.75l-2.22-2.22z'/></svg>");
}
.mypage-tile[data-tile="checkout"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M10 4c.55 0 1 .45 1 1s-.45 1-1 1H6v12h4c.55 0 1 .45 1 1s-.45 1-1 1H5.5C4.67 20 4 19.33 4 18.5v-13C4 4.67 4.67 4 5.5 4H10zm2.72 5.28a.75.75 0 000-1.06.75.75 0 00-1.06 0l-3.5 3.5c-.3.3-.3.77 0 1.06l3.5 3.5a.75.75 0 101.06-1.06l-2.22-2.22h8.75a.75.75 0 000-1.5h-8.75l2.22-2.22z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M10 4c.55 0 1 .45 1 1s-.45 1-1 1H6v12h4c.55 0 1 .45 1 1s-.45 1-1 1H5.5C4.67 20 4 19.33 4 18.5v-13C4 4.67 4.67 4 5.5 4H10zm2.72 5.28a.75.75 0 000-1.06.75.75 0 00-1.06 0l-3.5 3.5c-.3.3-.3.77 0 1.06l3.5 3.5a.75.75 0 101.06-1.06l-2.22-2.22h8.75a.75.75 0 000-1.5h-8.75l2.22-2.22z'/></svg>");
}
.mypage-tile[data-tile="coupon"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M3 8.5A1.5 1.5 0 014.5 7h15A1.5 1.5 0 0121 8.5V11a1 1 0 01-1 1 1 1 0 000 2 1 1 0 011 1v2.5a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 16.5V14a1 1 0 011-1 1 1 0 000-2 1 1 0 01-1-1V8.5zM9 8h1v2H9V8zm0 3h1v2H9v-2zm0 3h1v2H9v-2z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M3 8.5A1.5 1.5 0 014.5 7h15A1.5 1.5 0 0121 8.5V11a1 1 0 01-1 1 1 1 0 000 2 1 1 0 011 1v2.5a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 16.5V14a1 1 0 011-1 1 1 0 000-2 1 1 0 01-1-1V8.5zM9 8h1v2H9V8zm0 3h1v2H9v-2zm0 3h1v2H9v-2z'/></svg>");
}
/* 問診票: クリップボード + チェック */
.mypage-tile[data-tile="questionnaire"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M9 3a1 1 0 011-1h4a1 1 0 011 1v1h2.5A1.5 1.5 0 0118 5.5v14a1.5 1.5 0 01-1.5 1.5h-9A1.5 1.5 0 016 19.5v-14A1.5 1.5 0 017.5 4H9V3zm1 1v1h4V4h-4zm-.72 9.03a.75.75 0 011.06 0l1.16 1.16 2.66-2.66a.75.75 0 111.06 1.06l-3.19 3.19a.75.75 0 01-1.06 0l-1.69-1.69a.75.75 0 010-1.06z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M9 3a1 1 0 011-1h4a1 1 0 011 1v1h2.5A1.5 1.5 0 0118 5.5v14a1.5 1.5 0 01-1.5 1.5h-9A1.5 1.5 0 016 19.5v-14A1.5 1.5 0 017.5 4H9V3zm1 1v1h4V4h-4zm-.72 9.03a.75.75 0 011.06 0l1.16 1.16 2.66-2.66a.75.75 0 111.06 1.06l-3.19 3.19a.75.75 0 01-1.06 0l-1.69-1.69a.75.75 0 010-1.06z'/></svg>");
}
/* キャンペーン: メガホン */
.mypage-tile[data-tile="campaign"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M20 4a1 1 0 00-1.45-.89L9 8H5a2 2 0 00-2 2v4a2 2 0 002 2h1.09l1.13 3.94A1.5 1.5 0 008.66 21H10a1.5 1.5 0 001.5-1.5V16.6l7.05 3.29A1 1 0 0020 19V4z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M20 4a1 1 0 00-1.45-.89L9 8H5a2 2 0 00-2 2v4a2 2 0 002 2h1.09l1.13 3.94A1.5 1.5 0 008.66 21H10a1.5 1.5 0 001.5-1.5V16.6l7.05 3.29A1 1 0 0020 19V4z'/></svg>");
}
/* 問い合わせ: 吹き出し */
.mypage-tile[data-tile="inquiry"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M4 5.5A2.5 2.5 0 016.5 3h11A2.5 2.5 0 0120 5.5v9A2.5 2.5 0 0117.5 17H12l-4.4 3.52A.75.75 0 016.4 20l.35-3.32A2.5 2.5 0 014 14.5v-9zm4 3.25a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h5a.75.75 0 000-1.5H8z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M4 5.5A2.5 2.5 0 016.5 3h11A2.5 2.5 0 0120 5.5v9A2.5 2.5 0 0117.5 17H12l-4.4 3.52A.75.75 0 016.4 20l.35-3.32A2.5 2.5 0 014 14.5v-9zm4 3.25a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h5a.75.75 0 000-1.5H8z'/></svg>");
}
/* 予約: カレンダー + チェック */
.mypage-tile[data-tile="reservation"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M7 2a1 1 0 011 1v1h8V3a1 1 0 112 0v1h1.5A1.5 1.5 0 0121 5.5v13a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 18.5v-13A1.5 1.5 0 014.5 4H6V3a1 1 0 011-1zm12 8H5v8.5c0 .3.2.5.5.5h13c.3 0 .5-.2.5-.5V10zm-3.28 2.53a.75.75 0 010 1.06l-4 4a.75.75 0 01-1.06 0l-2-2a.75.75 0 111.06-1.06l1.47 1.47 3.47-3.47a.75.75 0 011.06 0z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M7 2a1 1 0 011 1v1h8V3a1 1 0 112 0v1h1.5A1.5 1.5 0 0121 5.5v13a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 18.5v-13A1.5 1.5 0 014.5 4H6V3a1 1 0 011-1zm12 8H5v8.5c0 .3.2.5.5.5h13c.3 0 .5-.2.5-.5V10zm-3.28 2.53a.75.75 0 010 1.06l-4 4a.75.75 0 01-1.06 0l-2-2a.75.75 0 111.06-1.06l1.47 1.47 3.47-3.47a.75.75 0 011.06 0z'/></svg>");
}
/* LINEマガジン: 新聞/雑誌 */
.mypage-tile[data-tile="magazine"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M5 3.5A1.5 1.5 0 016.5 2h11A1.5 1.5 0 0119 3.5V19a2 2 0 002 2H4a2 2 0 01-2-2V8.5A1.5 1.5 0 013.5 7H5V3.5zM5 8.5H3.5V19a.5.5 0 001 0V8.5H5zm3-2.5a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h4a.75.75 0 000-1.5H8zm6.5 0a.75.75 0 00-.75.75v3c0 .41.34.75.75.75h2a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-2z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M5 3.5A1.5 1.5 0 016.5 2h11A1.5 1.5 0 0119 3.5V19a2 2 0 002 2H4a2 2 0 01-2-2V8.5A1.5 1.5 0 013.5 7H5V3.5zM5 8.5H3.5V19a.5.5 0 001 0V8.5H5zm3-2.5a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h8a.75.75 0 000-1.5H8zm0 3a.75.75 0 000 1.5h4a.75.75 0 000-1.5H8zm6.5 0a.75.75 0 00-.75.75v3c0 .41.34.75.75.75h2a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-2z'/></svg>");
}
/* プライバシーポリシー: 盾 */
.mypage-tile[data-tile="privacy"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2.25a.75.75 0 01.34.08l7 3.5a.75.75 0 01.41.67v5.5c0 4.5-3.05 8.5-7.5 9.75a.75.75 0 01-.5 0C7.3 20.5 4.25 16.5 4.25 12V6.5a.75.75 0 01.41-.67l7-3.5a.75.75 0 01.34-.08zm3.53 7.28a.75.75 0 00-1.06-1.06L11 12l-1.47-1.47a.75.75 0 10-1.06 1.06l2 2c.3.3.77.3 1.06 0l4-4z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2.25a.75.75 0 01.34.08l7 3.5a.75.75 0 01.41.67v5.5c0 4.5-3.05 8.5-7.5 9.75a.75.75 0 01-.5 0C7.3 20.5 4.25 16.5 4.25 12V6.5a.75.75 0 01.41-.67l7-3.5a.75.75 0 01.34-.08zm3.53 7.28a.75.75 0 00-1.06-1.06L11 12l-1.47-1.47a.75.75 0 10-1.06 1.06l2 2c.3.3.77.3 1.06 0l4-4z'/></svg>");
}

/* ==============================================================
   My Coupons — 画像左 + テキスト右のリストカード
   （画像が入る前提のレイアウト。無い場合はグレー placeholder） */
.liff-page .mycoupon-card {
    display: flex !important;
    align-items: stretch;
    gap: 14px;
    background: var(--liff-white);
    border: 1px solid var(--liff-line);
    border-radius: 12px;
    padding: 12px;
    text-decoration: none !important;
    color: var(--liff-ink) !important;
    margin: 0 auto 16px !important;
    max-width: 100%;
    text-align: left;
    box-shadow: var(--liff-shadow-1);
    transition: box-shadow .18s ease, transform .12s ease;
}
.liff-page .mycoupon-card:hover {
    box-shadow: var(--liff-shadow-2);
    transform: translateY(-2px);
}
/* 左サムネイル: 画像プレースホルダー（クーポン券アイコン） */
.liff-page .mycoupon-card__thumb {
    flex: 0 0 96px;
    width: 96px;
    height: 96px;
    background:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80' fill='none' stroke='%23a8b5c8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M14 24h44a4 4 0 014 4v6a4 4 0 000 8v6a4 4 0 01-4 4H14a4 4 0 01-4-4v-6a4 4 0 000-8v-6a4 4 0 014-4z'/><path d='M28 30v20' stroke-dasharray='3 3'/></svg>") no-repeat center / 60px,
        #e8eef5;
    border-radius: 8px;
}
/* 右コンテンツ */
.liff-page .mycoupon-card__body {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    padding: 4px 4px 4px 0;
}
.liff-page .mycoupon-card__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 2px;
}
.liff-page .mycoupon-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 4px !important;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.3;
}
/* 低彩度で柔らかい統一トーン（ソフトなペール系） */
.liff-page .mycoupon-badge--discount {
    background: #e6f2ee;
    color: #3f8f74;
}
.liff-page .mycoupon-badge--limit {
    background: #fbeee0;
    color: #a97239;
}
.liff-page .mycoupon-card__title {
    margin: 0 !important;
    font-size: 15px;
    font-weight: 700;
    color: var(--liff-ink);
    line-height: 1.4;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.liff-page .mycoupon-card__meta {
    margin: 0 !important;
    font-size: 11px;
    color: var(--liff-muted);
    text-align: right;
}
.liff-page .mycoupon-card__use {
    margin: 0 !important;
    font-size: 12px;
    font-weight: 700;
    color: #3f8f74;
    text-align: right;
}

/* ==============================================================
   Coupon Detail — 縦組み1画面レイアウト
   構造: <div class="coupon-detail">
           <div class="coupon-detail__header">クーポン詳細</div>
           <figure class="coupon-detail__hero">画像プレースホルダー</figure>
           <div class="coupon-detail__body">
             <h2 class="coupon-detail__title">クーポン名</h2>
             <div class="coupon-detail__badges">…</div>
             <p class="coupon-detail__desc">…</p>
             <section class="coupon-detail__period">利用期間</section>
             <button class="coupon-detail__cta">取得する</button>
             <a class="coupon-detail__back-link">一覧へ戻る</a>
           </div>
         </div>
   ============================================================== */
body.page-coupon-detail .liff-page {
    background: #fff !important;
}

/* ページタイトル (中央、下線なしのシンプル見出し) */
.liff-page .coupon-detail__header {
    padding: 18px 20px 6px;
    text-align: center;
}
.liff-page .coupon-detail__page-title {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--liff-ink);
    letter-spacing: .04em;
}

/* 画像領域 — 淡いブルーの背景 + 中央にチケットアイコン */
.liff-page .coupon-detail__hero {
    margin: 12px 20px 0;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    background: #d9e6f7;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.liff-page .coupon-detail__hero-icon {
    width: 58%;
    max-width: 220px;
    color: #ffffff;
    opacity: .95;
}

/* 本文 */
.liff-page .coupon-detail__body {
    padding: 20px 20px 8px;
    text-align: left;
}
.liff-page .coupon-detail__title {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: -.005em;
    color: var(--liff-ink);
    margin: 4px 0 14px;
    text-align: center;
}

/* バッジ列 */
.liff-page .coupon-detail__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 4px 0 18px;
}
.liff-page .coupon-badge {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    color: #fff;
    line-height: 1;
    letter-spacing: .02em;
}
.liff-page .coupon-badge--discount { background: #22c55e; }
.liff-page .coupon-badge--acquire  { background: #2563eb; }
.liff-page .coupon-badge--use      { background: #ea580c; }

/* 説明文 */
.liff-page .coupon-detail__desc {
    font-size: 14px;
    line-height: 1.8;
    color: var(--liff-ink);
    margin: 0 0 24px;
}

/* 利用期間 */
.liff-page .coupon-detail__period {
    border-top: 1px solid var(--liff-line);
    border-bottom: 1px solid var(--liff-line);
    padding: 18px 12px 20px;
    text-align: center;
    margin: 0 0 28px;
}
.liff-page .coupon-detail__period-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--liff-ink);
    margin: 0 0 12px;
    letter-spacing: .04em;
}
.liff-page .coupon-detail__period-date {
    font-size: 14px;
    color: var(--liff-ink);
    margin: 0;
    line-height: 1.6;
}
.liff-page .coupon-detail__period-sep {
    font-size: 13px;
    color: var(--liff-muted);
    margin: 0;
    line-height: 1;
}

/* CTA — 他の主要ボタンと同じ liff-primary テイスト */
.liff-page button.coupon-detail__cta {
    max-width: 300px;
    margin: 0 auto 18px !important;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--liff-primary) !important;
    background-color: var(--liff-primary) !important;
    border-color: var(--liff-primary) !important;
    color: #fff !important;
    box-shadow: var(--liff-shadow-primary) !important;
    font-weight: 600 !important;
}
.liff-page button.coupon-detail__cta:hover {
    background: var(--liff-primary-600) !important;
    background-color: var(--liff-primary-600) !important;
    border-color: var(--liff-primary-600) !important;
}

/* 「一覧へ戻る」リンク */
.liff-page .coupon-detail__back-link {
    display: block;
    text-align: center;
    font-size: 13px;
    color: var(--liff-muted);
    text-decoration: underline;
    padding: 8px 0 4px;
}
.liff-page .coupon-detail__back-link:hover {
    color: var(--liff-ink);
}

/* ==============================================================
   Check-in complete — 完了アイコン + デザイン性のある中央レイアウト
   HTML: <div class="p-4 check-in-result">
           <h1 class="h4">チェックイン</h1>
           <p class="mb-2">チェックインが完了しました。</p>
           <p class="text-muted small">受付番号: ...</p>
         </div>
   ============================================================== */
.liff-page div.check-in-result {
    text-align: center;
    padding: 60px 24px 56px !important;
    min-height: calc(100vh - 60px);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 22%, #f0faf3 0%, transparent 55%),
        linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);
}

/* 大きな装飾リング (背景) */
.liff-page div.check-in-result::after {
    content: "";
    position: absolute;
    top: 8%; left: 50%;
    transform: translateX(-50%);
    width: 260px; height: 260px;
    border-radius: 50%;
    background:
        radial-gradient(circle at center,
            rgba(22, 163, 74, 0) 40%,
            rgba(22, 163, 74, .08) 41%,
            rgba(22, 163, 74, .08) 44%,
            rgba(22, 163, 74, 0) 45%,
            rgba(22, 163, 74, .05) 60%,
            rgba(22, 163, 74, .05) 63%,
            rgba(22, 163, 74, 0) 64%);
    pointer-events: none;
    z-index: 0;
}

/* チェックマーク円 (二重リング) */
.liff-page div.check-in-result::before {
    content: "";
    display: block;
    width: 104px; height: 104px;
    margin: 0 auto 28px;
    border-radius: 50%;
    background:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6L9 17l-5-5'/></svg>") no-repeat center / 48px 48px,
        radial-gradient(circle at 30% 25%, #4ecf7a 0%, #16a34a 100%);
    box-shadow:
        0 12px 28px -6px rgba(22, 163, 74, .42),
        0 4px 8px rgba(22, 163, 74, .18),
        0 0 0 10px rgba(22, 163, 74, .08),
        0 0 0 20px rgba(22, 163, 74, .04);
    flex: 0 0 auto;
    position: relative;
    z-index: 1;
    animation: check-pop .6s cubic-bezier(.34, 1.56, .64, 1) both;
}

@keyframes check-pop {
    0%   { transform: scale(.3); opacity: 0; }
    60%  { transform: scale(1.05); opacity: 1; }
    100% { transform: scale(1); opacity: 1; }
}

.liff-page div.check-in-result > h1.h4 {
    font-size: 12px;
    margin: 0 0 14px !important;
    color: #16a34a;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    position: relative;
    z-index: 1;
}
/* タイトルテキストの左右にディバイダー */
.liff-page div.check-in-result > h1.h4::after,
.liff-page div.check-in-result > h1.h4::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 1px;
    background: #16a34a;
    vertical-align: middle;
    margin: 0 12px;
    opacity: .4;
}
.liff-page div.check-in-result > p.mb-2 {
    font-size: 22px;
    font-weight: 700;
    color: var(--liff-ink);
    margin: 0 0 24px !important;
    text-align: center;
    letter-spacing: -.01em;
    position: relative;
    z-index: 1;
}
.liff-page div.check-in-result > p.text-muted.small {
    font-family: var(--liff-font-mono);
    font-size: 14px;
    letter-spacing: .08em;
    padding: 14px 22px;
    background: var(--liff-white);
    border: 1px solid var(--liff-line);
    border-radius: 3px;
    display: inline-block;
    margin: 12px auto 0 !important;
    color: var(--liff-ink-2) !important;
    align-self: center;
    position: relative;
    z-index: 1;
    box-shadow: 0 1px 2px rgba(15,23,42,.04);
    font-weight: 500;
}

/* ==============================================================
   Clinic Detail — 店舗詳細ページ
   構造: <body class="page-clinic-detail">
           <figure class="clinic-hero">
           <section class="clinic-head">クリニック名/お気に入り/タグ
           <nav class="clinic-tabs">概要/営業時間/アクセス/写真
           <section class="clinic-panel">
             <div class="clinic-block">タイトル/紹介文
             <dl class="clinic-info">診療科目/住所/TEL/HP等
           <div class="clinic-cta-bar">予約/問い合わせ
   ============================================================== */
body.page-clinic-detail .liff-page {
    background: #fff !important;
    padding-bottom: 84px; /* 固定CTA分の余白 */
}

/* ヒーロー画像 */
.liff-page .clinic-hero {
    margin: 0;
    aspect-ratio: 16 / 9;
    background:
        linear-gradient(180deg, #eef1f6 0%, #e0e5ee 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--liff-muted);
    font-size: 14px;
    font-weight: 500;
    letter-spacing: .08em;
}
.liff-page .clinic-hero__ph {
    color: var(--liff-ink-2);
    opacity: .8;
}

/* クリニックヘッダー */
.liff-page .clinic-head {
    padding: 20px 20px 14px;
}
.liff-page .clinic-head__row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.liff-page .clinic-head__name {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.4;
    color: var(--liff-ink);
    letter-spacing: -.005em;
    flex: 1;
}
.liff-page .clinic-head__branch {
    display: inline-block;
    font-size: 15px;
    font-weight: 600;
    color: var(--liff-ink-2);
}
.liff-page .clinic-fav {
    flex: 0 0 auto;
    width: 36px; height: 36px;
    border: 0;
    background: transparent;
    color: #d1d5db;
    padding: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color .18s ease, transform .18s ease;
}
.liff-page .clinic-fav svg { width: 28px; height: 28px; }
.liff-page .clinic-fav.is-active { color: #ef4444; }
.liff-page .clinic-fav:hover { transform: scale(1.08); }

/* タグチップ */
.liff-page .clinic-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.liff-page .clinic-tag {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border-radius: 4px;
    background: var(--liff-primary-50);
    border: 1px solid rgba(var(--liff-primary-rgb),.20);
    color: var(--liff-primary);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .02em;
    line-height: 1;
}

/* タブ */
.liff-page .clinic-tabs {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--liff-line);
    padding: 0 8px;
    margin-top: 8px;
    background: #fff;
    position: sticky;
    top: 0;
    z-index: 4;
}
.liff-page .clinic-tab {
    flex: 1;
    padding: 14px 6px;
    border: 0;
    background: transparent;
    font-size: 14px;
    font-weight: 600;
    color: var(--liff-muted);
    cursor: pointer;
    position: relative;
    transition: color .18s ease;
    font-family: inherit;
}
.liff-page .clinic-tab:hover { color: var(--liff-ink-2); }
.liff-page .clinic-tab.is-active {
    color: var(--liff-primary);
}
.liff-page .clinic-tab.is-active::after {
    content: "";
    position: absolute;
    left: 12px; right: 12px; bottom: -1px;
    height: 3px;
    background: var(--liff-primary);
    border-radius: 3px 3px 0 0;
}

/* CRM tabs are radios + labels. Hide the radios; the labels are the tabs. */
.liff-page .clinic-tab-input,
.liff-page #clinic-detail-tab-overview,
.liff-page #clinic-detail-tab-hours,
.liff-page #clinic-detail-tab-access,
.liff-page #clinic-detail-tab-photos {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.liff-page label.clinic-tab {
    text-align: center;
}
.liff-page label.clinic-tab.is-disabled {
    opacity: .4;
    cursor: default;
    pointer-events: none;
}
.liff-page label.clinic-tab.is-disabled:hover {
    color: var(--liff-muted);
}
.liff-page .cms-system-page-body-clinic > .clinic-panel {
    display: none;
}
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-overview:checked) > [data-clinic-panel="overview"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-hours:checked) > [data-clinic-panel="hours"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-access:checked) > [data-clinic-panel="access"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-photos:checked) > [data-clinic-panel="photos"] {
    display: block;
}
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-overview:checked) label[for="clinic-detail-tab-overview"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-hours:checked) label[for="clinic-detail-tab-hours"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-access:checked) label[for="clinic-detail-tab-access"],
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-photos:checked) label[for="clinic-detail-tab-photos"] {
    color: var(--liff-primary);
}
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-overview:checked) label[for="clinic-detail-tab-overview"]::after,
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-hours:checked) label[for="clinic-detail-tab-hours"]::after,
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-access:checked) label[for="clinic-detail-tab-access"]::after,
.liff-page .cms-system-page-body-clinic:has(#clinic-detail-tab-photos:checked) label[for="clinic-detail-tab-photos"]::after {
    content: "";
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: -1px;
    height: 3px;
    background: var(--liff-primary);
    border-radius: 3px 3px 0 0;
}

/* パネル (概要タブ内容) */
.liff-page .clinic-panel {
    padding: 24px 20px 40px;
}
.liff-page .clinic-block {
    display: grid;
    grid-template-columns: 68px 1fr;
    gap: 16px;
    padding: 18px 0;
    border-bottom: 1px solid var(--liff-line-2, #f0f2f5);
}
.liff-page .clinic-block:first-child { padding-top: 4px; }
.liff-page .clinic-block__title {
    margin: 0;
    font-size: 13.5px;
    font-weight: 700;
    color: var(--liff-ink);
    padding-top: 2px;
    letter-spacing: .02em;
}
.liff-page .clinic-block__body {
    margin: 0;
    font-size: 13px;
    line-height: 1.9;
    color: var(--liff-ink-2);
}

/* 情報 (dl) */
.liff-page .clinic-info {
    display: grid;
    grid-template-columns: 68px 1fr;
    gap: 4px 16px;
    margin: 12px 0 0;
    padding: 0;
}
.liff-page .clinic-info dt {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--liff-muted);
    padding: 12px 0;
    align-self: start;
    display: flex;
    align-items: center;
    gap: 6px;
    letter-spacing: .02em;
}
.liff-page .clinic-info dd {
    margin: 0;
    padding: 12px 0;
    font-size: 13px;
    line-height: 1.7;
    color: var(--liff-ink);
    word-break: break-all;
    align-self: start;
}
.liff-page .clinic-info dd a {
    color: var(--liff-ink);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.liff-page .clinic-info dd a:hover { color: var(--liff-primary); }

/* dt 内 SNSアイコン (16px、モノトーンで統一) */
.liff-page .clinic-info__icon {
    width: 16px; height: 16px;
    display: inline-block;
    background-color: var(--liff-ink-2);
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;   mask-position: center;
    -webkit-mask-size: contain;      mask-size: contain;
}
.liff-page .clinic-info__icon[data-icon="hp"] {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 2c1.6 0 3.1 2.2 3.7 5.5H8.3C8.9 6.2 10.4 4 12 4zm-4.8 2.9c-.4 1.4-.7 2.9-.7 4.6H4.1a8 8 0 013.1-4.6zM4.1 13h2.4c.1 1.7.3 3.2.7 4.6a8 8 0 01-3.1-4.6zM12 20c-1.6 0-3.1-2.2-3.7-5.5h7.4C15.1 17.8 13.6 20 12 20zm4.8-2.4c.4-1.4.7-2.9.7-4.6H20a8 8 0 01-3.2 4.6zM17.5 11c-.1-1.7-.3-3.2-.7-4.6a8 8 0 013.2 4.6h-2.5z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 2c1.6 0 3.1 2.2 3.7 5.5H8.3C8.9 6.2 10.4 4 12 4zm-4.8 2.9c-.4 1.4-.7 2.9-.7 4.6H4.1a8 8 0 013.1-4.6zM4.1 13h2.4c.1 1.7.3 3.2.7 4.6a8 8 0 01-3.1-4.6zM12 20c-1.6 0-3.1-2.2-3.7-5.5h7.4C15.1 17.8 13.6 20 12 20zm4.8-2.4c.4-1.4.7-2.9.7-4.6H20a8 8 0 01-3.2 4.6zM17.5 11c-.1-1.7-.3-3.2-.7-4.6a8 8 0 013.2 4.6h-2.5z'/></svg>");
}
.liff-page .clinic-info__icon[data-icon="x"] {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M18.9 2H22l-7.6 8.7L23 22h-6.8l-5.3-6.9L4.8 22H1.7l8.1-9.3L1.4 2h6.9l4.8 6.3L18.9 2zm-2.4 18h1.9L7.6 3.9h-2L16.5 20z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M18.9 2H22l-7.6 8.7L23 22h-6.8l-5.3-6.9L4.8 22H1.7l8.1-9.3L1.4 2h6.9l4.8 6.3L18.9 2zm-2.4 18h1.9L7.6 3.9h-2L16.5 20z'/></svg>");
}
.liff-page .clinic-info__icon[data-icon="ig"] {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2.2c3.2 0 3.6 0 4.8.1 1.2 0 1.9.3 2.3.4.6.2 1 .5 1.4 1s.7.8 1 1.4c.2.5.4 1.1.4 2.3.1 1.3.1 1.7.1 4.8s0 3.6-.1 4.8c0 1.2-.3 1.9-.4 2.3-.2.6-.5 1-1 1.4s-.8.7-1.4 1c-.5.2-1.1.4-2.3.4-1.3.1-1.7.1-4.8.1s-3.6 0-4.8-.1c-1.2 0-1.9-.3-2.3-.4-.6-.2-1-.5-1.4-1s-.7-.8-1-1.4c-.2-.5-.4-1.1-.4-2.3-.1-1.3-.1-1.7-.1-4.8s0-3.6.1-4.8c0-1.2.3-1.9.4-2.3.2-.6.5-1 1-1.4s.8-.7 1.4-1c.5-.2 1.1-.4 2.3-.4 1.3-.1 1.7-.1 4.8-.1zM12 7.4a4.6 4.6 0 100 9.2 4.6 4.6 0 000-9.2zm0 7.6a3 3 0 110-6 3 3 0 010 6zm5.9-7.8a1.1 1.1 0 11-2.2 0 1.1 1.1 0 012.2 0z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 2.2c3.2 0 3.6 0 4.8.1 1.2 0 1.9.3 2.3.4.6.2 1 .5 1.4 1s.7.8 1 1.4c.2.5.4 1.1.4 2.3.1 1.3.1 1.7.1 4.8s0 3.6-.1 4.8c0 1.2-.3 1.9-.4 2.3-.2.6-.5 1-1 1.4s-.8.7-1.4 1c-.5.2-1.1.4-2.3.4-1.3.1-1.7.1-4.8.1s-3.6 0-4.8-.1c-1.2 0-1.9-.3-2.3-.4-.6-.2-1-.5-1.4-1s-.7-.8-1-1.4c-.2-.5-.4-1.1-.4-2.3-.1-1.3-.1-1.7-.1-4.8s0-3.6.1-4.8c0-1.2.3-1.9.4-2.3.2-.6.5-1 1-1.4s.8-.7 1.4-1c.5-.2 1.1-.4 2.3-.4 1.3-.1 1.7-.1 4.8-.1zM12 7.4a4.6 4.6 0 100 9.2 4.6 4.6 0 000-9.2zm0 7.6a3 3 0 110-6 3 3 0 010 6zm5.9-7.8a1.1 1.1 0 11-2.2 0 1.1 1.1 0 012.2 0z'/></svg>");
}

/* 外部リンク矢印 (ext) */
.liff-page .clinic-info .ext {
    width: 14px; height: 14px;
    display: inline-block;
    background-color: var(--liff-muted);
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;   mask-position: center;
    -webkit-mask-size: contain;      mask-size: contain;
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 3a1 1 0 100 2h3.6l-8.3 8.3a1 1 0 001.4 1.4L19 6.4V10a1 1 0 102 0V4a1 1 0 00-1-1h-6zM5 5a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2v-5a1 1 0 10-2 0v5H5V7h5a1 1 0 100-2H5z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 3a1 1 0 100 2h3.6l-8.3 8.3a1 1 0 001.4 1.4L19 6.4V10a1 1 0 102 0V4a1 1 0 00-1-1h-6zM5 5a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2v-5a1 1 0 10-2 0v5H5V7h5a1 1 0 100-2H5z'/></svg>");
}

/* 固定CTAバー (予約 / 問い合わせ) */
.liff-page .clinic-cta-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    width: min(100%, 480px);
    margin-inline: auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    background: #fff;
    border-top: 1px solid var(--liff-line);
    z-index: 30;
    padding-bottom: env(safe-area-inset-bottom, 0px);
}
.liff-page .clinic-cta-bar .clinic-cta:only-child {
    grid-column: 1 / -1;
}
.liff-page .clinic-cta {
    padding: 18px 12px;
    text-align: center;
    text-decoration: none;
    font-size: 15px;
    font-weight: 700;
    color: #fff !important;
    letter-spacing: .04em;
    transition: filter .15s ease;
}
.liff-page .clinic-cta:hover { filter: brightness(.95); }
.liff-page .clinic-cta--reserve { background: #22c55e; }
.liff-page .clinic-cta--inquiry { background: #ef4444; }

.liff-page .clinic-hours {
    margin-top: 28px;
}
.liff-page .clinic-panel > .clinic-hours:first-child {
    margin-top: 0;
}
.liff-page .clinic-hours__label {
    margin: 0 0 10px;
    font-size: 13px;
    font-weight: 500;
    color: var(--liff-ink);
}
.liff-page .clinic-hours__label + .clinic-hours__table {
    margin-bottom: 0;
}
.liff-page .clinic-hours__table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 13px;
    line-height: 1.5;
    color: var(--liff-ink);
}
.liff-page .clinic-hours__table th,
.liff-page .clinic-hours__table td {
    border: 1px solid #e6e8ee;
    padding: 11px 12px;
    vertical-align: middle;
    word-break: normal;
    background: #fff;
}
.liff-page .clinic-hours__table th {
    width: 3rem;
    background: var(--liff-primary);
    color: #fff;
    font-weight: 600;
    text-align: center;
}
.liff-page .clinic-hours__time {
    width: 46%;
    text-align: left;
}
.liff-page .clinic-hours__memo {
    text-align: right;
}
.liff-page .clinic-hours__off {
    text-align: center;
    color: #ef4444;
    font-weight: 600;
}
.liff-page .clinic-hours__note {
    text-align: left;
}
.liff-page .clinic-hours__value {
    margin: -2px 0 18px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.7;
    color: var(--liff-ink);
    white-space: pre-wrap;
}
.liff-page .clinic-hours__table + .clinic-hours__label {
    margin-top: 22px;
}
.liff-page .clinic-photos {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.liff-page .clinic-photos figure {
    margin: 0;
}
.liff-page .clinic-photos img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    background: #e8eaee;
    border-radius: 4px;
}
.liff-page .clinic-photos figcaption {
    margin-top: 6px;
    font-size: 12px;
    line-height: 1.5;
    color: var(--liff-muted);
}

/* ==============================================================
   リストカード統一 — キャンペーン一覧と同じカード体裁
   ・予約一覧 / 来院履歴: 画像なし、テキスト左寄せ + 右シェブロン
   ・クーポン一覧 / マイクーポン: 左サムネイル + テキスト左寄せ + 右シェブロン
   ============================================================== */
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 {
    display: block !important;
    position: relative;
    text-align: left !important;
    padding: 16px 44px 16px 18px !important;
    margin: 0 0 14px !important;
    border-radius: var(--liff-radius) !important;
    border: 1px solid var(--liff-line-2) !important;
    background: var(--liff-white);
    box-shadow: var(--liff-shadow-1);
    color: var(--liff-ink) !important;
    min-height: 92px;
    transition: box-shadow .18s ease, transform .12s ease;
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3:hover {
    box-shadow: var(--liff-shadow-2);
    transform: translateY(-1px);
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 p {
    text-align: left !important;
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 .fw-bold {
    font-size: 15px;
    margin-bottom: 6px !important;
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3::before {
    display: none !important;
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3::after,
.liff-page .mycoupon-card::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 18px;
    width: 9px; height: 9px;
    border-right: 2px solid var(--liff-muted-2);
    border-bottom: 2px solid var(--liff-muted-2);
    transform: translateY(-50%) rotate(-45deg);
}
.liff-page .p-4 a.d-block.text-decoration-none.text-body.border.rounded.p-3.mb-3 .badge {
    margin: 4px 0 0;
}

/* クーポン系カード */
.liff-page .mycoupon-card {
    position: relative;
    padding: 0 40px 0 0 !important;
    gap: 16px;
    border: 1px solid var(--liff-line-2) !important;
    border-radius: var(--liff-radius) !important;
    overflow: hidden;
    min-height: 92px;
    margin: 0 0 14px !important;
}
.liff-page .mycoupon-card:hover { transform: translateY(-1px); }
.liff-page .mycoupon-card__thumb {
    flex: 0 0 100px !important;
    width: 100px !important;
    height: auto !important;
    min-height: 92px;
    border-radius: 0 !important;
    background:
        radial-gradient(circle at 30% 20%, rgba(255,255,255,.65), transparent 55%),
        linear-gradient(135deg, var(--liff-primary-100) 0%, #ffe0c2 100%) !important;
}
body.variant-navy .liff-page .mycoupon-card__thumb {
    background: linear-gradient(135deg, var(--liff-primary-100) 0%, #cfd7e5 100%) !important;
}
.liff-page .mycoupon-card__thumb:has(img) {
    position: relative;
    align-self: stretch;
    height: auto !important;
    min-height: 92px;
    overflow: hidden;
    background: none !important;
}
.liff-page .mycoupon-card__thumb img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.liff-page .mycoupon-card__body {
    padding: 14px 0 !important;
    text-align: left;
}
.liff-page .mycoupon-card__meta,
.liff-page .mycoupon-card__use { text-align: left !important; }

/* ==============================================================
   予約TOP — 2x2 メニュー + 予約中カード
   ============================================================== */
.liff-page .rsv-top .mypage-grid { margin-bottom: 36px; }
.liff-page .rsv-top .mypage-tile { min-height: 116px; }
.mypage-tile[data-tile="rsv-new"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M7 2a1 1 0 011 1v1h8V3a1 1 0 112 0v1h1.5A1.5 1.5 0 0121 5.5v13a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 18.5v-13A1.5 1.5 0 014.5 4H6V3a1 1 0 011-1zm12 8H5v8.5c0 .3.2.5.5.5h13c.3 0 .5-.2.5-.5V10zm-7 1.25c.41 0 .75.34.75.75v1.75h1.75a.75.75 0 010 1.5h-1.75V17a.75.75 0 01-1.5 0v-1.75H9.5a.75.75 0 010-1.5h1.75V12c0-.41.34-.75.75-.75z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M7 2a1 1 0 011 1v1h8V3a1 1 0 112 0v1h1.5A1.5 1.5 0 0121 5.5v13a1.5 1.5 0 01-1.5 1.5h-15A1.5 1.5 0 013 18.5v-13A1.5 1.5 0 014.5 4H6V3a1 1 0 011-1zm12 8H5v8.5c0 .3.2.5.5.5h13c.3 0 .5-.2.5-.5V10zm-7 1.25c.41 0 .75.34.75.75v1.75h1.75a.75.75 0 010 1.5h-1.75V17a.75.75 0 01-1.5 0v-1.75H9.5a.75.75 0 010-1.5h1.75V12c0-.41.34-.75.75-.75z'/></svg>");
}
.mypage-tile[data-tile="rsv-list"] .mypage-tile__icon::before {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M5.5 3A2.5 2.5 0 003 5.5v13A2.5 2.5 0 005.5 21h13a2.5 2.5 0 002.5-2.5v-13A2.5 2.5 0 0018.5 3h-13zM7 7.25a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5zM7 11a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5zM7 14.75a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M5.5 3A2.5 2.5 0 003 5.5v13A2.5 2.5 0 005.5 21h13a2.5 2.5 0 002.5-2.5v-13A2.5 2.5 0 0018.5 3h-13zM7 7.25a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5zM7 11a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5zM7 14.75a1 1 0 110 2 1 1 0 010-2zm3 .25h7a.75.75 0 010 1.5h-7a.75.75 0 010-1.5z'/></svg>");
}
.liff-page .rsv-section-title {
    margin: 0 0 14px;
    font-size: 15px;
    font-weight: 700;
    text-align: center;
    color: var(--liff-ink);
    letter-spacing: .04em;
}
.liff-page .rsv-card {
    position: relative;
    background: var(--liff-white);
    border: 1px solid var(--liff-line-2);
    border-radius: var(--liff-radius);
    box-shadow: var(--liff-shadow-1);
    padding: 44px 18px 16px;
    margin: 0 0 14px;
    text-align: left;
}
.liff-page .rsv-card__status {
    position: absolute;
    top: 0; left: 0;
    padding: 6px 16px;
    background: #22c55e;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    border-radius: var(--liff-radius) 0 var(--liff-radius) 0;
    line-height: 1.3;
}
.liff-page .rsv-card__date {
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 700;
    color: var(--liff-ink);
}
.liff-page .rsv-card__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.liff-page .rsv-card__clinic {
    margin: 0;
    font-size: 14px;
    color: var(--liff-ink-2);
}
.liff-page .rsv-card__menu {
    margin: 6px 0 0;
    font-size: 13px;
    color: var(--liff-muted);
}
.liff-page .rsv-card__detail {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    padding: 7px 16px;
    border-radius: 999px;
    border: 1px solid var(--liff-line);
    background: var(--liff-white);
    font-size: 12px;
    font-weight: 600;
    color: var(--liff-ink-2) !important;
    text-decoration: none !important;
}
.liff-page .rsv-card__detail:hover {
    border-color: var(--liff-primary);
    color: var(--liff-primary) !important;
}

/* ==============================================================
   LINE Magazine List — 記事カード縦積み
   ============================================================== */
body.page-line-magazine-list .liff-page { background: #fff !important; }

.liff-page .magazine-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding-top: 16px !important;
}
.liff-page .magazine-card {
    display: flex !important;
    align-items: stretch;
    gap: 0;
    background: var(--liff-white);
    border: 1px solid var(--liff-line);
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none !important;
    color: var(--liff-ink) !important;
    box-shadow: 0 1px 2px rgba(16,24,40,.04);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.liff-page .magazine-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px -6px rgba(16,24,40,.15);
    border-color: color-mix(in oklch, var(--liff-primary) 25%, var(--liff-line));
}
.liff-page .magazine-card__thumb {
    flex: 0 0 40%;
    margin: 0;
    background: #d9e6f7;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    min-height: 120px;
    aspect-ratio: 1 / 1;
}
.liff-page .magazine-card__thumb:has(img) {
    position: relative;
    overflow: hidden;
}
.liff-page .magazine-card__thumb img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.liff-page .magazine-card__thumb svg {
    width: 56%;
    height: auto;
    opacity: .95;
}
.liff-page .magazine-card__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 16px 18px;
    min-width: 0;
}
.liff-page .magazine-card__title {
    margin: 0 0 12px;
    font-size: 15px;
    font-weight: 700;
    color: var(--liff-ink);
    letter-spacing: -.005em;
    line-height: 1.4;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.liff-page .magazine-card__meta {
    margin: 0;
    font-size: 11.5px;
    color: var(--liff-muted);
    letter-spacing: .02em;
}

/* ==============================================================
   LINE Magazine Detail — 1記事ページ
   ============================================================== */
body.page-line-magazine-detail .liff-page { background: #fff !important; }

.liff-page .magazine-article {
    padding: 24px 20px 40px;
}
.liff-page .magazine-article__title {
    margin: 4px 0 20px;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.5;
    color: var(--liff-ink);
    letter-spacing: -.005em;
    text-align: center;
}
.liff-page .magazine-article__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 0 0 20px;
    flex-wrap: wrap;
}
.liff-page .magazine-tag {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 999px;
    background: #3ecfa8;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
    line-height: 1;
}
.liff-page .magazine-article__date {
    font-size: 11.5px;
    color: var(--liff-muted);
    letter-spacing: .02em;
}
.liff-page .magazine-article__lead {
    margin: 0 0 20px;
    font-size: 22px;
    font-weight: 700;
    color: var(--liff-ink);
    line-height: 1.5;
    letter-spacing: -.005em;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--liff-line);
}
.liff-page .magazine-article__body {
    margin: 0;
}
.liff-page .magazine-article__body p {
    margin: 0 0 16px;
    font-size: 14px;
    line-height: 1.9;
    color: var(--liff-ink);
}
.liff-page .magazine-article__body p:last-child { margin-bottom: 0; }

@media (max-width: 400px) {
    .liff-page, .message-page { max-width: 100%; }
    .liff-page > div.p-4,
    .liff-page > .p-4,
    .liff-page .p-4.membership-page { max-width: 100%; padding: 20px 16px !important; }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
    }
}

/* 2026-10-02 design delta */
/* 「問い合わせを終了する」— 送信の下段、誤タップ防止で大きく離す */
.cs-inquiry-close {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 28px 0 4px;
    padding-top: 20px;
    border-top: 1px dashed var(--liff-line);
}
/* 「問い合わせを終了する」— 他画面のグレーボタン（確認する / 変更する 等のシルバー塗り）と同じ見た目。
   テーマに関係なく常にこのグレー */
html body .liff-page .cs-inquiry-close .btn.btn-outline-secondary {
    display: flex !important;
    align-items: center;
    justify-content: center;
    max-width: 300px;
    width: 100%;
    min-height: 46px !important;
    padding: 13px 20px !important;
    border-radius: var(--liff-radius) !important;
    background: linear-gradient(180deg, #d3dae4 0%, #b7c1d0 100%) !important;
    border: 1px solid #a3aec0 !important;
    color: #1f2328 !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.4);
    font-weight: 600 !important;
    font-size: 14px !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 2px rgba(107,122,145,.12) !important;
}
html body .liff-page .cs-inquiry-close .btn.btn-outline-secondary:hover {
    background: linear-gradient(180deg, #c2cbd8 0%, #a3aec0 100%) !important;
    border-color: #94a2b6 !important;
}
/* 注意書きと「問い合わせTOPへ戻る」の間を広めに */
.cs-inquiry-close { margin-bottom: 64px !important; }
.cs-inquiry-close + button.btn.btn-outline-secondary { margin-top: 0 !important; }
/* 終了ボタン下の注意書き */
.cs-inquiry-close__note {
    max-width: 300px;
    margin: 12px auto 0;
    font-size: 11.5px;
    line-height: 1.7;
    color: var(--liff-muted);
    text-align: left;
}

/* ==============================================================
   クリニック一覧カード — クリニック一覧 / 予約作成のクリニック選択で共通
   [画像 96px] [院名 + タグ群] [詳細]
   ============================================================== */
.liff-page .clinic-list { margin: 0; padding: 0; list-style: none; }
.liff-page .clinic-list-item {
    display: grid;
    grid-template-columns: 96px 1fr auto;
    gap: 14px;
    align-items: start;
    padding: 18px 0;
    border-bottom: 1px solid var(--liff-line);
}
.liff-page .clinic-list-item:first-child { padding-top: 4px; }
.liff-page .clinic-list-item__thumb {
    width: 96px; height: 96px;
    overflow: hidden;
    border-radius: 6px;
    background:
        repeating-linear-gradient(45deg, rgba(0,0,0,.035) 0 6px, transparent 6px 12px),
        #e9edf2;
    display: flex; align-items: center; justify-content: center;
    font-size: 10px; color: var(--liff-muted); letter-spacing: .04em;
    font-family: ui-monospace, Menlo, monospace;
}
.liff-page .clinic-list-item__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.liff-page .clinic-list-item__name {
    margin: 2px 0 10px;
    font-size: 16px;
    font-weight: 700;
    color: var(--liff-ink);
    line-height: 1.35;
}
.liff-page .clinic-list-item__tags {
    display: flex; flex-wrap: wrap; gap: 6px;
}
.liff-page .clinic-list-item__tags span {
    display: inline-flex; align-items: center;
    padding: 5px 9px;
    border: 1px solid var(--liff-line-2, #dfe4ea);
    border-color: #dfe4ea;
    border-radius: 4px;
    background: #fff;
    font-size: 11.5px;
    color: var(--liff-ink-2);
    line-height: 1.2;
}
.liff-page .clinic-list-item__action {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 64px;
    padding: 8px 14px;
    border: 1px solid #cfd6df;
    border-radius: 6px;
    background: #fff;
    font-size: 13px;
    font-weight: 600;
    color: var(--liff-ink) !important;
    text-decoration: none !important;
    white-space: nowrap;
}
.liff-page .clinic-list-item__action:hover { background: var(--liff-bg); }
.liff-page .clinic-list-item__action--select {
    background: #fff; border-color: var(--liff-ink); color: var(--liff-ink) !important;
    font-weight: 700;
}
.liff-page .clinic-list-item__action--select:hover {
    background: var(--liff-ink); color: #fff !important;
}

/* ==============================================================
   予約作成のボトムシート（クリニック選択 / メニュー選択）
   ============================================================== */
.liff-page .rsv-sheet-overlay {
    position: fixed; inset: 0;
    background: rgba(15,23,42,.45);
    z-index: 1080;
    display: flex; align-items: flex-end; justify-content: center;
}
html body .liff-page .liff-search-modal { z-index: 1090 !important; }
.liff-page .rsv-sheet {
    width: 100%; max-width: 480px;
    max-height: 88vh; overflow-y: auto;
    background: #fff;
    border-radius: 14px 14px 0 0;
    padding: 10px 20px calc(24px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -8px 24px rgba(15,23,42,.18);
}
.liff-page .rsv-sheet__grip {
    width: 44px; height: 4px; border-radius: 4px;
    background: #d8dde4; margin: 4px auto 14px;
}
.liff-page .rsv-sheet__head {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 16px;
}
.liff-page .rsv-sheet__title {
    margin: 0 !important; padding: 0 !important;
    font-size: 15px !important; font-weight: 700 !important;
    color: var(--liff-ink); text-align: left !important;
}
.liff-page .rsv-sheet__title::before { display: none !important; }
.liff-page .rsv-sheet__close {
    width: 36px; height: 36px; border-radius: 50%;
    border: 0; background: #f1f4f8; color: var(--liff-muted);
    font-size: 18px; line-height: 1; cursor: pointer;
}
/* --- 予約メニュー選択シート ---
   ゆったりした縦リズム（各ステップ間 40px 前後）。
   アクセントは控えめに：番号は線のバッジ、選択中のチップは黒（インク）塗り。 */
.liff-page .rsv-sheet {
    padding: 12px 24px calc(48px + env(safe-area-inset-bottom, 0px)) !important;
}
.liff-page .rsv-sheet__grip { margin: 4px auto 18px !important; }
.liff-page .rsv-sheet__head {
    margin-bottom: 32px !important;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--liff-line);
}
.liff-page .rsv-sheet__title {
    text-align: center !important; flex: 1;
    font-size: 16px !important; letter-spacing: .04em;
}
.liff-page .rsv-sheet__head::before { content: ""; width: 36px; flex: 0 0 36px; }

.liff-page .rsv-step {
    margin: 0 0 40px;
    text-align: center;
}
.liff-page .rsv-step__label {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    margin: 0 0 18px;
    font-size: 14px; font-weight: 700; letter-spacing: .08em;
    color: var(--liff-ink);
}
.liff-page .rsv-step__num,
.liff-page .rsv-group-title > span {
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%;
    background: #fff; color: var(--liff-ink);
    border: 1.5px solid var(--liff-ink);
    font-size: 11.5px; font-weight: 700; letter-spacing: 0;
    margin: 0;
}

/* 「選択肢」— 絞り込み条件のまとまりを示す中央の区切り見出し */
.liff-page .rsv-group-title {
    display: flex; align-items: center; gap: 12px;
    margin: 8px 0 20px;
    font-size: 14px; font-weight: 700; letter-spacing: .08em;
    color: var(--liff-ink);
}
.liff-page .rsv-group-title::before,
.liff-page .rsv-group-title::after {
    content: ""; flex: 1; height: 1px; background: var(--liff-line);
}
.liff-page .rsv-filter {
    background: #f6f7f9;
    border-radius: 14px;
    padding: 26px 16px 4px;
    margin-bottom: 40px;
}
.liff-page .rsv-filter .rsv-step { margin-bottom: 26px; }
.liff-page .rsv-filter .rsv-step__label {
    font-size: 12.5px; font-weight: 600; letter-spacing: .1em;
    color: var(--liff-muted); margin-bottom: 12px;
}

.liff-page .rsv-chips {
    display: flex; flex-wrap: wrap; gap: 10px; justify-content: center;
}
.liff-page .rsv-chip {
    display: inline-flex; align-items: center;
    padding: 12px 20px;
    border: 1px solid #d5dbe3;
    border-radius: 999px;
    background: #fff;
    font-size: 14px; font-weight: 600;
    color: var(--liff-ink-2);
    cursor: pointer;
    line-height: 1.2;
    transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.liff-page .rsv-chip:hover { border-color: var(--liff-ink); }
.liff-page .rsv-chip.is-active {
    border-color: var(--liff-ink); background: var(--liff-ink); color: #fff;
}

/* メニュー候補 */
.liff-page .rsv-menu-head {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    margin: 0 0 18px;
    font-size: 14px; font-weight: 700; letter-spacing: .08em; color: var(--liff-ink);
}
.liff-page .rsv-menu-head small {
    font-size: 12px; font-weight: 500; color: var(--liff-muted); letter-spacing: 0;
}
.liff-page .rsv-menu-list {
    display: flex; flex-direction: column; gap: 10px;
    border: 0; border-radius: 0; overflow: visible;
}
.liff-page .rsv-menu-option {
    display: flex; align-items: center; gap: 12px;
    width: 100%;
    padding: 20px 18px;
    border: 1px solid var(--liff-line);
    border-radius: 12px;
    background: #fff;
    text-align: left;
    cursor: pointer;
    position: relative;
    box-shadow: 0 1px 2px rgba(15,23,42,.04);
    transition: border-color .15s ease, background .15s ease;
}
.liff-page .rsv-menu-option:last-child { border-bottom: 1px solid var(--liff-line); }
.liff-page .rsv-menu-option:hover { border-color: var(--liff-ink); background: #fff; }
.liff-page .rsv-menu-option__name {
    flex: 1;
    font-size: 15px; font-weight: 600; color: var(--liff-ink); line-height: 1.45;
}
.liff-page .rsv-menu-option__time {
    flex: 0 0 auto;
    padding: 5px 11px;
    border-radius: 999px;
    background: #f1f4f8;
    font-size: 12px; font-weight: 600; color: var(--liff-ink-2);
}
.liff-page .rsv-menu-option::after {
    content: ""; flex: 0 0 auto;
    width: 8px; height: 8px;
    border-right: 2px solid #b6bfcb; border-bottom: 2px solid #b6bfcb;
    transform: rotate(-45deg);
    margin-left: 2px;
}

/* ==============================================================
   予約メニュー選択 v3 — 質問形式（STEP 1〜3）で迷わず選べる構成
   STEP1 科目: 説明付きの大きな2列カード
   STEP2 条件: ラベル左 + セグメント右の行
   STEP3 メニュー: 条件に合うものだけ、ラジオで1つ選択
   下部: 選択中の内容 + 「このメニューで次へ」を固定
   ============================================================== */
.liff-page .rsvm-q { margin: 0 0 44px; }
.liff-page .rsvm-q__step {
    margin: 0 0 6px;
    font-size: 11px; font-weight: 700; letter-spacing: .18em;
    color: #eb6100; text-align: center;
}
.liff-page .rsvm-q__title {
    margin: 0 0 20px !important; padding: 0 !important;
    font-size: 17px !important; font-weight: 700 !important;
    line-height: 1.5; color: var(--liff-ink); text-align: center !important;
}
.liff-page .rsvm-q__title::before { display: none !important; }
.liff-page .rsvm-q__hint {
    margin: -8px 0 16px; text-align: center;
    font-size: 12.5px; color: var(--liff-muted);
}
.liff-page .rsvm-q__hint strong { color: var(--liff-ink); }

/* STEP1 科目カード */
.liff-page .rsvm-dept {
    display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
}
.liff-page .rsvm-dept__card {
    position: relative;
    display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
    gap: 6px;
    min-height: 96px;
    padding: 18px 16px;
    border: 1.5px solid var(--liff-line);
    border-radius: 14px;
    background: #fff;
    text-align: left;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(15,23,42,.04);
    transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.liff-page .rsvm-dept__card:hover { border-color: #c4ccd6; }
.liff-page .rsvm-dept__name {
    font-size: 15px; font-weight: 700; color: var(--liff-ink); line-height: 1.35;
}
.liff-page .rsvm-dept__desc {
    font-size: 11.5px; color: var(--liff-muted); line-height: 1.5;
}
.liff-page .rsvm-dept__card.is-active {
    border-color: var(--liff-ink);
    background: #fafbfc;
    box-shadow: 0 0 0 1px var(--liff-ink) inset;
}
.liff-page .rsvm-dept__card.is-active::after {
    content: "";
    position: absolute; top: 12px; right: 12px;
    width: 20px; height: 20px; border-radius: 50%;
    background: var(--liff-ink)
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 8.5l2.5 2.5L12 5.5'/></svg>") no-repeat center / 12px;
}

/* STEP2 条件 */
.liff-page .rsvm-cond {
    border: 1px solid var(--liff-line);
    border-radius: 14px;
    overflow: hidden;
    background: #fff;
}
/* 選択肢の数・文字数が増えても崩れないよう、
   ラベルを上・選択肢を下に置き、選択肢は幅に合わせて自動で折り返す
   （1行に入る数は画面幅で決まる。390px幅のスマホで1行3つ） */
.liff-page .rsvm-cond__row {
    display: flex; flex-direction: column; align-items: stretch; gap: 10px;
    padding: 16px 16px 18px;
    border-bottom: 1px solid var(--liff-line);
}
.liff-page .rsvm-cond__row:last-child { border-bottom: 0; }
.liff-page .rsvm-cond__label {
    font-size: 13.5px; font-weight: 600; color: var(--liff-ink);
    text-align: left;
}
.liff-page .rsvm-seg {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(86px, 1fr));
    gap: 4px;
    padding: 4px;
    background: #f1f3f6;
    border-radius: 12px;
}
.liff-page .rsvm-seg__btn {
    min-width: 0;
    min-height: 40px;
    padding: 9px 10px;
    border: 0; border-radius: 9px;
    background: transparent;
    font-size: 13.5px; font-weight: 600; color: var(--liff-muted);
    cursor: pointer; line-height: 1.35;
    white-space: normal; word-break: keep-all; overflow-wrap: anywhere;
    text-align: center;
    transition: background .15s ease, color .15s ease;
}
.liff-page .rsvm-seg__btn.is-active {
    background: #fff; color: var(--liff-ink);
    box-shadow: 0 1px 3px rgba(15,23,42,.14);
}

/* STEP3 メニュー（ラジオ） */
.liff-page .rsvm-menu { display: flex; flex-direction: column; gap: 10px; }
.liff-page .rsvm-menu__item {
    display: flex; align-items: center; gap: 14px;
    width: 100%;
    padding: 18px 16px;
    border: 1.5px solid var(--liff-line);
    border-radius: 14px;
    background: #fff;
    text-align: left; cursor: pointer;
    transition: border-color .15s ease, background .15s ease;
}
.liff-page .rsvm-menu__item:hover { border-color: #c4ccd6; }
.liff-page .rsvm-menu__radio {
    flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%;
    border: 2px solid #c4ccd6; background: #fff;
    position: relative;
}
.liff-page .rsvm-menu__body { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.liff-page .rsvm-menu__name { font-size: 15px; font-weight: 700; color: var(--liff-ink); line-height: 1.4; }
.liff-page .rsvm-menu__meta { font-size: 12px; color: var(--liff-muted); line-height: 1.5; }
.liff-page .rsvm-menu__time {
    flex: 0 0 auto;
    padding: 5px 11px; border-radius: 999px;
    background: #f1f3f6;
    font-size: 12px; font-weight: 600; color: var(--liff-ink-2);
}
.liff-page .rsvm-menu__item.is-active {
    border-color: var(--liff-ink);
    background: #fafbfc;
}
.liff-page .rsvm-menu__item.is-active .rsvm-menu__radio { border-color: var(--liff-ink); }
.liff-page .rsvm-menu__item.is-active .rsvm-menu__radio::after {
    content: ""; position: absolute; inset: 4px; border-radius: 50%;
    background: var(--liff-ink);
}

/* 決定バー（シート下部に固定） */
.liff-page .rsvm-footer {
    position: sticky; bottom: calc(-48px - env(safe-area-inset-bottom, 0px));
    margin: 0 -24px calc(-48px - env(safe-area-inset-bottom, 0px));
    padding: 16px 24px calc(20px + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-top: 1px solid var(--liff-line);
    box-shadow: 0 -6px 16px -8px rgba(15,23,42,.12);
    z-index: 2;
}
.liff-page .rsvm-footer__summary {
    margin: 0 0 12px; text-align: center;
    font-size: 12.5px; color: var(--liff-muted);
}
.liff-page .rsvm-footer__summary strong { color: var(--liff-ink); }
.liff-page .rsvm-footer__btn {
    max-width: none !important; margin: 0 !important;
    min-height: 50px !important; font-size: 15px !important; font-weight: 700 !important;
}

/* シートを開いている状態では、背面の「トークルームへ戻る」を出さない
   （内容が短い画面では中途半端な位置に浮いて見えるため） */
.liff-page:has(.rsv-sheet-overlay) > .d-block.text-center.my-5 { display: none !important; }
.liff-page:has(.rsv-sheet-overlay) { min-height: 100vh; }

/* 固定色ボタン — テーマ切替に左右されない色指定
   .btn-line-green : LINEグリーン（送信・クーポンを見せる）
   .btn-cusabi     : CUSABIオレンジ（アンケートのスタート・新規でお問い合わせを開始する） */
/* テーマ（body.variant-*）の btn-primary 上書きより必ず強くなるよう、
   html body を先頭に付けて詳細度を上げている */
html body .liff-page .btn.btn-line-green.btn-line-green.btn-line-green,
html body .liff-page .cs-inquiry-composer .btn.cs-inquiry-send.cs-inquiry-send.cs-inquiry-send {
    background: #06C755 !important;
    background-color: #06C755 !important;
    background-image: none !important;
    border-color: #06C755 !important;
    color: #fff !important;
    box-shadow: none !important;
}
html body .liff-page .btn.btn-line-green.btn-line-green.btn-line-green:hover,
html body .liff-page .cs-inquiry-composer .btn.cs-inquiry-send.cs-inquiry-send.cs-inquiry-send:hover {
    background: #05B04B !important;
    background-color: #05B04B !important;
    background-image: none !important;
    border-color: #05B04B !important;
}
html body .liff-page .btn.btn-cusabi.btn-cusabi.btn-cusabi {
    background: #eb6100 !important;
    background-color: #eb6100 !important;
    background-image: none !important;
    border-color: #eb6100 !important;
    color: #fff !important;
    box-shadow: 0 3px 8px -2px rgba(235,97,0,.24), 0 1px 2px rgba(235,97,0,.14) !important;
}
html body .liff-page .btn.btn-cusabi.btn-cusabi.btn-cusabi:hover {
    background: #d55500 !important;
    background-color: #d55500 !important;
    background-image: none !important;
    border-color: #d55500 !important;
}

/* 送信ボタン — 吹き出し・背景のピンク系と切り離し、LINEグリーンの単色に */
.cs-inquiry-composer .btn.cs-inquiry-send {
    background: #06C755 !important;
    background-color: #06C755 !important;
    border-color: #06C755 !important;
    color: #fff !important;
    border-radius: 6px !important;
    box-shadow: none !important;
    font-weight: 700 !important;
    letter-spacing: .06em;
    min-height: 44px;
}
.cs-inquiry-composer .btn.cs-inquiry-send:hover {
    background: #05B04B !important;
    background-color: #05B04B !important;
    border-color: #05B04B !important;
}
.cs-inquiry-clip {
    width: 44px !important;
    height: 44px !important;
    border-radius: 4px !important;      /* スクエア */
    border: 1px solid var(--liff-line) !important;
    background: var(--liff-bg) !important;
    color: var(--liff-muted) !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    flex: 0 0 auto;
    transition: border-color .18s ease, color .18s ease, background .18s ease;
}
.cs-inquiry-clip::before {
    content: "";
    width: 20px; height: 20px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'><path d='M21.44 11.05l-9.19 9.19a5.5 5.5 0 01-7.78-7.78l9.19-9.19a3.5 3.5 0 014.95 4.95l-9.19 9.19a1.5 1.5 0 01-2.12-2.12L14.5 6.5'/></svg>") no-repeat center/contain;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'><path d='M21.44 11.05l-9.19 9.19a5.5 5.5 0 01-7.78-7.78l9.19-9.19a3.5 3.5 0 014.95 4.95l-9.19 9.19a1.5 1.5 0 01-2.12-2.12L14.5 6.5'/></svg>") no-repeat center/contain;
}

/* クーポン CTA は .btn ではない。ページ色が無いときだけ固定色 */
html body .liff-page .dx-cp-cta.coupon-cta-cusabi {
    background: #eb6100 !important;
    background-color: #eb6100 !important;
    background-image: none !important;
    border-color: #eb6100 !important;
    color: #fff !important;
}
html body .liff-page .dx-cp-cta.coupon-cta-line {
    background: #06C755 !important;
    background-color: #06C755 !important;
    background-image: none !important;
    border-color: #06C755 !important;
    color: #fff !important;
}

/* 問診の入力部品。回答カード .qr とは別に、1問ずつの画面で使う。 */
.liff-page .qform-title { margin: 0 0 8px; font-size: 15px; font-weight: 700; line-height: 1.6; color: #0B1A22; }
.liff-page .qform-no { display: inline-block; margin-right: 8px; padding: 3px 7px; border-radius: 6px; background: #1B3A5C; color: #fff; font-size: 11px; font-weight: 700; letter-spacing: .04em; line-height: 1; vertical-align: 1px; white-space: nowrap; }
.liff-page .qform-req { display: inline-block; margin-left: 8px; padding: 3px 6px; border-radius: 5px; background: #FBEAE8; color: #D92D20; font-size: 10.5px; font-weight: 700; vertical-align: 1px; }
.liff-page .qform-note { margin: 0 0 12px; font-size: 12px; line-height: 1.65; color: #3D4B54; }
.liff-page .qform-note-strong { font-weight: 700; }
.liff-page .qform-opts { display: flex; flex-direction: column; gap: 8px; }
.liff-page .qform-radio-checks { display: flex; flex-direction: column; gap: 8px; margin: 0 0 4px 28px; }
.liff-page .qform-opt { position: relative; display: flex; align-items: center; gap: 12px; margin: 0; padding: 10px 14px; border: 1px solid #E2E9ED; border-radius: 9px; background: #fff; color: #3D4B54; font-size: 13.5px; line-height: 1.5; cursor: pointer; }
.liff-page .qform-check { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.liff-page .qform-m { flex: 0 0 auto; width: 18px; height: 18px; position: relative; background: #fff; border: 1.6px solid #7C8C95; }
.liff-page .qform-single .qform-m { border-radius: 50%; }
.liff-page .qform-multi .qform-m { border-radius: 5px; }
.liff-page .qform-radio-checks .qform-m { border-radius: 5px; }
.liff-page .qform-m::after { content: ""; position: absolute; left: 4.2px; top: 5.8px; width: 6.4px; height: 3.2px; border-left: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(-45deg) scale(.5); opacity: 0; }
.liff-page .qform-opt:has(:checked) { background: #D9EBF7; border-color: #B3DAEF; color: #0B1A22; font-weight: 700; }
.liff-page .qform-opt:has(:checked) .qform-m { background: #2E7BAE; border-color: #2E7BAE; }
.liff-page .qform-opt:has(:checked) .qform-m::after { opacity: 1; transform: rotate(-45deg) scale(1); }
.liff-page .qform-sub { margin: -2px 0 4px 30px; }
.liff-page .qform-fields { display: flex; flex-direction: column; gap: 11px; }
.liff-page .qform-field { display: block; margin: 0; }
.liff-page .qform-fl { display: block; margin-bottom: 3px; font-size: 11.5px; font-weight: 500; color: #3D4B54; }
.liff-page .qform-input { display: block; width: 100%; border: 1px solid #C9D4DA; border-radius: 8px; background: #F7FAFB; padding: 8px 12px; font-size: 13.5px; color: #0B1A22; }
.liff-page .qform-input:focus { outline: none; border-color: #2E7BAE; background: #fff; }
.liff-page .qform-inline { display: flex; align-items: center; gap: 8px; }
.liff-page .qform-inline .qform-input { width: auto; min-width: 8rem; }
.liff-page .qform-unit, .liff-page .qform-hint { font-size: 11.5px; font-weight: 500; color: #3D4B54; }
.liff-page .qform-scale-labels { display: flex; justify-content: space-between; margin: 0; font-size: 11.5px; color: #3D4B54; }
.liff-page .qform + .qform { margin-top: 28px; }

/* 本文 CTA は CRM の色を使う。色が無い古い HTML だけ、テーマ色に戻す。 */
html body .liff-page a.cms-content-cta:not([style*="background-color"]) {
    background: var(--liff-primary);
    border-color: var(--liff-primary);
    color: #fff;
}
