@import url('https://fonts.googleapis.com/css2?family=DotGothic16&family=Noto+Sans+JP:wght@400;700;900&display=swap');

:root {
  --mag-pink: #FF69B4;
  --mag-pink-dark: #D44A8A;
  --mag-pink-light: #FFD1DC;
  --mag-yellow: #FFD700;
  --mag-yellow-light: #FFF8DC;
  --mag-red: #E53935;
  --mag-blue: #1E88E5;
  --mag-purple: #8E24AA;
  --mag-bg: #FFF5F9;
  --mag-paper: #FFFFF0;
  --mag-text: #333;
  --mag-dot: 'DotGothic16', monospace;
  --mag-sans: 'Noto Sans JP', sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: #E8E0D8;
  font-family: var(--mag-sans);
  color: var(--mag-text);
  line-height: 1.7;
  min-height: 100vh;
}

/* ============================================================
   Magazine Container
   ============================================================ */
.magazine {
  max-width: 720px;
  margin: 0 auto;
  background: var(--mag-paper);
  box-shadow: 4px 4px 20px rgba(0,0,0,0.15), -2px 0 10px rgba(0,0,0,0.05);
  position: relative;
  overflow: hidden;
}

/* Scanline overlay */
.magazine::before {
  content: '';
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0,0,0,0.015) 2px,
    rgba(0,0,0,0.015) 4px
  );
  pointer-events: none;
  z-index: 1000;
}

/* ============================================================
   Header / Masthead
   ============================================================ */
.mag-header {
  background: linear-gradient(135deg, var(--mag-pink), var(--mag-purple));
  padding: 16px 20px 12px;
  text-align: center;
  position: relative;
  overflow: hidden;
}

/* ============================================================
   Cover Layout (text left + package right)
   ============================================================ */
.cover-layout {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 12px;
}

.cover-left {
  flex: 1;
  text-align: center;
}

.cover-right {
  flex: 0 0 220px;
}

.package-img {
  width: 100%;
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  display: block;
}

@media (max-width: 580px) {
  .cover-layout {
    flex-direction: column;
  }
  .cover-right {
    flex: none;
    width: 70%;
    max-width: 240px;
  }
}

.mag-header::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 6px;
  background: repeating-linear-gradient(90deg, var(--mag-yellow) 0, var(--mag-yellow) 12px, var(--mag-red) 12px, var(--mag-red) 24px);
}

.mag-header-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--mag-dot);
  color: rgba(255,255,255,0.7);
  font-size: 10px;
  margin-bottom: 6px;
}

.mag-logo {
  font-family: var(--mag-dot);
  font-size: 28px;
  color: #FFF;
  text-shadow: 3px 3px 0 rgba(0,0,0,0.3), -1px -1px 0 var(--mag-yellow);
  letter-spacing: 4px;
}

.mag-logo span {
  color: var(--mag-yellow);
}

.mag-subtitle {
  font-family: var(--mag-dot);
  font-size: 11px;
  color: var(--mag-yellow-light);
  margin-top: 4px;
}

/* ============================================================
   Cover Feature
   ============================================================ */
