/*! Y!mobile LP stylesheet
 * policy: original order and content kept byte-for-byte
 * layer NN: id comments mark the original <style> blocks
 */
/* ===== layer 15: ym-rev26d-css ===== */
/* CTA：.ctas が grid（PCは2カラム）で中央寄せになっていたのを左揃えに */
html body #features .acc__bd .ctas,html body #network .acc__bd .ctas{
  display:block!important;max-width:none!important;padding:0!important;margin-top:14px!important;
  text-align:left!important;justify-items:start!important;place-items:start!important;
}
html body #features .acc__bd .ctas>a.btn,html body #network .acc__bd .ctas>a.btn{
  margin-left:0!important;margin-right:auto!important;justify-self:start!important;
}

/* ===== layer 16: ym-pay-balance ===== */
/* ===== PayPayセクション：図解の上下余白を揃えてバランス調整 ===== */
html body #features .acc__bd .accimg--pay,
html body #network .acc__bd .accimg--pay{
  margin:-5px 0 10px!important;padding:0!important;overflow:visible!important;max-height:none!important}
html body #features .acc__bd .balance+.accimg--pay,
html body #network .acc__bd .balance+.accimg--pay,
html body #features .acc__bd p+.accimg--pay,
html body #network .acc__bd p+.accimg--pay{margin-top:-5px!important}
html body #features .acc__bd .accimg--pay+p.note,
html body #network .acc__bd .accimg--pay+p.note,
html body #features .acc__bd .accimg--pay+p.note.note--out,
html body #network .acc__bd .accimg--pay+p.note.note--out{margin-top:10px!important}
html body #features .acc__bd .accimg--pay img,
html body #network .acc__bd .accimg--pay img{display:block!important;width:100%!important;height:auto!important;max-height:none!important;object-fit:contain!important;margin:0 auto 0 0!important}
/* 図解の下の注釈から内訳ボックスまでの間隔を整理 */
html body #features .acc__bd .accimg--pay+p.note+.pctbox,
html body #network .acc__bd .accimg--pay+p.note+.pctbox{margin-top:16px!important}
@media(min-width:900px){
  html body #features .acc__bd .accimg--pay,
  html body #network .acc__bd .accimg--pay{margin:-6px 0 12px!important}
  html body #features .acc__bd .balance+.accimg--pay,
  html body #network .acc__bd .balance+.accimg--pay,
  html body #features .acc__bd p+.accimg--pay,
  html body #network .acc__bd p+.accimg--pay{margin-top:-6px!important}
  html body #features .acc__bd .accimg--pay+p.note,
  html body #network .acc__bd .accimg--pay+p.note,
  html body #features .acc__bd .accimg--pay+p.note.note--out,
  html body #network .acc__bd .accimg--pay+p.note.note--out{margin-top:12px!important}
  html body #features .acc__bd .accimg--pay+p.note+.pctbox,
  html body #network .acc__bd .accimg--pay+p.note+.pctbox{margin-top:20px!important}
}

/* ===== V17 (appended to the LAST style block so it wins the cascade) ===== */

/* [5][6] One numeral face for the whole page. The official LP renders every
   price numeral in Helvetica/Arial, so map digits + comma + period onto that
   stack and prepend it to the Japanese stack. Mixed Japanese strings keep Noto
   for kana/kanji while numerals stay Latin, so tax-excluded and tax-included
   figures finally share one comma shape. Full-width digits are intentionally
   outside the range. */
/* YmNum face removed in V19: one static face cannot serve weights 100-900, so bold figures rendered thin */
html:root{--font:"Noto Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium",YuGothic,"Yu Gothic","Meiryo",sans-serif}

/* [1] Starlink feature heading on one line. */
html body #network .acc__bd .acc__fig h3.h3--one,
html body #features .acc__bd .acc__fig h3.h3--one
{white-space:nowrap!important;word-break:keep-all!important;
 font-size:clamp(10px,3.15vw,15px)!important;line-height:1.5!important;margin:0!important}

/* [2] Shared rhythm for the grey and white boxes. Padding is 15/13 rather than
   14/14 because the measured ink sat 2.7px high inside an even box. */
