/* =========================================================
   身体的拘束最小化 収支シミュレーター — LP埋め込みコンポーネント
   Riz株式会社 / 令和8年度診療報酬改定対応
   ---------------------------------------------------------
   ・すべて #riz-simulator 配下にスコープ。他のCSSに影響しません。
   ・LPの tokens.css があればその変数を継承、無ければフォールバック値で動作。
   ・Tailwind・jQuery等の依存なし。
   ========================================================= */

#riz-simulator {
  --rz-primary:      var(--color-primary,      #0891B2);
  --rz-primary-dark: var(--color-primary-dark, #0E7490);
  --rz-accent:       var(--color-accent,       #059669);
  --rz-accent-dark:  var(--color-accent-dark,  #047857);
  --rz-ink:          var(--color-foreground,   #16303A);
  --rz-surface:      var(--color-surface,      #F6FBFC);
  --rz-muted:        var(--color-muted,        #EAF3F6);
  --rz-muted-fg:     var(--color-muted-fg,     #5B7682);
  --rz-border:       var(--color-border,       #DCEAEF);
  --rz-warning:      var(--color-warning,      #B45309);
  --rz-danger:       var(--color-destructive,  #DC2626);
  --rz-radius:       var(--radius-md,          .875rem);
  --rz-radius-sm:    var(--radius-sm,          .5rem);
  --rz-fh:           var(--font-heading, "Figtree", "Noto Sans JP", system-ui, sans-serif);
  --rz-fb:           var(--font-body,    "Noto Sans JP", system-ui, sans-serif);

  padding-block: 5rem;
  background: var(--rz-surface);
  color: var(--rz-ink);
  font-family: var(--rz-fb);
  line-height: 1.75;
}
@media (min-width: 768px) { #riz-simulator { padding-block: 7rem; } }

#riz-simulator *,
#riz-simulator *::before,
#riz-simulator *::after { box-sizing: border-box; }

#riz-simulator .rzsim__inner {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: 1.5rem;
}

/* ---------- 見出し ---------- */
#riz-simulator .rzsim__eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  margin: 0;
  font-family: var(--rz-fh); font-weight: 600; font-size: .8rem;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--rz-primary-dark);
}
#riz-simulator .rzsim__eyebrow::before {
  content: ""; width: 1.75rem; height: 2px; border-radius: 2px;
  background: var(--rz-primary);
}
#riz-simulator .rzsim__title {
  margin: 1rem 0 0;
  font-family: var(--rz-fh); font-weight: 700;
  font-size: clamp(1.6rem, 1.1rem + 1.8vw, 2.25rem);
  line-height: 1.25; letter-spacing: -.01em;
  text-wrap: balance;
}
#riz-simulator .rzsim__lead {
  margin: 1.25rem 0 0; max-width: 46rem;
  color: var(--rz-muted-fg); text-wrap: pretty;
}
#riz-simulator .rzsim__lead strong { color: var(--rz-ink); font-weight: 500; }

/* ---------- レイアウト ---------- */
#riz-simulator .rzsim__grid {
  display: grid; gap: 1.5rem; margin-top: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 900px) {
  #riz-simulator .rzsim__grid { grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); align-items: start; }
}

#riz-simulator .rzsim__panel {
  background: #fff;
  border: 1px solid var(--rz-border);
  border-radius: var(--rz-radius);
  padding: 1.5rem;
}
@media (min-width: 768px) { #riz-simulator .rzsim__panel { padding: 1.75rem; } }

#riz-simulator .rzsim__h3 {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem .75rem;
  margin: 0 0 .25rem;
  font-family: var(--rz-fh); font-weight: 600; font-size: 1.0625rem; line-height: 1.4;
}
#riz-simulator .rzsim__h3 .rzsim__sub {
  font-family: var(--rz-fb); font-weight: 400; font-size: .8125rem; color: var(--rz-muted-fg);
}
#riz-simulator .rzsim__hint {
  margin: 0 0 1rem; font-size: .8125rem; color: var(--rz-muted-fg); line-height: 1.6;
}

/* ---------- 入力行 ---------- */
#riz-simulator .rzsim__wardhead {
  display: grid; grid-template-columns: minmax(0,1fr) 6.5rem 2rem; gap: .5rem;
  padding: 0 .25rem .375rem;
  font-size: .75rem; font-weight: 600; color: var(--rz-muted-fg);
}
#riz-simulator .rzsim__wardhead span:nth-child(2) { text-align: center; }

