/* ============================================================
   Landing page: Khóa học tiếng Anh IELTS cho học sinh cấp 2
   Prefix: .c2-
   ============================================================ */

.c2-page {
    --c2-red: var(--LG, #d72229);
    --c2-red-dark: #b01b21;
    --c2-blue: #1a5fa8;
    --c2-orange: #f5a623;
    --c2-yellow: #ffd54a;
}

/* ---------- Section 1: Hero ---------- */
.c2-hero {
    padding: 30px 20px 0;
}

.c2-hero-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 460px;
    align-items: center;
    gap: 40px;
}

.c2-hero-left {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.c2-hero-badge {
    display: inline-block;
    margin: 0;
    padding: 12px 30px;
    border: 1px solid #fdf7f7;
    border-radius: 33px;
    background: #fdf7f7;
    color: var(--c2-red);
    font-weight: 700;
    font-size: 26px;
    line-height: 1;
    letter-spacing: 0;
}

/*
 * Chữ lớn có viền trắng + đổ bóng, dựng bằng 2 lớp:
 *  - Thẻ gốc: chữ trắng + text-stroke trắng => khối viền (stroke vẽ giữa nét nên khai gấp đôi).
 *  - ::after: dựng lại đúng chữ đó bằng attr(data-text), tô màu/gradient, chồng lên trên.
 * drop-shadow đặt ở thẻ gốc nên bóng bám theo hình chữ, không phải hình hộp.
 */
.c2-hero-title,
.c2-hero-tagline {
    position: relative;
    z-index: 0;
    letter-spacing: 0;
    color: #fff;
    filter: drop-shadow(0 6px 11.6px rgba(0, 0, 0, 0.25));
    /* Text-stroke + background-clip:text hay rung tren iOS khi co lop khac ve de
       => day len compositing layer rieng va khoa antialias */
    transform: translateZ(0);
    -webkit-font-smoothing: antialiased;
    backface-visibility: hidden;
}

/* padding dưới nới rộng để dấu nặng/dấu móc không thò ra ngoài hộp nền (gradient sẽ phủ hết) */
.c2-hero-title::after,
.c2-hero-tagline::after {
    content: attr(data-text);
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    padding: 0.05em 0 0.24em;
    -webkit-text-stroke: 0;
    pointer-events: none;
}

/*
 * --c2-thicken: làm dày nét chữ (font chỉ có tới Bold 700, không có bản Heavy).
 * --c2-outline: bề dày viền trắng NHÌN THẤY, tính từ mép nét đã làm dày.
 * Stroke vẽ giữa nét nên: stroke thẻ gốc = thicken + outline * 2.
 */
.c2-hero-title {
    --c2-thicken: 2px;
    /* Figma ghi 4.8px, nhưng quầng trắng của chữ và của dấu nặng sẽ chạm nhau
       khiến dấu trông như dính vào chữ — 2.5px là mức dày nhất còn tách rời được. */
    --c2-outline: 2.5px;
    margin: 20px 0 0;
    padding: 0.05em 0 0.24em;
    font-weight: 900;
    font-size: 80px;
    line-height: 1;
    /* bù khoảng cách đúng bằng phần nét phình ra để chữ không dính nhau */
    letter-spacing: var(--c2-thicken);
    -webkit-text-stroke: calc(var(--c2-thicken) + var(--c2-outline) * 2) #fff;
}

.c2-hero-title::after {
    -webkit-text-stroke-width: var(--c2-thicken);
    background-image: linear-gradient(180deg, #e89100 0%, #d72229 65.87%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.c2-hero-tagline {
    margin: 12px 0 0;
    padding: 0.05em 0 0.24em;
    font-weight: 700;
    font-size: 42px;
    line-height: 1;
    -webkit-text-stroke: 5px #fff;
}

.c2-hero-tagline::after {
    color: var(--c2-red);
}

.c2-hero-desc {
    max-width: 620px;
    margin: 20px 0 0;
    color: #000;
    font-weight: 600;
    font-size: 22px;
    line-height: 24px;
}

.c2-hero-cta {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 20px;
    margin-top: 26px;
}

.c2-btn {
    padding: 15px 34px;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0.4px;
}

.c2-btn-primary {
    background: var(--c2-red);
    color: #fff;
}

.c2-btn-primary:hover {
    background: var(--c2-red-dark);
    border-color: var(--c2-red-dark);
}

.c2-btn-outline {
    background: #fff;
    color: var(--c2-red);
}

.c2-btn-outline:hover {
    background: var(--color-primary-hover, rgba(215, 34, 41, 0.08));
}

/* ---------- Hero: ảnh bên phải + 2 chip nổi ---------- */
/* Cột rộng hơn ảnh để 2 chip nhô ra hai bên mà không tràn khỏi container */
.c2-hero-right {
    position: relative;
    display: flex;
    justify-content: center;
}

.c2-hero-img {
    display: block;
    width: 400px;
    max-width: 100%;
    height: auto;
}

.c2-hero-chip {
    position: absolute;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 10px;
    width: 202px;
    height: 76px;
    padding: 0 12px;
    border: 1px solid var(--Cam, rgba(250, 166, 26, 1));
    border-radius: 10px;
    background: rgba(253, 247, 247, 1);
    box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);
}

.c2-hero-chip-icon {
    display: inline-flex;
    flex-shrink: 0;
}

.c2-hero-chip-text {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.c2-hero-chip-main {
    color: #000;
    font-weight: 700;
    font-size: 16px;
    line-height: 1;
    letter-spacing: 0;
}

.c2-hero-chip-sub {
    color: #000;
    font-weight: 500;
    font-size: 16px;
    line-height: 1;
    letter-spacing: 0;
}

/*
 * -25% (~115px) nhô ra ngoài container 1300px. Khoảng trống hai bên container chỉ có
 * (100vw - 1300px)/2, nên kẹp lại theo viewport để chip không bị cắt ở màn hẹp.
 */
.c2-hero-chip-fee {
    top: 10%;
    right: calc(-1 * min(25%, (100vw - 1340px) / 2));
}

.c2-hero-chip-commit {
    bottom: -2%;
    left: -16%;
}

/* ---------- Hero: dải cam kết đỏ ---------- */
.c2-strip {
    display: flex;
    align-items: center;
    gap: 30px;
    height: 95px;
    margin-top: 40px;
    padding: 0 30px;
    border-radius: 12px;
    background: rgba(215, 34, 41, 1);
}

.c2-strip-title {
    flex-shrink: 0;
    margin: 0;
    padding: 12px 30px 12px 0;
    border-right: 2px solid #fff;
    color: #fff;
    font-weight: 700;
    font-size: 32px;
    line-height: 1;
    letter-spacing: 0.05em;
    -webkit-text-stroke: 1px var(--Cam, #faa61a);
    text-shadow: 0 3px 6px rgba(0, 0, 0, 0.25);
}

/*
 * Mỗi hàng 2 mục, tự canh giữa theo độ dài chữ của chính hàng đó (không chia cột đều).
 * .c2-strip-break là phần tử rỗng ép xuống dòng sau mục thứ 2.
 */
.c2-strip-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-content: center;
    gap: 12px 40px;
    margin: 0;
    padding: 0;
    list-style: none;
    flex: 1;
}

.c2-strip-break {
    flex-basis: 100%;
    height: 0;
    margin: 0;
}

.c2-strip-item {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #fff;
    font-weight: 700;
    font-size: 18px;
    line-height: 1;
    letter-spacing: 0;
    white-space: nowrap;
}

.c2-strip-item img {
    flex-shrink: 0;
}

/* ---------- Section 2: Đầu vào - Đầu ra ---------- */
/* Không padding ngang để lưới dùng trọn 1300px của .w-1300 */
.c2-journey {
    padding: 0;
}

.c2-journey-title {
    margin: 0;
    color: rgba(215, 34, 41, 1);
    font-weight: 700;
    font-size: 38px;
    line-height: 1;
    letter-spacing: 0;
    text-align: center;
    text-transform: uppercase;
}

.c2-journey-subtitle {
    margin: 14px 0 0;
    color: #000;
    font-weight: 500;
    font-size: 18px;
    line-height: 20px;
    letter-spacing: 0;
    text-align: center;
}

/* ĐẦU VÀO 585px + khe 75px + ĐẦU RA 642px = 1302px, khớp khung 1300px của .w-1300 */
.c2-journey-grid {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 585px) minmax(0, 642px);
    justify-content: center;
    align-items: stretch;
    gap: 75px;
    margin-top: 34px;
}

.c2-jcard {
    display: flex;
    flex-direction: column;
    min-height: 365px;
    border-radius: 20px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
}

.c2-jcard-head {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 24px;
}

.c2-jcard-in .c2-jcard-head {
    background: rgba(238, 140, 34, 1);
}

.c2-jcard-out .c2-jcard-head {
    background: rgba(215, 34, 41, 1);
}

.c2-jcard-icon {
    display: inline-flex;
    flex-shrink: 0;
}

/* Kích thước lấy theo width/height khai trong thẻ img, không ép bằng CSS */
.c2-jcard-icon img,
.c2-hero-chip-icon img {
    display: block;
}

.c2-journey-arrow img {
    display: block;
}

.c2-jcard-head-text {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.c2-jcard-name {
    color: #fff;
    font-weight: 700;
    font-size: 28px;
    line-height: 1;
    letter-spacing: 0;
    text-transform: uppercase;
}

.c2-jcard-note {
    color: #fff;
    font-weight: 500;
    font-size: 20px;
    line-height: 1;
    letter-spacing: 0;
}

.c2-jcard-list {
    flex: 1;
    margin: 0;
    padding: 22px 24px 26px;
    list-style: none;
    background: rgba(253, 247, 247, 1);
}

.c2-jcard-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    color: #000;
    font-weight: 500;
    font-size: 18px;
    line-height: 22px;
    letter-spacing: 0;
}

.c2-jcard-item + .c2-jcard-item {
    margin-top: 16px;
}

.c2-jcard-item svg {
    flex-shrink: 0;
    margin-top: 3px;
}

/*
 * Hai cột lệch nhau (585/642) nên tâm khe KHÔNG nằm ở 50%.
 * Phần chia cho cột = 100% - gap; cột trái chiếm 585/1227 phần đó, cộng nửa gap.
 */
.c2-journey-arrow {
    position: absolute;
    top: 50%;
    left: calc((100% - 75px) * 585 / 1227 + 75px / 2);
    transform: translate(-50%, -50%);
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--c2-red);
    box-shadow: 0 4px 12px rgba(215, 34, 41, 0.35);
}