html body #network .acc__bd .gbox,html body #features .acc__bd .gbox
{margin:12px 0 0!important;padding:14px 18px!important}
html body #network .acc__bd .wbox,html body #features .acc__bd .wbox
{margin:12px 0 0!important;padding:14px 18px!important}
html body #network .acc__bd .gbox h3.h3--one,
html body #features .acc__bd .gbox h3.h3--one
{margin:0!important;line-height:1.5!important}
html body #network .acc__bd .wbox>*:first-child,
html body #features .acc__bd .wbox>*:first-child{margin-top:0!important}
html body #network .acc__bd .wbox>*:last-child,
html body #features .acc__bd .wbox>*:last-child{margin-bottom:0!important}

/* [3] Both swipe cues use the plan-side pill, centred, with the 1.4px ink
   asymmetry absorbed into 7px/6px padding. */
html body #lineup .swipehint,html body #plan .swipehint,
html body #plan .plancar__cue
{display:flex!important;align-items:center!important;justify-content:center!important;
 gap:7px!important;width:-moz-fit-content!important;width:fit-content!important;
 margin:12px 0 0!important;padding:5.95px 12px 7.05px!important;
 border:1px solid var(--ym-line)!important;border-radius:999px!important;
 background:var(--ym-soft)!important;color:#8E8E96!important;
 font-size:12px!important;font-weight:800!important;line-height:1.2!important;
 letter-spacing:.01em!important;text-align:center!important;box-sizing:border-box!important}

/* ===== V19 (appended to the LAST style block so it wins the cascade) ===== */

/* --- 1. numbers: the official LP stack, applied to number-bearing nodes ---
   www.ymobile.jp/sp/ym/ uses font-family:"Helvetica",Arial,sans-serif with
   font-weight:700 for every figure. Helvetica/Arial only ship 400 and 700,
   so asking for 800 makes the browser fall back to the REGULAR cut (thin).
   Japanese characters in the same node fall through to Noto Sans JP. */
html body .pl2__pr>b,
html body .pl2__tax,
html body .pl2__base,
html body .pl2x__basevl,
html body .pl2x__inc,
html body .pl2x__inc2,
html body .pl2x__inc2>b,
html body .pl2x__boxpr>b,
html body i.pl2x__n2,
html body .pl2x__n7,
html body .pl2x__u2,
html body .dband__num,
html body .hl__big>b.r,
html body .pick__amt>b,
html body .pl2__gb>b,
html body .pcmp__pr>b,
html body .pcmp__base,
html body .pc2__p,
html body .disc__vl,
html body .disc__amt,
html body .dsc2__ov
{font-family:"Helvetica","Helvetica Neue",Arial,"Liberation Sans","Noto Sans JP",
 "Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium",YuGothic,"Yu Gothic",
 Meiryo,sans-serif!important}

/* bold figures must ask for exactly 700, never 800 */
html body .pl2__pr>b,
html body .pl2__tax,
html body .pl2x__basevl,
html body .pl2x__inc,
html body .pl2x__inc2,
html body .pl2x__inc2>b,
html body .pl2x__boxpr>b,
html body i.pl2x__n2,
html body .pl2x__n7,
html body .pl2x__u2,
html body .dband__num,
html body .hl__big>b.r,
html body .pick__amt>b,
html body .pl2__gb>b,
html body .pcmp__pr>b,
html body .disc__vl,
html body .disc__amt,
html body .dsc2__ov
{font-weight:700!important}
html body .pl2__base,html body .pcmp__base{font-weight:400!important}

/* --- 2. network cards: kill the reserved empty line so the inner top and
   bottom spacing match --- */
html body #network .cards .card p{min-height:0!important}
html body #network .cards .card{padding:20px!important}

/* --- 3. the two boxes: symmetric padding, so balance holds at every width.
   The footnote marker is taken out of the line box so it cannot push the
   glyph block off centre. --- */
html body #network .acc__bd .gbox,html body #features .acc__bd .gbox,
html body #network .acc__bd .wbox,html body #features .acc__bd .wbox
{margin:12px 0 0!important;padding:14px 18px!important}
html body #network .acc__bd .gbox sup,html body #features .acc__bd .gbox sup,
html body #network .acc__bd .wbox sup,html body #features .acc__bd .wbox sup
{line-height:0!important;font-size:.72em!important;vertical-align:super!important}

