/*
 * ============================================================
 *  生体社会論 / 青田一郎 — 共通スタイルシート (Bootstrap5用)
 *  common.css
 *
 *  読み込み順（各HTMLの <head> 内）:
 *    1. Bootstrap5 CSS
 *    2. Google Fonts
 *    3. この common.css
 * ============================================================
 */


/* ─ CSS変数 ─ */
:root {
  --bs-body-bg:        #0a0a0a;
  --bs-body-color:     #e8e0d0;
  --accent:            #c8a96e;
  --accent-rgb:        200, 169, 110;
  --bg-card:           #111111;
  --bg-input:          #161616;
  --bg-border:         #2a2a2a;
  --text-muted-custom: #888888;
  --text-dimmed:       #555555;
}


/* ─ ベース ─ */
body {
  background-color: var(--bs-body-bg);
  color:            var(--bs-body-color);
  font-family:      'Noto Sans JP', sans-serif;
  font-weight:      300;
}

/* グリッドテクスチャ */
body::before {
  content: '';
  position: fixed; inset: 0;
  background-image:
    linear-gradient(rgba(var(--accent-rgb), 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--accent-rgb), 0.025) 1px, transparent 1px);
  background-size: 48px 48px;
  pointer-events: none;
  z-index: 0;
}

main { position: relative; z-index: 1; }


/* ─ サイトラベル ─ */
.site-label {
  font-size:      11px;
  letter-spacing: 0.25em;
  color:          var(--accent);
  text-transform: uppercase;
  font-weight:    500;
}

/* 片側ライン（guideline / notify） */
.site-label-line {
  flex:       1;
  height:     1px;
  background: linear-gradient(to right, var(--accent), transparent);
  opacity:    0.35;
}

/* 両側ライン（complete） */
.site-label-line-center {
  flex:       1;
  height:     1px;
  background: linear-gradient(to right, transparent, var(--accent), transparent);
  opacity:    0.35;
}


/* ─ 見出し ─ */
h1 {
  font-family: 'Noto Serif JP', serif;
  font-weight: 600;
}

h2 {
  font-family:    'Noto Serif JP', serif;
  font-size:      1.05rem;
  font-weight:    600;
  color:          var(--accent);
  letter-spacing: 0.08em;
}
h2::before {
  content:        '';
  display:        inline-block;
  width:          3px;
  height:         1em;
  background:     var(--accent);
  border-radius:  2px;
  margin-right:   10px;
  vertical-align: middle;
  flex-shrink:    0;
}

/* フォームセクション見出し */
.section-title {
  font-family:    'Noto Serif JP', serif;
  font-size:      0.9rem;
  font-weight:    600;
  color:          var(--accent);
  letter-spacing: 0.1em;
  border-left:    3px solid var(--accent);
  padding-left:   10px;
}


/* ─ 本文・テキスト ─ */
p { font-size: 0.95rem; }

.text-muted { color: var(--text-muted-custom) !important; }


/* ─ 区切り線 ─ */
hr { border-color: var(--bg-border); opacity: 1; }


/* ─ カード ─ */
.card {
  background:    var(--bg-card);
  border:        1px solid var(--bg-border) !important;
  border-radius: 2px;
}

.condition-card { border-left: 3px solid var(--accent) !important; }

.condition-card-title {
  font-size:      0.78rem;
  letter-spacing: 0.18em;
  color:          var(--accent);
  font-weight:    500;
}
.condition-card p { font-size: 0.92rem; margin-bottom: 0; }


/* ─ バッジ ─ */
.badge-req {
  font-size:      9px;
  font-weight:    700;
  letter-spacing: 0.1em;
  padding:        2px 7px;
  border-radius:  2px;
  background:     var(--accent);
  color:          #0a0a0a;
}
.badge-opt {
  font-size:      9px;
  font-weight:    500;
  letter-spacing: 0.1em;
  padding:        2px 7px;
  border-radius:  2px;
  background:     transparent;
  border:         1px solid #555;
  color:          #888;
}


/* ─ guideline.html 専用 ─ */
.hashtag-display {
  display:        inline-block;
  background:     var(--bg-card);
  border:         1px solid var(--bg-border);
  padding:        10px 24px;
  font-family:    'Noto Serif JP', serif;
  font-size:      1.2rem;
  color:          var(--accent);
  letter-spacing: 0.05em;
  border-radius:  2px;
}

