@charset "UTF-8";
/* 弁膜症リファレンス — 共通スタイル */

:root{
  --ink:#14202E;
  --ink-soft:#3E4E5C;
  --muted:#697885;
  --paper:#F4F6F7;
  --card:#FFFFFF;
  --rule:#CBD5DB;
  --rule-faint:#E3E9EC;
  --accent:#12657A;
  --accent-soft:#E4EEF1;

  --flag:#8A5A12;
  --flag-soft:#FAF3E4;
  --flag-rule:#E2CDA2;

  --ok:#0E5C46;
  --ok-soft:#E3F0EB;

  --mincho:"Noto Serif JP","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif;
  --gothic:"Noto Sans JP","Yu Gothic","YuGothic","Hiragino Sans","Hiragino Kaku Gothic ProN",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;

  --pad:clamp(1.125rem,4vw,2.5rem);
  --maxw:62rem;
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--gothic);
  font-size:clamp(.9375rem,.85rem + .3vw,1rem);
  line-height:1.9;
  letter-spacing:.02em;
  font-feature-settings:"palt" 1;
}

a{color:var(--accent);}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px;}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad);}

/* ---------- 上部バー ---------- */
.topbar{
  border-block-end:1px solid var(--rule-faint);
  background:var(--card);
}
.topbar__in{
  max-width:var(--maxw);
  margin-inline:auto;
  padding:.875rem var(--pad);
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}
.topbar__name{
  font-family:var(--mincho);
  font-size:.9375rem;
  font-weight:600;
  letter-spacing:.06em;
  text-decoration:none;
  color:var(--ink);
}
.topbar__links{
  display:flex;
  gap:1.25rem;
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.12em;
}
.topbar__links a{text-decoration:none;color:var(--muted);}
.topbar__links a:hover{color:var(--accent);}

/* ---------- 対象者ゲート（静的・常時表示） ---------- */
.gate{
  border:1px solid var(--flag-rule);
  background:var(--flag-soft);
  padding:1.125rem clamp(1rem,3vw,1.5rem);
  margin-block:2rem 0;
}
.gate__t{
  font-family:var(--mono);
  font-size:.625rem;
  letter-spacing:.18em;
  color:var(--flag);
  margin:0 0 .5rem;
}
.gate p{margin:0;font-size:.875rem;line-height:1.85;color:var(--ink-soft);}
.gate p + p{margin-block-start:.5rem;}
.gate strong{color:var(--flag);font-weight:700;}

/* ---------- パンくず ---------- */
.crumb{
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.1em;
  color:var(--muted);
  margin-block:1.5rem 0;
}
.crumb a{text-decoration:none;color:var(--muted);}
.crumb a:hover{color:var(--accent);}
.crumb span{margin-inline:.5rem;color:var(--rule);}

/* ---------- 病態ヘッダ ---------- */
.head{padding-block:1.75rem 0;}
.head__abbr{
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.2em;
  color:var(--accent);
  margin:0 0 .625rem;
}
.head__t{
  font-family:var(--mincho);
  font-weight:600;
  font-size:clamp(1.4375rem,1.1rem + 1.6vw,2rem);
  line-height:1.5;
  letter-spacing:.04em;
  margin:0 0 .5rem;
}
.head__en{
  font-family:var(--mono);
  font-size:.75rem;
  letter-spacing:.12em;
  color:var(--muted);
  margin:0 0 1.25rem;
}
.head__lead{
  margin:0;
  max-width:44rem;
  color:var(--ink-soft);
  font-size:.9375rem;
}

/* ---------- ステータス帯 ---------- */
.status{
  display:flex;
  flex-wrap:wrap;
  gap:.375rem .75rem;
  margin-block:1.25rem 0;
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.08em;
}
.status b{
  display:inline-block;
  font-weight:500;
  padding:.1875rem .5rem;
  border:1px solid var(--rule);
  background:var(--card);
  color:var(--ink-soft);
}
.status b.is-draft{border-color:var(--flag-rule);background:var(--flag-soft);color:var(--flag);}

