/* AIB-DESIGN-SYSTEM v2 — プロデザイナー仕上げの共通デザイン(初期構築・修正後も維持) */
:root{
  /* ブランド */
  --brand:#3b5bdb; --brand-hover:#2f49b8; --brand-press:#27409f;
  --brand-soft:#eef2ff; --brand-soft-2:#e0e7ff; --brand-ink:#1e2a78;
  /* 面と境界 */
  --bg:#f6f8fc; --surface:#ffffff; --surface-2:#f9fafe; --surface-3:#f1f4fb;
  --line:#e6e9f2; --line-strong:#d4d9e8;
  /* テキスト階層 */
  --ink:#10172a; --text:#374151; --muted:#6b7280; --faint:#9aa3b2;
  /* セマンティック */
  --ok:#15803d; --ok-bg:#ecfdf3; --ok-line:#bbf7d0;
  --warn:#b45309; --warn-bg:#fffbeb; --warn-line:#fde68a;
  --err:#b91c1c; --err-bg:#fef2f2; --err-line:#fecaca;
  --info:#1e40af; --info-bg:#eff4ff; --info-line:#c7d6fe;
  /* 形状・影・余白 */
  --r-xs:6px; --r-sm:9px; --r:13px; --r-lg:18px; --r-pill:999px;
  --sh-xs:0 1px 2px rgba(16,23,42,.06);
  --sh-sm:0 1px 3px rgba(16,23,42,.07), 0 1px 2px rgba(16,23,42,.04);
  --sh:0 4px 14px rgba(16,23,42,.07), 0 2px 4px rgba(16,23,42,.04);
  --sh-lg:0 18px 44px rgba(16,23,42,.12), 0 6px 14px rgba(16,23,42,.06);
  --maxw:1120px; --ease:cubic-bezier(.4,0,.2,1);
  --font:"Inter","Noto Sans JP",-apple-system,BlinkMacSystemFont,"Hiragino Sans","Segoe UI",sans-serif;
}
*{box-sizing:border-box;}
*::selection{background:var(--brand-soft-2); color:var(--brand-ink);}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--font); background:var(--bg); color:var(--text);
  line-height:1.7; font-size:15.5px; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5{color:var(--ink); line-height:1.25; margin:0 0 .55em; font-weight:700; letter-spacing:-.012em;}