#riz-simulator .rzsim__ward {
  display: grid; grid-template-columns: minmax(0,1fr) 6.5rem 2rem; gap: .5rem;
  align-items: center; margin-bottom: .5rem;
}
#riz-simulator .rzsim__ward select,
#riz-simulator .rzsim__ward input {
  width: 100%; min-width: 0;
  font-family: inherit; font-size: .875rem; color: var(--rz-ink);
  background: #fff;
  border: 1px solid var(--rz-border); border-radius: var(--rz-radius-sm);
  padding: .5rem .625rem; line-height: 1.4;
  appearance: auto;
}
#riz-simulator .rzsim__ward input { text-align: right; font-variant-numeric: tabular-nums; }
#riz-simulator .rzsim__ward select:focus-visible,
#riz-simulator .rzsim__ward input:focus-visible,
#riz-simulator button:focus-visible,
#riz-simulator a:focus-visible,
#riz-simulator summary:focus-visible {
  outline: 3px solid var(--rz-primary); outline-offset: 2px;
}
#riz-simulator .rzsim__ward--elig select {
  border-color: var(--rz-accent);
  background: color-mix(in srgb, var(--rz-accent) 7%, #fff);
}
#riz-simulator .rzsim__rm {
  width: 2rem; height: 2rem; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1rem; line-height: 1; color: var(--rz-muted-fg);
  background: transparent; border: 1px solid var(--rz-border);
  border-radius: var(--rz-radius-sm); cursor: pointer;
  transition: color .2s, border-color .2s;
}
#riz-simulator .rzsim__rm:hover { color: var(--rz-danger); border-color: var(--rz-danger); }

#riz-simulator .rzsim__add {
  width: 100%; margin-top: .25rem; padding: .625rem;
  font-family: var(--rz-fh); font-weight: 600; font-size: .875rem;
  color: var(--rz-primary-dark); background: var(--rz-muted);
  border: 1px dashed var(--rz-border); border-radius: var(--rz-radius-sm);
  cursor: pointer; transition: background .2s, border-color .2s;
}
#riz-simulator .rzsim__add:hover { background: #fff; border-color: var(--rz-primary); }

/* ---------- 施設名フィールド ---------- */
#riz-simulator .rzsim__field { margin-bottom: 1rem; }
#riz-simulator .rzsim__field label {
  display: block; margin-bottom: .25rem;
  font-size: .75rem; font-weight: 600; color: var(--rz-muted-fg);
}
#riz-simulator .rzsim__field label span {
  margin-left: .5rem; font-weight: 400; color: #91A8B1;
}
#riz-simulator .rzsim__field input {
  width: 100%; font-family: inherit; font-size: .875rem; color: var(--rz-ink);
  background: #fff; border: 1px solid var(--rz-border);
  border-radius: var(--rz-radius-sm); padding: .5rem .625rem; line-height: 1.4;
}
#riz-simulator .rzsim__field input:focus-visible {
  outline: 3px solid var(--rz-primary); outline-offset: 2px;
}

/* ---------- 結果 ---------- */
#riz-simulator .rzsim__panel--res { background: var(--rz-surface); }

#riz-simulator .rzsim__big {
  border: 1px solid color-mix(in srgb, var(--rz-accent) 35%, var(--rz-border));
  background: color-mix(in srgb, var(--rz-accent) 6%, #fff);
  border-radius: var(--rz-radius); padding: 1.125rem 1.25rem;
}
#riz-simulator .rzsim__lbl {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .25rem .75rem;
  font-size: .8125rem; font-weight: 600; color: var(--rz-muted-fg); line-height: 1.5;
}
#riz-simulator .rzsim__num {
  margin-top: .375rem;
  font-family: var(--rz-fh); font-weight: 800; letter-spacing: -.02em;
  font-size: clamp(1.75rem, 1.2rem + 2.2vw, 2.5rem); line-height: 1.1;
  font-variant-numeric: tabular-nums;
  color: var(--rz-accent-dark);
}
#riz-simulator .rzsim__u {
  margin-left: .25rem; font-size: .9375rem; font-weight: 600; letter-spacing: 0;
}
#riz-simulator .rzsim__note {
  margin: .375rem 0 0; font-size: .75rem; color: var(--rz-muted-fg);
}

