/* ===================================================================

ICT Custom Style — scoped under .ict-content

HeartCore-compatible, fully isolated

=================================================================== */

/* 
.header-global-hidden {
display: none !important;
}
*/

/* Hard reset: strip any inherited element-level styling from the site's
   own common.css (headings, lists, links, images) so every visual choice
   for this page comes from the rules below, not the host site's chrome. */
.ict-content h1,
.ict-content h2,
.ict-content h3,
.ict-content h4,
.ict-content h5,
.ict-content h6 {
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
background: none !important;
box-shadow: none !important;
text-align: left;
}
.ict-content ul,
.ict-content ol {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
.ict-content li {
margin: 0 !important;
padding: 0 !important;
line-height: inherit !important;
}
.ict-content a {
text-decoration: none;
border: 0 !important;
background: none !important;
box-shadow: none !important;
}
.ict-content p {
margin: 0 0 1em;
}
.ict-content img {
max-width: 100%;
border: 0 !important;
background: none !important;
}

:root {
--red: #990000;
--red-l: #dc2626;
--blue: #3b82f6;
--cyan: #06b6d4;
--gray-100: #f7f7f7;
--gray-200: #e9e9e9;
--gray-300: #b4b4b4;
--gray-400: #999;
--gray-500: #666;
--gray-600: #555;
--gray-700: #444;
--gray-800: #333;
--gray-900: #222;
--txt: #333;
--muted: #999;
--link: #990000;
--bg: #fff;
--radius: 10px;
--radius-lg: 28px;
--font: "游ゴシック体", "Yu Gothic", YuGothic, "ヒラギノ角ゴPro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "ＭＳ Ｐゴシック", "MS PGothic", sans-serif;
--font-m: "Yu Mincho", YuMincho, serif;
--font-code: "Courier New", Consolas, monospace;
--mw: 1024px;
--title-gap: 40px;
}

@media (color-gamut: p3) {
:root {
--bg: color(display-p3 1 1 1);
}
.ict-content .photo-row img {
filter: brightness(0.97) saturate(0.92);
}
}

/* ===== BASE STYLES ===== */
.ict-content {
font-family: var(--font);
font-size: 14px;
line-height: 1.8;
color: var(--txt);
}

.ict-content *,
.ict-content *::before,
.ict-content *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}

.ict-content img {
max-width: 100%;
height: auto;
display: block;
}

.ict-content a {
color: var(--link);
transition: color .2s;
text-decoration: none;
}

.ict-content a:hover {
color: var(--red-l);
}

.ict-content ul,
.ict-content ol {
list-style: none;
}

.ict-content h1,
.ict-content h2,
.ict-content h3,
.ict-content h4,
.ict-content h5 {
font-weight: bold;
line-height: 1.4;
margin-bottom: 0.5em; /* Add some consistent bottom margin to headings */
}

.ict-content p {
margin-bottom: 1.5em; /* Increased bottom margin for better spacing between paragraphs */
line-height: 1.8;
}

.ict-content p:last-child {
margin-bottom: 0; /* Remove margin from the last paragraph in a container */
}

/* Japanese-aware line breaking: wrap at phrase boundaries where supported,
   avoid orphaned characters, never break mid-word in labels */
.ict-content p,
.ict-content li {
overflow-wrap: break-word;
word-break: auto-phrase;
line-break: strict;
text-wrap: pretty;
}

.ict-content h1,
.ict-content h2,
.ict-content h3,
.ict-content h4,
.ict-content h5 {
text-wrap: balance;
word-break: auto-phrase;
}

/* ===== HERO ===== */
.ict-content .firstview {
position: relative;
text-align: center;
padding: 70px 20px;
overflow: hidden;
background: #fff;
}

.ict-content .firstview::before {
--gap: 16px;
content: '';
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
background-image:
linear-gradient(rgba(153, 0, 0, 0.025) 1px, transparent 1px),
linear-gradient(90deg, rgba(153, 0, 0, 0.025) 1px, transparent 1px),
linear-gradient(rgba(153, 0, 0, 0.06) 1px, transparent 1px),
linear-gradient(90deg, rgba(153, 0, 0, 0.06) 1px, transparent 1px);
background-size:
var(--gap) var(--gap),
var(--gap) var(--gap),
calc(var(--gap) * 5) calc(var(--gap) * 5),
calc(var(--gap) * 5) calc(var(--gap) * 5);
}

.ict-content .firstview .tit-page {
position: relative;
z-index: 1;
display: inline-block;
font-family: var(--font-m);
font-size: clamp(28px, 4vw, 42px);
font-weight: 600;
color: var(--red);
line-height: 1.3;
letter-spacing: .06em;
animation: titleIn 1s ease-out;
}

@keyframes titleIn {
0% {
opacity: 0;
transform: translateY(-20px) scale(.95);
}
100% {
opacity: 1;
transform: translateY(0) scale(1);
}
}

/* Flanking lines either side of the English title. Fully declared on purpose:
   the site's common.css (.page-ict .tit-page:before/:after) draws its own
   1px black lines here, and every property we leave unset would fall
   through to those rules. */
.ict-content .firstview .tit-page::before,
.ict-content .firstview .tit-page::after {
content: '';
display: block;
position: absolute;
top: .65em; /* vertical center of the first (English) text line */
width: 56px;
height: 2px;
margin: 0;
background: var(--red);
border-radius: 2px;
opacity: 0;
animation: lineFade .8s ease-out .6s forwards;
}

.ict-content .firstview .tit-page::before {
left: -76px;
}

.ict-content .firstview .tit-page::after {
right: -76px;
}

@keyframes lineFade {
to {
opacity: 1;
}
}

