.booking-form-wrapper,
.booking-form-wrapper * {
  box-sizing: border-box;
}
.booking-form-wrapper { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; max-width: 1000px; width: 100%; margin: 2rem auto; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); overflow: hidden; }
.booking-form-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas: "main sidebar";
}
.booking-form-main {
  grid-area: main;
  padding: 2.5rem;
  background-color: #fff;
  border-right: 1px solid #e0e0e0;
  min-width: 0;
}
.booking-form-sidebar {
  grid-area: sidebar;
  background-color: #f7f9fc;
  padding: 2.5rem;
}
@media (max-width: 900px) {
  .booking-form-container {
    grid-template-columns: 1fr !important;
    grid-template-areas:
      "main"
      "sidebar" !important;
  }
  .booking-form-main {
    border-right: none !important;
    border-bottom: 1px solid #e0e0e0 !important;
  }
  .booking-form-main, .booking-form-sidebar {
    width: auto;
    padding: 1.5rem !important;
  }
}
.form-section { margin-bottom: 2.5rem; }
.form-section-title { font-size: 1.25rem; font-weight: bold; color: #333; margin-bottom: 1.5rem; padding-bottom: 0.5rem; border-bottom: 2px solid #00b8d4; display: flex; align-items: center; }
.form-section-title::before { content: ''; display: inline-block; width: 24px; height: 24px; margin-right: 0.75rem; background-size: contain; background-repeat: no-repeat; background-position: center; }
.title-activity::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M22 13h-4v4h-2v-4h-4v-2h4V7h2v4h4v2zm-8-9v2h-2V4H8v2H6V4H4v16h6v-2h2v2h2v-2h2v-2h-2v-2h2v-2h-2v-2h2V4h-4z"/></svg>');}
.title-course::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"/></svg>'); }
.title-calendar::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"/></svg>'); }
.title-time::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z"/></svg>'); }
.title-participants::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>'); }
.title-summary::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M14 17H4v2h10v-2zm6-8H4v2h16V9zM4 15h16v-2H4v2zM4 5v2h16V5H4z"/></svg>'); }
.title-customer::before { background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2300b8d4"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>'); }
.activity-selection-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 1rem; }
.activity-radio-wrap { display: flex; } /* Flex container */
.activity-selection-grid .radio-label { display: block; padding: 1rem; border: 1px solid #ccc; border-radius: 4px; text-align: center; cursor: pointer; transition: all 0.2s; font-weight: 500; width: 100%; height: 100%; } /* Ensure label fills wrapper */
.activity-selection-grid input[type="radio"]:checked + .radio-label { background-color: #00b8d4; color: #fff; border-color: #00b8d4; font-weight: bold; }
.activity-selection-grid input[type="radio"] { display: none; }
.course-selection-container .course-radio { display: none; }
.course-selection-container .course-label { display: block; padding: 1.5rem; border: 1px solid #ddd; border-radius: 8px; margin-bottom: 1rem; cursor: pointer; transition: all 0.2s ease-in-out; }
.course-radio:checked + .course-label { border-color: #00b8d4; border-width: 2px; box-shadow: 0 4px 15px rgba(0,184,212,0.2); background-color: #f0faff; }
.course-name { font-size: 1.1rem; font-weight: bold; color: #333; margin-bottom: 0.5rem; }
.course-notes { font-size: 0.9rem; color: #555; margin: 1rem 0; padding-left: 1em; border-left: 3px solid #eee; }
.course-details { margin-top: 1rem; border-top: 1px solid #eee; padding-top: 1rem; }
.course-price-item { display: flex; justify-content: space-between; align-items: baseline; }
.course-price-item + .course-price-item { margin-top: 0.5rem; }
.course-price { font-size: 1.2rem; font-weight: bold; color: #d32f2f; }
.course-price-note { font-size: 0.9rem; color: #555; }
.calendar-container { text-align: center; }
.calendar-table { width: 100%; border-collapse: collapse; }
.calendar-table td.is-blocked::after { content: '催行中止'; font-size: 9px; color: #fff; background: #e57373; padding: 1px 4px; border-radius: 3px; position: absolute; bottom: 2px; left: 50%; transform: translateX(-50%); width: 90%; line-height: 1.2; }
.calendar-table td { border: 1px solid #eee; cursor: pointer; transition: background-color 0.2s; position: relative; padding: 0.5rem;}
.calendar-table td.is-disabled { color: #ccc; cursor: not-allowed; background-color: #f9f9f9; }
.calendar-table td.is-selected { background-color: #00b8d4; color: #fff; font-weight: bold; }
.selection-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 0.75rem; }
.selection-grid .radio-label { display: block; padding: 0.75rem; border: 1px solid #ccc; border-radius: 4px; text-align: center; cursor: pointer; transition: all 0.2s; }
.selection-grid .radio-label[disabled] { background-color: #eee; color: #aaa; cursor: not-allowed; }
.selection-grid .radio-label .full-text { font-size: 0.8em; color: #d32f2f; display: block;}
.selection-grid input[type="radio"]:checked + .radio-label { background-color: #00b8d4; color: #fff; border-color: #00b8d4; font-weight: bold; }
.selection-grid input[type="radio"] { display: none; }
.participants-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.participants-row input[type="number"] { width: 60px; text-align: center; border: 1px solid #ccc; border-radius: 4px; padding: 0.5rem; }
.summary-box { background-color: #fff; padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); }
.summary-item { display: flex; justify-content: space-between; padding: 0.75rem 0; font-size: 0.95rem; }
.summary-item + .summary-item { border-top: 1px dashed #ddd; }
.summary-total { margin-top: 1rem; padding-top: 1rem; border-top: 2px solid #333; }
.summary-total .value { font-size: 1.5rem; font-weight: bold; color: #d32f2f; }
.cancellation-policy { font-size: 0.8em; color: #777; margin-top: 1.5rem; padding: 1rem; background: #f9f9f9; border-radius: 4px; }
.form-group { margin-bottom: 1.25rem; position: relative; }
.form-group .required { background-color: #d32f2f; color: white; padding: 0.1em 0.4em; border-radius: 3px; font-size: 0.75em; margin-left: 0.5rem; }
.form-group input, .form-group textarea { width: 100%; padding: 0.8rem; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; }
.form-error-message { color: #d32f2f; font-size: 0.9em; margin-top: 0.5rem; display: none; }
.submit-button { display: block; width: 100%; background-color: #f57c00; color: #fff; font-size: 1.2rem; font-weight: bold; text-align: center; padding: 1rem; border: none; border-radius: 8px; cursor: pointer; transition: background-color 0.2s; }
.submit-button:disabled { background-color: #ccc; cursor: not-allowed; }
