:root{
  --yoru:#0A0F1C;      /* 夜：地 */
  --ban:#10182A;       /* 盤：パネル */
  --ban2:#0D1424;
  --kei:#1E2A44;       /* 罫線 */
  --geppaku:#E8EDF6;   /* 月白：本文 */
  --haisei:#8B98B0;    /* 灰青：注記 */
  --akashi:#E9A23B;    /* 燈：ブランド強調・規則による判定。方向の意味を持たせない */
  --shu:#E0584A;       /* 朱：訂正・警告 */
  --up:#E0584A;        /* 上昇（赤）── 日本の板・チャートの慣習に合わせる */
  --down:#0FA3BF;      /* 下落（青緑）── ロゴの色。琥珀と色相が離れ、色覚多様性でも判別しやすい */
  --flat:#8B98B0;      /* 変化なし */
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --sans:system-ui,-apple-system,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic UI","Meiryo",sans-serif;
  --min:'Shippori Mincho',serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--yoru);color:var(--geppaku);font-family:var(--sans);font-size:15px;line-height:1.9;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,.tate,.lead h2,.sec-h h3{line-break:strict;word-break:normal;overflow-wrap:anywhere;text-wrap:pretty}
p,li,td{line-break:strict;word-break:normal;overflow-wrap:anywhere}
a{color:inherit;text-decoration:none}
a:hover{color:var(--akashi)}
:focus-visible{outline:2px solid var(--akashi);outline-offset:3px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}

/* ── 観測局ストリップ ── */
.strip{border-bottom:1px solid var(--kei);background:var(--ban2)}
.strip .wrap{display:flex;gap:20px;align-items:center;min-height:34px;font-family:var(--mono);font-size:12px;color:var(--haisei);letter-spacing:.04em;overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.strip b{color:var(--geppaku);font-weight:500}
.lamp{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--akashi);margin-right:7px;box-shadow:0 0 8px rgba(233,162,59,.8);animation:lamp 2.4s ease-in-out infinite}
@keyframes lamp{50%{opacity:.35;box-shadow:none}}

/* ── ナビ ── */
.nav{position:sticky;top:0;z-index:50;background:rgba(10,15,28,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--kei)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:58px}
.brand{font-family:var(--min);font-weight:700;font-size:17px;letter-spacing:.14em;white-space:nowrap}
.brand small{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--haisei);letter-spacing:.18em;margin-left:12px}
/* min-width:0 がないとflexアイテムが縮まず、overflow-x が働かない。
   さらに justify-content:flex-end のままだと、あふれが「開始側＝左」に出る。
   LTRでは左側のオーバーフローにスクロールで到達できないため、overflow-x が無効化される。
   右寄せはデスクトップで幅が余っているときだけ margin-left:auto で行う。 */
.menu{display:flex;gap:4px;font-size:13px;letter-spacing:.1em;overflow-x:auto;white-space:nowrap;
  scrollbar-width:none;min-width:0;flex:0 1 auto;justify-content:flex-start;margin-left:auto;
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.menu::-webkit-scrollbar{display:none}
/* 高さ・幅とも44px以上を確保する。
   flex:none が要る。既定の flex-shrink:1 のままだと、幅が足りないときに
   リンクが min-width まで縮み、white-space:nowrap のテキストが箱からはみ出して
   隣と重なって見える。座標上は重なっていないため、要素位置の計測では検出できない。
   縮ませず、あふれは親の横スクロールで吸収する。 */
.menu a{color:var(--haisei);padding:13px 12px;min-width:44px;text-align:center;flex:none;
  border-bottom:1px solid transparent;scroll-snap-align:start;white-space:nowrap}
.menu a:hover{color:var(--geppaku);border-color:var(--akashi)}
.menu a.on{color:var(--geppaku);border-color:var(--akashi)}

/* ── ヒーロー（ホーム） ── */
.hero{border-bottom:1px solid var(--kei);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
  radial-gradient(720px 340px at 82% 0%,rgba(233,162,59,.07),transparent 60%),
  repeating-linear-gradient(to bottom,transparent 0 47px,rgba(30,42,68,.35) 47px 48px);
  pointer-events:none}
.hero .wrap{position:relative;display:grid;grid-template-columns:auto 1fr minmax(340px,460px);gap:56px;padding:88px 24px 96px;align-items:center}
.tate{writing-mode:vertical-rl;font-family:var(--min);font-weight:700;font-size:clamp(44px,5vw,64px);letter-spacing:.28em;line-height:1.25;color:var(--geppaku);border-left:1px solid var(--kei);padding-left:30px;height:max-content}
.lead .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.3em;color:var(--akashi);margin-bottom:22px}
.lead h2{font-family:var(--min);font-weight:500;font-size:clamp(24px,2.6vw,33px);line-height:2;letter-spacing:.06em;margin-bottom:26px}
.lead p{color:var(--haisei);max-width:44em;margin-bottom:34px}
.credos{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:12px}
.credos span{border:1px solid var(--kei);padding:7px 16px;letter-spacing:.1em;color:var(--geppaku)}
.credos span i{font-style:normal;color:var(--akashi);margin-right:8px}

/* 訂正台帳カード */
.ledger{background:var(--ban);border:1px solid var(--kei);box-shadow:0 24px 60px rgba(0,0,0,.45)}
.ledger-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px solid var(--kei);padding:14px 18px;font-family:var(--mono);font-size:12px;color:var(--haisei)}
.ledger-h b{color:var(--geppaku);font-weight:500;letter-spacing:.05em}
.row{padding:16px 18px;border-bottom:1px solid var(--kei);position:relative}
.row:last-of-type{border-bottom:none}
.tag{font-family:var(--mono);font-size:12px;letter-spacing:.16em;padding:3px 8px;border:1px solid}
.tag.sup{color:var(--haisei);border-color:var(--kei)}
.tag.rev{color:var(--shu);border-color:var(--shu)}
.val{font-family:var(--mono);font-size:34px;font-weight:600;letter-spacing:.02em;margin:8px 0 4px;color:var(--geppaku)}
.val.dead{color:var(--haisei);position:relative;display:inline-block}
.val.dead::after{content:"";position:absolute;left:-2%;top:52%;height:2px;width:0;background:var(--shu);animation:strike 1s ease .9s forwards}
@keyframes strike{to{width:104%}}
.val .redact{color:var(--akashi)}
.meta{font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:1.8}
.meta em{font-style:normal;color:var(--geppaku)}
.stamp{position:absolute;right:16px;top:14px;font-family:var(--mono);font-size:12px;letter-spacing:.24em;color:var(--shu);border:2px solid var(--shu);padding:5px 12px;transform:rotate(-7deg);opacity:0;animation:stamp .45s cubic-bezier(.2,1.4,.4,1) 1.9s forwards}
@keyframes stamp{from{opacity:0;transform:rotate(-7deg) scale(1.7)}to{opacity:1;transform:rotate(-7deg) scale(1)}}
.ledger-f{padding:13px 18px;font-family:var(--mono);font-size:12px;color:var(--haisei);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--ban2)}
.ok{color:var(--akashi)}
.ledger-note{font-family:var(--min);text-align:right;font-size:13px;letter-spacing:.22em;color:var(--haisei);margin-top:14px}
.ledger-note b{color:var(--geppaku);font-weight:500}