.ict-content .firstview .leadcopy {
position: relative;
z-index: 1;
max-width: 740px;
margin: 28px auto 0;
font-size: 14px;
line-height: 2.35 !important;
color: var(--txt);
animation: fadeUp .8s ease-out .3s both;
}

@keyframes fadeUp {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}

/* ===== TERMINAL WINDOW ===== */
.ict-content .terminal-wrap {
position: relative;
z-index: 1;
max-width: 760px;
margin: 30px auto 0;
text-align: left;
cursor: pointer;
opacity: 0;
transform: translateY(10px);
animation: fadeUp .8s ease-out .6s both;
}

.ict-content .terminal {
background: #242842;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, .06);
}

.ict-content .terminal-bar {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 14px;
background: #1d2647;
}

.ict-content .terminal-dot {
width: 10px;
height: 10px;
border-radius: 50%;
}

.ict-content .terminal-dot:nth-child(1) {
background: #ff5f56;
}
.ict-content .terminal-dot:nth-child(2) {
background: #ffbd2e;
}
.ict-content .terminal-dot:nth-child(3) {
background: #27c93f;
}

.ict-content .terminal-title {
font-size: 11px;
color: var(--gray-400);
font-family: var(--font-code);
margin-left: 8px;
}

.ict-content .terminal-body {
padding: 14px 18px;
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
line-height: 1.7;
color: #d4d4d4;
overflow-y: auto;
max-height: 400px;
min-height: 162px;
}

.ict-content .terminal-body .prompt-user {
color: #27c93f;
}
.ict-content .terminal-body .prompt-sep {
color: #999;
}
.ict-content .terminal-body .prompt-path {
color: #06b6d4;
}
.ict-content .terminal-body .cmd {
color: #d4d4d4;
}
.ict-content .terminal-body .output {
color: #d4d4d4;
}

.ict-content .terminal-body .cursor {
display: inline-block;
width: 2px;
height: 1em;
background: #27c93f;
margin-left: 2px;
animation: blink .7s step-end infinite;
vertical-align: text-bottom;
}

@keyframes blink {
50% {
opacity: 0;
}
}

/* ===== RitsFetch Overlay ===== */
.ict-content .rits-fetch-overlay {
display: none;
padding: 16px 20px;
background: rgba(248, 248, 252, 0.97);
border-top: 1px solid var(--gray-200);
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
line-height: 1.7;
color: var(--txt);
animation: fadeUp .3s ease-out;
}

.ict-content .rits-fetch-overlay.show {
display: block;
}

.ict-content .rits-fetch-inner {
display: flex;
gap: 20px;
align-items: flex-start;
flex-wrap: wrap;
}

.ict-content .rits-fetch-overlay .ascii-r {
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
line-height: 1.0;
color: var(--red);
white-space: pre;
flex-shrink: 0;
opacity: .85;
}

.ict-content .rits-fetch-overlay .fetch-info {
flex: 1;
min-width: 180px;
}

.ict-content .fetch-cmd {
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
padding: 0 0 6px 0;
white-space: nowrap;
display: flex;
gap: 6px;
color: var(--gray-400);
}

.ict-content .fetch-cmd .prompt {
color: #27c93f;
}

.ict-content .rits-fetch-overlay .fetch-info .line {
margin: 0;
line-height: 1.7;
font-size: 13px;
color: var(--txt);
}

.ict-content .rits-fetch-overlay .fetch-info .label {
color: var(--red);
font-weight: 700;
display: inline-block;
min-width: 110px;
text-align: right;
}

.ict-content .rits-fetch-overlay .fetch-info .sep {
color: var(--gray-400);
}
.ict-content .rits-fetch-overlay .fetch-info .val {
color: var(--gray-600);
}
.ict-content .rits-fetch-overlay .fetch-info .hr {
color: var(--gray-300);
margin: 6px 0;
}

/* ===== SECTION MENU ===== */
.ict-content .menu {
background: #fff;
padding: 70px 20px;
position: relative;
}


.ict-content .menu::before {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
background: conic-gradient(
from 0deg at 50% 50%,
rgba(153, 0, 0, 0.050) 0deg,
rgba(153, 0, 0, 0.045) 60deg,
rgba(59, 130, 246, 0.040) 120deg,
rgba(34, 197, 94, 0.035) 180deg,
rgba(59, 130, 246, 0.040) 240deg,
rgba(153, 0, 0, 0.045) 300deg,
rgba(153, 0, 0, 0.050) 360deg
);
-webkit-mask: radial-gradient(circle, black 1px, transparent 1.5px) 50% 50% / 22px 22px;
mask: radial-gradient(circle, black 1px, transparent 1.5px) 50% 50% / 22px 22px;
}

.ict-content .menu::after {
position: absolute !important;
top: 0 !important;
left: 8% !important;
right: 8% !important;
width: auto !important;
height: 6px !important;
pointer-events: none;
z-index: 1;
content: '' !important;
background-image: radial-gradient(circle, rgba(153, 0, 0, .45) 2px, transparent 2.5px) !important;
background-size: 18px 6px !important;
background-repeat: repeat-x !important;
background-position: center !important;
background-color: transparent !important;
border: 0 !important;
margin: 0 !important;
transform: none !important;
}

.ict-content .menu .inner {
max-width: var(--mw);
margin: 0 auto;
}

.ict-content .menu .ttl__h3 {
font-size: clamp(20px, 2.5vw, 26px);
font-weight: 700;
text-align: center;
margin-bottom: var(--title-gap);
color: var(--txt);
}

.ict-content .menu .contlist {
display: flex;
justify-content: center;
gap: 16px;
flex-wrap: wrap;
}

