@charset "UTF-8";
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+JP:wght@400;600;700&?family=Inter:wght@400;700;900&display=swap');
:root {
--primary: #005bab;
--accent: #0E8BFB;
--dark: #0a0a0a;
--dark-card: #262626;
--light: #f8f8f8;
--gray: #888888;
--border: rgba(255, 255, 255, 0.1);
--btn-color: #333;
}
        

.plaid_bg {
  background-color: #ffffff;
  background-image: linear-gradient(90deg, #e5e5e573 1px, transparent 1px), linear-gradient(#e5e5e573 1px, transparent 1px);
  background-position: 10px 10px;
  background-size: 61px 61px;
  width: 100vw;
  margin: 0;
  padding: 10px 0;
  position: relative;
}

.rotated-text-left,
.rotated-text-right {
  position: fixed;
  font-size: clamp(50px, 12vh, 120px);
  color: rgba(229, 229, 229, 1);
  /* 回転 */
  transform: rotate(90deg); /* 90度回転 */
  /* transform-origin: 50% 50%; */ /* 回転の中心（デフォルト） */
  /* 位置調整 */
  white-space: nowrap; /* 折り返さない */
}

.rotated-text-left {
  left: 0;
  bottom: 0; /* 垂直方向の中央 */
  transform: rotate(90deg); /* 回転後にY軸方向にずらす */
  /* transform-origin: left top; */ /* 左上を基準に回転させる */
}

.rotated-text-right {
  right: 0;
  bottom: 0;
  transform: rotate(90deg); /* 回転後にY軸方向にずらす */
  /* transform-origin: right top; */ /* 右上を基準に回転させる */
}

.rotated-text {
  position: fixed; /* 画面全体に対して固定 */
  bottom: 0; /* 下端に配置 */
  left: 0; /* 左端に配置 */
  transform: rotate(-90deg) translateY(50%) translateX(-15%); /* 90度回転 */
  transform-origin: top left; /* 回転の基準点を左下にする */
  white-space: nowrap; /* テキストが改行しないように */
  line-height: 0.5;
  text-align: right;
  /* 必要に応じて、文字の向きや色、フォントなどを調整 */
  /* text-orientation: upright; */
  font-size: clamp(80px, 24vh, 150px);
  color: rgba(229, 229, 229, 0.7);
  font-family: "Inter", "IBM Plex Sans JP",　sans-serif;
  font-optical-sizing: auto;
  font-weight: 600;
  font-style: normal;
}

.container {
            width:93%;	max-width: 1280px;
            margin: 0 auto;
            padding: 0;
        }
 
/* 右矢印リンク */
.arrow-link-right {
  --arrow-color: #00469b;
  display: inline-flex; /* テキストと矢印を横並び */
  align-items: center; 
  color: var(--arrow-color); /* テキスト色 */
  text-decoration: none;
  position: relative; /* 矢印の位置基準 */
}

/* ホバー時も文字色を変えない */
.arrow-link-right:hover {
  color: var(--arrow-color);
}

/* 右矢印 */
.arrow-link-right::after {
  content: '';
  position: absolute;
  left: 100%; /* テキストの右端に配置 */
  width: 30px; 
  height: 10px; 
  border-bottom: 1px solid var(--arrow-color);
  border-right: 1px solid var(--arrow-color);
  transform: skewX(50deg); 
  transition: margin-left 0.3s ease;
}

/* ホバーで矢印を右にスライド */
.category-card:hover .arrow-link-right::after {
  margin-left: 10px;
}



/* 1. 流線背景用のCanvas */
        #bg-canvas {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: -1;
            opacity: 1;
            pointer-events: none;
        }

        /* 2. 巨大横流れテキスト（マーキー） */
        .marquee-container {
            position: absolute;
            top: 45%;
            left: 0;
            transform: translateY(-50%);
            white-space: nowrap;
            overflow: hidden;
            width: 100vw;
            z-index: 0;
            opacity: 0.25;
            pointer-events: none;
            display: flex;
        }

        .marquee-content {
            display: flex;
            flex-shrink: 0;
        }

        .marquee-text {
            font-size: 22vw;
            font-weight: 900;
            text-transform: uppercase;
            line-height: 1;
            -webkit-text-stroke: 2px rgba(255,255,255,0.6);
            color: transparent;
            padding-right: 0.1em;
        }


        /* アニメーション用クラス */
        .reveal { opacity: 0; transform: translateY(30px); }
        .text-outline {
            -webkit-text-stroke: 1px var(--light);
            color: transparent;
        }


