:root {
  --bg: #151333;
  --bg2: #3a173d;
  --card: rgba(255,255,255,0.06);
  --panel: rgba(255,255,255,0.08);
  --text: #ffffff;
  --muted: #c9bdd8;
  --line: rgba(255,255,255,0.14);
  --accent: #ff5bc8;
  --accent2: #a855f7;
  --shadow: 0 14px 35px rgba(0,0,0,0.35);
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  font-family:
    "Meiryo",
    "Noto Sans JP",
    "Hiragino Kaku Gothic ProN",
    "Yu Gothic",
    sans-serif;
  background:
    radial-gradient(circle at 25% 0%, rgba(255,91,200,0.18), transparent 34%),
    linear-gradient(135deg, var(--bg) 0%, #191439 45%, var(--bg2) 100%);
  color: var(--text);
  line-height: 1.55;
  font-size: 13px;
}

a {
  color: #fff;
  text-decoration: none;
}

.container {
  max-width: 1500px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ======================================
   HEADER
====================================== */

.site-header {
  margin-bottom: 10px;
}

.header-inner {
  align-items: center;
  gap: 18px;
  padding: 10px 16px;
  background: rgba(18,20,45,0.88);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 0 0 18px 18px;
  box-shadow: var(--shadow);
  backdrop-filter: blur(14px);
}

.brand-wrap {
  flex: 0 0 auto;
}

.logo {
  width: 190px;
  display: block;
}

.hero-copy {
  margin-top: 4px;
  color: var(--muted);
  text-align: center;
}

/* ======================================
   SEARCH
====================================== */

.search-form {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
}

.search-form input,
.search-form select {
  width: 100%;
  height: 56px;
  padding: 0 18px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.16);
  background: rgba(255,255,255,0.06);
  color: #fff;
  font-size: 15px;
  outline: none;
}

.search-form input::placeholder {
  color: #b9afc9;
}

.search-form input:focus {
  border-color: rgba(255,91,200,0.75);
  box-shadow:
    0 0 0 3px rgba(255,91,200,0.16);
}

.search-form button {
  width: 56px;
  height: 56px;
  border: 0;
  border-radius: 14px;
  background:
    linear-gradient(135deg, var(--accent), var(--accent2));
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  box-shadow:
    0 8px 20px rgba(255,91,200,0.25);
}

/* ======================================
   LAYOUT
====================================== */

.page-stack {
  padding-bottom: 24px;
}

.content-layout {
  display: grid;
  grid-template-columns: minmax(0,1fr) 300px;
  gap: 18px;
  margin-top: 18px;
}

.main-column,
.sidebar {
  display: grid;
  gap: 18px;
  align-content: start;
}

/* ======================================
   PANEL
====================================== */

.panel,
.post,
.calendar,
form.admin {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--shadow);
}

.panel {
  padding: 16px;
}

.panel-title {
  margin: 0 0 14px;
  padding: 7px 8px;
  padding-left: 10px;
  border-radius: 12px;
  background:
    linear-gradient(
      135deg,
      rgba(255,91,200,0.28),
      rgba(168,85,247,0.22)
    );
  border: 1px solid rgba(255,255,255,0.12);
  color: #fff;
  font-size: 19px;
  font-weight: 800;
}

.meta {
  color: var(--muted);
  font-size: 12px;
}

/* ======================================
   新着記事（添付画像風）
====================================== */

.article-list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

/* カード */

.article-card {
  position: relative;
  overflow: hidden;
  display: block;
  padding: 6px;
  background: #3b2754;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.08);
  transition:
    transform .2s ease,
    box-shadow .2s ease;
}

/* hover */

.article-card:hover {
  transform: translateY(-3px);
  box-shadow:
    0 10px 24px rgba(0,0,0,0.45);
}

/* 画像 */

.article-card img {
  width: 100%;
  height: 340px;
  object-fit: cover;
  display: block;
  border-radius: 10px;
}

/* タイトル帯 */

.article-card h3 {
    font-weight: 700;
    line-height: 1.4;
    margin-bottom: 6px;
    position: absolute;
    top: 60%;
    left: 5px;
    right: 5px;
    z-index: 10;
    background: linear-gradient(90deg, rgba(139, 93, 255, 0.7), rgba(255, 93, 184, 0.68));
    color: #fff;
    padding: 5px;
    border-radius: 5px;
}