@keyframes staggerIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}

.ict-content .menu .contlist .contlist__item {
flex: 0 0 calc(20% - 13px);
max-width: 200px;
opacity: 0;
transform: translateY(20px);
animation: staggerIn .5s ease-out forwards;
}

.ict-content .menu .contlist .contlist__item:nth-child(1) {
animation-delay: .05s;
}
.ict-content .menu .contlist .contlist__item:nth-child(2) {
animation-delay: .15s;
}
.ict-content .menu .contlist .contlist__item:nth-child(3) {
animation-delay: .25s;
}
.ict-content .menu .contlist .contlist__item:nth-child(4) {
animation-delay: .35s;
}
.ict-content .menu .contlist .contlist__item:nth-child(5) {
animation-delay: .45s;
}

.ict-content .menu .contlist .contlist__item a {
display: block;
text-decoration: none;
border-radius: var(--radius-lg);
overflow: hidden;
border: 1px solid var(--gray-200);
transition: all .3s ease;
background: #fff;
}

.ict-content .menu .contlist .contlist__item a:hover {
transform: translateY(-6px) scale(1.03);
box-shadow: 0 12px 28px rgba(153, 0, 0, .12);
}

.ict-content .menu .contlist .contlist__item img {
width: 100%;
display: block;
aspect-ratio: 1;
object-fit: contain;
}

.ict-content .contlist-label {
display: block;
text-align: center;
font-size: 16px;
font-weight: 600;
color: var(--red);
padding: 10px 6px 8px;
line-height: 1.4;
letter-spacing: .02em;
}

/* ===== CONTENT SECTIONS ===== */
.ict-content .contsec {
padding: 70px 20px;
scroll-margin-top: 70px;
position: relative;
}

.ict-content .contsec:nth-of-type(odd) {
background: var(--gray-100);
}

.ict-content .contsec::before {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
background-size: 24px 24px;
}

.ict-content #sec01::before {
background-image: radial-gradient(circle, rgba(153, 0, 0, 0.10) 1px, transparent 1px);
}
.ict-content #sec02::before {
background-image: radial-gradient(circle, rgba(53, 93, 165, 0.10) 1px, transparent 1px);
}
.ict-content #sec03::before {
background-image: radial-gradient(circle, rgba(48, 167, 145, 0.10) 1px, transparent 1px);
}
.ict-content #sec04::before {
background-image: radial-gradient(circle, rgba(240, 160, 37, 0.10) 1px, transparent 1px);
}
.ict-content #sec05::before {
background-image: radial-gradient(circle, rgba(115, 73, 33, 0.10) 1px, transparent 1px);
}

.ict-content .contsec .inner {
max-width: var(--mw);
margin: 0 auto;
position: relative;
z-index: 2;
}

/* Don't let a trailing margin stack on top of the section's own padding */
.ict-content .contsec .inner > :last-child:not(.contsec__ttl),
.ict-content .contsec .outer > .outer__menu:last-child,
.ict-content .contsec .outer > :last-child,
.ict-content .contsec > :last-child {
margin-bottom: 0;
}

.ict-content .contsec .contsec__ttl {
text-align: center;
margin-top: 0 !important;
margin-bottom: var(--title-gap) !important;
position: relative;
}

.ict-content .contsec .contsec__ttl img {
display: block;
margin: 0 auto 8px;
max-height: 120px;
aspect-ratio: 1;
object-fit: contain;
}

.ict-content .contsec .contsec__ttl .ttl__h3-style2 {
display: inline-block;
font-size: clamp(20px, 2.5vw, 26px);
font-weight: 700;
color: var(--red) !important;
padding: 10px 0 !important;
margin: 0 !important;
position: relative;
border: 0 !important;
border-top: 0 !important;
border-bottom: 0 !important;
box-shadow: none !important;
text-decoration: none !important;
background: none !important;
}

.ict-content .contsec .contsec__ttl .ttl__h3-style2::after {
content: '';
display: block;
width: 60px;
height: 2px;
margin: 10px auto 0;
background: var(--red);
border-radius: 2px;
}

.ict-content .contsec .row {
display: flex;
gap: 30px;
margin-bottom: 30px;
}

.ict-content .contsec .row .col {
flex: 1;
min-width: 0;
}

.ict-content .contsec .row .col img {
width: 100%;
border-radius: var(--radius);
}

.ict-content .contsec h4 {
font-size: 18px;
font-weight: 700;
margin-bottom: 16px;
color: var(--txt);
}

.ict-content .contsec .borderbox h4.sec-design {
display: inline-block;
box-sizing: border-box;
line-height: 1.5;
font-family: var(--font);
font-size: 15px;
font-weight: 700;
letter-spacing: .06em;
color: var(--red) !important;
margin-bottom: 16px !important;
padding: 4px 12px !important;
background: rgba(153, 0, 0, 0.06) !important;
border: 0 !important;
border-left: 3px solid var(--red) !important;
border-radius: 0 4px 4px 0;
}

.ict-content .contsec .borderbox {
border: 1px solid var(--gray-200);
border-radius: var(--radius);
padding: 24px;
background: #fff;
}

.ict-content .contsec .borderbox-style3 {
background: #fff;
padding: 24px;
border-radius: var(--radius);
border: 1px solid var(--gray-200);
margin-bottom: 30px;
box-shadow: 0 1px 4px rgba(0, 0, 0, .06);
}

.ict-content .contsec .outer {
max-width: var(--mw);
margin: 0 auto;
padding: 0 20px;
}

.ict-content .contsec .outer .outer__menu {
display: flex;
gap: 24px;
margin-bottom: 50px;
}

.ict-content .contsec .outer .outer__menu--grid6 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}