.webcolumn_Section {
padding: 8rem 0;
background-color: rgba(229, 229, 229, 1);
}

.ticker {
  overflow: hidden;
  width: 100%;
  margin: auto;
}

.track {
  display: grid;
  gap:30px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 768px) {
.track { grid-template-columns: repeat(2, minmax(0, 1fr));}
}
.ticker-card {
  
  padding: 0 10px;
  box-sizing: border-box;
  text-decoration: none;
  color: inherit;
}
.ticker-card { display: none;}
.ticker-card.is-show { display: block;}


.ticker-card-image {
  position: relative;
  overflow: hidden;
  width: 100%;
  line-height: 0;
}

.ticker-card-image img {
  width: 100%;
  height: auto;
  transition: transform .4s ease;
  object-fit: contain;
  display: block;
  vertical-align: top;
}

.ticker-card-image .overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.45);
  color: #fff;
  font-size: 1.4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity .4s ease;
}

.ticker-card-image:hover img {
  transform: scale(1.1);
}

.ticker-card-image:hover .overlay {
  opacity: 1;
}

.ticker-card-text {
  padding-top: 10px;
}
.ticker-card-text h3 { font-size: 1.6rem; font-weight: 700; margin-bottom: 10px;}

.ticker-card-category { margin: 0 0 10px; font-size: 1.4rem; font-weight: 600; color: var(--gray);}
.ticker-card-tag { display: block;}
.ticker-card-tag span {
  font-size: 1.4rem;
  color: var(--light);
  text-align: center;
  line-height: 1;
  background-color: var(--dark-card);
  display: inline-block;
  padding: 5px;
  margin: 0px 10px 10px 0;
}

.ticker-nav {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 30px;
}

.ticker-nav button {
  padding: 8px 14px;
  border-radius: 8px;
  border: none;
  background: #eee;
  cursor: pointer;
}

.category_filter { margin: 0 0 40px; display: flex; justify-content: center; gap:30px; flex-wrap: wrap;}
.category_filter li { padding: 5px 25px; border-radius: 8px; display: inline-block; text-align: center; font-size: 1.6rem; font-weight: 700; color: var(--light); background-color: var(--dark-card); cursor: pointer;}
.category_filter li:hover,
.category_filter li.is-active { background-color: var(--accent);}

/*目次*/
.toc-005 {
    margin: 3rem auto;
    border-radius: 3px;
    background-color: #f2f2f2;
}

.toc-005 label {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0;
    padding: 10px 0;
    background-color: var(--accent);
    color: #fff;
    font-weight: 600;
    font-size: 1.6rem;
    cursor: pointer;
}

.toc-005 label::before {
    display: inline-block;
    width: 1em;
    height: 1em;
    margin-right: 5px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 4H21V6H8V4ZM3 3.5H6V6.5H3V3.5ZM3 10.5H6V13.5H3V10.5ZM3 17.5H6V20.5H3V17.5ZM8 11H21V13H8V11ZM8 18H21V20H8V18Z' fill='%23fff'%3E%3C/path%3E%3C/svg%3E");
    content: '';
}

.toc-005 label::after {
    margin-left: 7px;
    font-weight: 500;
    font-size: .7em;
    color: #fff;
    content: "[開く]";
    cursor: pointer;
}

.toc-005:has(:checked) label::after {
    content: "[閉じる]";
}

.toc-005 input {
    display: none;
}

.toc-005 ol {
    list-style-type: disc;
    margin: 0;
    overflow: hidden;
}

.toc-005 > ol {
    height: 0;
}

.toc-005:has(:checked) > ol {
    height: auto;
    padding: 1em 1em 1em 3em;
}

.toc-005 ol ol {
    margin-top: 5px;
    padding-left: 1.1em;
}
.toc-005 ol ol ul{
    margin-top: 5px;
    padding-left: 1.1em;
}

.toc-005 li {
    padding: 5px 0;
    font-weight: 600;
    font-size: 1.6rem;
}
.toc-005 > ol > li > a:hover,
.toc-005 > ol > li > ol > li > a:hover,
.toc-005 > ol > li > ol > li > ul >li > a:hover { text-decoration: underline; }
.toc-005 ol ol li {
    font-weight: 500;
}
.toc-005 ol ol ul > li{
    list-style: circle;
}
.toc-005 a {
    color: #333;
    text-decoration: none;
}