/* --- 4. swipe pills: left aligned, equal air above and below --- */
html body #lineup .devtabs{margin-top:16px!important}
html body #plan .pl2{margin-top:16px!important}

/* --- 5. note wrapping: no mid-word breaks, Japanese kinsoku respected --- */
html body .lead,html body .note,html body .note--out,html body .note--cond,
html body .notes li,html body ul.pick__notes li,html body .acc__bd p.note,
html body .card p,html body .step p,html body .disc__note,html body .dband__notes,
html body .pl2x__cnote,html body .qa--note,html body .ovs__nt
{overflow-wrap:break-word!important;word-break:auto-phrase!important;
 line-break:strict!important;text-wrap:pretty!important}

/* ===== V20 ===== */
/* #plan .pl2__tax and #plan .pl2__pr .pl2x__inc2 are id-scoped, so they
   outrank the V19 rules. Match their specificity and force 700, the only
   bold cut Helvetica/Arial actually ships. */
html body #plan .pl2__card .pl2__tax,
html body #plan .pl2__tax,
html body #plan .pl2__pr .pl2x__inc2,
html body #plan .pl2__pr .pl2x__inc2>b,
html body #plan .pl2x__inc2,
html body #plan .pl2x__inc2>b,
html body #plan .pl2x__inc,
html body #plan .pl2x__boxpr>b,
html body #plan .pl2x__n7,
html body #plan .pl2x__u2,
html body #plan .pl2__gb>b,
html body #plan .pl2__pr>b,
html body #plan .dband__num,
html body #plan .pl2x__basevl
{font-weight:700!important}
html body #plan .pl2__card .pl2__tax,
html body #plan .pl2__tax,
html body #plan .pl2__pr .pl2x__inc2,
html body #plan .pl2__pr .pl2x__inc2>b,
html body #plan .pl2x__inc2,
html body #plan .pl2x__inc2>b
{font-family:"Helvetica","Helvetica Neue",Arial,"Liberation Sans","Noto Sans JP",
 "Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium",YuGothic,"Yu Gothic",
 Meiryo,sans-serif!important}

/* ===== V21 ===== */
html body #network .acc__bd .wbox,html body #features .acc__bd .wbox
{padding:13.3px 18px 14.7px!important}

/* ===== V22 ===== */

/* 1. discount rows asked for 800; Helvetica/Arial only ship 400 and 700, so
   the browser fell back to the regular cut and the figures looked thin next
   to the card-type box (which was already 700). */
html body #plan .disc__list .disc__vl,
html body #plan .disc__vl,
html body .disc__row .disc__vl,
html body #plan .disc__total .disc__amt,
html body #plan .disc__amt,
html body .disc__amt,
html body #plan .dsc2__ov,
html body .dsc2__ov
{font-weight:700!important}

/* 2. brand and service names must not be broken mid-word */
html body .nwx{white-space:nowrap}

/* 3. the band is a fixed-height flex row with baseline alignment, so its line
   sat at the top of the box. Measured 11.75 above / 21.50 below; shifted the
   padding by 4.9px without changing the band height. */
html body .pick__amt:not(.pick__amt--solo)
{padding-top:14.9px!important;padding-bottom:5.1px!important}

/* 4. this figure carries its own inner bottom padding, so the 16px margin read
   as a 36px gap. 4px brings it in line with the other detail links (~22px). */
html body .tsdiag+.tlink__w{margin-top:4px!important}

/* 5. lead-ins without figures are Japanese only: keep the Japanese face and
   its 800 weight instead of the number stack. */
html body .pick__amt>b.nonum,html body .pick__amt--solo>b
{font-family:"Noto Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium",YuGothic,"Yu Gothic",Meiryo,sans-serif!important;font-weight:800!important}

/* 6. cards: measured 23.67 above / 24.63 below, and the icon was centred on
   the title row only, so it drifted when the copy wrapped. */
html body #network .cards .card{padding:20px 20px 19.1px!important}
html body #network .cards .card__ico
{grid-row:1/span 2!important;align-self:center!important}

/* ================= V24: 改行・余白の最終調整 ================= */