/* ---------- セクション ---------- */
.blk{padding-block:clamp(2.25rem,5vw,3.25rem);border-block-start:1px solid var(--rule-faint);margin-block-start:2rem;}
.blk:first-of-type{margin-block-start:1.5rem;}
.blk__h{display:flex;align-items:baseline;gap:.875rem;margin:0 0 .75rem;}
.blk__no{font-family:var(--mono);font-size:.6875rem;letter-spacing:.16em;color:var(--accent);flex:none;}
.blk__t{font-family:var(--mincho);font-size:1.125rem;font-weight:600;letter-spacing:.06em;margin:0;}
.blk__note{margin:0 0 1.5rem;font-size:.8125rem;line-height:1.85;color:var(--muted);max-width:44rem;}

/* ---------- 入力 ---------- */
.fields{
  display:grid;
  gap:1rem 1.5rem;
  grid-template-columns:repeat(auto-fit,minmax(13.5rem,1fr));
}
.field{display:flex;flex-direction:column;gap:.3125rem;}
.field__l{
  font-size:.8125rem;
  font-weight:500;
  letter-spacing:.04em;
  color:var(--ink);
  line-height:1.5;
}
.field__l .u{font-family:var(--mono);font-size:.6875rem;color:var(--muted);margin-inline-start:.375rem;letter-spacing:.06em;}
.field input{
  font-family:var(--mono);
  font-size:1rem;
  padding:.5rem .625rem;
  border:1px solid var(--rule);
  background:var(--card);
  color:var(--ink);
  border-radius:2px;
  width:100%;
  min-width:0;
}
.field input:focus{border-color:var(--accent);}
.field__h{font-size:.75rem;line-height:1.6;color:var(--muted);margin:0;}

.derived{
  margin-block-start:1.5rem;
  border:1px solid var(--rule-faint);
  background:var(--card);
  padding:1rem clamp(.875rem,2.5vw,1.25rem);
}
.derived__t{font-family:var(--mono);font-size:.625rem;letter-spacing:.16em;color:var(--muted);margin:0 0 .625rem;}
.derived__list{display:grid;gap:.5rem 1.5rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));margin:0;}
.dv{display:flex;justify-content:space-between;gap:.75rem;font-size:.8125rem;border-block-end:1px dotted var(--rule-faint);padding-block:.25rem;}
.dv__k{color:var(--muted);}
.dv__v{font-family:var(--mono);color:var(--ink);}
.dv__v.is-null{color:var(--rule);}

.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-block-start:1.5rem;}
.btn{
  font-family:var(--gothic);
  font-size:.8125rem;
  letter-spacing:.06em;
  padding:.5rem 1rem;
  border:1px solid var(--rule);
  background:var(--card);
  color:var(--ink-soft);
  border-radius:2px;
  cursor:pointer;
  transition:border-color .2s ease,color .2s ease;
}
.btn:hover{border-color:var(--accent);color:var(--accent);}
.btn--primary{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}

/* ---------- 基準表 ---------- */
.tablewrap{overflow-x:auto;border:1px solid var(--rule-faint);background:var(--card);}
table.crit{border-collapse:collapse;width:100%;min-width:38rem;font-size:.8125rem;}
table.crit th,table.crit td{
  padding:.625rem .75rem;
  border-block-end:1px solid var(--rule-faint);
  text-align:center;
  vertical-align:middle;
  line-height:1.6;
}
table.crit thead th{
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.1em;
  font-weight:500;
  color:var(--muted);
  background:var(--paper);
  border-block-end:1px solid var(--rule);
  white-space:nowrap;
}
table.crit thead th.g-last{color:var(--ink);font-weight:700;}
table.crit tbody th{
  text-align:start;
  font-weight:500;
  color:var(--ink);
  white-space:nowrap;
  border-inline-end:1px solid var(--rule-faint);
}
table.crit tbody th .sub{display:block;font-family:var(--mono);font-size:.625rem;color:var(--muted);letter-spacing:.06em;font-weight:400;}
table.crit td{font-family:var(--mono);color:var(--ink-soft);}
table.crit td.is-empty{color:var(--rule);}
table.crit td.is-hit{
  background:var(--accent-soft);
  color:var(--accent);
  font-weight:500;
  box-shadow:inset 0 0 0 1px var(--accent);
}
table.crit td.col-val{
  border-inline-start:1px solid var(--rule-faint);
  color:var(--ink);
  white-space:nowrap;
}
table.crit td.col-val.is-null{color:var(--rule);}
table.crit tbody tr.is-ref th,table.crit tbody tr.is-ref td{color:var(--muted);font-weight:400;}
table.crit tbody tr.is-ref td.is-hit{color:var(--accent);}