h1{font-size:clamp(1.7rem,2.4vw,2.15rem);} h2{font-size:1.5rem; margin-top:.2em;} h3{font-size:1.2rem;} h4{font-size:1.02rem;}
p{margin:0 0 1em;} small{color:var(--muted);}
a{color:var(--brand); text-decoration:none; transition:color .15s var(--ease);}
a:hover{color:var(--brand-hover); text-decoration:underline; text-underline-offset:2px;}
img{max-width:100%; height:auto; display:block;}
hr{border:0; border-top:1px solid var(--line); margin:24px 0;}
code{background:var(--surface-3); padding:.12em .4em; border-radius:var(--r-xs); font-size:.88em; font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,monospace;}
:focus-visible{outline:2px solid var(--brand); outline-offset:2px; border-radius:4px;}
::-webkit-scrollbar{width:11px; height:11px;}
::-webkit-scrollbar-thumb{background:#cfd6e6; border-radius:8px; border:3px solid var(--bg);}
::-webkit-scrollbar-thumb:hover{background:#b9c2d8;}
.container{max-width:var(--maxw); margin:0 auto; padding:28px 22px;}
/* 取りこぼし対策: ラッパークラスを付け忘れても整って見えるように */
main{display:block;}
main:not(.container){max-width:var(--maxw); margin:0 auto; padding:28px 22px;}
section:not(.hero){margin:18px 0;}

/* ナビゲーション */
.navbar{background:rgba(255,255,255,.86); backdrop-filter:saturate(1.6) blur(10px);
  border-bottom:1px solid var(--line); position:sticky; top:0; z-index:50;}
.navbar .nav-inner{max-width:var(--maxw); margin:0 auto; padding:14px 22px;
  display:flex; align-items:center; justify-content:space-between; gap:18px;}
.nav-brand{font-weight:800; font-size:1.12rem; color:var(--ink); letter-spacing:-.02em;
  display:flex; align-items:center; gap:9px;}
.nav-brand:hover{text-decoration:none; color:var(--ink);}
.nav-links{display:flex; align-items:center; gap:6px; flex-wrap:wrap;}
.nav-links a{color:var(--muted); font-weight:600; font-size:.9rem; padding:7px 12px; border-radius:var(--r-sm);
  transition:background .15s var(--ease),color .15s var(--ease);}
.nav-links a:hover{color:var(--brand-ink); background:var(--brand-soft); text-decoration:none;}

/* ヒーロー */
.hero{position:relative; overflow:hidden; color:#fff; border-radius:var(--r-lg);
  padding:clamp(36px,5vw,64px); margin:26px 0; box-shadow:var(--sh-lg);
  background:radial-gradient(120% 140% at 0% 0%, #4c6ef5 0%, var(--brand) 45%, var(--brand-press) 100%);}
.hero::after{content:""; position:absolute; inset:0;
  background:radial-gradient(60% 80% at 100% 0%, rgba(255,255,255,.18), transparent 60%); pointer-events:none;}
.hero h1{color:#fff; font-size:clamp(1.9rem,3.4vw,2.7rem); margin-bottom:.25em; letter-spacing:-.02em;}
.hero p{color:rgba(255,255,255,.92); font-size:1.1rem; max-width:60ch; margin-bottom:0;}
.hero .btn{margin-top:22px;}

/* カード・グリッド */
.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:24px; box-shadow:var(--sh-sm); margin-bottom:22px; transition:box-shadow .2s var(--ease),transform .2s var(--ease),border-color .2s var(--ease);}
a.card,.card-link{display:block; color:inherit;}
a.card:hover,.card-link:hover{text-decoration:none; box-shadow:var(--sh); transform:translateY(-2px); border-color:var(--line-strong);}
.card-title{font-size:1.08rem; font-weight:700; color:var(--ink); margin-bottom:.7em; letter-spacing:-.01em;}
.grid{display:grid; gap:22px;}
.grid.cols-2{grid-template-columns:repeat(2,1fr);}
.grid.cols-3{grid-template-columns:repeat(3,1fr);}
.grid.cols-4{grid-template-columns:repeat(4,1fr);}

/* ボタン */
.btn,button{display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:11px 19px; background:var(--brand); color:#fff; border:1px solid transparent;
  border-radius:var(--r-sm); cursor:pointer; font:inherit; font-weight:650; line-height:1.1;
  text-decoration:none; letter-spacing:.01em; box-shadow:var(--sh-xs);
  transition:background .15s var(--ease),box-shadow .15s var(--ease),transform .06s var(--ease);}
.btn:hover,button:hover{background:var(--brand-hover); color:#fff; text-decoration:none; box-shadow:var(--sh-sm); transform:translateY(-1px);}
.btn:active,button:active{background:var(--brand-press); transform:translateY(0);}
.btn:disabled,button:disabled{opacity:.55; cursor:not-allowed; transform:none; box-shadow:none;}
.btn-secondary{background:var(--brand-soft); color:var(--brand-ink); border-color:var(--brand-soft-2);}
.btn-secondary:hover{background:var(--brand-soft-2); color:var(--brand-ink);}
.btn-ghost{background:var(--surface); color:var(--text); border-color:var(--line-strong);}
.btn-ghost:hover{background:var(--surface-3); color:var(--ink);}
.btn-danger{background:var(--err);} .btn-danger:hover{background:#a11616;}
.btn-success{background:var(--ok);} .btn-success:hover{background:#11652f;}
.btn-sm{padding:7px 13px; font-size:.85rem; border-radius:var(--r-xs);}
.btn-lg{padding:14px 26px; font-size:1.05rem;}
.btn-block{display:flex; width:100%;}

/* フォーム */
.form-group{margin-bottom:17px;}
label{display:block; font-weight:600; color:var(--ink); margin-bottom:7px; font-size:.9rem;}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],
input[type=date],input[type=search],input[type=url],input[type=time],select,textarea{
  width:100%; padding:11px 13px; border:1px solid var(--line-strong); border-radius:var(--r-sm);
  font:inherit; color:var(--ink); background:var(--surface); transition:border-color .15s var(--ease),box-shadow .15s var(--ease);}
input::placeholder,textarea::placeholder{color:var(--faint);}
input:hover,select:hover,textarea:hover{border-color:#b6bed2;}
input:focus,select:focus,textarea:focus{outline:none; border-color:var(--brand); box-shadow:0 0 0 3.5px var(--brand-soft);}
input:disabled,select:disabled,textarea:disabled{background:var(--surface-3); color:var(--muted);}
textarea{min-height:118px; resize:vertical;}
.form-hint{font-size:.82rem; color:var(--muted); margin-top:5px;}

/* 認証ページ */
.auth-wrap{min-height:calc(100vh - 64px); display:flex; align-items:center; justify-content:center; padding:34px 16px;
  background:radial-gradient(80% 60% at 50% -10%, var(--brand-soft), transparent 70%);}
.auth-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-lg); padding:38px 34px; width:100%; max-width:430px;}
.auth-card h1{text-align:center; font-size:1.55rem; margin-bottom:1.1em;}
.auth-card .btn{width:100%; margin-top:4px;}
.auth-alt{text-align:center; margin-top:20px; font-size:.9rem; color:var(--muted);}

/* テーブル */
.table-wrap{overflow-x:auto; border-radius:var(--r); box-shadow:var(--sh-sm); border:1px solid var(--line);}
.table,table{width:100%; border-collapse:collapse; background:var(--surface); overflow:hidden;}
.table th,.table td,th,td{padding:13px 15px; text-align:left; border-bottom:1px solid var(--line); font-size:.93rem;}
.table th,th{background:var(--surface-3); font-weight:700; color:var(--ink); font-size:.82rem;
  text-transform:uppercase; letter-spacing:.04em;}
.table tbody tr,tbody tr{transition:background .12s var(--ease);}
.table tbody tr:hover,tbody tr:hover{background:var(--surface-2);}
.table tr:last-child td,tr:last-child td{border-bottom:0;}

/* アラート・バッジ */
.alert{padding:13px 16px 13px 16px; border-radius:var(--r-sm); margin:14px 0; border:1px solid transparent;
  border-left-width:4px; font-size:.92rem;}
.alert.success{background:var(--ok-bg); color:var(--ok); border-color:var(--ok-line); border-left-color:var(--ok);}
.alert.error{background:var(--err-bg); color:var(--err); border-color:var(--err-line); border-left-color:var(--err);}
.alert.warning{background:var(--warn-bg); color:var(--warn); border-color:var(--warn-line); border-left-color:var(--warn);}
.alert.info{background:var(--info-bg); color:var(--info); border-color:var(--info-line); border-left-color:var(--info);}
.badge{display:inline-flex; align-items:center; gap:5px; padding:3px 11px; border-radius:var(--r-pill);
  font-size:.76rem; font-weight:700; background:var(--brand-soft); color:var(--brand-ink); letter-spacing:.01em;}
.badge.ok{background:var(--ok-bg); color:var(--ok);} .badge.warn{background:var(--warn-bg); color:var(--warn);}
.badge.err{background:var(--err-bg); color:var(--err);}

/* ダッシュボード */
.stat-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:18px; margin-bottom:8px;}
.stat-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:22px; box-shadow:var(--sh-sm); position:relative; overflow:hidden;}
.stat-card::before{content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--brand); opacity:.9;}
.stat-card .stat-label{color:var(--muted); font-size:.85rem; font-weight:600;}
.stat-card .stat-value{font-size:2rem; font-weight:800; color:var(--ink); margin-top:5px; letter-spacing:-.02em;}

/* 空状態・フッター・ユーティリティ */
.empty-state{text-align:center; color:var(--muted); padding:48px 20px;}
.site-footer{text-align:center; color:var(--muted); font-size:.85rem; padding:30px 16px; border-top:1px solid var(--line); margin-top:36px;}
.text-center{text-align:center;} .text-muted{color:var(--muted);} .text-right{text-align:right;}
.mt-0{margin-top:0;} .mb-0{margin-bottom:0;} .mt-1{margin-top:8px;} .mb-1{margin-bottom:8px;}
.mt-2{margin-top:18px;} .mb-2{margin-bottom:18px;} .mt-3{margin-top:28px;}
.flex{display:flex; gap:12px; align-items:center;} .flex-between{justify-content:space-between;}
.flex-wrap{flex-wrap:wrap;} .gap-sm{gap:8px;}

@media (max-width:820px){
  .grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr;}
  .nav-inner{flex-wrap:wrap; gap:10px;}
  .container{padding:22px 16px;}
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none !important; transition:none !important; scroll-behavior:auto !important;}
}

