/* Big Bamb 共通スタイル（単一CSSファイル） */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  color: #1d1d1f;
  background-color: #f5f5f7;
  line-height: 1.6;
}

a {
  color: #0f62fe;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

.admin-body {
  min-height: 100vh;
  display: flex;
  align-items: stretch;
  justify-content: center;
}

.admin-shell {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  padding: 32px 16px;
}

.admin-header,
.admin-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 0;
}

.admin-logo {
  font-weight: 600;
  font-size: 20px;
}

.admin-main {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px 0;
}

.admin-login-wrapper {
  width: 100%;
  display: flex;
  justify-content: center;
}

.admin-login-card {
  width: 100%;
  max-width: 400px;
  background-color: #ffffff;
  border-radius: 16px;
  padding: 32px;
  box-shadow: 0 18px 45px rgba(0, 0, 0, 0.08);
}

.admin-login-title {
  margin: 0 0 24px;
  font-size: 24px;
}

.admin-alert-error {
  margin-bottom: 16px;
  padding: 12px 16px;
  background-color: #ffe5e5;
  color: #c11818;
  border-radius: 12px;
  font-size: 14px;
}

.admin-alert-success {
  margin-bottom: 16px;
  padding: 12px 16px;
  background-color: #e5f5e8;
  color: #1b7f3a;
  border-radius: 12px;
  font-size: 14px;
}

.form-group {
  margin-bottom: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.form-group label {
  font-size: 14px;
}

.form-group input {
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid #d2d2d7;
  font-size: 14px;
  outline: none;
  background-color: #f9f9fb;
}

.form-group input:focus {
  border-color: #0f62fe;
  box-shadow: 0 0 0 1px rgba(15, 98, 254, 0.2);
  background-color: #ffffff;
}

.form-actions {
  margin-top: 24px;
  display: flex;
  justify-content: flex-end;
}

.btn-primary {
  min-width: 120px;
  padding: 10px 16px;
  border-radius: 999px;
  border: none;
  background: linear-gradient(135deg, #0f62fe, #2f6bff);
  color: #ffffff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(15, 98, 254, 0.35);
}

.btn-primary:hover {
  opacity: 0.92;
}

.btn-primary:active {
  transform: translateY(1px);
  box-shadow: 0 6px 18px rgba(15, 98, 254, 0.35);
}

.admin-dashboard {
  width: 100%;
  max-width: 800px;
  background-color: #ffffff;
  border-radius: 16px;
  padding: 24px 32px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.06);
}

.admin-dashboard-title {
  margin-top: 0;
  margin-bottom: 16px;
  font-size: 22px;
}

.table-responsive {
  width: 100%;
  overflow-x: auto;
  margin-top: 16px;
}

.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.table th,
.table td {
  padding: 8px 12px;
  border-bottom: 1px solid #e5e5ea;
  text-align: left;
}

.table th {
  font-weight: 600;
  background-color: #f5f5f7;
}

.pagination {
  margin-top: 16px;
  display: flex;
  gap: 8px;
}

.pagination .page {
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid #d2d2d7;
  font-size: 13px;
}

.pagination .page.current {
  background-color: #0f62fe;
  color: #ffffff;
  border-color: #0f62fe;
}

.user-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  margin-top: 16px;
}

.user-detail-grid dl {
  margin: 0;
}

.user-detail-grid dt {
  font-size: 13px;
  color: #555;
  margin-top: 8px;
}

.user-detail-grid dd {
  margin: 0;
  font-size: 14px;
}

.page-links {
  margin-top: 24px;
  font-size: 14px;
}

.clickable-row {
  cursor: pointer;
}

 .stock-chart-wrapper {
  margin-top: 24px;
}

/* =========================================================
   フロント共通レイアウト（ヘッダー / メニュー / フッター）
   ========================================================= */

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background-color: #ffffff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
}

.logo-link {
  display: inline-flex;
  align-items: center;
}

.logo {
  display: block;
  height: 44px;
  width: auto;
  max-width: 200px;
  object-fit: contain;
}

.mypage-icon {
  width: 40px;
  height: 40px;
  border-radius: 999px;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #f5f5f7, #ffffff);
}

.mypage-icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 999px;
}

/* スライドメニュー */
.slide-menu {
  position: fixed;
  top: 0;
  right: -280px;
  width: 280px;
  height: 100vh;
  background-color: #ffffff;
  box-shadow: -4px 0 16px rgba(0, 0, 0, 0.08);
  padding: 24px 16px;
  display: flex;
  flex-direction: column;
  gap: 24px;
  transition: right 0.25s ease-out;
  z-index: 110;
}

.slide-menu.open {
  right: 0;
}

.slide-profile {
  display: flex;
  align-items: center;
  gap: 16px;
}

.slide-mypage-icon {
  width: 48px;
  height: 48px;
  border-radius: 999px;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.06);
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #f5f5f7, #ffffff);
  cursor: pointer;
}

.slide-mypage-icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 999px;
}

.slide-username {
  font-size: 15px;
  font-weight: 600;
}

.slide-menu nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.slide-menu nav li a {
  display: block;
  padding: 8px 12px;
  border-radius: 12px;
  color: #1d1d1f;
  text-decoration: none;
}

.slide-menu nav li a:hover {
  background-color: #f5f5f7;
}

/* オーバーレイ */
.overlay {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.32);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease-out;
  z-index: 105;
}

.overlay.show {
  opacity: 1;
  pointer-events: auto;
}

/* メインコンテンツ */
main {
  max-width: 960px;
  margin: 0 auto;
  padding: 24px 16px 40px;
}