.legend{
  margin-block-start:.75rem;
  font-size:.75rem;
  color:var(--muted);
  line-height:1.7;
}
.legend .swatch{
  display:inline-block;
  width:.875rem;
  height:.875rem;
  background:var(--accent-soft);
  box-shadow:inset 0 0 0 1px var(--accent);
  vertical-align:-2px;
  margin-inline-end:.375rem;
}

/* ---------- 総括 ---------- */
.summary{
  margin-block-start:1.5rem;
  border:1px solid var(--rule);
  background:var(--card);
  padding:1.125rem clamp(1rem,3vw,1.5rem);
}
.summary__t{font-family:var(--mono);font-size:.625rem;letter-spacing:.16em;color:var(--muted);margin:0 0 .625rem;}
.summary__m{margin:0;font-family:var(--mincho);font-size:1.0625rem;line-height:1.8;letter-spacing:.04em;}
.summary__m .n{font-family:var(--mono);color:var(--accent);}
.summary__c{margin:.75rem 0 0;font-size:.8125rem;color:var(--muted);line-height:1.8;}

.alerts{margin-block-start:1rem;display:grid;gap:.625rem;}
.alert{
  border-inline-start:2px solid var(--flag-rule);
  background:var(--flag-soft);
  padding:.75rem 1rem;
  font-size:.8125rem;
  line-height:1.8;
  color:var(--ink-soft);
}
.alert b{color:var(--flag);font-weight:700;display:block;font-size:.75rem;letter-spacing:.06em;margin-block-end:.1875rem;}

/* ---------- 臨床所見チェック ---------- */
.asks{
  border:1px solid var(--rule-faint);
  background:var(--card);
  padding:1.125rem clamp(1rem,3vw,1.5rem);
  margin:0 0 1.75rem;
}
.asks__t{font-family:var(--mono);font-size:.625rem;letter-spacing:.16em;color:var(--muted);margin:0 0 .875rem;}
.asks__list{display:grid;gap:.625rem;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));}
.ask{display:flex;gap:.5rem;align-items:flex-start;font-size:.8125rem;line-height:1.65;cursor:pointer;}
.ask input{margin:.28125rem 0 0;flex:none;width:.9375rem;height:.9375rem;accent-color:var(--accent);}