.cover-feature {
  background: linear-gradient(180deg, #FFE4EC 0%, #FFF0F5 40%, var(--mag-paper) 100%);
  padding: 24px 20px;
  text-align: center;
  position: relative;
  border-bottom: 4px solid var(--mag-pink);
}

.cover-feature::before {
  content: 'NEW!';
  position: absolute;
  top: 16px; left: 16px;
  background: var(--mag-red);
  color: #FFF;
  font-family: var(--mag-dot);
  font-size: 11px;
  padding: 2px 10px;
  transform: rotate(-5deg);
  border-radius: 2px;
}

.cover-catch {
  font-size: 12px;
  color: var(--mag-pink-dark);
  font-weight: 700;
  margin-bottom: 4px;
}

.cover-title {
  font-family: var(--mag-dot);
  font-size: 22px;
  color: var(--mag-pink-dark);
  text-shadow: 2px 2px 0 var(--mag-pink-light);
  margin-bottom: 8px;
}

.cover-hatoko {
  width: 140px;
  height: 140px;
  margin: 12px auto;
  border-radius: 50%;
  border: 4px solid var(--mag-pink);
  box-shadow: 0 4px 15px rgba(255,105,180,0.3);
  background: #FFF;
  object-fit: contain;
  padding: 8px;
}

.cover-desc {
  font-size: 13px;
  color: #666;
  max-width: 400px;
  margin: 0 auto;
}

.play-btn {
  display: inline-block;
  margin-top: 16px;
  padding: 12px 36px;
  background: linear-gradient(180deg, var(--mag-pink), var(--mag-pink-dark));
  color: #FFF;
  font-family: var(--mag-dot);
  font-size: 16px;
  text-decoration: none;
  border-radius: 30px;
  box-shadow: 0 4px 0 #A0305A, 0 6px 15px rgba(255,105,180,0.3);
  transition: transform 0.1s, box-shadow 0.1s;
}

.play-btn:hover {
  transform: translateY(2px);
  box-shadow: 0 2px 0 #A0305A, 0 3px 8px rgba(255,105,180,0.3);
}

.back-top-btn {
  display: inline-block;
  padding: 10px 28px;
  background: linear-gradient(180deg, #8E24AA, #6A1B7A);
  color: #FFF;
  font-family: var(--mag-dot);
  font-size: 13px;
  text-decoration: none;
  border-radius: 30px;
  box-shadow: 0 4px 0 #4A0E5A, 0 6px 15px rgba(142,36,170,0.3);
  transition: transform 0.1s, box-shadow 0.1s;
}

.back-top-btn:hover {
  transform: translateY(2px);
  box-shadow: 0 2px 0 #4A0E5A, 0 3px 8px rgba(142,36,170,0.3);
}

/* ============================================================
   Section Styles
   ============================================================ */
.mag-section {
  padding: 24px 20px;
  border-bottom: 2px dashed #F0D0E0;
}

.section-label {
  display: inline-block;
  font-family: var(--mag-dot);
  font-size: 10px;
  color: #FFF;
  background: var(--mag-pink);
  padding: 2px 12px;
  margin-bottom: 10px;
  border-radius: 2px;
}

.section-label.blue { background: var(--mag-blue); }
.section-label.purple { background: var(--mag-purple); }
.section-label.red { background: var(--mag-red); }
.section-label.yellow { background: var(--mag-yellow); color: #333; }

.section-title {
  font-family: var(--mag-dot);
  font-size: 18px;
  color: var(--mag-pink-dark);
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--mag-pink-light);
}

/* ============================================================
   Developer Interview
   ============================================================ */
.interview-block {
  margin-bottom: 18px;
}

.interview-q {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 8px;
}

.interview-a {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 16px;
  background: #FFF5F9;
  border-radius: 8px;
  padding: 10px 12px;
  border-left: 3px solid var(--mag-pink);
}

.speaker-icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-family: var(--mag-dot);
  color: #FFF;
}

.speaker-icon.editor { background: var(--mag-blue); }
.speaker-icon.dev { background: var(--mag-pink); }

.speaker-text {
  font-size: 13px;
  flex: 1;
}

.speaker-name {
  font-weight: 700;
  font-size: 11px;
  margin-bottom: 2px;
}

.speaker-name.editor { color: var(--mag-blue); }
.speaker-name.dev { color: var(--mag-pink-dark); }

/* ============================================================
   Screenshot Gallery
   ============================================================ */
.screenshot-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
  margin: 16px 0;
}

.screenshot-card {
  border: 2px solid #EEE;
  border-radius: 6px;
  overflow: hidden;
  background: #000;
}

.screenshot-card canvas {
  width: 100%;
  aspect-ratio: 3/4;
  display: block;
  image-rendering: pixelated;
}

.screenshot-caption {
  background: #FFF;
  padding: 6px 8px;
  font-size: 10px;
  color: #666;
  text-align: center;
  font-family: var(--mag-dot);
}

/* ============================================================
   Review Box
   ============================================================ */
.review-box {
  background: linear-gradient(135deg, #FFF8DC, #FFF5F9);
  border: 2px solid var(--mag-yellow);
  border-radius: 8px;
  padding: 16px;
  margin: 16px 0;
}

.review-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.review-title {
  font-family: var(--mag-dot);
  font-size: 14px;
  color: var(--mag-pink-dark);
}

.review-score {
  font-family: var(--mag-dot);
  font-size: 32px;
  color: var(--mag-red);
  text-shadow: 1px 1px 0 rgba(0,0,0,0.1);
}

.review-score span {
  font-size: 14px;
  color: #999;
}

.review-bars {
  margin: 12px 0;
}

.review-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  font-size: 11px;
}