.ict-content .contsec .outer .outer__menu--grid6 .outer__menu__item {
flex: unset;
max-width: none;
min-width: 0;
}

.ict-content .contsec .outer .outer__menu .outer__menu__item {
/* the site's common.css sets width: 33.333% on these via .page-ict — must stay auto in the grid */
width: auto !important;
flex: 1;
background: #fff;
border: 1px solid var(--gray-200);
border-radius: var(--radius);
overflow: hidden;
transition: all .3s ease;
opacity: 0;
transform: translateY(20px);
animation: staggerIn .5s ease-out forwards;
}

.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(1) {
animation-delay: .1s;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(2) {
animation-delay: .2s;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(3) {
animation-delay: .3s;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(4) {
animation-delay: .4s;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(5) {
animation-delay: .5s;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item:nth-child(6) {
animation-delay: .6s;
}

.ict-content .contsec .outer .outer__menu .outer__menu__item:hover {
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(153, 0, 0, .1);
border-color: var(--red);
}

.ict-content .contsec .outer .outer__menu .outer__menu__item img {
width: 100%;
aspect-ratio: 16/10;
object-fit: cover;
}

.ict-content .contsec .outer .outer__menu .outer__menu__item div {
/* the site's common.css sets width: 80%; margin: 0 10% here via .page-ict */
width: auto !important;
margin: 0 !important;
padding: 16px 20px;
font-size: 14px;
line-height: 1.8;
}

.ict-content .contsec .outer .outer__menu .outer__menu__item span {
    display: block;
    font-family: var(--font);  
    font-size: 20px;           
    font-weight: 700;          
    color: var(--red);         
    margin-bottom: 10px;
    text-align: center;        
}

.ict-content .contsec h5 {
font-size: 16px;
font-weight: 700;
margin-bottom: 12px;
color: var(--txt);
display: flex;
align-items: center;
gap: 8px;
background: none !important;
text-align: left !important;
padding: 0 !important;
border: 0 !important;
}

.ict-content .grade-badge {
display: inline-block;
font-family: var(--font);
font-size: 12px;
font-weight: 700;
padding: 3px 10px;
border-radius: 4px;
white-space: nowrap;
margin-left: auto;
letter-spacing: .04em;
border: 0 !important;
color: oklch(40% 0.09 350) !important;
background: oklch(93% 0.045 350) !important;
background-color: oklch(93% 0.045 350) !important;
}

.ict-content .grade-badge.grade-34 {
color: oklch(40% 0.09 230) !important;
background: oklch(93% 0.045 230) !important;
background-color: oklch(93% 0.045 230) !important;
}

.ict-content .grade-badge.grade-5 {
color: oklch(40% 0.09 145) !important;
background: oklch(93% 0.045 145) !important;
}

.ict-content .contsec #sec03 .sec03-tit {
margin-top: 28px;
display: flex;
align-items: center;
gap: 8px;
}

.ict-content #sec03 .row .col:last-child .borderbox {
margin-top: 0;
}

.ict-content #sec03 .minecraft-col .code-block {
margin: 0;
}

/* ===== CODE BLOCKS ===== */
.ict-content .code-header {
color: #4a7a3a;
font-family: "Consolas", "Courier New", monospace;
font-size: 11px;
margin: 14px 0 4px 0;
}

.ict-content .code-header + .code-block {
margin-top: 4px;
}

.ict-content .code-block {
background: #262b3d;
border-radius: 8px;
overflow: hidden;
margin: 16px 0;
container-type: inline-size;
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
}

.ict-content .code-bar {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 12px;
background: #313850;
}

.ict-content .code-bar .code-label {
font-size: 10px;
color: var(--gray-400);
font-family: "Consolas", "Courier New", monospace;
}

.ict-content .copy-btn {
margin-left: auto;
font-size: 10px;
color: var(--gray-500);
cursor: pointer;
font-family: "Consolas", "Courier New", monospace;
opacity: 0;
transition: opacity .2s;
user-select: none;
}

.ict-content .code-bar:hover .copy-btn {
opacity: 1;
}
.ict-content .copy-btn.copied {
color: #22c55e;
}

.ict-content .code-body {
padding: 14px 12px;
line-height: 1.7;
color: #d4d4d4;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
font-family: "Consolas", "Courier New", monospace;
font-size: 13px;
counter-reset: line;
}

.ict-content .code-line {
white-space: pre;
}

.ict-content .code-body .cm {
white-space: nowrap;
color: #6a9955;
font-size: 11px;
opacity: .9;
margin-left: 12px;
}

.ict-content .code-body .kw {
color: #569cd6;
}
.ict-content .code-body .fn {
color: #dcdcaa;
}
.ict-content .code-body .str {
color: #ce9178;
}
.ict-content .code-body .num {
color: #b5cea8;
}

.ict-content .code-line::before {
counter-increment: line;
content: counter(line);
display: inline-block;
width: 16px;
color: var(--gray-600);
text-align: left;
margin-right: 8px;
user-select: none;
opacity: .4;
}

/* ===== MINECRAFT GREEN COLUMN ===== */
.ict-content .minecraft-col .code-block {
border: 1px solid rgba(107, 142, 35, 0.15);
}

.ict-content .minecraft-col .code-block .code-bar {
background: #2d4a1e;
}

.ict-content .minecraft-col .code-block .code-bar .code-label {
color: #8bc34a;
}
.ict-content .minecraft-col .code-block .copy-btn {
color: #8bc34a;
opacity: .5;
}
.ict-content .minecraft-col .code-block .code-bar:hover .copy-btn {
opacity: 1;
}
.ict-content .minecraft-col .code-block .copy-btn.copied {
color: #a5d66a;
}
.ict-content .minecraft-col h4 {
color: #558b2f;
}

.ict-content .minecraft-badge {
display: inline-block;
box-sizing: border-box;
line-height: 1.5;
font-family: var(--font);
font-size: 15px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .06em;
color: #558b2f;
margin-bottom: 16px;
padding: 4px 12px;
background: rgba(85, 139, 47, 0.08);
border-left: 3px solid #558b2f;
border-radius: 0 4px 4px 0;
}

.ict-content .minecraft-cube {
display: flex;
justify-content: center;
padding: 4px 0 16px;
}

/* ===== SECTION BADGES ===== */
.ict-content .contsec__ttl .section-badge {
display: block;
font-family: var(--font-code);
font-size: 12px;
font-weight: 600;
color: var(--gray-300);
letter-spacing: .15em;
margin-bottom: 8px;
opacity: 0;
transform: translateX(-10px);
transition: opacity .5s ease-out .3s, transform .5s ease-out .3s;
}

.ict-content .contsec__ttl .section-badge.visible {
opacity: .8;
transform: translateX(0);
}

.ict-content .contsec__ttl .section-badge span {
color: var(--red);
}

/* ===== CLUB CARD ===== */
.ict-content .club-card {
margin: 0 0 30px;
background: #fff;
border: 1px solid var(--gray-200);
border-radius: var(--radius);
transition: box-shadow .3s, transform .3s;
box-shadow: 0 1px 3px rgba(0, 0, 0, .04);
}

.ict-content .club-card-bar {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
background: var(--gray-100);
border-bottom: 1px solid var(--gray-200);
border-radius: var(--radius) var(--radius) 0 0;
overflow: hidden;
}

.ict-content .club-card-dot {
width: 10px;
height: 10px;
border-radius: 50%;
}

.ict-content .club-card-dot:nth-child(1) {
background: #ff5f56;
}
.ict-content .club-card-dot:nth-child(2) {
background: #ffbd2e;
}
.ict-content .club-card-dot:nth-child(3) {
background: #27c93f;
}

.ict-content .club-card-title {
font-family: var(--font-code);
font-size: 11px;
color: var(--gray-400);
margin-left: 8px;
}

.ict-content .club-card-body {
padding: 28px 32px;
border-radius: 0 0 var(--radius) var(--radius);
overflow: hidden;
}

.ict-content .club-card-body h4 {
font-size: 18px;
font-weight: 700;
margin-bottom: 6px;
color: var(--red);
font-family: var(--font-code);
}

.ict-content .club-card-body h4::before {
content: '> ';
color: #22c55e;
}

.ict-content .club-card-body .status-line {
font-family: var(--font-code);
font-size: 11px;
color: var(--gray-500);
margin-bottom: 14px;
background: var(--gray-100);
border-radius: 4px;
padding: 4px 10px;
display: inline-block;
}

.ict-content .club-card-body .status-line .green {
color: #22c55e;
}

.ict-content .club-card-body p {
line-height: 1.9;
margin: 0;
color: var(--txt);
}

.ict-content .photo-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-bottom: 20px;
}

.ict-content .photo-row img {
width: 100%;
border-radius: var(--radius);
aspect-ratio: 16/10;
object-fit: cover;
}

/* ===== ACHIEVEMENT CARDS ===== */
@keyframes scrollCards {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}

.ict-content .achievement-cards {
overflow: hidden;
margin: 20px 0;
padding: 8px 0;
-webkit-mask-image: linear-gradient(to right, transparent 0%, #000 15%, #000 85%, transparent 100%);
mask-image: linear-gradient(to right, transparent 0%, #000 15%, #000 85%, transparent 100%);
}

.ict-content .achievement-cards-track {
display: flex;
width: max-content;
will-change: transform;
animation: scrollCards 45s linear infinite;
}

.ict-content .achievement-cards:hover .achievement-cards-track {
animation-play-state: paused;
}

@media (prefers-reduced-motion: reduce) {
/* finish entry animations instantly (0s would leave opacity-0 elements stuck invisible) */
.ict-content *,
.ict-content *::before,
.ict-content *::after {
animation-duration: .01s !important;
animation-delay: 0s !important;
transition-duration: .01s !important;
}
.ict-content .achievement-cards-track {
animation: none !important;
}
}

.ict-content .achievement-card {
flex: 0 0 auto;
width: 240px;
margin-right: 16px;
min-height: 190px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
background: #fff;
border: 1px solid var(--gray-200);
border-radius: var(--radius);
padding: 28px 22px;
text-align: center;
transition: border-color .3s, box-shadow .3s, transform .3s;
}

.ict-content .achievement-card:nth-child(9n + 1) {
--card-accent: #990000;
}
.ict-content .achievement-card:nth-child(9n + 2) {
--card-accent: #355da5;
}
.ict-content .achievement-card:nth-child(9n + 3) {
--card-accent: #30a791;
}
.ict-content .achievement-card:nth-child(9n + 4) {
--card-accent: #f0a025;
}
.ict-content .achievement-card:nth-child(9n + 5) {
--card-accent: #734921;
}
.ict-content .achievement-card:nth-child(9n + 6) {
--card-accent: #990000;
}
.ict-content .achievement-card:nth-child(9n + 7) {
--card-accent: #355da5;
}
.ict-content .achievement-card:nth-child(9n + 8) {
--card-accent: #30a791;
}
.ict-content .achievement-card:nth-child(9n + 9) {
--card-accent: #f0a025;
}

.ict-content .achievement-card:hover {
border-color: var(--card-accent);
box-shadow: 0 8px 24px rgba(0, 0, 0, .08);
transform: translateY(-4px);
}

.ict-content .achievement-card .achievement-year {
font-family: var(--font-code);
font-size: 32px;
font-weight: 800;
color: var(--card-accent);
margin-bottom: 8px;
display: block;
}

.ict-content .achievement-card .achievement-robot {
font-size: 13px;
line-height: 1.5;
color: var(--gray-500);
margin-bottom: 10px;
letter-spacing: .04em;
display: block;
}

.ict-content .achievement-card .achievement-tournament {
font-size: 15px;
line-height: 1.5;
color: var(--gray-600);
margin-bottom: 8px;
display: block;
flex-grow: 1;
display: flex;
align-items: center;
}

.ict-content .achievement-card .achievement-award {
font-size: 17px;
font-weight: 700;
line-height: 1.5;
color: var(--card-accent);
display: block;
}

/* ===== SLIDESHOW ===== */
.ict-content .slideshow {
position: relative;
overflow: hidden;
border-radius: var(--radius);
background: #111;
margin-bottom: 30px;
}

.ict-content .slide-arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 44px;
height: 44px;
border: none;
border-radius: 50%;
background: rgba(0, 0, 0, .45);
color: #fff;
font-size: 22px;
line-height: 1;
cursor: pointer;
z-index: 4;
transition: background .2s;
}
.ict-content .slide-arrow:hover {
background: rgba(0, 0, 0, .65);
}
.ict-content .slide-arrow--prev {
left: 12px;
}
.ict-content .slide-arrow--next {
right: 12px;
}

.ict-content .slideshow input[type="radio"] {
position: absolute;
opacity: 0;
width: 0;
height: 0;
pointer-events: none;
top: -9999px;
left: -9999px;
}

.ict-content .slides-track {
display: flex;
transition: transform .4s ease-out;
scrollbar-width: none;
}

.ict-content .slides-track::-webkit-scrollbar {
display: none;
}

.ict-content .slides-track .slide {
flex: 0 0 100%;
}

.ict-content .slides-track .slide img {
width: 100%;
aspect-ratio: 16/10;
object-fit: cover;
display: block;
}

.ict-content .slides-nav {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 18px;
background: rgba(0, 0, 0, 0.7);
position: absolute;
bottom: 0;
left: 0;
right: 0;
}

.ict-content .slides-nav .slide-caption {
display: none;
color: #fff;
font-size: 14px;
line-height: 1.5;
flex: 1;
}

.ict-content #slide1:checked ~ .slides-nav .slide-caption:nth-of-type(1) {
display: block;
}
.ict-content #slide2:checked ~ .slides-nav .slide-caption:nth-of-type(2) {
display: block;
}
.ict-content #slide3:checked ~ .slides-nav .slide-caption:nth-of-type(3) {
display: block;
}
.ict-content #slide4:checked ~ .slides-nav .slide-caption:nth-of-type(4) {
display: block;
}
.ict-content #slide5:checked ~ .slides-nav .slide-caption:nth-of-type(5) {
display: block;
}
.ict-content #slide6:checked ~ .slides-nav .slide-caption:nth-of-type(6) {
display: block;
}