/* ---------- 参照カード ---------- */
.recs{display:grid;gap:.875rem;}
.recgroup{margin-block-start:.5rem;}
.recgroup__t{
  font-family:var(--mono);
  font-size:.625rem;
  letter-spacing:.16em;
  color:var(--muted);
  margin:1.25rem 0 .75rem;
  padding-block-end:.375rem;
  border-block-end:1px solid var(--rule-faint);
}
.rec{
  border:1px solid var(--rule-faint);
  background:var(--card);
  padding:1rem clamp(.875rem,2.5vw,1.25rem);
  transition:border-color .2s ease;
}
.rec.is-match{border-color:var(--accent);box-shadow:inset 2px 0 0 var(--accent);}
.rec__top{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin-block-end:.5rem;}
.chip{
  font-family:var(--mono);
  font-size:.625rem;
  letter-spacing:.1em;
  padding:.125rem .4375rem;
  border:1px solid var(--rule);
  color:var(--ink-soft);
  flex:none;
}
.chip--I{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.rec__x{font-family:var(--mono);font-size:.625rem;letter-spacing:.1em;color:var(--muted);margin-inline-start:auto;}
.rec.is-match .rec__x{color:var(--accent);}
.rec__t{margin:0;font-size:.9375rem;font-weight:500;line-height:1.7;flex:1 1 14rem;}
.rec__conds{list-style:none;margin:.625rem 0 0;padding:0;display:grid;gap:.25rem;}
.rec__conds li{
  font-size:.8125rem;
  line-height:1.65;
  color:var(--ink-soft);
  padding-inline-start:1.375rem;
  position:relative;
}
.rec__conds li::before{
  position:absolute;
  inset-inline-start:0;
  inset-block-start:0;
  font-family:var(--mono);
  font-size:.75rem;
}
.rec__conds li.y::before{content:"✓";color:var(--ok);}
.rec__conds li.n::before{content:"×";color:var(--rule);}
.rec__conds li.u::before{content:"—";color:var(--rule);}
.rec__conds li.n,.rec__conds li.u{color:var(--muted);}
.rec__src{margin:.75rem 0 0;font-family:var(--mono);font-size:.625rem;letter-spacing:.06em;color:var(--muted);}

/* 合致しない記載を畳む切り替え */
.recs-toggle{margin:0 0 1.125rem;}
.recs-toggle .btn{font-size:.75rem;padding:.4375rem .875rem;}
.recs-wrap.is-lean .rec:not(.is-match) .rec__conds,
.recs-wrap.is-lean .rec:not(.is-match) .rec__src{display:none;}
.recs-wrap.is-lean .rec:not(.is-match){padding-block:.75rem;}
.recs-wrap.is-lean .rec:not(.is-match) .rec__t{color:var(--muted);font-weight:400;}

.hint{
  border:1px dashed var(--rule);
  padding:1.25rem;
  text-align:center;
  color:var(--muted);
  font-size:.8125rem;
}

/* ---------- 出典 ---------- */
.srcs{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;}
.srcs li{
  font-size:.8125rem;
  line-height:1.8;
  color:var(--ink-soft);
  padding-inline-start:1.5rem;
  position:relative;
}
.srcs li::before{
  content:"";
  position:absolute;
  inset-inline-start:0;
  inset-block-start:.85em;
  width:1rem;
  height:1px;
  background:var(--accent);
}
.srcs .meta{display:block;font-family:var(--mono);font-size:.6875rem;color:var(--muted);letter-spacing:.06em;}

/* ---------- スコア：選択（select） ---------- */
.field__sel,.item__sel{
  font-family:var(--gothic);
  font-size:.9375rem;
  padding:.5rem .625rem;
  border:1px solid var(--rule);
  background:var(--card);
  color:var(--ink);
  border-radius:2px;
  width:100%;
  min-width:0;
}
.field__sel:focus,.item__sel:focus{border-color:var(--accent);}

/* ---------- スコア：該当項目 ---------- */
.items{display:grid;gap:1px;background:var(--rule-faint);border:1px solid var(--rule-faint);}
.item{background:var(--card);padding:.875rem clamp(.875rem,2.5vw,1.125rem);}
.item:has(input:checked){background:var(--accent-soft);}
.item__check{display:flex;gap:.75rem;align-items:flex-start;cursor:pointer;}
.item__check input{margin:.3125rem 0 0;flex:none;width:1rem;height:1rem;accent-color:var(--accent);}
.item__l{font-size:.9375rem;line-height:1.7;flex:1 1 auto;}
.item__only{
  display:block;font-family:var(--mono);font-size:.625rem;
  letter-spacing:.06em;color:var(--muted);margin-block-start:.125rem;
}
.item__pts{
  font-family:var(--mono);font-size:.8125rem;color:var(--accent);
  flex:none;font-variant-numeric:tabular-nums;
}
.item:has(input:checked) .item__l{color:var(--accent);}
.item__head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-block-end:.5rem;}
.item__note{
  margin:.375rem 0 0 1.75rem;font-size:.75rem;line-height:1.6;color:var(--muted);
}
.item__head + .item__sel + .item__note{margin-inline-start:0;}

/* ---------- スコア：結果 ---------- */
.result{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));}
.res{
  background:var(--card);
  border:1px solid var(--rule);
  padding:1.125rem clamp(1rem,3vw,1.375rem);
}
.res--primary{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);}
.res--wide{grid-column:1 / -1;}
.res__k{font-family:var(--mono);font-size:.625rem;letter-spacing:.16em;color:var(--muted);margin:0 0 .5rem;}
.res__v{margin:0 0 .5rem;display:flex;align-items:baseline;gap:.25rem;}
.res__n{
  font-family:var(--mono);font-size:2rem;font-weight:500;color:var(--accent);
  line-height:1;font-variant-numeric:tabular-nums;
}
.res__u{font-family:var(--mono);font-size:.8125rem;color:var(--muted);}
.res__band{
  font-family:var(--mincho);font-size:1rem;font-weight:600;
  letter-spacing:.05em;margin:0;line-height:1.6;
}
.res__band--lg{font-size:1.25rem;color:var(--accent);}
.res.is-definite .res__band--lg{color:var(--accent);}
.res.is-possible .res__band--lg{color:var(--flag);}
.res.is-none .res__band--lg{color:var(--muted);}
.res__note{margin:.5rem 0 0;font-size:.8125rem;line-height:1.75;color:var(--ink-soft);}
.res__tally{margin:.875rem 0 0;display:flex;flex-wrap:wrap;gap:.375rem;}
.tally{
  font-family:var(--mono);font-size:.6875rem;letter-spacing:.08em;
  color:var(--ink-soft);border:1px solid var(--rule-faint);padding:.1875rem .5rem;
}
.rules{
  grid-column:1 / -1;
  border-inline-start:2px solid var(--rule);
  padding:.75rem 0 .25rem 1rem;
  margin-block-start:.25rem;
}
.rules__t{font-family:var(--mono);font-size:.625rem;letter-spacing:.16em;color:var(--muted);margin:0 0 .5rem;}
.rules ul{margin:0;padding-inline-start:1.125rem;}
.rules li{font-size:.8125rem;line-height:1.8;color:var(--ink-soft);margin-block-end:.25rem;}

