/* ECLMS 生徒フロント — モダン・シンプル・モバイルファースト */
.eclms-card{
  max-width: 560px;
  margin: 16px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7e9ee;
  border-radius: 14px;
  box-shadow: 0 1px 3px rgba(16,24,40,.06);
  font-family: -apple-system, "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;
  color: #1f2430;
  box-sizing: border-box;
}
.eclms-card h2{ font-size: 20px; margin: 0 0 12px; }
.eclms-card h3{ font-size: 16px; margin: 24px 0 8px; }
.eclms-error{ color:#c0392b; background:#fdecea; padding:8px 12px; border-radius:8px; }

/* LINEログインボタン */
.eclms-line-btn{
  display:inline-block; margin-top:8px; padding:12px 20px;
  background:#06c755; color:#fff !important; text-decoration:none;
  border-radius:10px; font-weight:700; min-width:200px; text-align:center;
}
.eclms-line-btn:hover{ background:#05b34c; }

/* 汎用ボタン */
.eclms-btn{
  display:inline-block; padding:12px 20px; border:0; border-radius:10px;
  background:#2563eb; color:#fff; font-weight:700; cursor:pointer; text-decoration:none;
}
.eclms-btn:hover{ background:#1d4ed8; }
.eclms-btn-disabled{ background:#aab2c5; cursor:not-allowed; }

/* 登録フォーム */
.eclms-register label{ display:block; margin:14px 0; font-size:14px; color:#3a4256; }
.eclms-register input[type=text], .eclms-register select{
  width:100%; padding:10px 12px; margin-top:6px; box-sizing:border-box;
  border:1px solid #ccd2de; border-radius:8px; font-size:16px;
}
.eclms-register .eclms-hint{
  display:block; margin-top:6px; font-size:13px; color:#b9560a; line-height:1.5;
}
.eclms-register .eclms-hint strong{ color:#c0392b; }

/* ダッシュボードの回数テーブル */
.eclms-counts{ width:100%; border-collapse:collapse; margin:8px 0 4px; }
.eclms-counts th{ text-align:left; color:#5b6478; font-weight:500; padding:10px 4px; border-bottom:1px solid #eef0f4; font-size:14px; }
.eclms-counts td{ text-align:right; padding:10px 4px; border-bottom:1px solid #eef0f4; font-size:16px; }
.eclms-counts strong{ font-size:20px; color:#2563eb; }
.eclms-course{ color:#5b6478; font-size:14px; }
.eclms-next{ margin-top:12px; font-size:15px; }

/* 履歴 */
.eclms-history{ width:100%; border-collapse:collapse; font-size:14px; }
.eclms-history th, .eclms-history td{ padding:8px 4px; border-bottom:1px solid #eef0f4; text-align:left; }

@media (max-width:480px){
  .eclms-card{ margin:8px; padding:18px; border-radius:12px; }
}

/* ===== 予約カレンダー ===== */
#eclms-booking-app{ max-width:560px; margin:16px auto; font-family:-apple-system,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif; color:#1f2430; }
.eclms-me{ text-align:right; color:#5b6478; margin-bottom:8px; }
.eclms-me strong{ color:#2563eb; }
.eclms-msg{ padding:12px 14px; border-radius:10px; margin:8px 0; font-size:14px; }
.eclms-msg.ok{ background:#e7f7ee; color:#0a7a3f; }
.eclms-msg.err{ background:#fdecea; color:#c0392b; }

.eclms-cal{ background:#fff; border:1px solid #e7e9ee; border-radius:14px; padding:12px; }
.eclms-cal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.eclms-cal-title{ font-weight:700; font-size:17px; }
.eclms-cal-nav{ border:1px solid #d7dbe4; background:#fff; border-radius:8px; width:36px; height:36px; font-size:18px; cursor:pointer; }
.eclms-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.eclms-cal-wd{ text-align:center; font-size:12px; color:#7a8294; padding:4px 0; }
.eclms-cal-wd.sun{ color:#d23; } .eclms-cal-wd.sat{ color:#2563eb; }
.eclms-cal-cell{ min-height:48px; border-radius:10px; padding:4px; cursor:pointer; border:1px solid transparent; background:#f7f8fb; text-align:center; }
.eclms-cal-cell.empty{ background:transparent; cursor:default; }
.eclms-cal-cell:not(.empty):not(.disabled):hover{ border-color:#2563eb; }
.eclms-cal-cell.disabled{ color:#b8bfce; background:#f2f3f6; cursor:not-allowed; }
.eclms-cal-cell.selected{ border-color:#2563eb; background:#eef3ff; }
.eclms-cal-cell.holiday{ background:#fdecec; }
.eclms-cal-cell.sun .eclms-cal-day{ color:#d23; } .eclms-cal-cell.sat .eclms-cal-day{ color:#2563eb; }
/* 過去日（予約不可）は曜日色・祝日色より灰色を優先して全体グレーに */
.eclms-cal-cell.disabled.sun .eclms-cal-day,
.eclms-cal-cell.disabled.sat .eclms-cal-day,
.eclms-cal-cell.disabled .eclms-cal-day{ color:#b8bfce; }
.eclms-cal-cell.disabled.holiday{ background:#f2f3f6; }
.eclms-cal-cell.disabled .eclms-cal-hname{ color:#b8bfce; }
.eclms-cal-day{ font-size:15px; font-weight:600; }
.eclms-cal-hname{ font-size:9px; color:#c0392b; line-height:1.1; margin-top:2px; }

.eclms-panel{ margin-top:14px; }
.eclms-panel h4{ margin:8px 0; font-size:15px; }
.eclms-slots{ display:flex; flex-wrap:wrap; gap:8px; }
.eclms-slot{ padding:10px 14px; border:1px solid #2563eb; color:#2563eb; background:#fff; border-radius:10px; font-size:15px; cursor:pointer; }
.eclms-slot:hover{ background:#eaf0ff; }
.eclms-slot.selected{ background:#2563eb; color:#fff; border-color:#2563eb; }
.eclms-slot:disabled{ opacity:.5; cursor:wait; }
.eclms-muted{ color:#7a8294; }

/* 予約確定エリア（2段階予約） */
.eclms-confirm{ margin-top:18px; padding-top:14px; border-top:1px solid #eef0f4; }
.eclms-confirm-info{ margin:0 0 10px; color:#3a4256; font-size:15px; }
.eclms-confirm .eclms-btn:disabled{ background:#aab2c5; cursor:not-allowed; }

.eclms-bklist{ margin-top:18px; }
.eclms-bklist h4{ font-size:15px; margin:8px 0; }
.eclms-bk-row{ display:flex; align-items:center; justify-content:space-between; padding:10px 0; border-bottom:1px solid #eef0f4; }
.eclms-cancel{ border:1px solid #d7dbe4; background:#fff; border-radius:8px; padding:6px 12px; cursor:pointer; color:#c0392b; }
.eclms-bk-locked{ color:#7a8294; font-size:13px; }

/* ===== 管理: 予約可能日時カレンダー ===== */
#eclms-admin-availability{ max-width:900px; }
.eclms-av-wrap{ display:flex; gap:20px; flex-wrap:wrap; align-items:flex-start; }
.eclms-av-wrap .eclms-cal{ flex:1 1 420px; max-width:520px; }
.eclms-av-wrap .eclms-panel{ flex:1 1 280px; background:#fff; border:1px solid #e7e9ee; border-radius:14px; padding:16px; margin-top:0; }
.eclms-cal-cell.has-slots{ background:#eef3ff; }
.eclms-cal-badge{ font-size:10px; color:#2563eb; margin-top:2px; font-weight:700; }
.eclms-av-list{ margin:8px 0; }
.eclms-av-row{ display:flex; align-items:center; justify-content:space-between; padding:8px 0; border-bottom:1px solid #eef0f4; font-size:15px; }
.eclms-av-form{ margin-top:14px; padding-top:12px; border-top:1px solid #eef0f4; }
.eclms-av-form input[type=time]{ padding:6px 8px; }