/* ── セクション共通 ── */
section{border-bottom:1px solid var(--kei)}
.sec{padding:84px 24px}
.sec-h{display:flex;align-items:baseline;gap:20px;margin-bottom:14px}
.sec-h h3{font-family:var(--min);font-weight:700;font-size:26px;letter-spacing:.2em}
.sec-h span{font-family:var(--mono);font-size:12px;letter-spacing:.26em;color:var(--akashi)}
.sec-p{color:var(--haisei);max-width:52em;margin-bottom:44px}

/* ── サブページ見出し ── */
.page-head{border-bottom:1px solid var(--kei);position:relative;overflow:hidden}
.page-head::before{content:"";position:absolute;inset:0;background:radial-gradient(560px 240px at 88% 0%,rgba(233,162,59,.06),transparent 60%);pointer-events:none}
.page-head .wrap{position:relative;padding:66px 24px 58px}
.page-head .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.3em;color:var(--akashi);margin-bottom:16px}
.page-head h1{font-family:var(--min);font-weight:700;font-size:clamp(28px,3.4vw,40px);letter-spacing:.18em;margin-bottom:16px}
.page-head p{color:var(--haisei);max-width:52em}

/* ── 表 ── */
.tbl{width:100%;border-collapse:collapse;font-size:13px;border:1px solid var(--kei)}
.tbl th{background:var(--ban2);font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.14em;color:var(--haisei);text-align:left;padding:10px 14px;border-bottom:1px solid var(--kei)}
.tbl td{padding:12px 14px;border-bottom:1px solid var(--kei);vertical-align:top;background:var(--ban)}
.tbl tr:last-child td{border-bottom:none}
.tbl .sid{font-family:var(--mono);font-size:12px;color:var(--geppaku);overflow-wrap:anywhere}
.tbl .mut{color:var(--haisei)}
.tbl-scroll{overflow-x:auto;margin-bottom:44px}
.yes{color:var(--akashi);font-family:var(--mono)}
.no{color:var(--shu);font-family:var(--mono)}
.part{color:var(--haisei);font-family:var(--mono)}
.lay{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--akashi);border:1px solid var(--kei);padding:1px 7px;white-space:nowrap}

/* ── カレンダー ── */
.chips{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:52px}
.chip{border:1px solid var(--kei);background:var(--ban);padding:14px 18px;min-width:170px}
.chip .c-l{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--haisei);margin-bottom:6px}
.chip .c-v{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--akashi)}
.chip .c-v small{font-size:12px;color:var(--haisei);font-weight:400;margin-left:6px}
.chip .c-d{font-family:var(--mono);font-size:12px;color:var(--haisei);margin-top:4px}
.week{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--kei);border:1px solid var(--kei);margin-bottom:52px}
.day{background:var(--ban);padding:18px;min-height:170px}
.day h4{font-family:var(--min);font-weight:700;font-size:17px;letter-spacing:.3em;margin-bottom:4px}
.day .en{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--haisei);display:block;margin-bottom:14px}
.ev{border-left:2px solid var(--akashi);padding:2px 0 2px 10px;margin-bottom:12px}
.ev b{display:block;font-size:12.5px;font-weight:500;letter-spacing:.03em}
.ev span{font-family:var(--mono);font-size:12px;color:var(--haisei)}
.ev.q{border-color:var(--kei)}

/* ── API ── */
.ep{display:grid;grid-template-columns:64px 1fr;gap:14px;border:1px solid var(--kei);border-bottom:none;background:var(--ban);padding:16px 18px;align-items:baseline}
.ep:last-of-type{border-bottom:1px solid var(--kei);margin-bottom:44px}
.ep .m{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--akashi)}
.ep code{font-family:var(--mono);font-size:12.5px;color:var(--geppaku);overflow-wrap:anywhere}
.ep p{grid-column:2;color:var(--haisei);font-size:12.5px;line-height:1.8}
.code{background:var(--ban2);border:1px solid var(--kei);padding:22px;font-family:var(--mono);font-size:12px;line-height:1.85;color:var(--haisei);overflow-x:auto;margin-bottom:28px}
.code .k{color:var(--geppaku)} .code .a{color:var(--akashi)} .code .r{color:var(--shu)} .code .c{color:#5A6A88}
.note{border:1px solid var(--kei);border-left:2px solid var(--akashi);background:var(--ban);padding:16px 20px;color:var(--haisei);font-size:13px;margin-bottom:44px}
.note b{color:var(--geppaku);font-weight:500}
.note.warn{border-left-color:var(--shu)}

/* ── 観測盤 ── */
.board-note{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--yoru);background:var(--akashi);padding:4px 10px;margin-bottom:34px}
.layer{display:grid;grid-template-columns:180px 1fr;border:1px solid var(--kei);border-bottom:none}
.layer:last-of-type{border-bottom:1px solid var(--kei)}
.layer-id{background:var(--ban2);border-right:1px solid var(--kei);padding:20px 18px;display:flex;flex-direction:column;gap:6px}
.layer-id .no{font-family:var(--mono);font-size:12px;color:var(--akashi);letter-spacing:.2em}
.layer-id .nm{font-family:var(--min);font-weight:700;font-size:19px;letter-spacing:.3em}
.layer-id .en{font-family:var(--mono);font-size:12px;color:var(--haisei);letter-spacing:.14em}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.tile{border-right:1px solid var(--kei);padding:18px;background:var(--ban);min-height:132px;display:flex;flex-direction:column;justify-content:space-between;gap:8px;transition:background .25s}
.tile:hover{background:#131C31}
.tile .sid{font-family:var(--mono);font-size:12px;color:var(--haisei);letter-spacing:.05em;overflow-wrap:anywhere}
.tile .v{font-family:var(--mono);font-size:24px;font-weight:600;color:var(--akashi)}
.tile .v small{font-size:12px;color:var(--haisei);font-weight:400;margin-left:6px}
.d-up{color:var(--up)} .d-dn{color:var(--down)} .d-flat{color:var(--flat)}
.tile .src{font-family:var(--mono);font-size:12px;line-height:1.7;color:var(--haisei);border-top:1px dashed var(--kei);padding-top:8px}
.pct{height:4px;background:var(--kei);margin:6px 0 2px}
.pct i{display:block;height:100%;background:var(--akashi);width:0;transition:width 1.2s ease .2s}
.tile.locked .v{color:var(--haisei);font-size:14px;font-weight:400;letter-spacing:.06em}
.badge{align-self:flex-start;font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--haisei);border:1px solid var(--kei);padding:2px 7px}

/* ── 検証 ── */
.verify-g{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:start}
.steps{counter-reset:s;display:flex;flex-direction:column}
.step{counter-increment:s;display:grid;grid-template-columns:44px 1fr;gap:16px;padding:20px 0;border-bottom:1px dashed var(--kei)}
.step::before{content:counter(s,decimal-leading-zero);font-family:var(--mono);font-size:13px;color:var(--akashi);letter-spacing:.1em;padding-top:2px}
.step b{display:block;font-weight:700;letter-spacing:.08em;margin-bottom:4px}
.step p{color:var(--haisei);font-size:13.5px}
.vcp{margin-top:20px;font-family:var(--mono);font-size:12px;color:var(--haisei);letter-spacing:.06em}
.vcp a{color:var(--akashi);border-bottom:1px solid var(--kei)}