/* ---------- DOAC 用量区分 ---------- */
.alert--plain{border-inline-start-color:var(--rule);background:var(--surface-2,var(--paper));}
.drugs{display:grid;gap:.75rem;margin-block-start:1.5rem;}
.drug{
  background:var(--card);
  border:1px solid var(--rule-faint);
  padding:1rem clamp(.875rem,2.5vw,1.25rem);
}
.drug.is-reduced{border-color:var(--flag-rule);box-shadow:inset 3px 0 0 var(--flag-rule);}
.drug.is-contra{border-color:var(--flag);box-shadow:inset 3px 0 0 var(--flag);background:var(--flag-soft);}
.drug.is-normal{box-shadow:inset 3px 0 0 var(--rule-faint);}
.drug__top{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap;}
.drug__name{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;}
.drug__n{font-family:var(--mincho);font-size:1.0625rem;font-weight:600;letter-spacing:.04em;}
.drug__b{font-size:.75rem;color:var(--muted);}
.drug__dose{
  font-family:var(--mono);font-size:.9375rem;font-weight:500;
  color:var(--accent);white-space:nowrap;
}
.drug.is-reduced .drug__dose{color:var(--flag);}
.drug.is-contra .drug__dose{color:var(--flag);font-weight:700;}
.drug.is-unknown .drug__dose{color:var(--muted);font-size:.8125rem;}
.drug__why{margin:.5rem 0 0;font-size:.75rem;color:var(--muted);line-height:1.7;}
.drug__hl{
  margin:.5rem 0 0;padding:.4375rem .625rem;
  background:var(--accent-soft);color:var(--accent);
  font-size:.75rem;line-height:1.65;
}
.drug__conds{list-style:none;margin:.625rem 0 0;padding:0;display:grid;gap:.1875rem;}
.drug__conds li{
  font-size:.8125rem;line-height:1.6;color:var(--ink-soft);
  padding-inline-start:1.375rem;position:relative;
}
.drug__conds li::before{
  position:absolute;inset-inline-start:0;inset-block-start:0;
  font-family:var(--mono);font-size:.75rem;
}
.drug__conds li.y::before{content:"✓";color:var(--ok);}
.drug__conds li.n::before{content:"×";color:var(--rule);}
.drug__conds li.u::before{content:"—";color:var(--rule);}
.drug__conds li.x::before{content:"！";color:var(--flag);}
.drug__conds li.n,.drug__conds li.u{color:var(--muted);}
.drug__conds li.x{color:var(--flag);font-weight:500;}
.drug__range{margin:.75rem 0 0;display:flex;flex-wrap:wrap;gap:.375rem;}
.drug__tag{
  font-family:var(--mono);font-size:.6875rem;letter-spacing:.06em;
  color:var(--muted);border:1px solid var(--rule-faint);padding:.1875rem .5rem;
}
.drug__note{margin:.625rem 0 0;font-size:.75rem;line-height:1.7;color:var(--flag);}

