/* Base Variables */
:root {
    --font-serif: "Zen Old Mincho", serif;
    --font-sans: "Noto Sans JP", sans-serif;

    --color-bg: #F9F9F9;
    --color-text-main: #333333;
    --color-text-light: #666666;
    --color-heading: #111111;
    --color-accent: #2C3E50;
    --color-border: #E0E0E0;

    --header-height: 80px;
}

/* Base Overrides */
body {
    font-family: var(--font-sans);
    background-color: var(--color-bg);
    color: var(--color-text-main);
    line-height: 1.8;
    letter-spacing: 0.05em;
}

h1,
h2,
h3,
h4,
h5,
h6,
.font-serif {
    font-family: var(--font-serif);
    color: var(--color-heading);
    letter-spacing: 0.05em;
}

.bg-white-translucent {
    background-color: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(5px);
}

.letter-spacing-2 {
    letter-spacing: 0.2rem;
}

.mw-800 {
    max-width: 800px;
}

/* Hover Utils */
.hover-lift {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.hover-lift:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
}

.transition-all {
    transition: all 0.3s ease;
}

/* Animation Utils (Custom) */
.fade-in-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.visible {
    opacity: 1;
    transform: translateY(0);
}

.delay-1 {
    transition-delay: 0.2s;
}

.delay-2 {
    transition-delay: 0.4s;
}

.delay-3 {
    transition-delay: 0.6s;
}

/* Styles that rely on custom drawing or explicit heights */

/* Hero */
.hero {
    height: 100vh;
    padding-top: var(--header-height);
    background-image: url('../assets/images/hero_bg.png');
    background-size: cover;
    background-position: center;
    position: relative;
    color: #fff;
    /* Switch text to white for contrast on image */
}

/* Add overlay for better text readability */
.hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.4);
    /* Dark overlay */
    z-index: 1;
}

.hero-content {
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
    color: #fff !important;
}

.hero-subtitle {
    color: rgba(255, 255, 255, 0.9) !important;
}

.hero-title {
    line-height: 1.4;
    color: #fff !important;
}

.hero-desc {
    color: rgba(255, 255, 255, 0.9) !important;
}

/* Scroll Line Animation */
.scroll-indicator {
    z-index: 2;
    color: rgba(255, 255, 255, 0.8) !important;
}

.line {
    background-color: rgba(255, 255, 255, 0.3) !important;
}

.line-inner {
    background-color: #fff !important;
    animation: scroll-line 2s infinite;
}

@keyframes scroll-line {
    0% {
        transform: translateY(-100%);
    }

    100% {
        transform: translateY(200%);
    }
}

/* Timeline Customization */

/* Subpage Eyecatch */
.subpage-eyecatch {
    height: 400px;
    padding-top: var(--header-height);
    background-color: #2C3E50;
    /* Fallback color */
    background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url('../assets/images/subpage_eyecatch.svg');
    /* Try to load image if exists, else gradient works with fallback color */
    background-size: cover;
    background-position: center;
    margin-bottom: 3rem;
}

/* Ensure fade-in-up elements are visible if JS intersection observer isn't triggering immediately or if simple CSS animation is preferred for subpage */
@keyframes fadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.subpage-eyecatch.bamboo-bg {
    background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url('../assets/images/hero_bg.png');
    background-size: cover;
    background-position: center;
}

/* Subpage Content */
.content {
    color: #000000;
}

.content p {
    color: #000000;
}