/*webコラム　コンテンツ*/
.web-column-header { margin: 3rem 0 3rem; padding: 0 0 16px; border-bottom: 1px solid var(--dark-card); display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; align-items: center;}
@media (max-width: 1023px) {
.web-column-header {
 grid-template-columns: 1fr; /* スマホは1列 */
} 
}
.web-column-header h1 { margin: 0 0 1rem; padding: 0; display: block; font-size: 2.4rem; font-weight: 700; color: var(--dark-card); }
.web-column-tag { display: block;}
.web-column-tag span {
  font-size: 1.4rem;
  color: var(--light);
  text-align: center;
  line-height: 1;
  background-color: var(--dark-card);
  display: inline-block;
  padding: 5px;
  margin: 0px 10px 10px 0;
}
.web-column-category { margin: 0 0 1rem; font-size: 1.6rem; font-weight: 600; color: var(--gray);}


.web-column-content { overflow-wrap: anywhere; word-break: normal; line-break: strict; font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP",sans-serif;}
.web-column-content p { margin: 0 0 1rem; font-size:1.6rem;}
.web-column-content p span,
.plist_circle li span { position: relative; background: linear-gradient(transparent 45%, yellow 45%);}
.web-column-content p strong,
.plist_circle li span strong { font-weight: 600;}
.web-column-content figure { width: 100%;}
.web-column-content figure img { width: 100%; height: auto; }
.web-column-content h2 { margin: 0 0 1rem; padding:0.25em 0.5em; border-left:solid 6px var(--primary); background:transparent; font-size:2.2rem; font-weight: 700;}
.web-column-content h3 { margin: 0 0 1rem; font-size:1.8rem; font-weight: 700;}
.web-column-content h3.bgblue { padding: 10px; line-height: 1; background-color: rgba(0,91,171,0.4); display: inline-block;}
.web-column-content h4 { margin: 0 0 1rem; font-size:1.6rem; font-weight: 700; color:var(--dark); }
.web-column-content h4.bgblue { padding: 5px; line-height: 1; background-color: rgba(0,91,171,0.4); display: inline-block;}

.web-column-content dl,
.plist_circle { margin: 0; padding: 0; list-style: none;}
.web-column-content dt,
.plist_circle > li { margin: 0; padding: 0 0 0.2em 1rem; position: relative; text-indent: 0; font-size: 1.6rem;}
.web-column-content dt::before,
.plist_circle > li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--dark);position:absolute;top:11px;left:0;}
.plist_circle.type_blue > li::before{background:var(--primary);}

/* 四角い番号 */
.plist_square { margin: 0; padding: 0; counter-reset: bucket-number;}
.plist_square li {
    counter-increment: bucket-number;
    list-style: none;
    position: relative;
    padding: 0 0 0.2em;
    font-size: 1.6rem;
}
.plist_square li::before {
    content: counter(bucket-number);
    display: inline-block;
    width: 1.8em;
    height: 1.8em;
    line-height: 1.8em;
    text-align: center;
    background: var(--primary);
    color: #fff;
    font-weight: bold;
    margin-right: 0.6em;
    border-radius: 3px;
}


.web-column-content dt { font-weight: 600;}
.web-column-content dd { font-size: 1.6rem; padding-left: 1rem;}

/*メイン：セクション切り分け*/
.web-column-content p + h2,
.web-column-content ul + h2,
.web-column-content ol + h2,
.web-column-content dl + h2,
.web-column-content table + h2,
.web-column-content figure + h2,
.web-column-content div + h2,
.web-column-content div + div {
  margin-top: 5rem;
}
.web-column-content p + h3,
.web-column-content ul + h3,
.web-column-content ol + h3,
.web-column-content dl + h3,
.web-column-content table + h3,
.web-column-content figure + h3,
.web-column-content div + h3 {
  margin-top: 4rem;
}
.web-column-content p + h4,
.web-column-content ul + h4,
.web-column-content ol + h4,
.web-column-content dl + h4,
.web-column-content table + h4,
.web-column-content figure + h4,
.web-column-content div + h4 {
  margin-top: 3rem;
}


/*定義リスト*/
.web-column-content dd + dt {
  margin-top: 0.5rem;
}
.web-column-content ul + p,
.web-column-content dl + p,
.web-column-content table + p,
.web-column-content figure + p { margin-top: 1rem;}


