#apg-generator { max-width:600px;margin:30px auto;padding:20px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 8px rgba(0,0,0,0.1);font-family:sans-serif; }
.apg-fixed-area { position:sticky;top:0;background:#fff;padding-bottom:10px;z-index:10; }
#apg-text { width:100%;height:100px;padding:10px;margin-bottom:10px;border:1px solid #ccc;border-radius:4px;resize:none;white-space:pre-wrap; }
.apg-controls { display:flex;gap:8px;margin-bottom:10px; }
.apg-button { flex:1;padding:8px;background:#0073aa;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s; }
.apg-button:hover { background:#005177; }
.clear-button { background:#dc3545; }
.clear-button:hover { background:#c82333; }
.apg-categories { display:flex;gap:10px;justify-content:center;margin-bottom:15px; }
.apg-cat-btn { padding:6px 12px;background:#eee;border:none;border-radius:4px;cursor:pointer;transition:background .2s,color .2s; }
.apg-cat-btn:hover, .apg-cat-btn.active-cat { background:#005177;color:#fff; }
.apg-elements { display:flex;flex-wrap:wrap;gap:10px;justify-content:center; }
.apg-elements-group {
  display: none;
}
.apg-elements-group.active-group {
  display: flex; /* または grid */
  flex-wrap: wrap;
  gap: 10px;
}

.apg-elem-btn { padding:6px 12px;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s,color .2s; }
.apg-elem-btn:hover, .apg-elem-btn.active-elem { background:#1e7e34;color:#fff; }
#apg-toast { position:fixed;top:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,0.7);color:#fff;padding:8px 12px;border-radius:4px;opacity:0;visibility:hidden;transition:opacity .3s; }
#apg-toast.visible { opacity:1;visibility:visible; }

:root {
  --bg-page:   #f5f7fa;
  --bg-card:   #ffffff;
  --text-main: #2c3e50;
  --text-sub:  #7f8c8d;
  --primary:   #4a90e2;
  --accent:    #50e3c2;
  --border:    #dfe6e9;
}

/* ページ背景 */
body {
  background-color: var(--bg-page);
}

/* 全体カード */
#apg-generator {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.05);
  padding: 2rem;
  max-width: 700px;
  margin: 2rem auto;
}

/* テキストエリア */
#apg-text {
  width: 100%;
  height: 120px;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: 'Segoe UI', sans-serif;
  font-size: 1rem;
  color: var(--text-main);
  margin-bottom: 1rem;
  background-color: #fafafa;
  white-space: pre-wrap;
}

/* 操作用ボタン群 */
.apg-controls {
  display: flex;
  gap: .75rem;
  margin-bottom: 1.5rem;
}
.apg-button {
  flex: 1;
  padding: .75rem;
  background-color: var(--primary);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: .95rem;
  cursor: pointer;
  transition: transform .2s, background .2s;
}
.apg-button:hover {
  background-color: var(--accent);
  transform: translateY(-2px);
}

/* カテゴリボタン群 */
.apg-categories {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px,1fr));
  gap: 1rem;
  margin-bottom: 2rem;
}
.apg-cat-btn {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 1rem;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-main);
  text-align: center;
  cursor: pointer;
  transition: background .2s, box-shadow .2s, color .2s;
}
.apg-cat-btn:hover,
.apg-cat-btn.active-cat {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}

/* 要素ボタン群 */
.apg-elements {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px,1fr));
  gap: .75rem;
}
.apg-elements-group {
  /* グループ切り替えで active-group クラスを付与します */
}
.apg-elem-btn {
  background: #efefef;
  border: none;
  border-radius: 6px;
  padding: .75rem;
  font-size: .9rem;
  color: var(--text-main);
  cursor: pointer;
  transition: background .2s, transform .2s;
}
.apg-elem-btn:hover {
  background: var(--accent);
  color: #fff;
  transform: translateY(-1px);
}
/* 選択中 */
.apg-elem-btn.active-elem {
  background: var(--accent) !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

/* クリアボタンだけ別色に */
.clear-button {
  background-color: #e74c3c;
}
.clear-button:hover {
  background-color: #c0392b;
}

/* トースト通知 */
#apg-toast {
  position: fixed;
  top: 1rem;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0,0,0,0.75);
  color: #fff;
  padding: .5rem 1rem;
  border-radius: 6px;
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s;
}
#apg-toast.visible {
  opacity: 1;
  visibility: visible;
}
/* 1) テキストエリアを包む要素を relative 配置 */
.apg-text-wrapper {
  position: relative;
}

/* 2) 通知をテキストエリア上に絶対配置 */
#apg-toast {
  position: absolute;
  top: -1.6em;             /* 好きな高さに調整してください */
  left: 50%;
  transform: translateX(-50%);
  padding: 0.2em 0.6em;
  background: var(--toast-bg);    /* 既存のトースト背景色 */
  color: var(--toast-color);      /* 既存の文字色 */
  border-radius: var(--radius);
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.2s ease-in-out;
  pointer-events: none;
  z-index: 10;
}

/* 3) .visible クラスでフェードイン */
#apg-toast.visible {
  opacity: 1;
}