.c2-journey-cta {
    display: flex;
    justify-content: center;
    margin-top: 34px;
}

/* ---------- Section 3: Hành trình 6 trạm ---------- */
.c2-road-section {
    padding: 0 20px;
}

.c2-road-title {
    margin: 0;
    line-height: 1.2;
}

.c2-road-subtitle {
    margin: 14px 0 0;
    line-height: 1.6;
}

/* padding-top chừa chỗ cho icon tròn nhô lên trên thẻ hàng 1 */
.c2-road {
    position: relative;
    margin-top: 40px;
    padding-top: 92px;
}

.c2-road-line {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    pointer-events: none;
}

/*
 * Lưới 19 cột: mỗi thẻ chiếm 4 cột, thẻ kế tiếp dịch sang 3 cột
 * => bề ngang thẻ 4/19 và bước nhảy 3/19, đúng tỉ lệ so le trong thiết kế.
 */
.c2-road-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(19, minmax(0, 1fr));
    row-gap: 30px;
}

.c2-stop {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

.c2-stop-1 { grid-row: 1; grid-column: 1 / span 4; }
.c2-stop-3 { grid-row: 1; grid-column: 7 / span 4; }
.c2-stop-5 { grid-row: 1; grid-column: 13 / span 4; }
.c2-stop-2 { grid-row: 2; grid-column: 4 / span 4; }
.c2-stop-4 { grid-row: 2; grid-column: 10 / span 4; }
.c2-stop-6 { grid-row: 2; grid-column: 16 / span 4; }

/* Icon nằm trên đầu mũi của đường zigzag, canh giữa thẻ */
.c2-stop-icon {
    position: absolute;
    top: -84px;
    left: 50%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    margin-left: -36px;
    border-radius: 50%;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
}

/* Icon là phần hình bên trong, nền tròn màu do CSS vẽ */
.c2-stop-icon img {
    display: block;
}

.c2-stop-head {
    margin: 0;
    padding: 13px 12px;
    border-radius: 10px 10px 0 0;
    color: #fff;
    text-transform: uppercase;
    font-weight: 700;
    font-size: 24px;
    line-height: 22px;
    letter-spacing: 0;
    text-align: center;
}

.c2-stop-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 14px 16px 16px;
    text-align: center;
}