#riz-simulator .rzsim__pair {
  display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-top: .75rem;
}
#riz-simulator .rzsim__mini {
  border: 1px solid var(--rz-border); background: #fff;
  border-radius: var(--rz-radius-sm); padding: .875rem 1rem;
}
#riz-simulator .rzsim__mini .rzsim__lbl { display: block; font-size: .75rem; }
#riz-simulator .rzsim__mini .rzsim__num { font-size: clamp(1.1rem, .8rem + 1.1vw, 1.5rem); }
#riz-simulator .rzsim__mini--w .rzsim__num { color: var(--rz-warning); }
#riz-simulator .rzsim__mini--d .rzsim__num { color: var(--rz-danger); }

#riz-simulator .rzsim__swing {
  display: flex; flex-wrap: wrap; align-items: baseline;
  justify-content: space-between; gap: .375rem .75rem;
  margin-top: .75rem; padding: .875rem 1rem;
  background: var(--rz-ink); color: #fff;
  border-radius: var(--rz-radius-sm);
}
#riz-simulator .rzsim__swing .t { font-size: .8125rem; color: rgba(255,255,255,.82); }
#riz-simulator .rzsim__swing .v {
  font-family: var(--rz-fh); font-weight: 800; font-size: 1.375rem;
  letter-spacing: -.02em; font-variant-numeric: tabular-nums;
}
#riz-simulator .rzsim__swing .rzsim__u { font-size: .8125rem; }

#riz-simulator .rzsim__brkwrap {
  margin-top: .875rem; border: 1px solid var(--rz-border);
  border-radius: var(--rz-radius-sm); overflow: hidden; background: #fff;
}
#riz-simulator table { width: 100%; border-collapse: collapse; font-size: .8125rem; }
#riz-simulator .rzsim__brk th {
  background: var(--rz-muted); color: var(--rz-muted-fg);
  font-weight: 600; font-size: .75rem; text-align: left;
  padding: .5rem .75rem;
}
#riz-simulator .rzsim__brk td {
  padding: .5rem .75rem; border-top: 1px solid var(--rz-border); vertical-align: middle;
}
#riz-simulator .rzsim__brk .n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
#riz-simulator .rzsim__brk .g { color: var(--rz-accent-dark); font-weight: 700; }
#riz-simulator .rzsim__brk .rzsim__empty { color: var(--rz-muted-fg); text-align: center; padding: 1.25rem; }

/* ---------- 一覧（details） ---------- */
#riz-simulator .rzsim__details {
  margin-top: 1.5rem; background: #fff;
  border: 1px solid var(--rz-border); border-radius: var(--rz-radius);
}
#riz-simulator .rzsim__details > summary {
  cursor: pointer; list-style: none;
  padding: 1rem 1.25rem;
  font-family: var(--rz-fh); font-weight: 600; font-size: .9375rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
#riz-simulator .rzsim__details > summary::-webkit-details-marker { display: none; }
#riz-simulator .rzsim__details > summary::after {
  content: "＋"; color: var(--rz-primary-dark); font-weight: 700; flex: none;
}
#riz-simulator .rzsim__details[open] > summary::after { content: "−"; }
#riz-simulator .rzsim__details[open] > summary { border-bottom: 1px solid var(--rz-border); }

#riz-simulator .rzsim__tblwrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
#riz-simulator .rzsim__list { min-width: 46rem; font-size: .8125rem; }
#riz-simulator .rzsim__list th {
  position: sticky; top: 0; z-index: 1;
  background: var(--rz-ink); color: #fff;
  font-weight: 600; font-size: .75rem; line-height: 1.35;
  padding: .625rem .625rem; text-align: center; vertical-align: middle;
}
#riz-simulator .rzsim__list th:nth-child(1),
#riz-simulator .rzsim__list th:nth-child(2) { text-align: left; }
#riz-simulator .rzsim__list td {
  padding: .4375rem .625rem; border-top: 1px solid var(--rz-border); vertical-align: middle;
}
#riz-simulator .rzsim__list .c { text-align: center; }
#riz-simulator .rzsim__list .ku { color: var(--rz-muted-fg); white-space: nowrap; font-variant-numeric: tabular-nums; }
#riz-simulator .rzsim__list tr.on { background: color-mix(in srgb, var(--rz-accent) 7%, #fff); }
#riz-simulator .rzsim__list tr.on .nm { font-weight: 700; }
#riz-simulator .rzsim__list tr.grp td {
  background: var(--rz-muted); color: var(--rz-primary-dark);
  font-weight: 700; font-size: .75rem; letter-spacing: .04em;
}
#riz-simulator .rzsim__p40 {
  display: inline-block; padding: .0625rem .375rem; border-radius: 999px;
  background: var(--rz-accent-dark); color: #fff; font-weight: 700; font-size: .6875rem;
  white-space: nowrap;
}
#riz-simulator .rzsim__tg { font-weight: 600; }
#riz-simulator .rzsim__og,
#riz-simulator .rzsim__nn { color: #9FB4BC; }
#riz-simulator .rzsim__y { color: var(--rz-primary-dark); font-weight: 700; }
#riz-simulator .rzsim__chk { color: var(--rz-warning); font-weight: 700; font-size: .75rem; }
#riz-simulator .rzsim__fn {
  font-size: .6875rem; font-weight: 700; color: var(--rz-primary-dark);
  vertical-align: super; line-height: 0; margin-left: .125rem;
}
#riz-simulator .rzsim__listnote {
  margin: 0; padding: .875rem 1.25rem 1.125rem;
  font-size: .75rem; line-height: 1.7; color: var(--rz-muted-fg);
  border-top: 1px solid var(--rz-border);
}