/* 1. 注释記号(※/＊)を行ボックスから外し、直前の全角グリフ(％、円など)と
      重ならないように位置を固定する */
html body sup,
html body .pc2 sup,
html body .pc2__t sup, html body .pc2__t2 sup,
html body .pc2__li sup, html body .pc2__li2 sup, html body .pc2__k sup,
html body .note sup, html body .notes li sup,
html body .qa-nw sup{
  font-size:.62em!important; font-weight:700!important;
  vertical-align:baseline!important; position:relative!important;
  top:-.42em!important; line-height:0!important;
  margin:0 .1em 0 .22em!important;
  white-space:nowrap!important; letter-spacing:0!important}

/* 2. 注記類は日本語の自然折り返しのみ。auto-phrase / anywhere を側て、
      禁則処理を有効にして「、」「。」「ー」が行頭に来ないようにする */
html body .note, html body .note--out, html body .note--cond,
html body .notes li, html body ul.pick__notes li,
html body .acc__bd p, html body .acc__bd p.note,
html body .qa .note, html body .qa--note .note,
html body .pick__note .note, html body details.pick__note p.note,
html body .ovs__nt, html body .wbox .note, html body .gbox .note,
html body .pc2__li, html body .pc2__li2{
  word-break:normal!important;
  overflow-wrap:break-word!important;
  line-break:strict!important;
  text-wrap:pretty!important;
  hyphens:none!important;
  text-align:left!important}

/* 3. SIM/eSIM の回答文は1つの流れとして扱い、末尾の孤立行を作らない */
html body .pick__card details.qa>p.note{
  text-wrap:balance!important; white-space:normal!important}

/* 4. ネットワークの3つの枠：どの枠も上下の余白を同じに揃える */
html body #network .cards .card{
  padding:20px!important; row-gap:6px!important;
  align-content:center!important; align-items:center!important}
html body #network .cards .card p{
  min-height:0!important; margin:0!important; align-self:center!important}
html body #network .cards .card .h3{margin:0!important; align-self:center!important}
html body #network .cards .card__ico{
  grid-row:1/span 2!important; align-self:center!important; margin:0!important}
@media(min-width:900px){
  html body #network .cards .card{
    padding:22px 20px!important; align-content:center!important}
  html body #network .cards .card__ico{grid-row:auto!important}
}