/* ---------- 仕様の対照（参照ページ用） ---------- */
.specs{display:grid;gap:.875rem;}
.spec{
  background:var(--card);
  border:1px solid var(--rule-faint);
  padding:1.125rem clamp(1rem,3vw,1.375rem);
}
.spec--open{box-shadow:inset 3px 0 0 var(--accent);}
.spec--closed{box-shadow:inset 3px 0 0 var(--rule);}
.spec__top{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-block-end:.875rem;}
.spec__name{display:flex;align-items:baseline;gap:.625rem;flex-wrap:wrap;}
.spec__n{font-family:var(--mincho);font-size:1.125rem;font-weight:600;letter-spacing:.04em;}
.spec__en{font-family:var(--mono);font-size:.6875rem;letter-spacing:.08em;color:var(--muted);}
.spec__flag{
  font-family:var(--mono);font-size:.6875rem;letter-spacing:.08em;
  padding:.1875rem .5rem;border:1px solid var(--rule);color:var(--ink-soft);white-space:nowrap;
}
.spec--open .spec__flag{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.spec--closed .spec__flag{border-color:var(--flag-rule);color:var(--flag);background:var(--flag-soft);}
.spec__rows{margin:0;display:grid;gap:0;}
.spec__row{
  display:grid;
  grid-template-columns:7.5rem 1fr;
  gap:.75rem;
  padding-block:.5rem;
  border-block-end:1px dotted var(--rule-faint);
}
.spec__row:last-child{border-block-end:none;}
.spec__k{
  font-family:var(--mono);font-size:.6875rem;letter-spacing:.06em;
  color:var(--muted);line-height:1.9;
}
.spec__v{font-size:.875rem;line-height:1.8;color:var(--ink-soft);margin:0;}
.spec__v a{color:var(--accent);}
@media (max-width:40rem){
  .spec__row{grid-template-columns:1fr;gap:.125rem;padding-block:.5625rem;}
  .spec__k{line-height:1.5;}
}

/* ---------- 双方向換算（γ計算） ---------- */
.convert{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:1rem;
  align-items:center;
  background:var(--card);
  border:1px solid var(--rule);
  padding:clamp(1rem,3vw,1.5rem);
}
.convert__side{display:flex;flex-direction:column;gap:.375rem;min-width:0;}
.convert__k{
  font-family:var(--mono);font-size:.625rem;letter-spacing:.14em;
  color:var(--muted);margin:0;
}
.convert__in{
  font-family:var(--mono);
  font-size:1.5rem;
  font-weight:500;
  color:var(--accent);
  padding:.5rem .625rem;
  border:1px solid var(--rule);
  background:var(--paper);
  border-radius:2px;
  width:100%;
  min-width:0;
  text-align:end;
  font-variant-numeric:tabular-nums;
}
.convert__in:focus{border-color:var(--accent);background:var(--card);}
.convert__sub{
  font-family:var(--mono);font-size:.6875rem;letter-spacing:.06em;
  color:var(--muted);margin:0;text-align:end;
}
.convert__op{
  font-family:var(--mono);font-size:1.125rem;color:var(--accent);
  text-align:center;flex:none;
}
@media (max-width:34rem){
  .convert{grid-template-columns:1fr;gap:.75rem;}
  .convert__op{transform:rotate(90deg);}
}

/* ---------- 段階選択スケール（JCS・RASS） ---------- */
.scale{display:grid;gap:1px;background:var(--rule-faint);border:1px solid var(--rule-faint);}
.scale__g{
  grid-column:1/-1;margin:0;
  background:var(--paper);
  font-family:var(--mono);font-size:.625rem;letter-spacing:.14em;
  color:var(--muted);padding:.625rem clamp(.875rem,2.5vw,1.125rem);
}
.scale__row{
  display:flex;gap:.875rem;align-items:flex-start;
  background:var(--card);
  padding:.875rem clamp(.875rem,2.5vw,1.125rem);
  cursor:pointer;
}
.scale__row:has(input:checked){background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent);}
.scale__row input{margin:.4375rem 0 0;flex:none;width:1rem;height:1rem;accent-color:var(--accent);}
.scale__box{flex:1 1 auto;min-width:0;}
.scale__head{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;}
.scale__v{
  font-family:var(--mono);font-size:1rem;font-weight:500;
  color:var(--accent);flex:none;min-width:2.5rem;
  font-variant-numeric:tabular-nums;
}
.scale__l{font-size:.9375rem;line-height:1.6;font-weight:500;}
.scale__row:has(input:checked) .scale__l{color:var(--accent);}
.scale__d{margin:.3125rem 0 0;font-size:.8125rem;line-height:1.7;color:var(--muted);}
@media (max-width:40rem){
  .scale__row{padding:.75rem .875rem;}
  .scale__v{min-width:2.125rem;font-size:.9375rem;}
  .scale__l{font-size:.875rem;}
}

