/* 追従・目次（横浜予備校 .ytoc と同型／色＝pastel-theme のトークン） */
.ytoc{--toc-c:#4e7c73;--toc-d:#365a68;--toc-pale:#f0f8f6;--toc-ring:#deefe9;--toc-line:#dce5ed;--toc-ink:#303f48;
  position:fixed;z-index:95;right:20px;top:50%;transform:translateY(-50%);
  opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s}
.ytoc.on{opacity:1;visibility:visible}
.ytoc-btn{position:relative;width:82px;height:82px;border:1px solid var(--toc-ring);padding:0;cursor:pointer;border-radius:50%;
  background:#fff;box-shadow:0 10px 28px rgba(54,90,104,.16);display:block;transition:transform .2s ease,border-color .2s ease;
  font-family:inherit;-webkit-appearance:none;appearance:none}
.ytoc-btn:hover{transform:scale(1.06);border-color:var(--toc-c)}
.ytoc-btn:focus-visible{outline:3px solid var(--toc-c);outline-offset:4px}
.ytoc-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}
.ytoc-ring .bg{fill:none;stroke:var(--toc-ring);stroke-width:6}
.ytoc-ring .fg{fill:none;stroke:var(--toc-c);stroke-width:6;stroke-linecap:round;
  stroke-dasharray:282.74;stroke-dashoffset:282.74;transition:stroke-dashoffset .18s linear}
.ytoc-in{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;pointer-events:none}
.ytoc-bars{display:block;width:19px;height:2px;border-radius:2px;background:var(--toc-d);position:relative;margin-bottom:8px}
.ytoc-bars:before,.ytoc-bars:after{content:"";position:absolute;left:0;width:19px;height:2px;border-radius:2px;background:var(--toc-d)}
.ytoc-bars:before{top:-5px}
.ytoc-bars:after{top:5px}
.ytoc-bars,.ytoc-bars:before,.ytoc-bars:after{transition:transform .25s ease,top .25s ease,background .2s ease}
.ytoc.open .ytoc-bars{background:transparent}
.ytoc.open .ytoc-bars:before{top:0;transform:rotate(45deg)}
.ytoc.open .ytoc-bars:after{top:0;transform:rotate(-45deg)}
.ytoc-lb{font-size:12px;font-weight:700;color:var(--toc-d);letter-spacing:.08em;line-height:1}
.ytoc-pct{font-weight:700;font-size:14px;color:var(--toc-c);line-height:1.1}
.ytoc-panel{position:absolute;right:98px;top:50%;transform:translateY(-50%) translateX(12px) scale(.96);
  transform-origin:right center;width:262px;max-height:min(80vh,620px);overflow-y:auto;overscroll-behavior:contain;
  background:#fff;border:1px solid var(--toc-line);border-radius:16px;padding:16px 14px;
  box-shadow:0 10px 28px rgba(54,90,104,.16);text-align:left;
  opacity:0;visibility:hidden;transition:opacity .25s ease,transform .25s cubic-bezier(.2,.8,.25,1),visibility .25s}
.ytoc.open .ytoc-panel{opacity:1;visibility:visible;transform:translateY(-50%) translateX(0) scale(1)}
.ytoc-panel .ytoc-h{font-size:12px;font-weight:700;letter-spacing:.16em;color:var(--toc-d);line-height:1.5;
  padding:0 8px 10px;margin:0 0 8px;border-bottom:1px solid var(--toc-line)}
.ytoc-panel .ytoc-h span{float:right;color:var(--toc-c);letter-spacing:0}
.ytoc-panel a{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:9px;text-decoration:none;
  font-size:14px;font-weight:700;color:var(--toc-ink);line-height:1.45;transition:background-color .15s,color .15s}
.ytoc-panel a.sub{padding-left:24px;font-size:13px;font-weight:500}
.ytoc-panel a:hover{background:var(--toc-pale);color:var(--toc-d)}
.ytoc-panel a .d{flex:none;width:6px;height:6px;border-radius:50%;background:#b7dfd1;transition:.15s}
.ytoc-panel a.cur{background:var(--toc-pale);color:var(--toc-d)}
.ytoc-panel a.cur .d{background:var(--toc-c)}
.ytoc-panel a.cta{margin-top:8px;justify-content:center;background:var(--pastel-gradient,linear-gradient(110deg,#b7dfd1 0%,#b9deed 50%,#d2c3e8 100%));color:#345462;border-radius:999px;padding:10px 9px}
.ytoc-panel a.cta:hover{filter:brightness(1.04);color:#345462}
.ytoc-panel a.cta .d{display:none}
.ytoc-panel::-webkit-scrollbar{width:5px}
.ytoc-panel::-webkit-scrollbar-thumb{background:#b7dfd1;border-radius:9px}
@media(max-width:900px){
  .ytoc{right:13px;top:auto;bottom:24px;transform:none}
  .ytoc-btn{width:66px;height:66px}
  .ytoc-bars{width:16px;margin-bottom:7px}
  .ytoc-bars:before,.ytoc-bars:after{width:16px}
  .ytoc-pct{font-size:12px}
  .ytoc-panel{right:0;top:auto;bottom:76px;transform:translateY(10px) scale(.96);
    transform-origin:right bottom;width:min(272px,calc(100vw - 26px));max-height:min(calc(100vh - 140px),620px);max-height:min(calc(100dvh - 140px),620px)}
  .ytoc.open .ytoc-panel{transform:translateY(0) scale(1)}
}
@media(max-width:620px){
  .ytoc-panel{padding:14px 12px}
  .ytoc-panel .ytoc-h{padding-bottom:8px;margin-bottom:6px}
  .ytoc-panel a{padding:5px 9px;line-height:1.4}
  .ytoc-panel a.sub{padding-left:22px}
  .ytoc-panel a.cta{margin-top:6px;padding:9px}
}
body:has(#mobile-menu:not([hidden])) .ytoc{display:none!important}
@media(prefers-reduced-motion:reduce){
  .ytoc,.ytoc-btn,.ytoc-panel,.ytoc-ring .fg{transition:none}
}
@media print{.ytoc{display:none!important}}