.ict-content .slides-nav label {
width: 12px;
height: 12px;
border-radius: 50%;
background: rgba(255, 255, 255, .35);
cursor: pointer;
transition: background .2s;
flex-shrink: 0;
}

.ict-content #slide1:checked ~ .slides-nav label[for="slide1"],
.ict-content #slide2:checked ~ .slides-nav label[for="slide2"],
.ict-content #slide3:checked ~ .slides-nav label[for="slide3"],
.ict-content #slide4:checked ~ .slides-nav label[for="slide4"],
.ict-content #slide5:checked ~ .slides-nav label[for="slide5"],
.ict-content #slide6:checked ~ .slides-nav label[for="slide1"] {
background: var(--red);
}

/* ===== BANNER ===== */
.ict-content .bnrarea {
padding: 70px 20px;
background: var(--gray-100);
position: relative;
overflow: hidden;
}

.ict-content .bnrarea::before {
--gap: 16px;
content: '';
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
background-image:
linear-gradient(rgba(153, 0, 0, 0.025) 1px, transparent 1px),
linear-gradient(90deg, rgba(153, 0, 0, 0.025) 1px, transparent 1px),
linear-gradient(rgba(153, 0, 0, 0.06) 1px, transparent 1px),
linear-gradient(90deg, rgba(153, 0, 0, 0.06) 1px, transparent 1px);
background-size:
var(--gap) var(--gap),
var(--gap) var(--gap),
calc(var(--gap) * 5) calc(var(--gap) * 5),
calc(var(--gap) * 5) calc(var(--gap) * 5);
}