/* ---------- CTA / 注記 ---------- */
#riz-simulator .rzsim__cta {
  display: flex; flex-wrap: wrap; gap: .75rem; align-items: center;
  margin-top: 1.75rem;
}
#riz-simulator .rzsim__btn {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--rz-fh); font-weight: 600; font-size: .9375rem;
  padding: .8rem 1.5rem; border-radius: var(--rz-radius-sm);
  border: 0; cursor: pointer; text-decoration: none; line-height: 1;
  transition: background .2s, transform .2s, box-shadow .2s, border-color .2s, color .2s;
}
#riz-simulator .rzsim__btn--primary { background: var(--rz-accent-dark); color: #fff; }
#riz-simulator .rzsim__btn--primary:hover {
  background: #036249; transform: translateY(-2px);
  box-shadow: 0 10px 24px -8px rgba(5,150,105,.5);
}
#riz-simulator .rzsim__btn--pdf {
  background: var(--rz-primary-dark); color: #fff;
}
#riz-simulator .rzsim__btn--pdf:hover {
  background: #0B5566; transform: translateY(-2px);
  box-shadow: 0 10px 24px -8px rgba(8,145,178,.5);
}
#riz-simulator .rzsim__btn--ghost {
  background: #fff; color: var(--rz-ink); border: 1.5px solid var(--rz-border);
}
#riz-simulator .rzsim__btn--ghost:hover {
  border-color: var(--rz-primary); color: var(--rz-primary);
  background: var(--rz-surface);
}
#riz-simulator .rzsim__live {
  font-size: .8125rem; color: var(--rz-accent-dark); font-weight: 600;
}

#riz-simulator .rzsim__disc {
  margin: 1.5rem 0 0; max-width: 60rem;
  font-size: .75rem; line-height: 1.8; color: var(--rz-muted-fg);
}
#riz-simulator .rzsim__noscript {
  margin-top: 1.5rem; padding: 1rem 1.25rem;
  background: #fff; border: 1px solid var(--rz-border);
  border-radius: var(--rz-radius-sm); font-size: .875rem;
}

/* ---------- 狭幅調整 ---------- */
@media (max-width: 420px) {
  #riz-simulator .rzsim__wardhead,
  #riz-simulator .rzsim__ward { grid-template-columns: minmax(0,1fr) 4.75rem 1.875rem; }
  #riz-simulator .rzsim__pair { grid-template-columns: 1fr; }
  #riz-simulator .rzsim__cta .rzsim__btn { width: 100%; justify-content: center; }
}