/* ── 思想 ── */
.credo-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1px;background:var(--kei);border:1px solid var(--kei);margin-bottom:44px}
.credo{background:var(--ban);padding:34px 28px}
.credo h4{font-family:var(--min);font-weight:700;font-size:21px;letter-spacing:.2em;margin-bottom:14px}
.credo h4 i{font-style:normal;color:var(--shu);margin-right:10px;font-size:15px}
.credo p{color:var(--haisei);font-size:13.5px}
.manifesto{font-family:var(--min);font-size:clamp(17px,1.9vw,21px);line-height:2.3;letter-spacing:.08em;max-width:40em}
.manifesto b{color:var(--akashi);font-weight:500}

/* ── 系譜 ── */
.lineage-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:22px}
.house{border:1px solid var(--kei);background:var(--ban);padding:28px;display:flex;flex-direction:column;gap:10px}
.house .role{font-family:var(--mono);font-size:12px;letter-spacing:.26em;color:var(--akashi)}
.house h4{font-family:var(--min);font-weight:700;font-size:19px;letter-spacing:.12em}
.house p{color:var(--haisei);font-size:13px;flex:1}
.house .go{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--geppaku)}
.house .go::after{content:" →";color:var(--akashi)}
.house.self{border-color:var(--akashi)}

/* ── フッター ── */
footer{padding:56px 24px 64px;color:var(--haisei);font-size:12px}
footer .wrap{display:grid;gap:26px}
.foot-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;border:1px solid var(--kei);background:var(--ban);padding:26px}
.foot-nav h5{font-family:var(--mono);font-size:12px;letter-spacing:.26em;color:var(--akashi);font-weight:500;margin-bottom:12px}
.foot-nav a{display:block;color:var(--haisei);font-size:12.5px;padding:3px 0}
.foot-nav a:hover{color:var(--geppaku)}
footer h5{font-family:var(--mono);font-size:12px;letter-spacing:.26em;color:var(--geppaku);font-weight:500}
footer p{max-width:64em;line-height:2}
.foot-end{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid var(--kei);padding-top:22px;font-family:var(--mono);font-size:12px}

/* ── 出現アニメーション ── */
/* 既定は「見える」。JSが動作した場合のみ隠して演出する。
   JSの失敗・アンカー着地・クローラでも内容が消えないようにするため。 */
.reveal{opacity:1;transform:none}
html.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
html.js .reveal.in{opacity:1;transform:none}
/* データ画面ではアニメーションを行わない */
html.js body.terminal .reveal{opacity:1;transform:none;transition:none}

/* ── レスポンシブ ── */
/* 700〜1020px：タブレット縦・スマホ横。1カラムに潰さず2カラムを保つ */
@media(max-width:1099px) and (min-width:700px){
  .lineage-g,.credo-g{grid-template-columns:repeat(2,1fr)}
  .xr-wrap .wrap{grid-template-columns:repeat(2,1fr)}
  .foot-nav{grid-template-columns:repeat(2,1fr)}
}

/* 900px以下：ナビを2段目に回して全幅を使う。1段目はブランドのみ */
@media(max-width:900px){
  .nav .wrap{flex-wrap:wrap;row-gap:0;padding-top:0;padding-bottom:0}
  .brand{flex:0 0 auto;padding:12px 0}
  .menu{flex:1 0 100%;justify-content:flex-start;margin-left:0;
    border-top:1px solid var(--kei);gap:2px;
    -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);
    mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .menu a{padding:12px 11px}
  .dstrip{top:0}
}

@media(max-width:1020px){
  .hero .wrap{grid-template-columns:1fr;gap:44px;padding:56px 24px}
  .tate{writing-mode:horizontal-tb;border-left:none;padding-left:0;border-bottom:1px solid var(--kei);padding-bottom:18px;letter-spacing:.18em;font-size:clamp(34px,7vw,52px)}
  .verify-g{grid-template-columns:1fr}
  .layer{grid-template-columns:1fr}
  .layer-id{flex-direction:row;align-items:baseline;gap:14px;border-right:none;border-bottom:1px solid var(--kei)}
  .week{grid-template-columns:1fr}
  .day{min-height:0}
  .foot-nav{grid-template-columns:1fr;gap:18px}
  .brand small{display:none}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,html.js .reveal{opacity:1;transform:none}
  .val.dead::after{width:104%}
  .stamp{opacity:1}
  .pct i{transition:none}
}