.ict-content .bnrarea::after {
position: absolute;
top: 0;
left: 8%;
right: 8%;
height: 6px;
pointer-events: none;
z-index: 1;
content: '';
background-image: radial-gradient(circle, rgba(153, 0, 0, .45) 2px, transparent 2.5px);
background-size: 18px 6px;
background-repeat: repeat-x;
background-position: center;
}

.ict-content .bnrarea .inner {
max-width: 600px !important;
width: 100% !important;
margin: 0 auto !important;
position: relative;
z-index: 1;
}

.ict-content .bnrarea .bnrlist {
display: flex !important;
gap: 20px !important;
list-style: none !important;
margin: 0 !important;
padding: 0 !important;
}

.ict-content .bnrarea .bnrlist .bnrlist__item {
flex: 1;
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}

.ict-content .bnrarea .bnrlist .bnrlist__item a {
display: flex !important;
align-items: center;
justify-content: center;
gap: 8px;
padding: 18px 28px;
font-family: var(--font);
font-size: 15px;
font-weight: 700;
color: var(--red) !important;
background: #fff !important;
background-color: #fff !important;
opacity: 1 !important;
border: 2px solid var(--red) !important;
border-radius: var(--radius);
text-decoration: none !important;
transition: all .3s ease;
}

.ict-content .bnrarea .bnrlist .bnrlist__item a i {
font-size: 15px;
transition: transform .3s ease;
}