/* ---------- 一覧（tools/index.html） ---------- */
.cards{
  display:grid;
  gap:1px;
  background:var(--rule-faint);
  border:1px solid var(--rule-faint);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
  margin-block-start:1.75rem;
}
.card{
  background:var(--card);
  padding:1.375rem clamp(1rem,3vw,1.5rem);
  text-decoration:none;
  color:inherit;
  display:block;
  transition:background .2s ease;
}
.card:hover{background:var(--accent-soft);}
.card__abbr{font-family:var(--mono);font-size:.6875rem;letter-spacing:.16em;color:var(--accent);margin:0 0 .4375rem;}
.card__t{font-family:var(--mincho);font-size:1.0625rem;font-weight:600;letter-spacing:.05em;margin:0 0 .375rem;line-height:1.6;}
.card__d{margin:0;font-size:.8125rem;color:var(--muted);line-height:1.7;}

.valvegroup{
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.16em;
  color:var(--muted);
  margin:2.25rem 0 0;
}

/* ---------- 本文（terms 等） ---------- */
.prose{max-width:44rem;}
.prose h2{
  font-family:var(--mincho);
  font-size:1.0625rem;
  font-weight:600;
  letter-spacing:.06em;
  margin:2.5rem 0 .75rem;
  padding-block-end:.5rem;
  border-block-end:1px solid var(--rule-faint);
}
.prose h3{font-size:.9375rem;font-weight:700;margin:1.75rem 0 .5rem;letter-spacing:.04em;}
.prose p{margin:0 0 1rem;color:var(--ink-soft);font-size:.9375rem;}
.prose ol,.prose ul{margin:0 0 1rem;padding-inline-start:1.375rem;color:var(--ink-soft);font-size:.9375rem;}
.prose li{margin-block-end:.4375rem;line-height:1.85;}
.prose strong{color:var(--ink);}

/* ---------- フッター ---------- */
.foot{
  border-block-start:1px solid var(--rule-faint);
  margin-block-start:3rem;
  padding-block:2rem 3rem;
  font-size:.75rem;
  line-height:1.9;
  color:var(--muted);
}
.foot p{margin:0 0 .5rem;max-width:44rem;}
.foot a{color:var(--muted);}
.foot__links{
  display:flex;
  gap:1.25rem;
  flex-wrap:wrap;
  font-family:var(--mono);
  font-size:.6875rem;
  letter-spacing:.1em;
  margin-block-end:1rem;
}
.foot__links a{text-decoration:none;}
.foot__links a:hover{color:var(--accent);}

noscript .gate{margin-block:1.5rem;}

/* ============================================================
   スマートフォン最適化（〜40rem / 約640px）
   基準表は横スクロールをやめ、指標ごとのカードに組み替える
   ============================================================ */