@media (min-width: 768px) {
  main {
    padding: 32px 24px 48px;
  }
}

/* ログイン案内（トップ用） */
.login-prompt-simple {
  margin: 24px auto 0;
  max-width: 480px;
  padding: 24px 16px;
  background-color: #ffffff;
  border-radius: 16px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.06);
  text-align: center;
}

.line-login-button-simple {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: 999px;
  background-color: #06c755;
  color: #ffffff;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
}

.line-login-button-simple svg {
  display: block;
}

.line-login-button-simple span {
  line-height: 1;
}

/* フッター */
.site-footer {
  padding: 16px 16px 24px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  text-align: center;
  font-size: 13px;
  color: #555555;
}

.footer-menu {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
  margin-bottom: 8px;
}

.footer-menu a {
  font-size: 13px;
}

.footer-copy a {
  color: inherit;
}

/* ----- テンプレ：インライン廃止用（単一CSSへ集約） ----- */

.login-line-btn-wrap {
  text-align: center;
}

.landing-main {
  padding: 24px;
  max-width: 36rem;
  margin: 0 auto;
}

.alert-error {
  color: #b00020;
  line-height: 1.6;
}

body.page-line-friend {
  padding: 32px;
  max-width: 32rem;
  margin: 0 auto;
}

/* =========================================================
   Google風トップ（ダイエットレシピ検索）
   ========================================================= */

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

body.page-google-home {
  background-color: #ffffff;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

body.page-google-home.has-results .google-hero {
  padding-top: 24px;
  padding-bottom: 16px;
}

body.page-google-home.has-results .google-brand {
  display: none;
}

body.page-google-home.has-results .google-main {
  justify-content: flex-start;
}

.google-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 24px;
  min-height: 60px;
}

.google-header-logo {
  text-decoration: none;
}

.google-logo-text {
  font-size: 22px;
  font-weight: 600;
  color: #4285f4;
  letter-spacing: -0.5px;
}

.google-header-actions {
  display: flex;
  align-items: center;
  gap: 16px;
}

.google-header-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 999px;
  background-color: #06c755;
  color: #ffffff;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}

.google-header-link:hover {
  text-decoration: none;
  opacity: 0.92;
}

.google-header-menu {
  width: 40px;
  height: 40px;
  padding: 0;
  border: none;
  border-radius: 999px;
  overflow: hidden;
  cursor: pointer;
  background: transparent;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.google-header-menu img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.google-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 16px 48px;
  max-width: 100%;
  margin: 0;
}

.google-hero {
  width: 100%;
  max-width: 584px;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 48px 0 32px;
}

.google-brand {
  text-align: center;
  margin-bottom: 32px;
}

.google-logo-main {
  margin: 0 0 8px;
  font-size: clamp(48px, 12vw, 72px);
  font-weight: 700;
  letter-spacing: -2px;
  line-height: 1.1;
  background: linear-gradient(90deg, #4285f4 0%, #34a853 50%, #fbbc05 75%, #ea4335 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.google-tagline {
  margin: 0;
  font-size: 16px;
  color: #70757a;
}

.google-search-form {
  width: 100%;
}

.google-search-box {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 20px;
  border-radius: 999px;
  border: 1px solid #dfe1e5;
  background-color: #ffffff;
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

.google-search-box:hover,
.google-search-box:focus-within {
  border-color: transparent;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

.google-search-icon {
  color: #9aa0a6;
  font-size: 16px;
  flex-shrink: 0;
}

.google-search-input {
  flex: 1;
  border: none;
  outline: none;
  font-size: 16px;
  background: transparent;
  color: #202124;
  min-width: 0;
}

.google-search-input::placeholder {
  color: #9aa0a6;
}

.google-search-clear {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: #70757a;
  cursor: pointer;
}

.google-search-clear:hover {
  background-color: #f1f3f4;
}

/* 食材の写真（AI でレシピを作る） */
.google-search-photo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  border-radius: 999px;
  background-color: #fff4e8;
  color: #e8711a;
  font-size: 18px;
  cursor: pointer;
}

.google-search-photo:hover {
  background-color: #ffe6cc;
}

.recipe-photo-preview {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 16px;
  padding: 12px;
  border-radius: 16px;
  background-color: #fff4e8;
  text-align: left;
}

.recipe-photo-preview[hidden] {
  display: none;
}

.recipe-photo-thumb {
  width: 72px;
  height: 72px;
  object-fit: cover;
  border-radius: 12px;
  flex-shrink: 0;
}

.recipe-photo-text p {
  margin: 0 0 8px;
  font-size: 13px;
  line-height: 1.6;
  color: #3c4043;
}

.recipe-photo-remove {
  min-height: 40px;
  padding: 0 16px;
  font-size: 13px;
}

.recipe-detected {
  margin: 0 0 12px;
  padding: 8px 12px;
  border-radius: 12px;
  background-color: #fff4e8;
  font-size: 13px;
  line-height: 1.6;
  color: #8a4a12;
}

.recipe-detected[hidden] {
  display: none;
}

.google-search-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 24px;
}

.google-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 24px;
  border: 1px solid transparent;
  border-radius: 4px;
  background-color: #f8f9fa;
  color: #3c4043;
  font-size: 14px;
  cursor: pointer;
  transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.google-btn:hover {
  background-color: #f1f3f4;
  border-color: #dadce0;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

.google-btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.google-btn-secondary {
  background-color: #ffffff;
  border-color: #dadce0;
}

.google-results {
  width: 100%;
  max-width: 652px;
  margin-top: 8px;
}

.google-results-loading {
  padding: 24px 0;
}

.recipe-skeleton {
  height: 16px;
  margin-bottom: 12px;
  border-radius: 8px;
  background: linear-gradient(90deg, #f1f3f4 25%, #e8eaed 50%, #f1f3f4 75%);
  background-size: 200% 100%;
  animation: recipe-shimmer 1.2s infinite;
}

.recipe-skeleton-title {
  height: 28px;
  width: 60%;
  margin-bottom: 24px;
}

.recipe-skeleton-line.short {
  width: 40%;
}

@keyframes recipe-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.google-results-error {
  padding: 16px 20px;
  border-radius: 8px;
  background-color: #fce8e6;
  color: #c5221f;
  font-size: 14px;
  line-height: 1.6;
}

.recipe-card {
  padding: 8px 0 32px;
}

.recipe-card-header {
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid #ebebeb;
}

.recipe-card-title {
  margin: 0 0 8px;
  font-size: 24px;
  font-weight: 400;
  color: #1a0dab;
  line-height: 1.3;
}

.recipe-card-desc {
  margin: 0 0 12px;
  font-size: 14px;
  color: #4d5156;
  line-height: 1.6;
}

.recipe-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.recipe-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: #70757a;
}

.recipe-meta-item::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 4px;
  border-radius: 999px;
  background-color: #70757a;
}

.recipe-meta-item:first-child::before {
  display: none;
}

.recipe-section {
  margin-bottom: 24px;
}

.recipe-section h3 {
  margin: 0 0 12px;
  font-size: 16px;
  font-weight: 600;
  color: #202124;
  display: flex;
  align-items: center;
  gap: 8px;
}

.recipe-section h3 i {
  color: #34a853;
  font-size: 14px;
}

.recipe-list,
.recipe-steps {
  margin: 0;
  padding-left: 24px;
  color: #4d5156;
  font-size: 14px;
  line-height: 1.8;
}

.recipe-steps li {
  margin-bottom: 8px;
}

/* 材料は「・◯◯◯」の形で出す（LINE 改造 No.16） */
.recipe-list {
  list-style: none;
  padding-left: 0;
}

.recipe-list li::before,
.rp-ingredients li::before {
  content: "・";
}

.recipe-tips p {
  margin: 0;
  padding: 16px;
  border-radius: 8px;
  background-color: #f8f9fa;
  font-size: 14px;
  color: #4d5156;
  line-height: 1.7;
  white-space: pre-line;
}

.google-seo-content {
  width: 100%;
  max-width: 960px;
  margin-top: 64px;
  padding: 32px 16px;
  border-top: 1px solid #ebebeb;
}

.google-seo-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
}

