/* button 

http://www.webdesignerwall.com/demo/css-buttons.html

usage:

html ex:
<div>
  <input class="btn pink" type="btn" value="Input Element" /> 
  <button class="btn pink">btn Tag</btn>
  <span class="btn pink">Span</span> 
  <div class="btn pink">Div</div> 
  <p class="btn pink">P Tag</p> 
  <h3 class="btn pink">H3</h3> 
</div>

color:
  black, gray, orange, red, blue, rosy, green, pink

style
  round, square

size:
  medium, big, exbig

---------------------------------------------- */
/* ===== RESET & BASE ===== */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:"Noto Sans JP",sans-serif;
  background:#f5f5f5;
  color:#1f2a24;
}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}

/* ===== PHONE FRAME ===== */
.frame{
  max-width:430px;
  margin:0 auto;
  background:#fff;
  min-height:100vh;
  position:relative;
  overflow-x:hidden;
}

/* PC譎ゅ?繝輔Ξ繝ｼ繝?繧偵き繝ｼ繝蛾｢ｨ縺ｫ */
@media(min-width:431px){
  body{
    background:#e8ecf0;
    min-height:100vh;
  }
  .frame{
    box-shadow:0 0 40px rgba(0,0,0,.15);
  }
}

/* ===== HEADER ===== */
.header{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-bottom:2px solid #f0f0f0;
  padding:10px 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.logo{
  display:flex;
  align-items:center;
  gap:8px;
  font-weight:900;
  font-size:18px;
  color:#1f2a24;
  letter-spacing:-.02em;
}
.logo-mark{
  width:36px;
  height:36px;
  border-radius:12px;
  background:linear-gradient(135deg,#ff5a5f,#ff8c61);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  box-shadow:0 4px 12px rgba(255,90,95,.35);
}
/* ===== HAMBURGER BUTTON (繝｡繝ｼ繧ｿ繝ｼ鬚ｨ) ===== */
.hamburger{
  width:44px;
  height:44px;
  border-radius:50%;
  background:#fff;
  border:2.5px solid #f0f0f0;
  box-shadow:0 3px 10px rgba(0,0,0,.10);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  cursor:pointer;
  position:relative;
  transition:.25s cubic-bezier(.4,0,.2,1);
  overflow:hidden;
}
/* 繝｡繝ｼ繧ｿ繝ｼ鬚ｨ縺ｮ蠑ｧ??VG縺ｧ謠冗判??*/
.hamburger::before{
  content:"";
  position:absolute;
  inset:3px;
  border-radius:50%;
  border:2px solid transparent;
  border-top-color:#ff5a5f;
  border-right-color:#ff5a5f;
  opacity:.35;
  transition:.25s;
}
.hamburger.is-open{
  background:#ff5a5f;
  border-color:#ff5a5f;
  box-shadow:0 4px 16px rgba(255,90,95,.45);
}
.hamburger.is-open::before{
  border-top-color:#fff;
  border-right-color:#fff;
  opacity:.5;
}
.hamburger-line{
  width:18px;
  height:2.5px;
  border-radius:999px;
  background:#1f2a24;
  transition:.25s cubic-bezier(.4,0,.2,1);
  transform-origin:center;
}
.hamburger.is-open .hamburger-line{background:#fff}
/* 髢九＞縺溘→縺?ﾃ?縺ｫ螟牙ｽ｢ */
.hamburger.is-open .hamburger-line:nth-child(1){
  transform:translateY(7.5px) rotate(45deg);
}
.hamburger.is-open .hamburger-line:nth-child(2){
  opacity:0;
  transform:scaleX(0);
}
.hamburger.is-open .hamburger-line:nth-child(3){
  transform:translateY(-7.5px) rotate(-45deg);
}

/* ===== MOBILE MENU ===== */
.mobile-menu-overlay{
  position:fixed;
  top:58px;
  left:0;right:0;bottom:0;
  background:rgba(0,0,0,.45);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  opacity:0;
  pointer-events:none;
  transition:opacity .3s;
  z-index:99;
}
.mobile-menu-overlay.is-open{
  opacity:1;
  pointer-events:auto;
}
.mobile-menu{
  position:fixed;
  top:58px;
  right:0;
  width:72%;
  max-width:300px;
  height:calc(100% - 58px);
  background:#fff;
  z-index:99;
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
  display:flex;
  flex-direction:column;
  overflow-y:auto;
}
.mobile-menu.is-open{
  transform:translateX(0);
}
/* 繝｡繝九Η繝ｼ荳企Κ縺ｮ繝｡繝ｼ繧ｿ繝ｼ鬚ｨ繝?さ */
.menu-header{
  padding:24px 20px 20px;
  background:linear-gradient(135deg,#ff5a5f,#ff8c61);
  position:relative;
  overflow:hidden;
}
.menu-header::before{
  content:"";
  position:absolute;
  width:140px;
  height:140px;
  border-radius:50%;
  border:14px solid rgba(255,255,255,.12);
  right:-40px;
  top:-40px;
}
.menu-header::after{
  content:"";
  position:absolute;
  width:80px;
  height:80px;
  border-radius:50%;
  border:10px solid rgba(255,255,255,.10);
  left:-20px;
  bottom:-20px;
}
/* 繝｡繝ｼ繧ｿ繝ｼ鬚ｨSVG繧｢繝ｼ繧ｯ */
.menu-meter{
  display:block;
  margin:0 auto 12px;
  position:relative;
  z-index:1;
}
.menu-header-title{
  font-size:15px;
  font-weight:900;
  color:#fff;
  text-align:center;
  position:relative;
  z-index:1;
  letter-spacing:.05em;
}
.menu-header-sub{
  font-size:10px;
  color:rgba(255,255,255,.8);
  text-align:center;
  margin-top:3px;
  position:relative;
  z-index:1;
  letter-spacing:.08em;
}
.menu-nav{
  flex:1;
  padding:12px 0;
}
.menu-nav-item{
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 20px;
  font-size:14px;
  font-weight:700;
  color:#1f2a24;
  border-bottom:1px solid #f5f5f5;
  transition:.15s;
  cursor:pointer;
}
.menu-nav-item:active{background:#fff8f8}
.menu-nav-item:last-child{border-bottom:none}
.menu-nav-icon{
  width:36px;
  height:36px;
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  flex-shrink:0;
}
.menu-nav-arrow{
  margin-left:auto;
  color:#ccc;
  font-size:12px;
}
.menu-footer{
  padding:16px 20px 24px;
  border-top:1px solid #f0f0f0;
  text-align:center;
  font-size:11px;
  color:#bbb;
}

/* ===== HERO ===== */
.hero{
  position:relative;
  width:100%;
  overflow:hidden;
  background:#1a1a2e;
}
.hero__bg{
  width:100%;
  height:auto;
  display:block;
}
.hero__overlay{
  position:absolute;
  inset:0;
  pointer-events:none;
}
.hero__btn{
  position:absolute;
  left:0;
  right:0;
  margin:0 auto;
  top:71%;
  width:88%;
  pointer-events:auto;
  display:block;
  transition:.15s;
}
.hero__btn:active{transform:scale(.97)}
.hero__btn img{
  width:100%;
  height:auto;
  display:block;
}

/* ===== SECTION BASE ===== */
.section{
  padding:32px 16px;
}
.section-label{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:5px 12px;
  border-radius:999px;
  background:#fff0f0;
  color:#ff5a5f;
  font-size:10px;
  font-weight:900;
  letter-spacing:.1em;
  margin-bottom:10px;
}
.section-label::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:50%;
  background:#ff5a5f;
}
.section-title{
  font-size:22px;
  font-weight:900;
  line-height:1.3;
  letter-spacing:-.02em;
  margin-bottom:6px;
}
.section-sub{
  font-size:13px;
  color:#888;
  margin-bottom:20px;
}

/* ===== DIVIDER ===== */
.divider{
  height:8px;
  background:#f5f5f5;
}

/* ===== 驕翫?譁ｹ3霆ｸ?医ご繝ｼ繝?繝輔Ξ繝ｼ繝?繧ｫ繝ｼ繝会ｼ?===== */
.mood-section{
  padding:36px 0;
  background:#fff;
}
.mood-section-inner{
  padding:0 16px;
}
/* 繧ｲ繝ｼ繝?繧ｵ繧､繝磯｢ｨ隕句?縺?*/
.mood-heading{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:6px;
}
.mood-heading-label{
  font-size:10px;
  font-weight:900;
  letter-spacing:.18em;
  color:#ff5a5f;
  text-transform:uppercase;
}
.mood-heading-line{
  flex:1;
  height:1px;
  background:linear-gradient(90deg,#ff5a5f 0%,rgba(255,90,95,0) 100%);
}
.mood-title{
  font-size:22px;
  font-weight:900;
  letter-spacing:-.02em;
  color:#1f2a24;
  margin-bottom:4px;
  line-height:1.25;
}
/* 繧ｿ繧､繝医Ν荳九?陬?｣ｾ繝ｩ繧､繝ｳ */
.mood-title-deco{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:20px;
}
.mood-title-deco span:nth-child(1){
  display:block;
  width:28px;
  height:3px;
  background:#ff5a5f;
}
.mood-title-deco span:nth-child(2){
  display:block;
  width:8px;
  height:3px;
  background:#ffd84d;
}
.mood-title-deco span:nth-child(3){
  display:block;
  width:4px;
  height:3px;
  background:#18c989;
}

.mood-grid{
  display:grid;
  gap:0;
  padding:0 16px;
}
/* 繧ｲ繝ｼ繝?繝輔Ξ繝ｼ繝?繧ｫ繝ｼ繝画悽菴?窶?隗剃ｸｸ縺ｪ縺?*/
.mood-card{
  position:relative;
  overflow:hidden;
  background:#111;
  padding:12px;
}

/* 繧､繝ｩ繧ｹ繝?100%蟷??邵ｦ讓ｪ豈斐◎縺ｮ縺ｾ縺ｾ */
.mood-card__img{
  width:100%;
  height:auto;
  display:block;
}

/* 證励ａ繧ｰ繝ｩ繝?が繝ｼ繝舌?繝ｬ繧､ */
.mood-card__overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(
    180deg,
    rgba(0,0,0,0) 35%,
    rgba(0,0,0,.78) 100%
  );
  pointer-events:none;
}

/* 繧ｫ繝ｩ繝ｼ繧｢繧ｯ繧ｻ繝ｳ繝医Λ繧､繝ｳ?井ｸ願ｾｺ??*/
.mood-card.red-accent  .mood-card__line{background:linear-gradient(90deg,#ff5a5f,#ff8c61)}
.mood-card.green-accent .mood-card__line{background:linear-gradient(90deg,#18c989,#6de5b8)}
.mood-card.yellow-accent .mood-card__line{background:linear-gradient(90deg,#ffd84d,#ffb300)}
.mood-card__line{
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:4px;
  z-index:4;
}

/* 繧ｲ繝ｼ繝?繝輔Ξ繝ｼ繝?鬚ｨ縺ｮ蝗幃嚆繧ｳ繝ｼ繝翫? */
.mood-card::before,
.mood-card::after{
  content:"";
  position:absolute;
  width:20px;
  height:20px;
  z-index:3;
  pointer-events:none;
}
.mood-card::before{
  top:18px;
  left:18px;
  border-top:2.5px solid rgba(255,255,255,.75);
  border-left:2.5px solid rgba(255,255,255,.75);
}
.mood-card::after{
  top:18px;
  right:18px;
  border-top:2.5px solid rgba(255,255,255,.75);
  border-right:2.5px solid rgba(255,255,255,.75);
}
.mood-card__corner-bl,
.mood-card__corner-br{
  position:absolute;
  width:20px;
  height:20px;
  z-index:3;
  pointer-events:none;
  bottom:18px;
}
.mood-card__corner-bl{
  left:18px;
  border-bottom:2.5px solid rgba(255,255,255,.75);
  border-left:2.5px solid rgba(255,255,255,.75);
}
.mood-card__corner-br{
  right:18px;
  border-bottom:2.5px solid rgba(255,255,255,.75);
  border-right:2.5px solid rgba(255,255,255,.75);
}

/* 繧ｫ繝ｼ繝蛾俣縺ｮ蛹ｺ蛻?ｊ邱?*/
.mood-card + .mood-card{
  border-top:2px solid #e8e8e8;
}

/* 繝?く繧ｹ繝医お繝ｪ繧｢ */
.mood-card__body{
  position:absolute;
  bottom:0;
  left:0;
  right:0;
  padding:16px 16px 18px;
  z-index:2;
}
/* 繝翫Φ繝舌?繝舌ャ繧ｸ */
.mood-card__num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:2px 8px;
  font-size:9px;
  font-weight:900;
  color:#fff;
  margin-bottom:6px;
  letter-spacing:.14em;
  text-transform:uppercase;
  clip-path:polygon(6px 0%,100% 0%,calc(100% - 6px) 100%,0% 100%);
}
.red-accent    .mood-card__num{background:#ff5a5f}
.green-accent  .mood-card__num{background:#18c989}
.yellow-accent .mood-card__num{background:#ffd84d;color:#7a5000}

/* 繧ｲ繝ｼ繝?繧ｵ繧､繝磯｢ｨ繧ｿ繧､繝医Ν */
.mood-card__body h3{
  font-size:20px;
  font-weight:900;
  color:#fff;
  margin-bottom:5px;
  letter-spacing:-.01em;
  line-height:1.2;
  text-shadow:0 2px 10px rgba(0,0,0,.6);
  /* 蟾ｦ縺ｫ邏ｰ縺?き繝ｩ繝ｼ繝懊?繝?繝ｼ */
  padding-left:10px;
  position:relative;
}
.red-accent    .mood-card__body h3::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;background:#ff5a5f}
.green-accent  .mood-card__body h3::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;background:#18c989}
.yellow-accent .mood-card__body h3::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;background:#ffd84d}

.mood-card__body p{
  font-size:12px;
  font-weight:700;
  color:#fff;
  line-height:1.6;
  text-shadow:0 1px 6px rgba(0,0,0,.7);
  padding-left:10px;
}

/* ===== PICKUP ===== */
.pickup-section{
  padding:32px 16px;
  background:#fff;
}

/* 繧ｰ繝ｪ繝?ラ??菴榊､ｧ??繝ｻ3菴阪ｒ讓ｪ荳ｦ縺ｳ蟆?*/
.pickup-grid{
  display:grid;
  gap:12px;
}

/* 笏?笏? 蜈ｱ騾壹き繝ｼ繝峨せ繧ｿ繧､繝ｫ 笏?笏? */
.pickup-card{
  display:block;
  background:#fff;
  border-radius:0;
  overflow:hidden;
  border:2.5px solid #1f2a24;
  box-shadow:5px 5px 0 #1f2a24;
  transition:.15s cubic-bezier(.4,0,.2,1);
  text-decoration:none;
  color:inherit;
}
.pickup-card:active{
  transform:translate(3px,3px);
  box-shadow:2px 2px 0 #1f2a24;
}

/* 笏?笏? 1菴搾ｼ亥､ｧ?牙ｰら畑 笏?笏? */
.pickup-card--main .pickup-visual img{
  width:100%;
  height:auto;
  display:block;
}

/* 笏?笏? 2繝ｻ3菴搾ｼ亥ｰ擾ｼ画ｨｪ荳ｦ縺ｳ繝ｩ繝?ヱ繝ｼ 笏?笏? */
.pickup-sub-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}

/* 蟆上き繝ｼ繝会ｼ夂判蜒上ｒ蝗ｺ螳夐ｫ倥＆縺ｧ繝医Μ繝溘Φ繧ｰ */
.pickup-card--sub .pickup-visual img{
  width:100%;
  height:130px;
  object-fit:cover;
  object-position:center top;
  display:block;
}

/* 笏?笏? 繝薙ず繝･繧｢繝ｫ蜈ｱ騾?笏?笏? */
.pickup-visual{
  position:relative;
  width:100%;
  overflow:hidden;
  background:#f5f5f5;
}

/* 繧ｫ繝ｩ繝ｼ繧｢繧ｯ繧ｻ繝ｳ繝医ヰ繝ｼ */
.pickup-card--main .pickup-visual::before{background:#ff5a5f}
.pickup-sub-row .pickup-card:nth-child(1) .pickup-visual::before{background:#ffd84d}
.pickup-sub-row .pickup-card:nth-child(2) .pickup-visual::before{background:#18c989}
.pickup-visual::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:4px;
  z-index:2;
}

/* 繝舌ャ繧ｸ */
.pickup-badge{
  position:absolute;
  top:8px;
  left:8px;
  z-index:3;
  background:#ff5a5f;
  color:#fff;
  font-size:10px;
  font-weight:900;
  letter-spacing:.06em;
  padding:4px 9px;
  border:2px solid #1f2a24;
  border-radius:0;
  box-shadow:2px 2px 0 #1f2a24;
  line-height:1;
}
.pickup-sub-row .pickup-card:nth-child(1) .pickup-badge{background:#ffd84d;color:#1f2a24}
.pickup-sub-row .pickup-card:nth-child(2) .pickup-badge{background:#18c989}

/* 笏?笏? 繝?く繧ｹ繝医お繝ｪ繧｢蜈ｱ騾?笏?笏? */
.pickup-body{
  padding:12px 14px 14px;
  border-top:2.5px solid #1f2a24;
}
.pickup-card--sub .pickup-body{
  padding:8px 10px 10px;
}

/* 繧ｿ繧ｰ */
.pickup-tags{
  display:flex;
  gap:5px;
  flex-wrap:wrap;
  margin-bottom:6px;
}
.tag{
  display:inline-block;
  padding:3px 8px;
  border-radius:0;
  font-size:10px;
  font-weight:900;
  border:1.5px solid currentColor;
  line-height:1.4;
}
.tag-red{color:#ff5a5f;background:#fff0f0}
.tag-green{color:#18a96a;background:#e8faf2}
.tag-yellow{color:#b07800;background:#fff9e0}
.tag-blue{color:#2f7fd4;background:#e8f3ff}
.tag-dark{color:#1f2a24;background:#f0f0f0}

/* 繧ｿ繧､繝医Ν */
.pickup-body h3{
  font-size:17px;
  font-weight:900;
  line-height:1.25;
  margin-bottom:4px;
  color:#1f2a24;
  letter-spacing:-.02em;
}
.pickup-card--sub .pickup-body h3{
  font-size:13px;
  margin-bottom:3px;
}

/* 繧ｳ繝斐? */
.pickup-body p{
  font-size:12px;
  color:#666;
  line-height:1.55;
  margin-bottom:12px;
}
.pickup-card--sub .pickup-body p{
  font-size:10px;
  margin-bottom:8px;
  line-height:1.5;
}

/* 驕翫?繝懊ち繝ｳ */
.play-btn{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:9px 20px;
  border-radius:0;
  background:#ff5a5f;
  color:#fff;
  font-size:13px;
  font-weight:900;
  border:2px solid #1f2a24;
  box-shadow:3px 3px 0 #1f2a24;
  letter-spacing:.02em;
  transition:.15s;
}
.play-btn:active{
  transform:translate(2px,2px);
  box-shadow:1px 1px 0 #1f2a24;
}
.pickup-card--sub .play-btn{
  font-size:11px;
  padding:7px 12px;
  box-shadow:2px 2px 0 #1f2a24;
  width:100%;
  justify-content:center;
}

/* ===== RANKING ===== */
.rank-section{
  padding:32px 16px;
  background-color:#ff5a5f;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.12) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(255,255,255,.07) 1px, transparent 1px);
  background-size:24px 24px, 12px 12px;
  background-position:0 0, 6px 6px;
}
.rank-section .mood-heading-label{color:#fff;opacity:.85}
.rank-section .mood-heading-line{background:linear-gradient(90deg,rgba(255,255,255,.7) 0%,rgba(255,255,255,0) 100%)}
.rank-section .mood-title{color:#fff}
.rank-section .mood-title-deco span:nth-child(1){background:#fff}
.rank-section .mood-title-deco span:nth-child(2){background:rgba(255,255,255,.6)}
.rank-section .mood-title-deco span:nth-child(3){background:rgba(255,255,255,.4)}

/* 繝ｪ繧ｹ繝亥?菴?窶?PICKUP縺ｨ蜷後§螟ｪ繧｢繧ｦ繝医Λ繧､繝ｳ?九ヵ繝ｩ繝?ヨ繧ｷ繝｣繝峨え */
.rank-list{
  display:grid;
  gap:12px;
}

/* 蜷?｡後き繝ｼ繝?*/
.rank-item{
  display:grid;
  grid-template-columns:56px 88px 1fr;
  align-items:center;
  gap:0;
  background:#fff;
  border:2.5px solid #1f2a24;
  box-shadow:5px 5px 0 #1f2a24;
  text-decoration:none;
  color:inherit;
  transition:.15s cubic-bezier(.4,0,.2,1);
  min-height:88px;
  overflow:hidden;
}
.rank-item:active{
  transform:translate(3px,3px);
  box-shadow:2px 2px 0 #1f2a24;
}

/* 1縲?菴搾ｼ壼ｷｦ霎ｺ縺ｫ繧ｫ繝ｩ繝ｼ繧｢繧ｯ繧ｻ繝ｳ繝医Λ繧､繝ｳ */
.rank-item:nth-child(1){border-left:5px solid #ff5a5f}
.rank-item:nth-child(2){border-left:5px solid #ffd84d}
.rank-item:nth-child(3){border-left:5px solid #18c989}

/* 鬆?ｽ咲分蜿ｷ繧ｨ繝ｪ繧｢ */
.rank-no-wrap{
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  min-height:88px;
  border-right:2px solid #e8e8e8;
  flex-shrink:0;
}
.rank-no{
  width:38px;
  height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:900;
  font-size:20px;
  color:#1f2a24;
  background:none;
}
/* 1縲?菴阪?濶ｲ莉倥″繝舌ャ繧ｸ */
.rank-item:nth-child(1) .rank-no{
  color:#fff;
  background:#ff5a5f;
  box-shadow:2px 2px 0 #1f2a24;
}
.rank-item:nth-child(2) .rank-no{
  color:#7a5000;
  background:#ffd84d;
  box-shadow:2px 2px 0 #1f2a24;
}
.rank-item:nth-child(3) .rank-no{
  color:#fff;
  background:#18c989;
  box-shadow:2px 2px 0 #1f2a24;
}

/* 繧ｵ繝?繝阪う繝ｫ繧ｨ繝ｪ繧｢ */
.rank-thumb-wrap{
  width:88px;
  height:88px;
  overflow:hidden;
  border-right:2px solid #e8e8e8;
  flex-shrink:0;
  background:#f5f5f5;
  display:flex;
  align-items:center;
  justify-content:center;
}
.rank-thumb-wrap img{
  width:88px;
  height:88px;
  object-fit:cover;
  display:block;
}

/* 繝?く繧ｹ繝医お繝ｪ繧｢ */
.rank-copy{
  padding:0 14px;
  min-width:0;
}
.rank-copy h3{
  font-size:15px;
  font-weight:900;
  margin-bottom:4px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  color:#1f2a24;
}
.rank-copy p{
  font-size:12px;
  color:#999;
  line-height:1.5;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* 繧ｸ繝｣繝ｳ繝ｫ繧ｿ繧ｰ 窶?PICKUP縺ｮtag縺ｨ蜷後せ繧ｿ繧､繝ｫ */
.rank-pill{
  padding:5px 9px;
  border-radius:0;
  font-size:10px;
  font-weight:900;
  white-space:nowrap;
  margin-right:12px;
  border:1.5px solid currentColor;
  letter-spacing:.04em;
  color:#666;
  background:#f5f5f5;
}
.rank-item:nth-child(1) .rank-pill{color:#ff5a5f;background:#fff0f0}
.rank-item:nth-child(2) .rank-pill{color:#b07800;background:#fff9e0}
.rank-item:nth-child(3) .rank-pill{color:#18a96a;background:#e8faf2}

/* ===== CATEGORY SECTION ===== */
.cat-section{
  padding:32px 16px;
  background:#fff;
}

/* 繧ｫ繝?ざ繝ｪ繝悶Ο繝?け */
.cat-block{
  margin-bottom:28px;
}
.cat-block:last-child{margin-bottom:0}

/* 繧ｫ繝?ざ繝ｪ繝倥ャ繝?繝ｼ陦?*/
.cat-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:10px;
  padding-bottom:8px;
  border-bottom:2.5px solid #1f2a24;
}
.cat-header-left{
  display:flex;
  align-items:center;
  gap:8px;
}
.cat-icon{
  width:30px;
  height:30px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:16px;
  border:2px solid #1f2a24;
  flex-shrink:0;
}
.cat-name{
  font-size:16px;
  font-weight:900;
  letter-spacing:.02em;
  color:#1f2a24;
}
/* 繧ゅ▲縺ｨ隕九ｋ繝ｪ繝ｳ繧ｯ */
.cat-more{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:5px 12px;
  font-size:11px;
  font-weight:900;
  color:#ff5a5f;
  border:2px solid #ff5a5f;
  background:#fff;
  text-decoration:none;
  transition:.15s;
  white-space:nowrap;
  box-shadow:2px 2px 0 #ff5a5f;
}
.cat-more:active{
  transform:translate(2px,2px);
  box-shadow:none;
}

/* 繧ｲ繝ｼ繝?繧ｰ繝ｪ繝?ラ 3蛻?*/
.game-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
}
.game-item{
  display:block;
  background:#fff;
  border:2.5px solid #1f2a24;
  box-shadow:3px 3px 0 #1f2a24;
  overflow:hidden;
  text-decoration:none;
  color:inherit;
  transition:.15s cubic-bezier(.4,0,.2,1);
}
.game-item:active{
  transform:translate(2px,2px);
  box-shadow:1px 1px 0 #1f2a24;
}
.game-item-thumb{
  width:100%;
  aspect-ratio:1;
  object-fit:cover;
  display:block;
}
.game-item-thumb-placeholder{
  width:100%;
  aspect-ratio:1;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:28px;
}
.game-item-body{
  padding:6px 8px 8px;
  border-top:2px solid #1f2a24;
}
.game-item-body h3{
  font-size:11px;
  font-weight:900;
  line-height:1.3;
  color:#1f2a24;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* ===== EASY ===== */
.easy-section{
  padding:32px 16px;
  background-color:#ff5a5f;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.12) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(255,255,255,.07) 1px, transparent 1px);
  background-size:24px 24px, 12px 12px;
  background-position:0 0, 6px 6px;
  position:relative;
}
.easy-section .mood-heading-label{color:#fff;opacity:.85}
.easy-section .mood-heading-line{background:linear-gradient(90deg,rgba(255,255,255,.7) 0%,rgba(255,255,255,0) 100%)}
.easy-section .mood-title{color:#fff}
.easy-section .mood-title-deco span:nth-child(1){background:#fff}
.easy-section .mood-title-deco span:nth-child(2){background:rgba(255,255,255,.6)}
.easy-section .mood-title-deco span:nth-child(3){background:rgba(255,255,255,.4)}

/* 3繧ｫ繝ｼ繝臥ｸｦ遨阪∩ */
.easy-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
}

/* 繧ｫ繝ｼ繝会ｼ壼､ｪ繧｢繧ｦ繝医Λ繧､繝ｳ?九ヵ繝ｩ繝?ヨ繧ｷ繝｣繝峨え縺ｧ邨ｱ荳? */
.easy-card{
  background:#fff;
  border:2.5px solid #1f2a24;
  box-shadow:4px 4px 0 #1f2a24;
  padding:16px 18px;
  position:relative;
  overflow:hidden;
  display:grid;
  grid-template-columns:52px 1fr;
  align-items:center;
  gap:14px;
  text-align:left;
}
/* 繧ｫ繝ｼ繝牙ｷｦ霎ｺ繧ｫ繝ｩ繝ｼ繝ｩ繧､繝ｳ */
.easy-card:nth-child(1){border-left:5px solid #ffd84d}
.easy-card:nth-child(2){border-left:5px solid #18c989}
.easy-card:nth-child(3){border-left:5px solid #6bbcff}

/* 繧｢繧､繧ｳ繝ｳ譫? */
.easy-icon-wrap{
  width:52px;
  height:52px;
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:26px;
  border:2px solid rgba(0,0,0,.15);
  position:relative;
  z-index:1;
  background:rgba(255,255,255,.9);
}

/* h3縺ｨp繧偵∪縺ｨ繧√※蜿ｳ繧ｫ繝ｩ繝?縺ｫ蜿弱ａ繧?*/
.easy-card-text{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:0;
}
.easy-card h3{
  font-size:14px;
  font-weight:900;
  color:#1f2a24;
  line-height:1.4;
  margin:0;
  position:relative;
  z-index:1;
}
.easy-card p{
  font-size:11px;
  color:#666;
  line-height:1.5;
  position:relative;
  z-index:1;
  margin:0;
}

/* 繧ｭ繝｣繝ｪ繧｢繝舌ャ繧ｸ陦?*/
.easy-carriers{
  display:flex;
  gap:6px;
  justify-content:center;
  flex-wrap:wrap;
  margin-top:20px;
  padding-top:16px;
  border-top:2px solid #f0f0f0;
}
.easy-carrier{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:6px 12px;
  font-size:11px;
  font-weight:900;
  color:#1f2a24;
  border:2px solid #1f2a24;
  box-shadow:2px 2px 0 #1f2a24;
  background:#fff;
  letter-spacing:.03em;
}
.easy-carrier-note{
  font-size:10px;
  color:#999;
  text-align:center;
  margin-top:8px;
  line-height:1.5;
}

/* ===== HOW TO PLAY ===== */
.howto-section{
  padding:32px 16px;
  background:#fff;
}
.howto-steps{
  display:grid;
  gap:0;
  position:relative;
}
/* 繧ｹ繝?ャ繝鈴俣縺ｮ遏｢蜊ｰ繝ｩ繧､繝ｳ */
.howto-steps::before{
  content:"";
  position:absolute;
  left:27px;
  top:52px;
  bottom:52px;
  width:2px;
  background:repeating-linear-gradient(
    to bottom,
    #ff5a5f 0px, #ff5a5f 6px,
    transparent 6px, transparent 12px
  );
  z-index:0;
}
.howto-step{
  display:grid;
  grid-template-columns:56px 1fr;
  align-items:center;
  gap:14px;
  padding:14px 0;
  position:relative;
  z-index:1;
}
.howto-step + .howto-step{
  border-top:1px dashed #f0f0f0;
}
/* 逡ｪ蜿ｷ繝舌ャ繧ｸ */
.howto-num{
  width:56px;
  height:56px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  background:#fff;
  border:2.5px solid #1f2a24;
  box-shadow:3px 3px 0 #1f2a24;
  flex-shrink:0;
  position:relative;
  z-index:2;
}
.howto-num-label{
  font-size:8px;
  font-weight:900;
  letter-spacing:.1em;
  color:#ff5a5f;
  line-height:1;
  margin-bottom:2px;
}
.howto-num-no{
  font-size:22px;
  font-weight:900;
  color:#1f2a24;
  line-height:1;
}
/* 1縲?縺ｧ繧｢繧ｯ繧ｻ繝ｳ繝医き繝ｩ繝ｼ螟牙喧 */
.howto-step:nth-child(1) .howto-num{border-color:#ff5a5f;box-shadow:3px 3px 0 #ff5a5f}
.howto-step:nth-child(1) .howto-num-no{color:#ff5a5f}
.howto-step:nth-child(2) .howto-num{border-color:#18c989;box-shadow:3px 3px 0 #18c989}
.howto-step:nth-child(2) .howto-num-no{color:#18c989}
.howto-step:nth-child(2) .howto-num-label{color:#18c989}
.howto-step:nth-child(3) .howto-num{border-color:#ffd84d;box-shadow:3px 3px 0 #ffd84d}
.howto-step:nth-child(3) .howto-num-no{color:#ffd84d}
.howto-step:nth-child(3) .howto-num-label{color:#ffd84d}

.howto-body h3{
  font-size:17px;
  font-weight:900;
  color:#1f2a24;
  margin-bottom:3px;
  letter-spacing:-.01em;
}
.howto-body p{
  font-size:12px;
  color:#888;
  line-height:1.55;
  margin:0;
}

/* ===== CTA ===== */
/* ---- 繧ｭ繝ｼ繝輔Ξ繝ｼ繝? ---- */
@keyframes cta-pulse{
  0%,100%{box-shadow:7px 7px 0 #1f2a24,0 0 0 0 rgba(255,90,95,.5)}
  50%{box-shadow:7px 7px 0 #1f2a24,0 0 0 12px rgba(255,90,95,0)}
}
@keyframes cta-btn-pulse{
  0%,100%{box-shadow:4px 4px 0 #1f2a24,0 0 0 0 rgba(255,255,255,.7)}
  55%{box-shadow:4px 4px 0 #1f2a24,0 0 0 14px rgba(255,255,255,0)}
}
@keyframes cta-btn-arrow{
  0%,100%{transform:translateX(0)}
  50%{transform:translateX(6px)}
}
.cta-btn-arrow{
  display:inline-block;
  animation:cta-btn-arrow .7s ease-in-out infinite;
}
@keyframes eyebrow-blink{
  0%,90%,100%{opacity:1}
  95%{opacity:.3}
}
@keyframes badge-pop{
  0%{transform:scale(1)}
  40%{transform:scale(1.12)}
  70%{transform:scale(.96)}
  100%{transform:scale(1)}
}
@keyframes cta-img-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-5px)}
}
/* 繧ｹ繧ｯ繝ｭ繝ｼ繝ｫ縺ｧ蜃ｺ迴ｾ */
@keyframes fade-up{
  from{opacity:0;transform:translateY(24px)}
  to{opacity:1;transform:translateY(0)}
}
.cta-animate{
  opacity:0;
}
.cta-animate.is-visible{
  animation:fade-up .55s cubic-bezier(.4,0,.2,1) forwards;
}
.cta-animate:nth-child(2){animation-delay:.1s}
.cta-animate:nth-child(3){animation-delay:.2s}
.cta-animate:nth-child(4){animation-delay:.3s}

.cta-section{
  padding:0 16px 40px;
  background:#fff;
}

/* 螟匁棧?壹ヱ繝ｫ繧ｹ繧ｰ繝ｭ繝ｼ */
.cta-box{
  position:relative;
  overflow:hidden;
  border:3px solid #1f2a24;
  box-shadow:7px 7px 0 #1f2a24;
  background:#ff5a5f;
  animation:cta-pulse 2.4s ease-in-out infinite;
}

/* 謖ｿ邨ｵ?壹?繧上?繧乗ｵｮ驕?*/
.cta-img{
  width:100%;
  display:block;
  height:auto;
  border-bottom:3px solid #1f2a24;
  animation:cta-img-float 3.5s ease-in-out infinite;
}

.cta-body{
  padding:24px 20px 28px;
  position:relative;
  z-index:1;
  text-align:center;
}

/* eyebrow?夂せ貊?*/
.cta-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 12px;
  background:#1f2a24;
  color:#ffd84d;
  font-size:10px;
  font-weight:900;
  letter-spacing:.14em;
  margin-bottom:12px;
  animation:eyebrow-blink 2s ease-in-out infinite;
}

.cta-box h2{
  font-size:26px;
  font-weight:900;
  color:#fff;
  line-height:1.25;
  margin-bottom:6px;
  letter-spacing:-.02em;
  text-shadow:3px 3px 0 rgba(0,0,0,.2);
}

/* 繝舌ャ繧ｸ?壽凾蟾ｮ繝昴ャ繝?*/
.cta-badges{
  display:flex;
  justify-content:center;
  gap:8px;
  flex-wrap:nowrap;
  margin:12px 0 20px;
}
/* 繝舌ャ繧ｸ?壽万繧√き繝?ヨ縺ｮ繧ｲ繝ｼ繝?繝輔Ξ繝ｼ繝? */
.cta-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:8px 0;
  flex:1;
  font-size:11px;
  font-weight:900;
  color:#fff;
  text-decoration:none;
  letter-spacing:.03em;
  white-space:nowrap;
  clip-path:polygon(10px 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);
}
.cta-badge:nth-child(1){
  background:#18c989;
  animation:badge-pop 2.2s ease-in-out .0s infinite;
}
.cta-badge:nth-child(2){
  background:#1f2a24;
  animation:badge-pop 2.2s ease-in-out .3s infinite;
}
.cta-badge:nth-child(3){
  background:#ffd84d;
  color:#1f2a24;
  animation:badge-pop 2.2s ease-in-out .6s infinite;
}

/* 繝懊ち繝ｳ?壹ヱ繝ｫ繧ｹ繧ｰ繝ｭ繝ｼ */
.cta-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:16px 0;
  width:100%;
  background:#fff;
  color:#ff5a5f;
  font-weight:900;
  font-size:17px;
  border:2.5px solid #1f2a24;
  box-shadow:4px 4px 0 #1f2a24;
  letter-spacing:.02em;
  text-decoration:none;
  transition:.15s;
  animation:cta-btn-pulse 1.8s ease-in-out infinite;
}
.cta-btn:active{
  transform:translate(3px,3px);
  box-shadow:1px 1px 0 #1f2a24;
}

/* ===== BATTLE SECTION ===== */
.battle-section{
  padding:32px 16px 36px;
  background:#0d0d1a;
  position:relative;
  overflow:hidden;
}
.battle-section::before{
  content:'';
  position:absolute;
  inset:0;
  background-image:radial-gradient(circle,rgba(255,90,95,.15) 1.5px,transparent 1.5px);
  background-size:18px 18px;
  pointer-events:none;
}
/* 隕句?縺暦ｼ育區譁?ｭ礼沿??*/
.battle-section .mood-heading{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.battle-section .mood-heading-label{font-size:11px;font-weight:900;letter-spacing:.12em;color:rgba(255,255,255,.5);text-transform:uppercase;white-space:nowrap;}
.battle-section .mood-heading-line{flex:1;height:2px;background:rgba(255,255,255,.12);}
.battle-section .mood-title{font-size:22px;font-weight:900;color:#fff;line-height:1.3;letter-spacing:-.01em;margin-bottom:4px;}
.battle-section .mood-title-deco{display:flex;gap:5px;margin-bottom:20px;}
.battle-section .mood-title-deco span{width:8px;height:8px;border-radius:50%;}
.battle-section .mood-title-deco span:nth-child(1){background:#ff5a5f;}
.battle-section .mood-title-deco span:nth-child(2){background:#ffd84d;}
.battle-section .mood-title-deco span:nth-child(3){background:#18c989;}

/* ===== 繧｢繝ｪ繝ｼ繝雁?騾?===== */
.battle-arena{
  position:relative;
  background:#12122a;
  border:2.5px solid rgba(255,255,255,.12);
  box-shadow:6px 6px 0 rgba(255,90,95,.5);
  overflow:hidden;
  min-height:420px;
}

/* ===== 逕ｻ髱｢蛻?ｊ譖ｿ縺亥?騾?===== */
.battle-screen{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:24px 20px;
  gap:16px;
  transition:opacity .35s ease, transform .35s ease;
}
.battle-screen.hidden{
  opacity:0;
  pointer-events:none;
  transform:scale(.95);
}
.battle-screen.visible{
  opacity:1;
  pointer-events:auto;
  transform:scale(1);
}

/* ===== START逕ｻ髱｢ ===== */
#bsStart{
  text-align:center;
  background:radial-gradient(ellipse at 50% 60%, rgba(255,90,95,.18) 0%, transparent 70%);
}
.bs-start-monster{
  font-size:90px;
  line-height:1;
  animation:start-float 2.4s ease-in-out infinite;
  filter:drop-shadow(0 8px 24px rgba(255,90,95,.5));
}
@keyframes start-float{
  0%,100%{transform:translateY(0) rotate(-3deg);}
  50%{transform:translateY(-12px) rotate(3deg);}
}
.bs-start-title{
  font-size:20px;
  font-weight:900;
  color:#fff;
  letter-spacing:.04em;
  text-shadow:0 2px 12px rgba(255,90,95,.6);
}
.bs-start-sub{
  font-size:12px;
  color:rgba(255,255,255,.55);
  letter-spacing:.06em;
  line-height:1.6;
}
.bs-start-btn{
  width:100%;
  padding:18px 0;
  background:#ff5a5f;
  color:#fff;
  font-size:22px;
  font-weight:900;
  border:3px solid #fff;
  box-shadow:0 0 0 3px #ff5a5f, 6px 6px 0 #1f2a24;
  letter-spacing:.06em;
  cursor:pointer;
  border-radius:0;
  -webkit-tap-highlight-color:transparent;
  animation:start-btn-pulse 1.6s ease-in-out infinite;
  transition:.1s;
}
.bs-start-btn:active{transform:translate(4px,4px);box-shadow:0 0 0 3px #ff5a5f,2px 2px 0 #1f2a24;}
@keyframes start-btn-pulse{
  0%,100%{box-shadow:0 0 0 3px #ff5a5f,6px 6px 0 #1f2a24,0 0 0 0 rgba(255,90,95,0);}
  50%{box-shadow:0 0 0 3px #ff5a5f,6px 6px 0 #1f2a24,0 0 20px 8px rgba(255,90,95,.35);}
}
.bs-monster-hp-preview{
  font-size:11px;
  color:rgba(255,255,255,.4);
  letter-spacing:.05em;
}

/* ===== BATTLE逕ｻ髱｢ ===== */
#bsBattle{
  justify-content:flex-start;
  padding:16px 16px 20px;
  gap:10px;
}

/* HP繝舌? */
.battle-hp-wrap{width:100%;}
.battle-hp-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
.battle-hp-name{font-size:13px;font-weight:900;color:#ff5a5f;letter-spacing:.05em;}
.battle-hp-val{font-size:12px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;}
.battle-hp-bar{
  width:100%;height:16px;
  background:rgba(255,255,255,.08);
  border:2px solid rgba(255,255,255,.18);
  overflow:hidden;position:relative;
}
.battle-hp-fill{
  height:100%;
  background:linear-gradient(90deg,#ff5a5f,#ff8c61);
  transition:width .2s ease;
  position:relative;
}
.battle-hp-fill::after{
  content:'';position:absolute;
  top:2px;left:6px;right:6px;height:3px;
  background:rgba(255,255,255,.3);border-radius:2px;
}

/* 繝｢繝ｳ繧ｹ繧ｿ繝ｼ繧ｨ繝ｪ繧｢ */
.battle-stage{
  width:100%;
  height:180px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
}
/* 閭梧勹繧ｨ繝輔ぉ繧ｯ繝?*/
.battle-stage-bg{
  position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 60%, rgba(255,90,95,.12) 0%, transparent 65%);
  pointer-events:none;
}
.battle-monster{
  width:120px;height:120px;
  border-radius:50%;
  border:3px solid rgba(255,255,255,.15);
  background:#1a1a2e;
  display:flex;align-items:center;justify-content:center;
  font-size:64px;
  position:relative;
  z-index:2;
  filter:drop-shadow(0 4px 16px rgba(255,90,95,.4));
  transition:transform .06s;
}
.battle-monster.hit{animation:mon-hit .18s ease;}
.battle-monster.critical{animation:mon-critical .3s ease;}
.battle-monster.danger-pulse{animation:mon-danger .5s ease-in-out infinite;}
.battle-monster.dead{animation:mon-dead .55s ease forwards;}
@keyframes mon-hit{
  0%{transform:translate(0,0) scale(1);}
  30%{transform:translate(-8px,4px) scale(.93) rotate(-5deg);}
  60%{transform:translate(6px,-3px) scale(.96) rotate(3deg);}
  100%{transform:translate(0,0) scale(1);}
}
@keyframes mon-critical{
  0%{transform:scale(1) rotate(0);filter:drop-shadow(0 4px 16px rgba(255,90,95,.4));}
  20%{transform:scale(1.18) rotate(-8deg);filter:drop-shadow(0 0 30px rgba(255,220,0,1));}
  40%{transform:scale(.88) rotate(6deg);filter:drop-shadow(0 0 20px rgba(255,90,95,.8));}
  70%{transform:scale(1.06) rotate(-3deg);}
  100%{transform:scale(1) rotate(0);filter:drop-shadow(0 4px 16px rgba(255,90,95,.4));}
}
@keyframes mon-danger{
  0%,100%{filter:drop-shadow(0 4px 16px rgba(255,90,95,.4));}
  50%{filter:drop-shadow(0 0 24px rgba(255,50,50,1)) brightness(1.3);}
}
@keyframes mon-dead{
  0%{transform:scale(1) rotate(0);opacity:1;}
  25%{transform:scale(1.25) rotate(-12deg);opacity:.9;}
  60%{transform:scale(.5) rotate(25deg);opacity:.5;}
  100%{transform:scale(0) rotate(40deg);opacity:0;}
}

/* 繝?繝｡繝ｼ繧ｸ謨ｰ蟄?*/
.battle-dmg{
  position:absolute;
  font-weight:900;
  pointer-events:none;
  z-index:10;
  text-shadow:0 2px 8px rgba(0,0,0,.8);
  white-space:nowrap;
  animation:dmg-up .75s ease forwards;
}
.battle-dmg.normal{font-size:24px;color:#fff;}
.battle-dmg.critical{font-size:34px;color:#ffd84d;animation:dmg-critical .75s ease forwards;}
@keyframes dmg-up{
  0%{opacity:1;transform:translateY(0) scale(1);}
  20%{transform:translateY(-10px) scale(1.1);}
  100%{opacity:0;transform:translateY(-55px) scale(.8);}
}
@keyframes dmg-critical{
  0%{opacity:1;transform:translateY(0) scale(1.4) rotate(-5deg);}
  20%{transform:translateY(-14px) scale(1.6) rotate(3deg);}
  100%{opacity:0;transform:translateY(-65px) scale(.9) rotate(0);}
}

/* CRITICAL 繝?く繧ｹ繝?*/
.battle-critical-text{
  position:absolute;
  top:10px;left:50%;
  transform:translateX(-50%);
  font-size:18px;font-weight:900;
  color:#ffd84d;
  letter-spacing:.1em;
  text-shadow:0 0 16px rgba(255,220,0,.8),0 2px 4px rgba(0,0,0,.8);
  pointer-events:none;
  z-index:11;
  animation:crit-text .7s ease forwards;
}
@keyframes crit-text{
  0%{opacity:0;transform:translateX(-50%) scale(.5);}
  30%{opacity:1;transform:translateX(-50%) scale(1.2);}
  70%{opacity:1;transform:translateX(-50%) scale(1);}
  100%{opacity:0;transform:translateX(-50%) scale(.9) translateY(-20px);}
}

/* 繝偵ャ繝医ヵ繝ｩ繝?す繝･ */
.battle-flash{
  position:absolute;inset:0;
  pointer-events:none;z-index:9;
  border-radius:0;
  opacity:0;
}
.battle-flash.hit-flash{animation:hit-flash .2s ease;}
.battle-flash.crit-flash{animation:crit-flash .3s ease;}
@keyframes hit-flash{
  0%{opacity:.35;background:#fff;}
  100%{opacity:0;}
}
@keyframes crit-flash{
  0%{opacity:.6;background:#ffd84d;}
  50%{opacity:.3;background:#ff5a5f;}
  100%{opacity:0;}
}

/* 繝代?繝?ぅ繧ｯ繝ｫ */
.battle-particle{
  position:absolute;
  border-radius:50%;
  pointer-events:none;z-index:8;
  animation:particle-burst .65s ease forwards;
  transform-origin:center;
}
@keyframes particle-burst{
  0%{opacity:1;transform:translate(0,0) scale(1);}
  100%{opacity:0;transform:translate(var(--px,40px),var(--py,-40px)) scale(0);}
}

/* 繧ｳ繝ｳ繝?*/
.battle-combo-wrap{
  min-height:28px;
  display:flex;align-items:center;justify-content:center;
  width:100%;
}
.battle-combo{
  font-size:14px;font-weight:900;
  color:#ffd84d;letter-spacing:.06em;
  transition:.15s;
}
.battle-combo.lv1{font-size:14px;color:#fff;}
.battle-combo.lv2{font-size:16px;color:#18c989;animation:combo-pop .25s ease;}
.battle-combo.lv3{font-size:20px;color:#ffd84d;animation:combo-pop .25s ease;}
.battle-combo.lv4{font-size:24px;color:#ff5a5f;animation:combo-pop .25s ease;text-shadow:0 0 12px rgba(255,90,95,.7);}
@keyframes combo-pop{
  0%{transform:scale(1.5);}
  100%{transform:scale(1);}
}

/* 騾｣謇薙?繧ｿ繝ｳ */
.battle-btn{
  width:100%;padding:18px 0;
  background:#ff5a5f;color:#fff;
  font-size:22px;font-weight:900;
  border:2.5px solid #fff;
  box-shadow:0 0 0 2.5px #ff5a5f, 5px 5px 0 #1f2a24;
  letter-spacing:.05em;
  cursor:pointer;
  user-select:none;-webkit-user-select:none;
  -webkit-tap-highlight-color:transparent;
  border-radius:0;
  transition:.08s;
  position:relative;
  overflow:hidden;
}
.battle-btn::after{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,.15) 0%,transparent 60%);
  pointer-events:none;
}
.battle-btn:active{
  transform:translate(4px,4px);
  box-shadow:0 0 0 2.5px #ff5a5f,1px 1px 0 #1f2a24;
}
.battle-btn:disabled{
  background:#444;color:#888;
  box-shadow:none;transform:none;border-color:#555;
}

/* ===== RESULT逕ｻ髱｢ ===== */
#bsResult{
  justify-content:flex-start;
  padding:20px 16px 24px;
  gap:14px;
  background:radial-gradient(ellipse at 50% 0%, rgba(255,220,0,.12) 0%, transparent 60%);
}
.bs-result-fanfare{
  font-size:13px;font-weight:900;
  color:#ffd84d;letter-spacing:.1em;
  text-align:center;
  animation:fanfare-in .5s ease;
}
@keyframes fanfare-in{
  0%{opacity:0;transform:scale(.6);}
  60%{transform:scale(1.1);}
  100%{opacity:1;transform:scale(1);}
}
.bs-result-stars{
  display:flex;gap:6px;justify-content:center;
  animation:stars-in .6s ease .1s both;
}
@keyframes stars-in{
  0%{opacity:0;transform:translateY(10px);}
  100%{opacity:1;transform:translateY(0);}
}
.bs-result-star{
  font-size:22px;
  animation:star-spin .5s ease forwards;
}
.bs-result-star:nth-child(2){animation-delay:.1s;}
.bs-result-star:nth-child(3){animation-delay:.2s;}
@keyframes star-spin{
  0%{opacity:0;transform:scale(0) rotate(-180deg);}
  100%{opacity:1;transform:scale(1) rotate(0);}
}
.bs-result-card{
  width:100%;
  background:#fff;
  border:2.5px solid #1f2a24;
  box-shadow:6px 6px 0 rgba(255,90,95,.6);
  display:flex;align-items:stretch;
  overflow:hidden;
  text-decoration:none;color:#1f2a24;
  transition:.1s;
  animation:card-in .45s ease .15s both;
  min-height:100px;
  max-height:120px;
}
@keyframes card-in{
  0%{opacity:0;transform:translateY(20px) scale(.95);}
  100%{opacity:1;transform:translateY(0) scale(1);}
}
.bs-result-card:active{transform:translate(4px,4px);box-shadow:2px 2px 0 rgba(255,90,95,.6);}
.bs-result-thumb{width:100px;height:100%;min-height:100px;flex-shrink:0;overflow:hidden;}
.bs-result-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.bs-result-body{flex:1;min-width:0;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;gap:5px;overflow:hidden;}
.bs-result-badge{
  display:inline-block;background:#ff5a5f;color:#fff;
  font-size:10px;font-weight:900;padding:3px 10px;
  letter-spacing:.06em;align-self:flex-start;
  white-space:nowrap;
}
.bs-result-name{
  font-size:15px;font-weight:900;line-height:1.3;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
}
.bs-result-desc{
  font-size:11px;color:#666;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.bs-result-play{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:15px 0;width:100%;
  background:#ff5a5f;color:#fff;
  font-size:16px;font-weight:900;
  border:2.5px solid #1f2a24;
  box-shadow:5px 5px 0 #1f2a24;
  letter-spacing:.04em;
  text-decoration:none;
  transition:.1s;
  animation:play-btn-in .4s ease .3s both;
}
@keyframes play-btn-in{
  0%{opacity:0;transform:scale(.9);}
  100%{opacity:1;transform:scale(1);}
}
.bs-result-play:active{transform:translate(4px,4px);box-shadow:1px 1px 0 #1f2a24;}
.bs-result-retry{
  background:transparent;
  border:2px solid rgba(255,255,255,.3);
  color:rgba(255,255,255,.65);
  font-size:13px;font-weight:700;
  padding:10px 24px;
  cursor:pointer;letter-spacing:.05em;
  transition:.15s;border-radius:0;
  animation:play-btn-in .4s ease .45s both;
}
.bs-result-retry:active{border-color:rgba(255,255,255,.7);color:#fff;}

/* ===== FOOTER ===== */

/* ===== STICKY CTA BUTTON ===== */
.sticky-cta{
  position:fixed;
  bottom:20px;
  left:50%;
  transform:translateX(-50%) translateY(80px);
  z-index:90;
  width:calc(100% - 32px);
  max-width:398px;
  opacity:0;
  pointer-events:none;
  transition:transform .35s cubic-bezier(.34,1.56,.64,1), opacity .3s ease;
}
.sticky-cta.show{
  transform:translateX(-50%) translateY(0);
  opacity:1;
  pointer-events:auto;
}
.sticky-cta-inner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:15px 20px;
  background:#ff5a5f;
  color:#fff;
  font-size:16px;
  font-weight:900;
  letter-spacing:.04em;
  border:2.5px solid #1f2a24;
  box-shadow:4px 4px 0 #1f2a24, 0 8px 24px rgba(255,90,95,.45);
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;
  transition:.1s;
}
.sticky-cta-inner:active{
  transform:translate(3px,3px);
  box-shadow:1px 1px 0 #1f2a24;
}
.sticky-cta-arrow{
  font-size:13px;
  animation:sticky-arrow .8s ease-in-out infinite;
}
@keyframes sticky-arrow{
  0%,100%{transform:translateX(0);}
  50%{transform:translateX(5px);}
}

/* ===== LP FOOTER?域里蟄倥け繝ｩ繧ｹ縺ｨ螳悟?縺ｫ迢ｬ遶具ｼ?===== */
.lp-footer{
  background:#1a1a2e;
  padding:0 0 24px;
  font-family:inherit;
}
.lp-footer__list{
  list-style:none !important;
  margin:0 !important;
  padding:0 !important;
  display:block !important;
  flex-flow:unset !important;
  flex-wrap:unset !important;
  justify-content:unset !important;
  border-top:2px solid rgba(255,255,255,.08);
}
.lp-footer__item{
  display:block !important;
  border-bottom:1px solid rgba(255,255,255,.07);
  width:100% !important;
}
.lp-footer__link{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  padding:13px 20px !important;
  font-size:13px !important;
  font-weight:700 !important;
  color:rgba(255,255,255,.8) !important;
  text-decoration:none !important;
  letter-spacing:.02em;
  transition:.15s;
  -webkit-tap-highlight-color:transparent;
}
.lp-footer__link::after{
  content:'>';
  font-size:14px;
  color:rgba(255,255,255,.3);
  flex-shrink:0;
}
.lp-footer__link:active{
  background:rgba(255,255,255,.06);
  color:#fff !important;
}
.lp-footer__copy{
  text-align:center;
  padding:20px 16px 8px;
  font-size:11px;
  color:rgba(255,255,255,.3);
  letter-spacing:.05em;
}

/* ===== BG COLORS for placeholders ===== */
.bg-green{background:linear-gradient(135deg,#cafbe4,#85e8bd)}
.bg-yellow{background:linear-gradient(135deg,#fff0aa,#ffcd58)}
.bg-pink{background:linear-gradient(135deg,#ffd2e0,#ff8cb2)}
.bg-blue{background:linear-gradient(135deg,#d7e8ff,#77b8ff)}
.bg-purple{background:linear-gradient(135deg,#ece2ff,#ab98ff)}
.bg-orange{background:linear-gradient(135deg,#ffe4c4,#ffb366)}.manage_body{
  padding: 10px;
}

.content_title{
  font-size: 1.2rem;
  padding: 10px 0;
}

/* TABLE detail START */
table.manage_detail {
  width: 320px;
  border: 1px #A3A3A3 solid;
  border-collapse: collapse;
  border-spacing: 0;
}

table.manage_detail th {
  padding: 5px;
  border: #A3A3A3 solid;
  border-width: 0 0 1px 1px;
  background: #E3E3E3;
  font-weight: bold;
  line-height: 120%;
  text-align: right;
  white-space: nowrap; 
}
table.manage_detail th.error {
  padding: 5px;
  border: #A3A3A3 solid;
  border-width: 0 0 1px 1px;
  background: #FF6666;
  font-weight: bold;
  line-height: 120%;
  text-align: right;
  white-space: nowrap; 
}
table.manage_detail td {
  padding: 5px;
  border: 1px #A3A3A3 solid;
  border-width: 0 0 1px 1px;
}

table.manage_detail td.inner {
  text-align:center;
  padding:0;
  border:none;
  white-space:nowrap;
}

/* TABLE detail END */

/* TABLE LIST START */
table.manage_list {
  width: 320px;
  border-color: #A3A3A3;
  border-style: solid;
  border-width: 1px;
  border-collapse: collapse;
  border-spacing: 0;
}

table.manage_list th {
  padding: 3px;
  background: #e3e3e3;
  font-weight: normal;
  line-height: 120%;
  text-align: center;
  white-space: nowrap;
  border-color: #A3A3A3;
  border-style: solid;
  border-width: 1px;
  text-decoration: none;
}

table.manage_list th a:link,a:visited {
  text-decoration: none;
}

table.manage_list tr:hover td {
  background: #efefef;
}

table.manage_list td {
  padding: 3px;
  border-color: #A3A3A3;
  border-style: solid;
  border-width: 1px;
}

/* TABLE LIST END */
div.pagination {
  padding: 3px;
  margin: 15px;
  text-align:center;
}
 
div.pagination a {
  border: 1px solid #dedfde;
  margin-right:3px;
  padding:6px 9px;
  background-color:#ffffff;
  background-position:bottom;
  text-decoration: none;

  color: #962929;  
}

div.pagination span {
  margin-right:3px;
  padding:6px 9px;

  background-position:bottom;
  background-color:#ffffff;
  border: 1px solid #dedfde;
  background-image:none;
  background-color:#962929;
  color: #fff;
}

div.pagination a:hover, div.meneame a:active {
  border: 1px solid #000;
  background-image:none;
  background-color:#962929;
  color: #fff;
}
.retire_wrap{
  margin: 13px 7px;
  color: #232323;
}

.retire_text{
  font-size: 0.75rem;
}
.attention{
  color: #cc0000;
}

.retire_title{
  text-align: center;
  font-size: 1rem;
  margin: 15px 0 7px;
  padding: 0;
}

.retire_course{
  display: block;
  width: 75%;
  margin: 18px auto;
  padding: 8px 0;
  background: #1857b7;
  border-radius: 5px;
  color: #ffffff;
  font-size: 0.9rem;
  text-align: center;
}

.retire_after{
  text-align: center;
  font-size: 0.9rem;
  margin-bottom: 22px;
}

.retire_button1,
.retire_button2,
.retire_button3{
  display: block;
  width: 50%;
  margin: 16px auto;
  padding: 8px 0;
  border-radius: 3px;
  font-size: 0.9rem;
  text-align: center;
}
.retire_button1{
  border: solid 2px #F2B700;
  color :#F2B700;
}
.retire_button2{
  border: solid 2px #8d002f;
  color :#8d002f;
}
.retire_button3{
  border: solid 2px #911616;
  color :#911616;
}

.reason{
  line-height: 1.5rem;
}

.anke{
  margin: 18px 12px;
  font-size: 0.85rem;
  color: #000000;
}
.anke dt{
  margin-bottom: 6px;
  font-size: 1rem;
}
.anke dd{
  margin: 0 0 12px 7px;
}

/*********************************
form内
*********************************/
.retire_wrap select {
  -webkit-appearance: menulist;
  -moz-appearance: menulist;
  appearance: menulist;
  outline: none;
  padding: 4px 9px;
  background: transparent;
  border: solid 1px #606060;
  border-radius: 2px;
}
.retire_wrap input[type="text"],
.retire_wrap textarea{
  border: solid 1px #606060;
}
.retire_wrap input[type="text"]{
  padding: 4px 0;
}

.retire_wrap input[type='radio'],
.retire_wrap input[type='checkbox'] {
  display: none;
}
.retire_wrap input[type='radio'] + label,
.retire_wrap input[type='checkbox'] + label {
  cursor: pointer;
  display: inline-block;
  position: relative;
  padding-left: 25px;
  margin-right: 10px;
}
.retire_wrap input[type='radio'] + label:before,
.retire_wrap input[type='radio'] + label:after,
.retire_wrap input[type='checkbox'] + label:before,
.retire_wrap input[type='checkbox'] + label:after {
  content: '';
  font-family: helvetica;
  display: inline-block;
  width: 18px;
  height: 18px;
  left: 0;
  bottom: 0;
  text-align: center;
  position: absolute;
}
.retire_wrap input[type='radio'] + label:before,
.retire_wrap input[type='checkbox'] + label:before {
  box-sizing: border-box;
  background-color: #ffffff;
  border: solid 1px #232323;
  transition: all 0.3s ease-in-out;
}
.retire_wrap input[type='radio'] + label:after,
.retire_wrap input[type='checkbox'] + label:after {
  color: #ffffff;
}
.retire_wrap input[type='radio']:checked + label:before,
.retire_wrap input[type='checkbox']:checked + label:before {
  box-shadow: inset 0 0 0 10px #8d002f;
  border: none;
}
 
/*Radio Specific styles*/
.retire_wrap input[type='radio'] + label:before {
  border-radius: 50%;
}
.retire_wrap input[type='radio']:checked + label:after {
  content: '\2022';
  position: absolute;
  top: 0px;
  font-size: 19px;
  line-height: 18px;
}
 
.retire_wrap input[type='checkbox'] + label:before {
  border-radius: 3px;
}
.retire_wrap input[type='checkbox']:checked + label:after {
  content: "\2713";
  font-size: 14px;
  line-height: 18px;
}/**************************/
/* PHP Rails scaffold.css */
/**************************/

/*
http://predic8.com/iphone-css-layout-theme.htm
http://connecre.com/connelog/connelog00000172.php
*/


/* HTML BASIC START */

/* ===================================================
   SUBPAGE COMMON  ― index_paz.html デザインと統一
   =================================================== */


/* ===== アニメーション keyframes ===== */
@keyframes sp-fadein-up{
  from{ opacity:0; transform:translateY(16px); }
  to{   opacity:1; transform:translateY(0); }
}
@keyframes sp-pop{
  0%  { opacity:0; transform:scale(.88); }
  70% { transform:scale(1.04); }
  100%{ opacity:1; transform:scale(1); }
}
@keyframes sp-icon-bounce{
  0%,100%{ transform:translateY(0); }
  40%    { transform:translateY(-6px); }
  60%    { transform:translateY(-3px); }
}
@keyframes sp-stripe-slide{
  from{ background-position: 0 0; }
  to  { background-position: 36px 0; }
}

/* ===== SP-BODY（下層ページラッパー） ===== */
.sp-body{
  padding: 0 0 40px;
}



/* ===== 各要素の出現アニメーション ===== */
.sp-breadcrumb{ animation: sp-fadein-up .35s ease both; }
.sp-page-header{ animation: sp-fadein-up .4s ease .05s both; }
.sp-retire-banner{ animation: sp-pop .45s cubic-bezier(.34,1.56,.64,1) .15s both; }
.sp-card{ animation: sp-fadein-up .4s ease .25s both; }

/* ===== パンくず ===== */
.sp-breadcrumb{
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 16px;
  font-size: 11px;
  color: #999;
  border-bottom: 1px solid #f0f0f0;
}
.sp-breadcrumb__link{
  color: #ff5a5f;
  font-weight: 700;
  text-decoration: none;
}
.sp-breadcrumb__link:active{ opacity: .7; }
.sp-breadcrumb__sep{
  color: #ccc;
  font-size: 13px;
}
.sp-breadcrumb__current{
  color: #888;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ===== ページヘッダー（index の mood-heading と統一） ===== */
.sp-page-header{
  padding: 24px 20px 20px;
  background: #fff;
  border-bottom: 2px solid #f0f0f0;
}
.sp-page-header .mood-heading{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.sp-page-header .mood-heading-label{
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #ff5a5f;
  white-space: nowrap;
}
.sp-page-header .mood-heading-line{
  flex: 1;
  height: 2px;
  background: linear-gradient(90deg, #f0f0f0 0%, transparent 100%);
}
.sp-page-header__title{
  font-size: 22px;
  font-weight: 900;
  color: #1f2a24;
  line-height: 1.3;
  letter-spacing: -.01em;
  margin-bottom: 12px;
}
.sp-page-header__deco{
  display: flex;
  gap: 5px;
}
.sp-page-header__deco span{
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.sp-page-header__deco span:nth-child(1){ background: #ff5a5f; }
.sp-page-header__deco span:nth-child(2){ background: #ffd84d; }
.sp-page-header__deco span:nth-child(3){ background: #18c989; }

/* ===== 説明リード文 ===== */
.sp-lead{
  padding: 16px 20px;
  font-size: 13px;
  color: #555;
  line-height: 1.7;
  border-bottom: 1px solid #f0f0f0;
}

/* ===== ゲームっぽいお知らせバナー ===== */
.sp-retire-banner{
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 20px 16px 0;
  padding: 16px 18px;
  background: #fff9e0;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #ffd84d;
  position: relative;
  overflow: hidden;
}
.sp-retire-banner::before{
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-retire-banner__icon{
  font-size: 36px;
  line-height: 1;
  flex-shrink: 0;
  animation: sp-icon-bounce 1.6s ease-in-out infinite;
}
.sp-retire-banner__title{
  font-size: 14px;
  font-weight: 900;
  color: #1f2a24;
  margin-bottom: 4px;
}
.sp-retire-banner__text{
  font-size: 12px;
  color: #666;
  line-height: 1.6;
}

/* ===== カード（フォーム・コンテンツ共通） ===== */
.sp-card{
  margin: 16px 16px 20px;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 5px 5px 0 #1f2a24;
  border-radius: 2px;
  overflow: hidden;
  position: relative;
}
.sp-card::before{
  content: '';
  display: block;
  height: 4px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}

/* ===== フォーム ===== */
.sp-form{
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sp-form__group{
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
  color: #1f2a24;
  line-height: 1.7;
}
.sp-form__label{
  font-size: 12px;
  font-weight: 700;
  color: #555;
  letter-spacing: .04em;
}
.sp-form__input,
.sp-form__select,
.sp-form__textarea{
  width: 100%;
  padding: 12px 14px;
  font-size: 14px;
  font-family: inherit;
  color: #1f2a24;
  background: #fafafa;
  border: 1.5px solid #e0e0e0;
  border-radius: 2px;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  -webkit-appearance: none;
  appearance: none;
}
.sp-form__input:focus,
.sp-form__select:focus,
.sp-form__textarea:focus{
  border-color: #ff5a5f;
  box-shadow: 0 0 0 3px rgba(255,90,95,.12);
  background: #fff;
}
.sp-form__textarea{
  resize: vertical;
  min-height: 120px;
  line-height: 1.6;
}

/* 送信ボタン（通常） */
.sp-form__submit{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 15px 20px;
  font-size: 15px;
  font-weight: 900;
  font-family: inherit;
  letter-spacing: .04em;
  color: #fff;
  background: #ff5a5f;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  cursor: pointer;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
}
.sp-form__submit:active{
  transform: translate(3px, 3px);
  box-shadow: 1px 1px 0 #1f2a24;
}

/* 危険操作ボタン（退会など） */
.sp-form__submit--danger{
  background: #c0392b;
  box-shadow: 4px 4px 0 #7b241c;
  border-color: #7b241c;
  animation: sp-fadein-up .4s ease .35s both;
}
.sp-form__submit--danger:active{
  box-shadow: 1px 1px 0 #7b241c;
}

/* 戻るリンク */
.sp-form__back{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 13px;
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  background: #f5f5f5;
  border-top: 2px solid #e8e8e8;
  text-decoration: none;
  letter-spacing: .03em;
  transition: background .15s;
}
.sp-form__back:active{ background: #ececec; }

/* ===== 確認画面：推奨ボタン（緑） ===== */
.sp-form__submit--safe{
  background: #18c989;
  box-shadow: 4px 4px 0 #0e8a5c;
  border-color: #0e8a5c;
  text-decoration: none;
  animation: sp-fadein-up .4s ease .35s both;
}
.sp-form__submit--safe:active{
  box-shadow: 1px 1px 0 #0e8a5c;
  transform: translate(3px,3px);
}

/* ===== 確認画面：or 区切り ===== */
.sp-confirm-divider{
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 11px;
  font-weight: 700;
  color: #bbb;
  letter-spacing: .1em;
}
.sp-confirm-divider::before,
.sp-confirm-divider::after{
  content: '';
  flex: 1;
  height: 1px;
  background: #e8e8e8;
}

/* ===== 確認画面：危険リンク（テキストリンク風） ===== */
.sp-confirm-danger-link{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px;
  font-size: 13px;
  font-weight: 700;
  color: #c0392b;
  text-decoration: none;
  border: 1.5px solid rgba(192,57,43,.25);
  background: rgba(192,57,43,.04);
  letter-spacing: .02em;
  transition: background .15s;
}
.sp-confirm-danger-link:active{
  background: rgba(192,57,43,.1);
}

/* ===== 規約・プライバシーリンク ===== */
.sp-regist-links{
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 0;
  border-top: 1px solid #f0f0f0;
  border-bottom: 1px solid #f0f0f0;
}
.sp-regist-link{
  display: block;
  padding: 10px 4px;
  font-size: 13px;
  font-weight: 700;
  color: #ff5a5f;
  text-decoration: none;
  letter-spacing: .02em;
  transition: opacity .15s;
}
.sp-regist-link:active{ opacity: .6; }

/* ===== 対応機種リスト ===== */
.sp-device-list{
  display: flex;
  flex-direction: column;
}
.sp-device-item{
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  border-bottom: 1px solid #f0f0f0;
  animation: sp-fadein-up .4s ease both;
}
.sp-device-item:nth-child(1){ animation-delay: .1s; }
.sp-device-item:nth-child(2){ animation-delay: .2s; }
.sp-device-item:nth-child(3){ animation-delay: .3s; }
.sp-device-item:last-child{ border-bottom: none; }
.sp-device-item--ng{
  background: #fafafa;
  opacity: .75;
}
.sp-device-item__icon{
  font-size: 28px;
  line-height: 1;
  flex-shrink: 0;
}
.sp-device-item__body{
  flex: 1;
  min-width: 0;
}
.sp-device-item__name{
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  margin-bottom: 2px;
}
.sp-device-item__desc{
  font-size: 11px;
  color: #888;
  line-height: 1.5;
}
.sp-device-item__badge{
  font-size: 11px;
  font-weight: 900;
  padding: 4px 10px;
  flex-shrink: 0;
  letter-spacing: .04em;
}
.sp-device-item__badge--ok{
  background: #e6faf3;
  color: #18c989;
  border: 1.5px solid #18c989;
}
.sp-device-item__badge--ng{
  background: #fafafa;
  color: #bbb;
  border: 1.5px solid #ddd;
}

/* ===== 特定商取引テーブル ===== */
.sp-tokutei-table{
  display: flex;
  flex-direction: column;
}
.sp-tokutei-row{
  display: flex;
  flex-direction: column;
  border-bottom: 2px solid #f5f5f5;
  animation: sp-fadein-up .4s ease both;
}
.sp-tokutei-row:last-child{ border-bottom: none; }
.sp-tokutei-row:nth-child(1){ animation-delay: .05s; }
.sp-tokutei-row:nth-child(2){ animation-delay: .10s; }
.sp-tokutei-row:nth-child(3){ animation-delay: .15s; }
.sp-tokutei-row:nth-child(4){ animation-delay: .20s; }
.sp-tokutei-row:nth-child(5){ animation-delay: .25s; }
.sp-tokutei-row:nth-child(6){ animation-delay: .30s; }
.sp-tokutei-row:nth-child(7){ animation-delay: .35s; }
.sp-tokutei-row:nth-child(8){ animation-delay: .40s; }
.sp-tokutei-row:nth-child(9){ animation-delay: .45s; }
.sp-tokutei-row:nth-child(10){ animation-delay: .50s; }
.sp-tokutei-row__key{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .04em;
  position: relative;
  overflow: hidden;
}
.sp-tokutei-row__key::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0px, transparent 6px,
    rgba(255,255,255,.04) 6px, rgba(255,255,255,.04) 12px
  );
}
.sp-tokutei-row__val{
  padding: 12px 16px 16px;
  font-size: 13px;
  color: #333;
  line-height: 1.9;
  word-break: break-all;
  background: #fff;
}
.sp-tokutei-row__val p{
  margin: 0;
  padding: 0;
}

/* ===== 送信完了ヒーロー ===== */
@keyframes sp-thanks-burst{
  0%  { transform: scale(0) rotate(-15deg); opacity: 0; }
  60% { transform: scale(1.12) rotate(4deg); opacity: 1; }
  100%{ transform: scale(1) rotate(0deg); opacity: 1; }
}
@keyframes sp-thanks-float{
  0%,100%{ transform: translateY(0); }
  50%    { transform: translateY(-8px); }
}
@keyframes sp-thanks-shine{
  0%  { background-position: -200% center; }
  100%{ background-position: 200% center; }
}
.sp-thanks-hero{
  position: relative;
  margin: 0 0 4px;
  padding: 36px 20px 32px;
  background: #1f2a24;
  text-align: center;
  overflow: hidden;
}
.sp-thanks-hero::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0px, transparent 10px,
    rgba(255,255,255,.03) 10px, rgba(255,255,255,.03) 20px
  );
}
.sp-thanks-hero::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-thanks-hero__burst{
  position: absolute;
  top: 50%; left: 50%;
  width: 260px; height: 260px;
  margin: -130px 0 0 -130px;
  background: radial-gradient(circle, rgba(255,216,77,.18) 0%, transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.sp-thanks-hero__icon{
  font-size: 64px;
  line-height: 1;
  display: block;
  margin-bottom: 14px;
  position: relative;
  animation: sp-thanks-burst .6s cubic-bezier(.34,1.56,.64,1) .1s both,
             sp-thanks-float 2.4s ease-in-out 1s infinite;
}
.sp-thanks-hero__title{
  font-size: 28px;
  font-weight: 900;
  letter-spacing: .04em;
  margin-bottom: 8px;
  position: relative;
  background: linear-gradient(90deg, #ffd84d, #ff5a5f, #18c989, #ffd84d);
  background-size: 300% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: sp-thanks-shine 2s linear infinite, sp-fadein-up .4s ease .3s both;
}
.sp-thanks-hero__sub{
  font-size: 13px;
  color: rgba(255,255,255,.7);
  margin-bottom: 18px;
  animation: sp-fadein-up .4s ease .45s both;
}
.sp-thanks-hero__badges{
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  animation: sp-fadein-up .4s ease .55s both;
}
.sp-thanks-hero__badge{
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 900;
  color: #1f2a24;
  background: #18c989;
  letter-spacing: .04em;
}
.sp-thanks-hero__badge--yellow{
  background: #ffd84d;
}

/* ===== 完了ページ 案内カード ===== */
.sp-thanks-card{
  margin: 12px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease both;
}
.sp-thanks-card:nth-of-type(1){ animation-delay: .3s; }
.sp-thanks-card:nth-of-type(2){ animation-delay: .4s; }
.sp-thanks-card__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
}
.sp-thanks-card__head--warn{
  background: #e67e22;
}
.sp-thanks-card__head-icon{
  font-size: 18px;
  line-height: 1;
}
.sp-thanks-card__body{
  padding: 14px 16px;
  font-size: 13px;
  color: #333;
  line-height: 1.85;
}
.sp-thanks-card__lead{
  margin: 0 0 12px;
  color: #555;
  font-size: 12px;
  line-height: 1.7;
}
.sp-thanks-checklist{
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sp-thanks-checklist li{
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: #333;
  background: #f8f8f8;
  border-left: 3px solid #ffd84d;
  padding: 9px 12px;
  line-height: 1.5;
}
.sp-thanks-checklist__icon{
  font-size: 16px;
  flex-shrink: 0;
}
.sp-thanks-note{
  font-size: 11px;
  color: #999;
  line-height: 1.7;
  margin: 0;
  padding: 10px 0 0;
  border-top: 1px dashed #e8e8e8;
}

/* ===== 完了ページ 戻るボタンラッパー ===== */
.sp-thanks-back-wrap{
  padding: 20px 16px 10px;
  animation: sp-fadein-up .4s ease .55s both;
}

/* ===== お問い合わせ 方法選択カード ===== */
.sp-contact-select-card{
  margin: 20px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease .2s both;
}
.sp-contact-select-card__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
}
.sp-contact-select-card__body{
  padding: 16px;
}
.sp-contact-select-wrap{
  position: relative;
}
.sp-contact-select{
  width: 100%;
  padding: 13px 40px 13px 14px;
  font-size: 14px;
  font-family: inherit;
  font-weight: 700;
  color: #1f2a24;
  background: #fafafa;
  border: 2px solid #1f2a24;
  border-radius: 2px;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}
.sp-contact-select:focus{
  border-color: #ff5a5f;
  box-shadow: 0 0 0 3px rgba(255,90,95,.12);
  background: #fff;
}
.sp-contact-select-arrow{
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 11px;
  color: #888;
  pointer-events: none;
}

/* ===== 電話問い合わせパネル ===== */
.sp-tell-card{
  margin: 12px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .35s ease both;
}
.sp-tell-notice{
  display: flex;
  gap: 10px;
  padding: 14px 16px;
  background: #fff9e0;
  border-bottom: 2px solid #ffd84d;
  font-size: 12px;
  color: #444;
  line-height: 1.75;
}
.sp-tell-notice__icon{
  font-size: 20px;
  flex-shrink: 0;
  margin-top: 2px;
}
.sp-tell-notice__em{
  color: #ff5a5f;
}
.sp-tell-notice__time{
  display: inline-block;
  margin-top: 4px;
  font-size: 11px;
  color: #888;
}
.sp-tell-checks{
  padding: 14px 16px;
  border-bottom: 1px solid #f0f0f0;
}
.sp-tell-checks__title{
  font-size: 12px;
  font-weight: 900;
  color: #1f2a24;
  margin-bottom: 10px;
  letter-spacing: .03em;
}
.sp-tell-check-item{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px dashed #f0f0f0;
  cursor: pointer;
}
.sp-tell-check-item:last-child{ border-bottom: none; }
.sp-tell-check-item input[type="checkbox"]{
  display: none;
}
.sp-tell-check-item__box{
  width: 20px;
  height: 20px;
  border: 2px solid #ddd;
  background: #fafafa;
  flex-shrink: 0;
  position: relative;
  transition: border-color .15s, background .15s;
}
.sp-tell-check-item input:checked + .sp-tell-check-item__box{
  border-color: #18c989;
  background: #18c989;
}
.sp-tell-check-item input:checked + .sp-tell-check-item__box::after{
  content: '';
  position: absolute;
  top: 3px; left: 6px;
  width: 5px; height: 9px;
  border: 2.5px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}
.sp-tell-check-item__label{
  font-size: 13px;
  color: #333;
  line-height: 1.5;
}
.sp-tell-btn-wrap{
  padding: 14px 16px;
}
.sp-tell-btn{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 15px 20px;
  font-size: 15px;
  font-weight: 900;
  font-family: inherit;
  color: #fff;
  background: #18c989;
  border: 2.5px solid #0e8a5c;
  box-shadow: 4px 4px 0 #0e8a5c;
  text-decoration: none;
  letter-spacing: .04em;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
}
.sp-tell-btn:active{
  transform: translate(3px,3px);
  box-shadow: 1px 1px 0 #0e8a5c;
}
.sp-tell-btn__icon{
  font-size: 20px;
}

/* ===== QRコードカード ===== */
.sp-qr-card{
  margin: 20px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-pop .45s cubic-bezier(.34,1.56,.64,1) .2s both;
}
.sp-qr-card__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
  position: relative;
  overflow: hidden;
}
.sp-qr-card__head::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-qr-card__body{
  padding: 24px 20px 28px;
  text-align: center;
}
.sp-qr-card__sitename{
  font-size: 14px;
  font-weight: 900;
  color: #1f2a24;
  margin: 0 0 18px;
  letter-spacing: .03em;
}
.sp-qr-card__img-wrap{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  background: #fff;
  border: 3px solid #1f2a24;
  box-shadow: 4px 4px 0 #ffd84d;
  margin-bottom: 18px;
}
.sp-qr-card__img{
  display: block;
  width: 160px;
  height: 160px;
}
.sp-qr-card__url{
  font-size: 11px;
  color: #888;
  word-break: break-all;
  margin: 0 0 12px;
  letter-spacing: .02em;
}
.sp-qr-card__note{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  color: #18c989;
  background: #e6faf3;
  border: 1.5px solid #18c989;
  padding: 7px 14px;
  margin: 0;
}

/* ===== FAQ アコーディオン ===== */
.sp-faq{
  margin: 16px 16px 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sp-faq__item{
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  background: #fff;
  overflow: hidden;
  animation: sp-fadein-up .4s ease both;
}
.sp-faq__item:nth-child(odd)  { animation-delay: .05s; }
.sp-faq__item:nth-child(even) { animation-delay: .12s; }
.sp-faq__q{
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 13px 14px;
  background: #fff;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: background .15s;
  -webkit-tap-highlight-color: transparent;
}
.sp-faq__q:active{ background: #f8f8f8; }
.sp-faq__item.is-open .sp-faq__q{
  background: #fff9e0;
  border-bottom: 2px solid #ffd84d;
}
.sp-faq__q-badge{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  font-size: 12px;
  font-weight: 900;
  color: #fff;
  background: #ff5a5f;
  flex-shrink: 0;
  letter-spacing: 0;
}
.sp-faq__q-text{
  flex: 1;
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  line-height: 1.5;
}
.sp-faq__q-arrow{
  font-size: 10px;
  color: #aaa;
  flex-shrink: 0;
  transition: transform .25s;
}
.sp-faq__item.is-open .sp-faq__q-arrow{
  transform: rotate(180deg);
  color: #ff5a5f;
}
.sp-faq__a{
  display: none;
  gap: 10px;
  padding: 14px;
  background: #fafafa;
  border-top: 1px solid #f0f0f0;
}
.sp-faq__item.is-open .sp-faq__a{
  display: flex;
}
.sp-faq__a-badge{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  font-size: 12px;
  font-weight: 900;
  color: #1f2a24;
  background: #ffd84d;
  flex-shrink: 0;
  margin-top: 1px;
  letter-spacing: 0;
}
.sp-faq__a-text{
  flex: 1;
  font-size: 12px;
  color: #444;
  line-height: 1.85;
  word-break: break-all;
}
.sp-faq__a-text p{
  margin: 4px 0;
  padding: 0;
}

/* ===== 方針リスト（番号付きカード） ===== */
.sp-policy-list{
  display: flex;
  flex-direction: column;
}
.sp-policy-item{
  display: flex;
  gap: 14px;
  padding: 16px;
  border-bottom: 2px solid #f0f0f0;
  animation: sp-fadein-up .4s ease both;
}
.sp-policy-item:last-child{ border-bottom: none; }
.sp-policy-item:nth-child(odd) { background: #fff; }
.sp-policy-item:nth-child(even){ background: #f9f9f9; }
.sp-policy-item__num{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #ff5a5f;
  flex-shrink: 0;
  margin-top: 1px;
}
.sp-policy-item__text{
  flex: 1;
  font-size: 14px;
  color: #222;
  line-height: 1.9;
}

/* ===== 方針セクション（8〜10条） ===== */
.sp-policy-section{
  margin: 12px 16px 0;
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease both;
}
.sp-policy-section__head{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
  position: relative;
  overflow: hidden;
}
.sp-policy-section__head::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-policy-section__num{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 26px;
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  background: #ffd84d;
  flex-shrink: 0;
  padding: 0 5px;
}
.sp-policy-section__body{
  padding: 16px;
  background: #fff;
}
.sp-policy-section__lead{
  font-size: 13px;
  color: #333;
  line-height: 1.9;
  margin: 0 0 12px;
}
.sp-policy-block{
  margin-bottom: 18px;
}
.sp-policy-block:last-child{ margin-bottom: 0; }
.sp-policy-block__title{
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  background: #fff9e0;
  margin-bottom: 8px;
  padding: 8px 12px;
  border-left: 4px solid #ffd84d;
}
.sp-policy-block__list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.sp-policy-block__list li{
  font-size: 13px;
  color: #333;
  line-height: 1.8;
  padding: 9px 12px 9px 22px;
  border-bottom: 1px solid #f0f0f0;
  position: relative;
}
.sp-policy-block__list li:last-child{ border-bottom: none; }
.sp-policy-block__list li::before{
  content: '';
  position: absolute;
  left: 9px;
  top: 16px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #ff5a5f;
}

/* ===== 問い合わせ窓口テーブル ===== */
.sp-policy-contact{
  display: flex;
  flex-direction: column;
}
.sp-policy-contact__row{
  display: flex;
  border-bottom: 1px solid #f0f0f0;
}
.sp-policy-contact__row:last-child{ border-bottom: none; }
.sp-policy-contact__key{
  width: 68px;
  flex-shrink: 0;
  padding: 12px 14px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  display: flex;
  align-items: center;
}
.sp-policy-contact__val{
  flex: 1;
  padding: 12px 14px;
  font-size: 13px;
  color: #222;
  line-height: 1.75;
  word-break: break-all;
  background: #fff;
}

/* ===== メンテナンスページ ===== */
@keyframes sp-maintenance-spin{
  from{ transform: rotate(0deg); }
  to  { transform: rotate(360deg); }
}
@keyframes sp-maintenance-blink{
  0%,100%{ opacity: 1; }
  50%    { opacity: .4; }
}
.sp-maintenance-hero{
  padding: 48px 20px 40px;
  background: #1f2a24;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.sp-maintenance-hero::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0px, transparent 12px,
    rgba(255,255,255,.03) 12px, rgba(255,255,255,.03) 24px
  );
}
.sp-maintenance-hero::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(
    90deg,
    #ffd84d 0px, #ffd84d 12px,
    #1f2a24 12px, #1f2a24 24px
  );
  background-size: 24px 100%;
  animation: sp-stripe-slide .5s linear infinite;
}
.sp-maintenance-hero__icon{
  font-size: 60px;
  line-height: 1;
  display: block;
  margin-bottom: 16px;
  animation: sp-maintenance-spin 4s linear infinite;
  position: relative;
}
.sp-maintenance-hero__title{
  font-size: 24px;
  font-weight: 900;
  color: #ffd84d;
  letter-spacing: .06em;
  margin-bottom: 8px;
  animation: sp-maintenance-blink 2s ease-in-out infinite;
  position: relative;
}
.sp-maintenance-hero__sub{
  font-size: 13px;
  color: rgba(255,255,255,.6);
  position: relative;
  animation: sp-fadein-up .4s ease .3s both;
}

/* ===== メンテナンス メッセージカード ===== */
.sp-maintenance-card{
  margin: 16px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease .35s both;
}
.sp-maintenance-card__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #1f2a24;
  background: #ffd84d;
  letter-spacing: .03em;
}
.sp-maintenance-card__body{
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sp-maintenance-card__body p{
  margin: 0;
  font-size: 14px;
  color: #333;
  line-height: 1.9;
}

/* ===== 利用規約 条文スタイル ===== */
.sp-kiyaku__ol{
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  counter-reset: kiyaku-counter;
}
.sp-kiyaku__ol li{
  display: flex;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px dashed #eee;
  font-size: 13px;
  color: #333;
  line-height: 1.85;
  counter-increment: kiyaku-counter;
}
.sp-kiyaku__ol li:last-child{ border-bottom: none; }
.sp-kiyaku__ol li::before{
  content: counter(kiyaku-counter) ".";
  font-size: 12px;
  font-weight: 900;
  color: #ff5a5f;
  flex-shrink: 0;
  min-width: 18px;
  padding-top: 1px;
}

/* ===== 利用規約 料金テーブル ===== */
.sp-kiyaku__price{
  margin-top: 12px;
  border: 1.5px solid #e0e0e0;
  overflow: hidden;
}
.sp-kiyaku__price-head{
  padding: 8px 12px;
  font-size: 12px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .04em;
}
.sp-kiyaku__price-row{
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 9px 12px;
  border-bottom: 1px solid #f0f0f0;
  font-size: 13px;
  color: #333;
}
.sp-kiyaku__price-row:last-child{ border-bottom: none; }
.sp-kiyaku__price-row span:last-child{
  font-weight: 900;
  color: #ff5a5f;
}

/* ===== 利用規約 条文レイアウト ===== */
.sp-terms{
  margin: 12px 16px 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sp-terms__article{
  border: 2px solid #e8e8e8;
  overflow: hidden;
  animation: sp-fadein-up .4s ease both;
}
.sp-terms__article:nth-child(odd) { animation-delay: .05s; }
.sp-terms__article:nth-child(even){ animation-delay: .1s; }
.sp-terms__head{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: #1f2a24;
  position: relative;
  overflow: hidden;
}
.sp-terms__head::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 10px,
    #ffd84d 10px, #ffd84d 20px,
    #18c989 20px, #18c989 30px
  );
  background-size: 30px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-terms__num{
  font-size: 11px;
  font-weight: 900;
  color: #ffd84d;
  letter-spacing: .06em;
  white-space: nowrap;
  flex-shrink: 0;
}
.sp-terms__title{
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  line-height: 1.4;
}
.sp-terms__body{
  padding: 14px 16px;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sp-terms__body p{
  margin: 0;
  font-size: 13px;
  color: #333;
  line-height: 1.9;
}
.sp-terms__ol{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  counter-reset: terms-counter;
}
.sp-terms__ol li{
  display: flex;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid #f5f5f5;
  font-size: 13px;
  color: #333;
  line-height: 1.85;
  counter-increment: terms-counter;
}
.sp-terms__ol li:last-child{ border-bottom: none; }
.sp-terms__ol li::before{
  content: counter(terms-counter);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  font-size: 11px;
  font-weight: 900;
  color: #fff;
  background: #ff5a5f;
  flex-shrink: 0;
  margin-top: 2px;
}

/* ===== ご利用ガイド カード ===== */
.sp-guide-card{
  margin: 12px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease both;
}
.sp-guide-card:nth-child(1){ animation-delay: .05s; }
.sp-guide-card:nth-child(2){ animation-delay: .10s; }
.sp-guide-card:nth-child(3){ animation-delay: .15s; }
.sp-guide-card:nth-child(4){ animation-delay: .20s; }
.sp-guide-card:nth-child(5){ animation-delay: .25s; }
.sp-guide-card:nth-child(6){ animation-delay: .30s; }
.sp-guide-card__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
  position: relative;
  overflow: hidden;
}
.sp-guide-card__head::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-guide-card__head-icon{
  font-size: 18px;
  line-height: 1;
  flex-shrink: 0;
}
.sp-guide-card__body{
  padding: 14px 16px;
  font-size: 13px;
  color: #333;
  line-height: 1.9;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sp-guide-card__body p{
  margin: 0;
}
.sp-guide-notes{
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.sp-guide-notes li{
  font-size: 12px;
  color: #555;
  line-height: 1.8;
  padding: 8px 12px 8px 20px;
  border-bottom: 1px dashed #eee;
  position: relative;
}
.sp-guide-notes li:last-child{ border-bottom: none; }
.sp-guide-notes li::before{
  content: '\203B';
  position: absolute;
  left: 6px;
  top: 9px;
  font-size: 11px;
  color: #ff5a5f;
  font-weight: 900;
}

/* ===== 退会完了ヒーロー ===== */
.sp-retire-complete-hero{
  padding: 40px 20px 36px;
  background: linear-gradient(135deg, #2d1f2a 0%, #1f2a24 100%);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.sp-retire-complete-hero::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0px, transparent 12px,
    rgba(255,255,255,.025) 12px, rgba(255,255,255,.025) 24px
  );
}
.sp-retire-complete-hero::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(
    90deg,
    #ff5a5f 0px, #ff5a5f 12px,
    #ffd84d 12px, #ffd84d 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-retire-complete-hero__icon{
  font-size: 56px;
  line-height: 1;
  display: block;
  margin-bottom: 14px;
  position: relative;
  animation: sp-thanks-burst .6s cubic-bezier(.34,1.56,.64,1) .1s both,
             sp-thanks-float 2.8s ease-in-out 1s infinite;
}
.sp-retire-complete-hero__title{
  font-size: 22px;
  font-weight: 900;
  color: #fff;
  letter-spacing: .04em;
  margin-bottom: 8px;
  position: relative;
  animation: sp-fadein-up .4s ease .3s both;
}
.sp-retire-complete-hero__sub{
  font-size: 12px;
  color: rgba(255,255,255,.5);
  position: relative;
  animation: sp-fadein-up .4s ease .4s both;
}

/* ===== 利用規約コンパクト版（退会完了ページ用） ===== */
.sp-terms--compact .sp-terms__article{
  border-color: #e0e0e0;
  box-shadow: none;
}
.sp-terms--compact .sp-terms__head{
  background: #444;
  padding: 9px 14px;
}
.sp-terms--compact .sp-terms__head::after{
  display: none;
}
.sp-terms--compact .sp-terms__num{
  font-size: 10px;
  color: #ffd84d;
}
.sp-terms--compact .sp-terms__title{
  font-size: 12px;
}
.sp-terms--compact .sp-terms__body{
  padding: 10px 14px;
}
.sp-terms--compact .sp-terms__body p,
.sp-terms--compact .sp-terms__ol li{
  font-size: 12px;
  color: #555;
}

/* ===== 退会完了 保持ポイント ===== */
.sp-retire-point{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: #f9f9f9;
  border: 1.5px solid #e8e8e8;
  margin-bottom: 12px;
}
.sp-retire-point__label{
  font-size: 12px;
  font-weight: 700;
  color: #888;
}
.sp-retire-point__value{
  font-size: 22px;
  font-weight: 900;
  color: #1f2a24;
}
.sp-retire-point__value span{
  font-size: 13px;
  color: #888;
  font-weight: 700;
}

/* ===== キャリア別案内カード ===== */
.sp-carrier-item{
  border-bottom: 3px solid #f0f0f0;
  overflow: hidden;
}
.sp-carrier-item:last-child{ border-bottom: none; }

/* キャリアヘッダー */
.sp-carrier-item__head{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
}
.sp-carrier-item--au    .sp-carrier-item__head{ background: #f07800; }
.sp-carrier-item--docomo .sp-carrier-item__head{ background: #c0392b; }
.sp-carrier-item--softbank .sp-carrier-item__head{ background: #1f2a24; }

.sp-carrier-item__badge{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .06em;
  flex-shrink: 0;
  border: 2px solid rgba(255,255,255,.6);
}
.sp-carrier-item--au     .sp-carrier-item__badge{ color: #f07800; background: #fff; }
.sp-carrier-item--docomo .sp-carrier-item__badge{ color: #c0392b; background: #fff; }
.sp-carrier-item--softbank .sp-carrier-item__badge{ color: #1f2a24; background: #ffd84d; border-color: #ffd84d; }

/* 手順ボディ */
.sp-carrier-item__body{
  padding: 14px 16px;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sp-carrier-item__link{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 11px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  text-decoration: none;
  letter-spacing: .04em;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
}
.sp-carrier-item--au     .sp-carrier-item__link{ background: #f07800; box-shadow: 0 3px 0 #a04e00; }
.sp-carrier-item--docomo .sp-carrier-item__link{ background: #c0392b; box-shadow: 0 3px 0 #7b1010; }
.sp-carrier-item--softbank .sp-carrier-item__link{ background: #1f2a24; box-shadow: 0 3px 0 #000; }
.sp-carrier-item__link:active{ transform: translateY(2px); box-shadow: none; }

.sp-carrier-item__steps{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: #444;
  line-height: 1.7;
  padding: 10px 12px;
  background: #f8f8f8;
  border: 1px solid #eee;
}
.sp-carrier-item__step{
  display: inline-flex;
  align-items: center;
  background: #fff;
  border: 1px solid #ddd;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 700;
  color: #333;
  white-space: nowrap;
}
.sp-carrier-item__step-arrow{
  font-size: 11px;
  color: #bbb;
  flex-shrink: 0;
}

/* 縦フロー */
.sp-carrier-item__flow{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  counter-reset: flow-counter;
}
.sp-carrier-item__flow li{
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 9px 12px;
  font-size: 13px;
  color: #333;
  line-height: 1.6;
  position: relative;
  counter-increment: flow-counter;
  background: #fff;
  border-bottom: 1px solid #f0f0f0;
}
.sp-carrier-item__flow li:last-child{
  border-bottom: none;
}
.sp-carrier-item__flow li::before{
  content: counter(flow-counter);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  font-size: 12px;
  font-weight: 900;
  color: #fff;
  flex-shrink: 0;
  margin-top: 1px;
}
.sp-carrier-item--au     .sp-carrier-item__flow li::before{ background: #f07800; }
.sp-carrier-item--docomo .sp-carrier-item__flow li::before{ background: #c0392b; }
.sp-carrier-item--softbank .sp-carrier-item__flow li::before{ background: #1f2a24; }
.sp-carrier-item__flow li:not(:last-child)::after{
  content: '';
  position: absolute;
  left: 22px;
  bottom: -1px;
  width: 2px;
  height: 10px;
  background: #e8e8e8;
}

/* ===== 退会確認 警告バナー ===== */
.sp-tai03-alert{
  margin: 0;
  padding: 28px 20px 24px;
  background: #c0392b;
  text-align: center;
  position: relative;
  overflow: hidden;
  animation: sp-pop .45s cubic-bezier(.34,1.56,.64,1) .15s both;
}
.sp-tai03-alert::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0px, transparent 10px,
    rgba(0,0,0,.06) 10px, rgba(0,0,0,.06) 20px
  );
}
.sp-tai03-alert::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(
    90deg,
    #ffd84d 0px, #ffd84d 12px,
    #c0392b 12px, #c0392b 24px
  );
  background-size: 24px 100%;
  animation: sp-stripe-slide .5s linear infinite;
}
.sp-tai03-alert__icon{
  font-size: 44px;
  line-height: 1;
  display: block;
  margin-bottom: 10px;
  position: relative;
  animation: sp-icon-bounce 1.4s ease-in-out infinite;
}
.sp-tai03-alert__title{
  font-size: 22px;
  font-weight: 900;
  color: #ffd84d;
  letter-spacing: .06em;
  position: relative;
  margin-bottom: 6px;
}
.sp-tai03-alert__sub{
  font-size: 12px;
  color: rgba(255,255,255,.75);
  position: relative;
}

/* ===== 退会確認 注意リスト ===== */
.sp-tai03-list{
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.sp-tai03-list li{
  display: flex;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid #f5f5f5;
  font-size: 13px;
  color: #333;
  line-height: 1.75;
}
.sp-tai03-list li:last-child{ border-bottom: none; }
.sp-tai03-list li::before{
  content: '!';
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  font-size: 12px;
  font-weight: 900;
  color: #fff;
  background: #e67e22;
  flex-shrink: 0;
  margin-top: 2px;
}

/* ===== 退会確認 ボタンラッパー ===== */
.sp-tai03-btn-wrap{
  padding: 20px 16px 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  animation: sp-fadein-up .4s ease .4s both;
}

/* ===== アンケートフォーム ===== */
.sp-anke__label{
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  margin-bottom: 8px;
  padding: 8px 12px;
  background: #fff9e0;
  border-left: 4px solid #ffd84d;
  line-height: 1.5;
}
.sp-anke__radio-group{
  display: flex;
  gap: 12px;
}
.sp-anke__radio{
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  color: #333;
  padding: 10px 16px;
  border: 2px solid #e8e8e8;
  flex: 1;
  transition: border-color .15s, background .15s;
}
.sp-anke__radio input[type="radio"]{
  display: none;
}
.sp-anke__radio-box{
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid #ddd;
  background: #fafafa;
  flex-shrink: 0;
  position: relative;
  transition: border-color .15s;
}
.sp-anke__radio input:checked ~ .sp-anke__radio-box{
  border-color: #ff5a5f;
  background: #ff5a5f;
}
.sp-anke__radio input:checked ~ .sp-anke__radio-box::after{
  content: '';
  position: absolute;
  top: 3px; left: 3px;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #fff;
}
.sp-anke__check-group{
  display: flex;
  flex-direction: column;
  border: 1.5px solid #e8e8e8;
}
.sp-anke__check-group .sp-tell-check-item{
  padding: 10px 14px;
  border-bottom: 1px solid #f0f0f0;
  border-radius: 0;
}
.sp-anke__check-group .sp-tell-check-item:last-child{
  border-bottom: none;
}

/* ===== アンケート スキップリンク ===== */
.sp-anke__skip{
  margin: 12px 16px 0;
  text-align: right;
}
.sp-anke__skip a{
  font-size: 12px;
  font-weight: 700;
  color: #888;
  text-decoration: none;
  padding: 8px 12px;
  border: 1px solid #e0e0e0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color .15s;
}
.sp-anke__skip a:active{ color: #ff5a5f; }

/* ===== コンテンツ一覧 ===== */
.sp-list-wrap{
  padding: 12px 16px 0;
}
.sp-list-empty{
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 48px 20px;
  gap: 12px;
}
.sp-list-empty__icon{
  font-size: 48px;
  opacity: .4;
}
.sp-list-empty__text{
  font-size: 14px;
  color: #aaa;
  font-weight: 700;
}
.sp-content-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin: 12px 0;
}
.sp-content-item{
  display: flex;
  flex-direction: column;
  text-decoration: none;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  overflow: hidden;
  transition: transform .1s, box-shadow .1s;
  -webkit-tap-highlight-color: transparent;
  animation: sp-fadein-up .4s ease both;
}
.sp-content-item:active{
  transform: translate(2px, 2px);
  box-shadow: 1px 1px 0 #1f2a24;
}
.sp-content-item__img-wrap{
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: #f0f0f0;
}
.sp-content-item__img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .2s;
}
.sp-content-item:active .sp-content-item__img{
  transform: scale(1.04);
}
.sp-content-item__overlay{
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  color: #fff;
  background: rgba(0,0,0,.3);
  opacity: 0;
  transition: opacity .15s;
}
.sp-content-item:active .sp-content-item__overlay{
  opacity: 1;
}
.sp-content-item__body{
  padding: 8px 10px;
  border-top: 2px solid #1f2a24;
  background: #fff;
}
.sp-content-item__name{
  font-size: 12px;
  font-weight: 900;
  color: #1f2a24;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ===== コンテンツ詳細カード ===== */
.sp-detail-card{
  margin: 16px 16px 0;
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease .1s both;
}
.sp-detail-card__head{
  display: flex;
  gap: 14px;
  padding: 14px 16px;
  align-items: flex-start;
}
.sp-detail-card__thumb-wrap{
  position: relative;
  flex-shrink: 0;
  width: 90px;
  height: 90px;
}
.sp-detail-card__thumb{
  width: 90px;
  height: 90px;
  object-fit: cover;
  display: block;
  border: 2px solid #1f2a24;
}
.sp-detail-card__thumb-badge{
  position: absolute;
  bottom: -2px;
  right: -2px;
  width: 24px;
  height: 24px;
  background: #ffd84d;
  border: 2px solid #1f2a24;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  line-height: 1;
}
.sp-detail-card__meta{
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.sp-detail-card__title{
  font-size: 16px;
  font-weight: 900;
  color: #1f2a24;
  margin: 0;
  line-height: 1.45;
  word-break: break-all;
}
.sp-detail-card__body{
  padding: 12px 16px 14px;
  border-top: 1px solid #f0f0f0;
}
.sp-detail-card__desc{
  font-size: 13px;
  color: #555;
  line-height: 1.85;
  margin: 0;
}

/* ===== ダウンロードアクション ===== */
.sp-detail-action{
  margin: 12px 16px 0;
  animation: sp-fadein-up .4s ease .25s both;
}
.sp-detail-action__card{
  background: #fff;
  border: 2.5px solid #1f2a24;
  box-shadow: 4px 4px 0 #1f2a24;
  overflow: hidden;
}
.sp-detail-action__card--redown{
  border-color: #18c989;
  box-shadow: 4px 4px 0 #0e8a5c;
}
.sp-detail-action__card--nopoint{
  border-color: #e67e22;
  box-shadow: 4px 4px 0 #a04000;
}
.sp-detail-action__label{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
}
.sp-detail-action__card--redown .sp-detail-action__label{ background: #18c989; }
.sp-detail-action__card--nopoint .sp-detail-action__label{ background: #e67e22; }
.sp-detail-action__label-icon{ font-size: 16px; }
.sp-detail-action__point{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid #f0f0f0;
}
.sp-detail-action__point-label{
  font-size: 12px;
  color: #888;
  font-weight: 700;
}
.sp-detail-action__point-value{
  font-size: 24px;
  font-weight: 900;
  color: #1f2a24;
}
.sp-detail-action__point-value small{
  font-size: 13px;
  color: #888;
  font-weight: 700;
  margin-left: 2px;
}
.sp-detail-action__point-value--low{
  color: #e74c3c;
}
.sp-detail-action__note{
  padding: 10px 16px;
  font-size: 12px;
  color: #555;
  line-height: 1.75;
  margin: 0;
  border-bottom: 1px solid #f0f0f0;
}
.sp-detail-action__note--warn{
  color: #c0392b;
  font-weight: 700;
}
.sp-detail-action__btn{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 16px;
  font-size: 16px;
  font-weight: 900;
  color: #fff;
  background: #ff5a5f;
  border: none;
  text-decoration: none;
  letter-spacing: .04em;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
  font-family: inherit;
}
.sp-detail-action__btn:active{
  opacity: .85;
}
.sp-detail-action__btn--green{
  background: #18c989;
}
.sp-detail-action__btn--yellow{
  background: #f39c12;
  color: #1f2a24;
}

/* ===== マイページ ポイント表示 ===== */
.sp-mypage-point{
  margin: 16px 16px 0;
  padding: 16px 20px;
  background: #1f2a24;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  overflow: hidden;
  animation: sp-pop .45s cubic-bezier(.34,1.56,.64,1) .1s both;
}
.sp-mypage-point::after{
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(
    90deg,
    #ffd84d 0px, #ffd84d 12px,
    #ff5a5f 12px, #ff5a5f 24px,
    #18c989 24px, #18c989 36px
  );
  background-size: 36px 100%;
  animation: sp-stripe-slide .6s linear infinite;
}
.sp-mypage-point__label{
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,.7);
  letter-spacing: .04em;
}
.sp-mypage-point__value{
  font-size: 26px;
  font-weight: 900;
  color: #ffd84d;
  line-height: 1;
}
.sp-mypage-point__value span{
  font-size: 13px;
  color: rgba(255,255,255,.6);
  font-weight: 700;
  margin-left: 4px;
}

/* ===== マイページ 件数 ===== */
.sp-mypage-count{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  font-size: 13px;
  font-weight: 700;
  color: #555;
  border-bottom: 1px solid #f0f0f0;
}
.sp-mypage-count__icon{ font-size: 16px; }

/* ===== マイページ 履歴グリッド ===== */
.sp-mypage-grid{
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px 16px 0;
}
.sp-mypage-item{
  display: flex;
  gap: 14px;
  align-items: center;
  background: #fff;
  border: 2px solid #e8e8e8;
  padding: 12px;
  animation: sp-fadein-up .4s ease both;
}
.sp-mypage-item:nth-child(odd) { animation-delay: .05s; }
.sp-mypage-item:nth-child(even){ animation-delay: .10s; }
.sp-mypage-item__img-wrap{
  flex-shrink: 0;
  width: 72px;
  height: 72px;
  overflow: hidden;
  border: 2px solid #1f2a24;
  background: #f0f0f0;
}
.sp-mypage-item__img{
  width: 72px;
  height: 72px;
  object-fit: cover;
  display: block;
}
.sp-mypage-item__body{
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sp-mypage-item__name{
  font-size: 13px;
  font-weight: 900;
  color: #1f2a24;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sp-mypage-item__btn{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  font-size: 12px;
  font-weight: 900;
  color: #fff;
  background: #18c989;
  border: 2px solid #0e8a5c;
  box-shadow: 2px 2px 0 #0e8a5c;
  text-decoration: none;
  letter-spacing: .04em;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
  align-self: flex-start;
}
.sp-mypage-item__btn:active{
  transform: translate(2px,2px);
  box-shadow: none;
}

/* ===== 音楽コンテンツ詳細 ===== */
.sp-detail-music__title{
  font-size: 17px;
  font-weight: 900;
  color: #1f2a24;
  margin: 0 0 14px;
  line-height: 1.45;
  padding-bottom: 12px;
  border-bottom: 2px solid #ffd84d;
}
.sp-detail-music__meta{
  display: flex;
  flex-direction: column;
}
.sp-detail-music__row{
  display: flex;
  gap: 0;
  border-bottom: 1px solid #f0f0f0;
  font-size: 13px;
}
.sp-detail-music__row:last-child{ border-bottom: none; }
.sp-detail-music__row--point{
  margin-top: 4px;
  border-top: 2px solid #f0f0f0;
  padding-top: 4px;
}
.sp-detail-music__key{
  width: 88px;
  flex-shrink: 0;
  padding: 9px 12px 9px 0;
  font-size: 11px;
  font-weight: 900;
  color: #888;
  letter-spacing: .04em;
}
.sp-detail-music__val{
  flex: 1;
  padding: 9px 0;
  color: #222;
  line-height: 1.6;
  word-break: break-all;
}
.sp-detail-music__val--point{
  font-size: 20px;
  font-weight: 900;
  color: #ff5a5f;
}
.sp-detail-music__val--point small{
  font-size: 12px;
  color: #aaa;
  font-weight: 700;
  margin-left: 2px;
}

/* ===== 詳細カード ポイントバッジ ===== */
.sp-detail-card__point-badge{
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-top: 8px;
  padding: 4px 10px;
  background: #fff9e0;
  border: 1.5px solid #ffd84d;
}
.sp-detail-card__point-label{
  font-size: 10px;
  font-weight: 900;
  color: #888;
  letter-spacing: .04em;
}
.sp-detail-card__point-num{
  font-size: 18px;
  font-weight: 900;
  color: #ff5a5f;
  line-height: 1;
}
.sp-detail-card__point-unit{
  font-size: 11px;
  font-weight: 700;
  color: #aaa;
}

/* ===== 退会 月額コース一覧 ===== */
.sp-retire-course{
  margin: 0 16px 0;
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  overflow: hidden;
  animation: sp-fadein-up .4s ease .2s both;
}
.sp-retire-course__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px;
  font-size: 13px;
  font-weight: 900;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .03em;
}
.sp-retire-course__item{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid #f0f0f0;
  background: #fff;
  gap: 12px;
}
.sp-retire-course__item:last-child{ border-bottom: none; }
.sp-retire-course__price{
  font-size: 22px;
  font-weight: 900;
  color: #1f2a24;
  line-height: 1;
}
.sp-retire-course__price span{
  font-size: 12px;
  color: #888;
  font-weight: 700;
  margin-left: 2px;
}
.sp-retire-course__btn{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 13px 16px;
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  background: #c0392b;
  border: 2px solid #7b241c;
  box-shadow: 3px 3px 0 #7b241c;
  text-decoration: none;
  letter-spacing: .03em;
  transition: .1s;
  -webkit-tap-highlight-color: transparent;
}
.sp-retire-course__btn:active{
  transform: translate(2px,2px);
  box-shadow: 1px 1px 0 #7b241c;
}
.sp-retire-course__btn--regist{
  background: #1a7a40;
  border-color: #0f4a26;
  box-shadow: 3px 3px 0 #0f4a26;
}
.sp-retire-course__btn--regist:active{
  box-shadow: 1px 1px 0 #0f4a26;
}
.sp-retire-course__tag--star{
  background: linear-gradient(90deg, #f0c040, #f07800);
  color: #1f2a24;
  border-color: #c07000;
}
.sp-regist-payment{
  margin: 12px 16px 0;
  text-align: center;
  padding: 12px;
  background: #f8f8f8;
  border: 1.5px solid #e0e0e0;
}
.sp-regist-payment img{
  max-width: 100%;
  height: auto;
}
.sp-retire-course__empty{
  padding: 20px 16px;
  font-size: 13px;
  color: #888;
  text-align: center;
  background: #fff;
}
.sp-retire-course__item{
  display: flex;
  flex-direction: column;
  padding: 14px 16px;
  border-bottom: 1px solid #f0f0f0;
  background: #fff;
  gap: 12px;
}
.sp-retire-course__item:last-child{ border-bottom: none; }
.sp-retire-course__item--processing{
  background: #fafafa;
  opacity: .85;
}
.sp-retire-course__item-left{
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sp-retire-course__price-wrap{
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sp-retire-course__tag{
  display: inline-flex;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: 900;
  color: #fff;
  background: #18c989;
  letter-spacing: .04em;
  align-self: flex-start;
}
.sp-retire-course__processing-msg{
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: #555;
  line-height: 1.6;
}
.sp-retire-course__free-note{
  font-size: 11px;
  color: #c0392b;
  font-weight: 700;
  line-height: 1.5;
  padding: 4px 8px;
  background: #fff5f5;
  border-left: 3px solid #c0392b;
  margin-top: 2px;
}
.sp-retire-course__processing-badge{
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 900;
  color: #fff;
  background: #e67e22;
  align-self: flex-start;
}

/* ===== インフォボックス（注意書き等） ===== */
.sp-info{
  margin: 0 16px 20px;
  padding: 14px 16px;
  background: #fff9f0;
  border-left: 4px solid #ffd84d;
  font-size: 12px;
  color: #555;
  line-height: 1.7;
}
.sp-info--alert{
  background: #fff5f5;
  border-left-color: #ff5a5f;
}

/* ===== 登録制限ヒーロー ===== */
.sp-regist-stop-hero{
  position: relative;
  margin: 16px 16px 0;
  background: linear-gradient(160deg, #1a1a0a 0%, #3a3410 50%, #1a1a0a 100%);
  border: 3px solid #f0a020;
  border-radius: 0;
  text-align: center;
  padding: 36px 20px 28px;
  overflow: hidden;
  box-shadow: 0 6px 24px rgba(240,160,32,.3), inset 0 1px 0 rgba(255,255,255,.08);
  animation: sp-registered-pop .5s cubic-bezier(.36,1.5,.6,1) both;
}
.sp-regist-stop-hero__ring{
  position: absolute;
  inset: -40px;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, rgba(240,160,32,.18) 0%, transparent 65%);
  animation: sp-regist-stop-ring 2.2s ease-in-out infinite;
}
@keyframes sp-regist-stop-ring{
  0%,100%{ transform: scale(1);    opacity: .7; }
  50%     { transform: scale(1.12); opacity: 1; }
}
.sp-regist-stop-hero__icon{
  position: relative;
  font-size: 60px;
  line-height: 1;
  margin-bottom: 12px;
  filter: drop-shadow(0 0 12px rgba(240,160,32,.8));
  animation: sp-registered-shake 1s .5s cubic-bezier(.36,1.5,.6,1) both;
}
.sp-regist-stop-hero__title{
  position: relative;
  font-size: 20px;
  font-weight: 900;
  color: #fff;
  letter-spacing: .05em;
  text-shadow: 0 0 16px rgba(240,160,32,.9);
  margin-bottom: 4px;
}
.sp-regist-stop-hero__sub{
  position: relative;
  font-size: 12px;
  color: rgba(255,220,150,.7);
  margin-bottom: 14px;
  letter-spacing: .06em;
}
.sp-regist-stop-hero__badges{
  position: relative;
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}
.sp-regist-stop-hero__badge{
  display: inline-block;
  padding: 5px 12px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .02em;
  border: 2px solid;
}
.sp-regist-stop-hero__badge--red{
  background: rgba(255,60,60,.2);
  border-color: #ff5a5f;
  color: #ffaaaa;
}
.sp-regist-stop-hero__badge--yellow{
  background: rgba(240,160,32,.15);
  border-color: #f0a020;
  color: #ffe080;
}

/* ===== 登録失敗ヒーロー ===== */
.sp-registered-hero{
  position: relative;
  margin: 16px 16px 0;
  background: linear-gradient(160deg, #2a0a0a 0%, #4a1010 50%, #2a0a0a 100%);
  border: 3px solid #ff3a3a;
  border-radius: 0;
  text-align: center;
  padding: 36px 20px 28px;
  overflow: hidden;
  box-shadow: 0 6px 24px rgba(255,58,58,.35), inset 0 1px 0 rgba(255,255,255,.08);
  animation: sp-registered-pop .5s cubic-bezier(.36,1.5,.6,1) both;
}
@keyframes sp-registered-pop{
  0%  { transform: scale(.82) translateY(12px); opacity: 0; }
  100%{ transform: scale(1)   translateY(0);    opacity: 1; }
}
.sp-registered-hero__ring{
  position: absolute;
  inset: -40px;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, rgba(255,80,80,.18) 0%, transparent 65%);
  animation: sp-registered-ring-pulse 2s ease-in-out infinite;
}
@keyframes sp-registered-ring-pulse{
  0%,100%{ transform: scale(1);    opacity: .7; }
  50%     { transform: scale(1.12); opacity: 1; }
}
.sp-registered-hero__icon{
  position: relative;
  font-size: 60px;
  line-height: 1;
  margin-bottom: 12px;
  filter: drop-shadow(0 0 12px rgba(255,80,80,.8));
  animation: sp-registered-shake 1s .5s cubic-bezier(.36,1.5,.6,1) both;
}
@keyframes sp-registered-shake{
  0%  { transform: scale(.5) rotate(-20deg); opacity: 0; }
  60% { transform: scale(1.15) rotate(6deg); opacity: 1; }
  80% { transform: scale(.95) rotate(-3deg); }
  100%{ transform: scale(1) rotate(0); }
}
.sp-registered-hero__title{
  position: relative;
  font-size: 20px;
  font-weight: 900;
  color: #fff;
  letter-spacing: .05em;
  text-shadow: 0 0 16px rgba(255,80,80,.9);
  margin-bottom: 4px;
}
.sp-registered-hero__sub{
  position: relative;
  font-size: 12px;
  color: rgba(255,180,180,.8);
  margin-bottom: 14px;
  letter-spacing: .04em;
}
.sp-registered-hero__badges{
  position: relative;
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}
.sp-registered-hero__badge{
  display: inline-block;
  padding: 5px 12px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .03em;
  border: 2px solid;
}
.sp-registered-hero__badge--red{
  background: rgba(255,60,60,.2);
  border-color: #ff5a5f;
  color: #ffaaaa;
}
.sp-registered-hero__badge--yellow{
  background: rgba(255,200,50,.15);
  border-color: #f0c040;
  color: #ffe080;
}

/* ===== リスト（確認表示など） ===== */
.sp-list{
  margin: 0 16px 20px;
  border: 1.5px solid #e8e8e8;
}
.sp-list__row{
  display: flex;
  border-bottom: 1px solid #f0f0f0;
  font-size: 13px;
}
.sp-list__row:last-child{ border-bottom: none; }
.sp-list__key{
  width: 38%;
  flex-shrink: 0;
  padding: 12px 14px;
  font-weight: 700;
  color: #555;
  background: #fafafa;
  border-right: 1px solid #f0f0f0;
}
.sp-list__val{
  flex: 1;
  padding: 12px 14px;
  color: #1f2a24;
  word-break: break-all;
}

/* ===== docomo登録ブロック：矢印 ===== */
.sp-docomo-regist-arrow{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 10px 0 8px;
  background: #1a1a1a;
}
.sp-docomo-regist-arrow span{
  display: block;
  width: 0;
  height: 0;
  border-left: 12px solid transparent;
  border-right: 12px solid transparent;
  border-top: 10px solid #ff3a3a;
  opacity: 0;
  animation: sp-regist-arrow-drop .6s ease-in-out infinite;
}
.sp-docomo-regist-arrow span:nth-child(1){ animation-delay: 0s; }
.sp-docomo-regist-arrow span:nth-child(2){ animation-delay: .15s; }
.sp-docomo-regist-arrow span:nth-child(3){ animation-delay: .3s; }
@keyframes sp-regist-arrow-drop{
  0%  { opacity: 0;   transform: translateY(-4px); }
  50% { opacity: 1;   transform: translateY(0); }
  100%{ opacity: 0;   transform: translateY(4px); }
}

/* ===== docomo登録ボタン：アニメーション ===== */
.sp-docomo-regist-btn--anime{
  position: relative;
  overflow: hidden;
  animation: sp-regist-btn-float 2s ease-in-out infinite;
}
@keyframes sp-regist-btn-float{
  0%,100%{ transform: translateY(0);    box-shadow: 4px 4px 0 #8a6a00; }
  50%    { transform: translateY(-5px); box-shadow: 4px 9px 0 #8a6a00; }
}
.sp-docomo-regist-btn--anime::after{
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.3), transparent);
  animation: sp-regist-btn-shine 2.4s ease-in-out infinite;
}
@keyframes sp-regist-btn-shine{
  0%      { left: -100%; }
  40%,100%{ left: 160%; }
}

/* ===== docomo登録まとめブロック ===== */
.sp-docomo-regist-block{
  margin: 12px 16px 0;
  background: linear-gradient(160deg, #0d0d0d 0%, #1a0a2e 40%, #2a0a1a 100%);
  border: 3px solid #ff3a3a;
  box-shadow: 0 0 0 1px #ff3a3a33, 4px 4px 0 #6a006a;
  overflow: hidden;
}
.sp-docomo-regist-block .sp-docomo-campaign{
  margin: 0;
  border: none;
  box-shadow: none;
  border-bottom: 1px solid rgba(255,255,255,.1);
  background: transparent;
}
.sp-docomo-regist-block .sp-docomo-campaign::before{
  display: none;
}
.sp-docomo-regist-block .sp-docomo-regist-arrow{
  background: transparent;
  padding: 6px 0;
}
.sp-docomo-regist-block .sp-docomo-single-action{
  margin: 0;
  padding: 12px 14px 24px;
  background: transparent;
  border: none;
}
.sp-docomo-regist-block .sp-docomo-regist-btn{
  background: linear-gradient(180deg, #ffe84d 0%, #ffcc00 100%);
  border-color: #b38600;
  box-shadow: 4px 4px 0 #b38600;
  color: #3a2600;
  text-shadow: 0 1px 0 rgba(255,255,255,.4);
}
.sp-docomo-regist-block .sp-docomo-regist-btn:active{
  box-shadow: 1px 1px 0 #8a6a00;
}
.sp-docomo-regist-block .sp-docomo-carrier{
  margin: 0;
  border: none;
  box-shadow: none;
  border-top: 1px solid rgba(255,255,255,.1);
  background: #fff;
  padding: 10px 14px;
}
.sp-docomo-regist-block .sp-docomo-carrier__desc{
  color: #555;
}

/* ===== docomoキャリアバナー ===== */
.sp-docomo-carrier{
  margin: 12px 16px 0;
  background: linear-gradient(135deg, #0a0a1e 0%, #0d0d2e 50%, #0a0a1e 100%);
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.sp-docomo-carrier__img{
  height: 28px;
  width: auto;
  display: block;
}
.sp-docomo-carrier__desc{
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,.75);
  letter-spacing: .03em;
}

/* ===== キャリアバナー au修飾 ===== */
.sp-docomo-carrier--au{
  background: linear-gradient(135deg, #1a0e00 0%, #2e1800 50%, #1a0e00 100%);
  border-color: #f07800;
  box-shadow: 3px 3px 0 #7a3800;
}

/* ===== キャンペーンバナー au修飾 ===== */
.sp-docomo-campaign--au{
  border-color: #f07800;
  box-shadow: 0 0 0 1px #f0780033, 4px 4px 0 #7a3800;
}

/* ===== 登録ボタン au修飾 ===== */
.sp-docomo-regist-btn--au{
  background: #f07800;
  border-color: #7a3800;
  box-shadow: 4px 4px 0 #7a3800;
}
.sp-docomo-regist-btn--au:active{
  box-shadow: 1px 1px 0 #7a3800;
}

/* ===== 注意事項 番号 au修飾 ===== */
.sp-docomo-notice__num--au{
  background: #f07800;
}

/* ===== コース矢印 au修飾 ===== */
.sp-sb-course__arrow--au{
  color: #f07800;
}

/* ===== docomoキャンペーンバナー ===== */
.sp-docomo-campaign{
  position: relative;
  margin: 10px 16px 0;
  background: linear-gradient(160deg, #0d0d0d 0%, #1a0a2e 40%, #2a0a1a 100%);
  border: 3px solid #ff3aff;
  box-shadow: 0 0 0 1px #ff3aff33, 4px 4px 0 #6a006a;
  padding: 18px 16px 16px;
  text-align: center;
  overflow: hidden;
}
.sp-docomo-campaign::before{
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 6px,
    rgba(255,58,255,.04) 6px,
    rgba(255,58,255,.04) 12px
  );
  pointer-events: none;
}
.sp-docomo-campaign__label{
  position: relative;
  display: inline-block;
  font-size: 10px;
  font-weight: 900;
  color: #fff;
  background: linear-gradient(90deg, #ff3aff, #ff6a3a);
  padding: 3px 12px;
  letter-spacing: .08em;
  margin-bottom: 12px;
  clip-path: polygon(6px 0%, calc(100% - 6px) 0%, 100% 50%, calc(100% - 6px) 100%, 6px 100%, 0% 50%);
  animation: sp-campaign-label-blink 1.8s ease-in-out infinite;
}
@keyframes sp-campaign-label-blink{
  0%,100%{ opacity: 1; }
  50%     { opacity: .6; }
}
.sp-docomo-campaign__main{
  position: relative;
  font-size: 14px;
  font-weight: 800;
  color: rgba(255,255,255,.9);
  letter-spacing: .03em;
  line-height: 1.6;
}
.sp-docomo-campaign__highlight{
  display: inline-block;
  font-size: 22px;
  font-weight: 900;
  background: linear-gradient(90deg, #ffe066, #ff9a3a, #ff5aaa, #ffe066);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: sp-campaign-shine 2s linear infinite;
  letter-spacing: .04em;
  filter: drop-shadow(0 0 6px rgba(255,200,80,.5));
}
@keyframes sp-campaign-shine{
  0%  { background-position: 0% center; }
  100%{ background-position: 200% center; }
}

/* ===== docomo登録ボタン（単一コース） ===== */
.sp-docomo-single-action{
  margin: 14px 16px 0;
  text-align: center;
}
.sp-docomo-regist-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 16px 20px;
  font-size: 18px;
  font-weight: 900;
  color: #fff;
  background: #c0392b;
  border: 3px solid #7b241c;
  box-shadow: 4px 4px 0 #7b241c;
  text-decoration: none;
  letter-spacing: .04em;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: .1s;
}
.sp-docomo-regist-btn:active{
  transform: translate(3px,3px);
  box-shadow: 1px 1px 0 #7b241c;
}
.sp-docomo-regist-btn--done{
  background: #888;
  border-color: #555;
  box-shadow: 4px 4px 0 #555;
  cursor: not-allowed;
  opacity: .7;
}

/* ===== docomo注意事項ブロック ===== */
.sp-docomo-notice{
  margin: 12px 16px 0;
  border: 2px solid #333;
  overflow: hidden;
}
.sp-docomo-notice__head{
  background: #1f2a24;
  color: #fff176;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .06em;
  padding: 8px 14px;
  border-bottom: 2px solid #333;
}
.sp-docomo-notice__item{
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 12px 14px;
  border-bottom: 1px dashed #ddd;
  background: #fff;
}
.sp-docomo-notice__item:last-child{
  border-bottom: none;
}
.sp-docomo-notice__item--warn{
  background: #fff8f0;
}
.sp-docomo-notice__num{
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #c0392b;
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 1px;
}
.sp-docomo-notice__num--warn{
  background: #f07800;
  font-size: 14px;
}
.sp-docomo-notice__text{
  flex: 1;
  font-size: 12px;
  line-height: 1.7;
  color: #333;
}
.sp-docomo-notice__link{
  color: #4caf7d;
  font-weight: 700;
  text-decoration: none;
}

/* ===== ソフトバンクキャリアバナー ===== */
.sp-sb-carrier{
  margin: 12px 16px 0;
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.sp-sb-carrier__logo{
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.01em;
}
.sp-sb-carrier__logo-soft{ color: #fff; }
.sp-sb-carrier__logo-bank{ color: #53b8f5; }
.sp-sb-carrier__service{
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,.75);
  letter-spacing: .03em;
}

/* ===== SBコースカード ===== */
.sp-sb-course{
  display: flex;
  align-items: center;
  margin: 0 16px;
  border-bottom: 1px solid #e8e8e8;
  padding: 14px 0;
  text-decoration: none;
  gap: 8px;
}
.sp-sb-course:last-child{ border-bottom: none; }
.sp-sb-course--available{
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.sp-sb-course--available:active .sp-sb-course__inner{
  opacity: .7;
}
.sp-sb-course--registered{
  opacity: .75;
}
.sp-sb-course__inner{
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sp-sb-course__method{
  font-size: 11px;
  color: #888;
  font-weight: 600;
}
.sp-sb-course__point{
  font-size: 14px;
  font-weight: 800;
  color: #1f2a24;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.sp-sb-course__registered-badge{
  font-size: 11px;
  font-weight: 800;
  color: #4caf7d;
  background: rgba(76,175,125,.1);
  border: 1.5px solid #4caf7d;
  border-radius: 20px;
  padding: 2px 8px;
}
.sp-sb-course__price{
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.sp-sb-course__main{
  font-size: 16px;
  font-weight: 900;
  color: #1f2a24;
}
.sp-sb-course__badge{
  display: inline-block;
  font-size: 11px;
  font-weight: 800;
  padding: 3px 9px;
  border-radius: 4px;
  background: #ff5a5f;
  color: #fff;
}
.sp-sb-course__badge--free{
  background: #4caf7d;
}
.sp-sb-course__next{
  font-size: 12px;
  color: #666;
}
.sp-sb-course__arrow{
  font-size: 16px;
  font-weight: 900;
  color: #53b8f5;
  flex-shrink: 0;
}
.sp-sb-info-link{
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #4caf7d;
  font-weight: 700;
  font-size: 13px;
  text-decoration: none;
  padding: 4px 0;
}
.sp-sb-info-link span{
  font-size: 14px;
  color: #aaa;
}

/* ===== ログインボタン群 ===== */
.sp-login-buttons{
  margin: 12px 16px 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sp-login-carrier{
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  overflow: hidden;
}
.sp-login-carrier--docomo{ border-color: #e00; box-shadow: 3px 3px 0 #900; }
.sp-login-carrier--au    { border-color: #f07800; box-shadow: 3px 3px 0 #7a3800; }
.sp-login-carrier--sb    { border-color: #1a6abf; box-shadow: 3px 3px 0 #0d3a70; }

.sp-login-carrier__head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  font-size: 12px;
  font-weight: 700;
  color: #fff;
  background: #1f2a24;
}
.sp-login-carrier--docomo .sp-login-carrier__head{ background: #c00; }
.sp-login-carrier--au     .sp-login-carrier__head{ background: #f07800; }
.sp-login-carrier--sb     .sp-login-carrier__head{ background: #1a6abf; }

.sp-login-carrier__badge{
  display: inline-block;
  padding: 2px 10px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .02em;
  border: 1.5px solid rgba(255,255,255,.5);
  color: #fff;
}
.sp-login-btn{
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 15px 16px;
  font-size: 15px;
  font-weight: 900;
  color: #fff;
  text-decoration: none;
  letter-spacing: .03em;
  cursor: pointer;
  border: none;
  -webkit-tap-highlight-color: transparent;
  transition: opacity .1s;
  box-sizing: border-box;
}
.sp-login-btn:active{ opacity: .75; }
.sp-login-btn--docomo{ background: #e00; }
.sp-login-btn--au    { background: #f07800; }
.sp-login-btn--sb    { background: #1a6abf; }

.sp-login-btn__logo{
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(255,255,255,.2);
  border: 2px solid rgba(255,255,255,.5);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: -.02em;
}
.sp-login-btn__arrow{
  margin-left: auto;
  font-size: 16px;
  opacity: .7;
}

/* ===== IDログインフォーム ===== */
.sp-id-login-form{
  margin: 12px 16px 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 2.5px solid #1f2a24;
  box-shadow: 3px 3px 0 #1f2a24;
  overflow: hidden;
}
.sp-id-login-form__field{
  border-bottom: 1.5px solid #e0e0e0;
}
.sp-id-login-form__label{
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px 4px;
  font-size: 11px;
  font-weight: 800;
  color: #fff;
  background: #1f2a24;
  letter-spacing: .04em;
}
.sp-id-login-form__label-icon{
  font-size: 13px;
}
.sp-id-login-form__input{
  display: block;
  width: 100%;
  padding: 13px 14px;
  font-size: 15px;
  color: #1f2a24;
  background: #fff;
  border: none;
  outline: none;
  box-sizing: border-box;
  -webkit-appearance: none;
}
.sp-id-login-form__input:focus{
  background: #f0fff6;
}
.sp-id-login-form__action{
  padding: 14px;
  background: #f8f8f8;
}
.sp-id-login-form__btn{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 15px 20px;
  font-size: 16px;
  font-weight: 900;
  color: #fff;
  background: #2a6049;
  border: 3px solid #1a3a2a;
  box-shadow: 4px 4px 0 #1a3a2a;
  cursor: pointer;
  letter-spacing: .04em;
  -webkit-tap-highlight-color: transparent;
  transition: .1s;
}
.sp-id-login-form__btn:active{
  transform: translate(3px,3px);
  box-shadow: 1px 1px 0 #1a3a2a;
}

/* ===== 登録完了：ログイン情報 ===== */
.sp-regist-ok__info-row{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px dashed #e0e0e0;
  font-size: 13px;
}
.sp-regist-ok__info-row:last-child{
  border-bottom: none;
}
.sp-regist-ok__info-key{
  flex-shrink: 0;
  width: 96px;
  font-weight: 800;
  color: #555;
  font-size: 12px;
}
.sp-regist-ok__info-val{
  flex: 1;
  font-weight: 700;
  color: #1f2a24;
  word-break: break-all;
  background: #f4f4f4;
  border: 1.5px solid #ddd;
  padding: 6px 10px;
  font-size: 13px;
  letter-spacing: .04em;
}
.sp-regist-ok__ad{
  margin: 12px 16px 0;
  text-align: center;
}