@media (max-width:40rem){

  body{font-size:1rem;line-height:1.8;}

  /* 上部バー：名前とリンクを2段に */
  .topbar__in{padding-block:.75rem;gap:.5rem;}
  .topbar__name{font-size:1rem;}
  .topbar__links{gap:1rem;}

  /* 見出し：余白を締める */
  .head{padding-block:1.25rem 0;}
  .head__t{font-size:1.5rem;line-height:1.45;}
  .head__lead{font-size:.9375rem;line-height:1.85;}
  .blk{padding-block:2rem;margin-block-start:1.5rem;}
  .blk__note{font-size:.8125rem;margin-block-end:1.125rem;}
  .gate{padding:1rem;}
  .gate p{font-size:.875rem;}

  /* 入力欄：2列にして縦スクロールを半減 */
  .fields{grid-template-columns:repeat(auto-fit,minmax(9.25rem,1fr));gap:.875rem .75rem;}
  .field__l{font-size:.78125rem;line-height:1.45;}
  .field input{font-size:1rem;padding:.5625rem .5rem;}
  .field__h{font-size:.6875rem;line-height:1.5;}
  .derived__list{grid-template-columns:1fr;}

  /* 操作ボタン：横幅いっぱいで押しやすく */
  .actions{gap:.5rem;}
  .btn{flex:1 1 100%;padding:.75rem 1rem;font-size:.875rem;}

  /* 総括と注意喚起を先に、基準表を後に */
  .blk--grade{display:flex;flex-direction:column;}
  .blk--grade .blk__h{order:1;}
  .blk--grade .blk__note{order:2;}
  .blk--grade .summary{order:3;margin-block-start:0;}
  .blk--grade .alerts{order:4;}
  .blk--grade .tablewrap{order:5;margin-block-start:1.25rem;}
  .blk--grade .legend{order:6;}

  .summary{padding:1rem;}
  .summary__m{font-size:1rem;line-height:1.75;}

  /* 基準表 → 指標ごとのカード */
  .tablewrap{overflow:visible;border:none;background:none;}
  table.crit{min-width:0;width:100%;display:block;}
  table.crit thead{display:none;}
  table.crit tbody{display:block;}
  table.crit tbody tr{
    display:block;
    background:var(--card);
    border:1px solid var(--rule-faint);
    padding:.875rem .875rem .75rem;
    margin-block-end:.5rem;
  }
  table.crit tbody th{
    display:block;
    border:none;
    text-align:start;
    white-space:normal;
    padding:0 0 .625rem;
    font-size:.9375rem;
  }
  table.crit tbody th .sub{display:inline;margin-inline-start:.375rem;}
  table.crit tbody td{
    display:inline-block;
    border:1px solid var(--rule-faint);
    border-radius:2px;
    padding:.3125rem .5rem;
    margin:0 .25rem .25rem 0;
    font-size:.75rem;
    line-height:1.4;
    text-align:start;
  }
  table.crit tbody td::before{
    content:attr(data-grade);
    display:block;
    font-family:var(--gothic);
    font-size:.5625rem;
    letter-spacing:.06em;
    color:var(--muted);
    margin-block-end:.125rem;
  }
  table.crit tbody td.is-empty{display:none;}
  table.crit tbody td.is-hit::before{color:var(--accent);}
  table.crit tbody td.col-val{
    display:block;
    border:none;
    border-block-start:1px dotted var(--rule);
    border-radius:0;
    margin:.5rem 0 0;
    padding:.5rem 0 0;
    font-size:.9375rem;
  }
  table.crit tbody tr.is-ref{opacity:.85;}

  /* チェック項目：タップ領域を確保 */
  .asks{padding:1rem;}
  .asks__list{grid-template-columns:1fr;gap:0;}
  .ask{
    padding-block:.625rem;
    min-height:2.75rem;
    align-items:center;
    border-block-end:1px solid var(--rule-faint);
  }
  .asks__list .ask:last-child{border-block-end:none;}
  .ask input{width:1.125rem;height:1.125rem;margin:0;}
  .ask span{font-size:.875rem;line-height:1.55;}

  /* 参照カード */
  .rec{padding:.875rem;}
  .rec__top{gap:.5rem;margin-block-end:.375rem;}
  .rec__x{margin-inline-start:0;}
  .rec__t{font-size:.9375rem;flex-basis:100%;}
  .rec__conds li{font-size:.78125rem;}

  /* 一覧ページ */
  .cards{grid-template-columns:1fr;}
  .card{padding:1.125rem 1rem;}
  .srcs li{font-size:.875rem;}

  /* 規約など本文 */
  .prose h2{font-size:1rem;margin-block-start:2rem;}
  .prose p,.prose ol,.prose ul,.prose li{font-size:.9375rem;}

  .foot{margin-block-start:2rem;padding-block:1.5rem 2.5rem;}
  .foot__links{gap:1rem;}
}

/* さらに狭い端末（〜22.5rem / 360px）では入力欄を1列に戻す */
@media (max-width:22.5rem){
  .fields{grid-template-columns:1fr;}
}

/* ---------- 印刷 ---------- */
@media print{
  body{background:#fff;font-size:10pt;line-height:1.6;}
  .topbar,.actions,.crumb,.asks,.field__h{display:none !important;}
  .blk{break-inside:avoid;border-block-start:1px solid #999;}
  .tablewrap{overflow:visible;border:1px solid #999;}
  table.crit{min-width:0;}
  table.crit td.is-hit{background:#eee !important;box-shadow:inset 0 0 0 1px #333 !important;color:#000 !important;}
  .rec{break-inside:avoid;border:1px solid #ccc;}
  .rec:not(.is-match){display:none;}
  .gate{border:1px solid #999;background:#f5f5f5;}
  a[href]::after{content:"";}
}