.c2-stop-band {
    margin: 0;
    color: #000;
    font-weight: 700;
    font-size: 18px;
    line-height: 21px;
    letter-spacing: 0;
}

.c2-stop-desc {
    flex: 1;
    margin: 10px 0 0;
    color: #000;
    font-weight: 500;
    font-size: 18px;
    line-height: 21px;
    letter-spacing: 0;
}

.c2-stop-time {
    margin: 14px 0 0;
    padding-top: 12px;
    border-top: 1px solid #e6e2d8;
    color: #000;
    font-weight: 700;
    font-size: 18px;
    line-height: 21px;
    letter-spacing: 0;
}

/* Chip "Cam kết" nằm ngang tầm icon, lệch sang phải icon của thẻ CHAMPION */
.c2-stop-commit {
    position: absolute;
    top: -62px;
    left: 68%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 152px;
    height: 40px;
    border: 1px solid var(--Cam, rgba(250, 166, 26, 1));
    border-radius: 10px;
    background: rgba(253, 247, 247, 1);
    color: var(--c2-red);
    font-weight: 700;
    font-size: 14px;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}

/* Thang màu 6 trạm: vàng → đỏ */
.c2-stop-1 .c2-stop-head, .c2-stop-1 .c2-stop-icon { background: #f5b921; }
.c2-stop-2 .c2-stop-head, .c2-stop-2 .c2-stop-icon { background: #f2a41e; }
.c2-stop-3 .c2-stop-head, .c2-stop-3 .c2-stop-icon { background: #f08a1c; }
.c2-stop-4 .c2-stop-head, .c2-stop-4 .c2-stop-icon { background: #ec7a1b; }
.c2-stop-5 .c2-stop-head, .c2-stop-5 .c2-stop-icon { background: #e2601c; }
.c2-stop-6 .c2-stop-head, .c2-stop-6 .c2-stop-icon { background: var(--c2-red); }

/* ---------- Section 4: Phương pháp GRIT ---------- */
.c2-grit {
    padding: 0 20px;
}

.c2-grit-panel {
    position: relative;
    overflow: hidden;
    padding: 46px 50px 44px;
    border-radius: 24px;
    background:
        repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 58px),
        repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.045) 0 1px, transparent 1px 58px),
        linear-gradient(135deg, #c1141b 0%, #9d1015 100%);
}

/* Vệt sáng chéo góc trên phải */
.c2-grit-panel::before {
    content: "";
    position: absolute;
    top: -40%;
    right: -10%;
    width: 70%;
    height: 180%;
    transform: rotate(24deg);
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0) 100%);
    pointer-events: none;
}

.c2-grit-panel > * {
    position: relative;
    z-index: 1;
}

.c2-grit-title {
    margin: 0;
    color: #fff;
    font-weight: 800;
    font-size: 38px;
    line-height: 1;
    letter-spacing: 0;
    text-align: center;
}

.c2-grit-tagline {
    margin: 10px 0 0;
    color: rgba(250, 166, 26, 1);
    font-weight: 800;
    font-size: 28px;
    line-height: 1;
    letter-spacing: 0;
    text-align: center;
}

.c2-grit-desc {
    margin: 16px 0 0;
    color: #fff;
    font-weight: 500;
    font-size: 18px;
    line-height: 22px;
    letter-spacing: 0;
    text-align: center;
}

.c2-grit-grid {
    display: grid;
    grid-template-columns: repeat(4, 245px);
    justify-content: center;
    gap: 52px;
    margin-top: 40px;
}

/* padding-top chừa chỗ cho chữ G/R/I/T 150px nhô lên trên thẻ */
.c2-grit-col {
    position: relative;
    display: flex;
    flex-direction: column;
    padding-top: 110px;
}

/*
 * Chữ viền: thẻ gốc vẽ nét trắng dày gấp đôi (5.8 * 2), ::after chồng lên
 * phần ruột màu đỏ — cùng kỹ thuật với tiêu đề hero.
 */
.c2-grit-letter {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    color: #fff;
    font-weight: 800;
    font-size: 150px;
    line-height: 1;
    letter-spacing: 0;
    -webkit-text-stroke: 11.6px #fff;
    pointer-events: none;
    user-select: none;
}

.c2-grit-letter::after {
    content: attr(data-text);
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    color: rgba(251, 40, 48, 1);
    -webkit-text-stroke: 0;
}

.c2-grit-card {
    position: relative;
    z-index: 1;
    flex: 1;
    min-height: 319px;
    padding: 48px 12px 26px;
    border-radius: 25px;
    background: rgba(251, 40, 48, 1);
}

.c2-grit-name {
    margin: 0;
    color: #fff;
    font-weight: 800;
    font-size: 28px;
    line-height: 30px;
    letter-spacing: 0;
    text-align: center;
    white-space: nowrap;
}

.c2-grit-sub {
    margin: 0;
    color: #fff;
    font-weight: 700;
    font-size: 22px;
    line-height: 30px;
    letter-spacing: 0;
    text-align: center;
    white-space: nowrap;
}

.c2-grit-text {
    margin: 16px 0 0;
    color: #fff;
    font-weight: 500;
    font-size: 18px;
    line-height: 20px;
    letter-spacing: 0;
    text-align: justify;
}

.c2-grit-cta {
    display: flex;
    justify-content: center;
    margin-top: 34px;
}

.c2-btn-light {
    background: #fff;
    border-color: #fff;
    color: var(--c2-red);
}

.c2-btn-light:hover {
    background: #fff5f5;
    border-color: #fff5f5;
}

/* ---------- Form đăng ký riêng của trang ---------- */
.c2-form-section {
    position: relative;
    padding: 46px 20px;
    background-color: var(--box, #fdf7f7);
    /* Ảnh nguồn đã được làm mờ sáng sẵn nên không phủ thêm lớp trắng */
    background-image: url("/images-new/khoa-hoc-cap-2/form-bg.webp");
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.c2-form-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 470px;
    align-items: center;
    gap: 50px;
    max-width: 1160px;
    margin: 0 auto;
}

.c2-form-heading {
    margin: 0;
    font-size: 32px;
    line-height: 1.3;
}

.c2-form-note {
    margin: 18px 0 0;
    line-height: 1.6;
}

.c2-form-benefits {
    margin: 20px 0 0;
    padding: 0;
    list-style: none;
}

.c2-form-benefit {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    line-height: 1.6;
}

.c2-form-benefit + .c2-form-benefit {
    margin-top: 12px;
}

.c2-form-benefit svg {
    flex-shrink: 0;
    margin-top: 3px;
}

.c2-form-card {
    padding: 26px 28px 24px;
    border: 1px solid var(--c2-red);
    border-radius: 16px;
    background: #fff;
    box-shadow: var(--shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.1));
}

.c2-form-card-title {
    margin: 0;
    line-height: 1.3;
}

.c2-form-card-desc {
    margin: 8px 0 0;
    line-height: 1.6;
    color: var(--color-text-light, #666);
}

.c2-form {
    margin-top: 18px;
}

.c2-field + .c2-field {
    margin-top: 14px;
}

.c2-label {
    display: block;
    margin-bottom: 6px;
}

.c2-input {
    display: block;
    width: 100%;
    height: 46px;
    padding: 0 18px;
    border: 1px solid #f3c2c4;
    border-radius: 33px;
    background: #fff;
    color: var(--color-text-base, #333);
    font-family: inherit;
    outline: none;
    transition: border-color 0.25s;
}

.c2-input::placeholder {
    color: var(--color-text-placeholder, #999);
}

.c2-input:focus {
    border-color: var(--c2-red);
}

.c2-select {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 42px;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9' fill='none'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 18px center;
}

/* Chỉ làm mờ khi chưa chọn (placeholder); các option trong dropdown giữ màu chữ bình thường */
.c2-select:invalid {
    color: var(--color-text-placeholder, #999);
}

.c2-select option {
    color: var(--color-text-base, #333);
}

.c2-select option[value=""] {
    color: var(--color-text-placeholder, #999);
}

.c2-toggle {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.c2-toggle-btn {
    height: 44px;
    padding: 0 12px;
    border: 1px solid var(--c2-red);
    border-radius: 33px;
    background: #fff;
    color: var(--c2-red);
    font-family: inherit;
    cursor: pointer;
    transition: all 0.25s;
}

.c2-toggle-btn.active {
    background: var(--c2-red);
    color: #fff;
}

.c2-form .alert {
    margin-top: 14px;
    padding: 10px 14px;
    border-radius: 8px;
    font-size: 14px;
}

.c2-submit {
    width: 100%;
    height: 52px;
    margin-top: 20px;
    border: none;
    background: var(--c2-red);
    letter-spacing: 0.5px;
}

.c2-submit:hover {
    background: var(--c2-red-dark);
}

.c2-form-policy {
    margin: 12px 0 0;
    color: var(--color-text-light, #666);
}

.c2-form .has-error .c2-input {
    border-color: var(--c2-red);
}

/* ---------- Responsive ---------- */
@media (max-width: 1200px) {
    .c2-hero-inner {
        grid-template-columns: minmax(0, 1fr) 460px;
        gap: 30px;
    }

    .c2-hero-img {
        width: 350px;
    }

    .c2-hero-badge {
        padding: 10px 24px;
        font-size: 21px;
    }

    .c2-hero-title {
        font-size: 62px;
        --c2-thicken: 1.6px;
        --c2-outline: 1.9px;
    }

    .c2-hero-tagline {
        font-size: 33px;
        -webkit-text-stroke-width: 6px;
    }

    .c2-stop-commit {
        right: -20px;
    }
}

@media (max-width: 1024px) {
    .c2-hero-inner {
        grid-template-columns: minmax(0, 1fr);
        gap: 34px;
    }

    .c2-hero-img {
        width: 340px;
    }

    .c2-hero-chip {
        width: 180px;
        height: 68px;
        gap: 8px;
    }

    .c2-hero-chip-main,
    .c2-hero-chip-sub {
        font-size: 14px;
    }

    /* Cột trải hết chiều ngang: đẩy chip ra sát mép ảnh, chỉ chồng nhẹ 40px */
    .c2-hero-chip-fee {
        top: 8%;
        right: auto;
        left: calc(50% + 130px);
    }

    .c2-hero-chip-commit {
        bottom: 8%;
        left: auto;
        right: calc(50% + 130px);
    }

    .c2-hero-badge {
        padding: 9px 20px;
        font-size: 18px;
    }

    .c2-hero-title {
        font-size: 48px;
        --c2-thicken: 1.2px;
        --c2-outline: 1.5px;
    }

    .c2-hero-tagline {
        font-size: 26px;
        -webkit-text-stroke-width: 4.6px;
    }

    .c2-hero-desc {
        font-size: 18px;
        line-height: 1.5;
    }

    .c2-strip {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
        height: auto;
        padding: 20px;
    }

    .c2-strip-title {
        width: 100%;
        padding: 0 0 14px;
        border-right: none;
        border-bottom: 2px solid #fff;
        white-space: nowrap;
        font-size: min(24px, calc((100vw - 70px) / 14.6));
        text-align: center;
    }

    .c2-strip-item {
        font-size: 16px;
    }

    /* Xếp dọc: canh trái cho dễ đọc, bỏ ngắt dòng ép của bản desktop */
    .c2-strip-list {
        width: 100%;
        gap: 10px 20px;
        justify-content: flex-start;
    }

    .c2-strip-break {
        display: none;
    }

    .c2-strip-item {
        align-items: flex-start;
        white-space: normal;
        line-height: 1.25;
        text-align: left;
    }

    .c2-strip-item img {
        margin-top: 2px;
    }

    .c2-journey-title {
        font-size: 30px;
    }

    .c2-journey-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 46px;
    }

    .c2-jcard {
        min-height: 0;
    }

    /* 1 cột: thẻ cao thấp khác nhau nên mũi tên không còn điểm neo hợp lý */
    .c2-journey-arrow {
        display: none;
    }

    .c2-road-line {
        display: none;
    }

    .c2-road {
        padding-top: 80px;
    }

    .c2-road-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 110px 24px;
    }

    .c2-stop {
        grid-row: auto !important;
        grid-column: span 1 !important;
    }

    .c2-stop-head {
        font-size: 20px;
    }

    .c2-stop-commit {
        top: -46px;
        left: auto;
        right: 8px;
    }

    .c2-grit-panel {
        padding: 34px 24px 36px;
        border-radius: 18px;
    }

    .c2-grit-grid {
        grid-template-columns: repeat(2, 245px);
        gap: 30px;
        margin-top: 36px;
    }

    .c2-grit-letter {
        font-size: 120px;
        -webkit-text-stroke-width: 9px;
    }

    .c2-grit-col {
        padding-top: 88px;
    }

    .c2-form-inner {
        grid-template-columns: minmax(0, 1fr);
        gap: 28px;
    }

    .c2-form-heading {
        font-size: 26px;
        text-align: center;
    }

    .c2-form-note {
        text-align: center;
    }

    .c2-form-benefits {
        max-width: 420px;
        margin-left: auto;
        margin-right: auto;
    }
}

@media (max-width: 768px) {
    .c2-hero {
        padding: 20px 15px 0;
    }

    /*
     * Giữ 1 dòng ở mọi bề ngang: nowrap + cỡ chữ tự co theo viewport.
     * Hệ số 21 và 18.5 đo từ bề rộng thật của chuỗi trong font SVN-Gilroy.
     */
    .c2-hero-badge {
        padding: 8px 16px;
        white-space: nowrap;
        font-size: min(15px, calc((100vw - 102px) / 21));
    }

    .c2-hero-title {
        white-space: nowrap;
        font-size: min(45px, calc((100vw - 70px) / 6.9));
        --c2-thicken: 1.1px;
        --c2-outline: 1.4px;
    }

    .c2-hero-tagline {
        white-space: nowrap;
        font-size: min(20px, calc((100vw - 70px) / 18.5));
        -webkit-text-stroke-width: 3.6px;
    }

    .c2-hero-desc {
        font-size: 16px;
        line-height: 1.5;
    }

    .c2-hero-cta {
        gap: 12px;
    }

    .c2-btn {
        padding: 13px 24px;
        font-size: 14px;
    }

    .c2-strip-list {
        grid-template-columns: minmax(0, 1fr);
    }

    .c2-journey {
        padding: 0 15px;
    }

    .c2-journey-title {
        white-space: nowrap;
        font-size: min(20px, calc((100vw - 30px) / 19.5));
    }

    .c2-journey-subtitle {
        font-size: 16px;
        line-height: 1.5;
    }

    .c2-jcard-head {
        padding: 14px 18px;
    }

    .c2-jcard-name {
        font-size: 22px;
    }

    .c2-jcard-note {
        font-size: 17px;
    }

    .c2-jcard-list {
        padding: 18px 18px 22px;
    }

    .c2-jcard-item {
        font-size: 16px;
        line-height: 20px;
    }

    .c2-road-section {
        padding: 0 15px;
    }

    /*
     * Timeline dọc: vòng tròn ở rãnh bên trái, nét đứt nối các vòng tròn,
     * thẻ nội dung nằm bên phải.
     */
    .c2-road {
        padding-top: 0;
    }

    .c2-road-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 28px;
    }

    .c2-stop {
        margin-left: 64px;
    }

    .c2-stop-icon {
        top: 0;
        left: -64px;
        width: 48px;
        height: 48px;
        margin-left: 0;
    }

    /* Vòng tròn nhỏ còn 48px nên thu icon theo, giữ nguyên tỉ lệ */
    .c2-stop-icon img {
        width: auto;
        height: auto;
        max-width: 62%;
        max-height: 62%;
    }

    .c2-stop:not(:last-child)::after {
        content: "";
        position: absolute;
        left: -41px;
        top: 54px;
        bottom: -28px;
        width: 0;
        border-left: 3px dashed rgba(230, 226, 216, 1);
    }

    /* Timeline dọc không còn chỗ trống cạnh thẻ để chip này đứng */
    .c2-stop-commit {
        display: none;
    }

    .c2-stop-head {
        font-size: 19px;
    }

    .c2-stop-band,
    .c2-stop-desc,
    .c2-stop-time {
        font-size: 16px;
        line-height: 20px;
    }

    .c2-grit {
        padding: 0 15px;
    }

    .c2-grit-panel {
        padding: 28px 18px 30px;
    }

    .c2-grit-title {
        font-size: 22px !important;
    }

    .c2-grit-tagline {
        font-size: 17px !important;
    }

    .c2-grit-grid {
        grid-template-columns: repeat(2, 245px);
        gap: 24px;
    }

    .c2-grit-col {
        padding-top: 72px;
    }

    .c2-grit-letter {
        font-size: 100px;
        -webkit-text-stroke-width: 7px;
    }

    .c2-grit-card {
        min-height: 0;
    }

    .c2-grit-name {
        font-size: 24px;
    }

    .c2-grit-sub {
        font-size: 19px;
    }

    .c2-grit-text {
        text-align: center;
    }

    .c2-form-section {
        padding: 32px 15px;
    }

    .c2-form-heading {
        font-size: 22px;
    }

    .c2-form-card {
        padding: 20px 18px 18px;
    }

    .c2-form-card-title {
        font-size: 19px !important;
    }
}

/* Màn hẹp: chip hero rời khỏi ảnh, xếp xuống dưới cho đỡ che mặt học viên */
@media (max-width: 700px) {
    /* Ảnh full chiều ngang, 2 chip xuống dưới nằm cạnh nhau cho gọn */
    .c2-hero-right {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
        max-width: 420px;
        margin: 0 auto;
    }

    .c2-hero-img {
        grid-column: 1 / -1;
        width: 100%;
        max-width: 100%;
    }

    .c2-hero-chip {
        position: static;
        width: 100%;
        max-width: none;
        height: auto;
        gap: 8px;
        padding: 10px;
    }

    .c2-hero-chip-main,
    .c2-hero-chip-sub {
        font-size: 14px;
    }

    .c2-strip-title {
        font-size: min(20px, calc((100vw - 70px) / 14.6));
    }

    .c2-strip-item {
        font-size: 15px;
    }

    .c2-jcard-head {
        gap: 10px;
        padding: 12px 14px;
    }

    .c2-jcard-name {
        font-size: 20px;
    }

    .c2-jcard-note {
        font-size: 15px;
    }

    .c2-jcard-item {
        font-size: 15px;
        line-height: 19px;
    }

    .c2-stop-head {
        font-size: 18px;
    }

    .c2-grit-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .c2-grit-card {
        min-height: 0;
        padding: 42px 16px 22px;
    }

    /* Bỏ nowrap để tên thẻ tự xuống dòng khi màn quá hẹp */
    .c2-grit-name,
    .c2-grit-sub {
        white-space: normal;
    }

    .c2-grit-name {
        font-size: 22px;
        line-height: 26px;
    }

    .c2-grit-sub {
        font-size: 18px;
        line-height: 26px;
    }

    .c2-grit-letter {
        font-size: 88px;
        -webkit-text-stroke-width: 6px;
    }

    .c2-grit-col {
        padding-top: 64px;
    }

    .c2-form-heading {
        font-size: 20px;
    }

    .c2-toggle {
        gap: 10px;
    }
}

/* Điện thoại nhỏ: 2 chip không đủ chỗ nằm cạnh nhau nữa */
@media (max-width: 400px) {
    .c2-hero-right {
        grid-template-columns: minmax(0, 1fr);
    }

    .c2-hero-chip {
        max-width: 300px;
        margin: 0 auto;
    }
}

/* ============================================================
   Hiệu ứng
   - .c2-js-anim chỉ được JS gắn vào khi chạy được => không JS thì
     nội dung hiện bình thường, không bao giờ bị ẩn vĩnh viễn.
   ============================================================ */
.c2-js-anim .c2-reveal {
    opacity: 0;
    transform: translateY(26px);
}

.c2-js-anim .c2-reveal.is-in {
    opacity: 1;
    transform: none;
    transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Ảnh hero trôi nhẹ lên xuống */
@keyframes c2-float {
    0%,
    100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

.c2-hero-img {
    animation: c2-float 5s ease-in-out infinite;
}

/* Thẻ nhấc lên khi rê chuột */
.c2-jcard,
.c2-stop,
.c2-grit-card {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.c2-jcard:hover,
.c2-stop:hover {
    transform: translateY(-6px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}

.c2-grit-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 26px rgba(0, 0, 0, 0.28);
}

/* Icon trạm xoay nhẹ khi rê vào thẻ */
.c2-stop-icon {
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.c2-stop:hover .c2-stop-icon {
    transform: translateY(-4px) scale(1.06);
}

.c2-hero-chip {
    transition: transform 0.3s ease;
}

.c2-hero-chip:hover {
    transform: translateY(-3px);
}

/* Tôn trọng thiết lập giảm chuyển động của hệ điều hành */
@media (prefers-reduced-motion: reduce) {
    .c2-js-anim .c2-reveal,
    .c2-js-anim .c2-reveal.is-in {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .c2-hero-img {
        animation: none;
    }

    .c2-jcard,
    .c2-stop,
    .c2-grit-card,
    .c2-stop-icon,
    .c2-hero-chip {
        transition: none;
    }
}

/* Section giảng viên dùng chung: chỉ thu khoảng cách nút trong phạm vi trang này */
.c2-page .teacher-cta {
    margin-top: 30px;
}
