<?php
/*
Template Name: English (EN)
Description: Standalone English layout for /en/ pages. Does not use the Japanese theme header/footer/sidebar.
*/

$nren_doc_title = trim( wp_strip_all_tags( get_the_title() ) ) . ' | Never Red Co., Ltd.';
if ( is_page( 'en' ) ) {
	$nren_doc_title = 'Never Red Co., Ltd. | Consulting Firm in Tokyo, Japan';
}
add_filter( 'pre_get_document_title', function () use ( $nren_doc_title ) { return $nren_doc_title; }, 9999 );
add_filter( 'aioseo_title', function () use ( $nren_doc_title ) { return $nren_doc_title; }, 9999 );
add_filter( 'aioseo_facebook_tags', function ( $tags ) {
	if ( isset( $tags['og:locale'] ) ) { $tags['og:locale'] = 'en_US'; }
	return $tags;
}, 9999 );
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php ob_start(); wp_head(); echo str_replace( array( 'content="noindex, ', 'content="noindex"' ), array( 'content="', 'content="index"' ), ob_get_clean() ); ?>
<style>
.nren-body { margin:0; background:#fff; color:#1c2430; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif; line-height:1.75; font-size:16px; }
.nren-container { max-width:1040px; margin:0 auto; padding:0 24px; }

/* Header */
.nren-header { background:#fff; border-bottom:1px solid #e6e8eb; position:sticky; top:0; z-index:999; }
.nren-header-inner { max-width:1180px; margin:0 auto; padding:14px 24px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; }
.nren-logo img { height:34px; width:auto; display:block; }
.nren-nav { display:flex; align-items:center; flex-wrap:wrap; gap:26px; }
.nren-nav a { color:#1c2430; text-decoration:none; font-size:14px; font-weight:600; letter-spacing:.02em; }
.nren-nav a:hover { color:#c8102e; }
.nren-nav a.nren-cta { background:#c8102e; color:#fff; padding:9px 20px; border-radius:3px; }
.nren-nav a.nren-cta:hover { background:#a00d25; color:#fff; }
.nren-nav a.nren-lang { color:#8a929c; font-weight:500; }

/* Hero */
.nren-hero { position:relative; min-height:320px; display:flex; align-items:center; background-color:#101820; background-size:cover; background-position:center; }
.nren-hero::before { content:""; position:absolute; inset:0; background:linear-gradient(100deg, rgba(10,14,20,.82) 25%, rgba(10,14,20,.45) 70%, rgba(10,14,20,.35)); }
.nren-hero--video { min-height:72vh; overflow:hidden; }
.nren-hero--video::before { background:rgba(10,14,20,.08); }
.nren-hero-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.nren-sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
@media (max-width:720px) { .nren-hero--video { min-height:78vh; } }
.nren-hero-inner { position:relative; max-width:1040px; margin:0 auto; padding:72px 24px; width:100%; }
.nren-hero h1 { color:#fff; font-size:40px; line-height:1.25; margin:0 0 14px; letter-spacing:.01em; }
.nren-hero p { color:#dfe3e8; font-size:18px; max-width:640px; margin:0; }

/* Main content */
.nren-main { padding:56px 0 72px; }
.nren-main h2 { font-size:26px !important; line-height:1.4; margin:56px 0 18px; padding-bottom:12px; border-bottom:2px solid #e6e8eb; position:relative; text-align:left !important; }
.nren-main h2::after { content:""; position:absolute; left:0; bottom:-2px; width:64px; height:2px; background:#c8102e; }
.nren-main h2:first-child { margin-top:0; }
.nren-main h3 { font-size:19px !important; font-weight:700; margin:32px 0 10px; text-align:left !important; }
.nren-main p { margin:0 0 18px; font-size:16px; }
.nren-main a { color:#c8102e; }
.nren-main ul, .nren-main ol { padding-left:24px; margin:0 0 18px; }
.nren-main li { margin-bottom:10px; font-size:16px; }
.nren-main figure.wp-block-table { margin:0 0 24px; overflow-x:auto; }
.nren-main table { border-collapse:collapse; width:100%; font-size:15px; }
.nren-main table td { border:1px solid #e0e3e7; padding:12px 16px; vertical-align:top; }
.nren-main table tr td:first-child { background:#f5f6f8; font-weight:600; width:32%; white-space:nowrap; }
.nren-main blockquote { border-left:3px solid #c8102e; background:#faf9f8; margin:0 0 18px; padding:20px 24px; }
.nren-main blockquote p:last-child { margin-bottom:0; }
.nren-main hr { border:none; border-top:1px solid #e6e8eb; margin:40px 0; }
.nren-main img { max-width:100%; height:auto; border-radius:6px; }
.nren-main figure { margin:0 0 24px; }
.nren-main figure.alignright { float:right; margin:6px 0 20px 28px; max-width:300px; }
.nren-main figure.alignleft { float:left; margin:6px 28px 20px 0; max-width:300px; }
.nren-main h2 { clear:both; }
@media (max-width:600px) { .nren-main figure.alignright, .nren-main figure.alignleft { float:none; margin:0 auto 20px; } }

/* Contact form (CF7) */
.nren-main .wpcf7 label { display:block; font-weight:600; font-size:14px; margin-bottom:16px; }
.nren-main .wpcf7 input[type="text"], .nren-main .wpcf7 input[type="email"], .nren-main .wpcf7 textarea, .nren-main .wpcf7 select { width:100%; max-width:560px; box-sizing:border-box; border:1px solid #cdd2d8; border-radius:3px; padding:10px 12px; font-size:15px; margin-top:6px; background:#fff; }
.nren-main .wpcf7 input[type="submit"] { background:#c8102e; color:#fff; border:none; border-radius:3px; padding:13px 44px; font-size:15px; font-weight:700; cursor:pointer; }
.nren-main .wpcf7 input[type="submit"]:hover { background:#a00d25; }

/* Footer */
.nren-footer { background:#14181d; color:#c8cdd3; padding:48px 0 28px; font-size:14px; }
.nren-footer-inner { max-width:1180px; margin:0 auto; padding:0 24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:28px; }
.nren-footer h4 { color:#fff; font-size:16px; margin:0 0 10px; letter-spacing:.04em; }
.nren-footer p { margin:0 0 6px; }
.nren-footer a { color:#c8cdd3; text-decoration:none; }
.nren-footer a:hover { color:#fff; }
.nren-footer-nav { display:flex; flex-direction:column; gap:8px; }
.nren-copy { text-align:center; color:#7d848c; margin-top:36px; padding-top:20px; border-top:1px solid #262c33; font-size:12px; letter-spacing:.05em; }

@media (max-width: 720px) {
  .nren-hero h1 { font-size:28px; }
  .nren-hero-inner { padding:48px 20px; }
  .nren-main h2 { font-size:22px; }
  .nren-main table tr td:first-child { white-space:normal; }
}
</style>
</head>
<body <?php body_class( 'nren-body' ); ?>>

<header class="nren-header">
	<div class="nren-header-inner">
		<a class="nren-logo" href="<?php echo esc_url( home_url( '/en/' ) ); ?>">
			<img src="<?php echo esc_url( home_url( '/wp-content/uploads/2022/07/cropped-color_logo_yoko_s.png' ) ); ?>" alt="Never Red Co., Ltd.">
		</a>
		<nav class="nren-nav">
			<a href="<?php echo esc_url( home_url( '/en/' ) ); ?>">Home</a>
			<a href="<?php echo esc_url( home_url( '/en/about/' ) ); ?>">About Us</a>
			<a href="<?php echo esc_url( home_url( '/en/services/' ) ); ?>">Services</a>
			<a href="<?php echo esc_url( home_url( '/en/case-studies/' ) ); ?>">Case Studies</a>
			<a class="nren-lang" href="<?php echo esc_url( home_url( '/' ) ); ?>">日本語</a>
			<a class="nren-cta" href="<?php echo esc_url( home_url( '/en/contact/' ) ); ?>">Contact</a>
		</nav>
	</div>
</header>

<?php while ( have_posts() ) : the_post(); ?>
<?php if ( is_page( 'en' ) ) : ?>
<div class="nren-hero nren-hero--video">
	<video id="nren-hero-video" class="nren-hero-bg" autoplay muted loop playsinline preload="metadata" poster="<?php echo esc_url( home_url( '/wp-content/uploads/2026/06/nr_hero_v4en_poster.jpg' ) ); ?>">
		<source src="<?php echo esc_url( home_url( '/wp-content/uploads/2026/06/nr_hero_v5en_film.mp4' ) ); ?>" type="video/mp4">
	</video>
	<div class="nren-hero-inner">
		<h1 class="nren-sr">Igniting conviction in management.</h1>
		<p class="nren-sr">Tokyo-based consulting firm for ERP transformation (SAP S/4HANA), digital strategy, and project management — your delivery partner on the ground in Japan.</p>
	</div>
</div>
<script>
(function(){
	if ( window.innerWidth < 768 ) {
		var v = document.getElementById('nren-hero-video');
		var s = v ? v.querySelector('source') : null;
		if ( s ) { s.src = '<?php echo esc_url( home_url( '/wp-content/uploads/2026/06/nr_hero_v5en_sp_portrait.mp4' ) ); ?>'; v.load(); v.play().catch(function(){}); }
	}
})();
</script>
<?php else : ?>
<?php $nren_hero = get_the_post_thumbnail_url( get_the_ID(), 'full' ); ?>
<div class="nren-hero"<?php if ( $nren_hero ) { echo ' style="background-image:url(' . esc_url( $nren_hero ) . ')"'; } ?>>
	<div class="nren-hero-inner">
		<h1><?php the_title(); ?></h1>
	</div>
</div>
<?php endif; ?>

<main class="nren-main">
	<div class="nren-container">
		<?php the_content(); ?>
	</div>
</main>
<?php endwhile; ?>

<footer class="nren-footer">
	<div class="nren-footer-inner">
		<div>
			<h4>Never Red Co., Ltd.</h4>
			<p>SHIP, Osaki Bright Core 4F, 5-5-15 Kitashinagawa,<br>Shinagawa-ku, Tokyo 141-0001, Japan</p>
			<p>Tel: +81-3-6820-2744 (Mon&ndash;Fri 10:00&ndash;18:00 JST)</p>
		</div>
		<nav class="nren-footer-nav">
			<a href="<?php echo esc_url( home_url( '/en/' ) ); ?>">Home</a>
			<a href="<?php echo esc_url( home_url( '/en/about/' ) ); ?>">About Us</a>
			<a href="<?php echo esc_url( home_url( '/en/services/' ) ); ?>">Services</a>
			<a href="<?php echo esc_url( home_url( '/en/case-studies/' ) ); ?>">Case Studies</a>
			<a href="<?php echo esc_url( home_url( '/en/contact/' ) ); ?>">Contact</a>
			<a href="<?php echo esc_url( home_url( '/en/privacy-policy/' ) ); ?>">Privacy Policy</a>
			<a href="<?php echo esc_url( home_url( '/' ) ); ?>">日本語サイト (Japanese)</a>
		</nav>
	</div>
	<div class="nren-copy">&copy; <?php echo esc_html( date( 'Y' ) ); ?> Never Red Co., Ltd. All rights reserved.</div>
</footer>

<?php wp_footer(); ?>
</body>
</html>