.table{width:100%;margin-bottom:1rem;color:#212529;border-collapse: collapse; font-size: 1.6rem;}
.table td {padding:.75rem;vertical-align:center;border:1px solid var(--dark); background-color: var(--light);}
.table th {padding:.75rem;vertical-align:center;border:1px solid var(--dark); font-weight: 600;}
.table tbody th{ background-color: var(--light);}
.table thead th{ background-color: var(--dark); color: #fff;border:1px solid var(--light);border-top:1px solid var(--dark);}
.table thead th:first-of-type { border-left:1px solid var(--dark);}
.table thead th:last-of-type { border-right:1px solid var(--dark);}

@media (max-width: 1023px) {
.table{ min-width:1000px;}
.wrapper-table-horizontal {
  margin: 0 auto;
  overflow: auto;
  
}
.wrapper-table-horizontal::after {
  content: '横にスクロールできます';
  display: block;
  text-align: center;
  position: sticky;
  left: 0;
  margin-bottom: 30px;
  font-size: 1.2rem;
}
}

.web-column-contact {
margin: 8rem auto 3rem;
padding: 5rem 0 1rem;
box-sizing: border-box;
width: 100%;
border: 2px solid var(--primary);
background-color: var(--light);
position: relative;
}
.web-column-content div + div.web-column-contact {
  margin-top: 8rem;
}
.web-column-contact p { padding: 0 1rem;}
.web-column-contact h3 {
position: absolute;
top: 0;
left: 50%; transform: translate(-50%, -50%);
min-width: 80%;
padding: 10px;
line-height: 1.5;
text-align: center;
background-color: var(--primary);
color: var(--light);
display: inline-block;
}

.contact-btn {
display: grid; grid-template-columns: repeat(2, 1fr);
gap: 1px;
margin: 2rem 1rem 1rem;
}

.link-button {
            display: flex;
            flex-direction: column;
            justify-content: center;
            padding: 25px 30px;
            background-color: var(--primary);
            color: #fff;
            text-decoration: none;
            transition: all 0.3s ease;
            position: relative;
            box-sizing: border-box;
        }

        /* 上部の見出しと矢印の並び */
        .button-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 0;
        }

        .button-heading {
            font-size: 3rem !important;
            font-weight: bold;
            margin: 0;
            color: var(--light) !important;
        }

        /* 下部のテキスト */
        .button-text {
            font-size: 1.6rem;
            color: var(--light);
            line-height: 1.5;
            
        }
        
        /* 丸囲み矢印 */
        .arrow-icon-light {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 40px;
            height: 40px;
            border: 2px solid var(--light);
            border-radius: 50%;
            margin-left: 15px;
            transition: all 0.3s ease;
            flex-shrink: 0;
        }

        .arrow-icon-light svg {
            width: 20px;
            height: 20px;
            fill: none;
            stroke: var(--light);
            stroke-width: 2;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        /* --- ホバーアクション --- */
        .link-button:hover {
            background-color: #0E8BFB;
        }

        .link-button:hover .arrow-icon-light {
            transform: scale(1.2); /* 丸囲みを少し大きく */
            background-color: var(--light); /* 丸の中を白に */
        }

        .link-button:hover .arrow-icon-light svg {
            stroke: #0E8BFB; /* 矢印の色を背景色と同じに */
        }
        
        

        /* --- レスポンシブ (スマホ: max-width 768px) --- */
        @media (max-width: 768px) {
            .contact-btn {
                grid-template-columns: 1fr; /* スマホは1列 */
            }
            
            .link-button {
                padding: 20px;
            }
        }
        
.reveal-container {
            position: relative;
            overflow: hidden;
            display: inline-block;
            visibility: hidden; /* JS読み込み前のチラつき防止 */
            width: 100%;
        }

        .reveal-mask {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            background-image: linear-gradient(120deg, rgba(171,171,171,1) 0, rgba(191,191,191,1) 100%);
            z-index: 10;
            transform: scaleX(0);
            transform-origin: left;
        }

        .reveal-content {
            opacity: 0;
            width: 100%;
            height: auto;
            
        }
        
.grid_column { margin: 30px 0; padding: 0; display: grid; gap: 30px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 1023px) {
.grid_column {
 grid-template-columns: 1fr; /* スマホは1列 */
} 
}
.web-column-content div.grid_column div + div { margin-top:0;}

.flex_column { margin: 30px 0; padding: 0; display: flex; gap: 30px; flex-wrap: nowrap;}
.flex_column div { flex: 1;}
.web-column-content div.flex_column div + div { margin-top:0;}
.flex_column.reverse-direction { flex-direction: row-reverse;}
@media (max-width: 1023px) {
.flex_column { flex-direction: column;}
.flex_column.reverse-direction { flex-direction: column;}
}