/* 柔術ノート v3「帯と道着」 — トークンは design/DESIGN.md が正本 */
:root{
  --mat:#1e2023;--mat-2:#2a2d31;--mat-ink:#d8d9d6;--mat-sub:#9a9d9f;
  --gi:#f6f4ee;--ink:#17191b;--sub:#55595d;--rule:#dcd9cf;--accent:#31584a;--accent-bg:#e7ece7;
  --belt-white:#eeeee8;--belt-blue:#1f4e9c;--belt-purple:#5b2a86;--belt-brown:#6b4226;--belt-black:#111;
  --tape:#fbfbf8;
  --jp:'Zen Kaku Gothic New',system-ui,sans-serif;--label:'Oswald','Zen Kaku Gothic New',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--mat);color:var(--ink);font-family:var(--jp);font-size:16px;line-height:1.85;letter-spacing:.02em;font-feature-settings:"palt" 0}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
a:focus-visible,summary:focus-visible,[role=button]:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* マットの継ぎ目（ロールマットの縦の継ぎ目をごく薄く） */

/* ---- ヘッダー ---- */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;border-bottom:1px solid var(--mat-2);color:var(--mat-ink)}
.top .name{white-space:nowrap;font-weight:900;font-size:1.05rem;color:var(--mat-ink);text-decoration:none;letter-spacing:.06em}
.top .name small{font-family:var(--label);font-weight:600;font-size:.72rem;letter-spacing:.14em;color:var(--mat-sub);margin-left:10px}
.progress{display:flex;align-items:center;gap:12px;font-size:.82rem;color:var(--mat-sub)}
.progress b{color:var(--mat-ink);font-weight:700}
.top .menu{display:none;white-space:nowrap;color:var(--mat-ink);background:none;border:1px solid var(--mat-sub);border-radius:2px;padding:6px 12px;font:inherit;font-size:.85rem;min-height:44px}