@media (min-width: 768px) {
  .google-seo-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.google-seo-block h3 {
  margin: 0 0 12px;
  font-size: 16px;
  font-weight: 600;
  color: #202124;
}

.google-seo-block p {
  margin: 0;
  font-size: 14px;
  color: #70757a;
  line-height: 1.7;
}

.google-footer {
  margin-top: auto;
  padding: 16px 24px 24px;
  background-color: #f2f2f2;
}

.google-footer-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 24px;
  margin-bottom: 12px;
}

.google-footer-nav a {
  font-size: 14px;
  color: #70757a;
  text-decoration: none;
}

.google-footer-nav a:hover {
  text-decoration: underline;
}

.google-footer-copy {
  margin: 0;
  text-align: center;
  font-size: 13px;
  color: #70757a;
}

.google-footer-copy a {
  color: inherit;
}

@media (max-width: 600px) {
  .google-hero {
    padding-top: 24px;
  }

  .google-search-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .google-btn {
    width: 100%;
  }

  .google-header-link span {
    display: none;
  }
}

/* =========================================================
   AI食事相談ページ
   ========================================================= */

.advice-main,
.advice-admin-main {
  max-width: 960px;
  margin: 0 auto;
  padding: 32px 16px 48px;
}

.advice-shell,
.advice-admin-card {
  background-color: #ffffff;
  border-radius: 16px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.05);
  padding: 24px;
}

.advice-title,
.advice-admin-title {
  margin: 0;
  font-size: 28px;
  color: #1d1d1f;
}

.advice-subtitle,
.advice-admin-subtitle {
  margin: 16px 0 0;
  color: #5f6368;
  line-height: 1.7;
}

