    /* === Base Typography === */
    body {
        font-weight: 300;
        font-family: "Noto Sans JP", "Noto Sans", sans-serif;
    }
    p {
        font-weight: 300;
    }

    /* === Section Headings === */
    .eng-subtitle {
        font-family: "Roboto", sans-serif;
        font-size: 14px;
        font-weight: 500;
        color: #b6b6b6;
        letter-spacing: 0.2em;
        text-transform: uppercase;
        margin-bottom: 12px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 16px;
    }
    .line-deco {
        display: block;
        width: 40px;
        height: 1px;
        background: #ccc;
    }
    .section-title {
        font-size: 32px;
        font-weight: 700;
        color: #333;
        letter-spacing: 0.15em;
        margin-bottom: 48px;
    }
    .section-desc {
        font-size: 15px;
        line-height: 2;
        color: #666;
        text-align: left;
        max-width: 720px;
        margin: 0 auto;
    }
    .section-desc p + p {
        margin-top: 24px;
    }
    .ict-green {
        color: #2196f3;
        font-weight: 700;
    }

    /* === Elementor animate.css @keyframes (exact copy) === */
    @keyframes fadeInRight {
        from {
            opacity: 0;
            transform: translate3d(100%, 0, 0);
        }
        to {
            opacity: 1;
            transform: translate3d(0, 0, 0);
        }
    }
    @keyframes fadeInLeft {
        from {
            opacity: 0;
            transform: translate3d(-100%, 0, 0);
        }
        to {
            opacity: 1;
            transform: translate3d(0, 0, 0);
        }
    }
    @keyframes fadeInUp {
        0% {
            opacity: 0;
            transform: translateY(100px);
        }
        100% {
            opacity: 1;
            transform: translateY(0);
        }
    }

    /* === Elementor .animated classes (exact copy) === */
    .elementor-invisible {
        visibility: hidden;
    }
    .animated {
        animation-duration: 1.25s;
        animation-fill-mode: both;
    }
    .animated.animated-slow {
        animation-duration: 2s;
    }
    .animated.fadeInRight {
        animation-name: fadeInRight;
    }
    .animated.fadeInLeft {
        animation-name: fadeInLeft;
    }
    .animated.fadeInUp {
        animation-name: fadeInUp;
    }

    /* === Parallax Background Sections === */
    .course-bg-section {
        position: relative;
        padding: 80px 0;
        background-size: cover;
        background-position: center;
        background-attachment: fixed;
        overflow: hidden;
    }
    .course-bg-overlay {
        position: absolute;
        inset: 0;
        background: rgba(255, 255, 255, 0.45);
    }

    /* === Main Course Cards (国語/算数/英語) === */
    .course-card {
        background: rgba(255, 255, 255, 0.92);
        border-radius: 25px;
        border: 4px double #ffa000;
        padding: 30px;
        box-shadow: rgba(0, 0, 0, 0.5) 2px 2px 10px -3px;
        max-width: 920px;
    }
    .course-card.border-orange {
        border-color: #ffa000;
    }
    .course-card.border-blue {
        border-color: #1c5cff;
    }
    .course-card.border-red {
        border-color: #ff1111;
    }
    .card-right {
        margin: 100px 0 100px auto;
    }
    .card-left {
        margin: 100px auto 100px 0;
    }

    @media (max-width: 768px) {
        .course-card {
            max-width: 100%;
            padding: 20px;
        }
        .card-right,
        .card-left {
            margin: 40px auto;
        }
    }

    .course-card-header {
        text-align: center;
        margin-bottom: 32px;
    }
    .course-catch {
        font-size: 20px;
        font-weight: 300;
        color: #292929;
        display: block;
        padding-bottom: 12px;
        line-height: 36px;
    }
    .course-catch strong {
        font-weight: 700;
    }
    .course-card-title {
        font-size: 28px;
        font-weight: 700;
        color: #333;
        letter-spacing: 0.1em;
        margin: 16px 0 8px;
    }
    .title-dots {
        display: flex;
        justify-content: center;
        gap: 6px;
        margin-top: 8px;
    }
    .title-dots span {
        width: 6px;
        height: 6px;
        background: #ccc;
        border-radius: 50%;
        display: block;
    }
    .course-card-body {
        font-size: 14px;
        color: #666;
        line-height: 2;
        text-align: left;
        margin-bottom: 32px;
    }

    /* === Sub Cards (読解/作文/計算/応用 etc.) === */
    .sub-cards-row {
        display: flex;
        flex-wrap: wrap;
        gap: 24px;
        justify-content: center;
    }
    .sub-card {
        flex: 1 1 calc(50% - 12px);
        min-width: 280px;
        max-width: 426px;
        border-radius: 25px;
        padding: 40px 20px 20px;
        position: relative;
        padding-bottom: 60px;
    }
    .sub-card-blue {
        background: #d4f3ff;
        border: 2px solid #1c5cff;
    }
    .sub-card-orange {
        background: #fff1ce;
        border: 2px solid #ffa000;
    }
    .sub-card-pink {
        background: #ffe8e8;
        border: 2px solid #ff1111;
    }

    .sub-card-title {
        font-size: 18px;
        font-weight: 700;
        color: #333;
        text-align: center;
        padding-bottom: 12px;
        border-bottom: 2px dotted #ccc;
        margin-bottom: 16px;
    }
    .sub-card-dots {
        margin-bottom: 8px;
    }
    .sub-card-body {
        font-size: 14px;
        color: #666;
        line-height: 1.9;
    }
    .sub-card-price {
        font-size: 12px;
        font-weight: 700;
        position: absolute;
        bottom: 20px;
        left: 0;
        right: 0;
        text-align: center;
    }
    .price-blue {
        color: #4488ff;
    }
    .price-orange {
        color: #e68a00;
    }
    .price-red {
        color: #e2504b;
    }

    /* === Schedule Tables === */
    .table-heading {
        font-size: 20px;
        font-weight: 700;
        color: #333;
        margin-bottom: 24px;
        letter-spacing: 0.1em;
    }
    .schedule-table {
        width: 100%;
        text-align: center;
        border-collapse: collapse;
        background: #fff;
        white-space: nowrap;
    }
    .discount-box {
        background: #ffeeee;
        padding: 40px;
        border-radius: 10px;
        max-width: 750px;
        margin: 48px auto 0;
    }
    .discount-subtitle {
        font-size: 15px;
        font-weight: 700;
        color: #333;
        text-align: center;
        margin-bottom: 16px;
    }

    /* === Standard Course Card (中学生/高校生) === */
    .standard-course-card {
        background: #fff;
        border-radius: 10px;
        box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06);
        border: 1px solid #e0e0e0;
        padding: 48px;
        margin-bottom: 48px;
        max-width: 1000px;
        margin-left: auto;
        margin-right: auto;
    }
    .standard-course-card.border-blue {
        border-color: #90caf9;
    }

    .benefit-box {
        background: #e8f5e9;
        border: 1px solid #a5d6a7;
        border-radius: 8px;
        padding: 24px;
        margin-bottom: 32px;
        text-align: left;
        max-width: 720px;
        margin-left: auto;
        margin-right: auto;
    }

    .weekly-plan-card {
        background: #f0fff0;
        border: 1px solid #a5d6a7;
        border-radius: 6px;
        padding: 24px;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
    }
    .border-blue .weekly-plan-card {
        background: #f0f8ff;
        border-color: #b8d4f0;
    }
    .weekly-plan-title {
        font-weight: 700;
        color: #333;
        text-align: center;
        border-bottom: 1px solid #ccc;
        padding-bottom: 8px;
        margin-bottom: 16px;
    }
    .weekly-plan-price {
        font-size: 12px;
        font-weight: 700;
        color: #61ce70;
    }

    /* === Option Course Cards (単科/読解/英検) === */
    .option-course-card {
        background: #fff;
        border-radius: 10px;
        box-shadow: 0 2px 16px rgba(0, 0, 0, 0.05);
        border-top: 4px solid #ccc;
        padding: 32px 40px;
        margin-bottom: 48px;
        max-width: 850px;
        margin-left: auto;
        margin-right: auto;
    }
    .option-course-card.border-purple {
        border-top-color: #8e44ad;
    }

    /* === Floating Cards on Background (読解/英検) === */
    .option-floating-card {
        background: rgba(255, 255, 255, 0.95);
        border: 2px solid #e8c872;
        border-radius: 12px;
        padding: 40px;
        max-width: 700px;
        box-shadow: 0 4px 30px rgba(0, 0, 0, 0.08);
    }
    .floating-card-title {
        font-size: 24px;
        font-weight: 700;
        color: #333;
        letter-spacing: 0.1em;
        margin-bottom: 16px;
    }
    .floating-card-line {
        width: 100%;
        height: 3px;
        background: #e8c872;
        margin-bottom: 24px;
        border-radius: 2px;
    }

    /* === ICT Section === */
    .ict-title-line {
        width: 100%;
        max-width: 600px;
        height: 3px;
        background: #e25050;
        border-radius: 2px;
        margin-bottom: 12px;
    }

    /* === Elementor Animated Headline (exact copy) === */
    .elementor-headline {
        font-size: 20px;
        font-weight: 300;
        color: #292929;
        line-height: 1.8em;
        text-align: center;
        display: block;
        margin-bottom: 0;
    }
    .elementor-headline-plain-text {
        font-weight: 300;
    }
    .elementor-headline-dynamic-wrapper {
        display: inline-block;
        position: relative;
    }
    .elementor-headline-dynamic-text {
        font-weight: 700;
    }
    /* SVG Underline (Elementor curly style) */
    .elementor-headline-dynamic-wrapper svg {
        position: absolute;
        bottom: -4px;
        left: 0;
        width: 100%;
        height: auto;
        overflow: visible;
        pointer-events: none;
    }
    .elementor-headline-dynamic-wrapper svg path {
        fill: none;
        stroke-width: 3;
        stroke-linecap: round;
        stroke-linejoin: round;
        opacity: 0;
    }
    .elementor-headline-dynamic-wrapper.is-drawn svg path {
        opacity: 1;
        stroke-dashoffset: 0 !important;
        transition:
            stroke-dashoffset 1.2s ease-in-out,
            opacity 0.3s ease-in;
    }
    /* Headline color variants */
    .headline-red .elementor-headline-dynamic-text {
        color: #ff1111;
    }
    .headline-red svg path {
        stroke: #ff1111;
    }
    .headline-blue .elementor-headline-dynamic-text {
        color: #1c5cff;
    }
    .headline-blue svg path {
        stroke: #1c5cff;
    }