/* ---- 帯（signature element）---- */
.belt{display:inline-flex;width:120px;height:12px;border-radius:0;background:var(--belt-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25);overflow:hidden;flex:none}
.belt[data-rank=blue]{background:var(--belt-blue)}.belt[data-rank=purple]{background:var(--belt-purple)}
.belt[data-rank=brown]{background:var(--belt-brown)}.belt[data-rank=black]{background:var(--belt-black)}
.belt .bar{margin-left:auto;width:36%;background:#111;display:flex;gap:6px;padding:0 7px;align-items:stretch;justify-content:flex-start}
.belt[data-rank=black] .bar{background:#b3261e}
.belt .bar i{flex:1;max-width:5px;background:transparent;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.belt .bar i.on{background:var(--tape);box-shadow:none}
.belt.lg{width:180px;height:12px}.belt.lg .bar i{max-width:6px}

/* ---- 3段組み ---- */
.shell{display:grid;grid-template-columns:240px minmax(0,1fr);max-width:1440px;margin:0 auto}
.rail{position:sticky;top:0;align-self:start;max-height:100dvh;overflow:auto;padding:28px 20px 40px 20px;color:var(--mat-ink);font-size:14px;line-height:1.6;letter-spacing:0}
.rail h2{font-weight:700;font-size:12px;letter-spacing:.04em;padding-left:16px;color:var(--mat-sub);margin:0 0 10px}
.rail ol{list-style:none}
.rail a{color:var(--mat-ink);text-decoration:none;display:block;padding:7px 0 7px 13px;border-left:3px solid transparent}
.rail a:hover{color:#fff}
.rail .chapters{margin-bottom:28px}
.rail .chapters a{display:flex;gap:10px;align-items:baseline}
.rail .chapters a span{font-family:var(--label);font-size:12px;color:var(--mat-sub);min-width:1.6em}
.rail a[aria-current]{border-left-color:var(--accent);color:#fff;font-weight:700;background:rgba(255,255,255,.04)}
.rail .sections a{font-size:13px;color:#c5c7c4;word-break:keep-all;overflow-wrap:anywhere}
.rail .sections a.cur{border-left-color:#8fb3a4;color:#fff;background:rgba(255,255,255,.04)}

.gi{background:var(--gi);min-height:100dvh;padding:56px 56px 80px}
.gi-inner{max-width:calc(40em + 340px);margin:0 auto}

/* ---- 章の開き ---- */
.opening{display:grid;grid-template-columns:92px minmax(0,40em);gap:28px;align-items:start;padding-bottom:36px;border-bottom:1px solid var(--ink);margin-bottom:48px}
.patch{width:92px;height:92px;border:2px solid var(--ink);border-radius:6px;outline:1px dashed var(--ink);outline-offset:-8px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--gi)}
.patch .kan{font-weight:900;font-size:2.1rem;line-height:1}
.patch .en{font-family:var(--label);font-weight:600;font-size:.62rem;letter-spacing:.14em;margin-top:6px;color:var(--sub)}
.opening h1{font-weight:900;font-size:clamp(30px,4vw,40px);line-height:1.3;letter-spacing:0;font-feature-settings:"palt" 1}
.opening .kicker{font-weight:700;font-size:13px;letter-spacing:.04em;color:var(--sub);display:flex;gap:12px;align-items:center;margin-bottom:8px}
.opening p.lead{margin-top:14px;color:#2d3033}

/* ---- 節: 本文＋余白の注 ---- */
section.waza{display:grid;grid-template-columns:minmax(0,40em) 300px;column-gap:40px;padding:8px 0 56px;border-bottom:1px solid var(--rule);margin-bottom:48px}
section.waza>*{grid-column:1}
section.waza>aside.note{grid-column:2;grid-row:1/span 60;align-self:start;position:sticky;top:24px}
section.waza>h2{font-weight:900;font-size:26px;line-height:1.45;letter-spacing:0;font-feature-settings:"palt" 1;margin-bottom:6px;padding-top:6px;display:flex;gap:14px;align-items:baseline}
section.waza>p.h2sub{color:var(--sub);font-weight:700;font-size:15px;margin-bottom:14px}
section.waza>h2 .n{font-family:var(--label);font-weight:600;font-size:15px;color:var(--sub);flex:none}
.lead{max-width:40em}
section.waza h3{font-weight:900;font-size:19px;margin:34px 0 12px;display:flex;align-items:center;gap:10px}
section.waza h3::before{content:"";width:18px;height:6px;background:var(--ink)}
p{margin:0 0 1em}

/* 入口と出口 */
.gk{border:1px solid var(--ink);border-radius:2px;padding:16px 20px;margin:22px 0 8px}
.gk h4,.note h4,.chgbox h4{font-family:var(--label);font-weight:600;font-size:.74rem;letter-spacing:.14em;color:var(--sub);margin-bottom:8px}
.gk .io{display:grid;grid-template-columns:4.5em 1fr;gap:6px 14px}
.gk dt{font-weight:700}.gk dt.out{color:var(--accent)}
.gk dd{margin:0}

/* 手順 */
ol.steps{list-style:none;counter-reset:s}
ol.steps>li{counter-increment:s;position:relative;padding:0 0 12px 46px;min-height:34px}
ol.steps>li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:1px;font-family:var(--label);font-weight:600;font-size:.86rem;letter-spacing:.06em;width:34px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--ink);color:var(--gi);border-radius:2px}
ul.plain{list-style:none}
ul.plain>li{position:relative;padding:0 0 10px 18px}
ul.plain>li::before{content:"";position:absolute;left:2px;top:.85em;width:7px;height:2px;background:var(--ink)}
.warn{border-left:4px solid #8a2b24;padding:12px 18px;background:#f1ebe6;margin:4px 0}
.warn ul.plain>li::before{background:#8a2b24}
blockquote{border-left:3px solid var(--accent);padding:4px 0 4px 18px;color:#2d3033}
blockquote p{margin:0 0 .4em}

/* 余白の注 */
.note{font-size:.9rem;line-height:1.75;padding-top:6px}
.note .vnote{font-size:.8rem;color:var(--sub);margin-bottom:8px}
.note .gk2{margin-top:18px}
ol.chg{list-style:none;counter-reset:c;margin-bottom:16px}
ol.chg>li{counter-increment:c;padding:0 0 8px 28px;position:relative}
ol.chg>li::before{content:counter(c);position:absolute;left:0;top:2px;width:20px;height:20px;border:1px solid var(--ink);border-radius:2px;font-family:var(--label);font-size:.72rem;display:flex;align-items:center;justify-content:center}
.cue{font-weight:900;font-size:19px;letter-spacing:.02em;padding:4px 0 4px 12px;border-left:3px solid var(--ink);margin:0 0 6px}
.cuenote{font-size:.78rem;color:var(--sub)}
details{margin-top:14px;border-top:1px solid var(--rule)}
summary{cursor:pointer;padding:10px 0;font-weight:700;font-size:.86rem;min-height:44px;display:flex;align-items:center}
details ol{padding:0 0 12px 20px}
details li{margin-bottom:10px}
.q{display:block;font-weight:700}.a{display:block;color:var(--sub)}

/* 動画 */
.video .frame{position:relative;aspect-ratio:16/9;background:#000;cursor:pointer;border-radius:2px;overflow:hidden}
.video .frame img{width:100%;height:100%;object-fit:cover;opacity:.8;filter:grayscale(1) contrast(1.05)}
.video .frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video .play{position:absolute;left:50%;top:50%;width:54px;height:38px;margin:-19px 0 0 -27px;background:rgba(0,0,0,.75);border-radius:6px}
.video .play::after{content:"";position:absolute;left:22px;top:11px;border-left:14px solid #fff;border-top:8px solid transparent;border-bottom:8px solid transparent}
.video .cap{display:flex;flex-direction:column;gap:2px;font-size:.78rem;color:var(--sub);margin-top:6px}

/* 表 */
.tbl{overflow-x:auto;margin:10px 0 18px}
table{border-collapse:collapse;width:100%;font-size:.92rem}
th,td{border-bottom:1px solid var(--rule);padding:8px 10px;text-align:left;vertical-align:top}
th{font-weight:700;border-bottom:2px solid var(--ink)}

/* 章末 */
.chfoot{display:flex;justify-content:space-between;gap:16px;border-top:2px solid var(--ink);padding-top:22px;font-weight:700;max-width:calc(40em + 340px)}
.foot{color:var(--mat-sub);font-size:.78rem;padding:20px 24px 40px;max-width:1440px;margin:0 auto}

/* ---- 狭い画面 ---- */
@media (max-width:1279px){
  section.waza{grid-template-columns:minmax(0,40em)}
  section.waza>aside.note{grid-column:1;grid-row:auto;position:static;margin-top:28px;order:99}
  section.waza{display:flex;flex-direction:column}
  .gi-inner{max-width:40em}
}
@media (max-width:899px){
  .shell{grid-template-columns:1fr}
  .rail{position:static;max-height:none;display:none;border-bottom:1px solid var(--mat-2)}
  .rail.open{display:block}
  .top .menu{display:inline-flex;align-items:center}
  .progress .label{display:none}
  .top{padding:10px 16px}
  .top .name small{display:none}
  .progress .belt.lg{width:140px;height:16px}
  .gi{padding:32px 18px 56px}
  .opening{grid-template-columns:1fr;gap:16px}
  .patch{width:72px;height:72px}.patch .kan{font-size:1.7rem}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.chgbox{margin:18px 0 6px}
.chgbox ol.chg{margin-bottom:0}
/* 手順と動画の対応 */
.stepvideo{margin:28px 0 8px}
.stepvideo .video .cap{flex-direction:row;justify-content:space-between;gap:12px}
.stepnote{font-size:.82rem;color:var(--sub);margin:8px 0 0}
button.seek{display:inline-flex;align-items:center;margin-left:10px;padding:0 10px;min-height:32px;border:1px solid var(--ink);border-radius:2px;background:var(--gi);color:var(--ink);font-family:var(--label);font-weight:600;font-size:.82rem;letter-spacing:.04em;cursor:pointer;vertical-align:middle}
button.seek:hover{background:var(--ink);color:var(--gi)}
button.seek:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.nodiff{display:block;font-size:.82rem;color:var(--sub);margin-top:2px}
@media (max-width:899px){button.seek{display:flex;width:max-content;min-height:44px;margin:6px 0 0}}
blockquote.words{margin:14px 0 0;border-left:3px solid var(--accent);padding:2px 0 2px 16px;color:#2d3033}
blockquote.words p{margin:0 0 .35em}
/* 目次・附録・用語集: 旧ページの見出しも v3 の書体にそろえる */
body[class^="p-"] h1,body[class^="p-"] h2,body[class^="p-"] h3,body[class^="p-"] h4{font-family:var(--jp);font-weight:900;letter-spacing:0;font-feature-settings:"palt" 1}
.opening p.h1sub{font-weight:700;font-size:17px;color:var(--sub);margin:6px 0 0}
/* 写真も色の決まりに合わせて白黒（帯だけが色を持つ） */
.note figure img,.gi figure img{filter:grayscale(1) contrast(1.05)}
/* 最終採点の反映（削る方向） */
.top .progress{margin-right:auto;margin-left:24px}
.belt.lg{width:120px}
.stage>.no.beltmark{border:0!important;border-radius:0!important;width:auto!important;height:auto!important;background:none!important;display:flex;align-items:flex-start;padding-top:8px}
.stage>.no.beltmark .belt{width:64px;height:14px}
.lead,.lead2,p.lead{border-left:0!important;padding-left:0!important;background:none!important}
blockquote.words{border-left:1px solid var(--rule)}
.gi h3,.gi h4,.gk dt.out,.kv dd b,.kv b{color:var(--ink)!important}
.gterm .dojo{color:var(--sub)!important;border-left:1px solid var(--rule)!important}
.p-index .cover{padding-top:56px!important}
.p-index .gi p{max-width:40em}

ol.steps>li::before{background:none;color:var(--sub);border:1px solid var(--rule);content:counter(s)}
ol.chg>li::before{border:0;width:auto;content:counter(c) "."}
ol.chg>li{padding-left:22px}
.opening p.h1sub{margin-bottom:12px}
.opening h1{word-break:auto-phrase;text-wrap:balance}
/* 目次・用語集・附録の組みを章ページにそろえる */
.gi .wrap{max-width:none!important;padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important}
.p-index .gi p,.p-index .gi .lead2,.p-glossary .gloss-open p{max-width:40em}
.p-index .cover{padding-bottom:24px!important}
section.waza>aside.note figure{margin:0 0 16px}
section.waza>aside.note figcaption{font-size:.8rem;color:var(--sub);margin-top:6px}
.p-glossary .gterm{display:block!important;padding:22px 0;border-bottom:1px solid var(--rule)}
.p-glossary .gterm .d{display:flex;flex-wrap:wrap;gap:0 24px;max-width:calc(40em + 340px)}
.p-glossary .gterm .d>*{flex:1 1 100%;max-width:40em}
.p-glossary .gterm .d>figure,.p-glossary .gterm .d>.video{flex:0 1 300px;max-width:300px;margin:14px 0 4px}
.note .kv{display:block!important;grid-template-columns:none!important;padding:10px 0;border-bottom:1px solid var(--rule)}
.note .kv dt{font-weight:700;margin:0}
.note .kv dd{margin:4px 0 0!important;font-size:.86rem;line-height:1.7}
.note .ev{margin:0}
/* 旧ページの箇条書きの印と節の上線が、v3 の印・下線と二重にならないようにする */
ul.plain>li::before{content:""!important}
.warn ul.plain>li::before{content:""!important;background:#8a2b24}
body[class^="p-"] section.waza{border-top:0!important}
body[class^="p-"] section.waza+hr,body[class^="p-"] main>hr{display:none}
/* 会員動画へのリンク（要ログイン） */
.note .member{margin-top:18px;padding-top:12px;border-top:1px solid var(--rule)}
.note .member a{display:block;padding:4px 0;font-size:.88rem}
.note .member a.maplink{font-size:.78rem;color:var(--sub)}
.p-members tr.no td:last-child{color:var(--sub)}

/* イメージ再生へのリンク（注の合図の下） */
.imlink{margin:6px 0 10px;font-size:.86rem;font-weight:700}