/* ========== V25: 注記・本文の強制折り返しを解除（見出しは対象外） ========== */
.dev .note{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
#plan .notes li,
#plan .acc__bd p,
#plan .acc__bd .note{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
#flow .notes li{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
/* 日本語の改行位置を自然に、孤立行を抑制 */
#network .acc__bd p,
#network .acc__bd li,
#network .acc__bd th,
#network .acc__bd td,
#features .acc__bd p,
#features .acc__bd li,
#features .acc__bd th,
#features .acc__bd td{word-break:normal!important;text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
#network .acc__bd .balance,
#features .acc__bd .balance{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
#network .acc__bd>p.balance,
#features .acc__bd>p.balance{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
.pick__d{word-break:normal!important;text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
.qa--note .qa__bd .note,
.qa--note .note{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
#features .acc .qa--note .note,
#network .acc .qa--note .note,
#plan .acc .qa--note .note,
#faq .acc .qa--note .note,
#lineup .acc .qa--note .note,
#campaign .acc .qa--note .note,
#flow .acc .qa--note .note{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
.pc2__li2,
.pl2__cond{word-break:normal!important;text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
/* long annotations: normal breaking + orphan-line avoidance (no forced keep-all) */
.note,
.notes li,
.acc__bd p{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
html body #plan .acc--items .accx__bd p.note{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
html body .pick__card ul.pick__notes li{word-break:normal!important;overflow-wrap:break-word!important;line-break:strict!important}
html body #faq .acc>details>.acc__bd>p{word-break:normal!important;text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
/* --- プラン周りの注釈：●ごとに改行し、不自然な折り返しを解消 --- */
body #plan .notes li.note{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
body #plan .notes li.note .nt{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
html body #faq .acc>details>.acc__bd>p,
html body #faq .acc__bd p,
html body #faq .acc__bd li,
html body #faq .acc__bd p.note{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
html body .pick__d,
html body .pick__notes li,
html body .pl2__cond{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
html body .note,
html body .note--out,
html body .note--cond,
html body .notes li,
html body ul.pick__notes li,
html body .acc__bd p.note,
html body .qa--note,
html body .ovs__nt{word-break:normal!important;text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
/* 2. 注記類は日本語の自然折り返しのみ。auto-phrase / anywhere を側て、
      禁則処理を有効にして「、」「。」「ー」が行頭に来ないようにする */
html body .note,
html body .note--out,
html body .note--cond,
html body .notes li,
html body ul.pick__notes li,
html body .acc__bd p,
html body .acc__bd p.note,
html body .qa .note,
html body .qa--note .note,
html body .pick__note .note,
html body details.pick__note p.note,
html body .ovs__nt,
html body .wbox .note,
html body .gbox .note,
html body .pc2__li,
html body .pc2__li2{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
/* 3. SIM/eSIM の回答文は1つの流れとして扱い、末尾の孤立行を作らない */
html body .pick__card details.qa>p.note{text-wrap:wrap!important;overflow-wrap:break-word!important;line-break:strict!important}
@media(min-width:900px){
.note,
.notes li,
.acc__bd p{max-width:none!important;overflow-wrap:break-word!important;line-break:strict!important}
.hl__r .note{max-width:none!important;overflow-wrap:break-word!important;line-break:strict!important}
}

/* explicit: PC の注記・SIM/eSIM 文は箱幅いっぱいに伸ばす */
html body details.pick__note>p.note,
html body details.qa>p.note,
html body .pick__card details.qa>p.note{
  max-width:none!important; width:auto!important;
  word-break:normal!important; overflow-wrap:break-word!important;
  line-break:strict!important; white-space:normal!important;
  text-wrap:wrap!important; text-align:left!important}

/* ===== layer 17: unnamed-17 ===== */
/* ===== V26 ===== */
/* 1) #network stacked cards: even vertical rhythm around the divider lines.
      The lines are each .card's border-bottom. row-gap:12px was being added
      BELOW the line only (line->ink 21px above vs 32px below). */
@media (max-width: 899px){
  html body #network .cards{ row-gap: 0 !important }
  html body #network .cards > .card{
    padding-top: 20px !important;
    padding-bottom: 20px !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
}

/* ===== layer 18: unnamed-18 ===== */
/* ===== V27 ===== */

/* A) #network card copy: break only at the authored point, and only while the
      cards are stacked. On PC (3 columns) the break is ignored. */
@media (min-width: 900px){
  html body #network .cards .card p br.ckbr{ display: none !important }
}

/* B) bold without recolouring: #network .acc__bd p b forces #FF0033 */
html body #network b.bk,
html body #network .acc__bd p b.bk,
html body #network .acc__bd p strong.bk,
html body .note b.bk{
  color: inherit !important;
  font-weight: 800 !important;
}

/* C) kill the entrance animation on the active plan card. The composited
      transform makes the price glyphs re-rasterise, which reads as the amount
      shrinking for one frame and snapping back. */
html body #plan .pl2__card,
html body #plan .pl2__card.is-on{
  animation: none !important;
  will-change: auto !important;
}

/* D) unify the discount markers with the card-type radios (20px ring / 10px dot)
      and centre the dot deterministically with inset:0 + margin:auto. */
html body #plan .disc__row,
html body .dsc2 .disc__row{
  grid-template-columns: 20px minmax(0, 1fr) auto !important;
}
html body .disc__ck,
html body .dsc2__rd{
  box-sizing: border-box !important;
  width: 20px !important;
  height: 20px !important;
  flex: 0 0 20px !important;
  min-width: 0 !important;
  border-width: 2px !important;
  padding: 0 !important;
  margin-top: 0 !important;
  align-self: center !important;
  position: relative !important;
}
html body .disc__ck[data-one="1"],
html body .dsc2__rd{ border-radius: 50% !important }

/* round dot: exact optical + geometric centre */
html body .disc__ck[data-one="1"]:checked::after,
html body .dsc2__rd:checked::after{
  content: "" !important;
  position: absolute !important;
  left: 0 !important; top: 0 !important; right: 0 !important; bottom: 0 !important;
  margin: auto !important;
  width: 10px !important;
  height: 10px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 50% !important;
  transform: none !important;
}

/* square checkbox tick: centre the box, then nudge for the L-shape's optics */
html body .disc__ck:not([data-one="1"]):checked::after{
  content: "" !important;
  position: absolute !important;
  left: 0 !important; top: 0 !important; right: 0 !important; bottom: 0 !important;
  margin: auto !important;
  width: 5px !important;
  height: 10px !important;
  border: 0 !important;
  border-right: 2.5px solid #fff !important;
  border-bottom: 2.5px solid #fff !important;
  border-radius: 0 !important;
  transform: translateY(-1px) rotate(40deg) !important;
}

/* ===== layer 19: unnamed-19 ===== */
/* ===== V28 : markers, definitive centring ===== */

/* Stop painting the dot with an absolutely positioned ::after. Its containing
   block is the input's padding box, so the result depends on box-sizing,
   border width and UA quirks. Paint it as a radial-gradient anchored to the
   BORDER box instead: 50% 50% is then the exact centre of the visible ring. */
html body .disc__ck[data-one="1"]:checked::after,
html body .dsc2__rd:checked::after,
html body .disc__ck[data-one="1"]::after,
html body .dsc2__rd::after{
  content: none !important;
  display: none !important;
}

html body .disc__ck[data-one="1"],
html body .dsc2__rd{
  -webkit-appearance: none !important;
  appearance: none !important;
  box-sizing: border-box !important;
  width: 20px !important;
  height: 20px !important;
  flex: 0 0 20px !important;
  min-width: 20px !important;
  max-width: 20px !important;
  min-height: 20px !important;
  padding: 0 !important;
  border-width: 2px !important;
  border-style: solid !important;
  border-radius: 50% !important;
  background-color: #fff !important;
  background-image: none !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-origin: border-box !important;
  background-clip: border-box !important;
  background-size: 100% 100% !important;
}

/* checked: 10px dot, dead centre of the ring */
html body .disc__ck[data-one="1"]:checked{
  border-color: var(--ym-red) !important;
  background-image: radial-gradient(circle at 50% 50%,
    var(--ym-red) 0 5px, rgba(0,0,0,0) 5px) !important;
}
html body .dsc2__rd:checked{
  border-color: var(--ym-navy) !important;
  background-image: radial-gradient(circle at 50% 50%,
    var(--ym-navy) 0 5px, rgba(0,0,0,0) 5px) !important;
}

/* unchecked rings keep the neutral outline */
html body .disc__ck[data-one="1"]:not(:checked),
html body .dsc2__rd:not(:checked){
  border-color: #C9C9D0 !important;
  background-image: none !important;
}

/* Restore the original vertical alignment: the discount rows are top-aligned
   (the marker sits on the title line), the card-type rows are centred. */
html body .disc__ck{
  align-self: start !important;
  margin-top: 2px !important;
}
html body .dsc2__rd{
  align-self: center !important;
  margin-top: 0 !important;
}

/* square checkbox: same 20px footprint, centred tick */
html body .disc__ck:not([data-one="1"]){
  box-sizing: border-box !important;
  width: 20px !important;
  height: 20px !important;
  flex: 0 0 20px !important;
  min-width: 20px !important;
  padding: 0 !important;
  border-width: 2px !important;
  border-radius: 4px !important;
}

/* ===== layer 20: ym-font-spec-v29 ===== */
/* ===== V29 : font spec conformance =====
   Rule: Helvetica/Arial ship 400 and 700 only. Any numeral set to 800 drops to
   regular and renders THINNER. So every element whose computed family starts
   with Helvetica must be pinned to 400 or 700. Rules carry the #plan id where
   needed so they beat the existing "#plan ... !important" declarations. */

/* (1) The "基本使用料（割引前）" label is Japanese-only copy, so it must not
   carry the numeral stack, and the spec pins it to 400. */
html body #plan p.pl2__base > b,
html body p.pl2__base > b,
html body #plan .pl2__base b,
html body .pl2__base b{
  font-family: var(--font) !important;
  font-weight: 400 !important;
}

/* (2) Numerals inside .nx
   - .pl2__base .nx = base fee figures  -> 400 (spec: do not bold)
   - every other .nx = display figures  -> 700 (was inheriting 800 = thinner) */
html body i.nx,
html body #plan i.nx{
  font-weight: 700 !important;
}
html body #plan p.pl2__base i.nx,
html body p.pl2__base i.nx{
  font-weight: 400 !important;
}

/* (3) Point-rate figures (＋2％ / ＋5％) were 800 -> pin to 700. */
html body .pctbox .pc2 .pc2__n .pc2__p,
html body .pc2__n .pc2__p,
html body .pc2__p{
  font-weight: 700 !important;
}

/* (4) Safety net: never let the numeral stack sit at a weight it cannot render.
   Applied only to the known numeric elements, never to Japanese headings. */
html body #plan .pl2__pr > b,
html body #plan .pl2__gb > b,
html body #plan .pcmp__pr > b,
html body #plan .pcmp__gb,
html body #plan .pl2__tax,
html body .dband__num,
html body .disc__vl,
html body .disc__amt,
html body .dsc2__ov{
  font-weight: 700 !important;
}
html body #plan .pcmp__base,
html body .pcmp__base{
  font-weight: 400 !important;
}

/* ===== layer 21: ym-cardheight-v30 ===== */
/* Reserve two lines for the discount-condition line so the card height never
   changes with the selection. Below 900px the line can wrap to two lines;
   from 900px up it is always one line, so only one line is reserved there. */
html body #plan .pl2__cond,
html body .pl2__cond{
  min-height: 35px !important;
  box-sizing: content-box !important;
}
@media (min-width: 900px){
  html body #plan .pl2__cond,
  html body .pl2__cond{
    min-height: 18px !important;
  }
}

/* ===== layer 22: ym-rev31-css ===== */
html body #plan .pl2__cond,
html body .pl2__cond{
  overflow: visible !important;
}
html body #plan .pl2__cond sup,
html body .pl2__cond sup{
  vertical-align: super !important;
}

html body .dband__amt .dband__num,
html body #plan .dband__amt .dband__num{
  transform: translateY(1.5px) !important;
}

/* ===== layer 23: ym-rev32-css ===== */
/* ---- 1. 「～で」の注釈：見切れ解消＋割引によらない固定サイズ ---- */
html body #plan .pl2__card p.pl2__cond,
html body #plan .pl2__card p.pl2__cond.pl2x__fit,
html body #plan .pl2__card p.pl2__cond.is-off{
  font-size: 12px !important;
  line-height: 17.4px !important;
  white-space: normal !important;
  text-wrap: wrap !important;
  text-wrap-mode: wrap !important;
  word-break: normal !important;
  overflow: visible !important;
  box-sizing: content-box !important;
  padding-top: 6px !important;
  margin-top: 2px !important;
  min-height: 34.8px !important;
  max-width: none !important;
}
/* the ＊ marks may keep rising above the line - nothing clips them now */
html body #plan .pl2__card p.pl2__cond sup,
html body #plan .pl2__card p.pl2__cond.pl2x__fit sup{
  vertical-align: super !important;
  line-height: 0 !important;
}
/* ---- 2. 割引を切り替えてもカードの縦幅を変えない ---- */
/* v39: space reservation removed (runtime max-height pass instead) */

/* ---- 3. 金額間の余白を公式に寄せる ---- */
/* full-width parentheses were running with "palt" 0 (full-width advance) */
html body #plan .pl2__pr{
  font-feature-settings: "palt" 1, "tnum" 1 !important;
}
html body #plan .pl2__pr .pl2x__exlb{
  margin-right: .03em !important;
}
html body #plan .pl2__pr > b{
  margin-left: .02em !important;
  margin-right: .02em !important;
}
html body #plan .pl2__pr .pl2x__inc2{
  margin-left: .04em !important;
  letter-spacing: -.02em !important;
  font-feature-settings: "palt" 1, "tnum" 1 !important;
}
html body #plan .pl2__pr .pl2x__inc2 > b{
  margin-left: .02em !important;
  margin-right: .02em !important;
}

/* ===== layer 24: ym-rev34-base ===== */
/* v38: hidden-block space reservation removed - the runtime pass
   below locks every card to the tallest real state instead. */
