/* ============================================
   献立帖 - 和・料亭スタイル
   Palette: 生成り×墨×朱×金
   Typography: しっぽり明朝 / 游字粛
   ============================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* 和のカラーパレット */
  --kinari: #f6ede0;        /* 生成り（メイン背景） */
  --kinari-d: #ede1ce;      /* 生成り・濃 */
  --washi: #faf3e5;         /* 和紙色 */
  --sumi: #1c1613;          /* 墨色 */
  --sumi-l: #3d332c;        /* 薄墨 */
  --shu: #b23a2e;           /* 朱色 */
  --shu-d: #8f2a22;         /* 朱・濃 */
  --kin: #b88a2f;           /* 金茶 */
  --kin-l: #d9b567;         /* 金・明 */
  --matcha: #6b7f3a;        /* 抹茶 */
  --cha: #6b5444;           /* 茶 */
  --line: #d4c5a8;          /* 和紙罫線 */

  /* レアリティ別 */
  --kiwami-1: #c89932;      /* 極 - 金 */
  --kiwami-2: #8f6921;
  --toku-1: #7a1e18;        /* 特 - 深紅 */
  --toku-2: #4a0f0b;
  --jou-1: #3d5a7c;         /* 上 - 藍 */
  --jou-2: #26384e;
  --nami-1: #756b5e;        /* 並 - 墨 */
  --nami-2: #4a4339;

  /* フォント */
  --mincho: 'Shippori Mincho', 'Hiragino Mincho ProN', serif;
  --yuji: 'Yuji Syuku', 'Shippori Mincho', serif;
  --klee: 'Klee One', 'Shippori Mincho', serif;

  --radius: 2px;
  --shadow-sumi: 0 2px 14px rgba(28, 22, 19, 0.12);
  --shadow-deep: 0 8px 32px rgba(28, 22, 19, 0.18);
}

html{font-size:15.5px; scroll-behavior:smooth}
body{
  font-family: var(--mincho);
  background: var(--kinari);
  background-image:
    radial-gradient(ellipse at top, #f9f1e2 0%, transparent 60%),
    radial-gradient(ellipse at bottom right, #efe2ca 0%, transparent 50%);
  color: var(--sumi);
  line-height: 1.9;
  min-height: 100vh;
  font-feature-settings: "palt";
  letter-spacing: 0.03em;
}

a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}

/* 和紙のテクスチャオーバーレイ */
.washi-overlay{
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 1;
  opacity: 0.35;
  mix-blend-mode: multiply;
}

main, header, footer{position:relative; z-index:2}

/* ============================================
   HEADER - 暖簾（のれん）
   ============================================ */
.noren{
  position: sticky;
  top: 0;
  z-index: 50;
  background: linear-gradient(to bottom, rgba(246, 237, 224, 0.98), rgba(246, 237, 224, 0.92));
  backdrop-filter: blur(6px);
  border-bottom: 1px solid var(--line);
}
.noren::before{
  content:'';
  position:absolute;
  left:0; right:0; bottom:-4px;
  height:4px;
  background: repeating-linear-gradient(
    90deg,
    var(--shu) 0 40px,
    transparent 40px 50px
  );
  opacity: 0.25;
}

.noren-inner{
  max-width: 1100px;
  margin: 0 auto;
  padding: 0.9rem 1.5rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.kanban{
  display: flex;
  align-items: center;
  gap: 0.8rem;
}
.kanban-mark{
  width: 42px;
  height: 42px;
  border: 2px solid var(--shu);
  border-radius: 50%;
  color: var(--shu);
  font-family: var(--yuji);
  font-size: 1.4rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--washi);
  box-shadow: inset 0 0 0 2px var(--washi), inset 0 0 0 3px var(--shu);
  transform: rotate(-3deg);
}
.kanban-name{
  font-family: var(--yuji);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--sumi);
}
.kanban-sub{
  font-size: 0.68rem;
  color: var(--cha);
  letter-spacing: 0.2em;
  margin-top: -2px;
}

.meniu{
  display: flex;
  align-items: center;
  gap: 1.8rem;
}
.meniu-link{
  font-family: var(--yuji);
  font-size: 0.92rem;
  letter-spacing: 0.15em;
  color: var(--sumi-l);
  padding-bottom: 4px;
  border-bottom: 1px solid transparent;
  transition: all 0.2s;
}
.meniu-link:hover{
  color: var(--shu);
  border-bottom-color: var(--shu);
}

.hanko{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--shu);
  color: var(--washi);
  font-family: var(--yuji);
  font-size: 0.82rem;
  padding: 0.5rem 1rem;
  border: 2px solid var(--shu-d);
  border-radius: var(--radius);
  letter-spacing: 0.2em;
  box-shadow: 2px 2px 0 var(--shu-d), inset 0 0 0 1px var(--washi);
  transition: all 0.15s;
}
.hanko:hover{
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--shu-d), inset 0 0 0 1px var(--washi);
}