.info-block {
  background:    rgba(var(--accent-rgb), 0.08);
  border:        1px solid rgba(var(--accent-rgb), 0.2);
  border-radius: 2px;
}
.info-block p { font-size: 0.9rem; margin-bottom: 0; }

.notice-block {
  background:    var(--bg-card);
  border:        1px solid var(--bg-border);
  border-radius: 2px;
  font-size:     0.88rem;
  color:         var(--text-muted-custom);
  line-height:   1.8;
}

.prohibit-list { list-style: none; padding: 0; margin: 0; }
.prohibit-list li {
  padding:       10px 0;
  border-bottom: 1px solid var(--bg-border);
  font-size:     0.92rem;
  display:       flex;
  align-items:   flex-start;
  gap:           10px;
}
.prohibit-list li:last-child { border-bottom: none; }
.prohibit-list li::before {
  content:     '×';
  color:       #c06060;
  font-weight: 700;
  flex-shrink: 0;
}


/* ─ notify.html 専用 ─ */
.form-control,
.form-select {
  background-color: var(--bg-input);
  border:           1px solid var(--bg-border);
  border-radius:    2px;
  color:            var(--bs-body-color);
  font-family:      'Noto Sans JP', sans-serif;
  font-weight:      300;
  font-size:        0.93rem;
}
.form-control::placeholder { color: var(--text-dimmed); font-size: 0.85rem; }
.form-control:focus,
.form-select:focus {
  background-color: #181818;
  border-color:     var(--accent);
  color:            var(--bs-body-color);
  box-shadow:       0 0 0 0.15rem rgba(var(--accent-rgb), 0.2);
}
.form-select option { background: #1a1a1a; }

.form-label {
  font-size:      0.82rem;
  color:          var(--text-muted-custom);
  letter-spacing: 0.06em;
  margin-bottom:  6px;
}

.form-text { color: var(--text-dimmed); font-size: 0.78rem; }

.form-check-input {
  background-color: var(--bg-input);
  border:           1px solid var(--bg-border);
  border-radius:    2px;
}
.form-check-input:checked {
  background-color: var(--accent);
  border-color:     var(--accent);
}
.form-check-input:focus {
  box-shadow:   0 0 0 0.15rem rgba(var(--accent-rgb), 0.25);
  border-color: var(--accent);
}
.form-check-label { font-size: 0.88rem; color: var(--bs-body-color); }

.optional-note {
  background:    rgba(var(--accent-rgb), 0.08);
  border:        1px solid rgba(var(--accent-rgb), 0.2);
  border-radius: 2px;
  font-size:     0.82rem;
  color:         var(--accent);
}

.agree-block {
  background:    var(--bg-card);
  border:        1px solid var(--bg-border);
  border-radius: 2px;
}
.agree-block .form-check-label {
  font-size: 0.85rem;
  color:     var(--text-muted-custom);
}

.btn-submit {
  background:     var(--accent);
  color:          #0a0a0a;
  font-family:    'Noto Serif JP', serif;
  font-size:      1rem;
  font-weight:    600;
  letter-spacing: 0.15em;
  border:         none;
  border-radius:  2px;
  width:          100%;
  padding:        14px;
  transition:     opacity 0.2s, transform 0.1s;
}
.btn-submit:hover    { opacity: 0.88; color: #0a0a0a; }
.btn-submit:active   { transform: scale(0.995); }
.btn-submit:disabled { opacity: 0.35; cursor: not-allowed; }


/* ─ complete.html 専用 ─ */
.btn-back {
  display:         inline-block;
  padding:         12px 36px;
  background:      transparent;
  border:          1px solid var(--accent);
  color:           var(--accent);
  font-family:     'Noto Serif JP', serif;
  font-size:       0.9rem;
  font-weight:     600;
  letter-spacing:  0.12em;
  border-radius:   2px;
  text-decoration: none;
  transition:      background 0.2s, color 0.2s;
}
.btn-back:hover { background: var(--accent); color: #0a0a0a; }


/* ─ フッター ─ */
footer {
  border-top:     1px solid var(--bg-border);
  font-size:      0.78rem;
  color:          var(--text-muted-custom);
  letter-spacing: 0.05em;
}