/* 日付 */

.article-card .meta,
.article-card .date,
.article-card time {
  display: block;
  margin-top: 8px;
  color: #d7c8e7;
  font-size: 12px;
}

/* ======================================
   人気記事
====================================== */

.popular-list {
  display: grid;
  gap: 10px;
}

.popular-item img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 10px;
  display: block;
}

.popular-item span {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

/* ======================================
   POST
====================================== */

.post {
  padding: 22px;
}

.post h1 {
  margin: 0 0 14px;
  line-height: 1.4;
  font-size: 30px;
  color: #fff;
}

.post-image {
  width: 100%;
  max-width: 500px;
  height: 300px;
  object-fit: cover;
  object-position: center 30%;
  display: block;
  margin: 10px 0 6px;
  border-radius: 16px;
  border: 1px solid rgba(255,91,200,0.55);
  box-shadow:
    0 0 24px rgba(255,91,200,0.22);
}

.post-detail-title {
  color: #fff;
  font-size: 46px;
  line-height: 1.3;
  margin-bottom: 12px;
}

.post-detail-meta {
  text-align: right;
  font-size: 14px;
  color: var(--muted);
}

/* ======================================
   CALENDAR
====================================== */

.calendar {
  padding: 12px;
  margin-top: 12px;
}

.calendar h3 {
  margin: 0 0 10px;
  font-size: 16px;
}

.calendar table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

.calendar th,
.calendar td {
  text-align: center;
  padding: 7px 4px;
  border: 1px solid var(--line);
  font-size: 12px;
}

/* ======================================
   ADMIN
====================================== */

form.admin {
  padding: 16px;
}

form.admin input,
form.admin textarea {
  width: 100%;
  margin: 6px 0 12px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,0.08);
  color: #fff;
}

/* ======================================
   PAGINATION
====================================== */

.actions,
.nav-links {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.nav-links {
  margin-top: 20px;
  justify-content: space-between;
}

.pagination {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 18px;
  padding: 6px;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}

.pagination-link,
.pagination-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
}

.pagination-link {
  color: #fff;
}

.pagination-link:hover {
  background: rgba(255,91,200,0.18);
}

.pagination-status {
  background: rgba(255,255,255,0.08);
  border: 1px solid var(--line);
  color: var(--muted);
}

/* ======================================
   ACCESSIBILITY
====================================== */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

/* ======================================
   RESPONSIVE
====================================== */

@media (max-width: 1200px) {
  .article-list {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 980px) {
  .container {
    padding: 0 12px;
  }
  .content-layout {
    grid-template-columns: 1fr;
  }
  .article-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 600px) {
  .container {
    padding: 0 10px;
  }
  .header-inner {
    flex-direction: column;
    align-items: stretch;
    border-radius: 0 0 16px 16px;
  }
  .brand-wrap {
    width: 100%;
    text-align: center;
  }
  .logo {
    width: 180px;
    margin: 0 auto;
  }
  .search-form input,
  .search-form select,
  .search-form button {
    height: 48px;
  }
  .article-list {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }
  .article-card img {
    height: 240px;
  }
  .article-card h3 {
    top: 50%;
    font-size: 12px;
    padding: 6px 8px;
  }
  .panel-title {
    font-size: 17px;
  }
  .post h1 {
    font-size: 23px;
  }
  .post-detail-title {
    font-size: 34px;
  }
  .post-detail-meta {
    font-size: 12px;
  }
}
.thumb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.thumb-card { position: relative; overflow: hidden; background: #d3d3d3; }
.thumb-card img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; }
.thumb-title {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 6px;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.8);
  background: linear-gradient(to top, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0));
}
.thumb-title--plain {
  position: static;
  display: block;
  color: var(--text);
  background: transparent;
  text-shadow: none;
  min-height: 84px;
}
@media (max-width: 980px) {
  .container { padding: 0 10px; }
  .content-layout { grid-template-columns: 1fr; }
  .thumb-grid { grid-template-columns: repeat(2, 1fr); }
}
.site-header .logo {
  width: min(100%, 1250px);
  max-width: 100%;
  margin: 0 auto;
}
.logo {
  display: block;
  width: min(100%, 680px);
  height: auto;
}
@media (max-width: 600px) {
  .container {
    padding: 0;
  }
  .header-inner {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 0;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }
  .brand-wrap {
    width: 100%;
  }
  .logo {
    width: 100%;
    display: block;
  }
  .post h1 {
    font-size: 23px;
  }
  .post-detail-title {
    font-size: 34px;
  }
  .post-detail-meta {
    font-size: 12px;
  }
  .article-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* ======================================
   FANZA conversion block
====================================== */

.fanza-conversion-panel {
  position: relative;
  overflow: hidden;
  margin-bottom: 18px;
  border: 2px solid rgba(255, 216, 77, 0.72);
  background:
    radial-gradient(circle at 12% 0%, rgba(255, 216, 77, 0.22), transparent 28%),
    linear-gradient(135deg, rgba(255, 91, 200, 0.22), rgba(168, 85, 247, 0.18)),
    rgba(255, 255, 255, 0.09);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.08),
    0 20px 48px rgba(255, 91, 200, 0.28),
    var(--shadow);
}