@media(max-width: 640px){
  .meniu{ gap: 1rem; }
  .meniu-link{ font-size: 0.82rem; }
  .kanban-name{ font-size: 1rem; }
}

/* ============================================
   HERO - エントランス
   ============================================ */
.hero{
  position: relative;
  padding: 6rem 1.5rem 7rem;
  text-align: center;
  overflow: hidden;
}

.enso{
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(700px, 90vw);
  height: min(700px, 90vw);
  pointer-events: none;
  z-index: 0;
}

.hero-inner{
  position: relative;
  z-index: 1;
  max-width: 680px;
  margin: 0 auto;
}

.hero-eyebrow{
  font-family: var(--yuji);
  font-size: 0.82rem;
  letter-spacing: 0.8em;
  color: var(--shu);
  margin-bottom: 2rem;
  padding-left: 0.8em;
}

.hero-title{
  display: flex;
  justify-content: center;
  gap: 0.1em;
  margin-bottom: 3rem;
  flex-wrap: wrap;
}
.tate{
  font-family: var(--yuji);
  font-size: clamp(3rem, 9vw, 5rem);
  font-weight: 700;
  line-height: 1.2;
  color: var(--sumi);
  display: inline-block;
  animation: tateAppear 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.tate:nth-child(1){ animation-delay: 0.1s }
.tate:nth-child(2){ animation-delay: 0.2s }
.tate:nth-child(3){ animation-delay: 0.3s }
.tate:nth-child(4){ animation-delay: 0.45s }
.tate:nth-child(5){ animation-delay: 0.55s }
.tate:nth-child(6){ animation-delay: 0.7s }

.tate.hi{
  color: var(--shu);
  position: relative;
}
.tate.hi::after{
  content: '';
  position: absolute;
  inset: -10px;
  border: 2px solid var(--shu);
  border-radius: 50%;
  opacity: 0.15;
  animation: haloAppear 1.5s ease 1s both;
}
@keyframes tateAppear{
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes haloAppear{
  from { transform: scale(0); opacity: 0; }
  to { transform: scale(1); opacity: 0.15; }
}

.hero-lead{
  font-size: 1rem;
  color: var(--sumi-l);
  margin-bottom: 3rem;
  line-height: 2.2;
  font-weight: 400;
}

/* 巻物ボタン */
.makimono-btn{
  display: inline-block;
  position: relative;
  padding: 0 1.5rem;
  cursor: pointer;
  transition: all 0.3s;
}
.makimono-btn::before,
.makimono-btn::after{
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: 16px;
  background: linear-gradient(to right, var(--cha), var(--sumi-l), var(--cha));
  border-radius: 4px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.makimono-btn::before{ left: 0 }
.makimono-btn::after{ right: 0 }

.makimono-inner{
  display: block;
  background: linear-gradient(to bottom, #faf3e5, #f3e8d0);
  padding: 1.1rem 3.5rem;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  position: relative;
}
.makimono-text{
  font-family: var(--yuji);
  font-size: 1.25rem;
  letter-spacing: 0.4em;
  color: var(--shu);
  padding-left: 0.4em;
  font-weight: 700;
}
.makimono-btn:hover{
  transform: translateY(-2px);
}
.makimono-btn:hover .makimono-inner{
  background: linear-gradient(to bottom, #fff8ea, #faeed5);
}

/* 確率表示 */
.shina-row{
  margin-top: 4rem;
  display: flex;
  justify-content: center;
  gap: 1.2rem;
  flex-wrap: wrap;
}
.shina{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  padding: 0.8rem 1.2rem;
  background: var(--washi);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  min-width: 80px;
  position: relative;
  box-shadow: var(--shadow-sumi);
}
.shina::before{
  content: '';
  position: absolute;
  inset: 3px;
  border: 1px solid transparent;
  pointer-events: none;
}
.shina-r{
  font-family: var(--yuji);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1;
}
.shina-p{
  font-family: var(--yuji);
  font-size: 0.72rem;
  color: var(--cha);
  letter-spacing: 0.1em;
}
.shina-kiwami .shina-r{ color: var(--kiwami-1) }
.shina-kiwami{ border-color: var(--kiwami-1); box-shadow: 0 0 12px rgba(200, 153, 50, 0.2) }
.shina-toku .shina-r{ color: var(--toku-1) }
.shina-jou .shina-r{ color: var(--jou-1) }
.shina-nami .shina-r{ color: var(--nami-1) }

/* ============================================
   SECTION (段)
   ============================================ */
.dan{ padding: 5rem 1.5rem; position: relative }
.dan-primary{ background: var(--kinari) }
.dan-secondary{
  background: var(--washi);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  position: relative;
}
.dan-secondary::before,
.dan-secondary::after{
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    var(--kin-l) 0 8px,
    transparent 8px 16px
  );
  opacity: 0.5;
}
.dan-secondary::before{ top: 6px }
.dan-secondary::after{ bottom: 6px }

.dan-inner{ max-width: 780px; margin: 0 auto }

/* 見出し */
.midashi{
  text-align: center;
  margin-bottom: 3.5rem;
  position: relative;
}
.midashi-mark{
  display: inline-block;
  font-family: var(--yuji);
  font-size: 1.8rem;
  color: var(--shu);
  background: var(--washi);
  width: 56px;
  height: 56px;
  line-height: 52px;
  border: 2px solid var(--shu);
  border-radius: 50%;
  font-weight: 700;
  margin-bottom: 1rem;
  position: relative;
  transform: rotate(-5deg);
  box-shadow: inset 0 0 0 3px var(--washi), inset 0 0 0 4px var(--shu);
}
.midashi-title{
  font-family: var(--yuji);
  font-size: 2rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  padding-left: 0.25em;
  margin-bottom: 0.6rem;
}
.midashi-sub{
  font-size: 0.88rem;
  color: var(--cha);
  letter-spacing: 0.1em;
}

/* ============================================
   ガチャ - おみくじ演出
   ============================================ */
.omikuji-stage{
  background: var(--washi);
  border: 1px solid var(--line);
  padding: 3rem 2rem;
  min-height: 480px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  box-shadow: var(--shadow-sumi);
}

/* 和紙の角が折れたような装飾 */
.omikuji-stage::before,
.omikuji-stage::after{
  content: '';
  position: absolute;
  width: 24px;
  height: 24px;
}
.omikuji-stage::before{
  top: 0; left: 0;
  background: linear-gradient(135deg, var(--kinari-d) 50%, transparent 50%);
  box-shadow: 1px 1px 2px rgba(0,0,0,0.08);
}
.omikuji-stage::after{
  bottom: 0; right: 0;
  background: linear-gradient(-45deg, var(--kinari-d) 50%, transparent 50%);
  box-shadow: -1px -1px 2px rgba(0,0,0,0.08);
}

/* IDLE - 鈴 */
.omikuji-idle{
  text-align: center;
  animation: fadeIn 0.5s ease;
}
@keyframes fadeIn{ from{opacity:0} to{opacity:1} }

.suzu{
  position: relative;
  width: 80px;
  margin: 0 auto 2rem;
}
.suzu-rope{
  width: 6px;
  height: 80px;
  margin: 0 auto;
  background: repeating-linear-gradient(
    to bottom,
    var(--shu) 0 8px,
    var(--washi) 8px 10px,
    var(--shu) 10px 18px,
    var(--washi) 18px 20px
  );
  border-radius: 3px;
}
.suzu-bell{
  width: 80px;
  height: 80px;
  margin: -4px auto 0;
  background: radial-gradient(circle at 30% 30%, var(--kin-l), var(--kin) 70%, var(--kin-l));
  border-radius: 50% 50% 40% 40%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    inset -8px -8px 16px rgba(0,0,0,0.2),
    inset 4px 4px 8px rgba(255,255,255,0.3),
    0 8px 20px rgba(184, 138, 47, 0.4);
  animation: suzuSway 3s ease-in-out infinite;
  cursor: pointer;
}
@keyframes suzuSway{
  0%,100% { transform: rotate(-2deg) }
  50% { transform: rotate(2deg) }
}
.suzu-char{
  font-family: var(--yuji);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--washi);
  text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
}

.hanko-large{
  font-size: 1.1rem;
  padding: 1.1rem 2.8rem;
  margin-top: 1rem;
  letter-spacing: 0.3em;
}
.hanko-large .hanko-txt{
  font-family: var(--yuji);
  font-weight: 700;
  padding-left: 0.3em;
}
.draw-state{
  margin-top: 1.5rem;
  font-size: 0.82rem;
  color: var(--cha);
  letter-spacing: 0.1em;
}

/* ANIM - 巻物が開く */
.omikuji-anim{ text-align: center }
.makimono-wrap{
  display: inline-flex;
  align-items: center;
  margin-bottom: 1.5rem;
}
.makimono-roll{
  width: 24px;
  height: 100px;
  background: linear-gradient(to right, var(--cha), var(--sumi-l), var(--cha));
  border-radius: 6px;
  box-shadow: 0 3px 10px rgba(0,0,0,0.25);
  animation: rollSpin 1s linear infinite;
}
.makimono-paper{
  width: 0;
  height: 90px;
  background: linear-gradient(to bottom, var(--washi), #f5ebd4);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  animation: paperUnroll 1.6s ease-out forwards;
}
@keyframes rollSpin{ to { transform: rotate(360deg) } }
@keyframes paperUnroll{
  0% { width: 0 }
  100% { width: 200px }
}
.anim-txt{
  font-family: var(--yuji);
  font-size: 0.95rem;
  color: var(--shu);
  letter-spacing: 0.3em;
  animation: textPulse 1.2s ease-in-out infinite;
}
@keyframes textPulse{
  0%,100% { opacity: 0.5 }
  50% { opacity: 1 }
}

/* RESULT - 御札 */
.omikuji-result{
  width: 100%;
  text-align: center;
  animation: ofudaAppear 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes ofudaAppear{
  from { opacity: 0; transform: translateY(30px) rotate(-1deg) }
  to { opacity: 1; transform: translateY(0) rotate(0) }
}

.flash{
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 40;
  opacity: 0;
}
.flash.active{ animation: flashAnim 1.5s ease }
.flash.ssr.active{
  background: radial-gradient(circle, rgba(200, 153, 50, 0.5), transparent 60%);
}
.flash.sr.active{
  background: radial-gradient(circle, rgba(122, 30, 24, 0.3), transparent 60%);
}
.flash.r.active{
  background: radial-gradient(circle, rgba(61, 90, 124, 0.3), transparent 60%);
}
@keyframes flashAnim{
  0%, 100% { opacity: 0 }
  30% { opacity: 1 }
}

/* 御札 */
.ofuda{
  position: relative;
  max-width: 340px;
  margin: 0 auto 2rem;
  background: linear-gradient(to bottom, #fbf4e3 0%, #f5e9ce 100%);
  border: 1px solid var(--kin);
  padding: 1.5rem 1.5rem 2rem;
  box-shadow:
    0 4px 20px rgba(28, 22, 19, 0.15),
    inset 0 0 0 3px var(--washi),
    inset 0 0 0 4px var(--kin);
}
.ofuda::before, .ofuda::after{
  content: '';
  position: absolute;
  left: 50%; transform: translateX(-50%);
  width: 12px;
  height: 3px;
  background: var(--sumi-l);
  border-radius: 2px;
}
.ofuda::before{ top: -3px }
.ofuda::after{ bottom: -3px }

.ofuda-top{
  border-bottom: 1px solid var(--kin);
  padding-bottom: 0.8rem;
  margin-bottom: 1rem;
}
.ofuda-banner{
  font-family: var(--yuji);
  font-size: 1rem;
  letter-spacing: 0.4em;
  color: var(--cha);
  padding-left: 0.4em;
}

/* レアリティ・スタンプ */
.rarity-stamp{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 110px;
  height: 110px;
  margin: 0.5rem auto 1rem;
  border-radius: 50%;
  font-family: var(--yuji);
  font-size: 4rem;
  font-weight: 700;
  color: var(--washi);
  position: relative;
  animation: stampDown 0.6s cubic-bezier(0.22, 1.5, 0.36, 1);
}
@keyframes stampDown{
  0% { transform: scale(3) rotate(-15deg); opacity: 0 }
  100% { transform: scale(1) rotate(0); opacity: 1 }
}
.rarity-stamp::before{
  content: '';
  position: absolute;
  inset: -6px;
  border: 3px solid;
  border-radius: 50%;
  opacity: 0.3;
}
.rarity-stamp.SSR{
  background: radial-gradient(circle at 30% 30%, var(--kin-l), var(--kiwami-1) 60%, var(--kiwami-2));
  box-shadow: 0 0 40px rgba(200, 153, 50, 0.6);
}
.rarity-stamp.SSR::before{ border-color: var(--kiwami-1) }
.rarity-stamp.SSR::after{
  content: '';
  position: absolute;
  inset: -20px;
  border: 2px dashed var(--kiwami-1);
  border-radius: 50%;
  animation: haloSpin 8s linear infinite;
}
@keyframes haloSpin{ to { transform: rotate(360deg) } }

.rarity-stamp.SR{
  background: radial-gradient(circle at 30% 30%, #a03020, var(--toku-1) 60%, var(--toku-2));
  box-shadow: 0 4px 24px rgba(122, 30, 24, 0.4);
}
.rarity-stamp.SR::before{ border-color: var(--toku-1) }
.rarity-stamp.R{
  background: radial-gradient(circle at 30% 30%, #5a7a9e, var(--jou-1) 60%, var(--jou-2));
  box-shadow: 0 4px 20px rgba(61, 90, 124, 0.35);
}
.rarity-stamp.R::before{ border-color: var(--jou-1) }
.rarity-stamp.N{
  background: radial-gradient(circle at 30% 30%, #958a7d, var(--nami-1) 60%, var(--nami-2));
  box-shadow: 0 4px 16px rgba(117, 107, 94, 0.25);
  font-size: 3.4rem;
}
.rarity-stamp.N::before{ border-color: var(--nami-1) }

.result-title-box{
  padding: 1rem 0.5rem;
  border-top: 1px dashed var(--line);
  border-bottom: 1px dashed var(--line);
  margin-bottom: 0.6rem;
}
.result-title{
  font-family: var(--mincho);
  font-size: 1.2rem;
  font-weight: 600;
  line-height: 1.7;
  color: var(--sumi);
  letter-spacing: 0.02em;
}
.result-cat{
  font-size: 0.78rem;
  color: var(--cha);
  letter-spacing: 0.15em;
  margin-bottom: 1rem;
}
.result-seal{
  display: flex;
  justify-content: center;
  margin-top: 0.5rem;
}

.result-actions{
  display: flex;
  gap: 1rem;
  justify-content: center;
  margin-bottom: 1.5rem;
}
.hanko-read{
  background: var(--sumi);
  border-color: var(--sumi-l);
  box-shadow: 2px 2px 0 var(--sumi-l), inset 0 0 0 1px var(--washi);
  padding: 0.7rem 1.8rem;
  font-size: 0.92rem;
}
.hanko-read:hover{ box-shadow: 1px 1px 0 var(--sumi-l), inset 0 0 0 1px var(--washi) }
.hanko-share{
  background: var(--matcha);
  border-color: #4a5a28;
  box-shadow: 2px 2px 0 #4a5a28, inset 0 0 0 1px var(--washi);
  padding: 0.7rem 1.8rem;
  font-size: 0.92rem;
}
.hanko-share:hover{ box-shadow: 1px 1px 0 #4a5a28, inset 0 0 0 1px var(--washi) }

/* 極ボーナス */
.kiwami-bonus{
  background: linear-gradient(135deg, #fbf0d6, #f5e4b8);
  border: 2px solid var(--kiwami-1);
  border-radius: var(--radius);
  padding: 2rem 1.5rem;
  margin-bottom: 2rem;
  position: relative;
  box-shadow: 0 0 30px rgba(200, 153, 50, 0.25);
  animation: kiwamiGlow 3s ease-in-out infinite;
}
@keyframes kiwamiGlow{
  0%,100% { box-shadow: 0 0 20px rgba(200, 153, 50, 0.25) }
  50% { box-shadow: 0 0 40px rgba(200, 153, 50, 0.5) }
}
.kiwami-bonus::before,
.kiwami-bonus::after{
  content: '';
  position: absolute;
  left: 50%; transform: translateX(-50%);
  width: 60%;
  height: 2px;
  background: linear-gradient(to right, transparent, var(--kiwami-1), transparent);
}
.kiwami-bonus::before{ top: 12px }
.kiwami-bonus::after{ bottom: 12px }

.kiwami-deco-top, .kiwami-deco-bot{
  display: flex;
  justify-content: center;
  gap: 0.8rem;
  color: var(--kiwami-1);
  font-size: 0.8rem;
}
.kiwami-title{
  font-family: var(--yuji);
  font-size: 1.3rem;
  color: var(--kiwami-2);
  letter-spacing: 0.3em;
  padding-left: 0.3em;
  margin: 1rem 0;
  font-weight: 700;
}
.kiwami-msg{
  font-size: 0.88rem;
  color: var(--sumi-l);
  line-height: 2;
  margin-bottom: 1rem;
}
.x-mention{
  display: inline-block;
  background: var(--sumi);
  color: var(--kin-l);
  padding: 2px 8px;
  font-family: var(--yuji);
  font-size: 0.85rem;
  border-radius: 2px;
}

/* 関連 */
.related-block{ margin-top: 2rem }
.related-head{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-bottom: 1rem;
}
.related-deco{
  color: var(--line);
  font-size: 1rem;
}
.related-h{
  font-family: var(--yuji);
  font-size: 0.92rem;
  letter-spacing: 0.3em;
  color: var(--cha);
  font-weight: 500;
  padding-left: 0.3em;
}
.related-list{
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  text-align: left;
}
.related-item{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.8rem;
  padding: 0.8rem 1rem;
  background: var(--washi);
  border: 1px solid var(--line);
  border-left: 3px solid var(--kin);
  font-size: 0.88rem;
  color: var(--sumi);
  transition: all 0.2s;
}
.related-item:hover{
  background: #fbf4e3;
  border-left-color: var(--shu);
  transform: translateX(3px);
}
.r-rarity{
  font-family: var(--yuji);
  font-size: 0.78rem;
  padding: 3px 8px;
  color: var(--washi);
  font-weight: 700;
  letter-spacing: 0.1em;
  flex-shrink: 0;
  border-radius: 2px;
}
.r-rarity.SSR{ background: var(--kiwami-1) }
.r-rarity.SR{ background: var(--toku-1) }
.r-rarity.R{ background: var(--jou-1) }
.r-rarity.N{ background: var(--nami-1) }

.again-btn{
  display: inline-block;
  margin-top: 2rem;
  padding: 0.7rem 2rem;
  font-family: var(--yuji);
  font-size: 0.88rem;
  color: var(--cha);
  letter-spacing: 0.3em;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  transition: all 0.2s;
}
.again-btn:hover{
  background: var(--washi);
  border-color: var(--cha);
  color: var(--sumi);
}

/* ============================================
   投票 - お品書き帖
   ============================================ */
.shina-book{
  background: var(--washi);
  border: 1px solid var(--line);
  padding: 2.5rem 2rem;
  position: relative;
  box-shadow: var(--shadow-sumi);
}
.shina-book::before{
  content: '';
  position: absolute;
  top: 0; bottom: 0; left: 30px;
  border-left: 1px dashed var(--line);
}
.shina-book::after{
  content: '';
  position: absolute;
  top: 8px; left: 20px; bottom: 8px;
  width: 1px;
  background: var(--shu);
  opacity: 0.2;
}

.empty{
  text-align: center;
  color: var(--cha);
  padding: 2rem;
  font-family: var(--yuji);
  letter-spacing: 0.15em;
}

.vote-date{
  text-align: center;
  font-family: var(--yuji);
  font-size: 0.85rem;
  color: var(--cha);
  letter-spacing: 0.2em;
  margin-bottom: 1.5rem;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid var(--line);
}

.vote-options{
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.vote-opt{
  display: block;
  background: linear-gradient(to right, #fdf7eb, #fbf4e3);
  border: 1px solid var(--line);
  padding: 1.2rem 1.3rem;
  cursor: pointer;
  font-family: var(--mincho);
  font-size: 0.95rem;
  line-height: 1.7;
  text-align: left;
  width: 100%;
  color: var(--sumi);
  position: relative;
  transition: all 0.25s;
  overflow: hidden;
}
.vote-opt:hover{
  border-color: var(--shu);
  transform: translateX(4px);
  box-shadow: -3px 3px 0 var(--shu);
}
.vote-opt:hover .opt-letter{
  background: var(--shu-d);
}
.opt-letter{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--shu);
  color: var(--washi);
  font-family: var(--yuji);
  font-size: 1rem;
  font-weight: 700;
  margin-right: 0.8rem;
  vertical-align: middle;
  transition: all 0.2s;
  box-shadow: inset 0 0 0 2px var(--washi), inset 0 0 0 3px var(--shu);
}

.vote-opt.voted{
  background: linear-gradient(to right,
    rgba(178, 58, 46, 0.1) var(--pct, 0%),
    #fbf4e3 var(--pct, 0%));
  border-color: var(--shu);
  cursor: default;
  pointer-events: none;
}
.vote-opt.voted:hover{ transform: none; box-shadow: none }
.vote-opt.voted .opt-letter{ background: var(--shu) }

.vote-result{
  display: flex;
  justify-content: space-between;
  margin-top: 0.5rem;
  padding-left: calc(32px + 0.8rem);
  font-family: var(--yuji);
  font-size: 0.78rem;
  color: var(--cha);
  letter-spacing: 0.1em;
}

.vote-msg{
  text-align: center;
  margin-top: 1.5rem;
  font-family: var(--yuji);
  font-size: 0.88rem;
  color: var(--shu);
  letter-spacing: 0.2em;
  padding-left: 0.2em;
  padding-top: 1rem;
  border-top: 1px dashed var(--line);
}

/* ============================================
   カタログ - 目録
   ============================================ */
.toc-filter{
  display: flex;
  gap: 0.8rem;
  margin-bottom: 2rem;
  flex-wrap: wrap;
  align-items: center;
}
.toc-search{
  flex: 1;
  min-width: 200px;
  padding: 0.75rem 1.1rem;
  background: var(--washi);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-size: 0.92rem;
  font-family: var(--mincho);
  color: var(--sumi);
  outline: none;
  transition: all 0.2s;
}
.toc-search:focus{
  border-color: var(--shu);
  box-shadow: 0 0 0 2px rgba(178, 58, 46, 0.1);
}
.toc-tabs{
  display: flex;
  gap: 0.3rem;
  background: var(--washi);
  border: 1px solid var(--line);
  padding: 3px;
  border-radius: var(--radius);
}
.toc-tab{
  padding: 0.4rem 0.9rem;
  font-family: var(--yuji);
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  color: var(--cha);
  background: transparent;
  border-radius: var(--radius);
  transition: all 0.15s;
}
.toc-tab:hover{ color: var(--sumi) }
.toc-tab.active{
  background: var(--sumi);
  color: var(--washi);
}

.mokuroku{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 0.6rem;
  margin-bottom: 2rem;
}

.cat-item{
  background: var(--washi);
  border: 1px solid var(--line);
  border-left: 4px solid var(--nami-1);
  padding: 1rem 1.1rem;
  position: relative;
  transition: all 0.2s;
  color: var(--sumi);
}
.cat-item:hover{
  transform: translateY(-2px);
  box-shadow: -2px 4px 12px rgba(28, 22, 19, 0.1);
  border-color: var(--shu);
}
.cat-item[data-rarity="SSR"]{ border-left-color: var(--kiwami-1) }
.cat-item[data-rarity="SR"]{ border-left-color: var(--toku-1) }
.cat-item[data-rarity="R"]{ border-left-color: var(--jou-1) }

.cat-r{
  display: inline-block;
  font-family: var(--yuji);
  font-size: 0.72rem;
  padding: 2px 8px;
  color: var(--washi);
  font-weight: 700;
  letter-spacing: 0.1em;
  margin-bottom: 0.5rem;
  border-radius: 2px;
}
.cat-r.SSR{ background: var(--kiwami-1) }
.cat-r.SR{ background: var(--toku-1) }
.cat-r.R{ background: var(--jou-1) }
.cat-r.N{ background: var(--nami-1) }

.cat-title{
  font-weight: 500;
  font-size: 0.92rem;
  line-height: 1.6;
  color: var(--sumi);
}
.cat-member{
  font-family: var(--yuji);
  font-size: 0.7rem;
  color: var(--kin);
  margin-top: 0.4rem;
  letter-spacing: 0.1em;
}

/* 拡張: テーマ選択・並び順・既読 */
.toc-filter-2{
  margin-top: -1.4rem;
  margin-bottom: 1.6rem;
}
.toc-select{
  padding: 0.55rem 0.9rem;
  background: var(--washi);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-family: var(--mincho);
  font-size: 0.88rem;
  color: var(--sumi);
  cursor: pointer;
  outline: none;
}
.toc-select:focus{ border-color: var(--shu) }
.toc-toggle{
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 0.8rem;
  background: var(--washi);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font-family: var(--mincho);
  font-size: 0.86rem;
  color: var(--sumi);
  cursor: pointer;
}
.toc-toggle input{ accent-color: var(--shu) }
.toc-reset{
  font-family: var(--yuji);
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  color: var(--cha);
  background: transparent;
  border: 1px solid var(--line);
  padding: 0.5rem 0.9rem;
  border-radius: var(--radius);
  cursor: pointer;
  transition: all 0.15s;
}
.toc-reset:hover{ color: var(--shu); border-color: var(--shu) }
.toc-stat{
  font-family: var(--mincho);
  font-size: 0.82rem;
  color: var(--cha);
  margin-bottom: 0.6rem;
  letter-spacing: 0.06em;
}
.cat-date{
  font-family: var(--yuji);
  font-size: 0.7rem;
  color: var(--cha);
  margin-top: 0.35rem;
  letter-spacing: 0.06em;
}
.cat-read{
  position: absolute;
  top: 0.5rem;
  right: 0.6rem;
  font-family: var(--yuji);
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  color: var(--washi);
  background: var(--cha);
  padding: 1px 6px;
  border-radius: 2px;
  opacity: 0.85;
}
.cat-item.is-read{ opacity: 0.55 }
.cat-item.is-read:hover{ opacity: 1 }

/* ============================================
   Footer - 障子
   ============================================ */
.shoji{
  background: var(--sumi);
  color: var(--washi);
  padding: 3rem 1.5rem 2rem;
  margin-top: 2rem;
  position: relative;
  border-top: 8px double var(--cha);
}

.shoji-inner{
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
}
.shoji-brand{
  display: inline-flex;
  align-items: center;
  gap: 0.8rem;
  margin-bottom: 1.5rem;
}
.shoji-mark{
  width: 44px;
  height: 44px;
  border: 2px solid var(--kin-l);
  border-radius: 50%;
  color: var(--kin-l);
  font-family: var(--yuji);
  font-size: 1.4rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-3deg);
}
.shoji-name{
  font-family: var(--yuji);
  font-size: 1.2rem;
  letter-spacing: 0.15em;
  color: var(--kin-l);
}
.shoji-sub{
  font-size: 0.72rem;
  color: #8a7d6a;
  letter-spacing: 0.15em;
  margin-top: 2px;
}
.shoji-links{
  display: flex;
  gap: 1rem;
  justify-content: center;
  margin: 1rem 0;
  font-family: var(--yuji);
  font-size: 0.88rem;
}
.shoji-links a{
  color: var(--kin-l);
  letter-spacing: 0.1em;
  border-bottom: 1px solid transparent;
  transition: all 0.2s;
}
.shoji-links a:hover{ border-bottom-color: var(--kin-l) }
.shoji-links span{ color: #5a4e3f }
.shoji-copy{
  font-size: 0.72rem;
  color: #5a4e3f;
  margin-top: 1.5rem;
  letter-spacing: 0.1em;
}

/* ============================================
   Toast
   ============================================ */
.toast{
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  background: var(--sumi);
  color: var(--washi);
  padding: 0.8rem 1.5rem;
  font-family: var(--yuji);
  font-size: 0.85rem;
  letter-spacing: 0.15em;
  box-shadow: var(--shadow-deep);
  z-index: 100;
  animation: toastUp 0.3s ease;
  border-left: 3px solid var(--shu);
}
@keyframes toastUp{
  from { opacity: 0; transform: translate(-50%, 10px) }
  to { opacity: 1; transform: translate(-50%, 0) }
}

/* === 目利き帖（読者ランキング / TASK-015） === */
.ranking-me{
  text-align: center;
  font-family: var(--shippori, 'Shippori Mincho', serif);
  color: var(--sumi, #1C1613);
  background: rgba(255,255,255,0.55);
  border: 1px solid rgba(28,22,19,0.12);
  border-radius: 4px;
  padding: 0.9rem 1rem;
  margin: 0 auto 1.4rem;
  max-width: 540px;
  font-size: 0.95rem;
  line-height: 1.7;
}
.ranking-me .me-rank{
  font-family: var(--yuji, 'Yuji Syuku', serif);
  font-size: 1.6rem;
  color: var(--shu, #B23A2E);
  margin: 0 0.2rem;
}
.ranking-list{
  list-style: none;
  padding: 0;
  margin: 0 auto 1.5rem;
  max-width: 600px;
}
.ranking-list li{
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 0.7rem;
  align-items: center;
  padding: 0.7rem 0.9rem;
  background: rgba(255,255,255,0.5);
  border-bottom: 1px dashed rgba(28,22,19,0.15);
  font-family: var(--shippori, 'Shippori Mincho', serif);
}
.ranking-list li:first-child{ border-top: 1px dashed rgba(28,22,19,0.15) }
.ranking-list .rk-num{
  font-family: var(--yuji, 'Yuji Syuku', serif);
  font-size: 1.4rem;
  color: var(--sumi, #1C1613);
  text-align: center;
}
.ranking-list li:nth-child(1) .rk-num{ color: var(--kin, #B88A2F) }
.ranking-list li:nth-child(2) .rk-num{ color: #888 }
.ranking-list li:nth-child(3) .rk-num{ color: #b8714a }
.ranking-list .rk-name{
  font-size: 1rem;
  color: var(--sumi, #1C1613);
}
.ranking-list .rk-meta{
  font-size: 0.78rem;
  color: rgba(28,22,19,0.55);
  display: block;
  margin-top: 0.15rem;
}
.ranking-list .rk-score{
  font-family: var(--yuji, 'Yuji Syuku', serif);
  font-size: 1.1rem;
  color: var(--shu, #B23A2E);
}
.ranking-register{
  max-width: 600px;
  margin: 1.6rem auto 0;
  text-align: center;
}
.muted-line{
  font-size: 0.82rem;
  color: rgba(28,22,19,0.6);
  font-family: var(--shippori, 'Shippori Mincho', serif);
  line-height: 1.7;
  margin-bottom: 0.7rem;
}
.ranking-form{
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
  align-items: center;
}
.ip-tegaki{
  font-family: var(--shippori, 'Shippori Mincho', serif);
  font-size: 0.95rem;
  padding: 0.55rem 0.8rem;
  border: 1px solid rgba(28,22,19,0.25);
  border-radius: 2px;
  background: rgba(255,255,255,0.7);
  color: var(--sumi, #1C1613);
  min-width: 200px;
}
.ip-tegaki:focus{ outline: 2px solid rgba(178,58,46,0.35); outline-offset: 1px; }
.ranking-empty{
  text-align: center;
  font-family: var(--shippori, 'Shippori Mincho', serif);
  color: rgba(28,22,19,0.55);
  padding: 2rem 0;
}

/* Mobile */
@media(max-width: 640px){
  .hero{ padding: 3.5rem 1rem 4.5rem }
  .hero-lead{ font-size: 0.92rem }
  .dan{ padding: 3.5rem 1rem }
  .midashi-title{ font-size: 1.6rem }
  .omikuji-stage{ padding: 2rem 1.25rem }
  .ofuda{ padding: 1.2rem 1rem 1.5rem }
  .result-title{ font-size: 1.05rem }
  .rarity-stamp{ width: 90px; height: 90px; font-size: 3.2rem }
  .rarity-stamp.N{ font-size: 2.6rem }
  .ranking-list li{ grid-template-columns: 30px 1fr auto; padding: 0.6rem 0.5rem; }
  .ip-tegaki{ min-width: 0; flex: 1 1 calc(50% - 0.5rem); }
}