/* ── 料金・申請フォーム ── */
.plan{background:var(--ban);padding:30px 26px;display:flex;flex-direction:column;gap:10px}
.plan .p-name{font-family:var(--min);font-weight:700;font-size:20px;letter-spacing:.14em}
.plan .p-price{font-family:var(--mono);font-size:24px;font-weight:600;color:var(--akashi)}
.plan .p-price small{font-size:12px;color:var(--haisei);font-weight:400;margin-left:6px}
.plan ul{list-style:none;flex:1}
.plan li{color:var(--haisei);font-size:13px;padding:5px 0 5px 16px;position:relative;line-height:1.7}
.plan li::before{content:"—";position:absolute;left:0;color:var(--akashi)}
.plan .p-tag{align-self:flex-start;font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--haisei);border:1px solid var(--kei);padding:2px 8px}
.plan.hot{outline:1px solid var(--akashi);outline-offset:-1px}
.form{display:grid;gap:16px;max-width:680px}
.fld label{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--haisei);margin-bottom:7px}
.fld input,.fld select,.fld textarea{width:100%;background:var(--ban2);border:1px solid var(--kei);color:var(--geppaku);font-family:var(--sans);font-size:14px;padding:11px 13px;line-height:1.7}
.fld textarea{min-height:110px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--akashi)}
.fld select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--haisei) 50%),linear-gradient(135deg,var(--haisei) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.btn{display:inline-block;background:var(--akashi);color:var(--yoru);border:none;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.18em;padding:14px 30px;cursor:pointer;transition:opacity .2s}
.btn:hover{opacity:.85;color:var(--yoru)}
.btn.ghost{background:transparent;color:var(--geppaku);border:1px solid var(--kei)}
.btn.ghost:hover{border-color:var(--akashi);color:var(--akashi)}
.form-foot{font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:2}

/* ── 観測記録（レポート）: 暗色クローム内の紙 ── */
.sheet-wrap{background:#E9ECEF;padding:0 0 72px}
.sheet{max-width:800px;margin:0 auto;padding:0 24px;color:#17212B;font-feature-settings:"palt" 1}
.sheet .masthead{padding:56px 0 0}
.sheet .eyebrow2{font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:#64737F;margin:0 0 24px}
.sheet h1{font-family:var(--min);font-weight:700;font-size:clamp(27px,5.4vw,42px);line-height:1.4;letter-spacing:.01em;margin:0 0 12px;color:#17212B}
.sheet .subtitle{font-family:var(--min);font-weight:500;color:#64737F;font-size:clamp(15px,3.2vw,18px);line-height:1.7;margin:0 0 30px}
.stampbox{border:1px solid #C3CBD2;background:#F2F4F6;padding:16px 18px;margin:0 0 46px;display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:14px 22px}
.stampbox dt{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:#64737F;text-transform:uppercase;margin:0 0 3px}
.stampbox dd{margin:0;font-size:13px;line-height:1.6}
.stampbox a{color:#1F4E79;border-bottom:1px solid #C3CBD2}
.sheet .lede{font-size:17px;line-height:2;margin:0 0 44px;padding-left:18px;border-left:2px solid #C1442A}
.sheet h2{font-family:var(--min);font-weight:700;font-size:21px;letter-spacing:.1em;margin:56px 0 18px;padding-bottom:10px;border-bottom:1px solid #C3CBD2;display:flex;align-items:baseline;gap:14px;color:#17212B}
.sheet h2 .num{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:#C1442A;font-weight:500}
.sheet h3{font-family:var(--min);font-weight:700;font-size:16px;letter-spacing:.08em;margin:32px 0 12px}
.sheet p{margin:0 0 18px;line-height:2}
.sheet ol,.sheet ul{margin:0 0 18px;padding-left:1.4em}
.sheet li{line-height:2;margin-bottom:6px}
.sheet strong{font-weight:700}
.sheet .n{font-family:var(--mono);font-weight:500;font-size:.95em}
.sheet .shu{color:#C1442A} .sheet .ai{color:#1F4E79}
.sheet pre{background:#F2F4F6;border:1px solid #C3CBD2;padding:18px;overflow-x:auto;font-family:var(--mono);font-size:12.5px;line-height:1.9;margin:0 0 22px;color:#17212B}
.sheet code{font-family:var(--mono);font-size:.93em}
.sheet .scroll{overflow-x:auto;margin:0 0 26px}
.sheet table{width:100%;border-collapse:collapse;font-size:13.5px;background:#F2F4F6}
.sheet caption{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:#64737F;text-align:left;padding:0 0 8px;text-transform:uppercase}
.sheet th{font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.1em;color:#64737F;text-align:left;padding:9px 12px;border-bottom:1px solid #C3CBD2;white-space:nowrap}
.sheet td{padding:10px 12px;border-bottom:1px solid #D8DEE3;line-height:1.7}
.sheet td.n,.sheet th.n{text-align:right;font-family:var(--mono)}
.sheet tr.hi td{background:#E4E9ED}
.sheet em{font-style:normal;font-weight:700;font-family:var(--mono)}
.sheet figure{margin:0 0 40px}
.sheet figcaption{font-size:12.5px;color:#64737F;line-height:1.9;margin-top:12px}
.sheet .key{display:flex;gap:20px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:#64737F;margin-bottom:14px}
.sheet .key i{display:inline-block;width:11px;height:11px;margin-right:7px;vertical-align:-1px}
.sheet .chart{width:100%;height:auto;display:block}
.sheet .chart .grid line{stroke:#D8DEE3;stroke-width:1}
.sheet .chart .zero{stroke:#64737F;stroke-width:1.5}
.sheet .chart .perlab{font-family:var(--min);font-weight:700;font-size:14px;fill:#17212B}
.sheet .chart .perdate{font-family:var(--mono);font-size:12px;fill:#64737F}
.sheet .chart .val{font-family:var(--mono);font-size:12.5px;font-weight:600}
.sheet .chart .axlab{font-family:var(--mono);font-size:12px;fill:#64737F}
.sheet .note-p{background:#F2F4F6;border-left:2px solid #1F4E79;padding:14px 18px;font-size:14px;color:#17212B;margin:0 0 22px;line-height:1.95}
.sheet .disclaimer{margin-top:56px;padding-top:24px;border-top:1px solid #C3CBD2;font-size:12.5px;color:#64737F;line-height:2}
.sheet .hashline{font-family:var(--mono);font-size:12px;color:#64737F;background:#F2F4F6;border:1px solid #C3CBD2;padding:14px 16px;overflow-x:auto;margin:0 0 22px;line-height:1.9}
.sheet .hashline b{color:#C1442A;font-weight:600}
.toc{background:#F2F4F6;border:1px solid #C3CBD2;padding:18px 22px;margin:0 0 44px}
.toc-h{font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:#64737F;margin-bottom:10px;text-transform:uppercase}
.toc ol{margin:0;padding-left:1.3em}
.toc li{font-size:13.5px;line-height:1.95;margin:0}
.toc a{color:#1F4E79}
.toc a:hover{color:#C1442A}
.crumb{font-family:var(--mono);font-size:12px;color:var(--haisei);letter-spacing:.08em;padding:14px 0 0}
.crumb a{color:var(--haisei)} .crumb a:hover{color:var(--akashi)}
.crumb span{color:var(--geppaku)}
/* レポート一覧 */
.rep{display:grid;grid-template-columns:150px 1fr;gap:24px;border:1px solid var(--kei);border-bottom:none;background:var(--ban);padding:26px 24px;transition:background .25s}
.rep:last-of-type{border-bottom:1px solid var(--kei)}
.rep:hover{background:#131C31}
.rep-date{font-family:var(--mono);font-size:12px;color:var(--akashi);letter-spacing:.1em}
.rep-date span{display:block;color:var(--haisei);margin-top:6px}
.rep h3{font-family:var(--min);font-weight:700;font-size:19px;letter-spacing:.06em;line-height:1.7;margin-bottom:8px}
.rep p{color:var(--haisei);font-size:13.5px;line-height:1.9}
.rep .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.rep .tags span{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--haisei);border:1px solid var(--kei);padding:2px 8px}
@media(max-width:1020px){.rep{grid-template-columns:1fr;gap:10px}}

/* ── お知らせ ── */
.sec.news-sec{padding:60px 24px}
.news{border:1px solid var(--kei)}
.nw{display:grid;grid-template-columns:112px minmax(68px,max-content) 1fr;gap:20px;align-items:baseline;padding:15px 20px;border-bottom:1px solid var(--kei);background:var(--ban);transition:background .25s}
.nw:last-child{border-bottom:none}
.nw:hover{background:#131C31}
a.nw:hover .nw-b{color:var(--akashi)}
.nw-d{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--haisei);white-space:nowrap}
.nw-t{white-space:nowrap;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--akashi);border:1px solid var(--kei);padding:2px 0;text-align:center;white-space:nowrap}
.nw.corr .nw-t{white-space:nowrap;color:var(--shu);border-color:var(--shu)}
.nw-b{font-size:13.5px;line-height:1.8;color:var(--geppaku);transition:color .25s}
.nw-b em{display:block;font-style:normal;font-size:12px;color:var(--haisei);margin-top:3px}
.news-note{font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:1.9;margin-top:16px;letter-spacing:.02em}
.news-note a{color:var(--akashi)}
@media(max-width:1020px){
  .nw{grid-template-columns:1fr;gap:6px;padding:16px 18px}
  .nw-t{white-space:nowrap;justify-self:start;padding:2px 10px}
}

/* ── 機械可読（AI向け）セクション ── */
.mach{display:grid;grid-template-columns:1.15fr 1fr;gap:44px;align-items:start}
.mach-stmt{font-family:var(--min);font-size:clamp(17px,1.9vw,21px);line-height:2.3;letter-spacing:.08em;margin-bottom:26px}
.mach-stmt b{color:var(--akashi);font-weight:500}
.mach p{color:var(--haisei);font-size:13.5px;line-height:2;margin-bottom:16px}
.mfile{display:grid;grid-template-columns:52px 1fr;gap:14px;align-items:baseline;border:1px solid var(--kei);border-bottom:none;background:var(--ban);padding:13px 16px}
.mfile:last-of-type{border-bottom:1px solid var(--kei)}
.mfile:hover{background:#131C31}
.mfile .mt{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--akashi)}
.mfile code{font-family:var(--mono);font-size:12.5px;color:var(--geppaku);display:block}
.mfile em{font-style:normal;font-size:12px;color:var(--haisei);display:block;margin-top:3px;line-height:1.7}
.mach-rule{border:1px solid var(--shu);background:var(--ban);padding:20px 22px;margin-top:22px}
.mach-rule .rh{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--shu);margin-bottom:10px}
.mach-rule b{display:block;font-family:var(--min);font-size:17px;letter-spacing:.1em;margin-bottom:10px}
.mach-rule p{margin:0;font-size:12.5px}
@media(max-width:1020px){.mach{grid-template-columns:1fr;gap:32px}}

/* ── USDJPY X-RAY ── */
.xr-wrap{padding:56px 0 76px}
.xr-wrap .wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:22px;align-items:start}
.xr-sec{border:1px solid var(--kei);background:var(--ban)}
.xr-h{display:flex;align-items:baseline;gap:14px;padding:16px 20px;border-bottom:1px solid var(--kei);background:var(--ban2)}
.xr-h h2{font-family:var(--min);font-weight:700;font-size:17px;letter-spacing:.2em}
.xr-h span{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--akashi)}
.xr-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:11px 20px;border-bottom:1px solid rgba(30,42,68,.55)}
.xr-row:last-of-type{border-bottom:none}
.xr-l{font-size:13px;color:var(--haisei)}
.xr-v{font-family:var(--mono);font-size:19px;font-weight:600;color:var(--geppaku);text-align:right;white-space:nowrap}
.xr-v.hl{color:var(--akashi)}
.xr-v.up{color:var(--up)} .xr-v.dn{color:var(--down)} .xr-v.flat{color:var(--flat)}
.xr-sub{display:block;font-size:12px;font-weight:400;color:var(--haisei);margin-top:3px;letter-spacing:.02em}
.xr-prov{padding:12px 20px;border-top:1px solid var(--kei);background:var(--ban2);font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:1.75;overflow-wrap:anywhere}
.xr-prov a{color:var(--geppaku);border-bottom:1px solid var(--kei)}
.xr-prov a:hover{color:var(--akashi)}
.xr-st{color:var(--akashi)}
.xr-note{padding:13px 20px;border-top:1px dashed var(--kei);font-size:12px;color:var(--haisei);line-height:1.9}
.xr-note b{color:var(--geppaku)}
.xr-split{display:flex;height:30px;margin:6px 20px 14px;border:1px solid var(--kei);overflow:hidden}
.xr-jpy,.xr-usd{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;transition:width .8s ease}
.xr-jpy{background:rgba(224,88,74,.28);color:#F0A79E}
.xr-usd{background:rgba(233,162,59,.22);color:var(--akashi)}
.xr-pct{height:3px;background:var(--kei);margin:0 20px 11px}
.xr-pct i{display:block;height:100%;background:var(--akashi)}
.xr-about{padding:18px 20px}
.xr-about p{color:var(--haisei);font-size:12.5px;line-height:2;margin-bottom:12px}
.xr-about b{color:var(--geppaku)}
.xr-about a{color:var(--akashi)}
.xr-gen{font-family:var(--mono);font-size:12px;border-top:1px solid var(--kei);padding-top:12px;margin-bottom:0!important}
@media(max-width:1020px){.xr-wrap .wrap{grid-template-columns:1fr}.xr-v{font-size:17px}}

/* ── 配信カテゴリ ── */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1px;background:var(--kei);border:1px solid var(--kei)}
.cat-chip{background:var(--ban);padding:14px 16px}
.cat-chip b{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--akashi);margin-bottom:5px}
.cat-chip span{font-size:12px;color:var(--haisei);line-height:1.7}

/* ── LINE 導線 ── */
.line-chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--geppaku);border:1px solid #1E5C3A;background:rgba(6,199,85,.08);padding:3px 11px;white-space:nowrap;transition:background .2s}
.line-chip:hover{background:rgba(6,199,85,.18);color:#6FE3A0}
.line-chip i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#06C755;box-shadow:0 0 7px rgba(6,199,85,.7)}
.line-cta{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;border:1px solid var(--kei);border-left:2px solid #06C755;background:var(--ban);padding:26px 28px}
.line-cta h4{font-family:var(--min);font-weight:700;font-size:19px;letter-spacing:.1em;margin-bottom:10px}
.line-cta p{color:var(--haisei);font-size:13px;line-height:1.95;max-width:52em}
.line-cta p b{color:var(--geppaku)}
.btn-line{display:inline-block;background:#06C755;color:#052E18;border:none;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.14em;padding:15px 28px;white-space:nowrap;transition:opacity .2s}
.btn-line:hover{opacity:.85;color:#052E18}
.line-url{font-family:var(--mono);font-size:12px;color:var(--haisei);margin-top:9px;text-align:center}
@media(max-width:1020px){.line-cta{grid-template-columns:1fr;gap:18px}}

/* ── ブランドマーク ── */
.brand{display:inline-flex;align-items:center;gap:11px}
.brand img{width:26px;height:26px;display:block;flex:none}
@media(max-width:1020px){.brand img{width:23px;height:23px}}

/* ── X-RAY 要約カード（トップページ）── */
.xr-card{border:1px solid var(--kei);border-left:2px solid var(--akashi);background:var(--ban)}
.xr-card .xr-split{margin:0;border:none;border-bottom:1px solid var(--kei);height:34px}
.xr-cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.xr-cell{padding:18px 20px;border-right:1px solid var(--kei);display:flex;flex-direction:column;gap:7px;min-height:112px;justify-content:center}
.xr-cell:last-child{border-right:none}
.xr-cell .k{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--haisei)}
.xr-cell .v{font-family:var(--mono);font-size:26px;font-weight:600;color:var(--geppaku);line-height:1.15;letter-spacing:.01em}
.xr-cell .v small{font-size:13px;color:var(--haisei);font-weight:400;margin-left:3px}
.xr-cell .s{font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:1.6}
.xr-cell.hl .v{color:var(--akashi);font-family:var(--min);font-size:23px;font-weight:700;letter-spacing:.08em}
.xr-cell .v.up{color:var(--up)} .xr-cell .v.dn{color:var(--down)} .xr-cell .v.flat{color:var(--flat)}
@media(max-width:1020px){
  .xr-cells{grid-template-columns:repeat(2,1fr)}
  .xr-cell{border-bottom:1px solid var(--kei);min-height:96px}
  .xr-cell .v{font-size:22px}
}
@media(max-width:520px){.xr-cells{grid-template-columns:1fr}.xr-cell{border-right:none}}

/* ── S-2 / A-5: 常設サマリーストリップ（nav直下・sticky）──
   毎日開く人が、スクロールせずに5秒で状態を把握できるようにする。
   表示枠は view_policy の daily.strip.v1 として事前に固定している（会則第15条）。 */
.dstrip{position:sticky;top:58px;z-index:45;background:var(--ban2);border-bottom:1px solid var(--kei)}
.dstrip .wrap{display:flex;align-items:center;gap:0;overflow-x:auto;scrollbar-width:none;min-height:56px;padding:0 24px}
.dstrip .wrap::-webkit-scrollbar{display:none}
.ds{display:flex;flex-direction:column;gap:3px;padding:9px 20px 9px 0;margin-right:20px;border-right:1px solid var(--kei);white-space:nowrap;flex:none}
.ds:last-child{border-right:none;margin-right:0}
.ds .k{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--haisei)}
.ds .v{font-family:var(--mono);font-size:17px;font-weight:600;color:var(--geppaku);letter-spacing:.01em}
.ds .v small{font-size:12px;font-weight:400;margin-left:5px}
.ds .v.up{color:var(--up)} .ds .v.dn{color:var(--down)} .ds .v.flat{color:var(--flat)}
.ds .v.hl{color:var(--akashi);font-family:var(--min);font-size:15px;font-weight:700;letter-spacing:.06em}
.ds-bar{display:flex;height:7px;width:150px;border:1px solid var(--kei);margin-top:4px}
.ds-bar i{display:block;height:100%}
.ds-bar .j{background:rgba(224,88,74,.55)} .ds-bar .u{background:rgba(233,162,59,.5)}
.ds-fresh{font-family:var(--mono);font-size:12px;color:var(--haisei)}
.ds-fresh b{color:var(--geppaku);font-weight:500}
.ds-fresh.stale b{color:var(--shu)}
@media(max-width:1020px){
  .dstrip{top:0;position:relative}
  .dstrip .wrap{padding:0 16px}
  .ds{padding:9px 14px 9px 0;margin-right:14px}
  .ds .v{font-size:15px}
}

/* ── A-4: インラインスパークライン ── */
.spark{display:block;width:100%;max-width:180px;height:30px;margin-top:6px;overflow:visible}
.spark polyline{fill:none;stroke:var(--haisei);stroke-width:1.4;vector-effect:non-scaling-stroke}
.spark .band{fill:rgba(139,152,176,.13)}
.spark .zero{stroke:var(--kei);stroke-width:1;stroke-dasharray:2 3;vector-effect:non-scaling-stroke}
.spark .last{fill:var(--akashi)}
.spark-cap{font-family:var(--mono);font-size:12px;color:var(--haisei);margin-top:3px;display:block}

/* ── A-1: 折りたたみ（思想は1度、データは毎日）── */
details.fold{border:1px solid var(--kei);background:var(--ban2);margin-top:14px}
details.fold>summary{cursor:pointer;list-style:none;padding:11px 18px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--haisei)}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:"＋ ";color:var(--akashi)}
details.fold[open]>summary::before{content:"− "}
details.fold>summary:hover{color:var(--geppaku)}
details.fold .fold-body{padding:0 18px 16px;font-size:12.5px;color:var(--haisei);line-height:1.95}
details.fold .fold-body b{color:var(--geppaku)}

/* ── A-2: 変更記録のタブ ── */
.tabs{display:flex;gap:0;border:1px solid var(--kei);border-bottom:none;background:var(--ban2)}
.tabs a{flex:1;text-align:center;padding:13px 10px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--haisei);border-right:1px solid var(--kei)}
.tabs a:last-child{border-right:none}
.tabs a.on{background:var(--ban);color:var(--akashi);box-shadow:inset 0 -2px 0 var(--akashi)}
.tabs a:hover{color:var(--geppaku)}

/* ── C-3: 配信準備中のセルを実データと明確に区別する ── */
.tile.pending{background:repeating-linear-gradient(135deg,var(--ban2) 0 8px,#0B1120 8px 16px);border-right:1px dashed var(--kei)}
.tile.pending .v{color:var(--haisei);font-size:13px;font-weight:400;letter-spacing:.06em}
.tile.pending .sid{color:#5A6A88}

/* ── S-4: 方向記号（色に頼らない）── */
.sign{font-family:var(--mono);font-weight:600}

/* ── 変更記録の行：人間の主導線と機械の主導線を分ける ── */
.nw-title{color:var(--geppaku);border-bottom:1px solid var(--kei)}
.nw-title:hover{color:var(--akashi);border-color:var(--akashi)}
.jl{font-family:var(--mono);font-size:12px;color:var(--haisei);padding:1px 5px;border:1px solid var(--kei);margin-left:6px}
.jl:hover{color:var(--akashi);border-color:var(--akashi)}

/* ── LINE 登録の主要導線 ── */
.btn-line-lg{display:inline-flex;align-items:center;gap:11px;background:#06C755;color:#052E18;
  border:none;font-family:var(--sans);font-size:15px;font-weight:700;letter-spacing:.04em;
  padding:17px 28px;white-space:nowrap;transition:opacity .2s;line-height:1.4}
.btn-line-lg:hover{opacity:.88;color:#052E18}
.btn-line-lg .ic{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
  border-radius:6px;background:#052E18;color:#06C755;font-size:12px;font-weight:700;flex:none}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:26px}
.cta-sub{font-family:var(--mono);font-size:12px;color:var(--haisei);line-height:1.8}

/* 各ページ末尾の共通CTA */
.line-band{border-top:1px solid var(--kei);border-bottom:1px solid var(--kei);background:var(--ban);
  border-left:2px solid #06C755}
.line-band .wrap{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;padding:30px 24px}
.line-band h4{font-family:var(--min);font-weight:700;font-size:20px;letter-spacing:.1em;margin-bottom:9px}
.line-band p{color:var(--haisei);font-size:13px;line-height:1.95;max-width:54em}
.line-band p b{color:var(--geppaku)}
.line-band .types{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.line-band .types span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--haisei);
  border:1px solid var(--kei);padding:3px 9px}

/* スマホ用の固定バー（閉じられる） */
.line-fab{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;
  background:rgba(10,15,28,.96);backdrop-filter:blur(8px);border-top:1px solid #1E5C3A;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  align-items:center;gap:10px}
.line-fab .txt{flex:1;min-width:0}
.line-fab .txt b{display:block;font-size:13px;color:var(--geppaku);font-weight:700;line-height:1.5}
.line-fab .txt span{font-family:var(--mono);font-size:11px;color:var(--haisei)}
.line-fab .go{background:#06C755;color:#052E18;font-family:var(--mono);font-size:12px;font-weight:700;
  letter-spacing:.1em;padding:13px 18px;white-space:nowrap;flex:none;min-height:44px;display:flex;align-items:center}
.line-fab .cl{background:transparent;border:1px solid var(--kei);color:var(--haisei);
  font-size:16px;line-height:1;padding:0;width:44px;height:44px;flex:none;cursor:pointer}
.line-fab .cl:hover{color:var(--geppaku);border-color:var(--haisei)}
body.fab-on .line-fab{display:flex}
@media(min-width:1021px){.line-fab{display:none!important}}
@media(max-width:1020px){
  .line-band .wrap{grid-template-columns:1fr;gap:18px;padding:26px 20px}
  body.fab-on{padding-bottom:76px}
}

/* ── ファーストビュー最適化 ──
   利用者はドル円を見に来る。10秒以内に「何のサイトか」「今どうか」「次に何があるか」
   「毎回来なくていいか」に答えられる位置まで、主要導線を引き上げる。 */
.hero .wrap{padding-top:56px;padding-bottom:60px}
.dstrip .wrap{padding-right:36px}
.dstrip::after{content:"";position:absolute;right:0;top:0;bottom:0;width:34px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--ban2))}
.dstrip{position:sticky;overflow:hidden}

@media(max-width:900px){
  /* ナビ：文字が重なって見えないよう間隔を確保し、フェードは右端だけにする */
  .menu{gap:4px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
        mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent)}
  .menu a{padding:12px 13px;font-size:13px}
}

@media(max-width:1020px){
  .hero .wrap{padding:26px 20px 34px;gap:26px}
  .tate{font-size:clamp(27px,6vw,38px);letter-spacing:.14em;padding-bottom:12px;margin-bottom:0}
  .lead .eyebrow{margin-bottom:12px}
  .lead h2{font-size:clamp(21px,5.4vw,27px);line-height:1.75;margin-bottom:14px}
  .lead p{margin-bottom:16px;font-size:14px;line-height:1.85}
  /* 三綱領は横1行のスクロールに畳み、CTAを上へ */
  .credos{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:8px;margin-bottom:2px;
          -webkit-overflow-scrolling:touch}
  .credos::-webkit-scrollbar{display:none}
  .credos span{flex:none;padding:6px 12px;font-size:11.5px}
  .cta-row{margin-top:18px;gap:10px}
  .cta-row .btn,.cta-row .btn-line-lg{width:100%;justify-content:center;text-align:center}
  .cta-sub{margin-top:10px}
  /* 訂正カードのデモは説明要素。CTAの後ろへ回す */
  .hero .wrap>div:last-child{order:3}
  .ledger-note{text-align:left;margin-top:10px}
}

/* ── ナビ：マスクで文字を薄くすると重なって見えるため、overlayに変える ── */
@media(max-width:900px){
  .menu{-webkit-mask-image:none;mask-image:none;gap:6px;position:relative}
  .nav .wrap{position:relative}
  .nav .wrap::after{content:"";position:absolute;right:0;bottom:0;width:30px;height:46px;
    pointer-events:none;background:linear-gradient(90deg,transparent,rgba(10,15,28,.96))}
}
/* ── ストリップ：狭い画面では2行に折り返し、主要4項目を同時に見せる ── */
@media(max-width:640px){
  .dstrip .wrap{flex-wrap:wrap;overflow-x:visible;padding-right:16px}
  .dstrip::after{display:none}
  .ds{flex:1 1 46%;min-width:0;border-right:1px solid var(--kei);border-bottom:1px solid var(--kei);
    margin-right:12px;padding:8px 12px 8px 0;white-space:normal}
  .ds:nth-child(2n){margin-right:0;border-right:none}
  .ds .v{font-size:15px}
  .ds-bar{width:100%;max-width:140px}
  .ds:nth-last-child(-n+2){border-bottom:none}
}

/* ── 狭い画面のストリップ：主要3項目＋鮮度の2行に絞る ──
   金利差とCFTCは1タップ先のX-RAYにある。ファーストビューはCTAまで届かせる。 */
@media(max-width:640px){
  .dstrip .wrap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;
    overflow:visible;padding:0 14px;min-height:0}
  .ds{flex:none;margin:0;padding:9px 10px 9px 0;border-right:1px solid var(--kei);
    border-bottom:none;white-space:normal;min-width:0;justify-content:flex-start}
  .ds:nth-child(3){border-right:none}
  .ds:nth-child(n+4):not(:last-child){display:none}
  .ds:last-child{grid-column:1/-1;border-top:1px solid var(--kei);border-right:none;
    flex-direction:row;align-items:baseline;gap:10px;padding:8px 0}
  .ds .k{font-size:10.5px}
  .ds .v{font-size:14px;overflow:hidden;text-overflow:ellipsis}
  .ds .v small{display:block;margin:2px 0 0;font-size:11px}
  .ds-bar{width:100%;max-width:none;height:6px}
  .ds-more{font-family:var(--mono);font-size:11px;color:var(--akashi);margin-left:auto;white-space:nowrap}
}
.ds-more{display:none}
@media(max-width:640px){.ds-more{display:inline}}

/* ── 細部の詰め ── */
@media(max-width:640px){
  .ds:last-child .k{white-space:nowrap;flex:none}
  .ds .v{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .ds .v small{white-space:nowrap}
}
@media(max-width:900px){
  /* ナビ右端の目印は控えめに。文字に重ならない幅にする */
  .nav .wrap::after{width:18px;background:linear-gradient(90deg,transparent,rgba(10,15,28,.9))}
}

/* ═══════════════════════════════════════════════════
   初回ローディング
   ───────────────────────────────────────────────────
   初回訪問のみ。本文はすでにDOMにあり、覆いを外すだけ。
   JSが動かなければ覆いは出ない（本文が隠れることはない）。
   prefers-reduced-motion では表示しない。
   ═══════════════════════════════════════════════════ */
.boot{position:fixed;inset:0;z-index:200;background:var(--yoru);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
  opacity:1;transition:opacity .55s ease}
.boot.done{opacity:0;pointer-events:none}
.boot-mark{width:118px;height:118px}
.boot-mark circle,.boot-mark path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.boot-mark rect{stroke:none}
.boot-mark .ring{stroke:#0F3E77;stroke-width:5;
  stroke-dasharray:264;stroke-dashoffset:264;animation:draw 1.05s cubic-bezier(.4,0,.2,1) forwards}
.boot-mark .eye-a{stroke:#E9A23B;stroke-width:6;
  stroke-dasharray:150;stroke-dashoffset:150;animation:draw .8s cubic-bezier(.4,0,.2,1) .3s forwards}
.boot-mark .eye-b{stroke:#0FA3BF;stroke-width:6;
  stroke-dasharray:150;stroke-dashoffset:150;animation:draw .8s cubic-bezier(.4,0,.2,1) .42s forwards}
.boot-mark .pupil{stroke:#0F3E77;stroke-width:4;
  stroke-dasharray:88;stroke-dashoffset:88;animation:draw .55s cubic-bezier(.4,0,.2,1) .78s forwards}
.boot-mark .bar{opacity:0;animation:barin .4s ease forwards}
.boot-mark .bar:nth-of-type(1){animation-delay:.95s}
.boot-mark .bar:nth-of-type(2){animation-delay:1.05s}
.boot-mark .bar:nth-of-type(3){animation-delay:1.15s}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes barin{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.boot-txt{font-family:var(--min);font-size:17px;letter-spacing:.34em;color:var(--geppaku);
  opacity:0;animation:fadeup .6s ease .9s forwards}
.boot-sub{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--haisei);
  opacity:0;animation:fadeup .6s ease 1.15s forwards}
@keyframes fadeup{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.boot-bar{width:170px;height:2px;background:var(--kei);overflow:hidden}
.boot-bar i{display:block;height:100%;width:0;background:var(--akashi);
  animation:load 1.5s cubic-bezier(.3,0,.2,1) forwards}
@keyframes load{to{width:100%}}
.boot-skip{position:absolute;right:22px;bottom:22px;font-family:var(--mono);font-size:11px;
  letter-spacing:.14em;color:var(--haisei);background:none;border:1px solid var(--kei);
  padding:9px 15px;cursor:pointer;opacity:0;animation:fadeup .4s ease 1.3s forwards}
.boot-skip:hover{color:var(--akashi);border-color:var(--akashi)}
html.booting{overflow:hidden}

/* ═══════════════════════════════════════════════════
   スクロール演出（段差つき）
   データ画面（body.terminal）では無効のまま
   ═══════════════════════════════════════════════════ */
html.js .reveal{opacity:0;transform:translateY(16px);
  transition:opacity .66s cubic-bezier(.2,.7,.3,1),transform .66s cubic-bezier(.2,.7,.3,1)}
html.js .reveal.in{opacity:1;transform:none}
html.js .stagger>*{opacity:0;transform:translateY(14px);
  transition:opacity .55s cubic-bezier(.2,.7,.3,1),transform .55s cubic-bezier(.2,.7,.3,1)}
html.js .stagger.in>*{opacity:1;transform:none}
html.js .stagger.in>*:nth-child(1){transition-delay:.02s}
html.js .stagger.in>*:nth-child(2){transition-delay:.07s}
html.js .stagger.in>*:nth-child(3){transition-delay:.12s}
html.js .stagger.in>*:nth-child(4){transition-delay:.17s}
html.js .stagger.in>*:nth-child(5){transition-delay:.22s}
html.js .stagger.in>*:nth-child(6){transition-delay:.27s}
html.js .stagger.in>*:nth-child(n+7){transition-delay:.32s}
html.js body.terminal .stagger>*{opacity:1;transform:none;transition:none}

/* ═══════════════════════════════════════════════════
   スパークラインの描画（観測値をなぞる）
   値そのものは変えない。線を引く順序だけを見せる
   ═══════════════════════════════════════════════════ */
html.js .spark polyline{stroke-dasharray:var(--len,600);stroke-dashoffset:var(--len,600)}
html.js .spark.drawn polyline{transition:stroke-dashoffset 1.5s cubic-bezier(.3,0,.2,1);stroke-dashoffset:0}
html.js .spark circle.last{opacity:0;transition:opacity .3s ease 1.2s}
html.js .spark.drawn circle.last{opacity:1}

/* ═══════════════════════════════════════════════════
   微細な操作反応
   ═══════════════════════════════════════════════════ */
.tile,.rep,.nw,.house,.credo,.keycard,.xr-cell{transition:background .25s ease,transform .25s cubic-bezier(.2,.7,.3,1),border-color .25s ease}
.tile:hover,.nw:hover{background:var(--ban2)}
.house:hover,.rep:hover{background:var(--ban2);transform:translateY(-2px)}
.btn,.btn-line-lg,.btn-s,.btn-line{transition:opacity .2s ease,transform .12s cubic-bezier(.2,.7,.3,1),box-shadow .25s ease}
.btn:hover,.btn-line-lg:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(0,0,0,.35)}
.btn:active,.btn-line-lg:active,.btn-s:active{transform:translateY(1px)}
.menu a{transition:color .2s ease,border-color .2s ease}
.ds{transition:background .25s ease}
.ds:hover{background:rgba(255,255,255,.02)}
.line-chip{transition:background .2s ease,transform .2s cubic-bezier(.2,.7,.3,1)}
.line-chip:hover{transform:translateY(-1px)}

/* ヒーロー背景の緩やかな明暗（周期48秒。注意を引かない速度） */
.hero{position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;inset:-30%;pointer-events:none;
  background:radial-gradient(ellipse at 30% 40%,rgba(233,162,59,.055),transparent 55%);
  animation:drift 48s ease-in-out infinite alternate}
@keyframes drift{from{transform:translate3d(-3%,-2%,0) scale(1)}to{transform:translate3d(3%,2%,0) scale(1.06)}}

/* ページ遷移（対応ブラウザのみ。非対応でも通常遷移） */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vtout .18s ease forwards}
::view-transition-new(root){animation:vtin .28s ease}
@keyframes vtout{to{opacity:0}}
@keyframes vtin{from{opacity:0}}

@media(prefers-reduced-motion:reduce){
  .boot{display:none!important}
  html.booting{overflow:auto!important}
  html.js .stagger>*{opacity:1!important;transform:none!important}
  html.js .spark polyline{stroke-dashoffset:0!important}
  html.js .spark circle.last{opacity:1!important}
  .hero::after{animation:none}
  @view-transition{navigation:none}
}

/* ═══════════════════════════════════════════════════
   レイアウトの取りこぼし修正（実描画検査で検出）
   ═══════════════════════════════════════════════════ */

/* ① 長いURL・系列IDがリンクだと画面外へ突出する */
a{overflow-wrap:anywhere;word-break:normal}
.ep code,.hashbox,.hashline,.mfile code,.xr-prov,.cmd{overflow-wrap:anywhere}

/* ② X-RAYの行は狭い画面で折り返す（横スクロールを作らない） */
.xr-row{flex-wrap:wrap}
.xr-l,.xr-v{min-width:0}
@media(max-width:520px){
  .xr-row{flex-direction:column;align-items:flex-start;gap:4px}
  .xr-v{text-align:left;white-space:normal}
}

/* ③ 表とコード例が枠外へ出る
      親に overflow-x が無いと、子がいくら折り返しても外へ出る。
      .scroll は記事側で使われているのに定義が無かった。 */
.scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:24px}
.paper table{max-width:100%}
.code,.hashbox,.hashline,.cmd{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.code span,.hashbox span{overflow-wrap:anywhere}
.ep code{display:block;max-width:100%;overflow-wrap:anywhere}

/* ④ 演出を止めたときは必ず見える状態にする
      （このブロックは最後に置く。後から追記した規則に負けないため） */
@media(prefers-reduced-motion:reduce){
  html.js .reveal,html.js .reveal.in{opacity:1!important;transform:none!important;transition:none!important}
  html.js .stagger>*{opacity:1!important;transform:none!important;transition:none!important}
  html.js .spark polyline{stroke-dashoffset:0!important}
  html.js .spark circle.last{opacity:1!important}
  .boot{display:none!important}
  html.booting{overflow:auto!important}
  .hero::after{animation:none!important}
}

/* ── 残り時間の表示 ──
   絶対時刻は静的HTMLに残す。残り時間だけをJSが更新する。
   JSが動かなくても、いつ公表されるかは読める。 */
.cd{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.06em;
  color:var(--akashi);white-space:nowrap}
.cd.soon{color:var(--up)}
.cd.past{color:var(--haisei)}
.cd-h{font-size:14px;font-weight:600}
td .cd{display:block;margin-top:3px}
.nw-d .cd{display:block;margin-top:4px}

/* ── 観測盤タイルのリンク化 ──
   行き先があるタイルは押せるようにする。押せるものと押せないものを見た目で区別する。 */
a.tile{text-decoration:none;color:inherit;position:relative}
a.tile:hover{background:var(--ban2)}
a.tile:hover .sid{color:var(--akashi)}
a.tile::after{content:"→";position:absolute;right:14px;top:14px;font-family:var(--mono);
  font-size:13px;color:var(--kei);transition:color .25s ease,transform .25s cubic-bezier(.2,.7,.3,1)}
a.tile:hover::after{color:var(--akashi);transform:translateX(3px)}
a.tile .v{transition:color .25s ease}
a.tile.ext::after{content:"↗"}
