.cb-app{
--cb-primary:#333D53;--cb-primary-dark:#1F2A44;--cb-primary-light:#E9EDF4;
--cb-accent:#B08F76;--cb-accent-light:#F3EDE7;--cb-bg:#F8FAFC;--cb-card:#FFF;
--cb-text:#1E293B;--cb-muted:#64748B;--cb-border:#E2E8F0;--cb-danger:#C0564F;
--cb-gold-grad:linear-gradient(180deg,#967A4D,#E8D9A8,#C4A04D,#B89A5C,#94784A);
--cb-radius:14px;--cb-radius-sm:9px;--cb-shadow:0 2px 14px rgba(51,61,83,.08);
max-width:480px;margin:0 auto;color:var(--cb-text);font-size:15px;line-height:1.65;
}
.cb-app *,.cb-app *::before,.cb-app *::after{box-sizing:border-box}
/* テーマ側の見出し装飾(背景・下線・余白・影)が予約画面に混ざるのを防ぐ */
.cb-app h2,.cb-app h3{background:none !important;border:0 !important;padding:0 !important;text-shadow:none !important;text-transform:none}
.cb-app h2::before,.cb-app h2::after,.cb-app h3::before,.cb-app h3::after{content:none !important}
.cb-app h2.cb-title{font-size:19px;font-weight:600;color:var(--cb-primary-dark);margin:16px 0 4px;letter-spacing:.05em}
.cb-app p.cb-sub{font-size:12.5px;color:var(--cb-muted) !important;margin:0 0 16px}
.cb-progress{display:flex;gap:6px;padding:10px 0 4px;margin:0}
.cb-progress .cb-p{flex:1;text-align:center;font-size:10.5px;color:var(--cb-muted)}
.cb-progress .cb-p i{display:block;height:3px;border-radius:2px;background:var(--cb-border);margin-bottom:5px}
.cb-progress .cb-p.on i{background:var(--cb-accent)}
.cb-progress .cb-p.now{color:var(--cb-primary-dark);font-weight:600}
.cb-card{background:var(--cb-card);border-radius:var(--cb-radius);padding:16px;box-shadow:var(--cb-shadow);margin:0 0 12px;border:1.5px solid transparent}
.cb-app button{font-family:inherit;font-size:inherit;cursor:pointer;background:none;border:none;color:inherit;margin:0}
/* 案B: 白背景+はっきりした輪郭。.cb-app を付けないと .cb-app button のリセットに負ける */
.cb-app .cb-menu-card{width:100%;text-align:left;background:var(--cb-card);border:1.5px solid #B9C2D4;box-shadow:0 2px 10px rgba(51,61,83,.10)}
.cb-menu-card .h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.cb-menu-card .n{font-weight:700;font-size:15.5px;flex:1 1 auto;min-width:60%}
.cb-menu-card .p{font-size:13px;color:var(--cb-accent);font-weight:700;flex:0 1 auto;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left} /* 長い料金文は折り返す(nowrapだとカードの外に突き抜けた) */
/* display:block必須:インラインのままだと所要時間と説明文が同じ行に繋がり、点線が文字を横切る */
.cb-menu-card .m{display:block;font-size:12px;color:var(--cb-muted);margin-top:3px}
.cb-menu-card .d{display:block;font-size:12.5px;color:var(--cb-muted);margin-top:8px;border-top:1px dashed var(--cb-border);padding-top:8px}
.cb-badge{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:10px;margin-right:5px}
.cb-badge.f{background:var(--cb-primary-light);color:var(--cb-primary-dark)}
.cb-badge.r{background:var(--cb-accent-light);color:#8A6A4F}
.cb-app .cb-doc{width:100%;display:flex;align-items:center;gap:14px;text-align:left;background:var(--cb-card);border:1.5px solid #B9C2D4;box-shadow:0 2px 10px rgba(51,61,83,.10)}
.cb-doc .av{width:48px;height:48px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--cb-primary),var(--cb-primary-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px}
.cb-doc .av.any{background:var(--cb-accent-light);color:var(--cb-accent);font-size:22px}
.cb-cal-head{display:flex;align-items:center;justify-content:space-between;margin:4px 0 10px}
.cb-cal-head b{font-size:16px;letter-spacing:.04em}
.cb-app .cb-nav{width:36px;height:36px;border-radius:50%;border:1px solid #C4CDDC;background:var(--cb-card);color:var(--cb-primary-dark);font-size:15px}
.cb-nav:disabled{opacity:.3}
table.cb-cal{width:100%;border-collapse:collapse;background:var(--cb-card);border-radius:var(--cb-radius);box-shadow:var(--cb-shadow);overflow:hidden}
table.cb-cal th{font-size:11px;color:var(--cb-muted);padding:9px 0 5px;font-weight:600;border:none}
table.cb-cal th.su{color:var(--cb-danger)}table.cb-cal th.sa{color:#4A7BA6}
table.cb-cal td{text-align:center;padding:3px 0 7px;font-size:13px;cursor:pointer;width:14.28%;border:none}
table.cb-cal td span{display:block;line-height:1.3}
table.cb-cal td .mk{font-size:12px;line-height:1;font-weight:700}
table.cb-cal td .mk.ok{color:var(--cb-primary)}table.cb-cal td .mk.few{color:var(--cb-accent)}
table.cb-cal td .mk.full,table.cb-cal td .mk.closed{color:#C9CDD1;font-weight:400}
table.cb-cal td.dis{cursor:default;color:#C9CDD1}
table.cb-cal td.sel{background:var(--cb-primary);border-radius:10px}
table.cb-cal td.sel span{color:#fff}
.cb-legend{font-size:11px;color:var(--cb-muted);margin:8px 2px 18px;display:flex;gap:14px}
.cb-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}
.cb-app .cb-slot{padding:10px 0;text-align:center;border-radius:var(--cb-radius-sm);border:1.5px solid #C4CDDC;background:var(--cb-card);font-size:14px;font-weight:600}
.cb-app .cb-slot:disabled{color:#C9CDD1;background:transparent;border-color:transparent;text-decoration:line-through;font-weight:400;cursor:default}
.cb-app .cb-slot.sel{border-color:var(--cb-primary);background:var(--cb-primary);color:#fff}
.cb-period{font-size:12px;color:var(--cb-muted) !important;margin:10px 2px 6px}
.cb-fg{margin-bottom:15px}
.cb-fg label.cb-l{display:block;font-size:12.5px;font-weight:700;margin-bottom:5px}
.cb-app .req{display:inline-block;margin-left:6px;padding:0 7px;border:1px solid var(--cb-danger);border-radius:9px;background:#FDF3F2;color:var(--cb-danger);font-size:10.5px;font-weight:600;vertical-align:1px;line-height:1.6}
.cb-app .opt{display:inline-block;margin-left:6px;padding:0 7px;border:1px solid var(--cb-border);border-radius:9px;background:var(--cb-card);color:var(--cb-muted);font-size:10.5px;font-weight:600;vertical-align:1px;line-height:1.6}
.cb-app input[type=text],.cb-app input[type=tel],.cb-app input[type=email],.cb-app input[type=date],.cb-app textarea{
font-family:inherit;font-size:16px;border:1px solid var(--cb-border);border-radius:var(--cb-radius-sm);
padding:11px 13px;width:100%;background:var(--cb-card);color:var(--cb-text);outline:none;-webkit-appearance:none;appearance:none}
.cb-app input:focus,.cb-app textarea:focus{border-color:var(--cb-primary)}
.cb-app textarea{min-height:80px;resize:vertical}
.cb-tabs{display:flex;gap:10px;margin-bottom:16px}
.cb-tabs button{flex:1;text-align:center;padding:16px 6px;border-radius:14px;font-size:15px;font-weight:700;
color:var(--cb-primary-dark);background:var(--cb-card);border:2px solid var(--cb-border);
box-shadow:var(--cb-shadow);cursor:pointer;transition:all .15s;position:relative}
.cb-tabs button::after{content:'タップして選択';display:block;font-size:10.5px;font-weight:600;color:var(--cb-muted);margin-top:3px}
.cb-tabs button.sel{background:var(--cb-primary);border-color:var(--cb-primary);color:#fff;box-shadow:0 4px 14px rgba(51,61,83,.35)}
.cb-tabs button.sel::after{content:'✓ 選択中';color:#DCEBE6}
.cb-radio{display:flex;gap:8px}
.cb-radio button{flex:1;text-align:center;padding:11px 4px;border-radius:var(--cb-radius-sm);border:1.5px solid var(--cb-border);font-weight:700;font-size:14px;background:var(--cb-card)}
.cb-radio button.sel{border-color:var(--cb-primary);background:var(--cb-primary-light);color:var(--cb-primary-dark)}
.cb-hint{font-size:11.5px;color:var(--cb-muted) !important;margin-top:4px}
.cb-btn{display:flex;width:100%;align-items:center;justify-content:center;gap:6px;padding:14px;border-radius:var(--cb-radius);font-weight:700;font-size:15px;border:none;margin-top:8px}
.cb-btn.pri{background:var(--cb-gold-grad);color:#fff;text-shadow:0 1px 2px rgba(90,70,30,.45);box-shadow:0 4px 12px rgba(150,122,77,.4)}
.cb-btn.pri:disabled{opacity:.4;cursor:default}
.cb-btn.ghost{background:none;color:var(--cb-muted);font-size:13px;font-weight:600}
.cb-btn.line{background:#06C755;color:#fff}
.cb-btn.danger{background:#FDECEA;color:var(--cb-danger)}
.cb-confirm{width:100%;font-size:14px;border-collapse:collapse}
.cb-confirm th{text-align:left;color:var(--cb-muted);font-size:12px;font-weight:600;padding:9px 10px 9px 0;white-space:nowrap;vertical-align:top;width:82px;border:none;border-bottom:1px solid var(--cb-border)}
.cb-confirm td{padding:9px 0;border:none;border-bottom:1px solid var(--cb-border);font-weight:600}
.cb-notice{background:var(--cb-accent-light);border-radius:var(--cb-radius-sm);font-size:12px;color:#6E5741;padding:11px 13px;margin:14px 0}
.cb-done{text-align:center;padding:28px 0 10px}
.cb-done .ck{width:64px;height:64px;border-radius:50%;background:var(--cb-primary-light);color:var(--cb-primary);font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.cb-done h2{font-size:20px;color:var(--cb-primary-dark);letter-spacing:.06em;margin:0}
.cb-done p{font-size:13px;color:var(--cb-muted) !important;margin-top:4px}
.cb-code{text-align:center;font-size:12px;color:var(--cb-muted);background:var(--cb-card);border:1px dashed var(--cb-border);border-radius:var(--cb-radius-sm);padding:10px;margin:16px 0}
.cb-code b{font-size:18px;color:var(--cb-text);letter-spacing:.12em;display:block}
.cb-line-box{border-color:#06C755}
.cb-line-box .t{font-weight:700;font-size:14px;margin-bottom:3px}
.cb-line-box p{font-size:12px;color:var(--cb-muted) !important;margin:0 0 10px}
.cb-linked{border-color:#06C755;background:#F0FBF4;font-size:13.5px}
.cb-linked b{color:#2F7D3B}
.cb-error{background:#FDECEA;color:var(--cb-danger);border-radius:var(--cb-radius-sm);font-size:13px;padding:11px 13px;margin:10px 0}
.cb-stars{display:flex;gap:6px}
.cb-stars button{font-size:34px;line-height:1;color:#D9D4CC;padding:2px 4px;transition:color .12s}
.cb-stars button.on{color:#F5B301}
.cb-chip-st{display:inline-block;padding:3px 12px;border-radius:14px;font-size:12px;font-weight:700}
.cb-chip-st.reserved{background:var(--cb-primary-light);color:var(--cb-primary-dark)}
.cb-chip-st.cancelled{background:#F5E9E8;color:var(--cb-danger)}
.cb-chip-st.other{background:#EEE;color:#666}
@media(max-width:400px){.cb-slots{grid-template-columns:repeat(3,1fr)}}

/* 選択内容のパンくず */
.cb-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;background:var(--cb-card);border:1px solid var(--cb-border);
border-radius:var(--cb-radius-sm);padding:8px 12px;margin:10px 0 4px;font-size:12px;font-weight:600;color:var(--cb-primary-dark)}
.cb-crumbs .cr-sep{color:var(--cb-muted);margin:0 2px;font-weight:400}
/* 姓名2分割 */
.cb-namerow{display:flex;gap:8px}
.cb-namerow input{flex:1}
/* 同意ブロック */
.cb-consent{background:var(--cb-bg);border:1px solid var(--cb-border);border-radius:var(--cb-radius-sm);padding:12px 14px;margin-top:14px;font-size:13.5px}
.cb-consent input[type=checkbox]{width:auto;margin-right:6px}
.cb-consent a{color:var(--cb-primary-dark)}

/* サムネイル(未設定のメニュー・担当では要素ごと出ないので余白も生まれない) */
.cb-menu-card.has-img{display:grid;grid-template-columns:64px 1fr;column-gap:12px;align-items:start}
.cb-menu-card.has-img .mc-thumb{grid-row:1 / span 3}
.cb-menu-card .mc-thumb img{width:64px;height:64px;object-fit:cover;border-radius:10px;display:block;background:var(--cb-primary-light)}
.cb-doc .av.img{padding:0;overflow:hidden;background:none}
.cb-doc .av.img img{width:48px;height:48px;object-fit:cover;border-radius:50%;display:block}
.cb-vcard .vc-icon.img{background:none;overflow:hidden;padding:0}
.cb-vcard .vc-icon.img img{width:46px;height:46px;object-fit:cover;border-radius:50%;display:block}

/* トップのヒーローバナー */
.cb-hero{background:linear-gradient(135deg,var(--cb-primary) 0%,var(--cb-primary-dark) 100%);
color:#fff;border-radius:var(--cb-radius);padding:26px 22px 20px;margin:4px 0 14px;
box-shadow:0 6px 20px rgba(31,42,68,.3);text-align:center;position:relative;overflow:hidden}
.cb-hero::after{content:'';position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;
background:rgba(255,255,255,.07)}
.cb-hero::before{content:'';position:absolute;left:-30px;bottom:-50px;width:120px;height:120px;border-radius:50%;
background:rgba(232,217,168,.16)}
/* ヒーロー内の文字色は !important 必須: テーマの p/span 色指定(高詳細度)に負ける */
.cb-hero-clinic{font-size:12px;letter-spacing:.18em;color:#C9D2E3 !important;margin:0 0 2px;font-weight:600}
/* color必須: テーマ側の h2 装飾(色・下線・背景)に上書きされる */
.cb-app .cb-hero h2{font-family:"Hiragino Mincho ProN","Yu Mincho",serif;font-size:26px;letter-spacing:.3em;margin:0;text-indent:.3em;color:#fff !important;background:none;border:0;padding:0}
.cb-hero-sub{font-size:12px;color:#D8DEEB !important;margin:6px 0 12px}
/* 言語切替: .cb-app button のリセット(詳細度0,1,1)に負けないよう .cb-app を付ける(v0.65.3で判明。それまで枠線が効いていなかった) */
.cb-app .cb-langbar{text-align:right;margin:8px 0 4px}
.cb-app .cb-langbtn{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1.5px solid #333D53;border-radius:18px;color:#333D53;font-size:14px;font-weight:600;padding:6px 14px;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.10)}
.cb-app .cb-langbtn:hover{background:#333D53;color:#fff}
.cb-app .cb-langbtn::before{content:'\1F310';font-size:15px;line-height:1}
.cb-hero-badges{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.cb-hero-badges span{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);
border-radius:20px;padding:4px 12px;font-size:11.5px;font-weight:700;color:#fff !important}
/* 初診/再診の選択カード */
.cb-app .cb-vcard{width:100%;display:flex;align-items:center;gap:14px;text-align:left;
background:var(--cb-card);border:2px solid #C4CDDC;border-radius:14px;
padding:16px;margin-bottom:10px;box-shadow:var(--cb-shadow);transition:all .15s;cursor:pointer}
.cb-vcard .vc-icon{flex:none;width:46px;height:46px;border-radius:50%;
background:var(--cb-primary-light);color:var(--cb-primary-dark);
display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;
font-family:"Hiragino Mincho ProN",serif}
.cb-vcard .vc-icon.r{background:var(--cb-accent-light);color:#8A6A4F}
.cb-vcard .vc-body{flex:1}
.cb-vcard .vc-body b{font-size:15.5px;display:block;color:var(--cb-primary-dark)}
.cb-vcard .vc-body small{font-size:12px;color:var(--cb-muted);line-height:1.55;display:block;margin-top:3px}
.cb-vcard .vc-check{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--cb-border);
display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:transparent;transition:all .15s}
.cb-app .cb-vcard.sel{border-color:var(--cb-primary);background:#F2F5FA;box-shadow:0 4px 14px rgba(51,61,83,.2)}
.cb-vcard.sel .vc-check{background:var(--cb-primary);border-color:var(--cb-primary);color:#fff}

/* カレンダー追加ボタン */
.cb-calbtns{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}
.cb-calbtns a{flex:1;min-width:150px;text-align:center;font-size:12.5px;font-weight:700;
padding:10px 8px;border-radius:var(--cb-radius-sm);border:1.5px solid var(--cb-border);
background:var(--cb-card);color:var(--cb-primary-dark);text-decoration:none}
.cb-calbtns a:active{background:var(--cb-primary-light)}

/* マイページ */
.cb-app .cb-mylink{width:100%;text-align:center;font-weight:700;font-size:13.5px;padding:11px;margin:0 0 6px;
border:1.5px solid #C4CDDC;border-radius:var(--cb-radius-sm);background:var(--cb-card);color:var(--cb-primary-dark)}
.cb-mycard .my-date{font-size:17px;font-weight:700;color:var(--cb-primary-dark)}
.cb-mycard .my-menu{font-size:13.5px;margin:3px 0 8px}
.cb-mycard .cb-mng{font-size:12.5px;font-weight:700;padding:8px 14px;border-radius:8px;
border:1.5px solid var(--cb-border);background:var(--cb-bg);color:var(--cb-primary-dark)}
.cb-mycourse .my-bar{height:9px;background:var(--cb-border);border-radius:5px;overflow:hidden;margin-top:6px}
.cb-mycourse .my-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cb-primary),#5A6B8C)}
.cb-mycourse.done .my-bar i{background:#4C9A52}
.my-remain{font-size:13.5px;font-weight:700;margin-top:10px;padding:9px 12px;border-radius:8px}
.my-remain.ok{background:#F2F8F2;color:#2F6B34}
.my-remain.ng{background:#FDF3F2;color:var(--cb-danger)}
.my-score{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:12.5px}
.my-score b{font-size:17px;color:var(--cb-primary-dark)}
.my-scorebar{flex:1;height:8px;background:var(--cb-border);border-radius:4px;overflow:hidden}
.my-scorebar i{display:block;height:100%;background:var(--cb-accent);border-radius:4px}

/* 障害・メンテ時のフォールバック */
.cb-fatal{text-align:center;padding:30px 10px}
.cb-fatal-icon{font-size:40px;margin-bottom:10px}
.cb-fatal h2{font-size:18px;color:var(--cb-primary-dark);margin:0 0 10px;line-height:1.5}
.cb-fatal p{font-size:13px;color:var(--cb-muted) !important;margin-bottom:18px;line-height:1.8}
/* JS未起動時のフォールバック(3秒後に自動表示) */
.cb-boot-fallback{opacity:0;animation:cbBootShow .5s ease 3s forwards;text-align:center;padding:20px 10px}
.cb-boot-fallback a{display:block;margin:8px auto;max-width:340px;padding:13px;border-radius:12px;font-weight:700;text-decoration:none}
.cb-boot-fallback .l1{background:#06C755;color:#fff}
.cb-boot-fallback .l2{background:var(--cb-primary);color:#fff}
@keyframes cbBootShow{to{opacity:1}}