/* color-mix 非対応ブラウザ向けフォールバック */
@supports not (background: color-mix(in srgb, #000 10%, #fff)) {
  #riz-simulator .rzsim__big { background: #F0FBF6; border-color: #A7D8C4; }
  #riz-simulator .rzsim__ward--elig select { background: #F0FBF6; }
  #riz-simulator .rzsim__list tr.on { background: #F0FBF6; }
}

/* =========================================================
   概算書（PDF保存用）
   ---------------------------------------------------------
   #rzsim-doc は init 時に body 直下へ移動されます。
   画面上は常に非表示。印刷時のみ、html.rzsim-printing が
   付いている場合に限り、これだけを表示します。
   ========================================================= */

#rzsim-doc { display: none; }

@media print {
  html.rzsim-printing,
  html.rzsim-printing body {
    background: #fff !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  html.rzsim-printing body > *:not(#rzsim-doc) { display: none !important; }
  html.rzsim-printing #rzsim-doc { display: block !important; }
}

#rzsim-doc {
  font-family: "Noto Sans JP", system-ui, sans-serif;
  color: #16303A;
  font-size: 10pt;
  line-height: 1.65;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
#rzsim-doc * { box-sizing: border-box; }

#rzsim-doc .d-hdr {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 1rem; padding-bottom: 3mm; border-bottom: 2px solid #16303A;
}
#rzsim-doc .d-logo { font-size: 15pt; font-weight: 800; letter-spacing: -.02em; }
#rzsim-doc .d-logo em { font-style: normal; color: #0891B2; }
#rzsim-doc .d-kind { font-size: 8pt; color: #5B7682; text-align: right; line-height: 1.5; }

#rzsim-doc .d-title { margin: 4.5mm 0 0; font-size: 17pt; font-weight: 800; letter-spacing: -.01em; }
#rzsim-doc .d-to {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 1rem; margin-top: 3mm; padding-bottom: 2mm; border-bottom: 1px solid #DCEAEF;
}
#rzsim-doc .d-to .nm { font-size: 12pt; font-weight: 700; }
#rzsim-doc .d-to .dt { font-size: 9pt; color: #5B7682; white-space: nowrap; }

#rzsim-doc .d-pre {
  margin-top: 3mm; padding: 2.5mm 3mm;
  border: 1px solid #DCEAEF; border-left: 3px solid #0891B2;
  font-size: 8.5pt; line-height: 1.6; color: #5B7682;
}
#rzsim-doc .d-pre b { color: #16303A; }

#rzsim-doc .d-h2 {
  margin: 4.5mm 0 1.8mm; font-size: 11pt; font-weight: 700;
  display: flex; align-items: center; gap: 2mm;
}
#rzsim-doc .d-h2 .n {
  display: inline-flex; align-items: center; justify-content: center;
  width: 5mm; height: 5mm; border-radius: 50%;
  background: #16303A; color: #fff; font-size: 7.5pt; font-weight: 700; flex: none;
}

#rzsim-doc table { width: 100%; border-collapse: collapse; font-size: 9pt; }
#rzsim-doc thead { display: table-header-group; }   /* 2ページ目以降も見出し行を繰り返す */
#rzsim-doc tr { break-inside: avoid; page-break-inside: avoid; }
#rzsim-doc th, #rzsim-doc td {
  border: 1px solid #B9CFD7; padding: 1.6mm 2.4mm; vertical-align: middle;
}
#rzsim-doc thead th {
  background: #EAF3F6; font-weight: 700; font-size: 8.5pt; text-align: left;
}
#rzsim-doc .r { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
#rzsim-doc .c { text-align: center; white-space: nowrap; }
#rzsim-doc tfoot td { background: #F6FBFC; font-weight: 700; }
#rzsim-doc .d-ok { font-weight: 700; color: #047857; }
#rzsim-doc .d-no { color: #8FA8B2; }

#rzsim-doc .d-res th { background: #EAF3F6; }
#rzsim-doc .d-res .amt { font-size: 12pt; font-weight: 800; letter-spacing: -.01em; }
#rzsim-doc .d-res .gain .amt { color: #047857; }
#rzsim-doc .d-res .w .amt { color: #B45309; }
#rzsim-doc .d-res .d .amt { color: #DC2626; }
#rzsim-doc .d-res .sw td { background: #16303A; color: #fff; border-color: #16303A; }
#rzsim-doc .d-res .sw .amt { color: #fff; }
#rzsim-doc .d-res .sub { font-size: 8pt; color: #5B7682; font-weight: 400; }
#rzsim-doc .d-res .sw .sub { color: rgba(255,255,255,.75); }

#rzsim-doc .d-notes { margin: 1.5mm 0 0; padding-left: 4.5mm; font-size: 8pt; line-height: 1.6; color: #39535E; }
#rzsim-doc .d-notes li { margin-bottom: .8mm; }
#rzsim-doc .d-notes b { color: #16303A; }

#rzsim-doc .d-ftr {
  margin-top: 4mm; padding-top: 2.5mm; border-top: 2px solid #16303A;
  break-inside: avoid; page-break-inside: avoid;
  display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem;
  font-size: 8pt; line-height: 1.6; color: #5B7682;
}
#rzsim-doc .d-ftr .co { font-size: 10pt; font-weight: 800; color: #16303A; }
#rzsim-doc .d-ftr .co em { font-style: normal; color: #0891B2; }