.advice-messages {
  margin-top: 24px;
  background-color: #f8f9fb;
  border-radius: 16px;
  min-height: 320px;
  max-height: 480px;
  overflow-y: auto;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.advice-bubble {
  max-width: 82%;
  padding: 12px 16px;
  border-radius: 16px;
  line-height: 1.7;
  white-space: pre-wrap;
}

.advice-bubble-ai {
  background-color: #ffffff;
  align-self: flex-start;
  color: #1d1d1f;
}

.advice-bubble-user {
  background-color: #0f62fe;
  color: #ffffff;
  align-self: flex-end;
}

.advice-form {
  margin-top: 16px;
}

.advice-input,
.advice-admin-textarea {
  width: 100%;
  border: 1px solid #d2d2d7;
  border-radius: 12px;
  background-color: #ffffff;
  color: #1d1d1f;
  font-size: 15px;
  line-height: 1.7;
  padding: 12px 16px;
  resize: vertical;
}

.advice-input {
  min-height: 104px;
}

.advice-admin-textarea {
  min-height: 140px;
}

.advice-actions {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
}

.advice-error {
  margin: 16px 0 0;
  color: #c5221f;
  background-color: #fdecea;
  border-radius: 12px;
  padding: 12px 16px;
}

.advice-admin-main {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

.advice-admin-list-title {
  margin: 0;
  font-size: 22px;
}

.advice-admin-list {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.advice-admin-item {
  background-color: #f8f9fb;
  border-radius: 12px;
  padding: 16px;
}

.advice-admin-item-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}

.advice-admin-item-head h3 {
  margin: 0;
  font-size: 16px;
}

.advice-admin-status {
  border-radius: 999px;
  font-size: 12px;
  padding: 4px 10px;
}

.advice-admin-status.is-active {
  background-color: #e6f4ea;
  color: #1e8e3e;
}

.advice-admin-status.is-inactive {
  background-color: #f1f3f4;
  color: #5f6368;
}

.advice-admin-item-content {
  margin: 12px 0;
  line-height: 1.7;
}

.advice-admin-item-meta {
  font-size: 13px;
  color: #5f6368;
  margin-bottom: 12px;
}

.advice-toggle-btn {
  border: none;
  border-radius: 999px;
  background-color: #1d1d1f;
  color: #ffffff;
  padding: 8px 16px;
  cursor: pointer;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.line-login-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background-color: #06c755;
  color: #ffffff;
  font-size: 14px;
  font-weight: 600;
  padding: 8px 16px;
  text-decoration: none;
}

.menu-main {
  max-width: 1120px;
  margin: 0 auto;
  padding: 32px 16px 56px;
}

.menu-hero {
  background-color: #ffffff;
  border-radius: 16px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.05);
  padding: 24px;
}

.menu-hero h1 {
  margin: 0;
  font-size: 32px;
}

.menu-hero p {
  margin: 16px 0 0;
  color: #5f6368;
}

.index-advice-test {
  margin-top: 24px;
}

.index-advice-test-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.index-advice-test-badge {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 999px;
  background-color: #fff4e5;
  color: #8a5a00;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.index-advice-test-title {
  font-size: 24px;
}

.index-advice-test .advice-messages {
  min-height: 240px;
  max-height: 420px;
}

.menu-grid {
  margin-top: 24px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 24px;
}

.menu-card,
.menu-empty-card {
  background-color: #ffffff;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.05);
}

.menu-card-image {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  display: block;
  background-color: #f1f3f4;
}

.menu-card-body {
  padding: 16px;
}

.menu-card-body h2 {
  margin: 0;
  font-size: 20px;
}

.menu-card-body p {
  margin: 12px 0 0;
  line-height: 1.7;
  color: #5f6368;
}

.menu-card-link {
  margin-top: 16px;
  display: inline-flex;
  font-size: 14px;
  font-weight: 600;
}

.menu-empty-card {
  padding: 24px;
}

.menu-empty-card h2 {
  margin: 0;
  font-size: 22px;
}

/* トップページ（クックパッド風） */
main.cp-top {
  padding-top: 16px;
}

.cp-search {
  background-color: #ff9933;
  border-radius: 16px;
  padding: 20px 16px;
}

.cp-search-title {
  margin: 0 0 12px;
  font-size: 20px;
  font-weight: 700;
  color: #ffffff;
}

.cp-search-form {
  position: relative;
  display: flex;
  align-items: center;
  background-color: #ffffff;
  border-radius: 999px;
  padding: 4px 4px 4px 40px;
}

.cp-search-icon {
  position: absolute;
  left: 16px;
  color: #9aa0a6;
}

.cp-search-input {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  font-size: 16px;
  padding: 8px 4px;
}

.cp-search-btn {
  border: none;
  border-radius: 999px;
  background-color: #e8711a;
  color: #ffffff;
  font-size: 14px;
  font-weight: 700;
  padding: 10px 18px;
  cursor: pointer;
}

.cp-shortcuts {
  margin-top: 16px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.cp-shortcut {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  background-color: #ffffff;
  border-radius: 12px;
  padding: 12px 4px;
  color: #1d1d1f;
  text-align: center;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
}

.cp-shortcut:hover {
  text-decoration: none;
}

.cp-shortcut-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-color: #fff1e3;
  color: #e8711a;
  font-size: 18px;
}

.cp-shortcut-label {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
}

.cp-section-head {
  margin-top: 24px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.cp-section-title {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
}

.cp-count {
  font-size: 13px;
  font-weight: 400;
  color: #5f6368;
}

.cp-section-link {
  font-size: 14px;
  color: #e8711a;
  white-space: nowrap;
}

main.cp-top .cp-grid {
  margin-top: 12px;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

/* ===== レシピの詳しいページ（recipe.php） ===== */
.rp-main {
  max-width: 760px;
  margin: 0 auto;
  padding: 16px 16px 48px;
}

.rp-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 13px;
  color: #5f6368;
  margin-bottom: 16px;
}

.rp-breadcrumb a {
  color: #e8711a;
  text-decoration: none;
}

.rp-card {
  background-color: #ffffff;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.05);
}

.rp-image {
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  max-height: 480px;
  object-fit: cover;
  display: block;
  background-color: #f1f3f4;
}

.rp-body {
  padding: 24px;
}

.rp-title {
  margin: 0;
  font-size: 26px;
  line-height: 1.4;
  color: #1d1d1f;
}

.rp-desc {
  margin: 12px 0 0;
  line-height: 1.8;
  color: #3c4043;
}

.rp-meta {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  font-size: 14px;
  color: #5f6368;
}

.rp-sub {
  margin: 32px 0 12px;
  font-size: 18px;
  color: #1d1d1f;
}

.rp-ingredients {
  list-style: none;
  margin: 0;
  padding: 0;
}

.rp-ingredients li {
  padding: 12px 4px;
  border-bottom: 1px dashed #e8eaed;
  line-height: 1.6;
}

.rp-steps {
  margin: 0;
  padding-left: 24px;
}

.rp-steps li {
  padding: 8px 0;
  line-height: 1.8;
}

.rp-points {
  margin: 0;
  padding: 16px;
  border-radius: 12px;
  background-color: #fff4e8;
  line-height: 1.8;
}

.rp-back {
  margin: 24px 0 0;
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.cp-card {
  background-color: #ffffff;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
}

.cp-card-link {
  display: block;
  color: #1d1d1f;
}

a.cp-card-link:hover {
  text-decoration: none;
}

.cp-card-image {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  background-color: #f1f3f4;
}

.cp-card-body {
  padding: 8px 10px 12px;
}

.cp-card-title {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.cp-card-desc {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: #5f6368;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

main.cp-top .cp-empty {
  grid-column: 1 / -1;
}

main.cp-top .cp-empty p {
  margin: 12px 0 0;
  color: #5f6368;
}

@media (min-width: 768px) {
  .cp-search {
    padding: 32px;
  }

  .cp-search-title {
    font-size: 26px;
  }

  .cp-shortcuts {
    max-width: 480px;
  }

  main.cp-top .cp-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
  }

  .cp-card-title {
    font-size: 16px;
  }
}

.admin-member-table {
  table-layout: fixed;
  width: 100%;
  max-width: 560px;
}

.admin-member-table th:nth-child(1),
.admin-member-table td:nth-child(1) {
  width: 72px;
}

.admin-member-table th:nth-child(3),
.admin-member-table td:nth-child(3) {
  width: 120px;
  white-space: nowrap;
}

.admin-member-sub {
  margin-top: 4px;
  font-size: 12px;
  color: #5f6368;
}

.admin-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px;
  word-break: break-all;
}

.admin-header-label {
  font-size: 13px;
  font-weight: 600;
  color: #5f6368;
}

.admin-side-nav {
  display: flex;
  flex-direction: column;
  gap: 24px;
  flex: 1;
}

.admin-side-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.admin-side-nav li a {
  display: block;
  padding: 12px 16px;
  border-radius: 12px;
  color: #1d1d1f;
  text-decoration: none;
  font-weight: 500;
}

.admin-side-nav li a:hover,
.admin-side-nav li a.is-active {
  background-color: #f5f5f7;
  text-decoration: none;
}

.admin-side-nav-footer {
  margin-top: auto;
  padding-top: 24px;
}

.admin-side-nav-footer a {
  display: block;
  padding: 12px 16px;
  border-radius: 12px;
  background-color: #1d1d1f;
  color: #ffffff;
  text-align: center;
  text-decoration: none;
  font-weight: 600;
}

.admin-side-nav-footer a:hover {
  opacity: 0.92;
  text-decoration: none;
}

.page-admin .slide-menu {
  display: flex;
  flex-direction: column;
}

.knowledge-entry-grid {
  margin-top: 24px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

@media (min-width: 900px) {
  .knowledge-entry-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.knowledge-entry-card {
  background-color: #f8f9fb;
  border-radius: 16px;
  padding: 16px;
}

.knowledge-entry-heading {
  margin: 0 0 16px;
  font-size: 18px;
}

.knowledge-entry-note {
  margin: 0 0 16px;
  color: #5f6368;
  font-size: 14px;
  line-height: 1.6;
}

.knowledge-type-badge {
  display: inline-block;
  margin-right: 8px;
  padding: 2px 8px;
  border-radius: 999px;
  background-color: #e8f0fe;
  color: #174ea6;
  font-size: 12px;
  font-weight: 600;
  vertical-align: middle;
}

.knowledge-thumb {
  display: block;
  width: 100%;
  max-width: 280px;
  margin: 12px 0;
  border-radius: 12px;
  object-fit: cover;
}

.knowledge-edit-form {
  margin-top: 8px;
}

.knowledge-summary-textarea {
  min-height: 160px;
  line-height: 1.7;
}

.knowledge-item-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

.knowledge-save-btn {
  min-width: 120px;
}

.knowledge-toggle-form {
  margin-top: 16px;
}

/* ===== 管理画面：ブレイン・サイトの改造状況 ===== */
.brain-tabs {
  display: flex;
  gap: 8px;
  margin: 16px 0 0;
  flex-wrap: wrap;
}

.brain-tabs-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 16px;
  border-radius: 999px;
  background-color: #f1f3f4;
  color: #1d1d1f;
  text-decoration: none;
  font-size: 14px;
  font-weight: 600;
}

.brain-tabs-item.is-active {
  background-color: #1d1d1f;
  color: #ffffff;
}

.brain-stats {
  list-style: none;
  margin: 24px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 16px;
}

.brain-stats li {
  background-color: #f8f9fb;
  border-radius: 12px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.brain-stats-num {
  font-size: 24px;
  font-weight: 700;
  color: #1d1d1f;
}

.brain-stats-label {
  font-size: 13px;
  color: #5f6368;
}

.brain-analyze-form,
.brain-add-form {
  margin-top: 16px;
}

.brain-output-text {
  margin: 12px 0;
  line-height: 1.8;
  white-space: pre-wrap;
  word-break: break-word;
  color: #1d1d1f;
}

.brain-instruction-text {
  margin: 8px 0 0;
  font-size: 13px;
  color: #5f6368;
}

.brain-item-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.brain-item-foot .advice-admin-item-meta {
  margin-bottom: 0;
}

.brain-tags,
.brain-note-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 16px 0 0;
}

.brain-tag {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 999px;
  background-color: #e8f0fe;
  color: #174ea6;
  font-size: 13px;
  text-decoration: none;
}

.brain-tag.is-active {
  background-color: #174ea6;
  color: #ffffff;
}

.brain-original {
  margin: 8px 0 12px;
}

.brain-original summary {
  cursor: pointer;
  color: #0f62fe;
  font-size: 14px;
  min-height: 48px;
  display: flex;
  align-items: center;
}

.line-mode-switch {
  margin-top: 24px;
  background-color: #f8f9fb;
  border-radius: 12px;
  padding: 16px;
}

.line-mode-switch-label {
  margin: 0 0 12px;
  font-size: 13px;
  color: #5f6368;
  line-height: 1.6;
}

.line-mode-switch-buttons {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.line-mode-btn {
  min-height: 48px;
  border: none;
  border-radius: 12px;
  background-color: #ffffff;
  color: #1d1d1f;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.line-mode-btn.is-active {
  background-color: #1d1d1f;
  color: #ffffff;
}

.users-name {
  display: flex;
  align-items: center;
  gap: 12px;
}

.users-name .admin-member-thumb {
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

/* ===== 管理画面トップ：ブレインの全体像（グラフ） =====
   色：出どころは決まった順の3色（青・オレンジ・水色）、量は青1色。文字は文字の色のまま（系列の色にしない） */
.brain-ov-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.brain-ov-ai {
  margin-top: 24px;
  padding: 24px;
  border-radius: 16px;
  background: linear-gradient(135deg, #0d366b 0%, #1c5cab 100%);
  color: #ffffff;
}

.brain-ov-ai .advice-admin-item-meta,
.brain-ov-ai .brain-ov-sub,
.brain-ov-ai .viz-note {
  color: #cde2fb;
}

.brain-ov-ai .knowledge-type-badge {
  background-color: rgba(255, 255, 255, 0.16);
  color: #ffffff;
}

.brain-ov-ai .brain-tag {
  background-color: rgba(255, 255, 255, 0.14);
  color: #ffffff;
}

.brain-ov-ai .viz-track {
  fill: rgba(255, 255, 255, 0.14);
}

.brain-ov-ai .viz-seq {
  fill: #9ec5f4;
}

.brain-ov-ai-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.brain-ov-field {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  background-color: #ffffff;
  color: #0d366b;
}

.brain-ov-headline {
  margin: 16px 0 0;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.4;
}

.brain-ov-summary {
  margin: 12px 0 0;
  line-height: 1.8;
  color: #eaf2fd;
}

.brain-ov-sub {
  margin: 24px 0 12px;
  font-size: 14px;
  font-weight: 700;
  color: #5f6368;
}

.brain-ov-two {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

.brain-ov-list {
  margin: 0;
  padding-left: 20px;
  line-height: 1.8;
}

.brain-ov-grid {
  margin-top: 8px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
}

.brain-ov-panel {
  background-color: #f8f9fb;
  border-radius: 12px;
  padding: 0 16px 16px;
}

.viz-hbars {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.viz-row {
  display: grid;
  grid-template-columns: minmax(72px, 30%) 1fr 40px;
  align-items: center;
  gap: 8px;
}

.viz-label {
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viz-val {
  font-size: 13px;
  font-weight: 700;
  text-align: right;
}

.viz-note {
  grid-column: 1 / -1;
  font-size: 12px;
  color: #5f6368;
  margin-top: -4px;
}

.viz-bar {
  width: 100%;
  height: 12px;
  display: block;
}

.viz-track {
  fill: #e8eaed;
}

.viz-seq {
  fill: #2a78d6;
}

.viz-cat-1 {
  fill: #2a78d6;
}

.viz-cat-2 {
  fill: #eb6834;
}

.viz-cat-3 {
  fill: #1baf7a;
}

.viz-stack {
  width: 100%;
  height: 16px;
  display: block;
}

.viz-legend {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  font-size: 13px;
}

.viz-legend li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.viz-swatch {
  width: 10px;
  height: 10px;
}

.viz-cols {
  width: 100%;
  height: 80px;
  display: block;
}

.viz-axis {
  stroke: #c4c7c5;
  stroke-width: 1;
}

.viz-hit {
  fill: transparent;
}

.viz-hit:hover + .viz-seq,
.viz-seq:hover {
  fill: #1c5cab;
}

.viz-cols-axis {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: #5f6368;
  margin-top: 4px;
}

.brain-line-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  margin-bottom: 16px;
  border-radius: 12px;
  background-color: #06c755;
  color: #ffffff;
  font-weight: 700;
  text-decoration: none;
}

.brain-dup-note {
  margin: 0 0 12px;
  padding: 8px 12px;
  border-radius: 12px;
  background-color: #fef7e0;
  color: #8a5300;
  font-size: 13px;
  line-height: 1.6;
}

.brain-crawl-list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 14px;
  line-height: 1.7;
  word-break: break-word;
}

.kaizo-status {
  border-radius: 999px;
  font-size: 12px;
  padding: 4px 10px;
  white-space: nowrap;
}

.kaizo-status.is-queued {
  background-color: #f1f3f4;
  color: #5f6368;
}

.kaizo-status.is-building {
  background-color: #fef7e0;
  color: #b06000;
}

.kaizo-status.is-done {
  background-color: #e6f4ea;
  color: #1e8e3e;
}

.kaizo-status.is-failed {
  background-color: #fdecea;
  color: #c5221f;
}

.kaizo-result {
  margin: 0 0 8px;
  line-height: 1.7;
  font-size: 14px;
  white-space: pre-wrap;
  word-break: break-word;
}

.kaizo-note,
.kaizo-links {
  margin: 16px 0 0;
  font-size: 14px;
  line-height: 1.7;
  color: #5f6368;
}

.kaizo-note a,
.kaizo-links a {
  color: #0f62fe;
  text-decoration: none;
}

/* ===== マイプロフィール ===== */
.profile-main {
  max-width: 720px;
  margin: 0 auto;
  padding: 32px 16px 56px;
}

.profile-card {
  margin-top: 8px;
}

.profile-form {
  margin-top: 24px;
}

.profile-select,
.form-group select {
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid #d2d2d7;
  font-size: 14px;
  outline: none;
  background-color: #f9f9fb;
  color: #1d1d1f;
  line-height: 1.5;
}

.profile-select:focus,
.form-group select:focus {
  border-color: #0f62fe;
  box-shadow: 0 0 0 1px rgba(15, 98, 254, 0.2);
  background-color: #ffffff;
}

.profile-metrics {
  margin-top: 32px;
  padding-top: 24px;
  background-color: #f8f9fb;
  border-radius: 16px;
  padding: 24px;
}

.profile-metrics-title {
  margin: 0 0 16px;
  font-size: 20px;
  color: #1d1d1f;
}

.profile-metrics-list {
  margin: 0;
  display: grid;
  gap: 16px;
}

.profile-metrics-list dt {
  margin: 0;
  font-size: 13px;
  color: #5f6368;
  line-height: 1.5;
}

.profile-metrics-list dd {
  margin: 4px 0 0;
  font-size: 22px;
  font-weight: 600;
  color: #1d1d1f;
  line-height: 1.4;
}

.profile-metrics-note {
  margin: 24px 0 0;
  font-size: 13px;
  color: #5f6368;
  line-height: 1.7;
}

.profile-metrics-link {
  margin: 16px 0 0;
}

.profile-metrics-link a {
  color: #0f62fe;
  text-decoration: none;
  font-size: 14px;
}

.profile-metrics-link a:hover {
  text-decoration: underline;
}

/* =========================================================
   ハワイ風の色（LINE 改造 No.3）
   海の青緑・ハイビスカスのピンク・砂浜の白。
   オレンジは青緑と合わせない（LINE 改造 No.4）。
   青緑は青寄りのエメラルドグリーン（LINE 改造 No.6）。
   背景はクリーム色をやめ、青みのうすいグレー（LINE 改造 No.8）。
   青緑をもう少し青寄りの海の青に（LINE 改造 No.11）。
   海の青をやめ、エメラルドグリーンに戻す（LINE 改造 No.14）。
   LINE のボタンの緑とグラフの色はそのまま。
   ========================================================= */

html,
body {
  background-color: #f2f8f6;
}

a,
.brain-original summary,
.kaizo-note a,
.kaizo-links a,
.profile-metrics-link a {
  color: #007a5e;
}

.form-group input:focus,
.profile-select:focus,
.form-group select:focus {
  border-color: #009b77;
  box-shadow: 0 0 0 1px rgba(0, 155, 119, 0.25);
}

.btn-primary {
  background: linear-gradient(135deg, #009b77, #2ec4a0);
  box-shadow: 0 10px 30px rgba(0, 155, 119, 0.3);
}

.btn-primary:active {
  box-shadow: 0 6px 18px rgba(0, 155, 119, 0.3);
}

.pagination .page.current {
  background-color: #009b77;
  border-color: #009b77;
}

.site-header {
  border-bottom: 3px solid #f48fb1;
}

.slide-menu nav li a:hover,
.admin-side-nav li a:hover,
.admin-side-nav li a.is-active {
  background-color: #dcf3eb;
}

.site-footer {
  background-color: #dcf3eb;
  color: #2f5c50;
}

.advice-messages {
  background-color: #ebf8f3;
}

.advice-bubble-user {
  background-color: #009b77;
}

.cp-search {
  background: linear-gradient(135deg, #009b77 0%, #2ec4a0 100%);
}

.cp-search-btn {
  background-color: #d6336c;
}

.cp-shortcut-icon {
  background-color: #ffe3ec;
  color: #d6336c;
}

.cp-section-link,
.rp-breadcrumb a {
  color: #007a5e;
}

.rp-sub {
  border-left-color: #d6336c;
}

.rp-points,
.recipe-photo-preview,
.recipe-detected {
  background-color: #ebf8f3;
}

.recipe-detected {
  color: #005a45;
}

.google-search-photo {
  background-color: #ffe3ec;
  color: #d6336c;
}

.google-search-photo:hover {
  background-color: #ffd0de;
}

/* 残っていたクリーム色の下地も、うすい青緑とピンクに（LINE 改造 No.10） */
.brain-dup-note,
.kaizo-status.is-building {
  background-color: #ebf8f3;
  color: #005a45;
}

.index-advice-test-badge {
  background-color: #ffe3ec;
  color: #a61e4d;
}

/* プルメリアを散りばめる（LINE 改造 No.13）
   白い花びら・ピンクのふち・黄色い芯の小さな花を、背景にうすく並べる。 */
body {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'%3E%3Cdefs%3E%3Cg id='p'%3E%3Cg fill='%23ffffff' stroke='%23f48fb1' stroke-width='1'%3E%3Cellipse cy='-9' rx='5.5' ry='9'/%3E%3Cellipse cy='-9' rx='5.5' ry='9' transform='rotate(72)'/%3E%3Cellipse cy='-9' rx='5.5' ry='9' transform='rotate(144)'/%3E%3Cellipse cy='-9' rx='5.5' ry='9' transform='rotate(216)'/%3E%3Cellipse cy='-9' rx='5.5' ry='9' transform='rotate(288)'/%3E%3C/g%3E%3Ccircle r='4' fill='%23ffd54f'/%3E%3C/g%3E%3C/defs%3E%3Cg opacity='0.6'%3E%3Cuse href='%23p' transform='translate(44 52) scale(1.2)'/%3E%3Cuse href='%23p' transform='translate(168 148) rotate(30) scale(0.9)'/%3E%3Cuse href='%23p' transform='translate(204 32) rotate(15) scale(0.6)'/%3E%3Cuse href='%23p' transform='translate(70 196) rotate(50) scale(0.7)'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 240px 240px;
}


/* ===== レシピの写真（管理画面 admin/recipe_edit.php と、詳しいページ recipe.php の写真の並び） ===== */
.re-back {
  margin: 0;
  font-size: 14px;
}

.re-back a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  color: #1d1d1f;
  text-decoration: none;
}

.re-main {
  position: relative;
  margin: 24px 0 0;
}

.re-main-image {
  display: block;
  width: 100%;
  max-width: 480px;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 16px;
  background-color: #f1f3f4;
}

.re-main-badge,
.re-tile-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: 999px;
  background-color: #1d1d1f;
  color: #ffd54f;
  font-size: 13px;
  font-weight: 700;
}

.re-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

@media (min-width: 768px) {
  .re-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

.re-tile {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background-color: #f8f9fb;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.re-tile.is-main {
  box-shadow: 0 0 0 3px #1d1d1f;
}

.re-tile-image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

.re-tile-badge {
  top: 8px;
  left: 8px;
  font-size: 12px;
  padding: 2px 8px;
}

.re-tile-actions {
  display: flex;
  gap: 4px;
  padding: 4px;
}

.re-tile-actions form:first-child {
  flex: 1;
}

.re-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  min-height: 48px;
  border: none;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.re-btn-main {
  background-color: #ffffff;
  color: #1d1d1f;
}

.re-btn-delete {
  width: 48px;
  background-color: #ffffff;
  color: #c5221f;
}

.re-upload {
  margin-top: 24px;
}

.re-drop {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 140px;
  padding: 24px 16px;
  border: 2px dashed #c4c7c5;
  border-radius: 16px;
  background-color: #f8f9fb;
  text-align: center;
  cursor: pointer;
}

.re-drop:hover {
  background-color: #f1f3f4;
}

.re-drop-icon {
  font-size: 28px;
  color: #5f6368;
}

.re-drop-title {
  font-size: 16px;
  font-weight: 700;
  color: #1d1d1f;
}

.re-drop-note {
  font-size: 13px;
  color: #5f6368;
}

.re-previews {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.re-previews:empty {
  display: none;
}

.re-preview-image {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 8px;
}

.re-visibility {
  border: none;
  margin: 0 0 16px;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}

.re-visibility legend {
  font-weight: 600;
  margin-bottom: 8px;
}

.re-radio {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 16px;
  border-radius: 12px;
  background-color: #f8f9fb;
  cursor: pointer;
}

.re-edit-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
}

.rp-thumbs {
  list-style: none;
  margin: 0;
  padding: 12px 16px 0;
  display: flex;
  gap: 8px;
  overflow-x: auto;
}

.rp-thumb {
  display: block;
  width: 72px;
  height: 72px;
  padding: 0;
  border: none;
  border-radius: 10px;
  overflow: hidden;
  background: none;
  cursor: pointer;
  opacity: 0.6;
  flex-shrink: 0;
}

.rp-thumb.is-current {
  opacity: 1;
  box-shadow: 0 0 0 3px #1d1d1f;
}

.rp-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* レシピの詳しいページ：自分の量とメモ（LINE 改造 No.17） */
.rp-my-help {
  margin: 0 0 8px;
  font-size: 13px;
  color: #5f6368;
}

.rp-my-amount {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}

.rp-my-amount-label {
  flex-shrink: 0;
  font-size: 12px;
  color: #007a5e;
}

.rp-my-amount-input,
.rp-memo-input {
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid #dadce0;
  border-radius: 8px;
  font-size: 16px;
  font-family: inherit;
  background-color: #ffffff;
  box-sizing: border-box;
}

.rp-my-amount-input:focus,
.rp-memo-input:focus {
  outline: none;
  border-color: #007a5e;
}

.rp-memo-input {
  resize: vertical;
  line-height: 1.6;
}

.rp-memos {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.rp-memo-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.rp-memo-del {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border: none;
  border-radius: 8px;
  background-color: #ffe3ec;
  color: #d6336c;
  cursor: pointer;
}

.rp-memo-add {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  padding: 10px 16px;
  border: 1px dashed #007a5e;
  border-radius: 999px;
  background-color: #ebf8f3;
  color: #007a5e;
  font-size: 14px;
  cursor: pointer;
}
/* 自分の量・メモの保存の状態（recipe.php。アカウントに保存） */
.rp-my-foot {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: 8px;
}

.rp-my-status {
  font-size: 13px;
  color: #5f6368;
}

.rp-my-amount-input:disabled {
  background-color: #f1f3f4;
  cursor: not-allowed;
}