.fanza-conversion-panel::before {
  content: "18+ PR";
  position: absolute;
  top: 12px;
  right: -34px;
  width: 140px;
  padding: 5px 0;
  transform: rotate(35deg);
  background: linear-gradient(135deg, #ffd84d, #ff8a00);
  color: #3a173d;
  font-size: 12px;
  font-weight: 900;
  text-align: center;
  letter-spacing: .08em;
}

.fanza-conversion-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}

.fanza-kicker {
  display: inline-flex;
  margin: 0 0 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(255, 216, 77, 0.18);
  color: #ffe88b;
  font-size: 12px;
  font-weight: 900;
}

.fanza-title {
  margin: 0;
  font-size: 24px;
  line-height: 1.35;
}

.fanza-head-cta,
.fanza-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: linear-gradient(135deg, #ffd84d, #ff6ab7 50%, #a855f7);
  color: #fff;
  font-weight: 900;
  box-shadow: 0 10px 24px rgba(255, 91, 200, 0.34);
}

.fanza-head-cta {
  flex: 0 0 auto;
  padding: 11px 18px;
}

.fanza-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.fanza-card {
  position: relative;
  overflow: hidden;
  border-radius: 14px;
  background: rgba(18, 20, 45, 0.88);
  border: 1px solid rgba(255, 255, 255, 0.13);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.fanza-card:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 216, 77, 0.7);
  box-shadow: 0 16px 30px rgba(0, 0, 0, 0.42);
}

.fanza-card img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
}

.fanza-rank {
  position: absolute;
  top: 9px;
  left: 9px;
  z-index: 2;
  padding: 4px 8px;
  border-radius: 999px;
  background: linear-gradient(135deg, #ffd84d, #ff8a00);
  color: #321333;
  font-size: 12px;
  font-weight: 900;
}

.fanza-card-body {
  display: grid;
  gap: 6px;
  padding: 10px;
}

.fanza-card h3,
.fanza-maker,
.fanza-genres {
  margin: 0;
}

.fanza-card h3 {
  min-height: 3.9em;
  font-size: 14px;
  line-height: 1.3;
}

.fanza-maker,
.fanza-genres {
  color: var(--muted);
  font-size: 12px;
}

.fanza-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.fanza-price {
  color: #ffe88b;
  font-size: 16px;
  font-weight: 900;
}

.fanza-rating {
  color: #fff;
  font-size: 12px;
  font-weight: 700;
}

.fanza-cta {
  margin-top: 4px;
  padding: 8px 10px;
  font-size: 12px;
}

@media (max-width: 980px) {
  .fanza-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .fanza-conversion-head {
    align-items: stretch;
    flex-direction: column;
  }
}

@media (max-width: 600px) {
  .fanza-conversion-panel {
    border-radius: 0;
  }
  .fanza-title {
    font-size: 19px;
  }
  .fanza-card h3 {
    font-size: 12px;
  }
}