.ict-content .bnrarea .bnrlist .bnrlist__item a:hover {
color: #fff !important;
background: var(--red) !important;
background-color: var(--red) !important;
transform: translateY(-4px);
box-shadow: 0 10px 26px rgba(153, 0, 0, .18);
}

.ict-content .bnrarea .bnrlist .bnrlist__item a:hover i {
transform: translateX(3px);
}

/* ===== FOOTER STATUS ===== */
.ict-content .footer-status {
text-align: center;
padding: 12px 20px;
font-family: var(--font-code);
font-size: 11px;
color: var(--gray-500);
background: var(--gray-100);
border-top: 1px solid var(--gray-200);
line-height: 1.6;
}

@media (max-width: 480px) {
.ict-content .footer-status {
font-size: 10px;
padding: 12px 16px;
}
.ict-content .footer-status .green:last-child {
display: block;
margin-top: 2px;
}
}

.ict-content .footer-status .green {
color: #27c93f;
}

/* ===== PROMPT HEADING ===== */
.ict-content .prompt-heading {
font-family: var(--font-code);
font-size: 16px;
color: var(--txt);
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 16px;
}

.ict-content .prompt-heading .prompt-sign {
color: #22c55e;
font-weight: 400;
}

/* ===== SCROLL REVEAL ===== */
.ict-content .fade-in {
opacity: 0;
transform: translateY(12px);
transition: opacity .6s ease-out, transform .6s ease-out;
}

.ict-content .fade-in.visible {
opacity: 1;
transform: translateY(0);
}

.ict-content .scroll-reveal {
opacity: 0;
transform: translateX(-30px);
transition: opacity .7s ease-out, transform .7s ease-out;
}

.ict-content .scroll-reveal.visible {
opacity: 1;
transform: translateX(0);
}

/* ===== SECTION INDICATOR ===== */
/* This nav sits outside .ict-content in the markup, so it needs its own
   unscoped rules — the .ict-content-scoped versions below never match it. */