/* ===== project-specific styles (AI generated) ===== */
:root {
  /* ---- ブランドカラー(自然 × フードガイド)---- */
  --primary:        #2f6f3e;   /* 深いフォレストグリーン */
  --primary-dark:   #1f4a2a;
  --primary-light:  #4f9d62;
  --accent:         #c4642a;   /* テラコッタ(差し色) */
  --accent-soft:    #f0c987;

  /* ---- 背景・面 ---- */
  --bg:             #f6f3ec;   /* 紙のような淡いアイボリー */
  --bg-alt:         #ece6d8;
  --card:           #ffffff;
  --card-soft:      #fbfaf5;

  /* ---- 文字色(コントラストAA以上)---- */
  --text:           #1f2421;   /* 本文(コントラスト比 12:1) */
  --text-muted:     #5a6259;   /* サブテキスト(4.7:1) */
  --text-on-dark:   #ffffff;
  --text-on-accent: #ffffff;
  --text-link:      #1f4a2a;

  /* ---- 区切り ---- */
  --border:         #d9d2bf;
  --border-strong:  #b9b099;

  /* ---- 状態色(WCAG AA を満たすコントラスト)---- */
  --safe:           #1f7a3a;   /* 食用 */
  --safe-bg:        #e2efe4;
  --safe-text:      #14532d;
  --danger:         #b3261e;   /* 不可食 */
  --danger-bg:      #fbe7e5;
  --danger-text:    #7f1d1d;
  --caution:        #b45309;   /* 要注意 */
  --caution-bg:     #fdf2dc;
  --caution-text:   #783b06;
  --info:           #0f5f8c;
  --info-bg:        #e1eef6;
  --info-text:      #0c4a6e;

  --shadow-sm:      0 1px 2px rgba(20, 30, 20, 0.06);
  --shadow:         0 4px 14px rgba(20, 30, 20, 0.08);
  --shadow-lg:      0 14px 36px rgba(20, 30, 20, 0.14);
  --radius:         12px;
  --radius-sm:      8px;
  --radius-lg:      18px;
  --transition:     0.18s ease;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: "Hiragino Sans", "Yu Gothic", "Noto Sans JP", "Meiryo", sans-serif;
  background: var(--bg);
  background-image:
    radial-gradient(circle at 0% 0%, #ece4cf 0, transparent 40%),
    radial-gradient(circle at 100% 0%, #e5ecd8 0, transparent 38%);
  background-attachment: fixed;
  color: var(--text);
  margin: 0;
  padding: 0;
  line-height: 1.75;
  font-size: 16px;
  letter-spacing: 0.01em;
  -webkit-font-smoothing: antialiased;
}

p { margin: 0.4em 0 0.9em; }

a {
  color: var(--text-link);
  text-decoration: none;
  transition: color var(--transition);
}
a:hover { color: var(--accent); text-decoration: underline; }
a:focus-visible {
  outline: 3px solid var(--accent-soft);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ====================================================
   ヘッダー / ナビゲーション
   ==================================================== */

header,
header.site-header {
  background: linear-gradient(135deg, #244a2e 0%, var(--primary) 55%, #3d8456 100%);
  color: var(--text-on-dark);
  padding: 1.4rem 2rem 1.2rem;
  box-shadow: var(--shadow);
  position: relative;
  text-align: left;
}
header::after,
header.site-header::after {
  content: "";
  position: absolute;
  inset: auto 0 -8px 0;
  height: 8px;
  background: linear-gradient(90deg, var(--accent), var(--accent-soft), var(--primary-light));
  opacity: 0.85;
}

header .container,
header.site-header .container {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

header h1 { margin: 0; font-size: 1.6rem; letter-spacing: 0.02em; }
header h1 a { color: #fff; text-decoration: none; }
header .subtitle { font-size: 0.85rem; opacity: 0.92; margin-top: 0.2rem; }

.site-branding .site-subtitle {
  margin: 0;
  font-size: 0.78rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--accent-soft);
  opacity: 0.95;
}
.site-branding .site-title {
  margin: 0.15rem 0 0.25rem;
  font-size: 1.55rem;
  font-weight: 700;
}
.site-branding .site-title a { color: #fff; text-decoration: none; }
.site-branding .site-description {
  margin: 0;
  font-size: 0.85rem;
  color: rgba(255,255,255,0.85);
  max-width: 520px;
}

nav.main-nav,
nav.global-nav {
  background: rgba(255,255,255,0.08);
  border-radius: 999px;
  padding: 0.35rem 0.6rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
  flex-wrap: wrap;
  backdrop-filter: blur(4px);
}
nav.global-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}
nav.main-nav a,
nav.global-nav a {
  display: inline-block;
  color: #fff;
  font-size: 0.9rem;
  padding: 0.45rem 0.95rem;
  border-radius: 999px;
  text-decoration: none;
  transition: background var(--transition), color var(--transition);
}
nav.main-nav a:hover,
nav.global-nav a:hover {
  background: rgba(255,255,255,0.18);
  text-decoration: none;
}
nav.global-nav a.active {
  background: #fff;
  color: var(--primary-dark);
  font-weight: 700;
}

.header-search-form {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  background: rgba(255,255,255,0.92);
  padding: 0.35rem 0.5rem;
  border-radius: 999px;
  box-shadow: var(--shadow-sm);
  flex-wrap: wrap;
}
.header-search-form label {
  position: absolute;
  left: -9999px;
}
.header-search-form input[type=text],
.header-search-form select {
  border: none;
  background: transparent;
  padding: 0.35rem 0.6rem;
  font-size: 0.9rem;
  min-width: 140px;
  color: var(--text);
}
.header-search-form input[type=text]:focus,
.header-search-form select:focus { outline: none; }
.header-search-form button {
  background: var(--accent);
  color: #fff;
  border: none;
  padding: 0.45rem 1rem;
  border-radius: 999px;
  cursor: pointer;
  font-weight: 700;
  font-size: 0.85rem;
}
.header-search-form button:hover { background: #a4521f; }

.admin-status {
  font-size: 0.85rem;
  color: rgba(255,255,255,0.92);
  display: flex;
  align-items: center;
  gap: 0.8rem;
  flex-wrap: wrap;
}
.admin-status a {
  background: var(--accent);
  color: #fff;
  padding: 0.35rem 0.85rem;
  border-radius: 999px;
  font-weight: 700;
  font-size: 0.8rem;
}
.admin-status a:hover { background: #a4521f; text-decoration: none; }

/* ====================================================
   メインエリア / 共通レイアウト
   ==================================================== */

main,
main.site-main,
.container {
  max-width: 1200px;
  margin: 2rem auto;
  padding: 0 1.5rem;
}

.site-wrapper { min-height: 100vh; display: flex; flex-direction: column; }
.site-main { flex: 1; }

h1, h2, h3, h4 {
  color: var(--primary-dark);
  letter-spacing: 0.01em;
  line-height: 1.35;
}

h2 {
  border-left: 6px solid var(--primary);
  padding: 0.15rem 0 0.15rem 0.85rem;
  margin-top: 2.2rem;
  margin-bottom: 1rem;
  font-size: 1.35rem;
}
h3 { font-size: 1.1rem; margin-bottom: 0.6rem; }

hr {
  border: 0;
  border-top: 1px solid var(--border);
  margin: 1.6rem 0;
}

/* ヒーロー(トップページなどで使える) */
.hero {
  background:
    linear-gradient(135deg, rgba(31,74,42,0.85), rgba(47,111,62,0.75)),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><circle cx='50' cy='50' r='40' fill='none' stroke='%23ffffff20' stroke-width='1'/></svg>");
  color: #fff;
  padding: 2.5rem 2rem;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  margin-bottom: 1.6rem;
}
.hero h1 { color: #fff; margin: 0 0 0.6rem; font-size: 1.9rem; }
.hero p { color: rgba(255,255,255,0.92); margin: 0; max-width: 620px; }

/* ====================================================
   カード / 一覧
   ==================================================== */

.card,
.stats {
  background: var(--card);
  border-radius: var(--radius);
  padding: 1.2rem 1.4rem;
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
  margin-bottom: 1rem;
  color: var(--text);
}

.stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  font-size: 0.95rem;
}
.stats strong { color: var(--primary-dark); font-size: 1.1rem; }

.grid,
.entries {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 1.3rem;
}

.entry-card {
  background: var(--card);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  color: var(--text);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.entry-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: var(--primary-light);
  text-decoration: none;
}
.entry-card img {
  width: 100%;
  height: 170px;
  object-fit: cover;
  display: block;
  background: var(--bg-alt);
}
.entry-card .body,
.entry-card .entry-info {
  padding: 0.9rem 1rem 1rem;
}
.entry-card h3,
.entry-card h4 {
  margin: 0 0 0.35rem;
  font-size: 1.05rem;
  color: var(--text);
}
.entry-card .meta {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-bottom: 0.4rem;
}

/* ====================================================
   バッジ / タグ / レーティング
   ==================================================== */

.badge {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #fff;
  line-height: 1.4;
}
.badge-edible,
.badge.edible    { background: var(--safe);    color: #fff; }
.badge-inedible,
.badge.inedible  { background: var(--danger);  color: #fff; }
.badge-caution,
.badge.caution   { background: var(--caution); color: #fff; }

.stars,
.rarity {
  color: #d39e00;
  letter-spacing: 2px;
  font-size: 0.95rem;
  font-weight: 600;
}
.stars .empty { color: #d4d0c4; }

/* ====================================================
   カテゴリ
   ==================================================== */

.category-icons,
.categories {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 1rem;
}
.category-icons a,
.cat-card {
  display: block;
  text-align: center;
  background: var(--card);
  border: 1px solid var(--border);
  padding: 1.3rem 0.75rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  color: var(--text);
  font-weight: 600;
  transition: transform var(--transition), background var(--transition), border-color var(--transition);
  text-decoration: none;
}
.category-icons a:hover,
.cat-card:hover {
  background: var(--card-soft);
  border-color: var(--primary-light);
  transform: translateY(-3px);
  text-decoration: none;
  color: var(--primary-dark);
}
.cat-icon { font-size: 2.2rem; margin-bottom: 0.4rem; line-height: 1; }

/* ====================================================
   検索フォーム / フォーム部品
   ==================================================== */

form.search-bar,
.search-bar {
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin: 1.2rem 0;
  background: var(--card);
  padding: 1rem 1.1rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
}
form.search-bar input[type=text],
form.search-bar select,
.search-bar input,
.search-bar select {
  flex: 1;
  min-width: 180px;
  padding: 0.65rem 0.8rem;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: 0.95rem;
  background: #fff;
  color: var(--text);
}
.search-bar button {
  background: var(--primary);
  color: #fff;
  border: none;
  padding: 0.7rem 1.4rem;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: 0.95rem;
  font-weight: 700;
}
.search-bar button:hover { background: var(--primary-dark); }

input[type=text], input[type=password], input[type=number],
input[type=email], input[type=file], textarea, select {
  width: 100%;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: 0.95rem;
  font-family: inherit;
  background: #fff;
  color: var(--text);
  transition: border-color var(--transition), box-shadow var(--transition);
}
input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(47,111,62,0.18);
}
textarea { resize: vertical; min-height: 100px; }

label {
  display: block;
  margin: 0.9rem 0 0.35rem;
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--text);
}

button, .btn {
  display: inline-block;
  background: var(--primary);
  color: #fff;
  border: none;
  padding: 0.7rem 1.4rem;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: 0.95rem;
  font-weight: 700;
  text-decoration: none;
  transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
  box-shadow: var(--shadow-sm);
}
button:hover, .btn:hover {
  background: var(--primary-dark);
  text-decoration: none;
  transform: translateY(-1px);
  box-shadow: var(--shadow);
  color: #fff;
}
.btn-danger { background: var(--danger); }
.btn-danger:hover { background: #8b1a14; }
.btn-accent { background: var(--accent); }
.btn-accent:hover { background: #a4521f; }
.btn-outline {
  background: transparent;
  color: var(--primary-dark);
  border: 2px solid var(--primary);
  box-shadow: none;
}
.btn-outline:hover { background: var(--primary); color: #fff; }

/* ====================================================
   テーブル
   ==================================================== */

table {
  width: 100%;
  border-collapse: collapse;
  background: var(--card);
  box-shadow: var(--shadow);
  border-radius: var(--radius);
  overflow: hidden;
  font-size: 0.92rem;
}
table th, table td {
  padding: 0.8rem 0.9rem;
  border-bottom: 1px solid var(--border);
  text-align: left;
  color: var(--text);
}
table th {
  background: var(--primary-dark);
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.03em;
}
table tbody tr:nth-child(even) td { background: var(--card-soft); }
table tr:hover td { background: #f3ecdc; }

/* ====================================================
   詳細ページ
   ==================================================== */

.detail-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-bottom: 2rem;
  background: var(--card);
  padding: 1.5rem;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.detail-header img {
  width: 100%;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  background: var(--bg-alt);
}
@media (max-width: 768px) {
  .detail-header { grid-template-columns: 1fr; }
}

.stats-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.stats-list li {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin: 0.45rem 0;
  font-size: 0.92rem;
  color: var(--text);
}
.stats-list li > span:first-child {
  min-width: 6.5rem;
  font-weight: 600;
  color: var(--text-muted);
}
.bar {
  flex: 1;
  height: 10px;
  background: #e7e1cf;
  border-radius: 999px;
  overflow: hidden;
}
.bar > span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--primary), var(--accent));
  border-radius: 999px;
}

/* ====================================================
   アラート / メッセージ
   ==================================================== */

.alert {
  padding: 0.95rem 1.1rem;
  border-radius: var(--radius-sm);
  margin: 1rem 0;
  border: 1px solid transparent;
  font-size: 0.95rem;
  line-height: 1.6;
}
.alert-error,
.alert.error {
  background: var(--danger-bg);
  color: var(--danger-text);
  border-color: #f1b6b2;
}
.alert-success,
.alert.success {
  background: var(--safe-bg);
  color: var(--safe-text);
  border-color: #b9dcc1;
}
.alert-info,
.alert.info {
  background: var(--info-bg);
  color: var(--info-text);
  border-color: #b8d4e6;
}
.alert-warning,
.alert.warning {
  background: var(--caution-bg);
  color: var(--caution-text);
  border-color: #f1ce86;
}

/* ====================================================
   フッター
   ==================================================== */

footer,
footer.site-footer {
  text-align: center;
  padding: 2.2rem 1rem 2.6rem;
  color: var(--text-muted);
  font-size: 0.85rem;
  margin-top: 3rem;
  background: var(--bg-alt);
  border-top: 1px solid var(--border);
}
footer a { color: var(--primary-dark); }

.links-footer {
  text-align: center;
  margin: 2.5rem 0 1rem;
  padding: 1.2rem;
  background: var(--card-soft);
  border-radius: var(--radius);
  border: 1px solid var(--border);
}
.links-footer a {
  color: var(--primary-dark);
  margin: 0 0.8rem;
  font-weight: 600;
}

/* ====================================================
   タグ / 補助
   ==================================================== */

.tag {
  display: inline-block;
  background: var(--bg-alt);
  color: var(--primary-dark);
  padding: 0.25rem 0.7rem;
  border-radius: 999px;
  font-size: 0.78rem;
  margin: 0.15rem;
  border: 1px solid var(--border);
  font-weight: 600;
}

.empty {
  color: var(--text-muted);
  padding: 1.8rem;
  text-align: center;
  background: var(--card-soft);
  border-radius: var(--radius);
  border: 1px dashed var(--border-strong);
}

canvas.radar { max-width: 100%; height: auto; }

/* スクロールバー(任意の見栄え調整) */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #cdc6b3; border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: var(--primary-light); }

/* ====================================================
   レスポンシブ
   ==================================================== */

@media (max-width: 720px) {
  header, header.site-header { padding: 1.1rem 1rem; }
  header .container, header.site-header .container { flex-direction: column; align-items: flex-start; }
  nav.global-nav, nav.main-nav { width: 100%; }
  .header-search-form { width: 100%; }
  .header-search-form input[type=text],
  .header-search-form select { min-width: 0; flex: 1; }
  main, main.site-main, .container { padding: 0 1rem; margin: 1.2rem auto; }
  h2 { font-size: 1.2rem; }
  .hero { padding: 1.6rem 1.2rem; }
  .hero h1 { font-size: 1.4rem; }
}