.review-bar-label {
  width: 80px;
  font-weight: 700;
  text-align: right;
  font-family: var(--mag-dot);
}

.review-bar-track {
  flex: 1;
  height: 10px;
  background: #EEE;
  border-radius: 5px;
  overflow: hidden;
}

.review-bar-fill {
  height: 100%;
  border-radius: 5px;
  background: linear-gradient(90deg, var(--mag-pink), var(--mag-red));
}

.review-bar-value {
  width: 24px;
  font-family: var(--mag-dot);
  font-size: 11px;
  color: var(--mag-red);
}

.review-comment {
  font-size: 13px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed #DDD;
}

.reviewer-name {
  font-weight: 700;
  font-size: 11px;
  color: var(--mag-purple);
  margin-bottom: 4px;
}

/* ============================================================
   Tips Box
   ============================================================ */
.tips-box {
  background: #FFFFF0;
  border: 2px solid var(--mag-yellow);
  border-radius: 8px;
  padding: 14px;
  margin: 12px 0;
  position: relative;
}

.tips-box::before {
  content: 'TIPS';
  position: absolute;
  top: -10px; left: 14px;
  background: var(--mag-yellow);
  color: #333;
  font-family: var(--mag-dot);
  font-size: 10px;
  padding: 1px 10px;
  border-radius: 2px;
}

.tips-box ul {
  list-style: none;
  padding-left: 0;
}

.tips-box li {
  font-size: 12px;
  padding: 4px 0;
  padding-left: 18px;
  position: relative;
}

.tips-box li::before {
  content: '▶';
  position: absolute;
  left: 0;
  color: var(--mag-pink);
  font-size: 10px;
}

/* ============================================================
   Spec Table
   ============================================================ */
.spec-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  margin: 12px 0;
}

.spec-table th {
  background: var(--mag-pink);
  color: #FFF;
  padding: 6px 10px;
  text-align: left;
  font-family: var(--mag-dot);
  font-size: 11px;
}

.spec-table td {
  padding: 6px 10px;
  border-bottom: 1px solid #F0E0E8;
}

.spec-table tr:nth-child(even) td {
  background: #FFF5F9;
}

/* ============================================================
   Reader Letters
   ============================================================ */
.letter-card {
  background: #FFF;
  border: 1px solid #E8D8E0;
  border-radius: 8px;
  padding: 14px;
  margin-bottom: 12px;
  position: relative;
}

.letter-card::before {
  content: '';
  position: absolute;
  top: 0; left: 20px;
  width: 20px; height: 3px;
  background: var(--mag-pink);
  border-radius: 0 0 3px 3px;
}

.letter-from {
  font-size: 11px;
  color: var(--mag-purple);
  font-weight: 700;
  margin-bottom: 4px;
}

.letter-body {
  font-size: 12px;
}

.letter-stars {
  color: var(--mag-yellow);
  font-size: 14px;
  margin-top: 6px;
}

/* ============================================================
   Footer
   ============================================================ */
.mag-footer {
  background: linear-gradient(135deg, #2A2035, #1E1628);
  color: rgba(255,255,255,0.6);
  text-align: center;
  padding: 20px;
  font-family: var(--mag-dot);
  font-size: 10px;
}

.mag-footer a {
  color: var(--mag-pink-light);
  text-decoration: none;
}

/* ============================================================
   Decorative Elements
   ============================================================ */
.pixel-divider {
  height: 4px;
  background: repeating-linear-gradient(90deg,
    var(--mag-pink) 0, var(--mag-pink) 4px,
    transparent 4px, transparent 8px);
  margin: 0;
}

.dot-accent {
  font-family: var(--mag-dot);
  color: var(--mag-pink);
}

.highlight {
  background: linear-gradient(transparent 60%, var(--mag-pink-light) 60%);
}

.stamp {
  display: inline-block;
  border: 2px solid var(--mag-red);
  color: var(--mag-red);
  font-family: var(--mag-dot);
  font-size: 11px;
  padding: 2px 8px;
  transform: rotate(-3deg);
  border-radius: 3px;
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 480px) {
  .magazine { margin: 0; }
  .mag-logo { font-size: 22px; letter-spacing: 2px; }
  .cover-title { font-size: 18px; }
  .section-title { font-size: 15px; }
  .mag-section { padding: 18px 14px; }
  .screenshot-gallery { grid-template-columns: 1fr 1fr; gap: 8px; }
}