nav.sec-indicator {
position: fixed !important;
right: 12px !important;
top: 50% !important;
transform: translateY(-50%) !important;
z-index: 50 !important;
pointer-events: none;
}
nav.sec-indicator ul {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
nav.sec-indicator li {
margin: 8px 0 !important;
padding: 0 !important;
}
nav.sec-indicator a {
display: block !important;
width: 10px !important;
height: 10px !important;
border-radius: 50% !important;
border: 2px solid var(--gray-300) !important;
background: transparent !important;
transition: all .3s;
position: relative;
pointer-events: auto;
}
nav.sec-indicator a span {
display: none !important;
}
nav.sec-indicator a.active {
background: var(--red) !important;
border-color: var(--red) !important;
}
@media (max-width: 768px) {
nav.sec-indicator {
display: none !important;
}
}

.ict-content .sec-indicator {
position: fixed;
right: 12px;
top: 50%;
transform: translateY(-50%);
z-index: 99;
pointer-events: none;
}

.ict-content .sec-indicator ul {
margin: 0;
padding: 0;
}

.ict-content .sec-indicator li {
margin: 8px 0 !important;
padding: 0 !important;
list-style: none !important;
pointer-events: auto;
}

.ict-content .sec-indicator a {
display: block !important;
width: 10px !important;
height: 10px !important;
border-radius: 50% !important;
border: 2px solid var(--gray-300) !important;
background: transparent !important;
transition: all .3s;
position: relative;
}

.ict-content .sec-indicator a.active {
background: var(--red) !important;
border-color: var(--red) !important;
}

.ict-content .sec-indicator a::before {
content: attr(data-label);
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
white-space: nowrap;
font-size: 11px;
color: var(--txt);
background: #fff;
padding: 2px 8px;
border-radius: 4px;
border: 1px solid var(--gray-200);
opacity: 0;
pointer-events: none;
transition: opacity .2s;
}

.ict-content .sec-indicator a:hover::before {
opacity: 1;
}

/* ===== SECTION DIVIDER (static dot trail) ===== */
.ict-content .pcb-divider {
position: absolute;
top: 0;
left: 8%;
right: 8%;
height: 6px;
pointer-events: none;
z-index: 3;
background-image: radial-gradient(circle, var(--dot, rgba(153, 0, 0, .45)) 2px, transparent 2.5px);
background-size: 18px 6px;
background-repeat: repeat-x;
background-position: center;
}

#sec01 .pcb-divider { --dot: rgba(153, 0, 0, .45); }
#sec02 .pcb-divider { --dot: rgba(53, 93, 165, .45); }
#sec03 .pcb-divider { --dot: rgba(48, 167, 145, .45); }
#sec04 .pcb-divider { --dot: rgba(240, 160, 37, .45); }
#sec05 .pcb-divider { --dot: rgba(115, 73, 33, .45); }

/* ===================================================================

RESPONSIVE MEDIA QUERIES (Organized Largest to Smallest)

=================================================================== */

@media (max-width: 1024px) {
.ict-content .contsec .row {
flex-direction: column !important;
gap: 20px;
}
.ict-content .contsec .row .col {
width: 100% !important;
}
.ict-content .contsec .outer .outer__menu {
flex-direction: column !important;
gap: 16px;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item {
min-width: 100% !important;
}
.ict-content .contsec .outer .outer__menu--grid6 {
grid-template-columns: repeat(2, 1fr) !important;
}
.ict-content .menu .contlist .contlist__item {
flex: 0 0 calc(50% - 8px);
}
.ict-content .rits-fetch-inner .ascii-r {
display: none;
}
.ict-content .rits-fetch-overlay .fetch-info {
min-width: 100%;
}
.ict-content .club-card-body .row .col {
padding: 16px !important;
}
.ict-content .club-card-body > div:first-child {
flex-direction: column !important;
}
.ict-content .club-card-body > div:first-child img {
width: 100%;
}
.ict-content .club-card-body img {
aspect-ratio: 16/9;
object-fit: cover;
}
.ict-content .achievement-tournament,
.ict-content .achievement-award {
overflow-wrap: break-word;
}
.ict-content .outer .outer__menu .outer__menu__item div {
overflow-wrap: break-word;
}
}

@media (max-width: 768px) {
/* Layout adjustments */
.ict-content .sec-indicator {
display: none;
}
.ict-content .pcb-divider {
top: -1px;
}
.ict-content .firstview {
padding: 40px 16px;
}
.ict-content .contsec {
padding: 40px 16px;
}
.ict-content .menu {
padding: 40px 16px;
}
.ict-content .bnrarea {
padding: 40px 16px;
}
.ict-content .leadcopy {
max-width: 100% !important;
padding: 0 4px;
}

/* No room for the title's flanking lines beside a near-full-width heading;
   give it a bottom accent bar + spacing instead so it still reads as a title */
.ict-content .firstview .tit-page::before,
.ict-content .firstview .tit-page::after {
display: none;
}
.ict-content .firstview .tit-page {
margin-bottom: 20px !important;
padding-bottom: 16px;
}
.ict-content .firstview .tit-page::after {
display: block;
content: '';
position: static;
width: 48px;
height: 3px;
margin: 16px auto 0;
background: var(--red);
border-radius: 2px;
}

/* Fix tiny photos on mobile by stacking them */
.ict-content .photo-row {
grid-template-columns: 1fr;
gap: 12px;
}

.ict-content .contsec h4 {
font-size: 20px;
}
.ict-content .contsec h5 {
font-size: 18px;
}
.ict-content .firstview .leadcopy {
font-size: 14px;
}
.ict-content .club-card-body h4 {
font-size: 18px;
}
.ict-content .club-card-body .status-line {
font-size: 12px;
}
.ict-content .terminal-body {
font-size: 14px;
}
.ict-content .outer .outer__menu .outer__menu__item div {
font-size: 14px;
}
.ict-content .menu .ttl__h3 {
font-size: 22px;
}

/* Tighter vertical rhythm on small screens */
.ict-content .contsec .contsec__ttl {
margin-bottom: 28px;
}
.ict-content .menu .ttl__h3 {
margin-bottom: 28px;
}
.ict-content .contsec .outer .outer__menu {
margin-bottom: 32px;
}
.ict-content .contsec .borderbox,
.ict-content .contsec .borderbox-style3 {
padding: 18px 16px;
}
.ict-content .club-card {
margin-top: 16px;
}

/* RitsFetch overlay is a desktop easter egg — too large for phones */
.ict-content .rits-fetch-overlay {
display: none !important;
}

/* Example code blocks (VEX / Minecraft) are a desktop extra — hide on phones */
.ict-content .code-header,
.ict-content .code-block {
display: none;
}
/* the paragraph before the hidden code becomes the visual end of its box */
.ict-content p:has(+ .code-header) {
margin-bottom: 0;
}

/* Equipment cards: tighter internals on small screens */
.ict-content .contsec .outer .outer__menu .outer__menu__item div {
padding: 14px 16px 18px;
}
.ict-content .contsec .outer .outer__menu .outer__menu__item span {
font-size: 18px;
margin-bottom: 8px;
}

.ict-content .row .col img {
max-width: 400px;
display: block;
margin: 0 auto;
}

/* Slideshow: move the caption/dot bar below the photo instead of covering it,
   caption on its own line so the dots don't squeeze it out */
.ict-content .slides-nav {
position: static;
flex-wrap: wrap;
justify-content: center;
gap: 6px 8px;
padding: 10px 14px 12px;
}
.ict-content .slides-nav .slide-caption {
flex: 1 1 100%;
order: -1;
text-align: center;
}
/* 12px visual dot with a 26px tap area (transparent border extends the hit zone) */
.ict-content .slides-nav label {
width: 26px;
height: 26px;
border: 7px solid transparent;
background-clip: padding-box;
}

.ict-content .club-card-body {
padding: 20px 16px;
}
}

/* Equipment cards: two columns don't fit below this point */
@media (max-width: 640px) {
.ict-content .contsec .outer .outer__menu--grid6 {
grid-template-columns: 1fr !important;
}
}

@media (max-width: 480px) {
.ict-content .firstview {
padding: 30px 12px;
}
.ict-content .contsec {
padding: 30px 12px;
}
.ict-content .menu {
padding: 30px 12px;
}
.ict-content .menu .contlist .contlist__item {
width: 100%;
}
.ict-content .bnrarea {
padding: 30px 12px;
}
/* Keep the two banner buttons side by side: compact them and drop the
   decorative dash arrows so both fit on a narrow screen */
.ict-content .bnrarea .bnrlist {
gap: 10px;
}
.ict-content .bnrarea .bnrlist .bnrlist__item a {
padding: 14px 14px;
font-size: 13px;
gap: 6px;
}
}

@media (max-width: 768px) {
    .ict-content .terminal-wrap {
        display: none !important;
    }
}
