/*
Theme Name: FREEEEEDOM
Theme URI: https://fre5dom.com
Author: FREEEEEDOM Inc.
Author URI: https://fre5dom.com
Description: 株式会社FREEEEEDOM コーポレートサイト
Version: 1.0
License: Private
Text Domain: freeeeedom
*/

:root {
  --navy:     #1a2340;
  --navy-d:   #0e1525;
  --navy-m:   #2d3a5c;
  --navy-l:   #6b7a9e;
  --white:    #ffffff;
  --off-white:#f8f7f5;
  --cream:    #f2efe9;
  --accent:   #c8a96e;
  --text-sub: rgba(26,35,64,0.5);
  --border:   rgba(26,35,64,0.1);
}
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  background:var(--white);
  color:var(--navy);
  font-family:'Noto Serif JP',serif;
  font-weight:300;
  overflow-x:hidden;
  cursor:none;
}

/* Cursor */
.cursor { width:7px; height:7px; background:var(--navy); border-radius:50%; position:fixed; top:0; left:0; pointer-events:none; z-index:9999; mix-blend-mode:multiply; }
.cursor-ring { width:34px; height:34px; border:1px solid rgba(26,35,64,0.22); border-radius:50%; position:fixed; top:0; left:0; pointer-events:none; z-index:9998; }

/* NAV */
nav { position:fixed; top:0; left:0; right:0; z-index:500; display:flex; align-items:center; justify-content:space-between; padding:28px 60px; transition:background .4s, padding .4s, box-shadow .4s; }
nav.scrolled { background:rgba(255,255,255,0.95); backdrop-filter:blur(14px); padding:16px 60px; box-shadow:0 1px 0 var(--border); }
.nav-logo { display:block; text-decoration:none; }
.nav-logo img { height:26px; width:auto; display:block; }
.nav-links { display:flex; gap:44px; list-style:none; }
.nav-links a { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--navy-l); text-decoration:none; transition:color .2s; }
.nav-links a:hover { color:var(--navy); }
.nav-cta { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--white); background:var(--navy); padding:11px 28px; text-decoration:none; transition:background .2s; }
.nav-cta:hover { background:var(--navy-m); }

/* HERO */
.hero { min-height:100vh; background:var(--white); display:flex; flex-direction:column; justify-content:center; padding:140px 60px 100px; position:relative; overflow:hidden; }
.hero-deco { position:absolute; right:-20px; top:50%; transform:translateY(-50%); font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(160px,22vw,320px); color:rgba(26,35,64,0.035); letter-spacing:-.02em; line-height:1; pointer-events:none; user-select:none; white-space:nowrap; }
.hero-vline { position:absolute; left:56px; top:0; bottom:0; width:1px; background:linear-gradient(to bottom,transparent,var(--border) 20%,var(--border) 80%,transparent); pointer-events:none; }
.hero-eyebrow { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.28em; text-transform:uppercase; color:var(--navy-l); margin-bottom:44px; display:flex; align-items:center; gap:16px; opacity:0; animation:fadeUp .8s .3s forwards; }
.hero-eyebrow::before { content:''; width:36px; height:1px; background:var(--navy-l); }
.hero-logo { opacity:0; animation:fadeUp .9s .5s forwards; position:relative; z-index:1; }
.hero-logo img { height:clamp(60px,9vw,130px); width:auto; display:block; }
.hero-logo-above { font-family:'Noto Serif JP',serif; font-weight:400; font-size:12px; letter-spacing:.22em; color:var(--navy-l); margin-bottom:10px; display:block; opacity:0; animation:fadeUp .8s .45s forwards; }
.hero-tagline { margin-top:36px; opacity:0; animation:fadeUp .9s .72s forwards; }
.tl-line { display:block; font-family:'DM Mono',monospace; font-style:italic; font-size:clamp(13px,1.5vw,20px); letter-spacing:.28em; color:var(--navy-l); line-height:2.1; }
.tl-line .comma { color:var(--accent); }
.hero-divider { width:48px; height:1px; background:var(--border); margin:40px 0; opacity:0; animation:fadeIn .8s .98s forwards; }
.hero-desc { max-width:480px; font-size:14px; line-height:2.2; color:var(--text-sub); opacity:0; animation:fadeUp .9s 1.02s forwards; }
.hero-cta-row { margin-top:46px; display:flex; align-items:center; gap:36px; opacity:0; animation:fadeUp .9s 1.22s forwards; }
.btn-navy { display:inline-flex; align-items:center; gap:14px; background:var(--navy); color:var(--white); padding:16px 44px; font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; text-decoration:none; transition:background .2s, gap .2s; }
.btn-navy:hover { background:var(--navy-m); gap:22px; }
.btn-text { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--navy-l); text-decoration:none; border-bottom:1px solid var(--border); padding-bottom:2px; transition:color .2s, border-color .2s; }
.btn-text:hover { color:var(--navy); border-color:var(--navy-l); }
.hero-scroll { position:absolute; bottom:52px; right:60px; display:flex; flex-direction:column; align-items:center; gap:10px; font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.24em; color:var(--navy-l); text-transform:uppercase; writing-mode:vertical-rl; opacity:0; animation:fadeIn 1s 1.55s forwards; }
.hero-scroll::after { content:''; width:1px; height:52px; background:linear-gradient(to bottom,var(--navy-l),transparent); animation:lineGrow 1.4s 1.75s forwards; transform:scaleY(0); transform-origin:top; }

@keyframes fadeUp { from{opacity:0;transform:translateY(26px)} to{opacity:1;transform:none} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes lineGrow { to{transform:scaleY(1)} }

/* TICKER */
.ticker { border-top:1px solid var(--border); border-bottom:1px solid var(--border); padding:14px 0; overflow:hidden; background:var(--white); }
.ticker-inner { display:flex; width:max-content; animation:tickerAnim 24s linear infinite; }
.ticker-item { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.22em; text-transform:uppercase; color:var(--navy-l); white-space:nowrap; padding:0 36px; }
.ticker-item.mark { color:var(--accent); font-style:italic; }
@keyframes tickerAnim { from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* SECTION */
.s-pad { padding:120px 60px; }
.s-label { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.3em; text-transform:uppercase; color:var(--navy-l); display:flex; align-items:center; gap:14px; margin-bottom:60px; }
.s-label::before { content:''; width:28px; height:1px; background:var(--navy-l); }

/* PHILOSOPHY */
.philosophy { background:var(--off-white); padding:140px 60px; }
.philosophy-inner { display:grid; grid-template-columns:1fr 1fr; gap:100px; align-items:center; }
.phil-line { display:flex; align-items:baseline; padding:22px 0; border-bottom:1px solid var(--border); font-family:'DM Mono',monospace; font-style:italic; font-size:clamp(18px,2.6vw,36px); letter-spacing:.18em; color:var(--navy); }
.phil-line:first-child { border-top:1px solid var(--border); }
.phil-line .comma { color:var(--accent); margin-right:3px; }
.phil-heading { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(38px,4.5vw,62px); line-height:1.05; color:var(--navy); letter-spacing:.02em; margin-bottom:32px; }
.phil-body { font-size:14px; line-height:2.2; color:var(--text-sub); }
.phil-body p+p { margin-top:18px; }

/* SERVICES */
.services { background:var(--white); padding:120px 60px; }
.services-heading { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(52px,7vw,96px); line-height:.95; color:var(--navy); letter-spacing:.02em; margin-bottom:64px; }
.service-list { list-style:none; }
.service-item { display:grid; grid-template-columns:52px 1fr 260px 32px; align-items:center; gap:36px; padding:36px 0; border-bottom:1px solid var(--border); transition:padding-left .3s; cursor:none; }
.service-item:first-child { border-top:1px solid var(--border); }
.service-item:hover { padding-left:12px; }
.si-num { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.16em; color:var(--accent); }
.si-en { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(24px,2.8vw,38px); color:var(--navy); letter-spacing:.02em; line-height:1.1; }
.si-ja { font-size:12px; color:var(--text-sub); letter-spacing:.1em; margin-top:4px; }
.si-tags { display:flex; flex-wrap:wrap; gap:6px; }
.si-tag { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.14em; text-transform:uppercase; border:1px solid var(--border); color:var(--navy-l); padding:4px 10px; transition:border-color .2s, color .2s; }
.service-item:hover .si-tag { border-color:var(--accent); color:var(--accent); }
.si-arrow { font-size:16px; color:var(--border); text-align:right; transition:color .2s, transform .2s; }
.service-item:hover .si-arrow { color:var(--navy); transform:translateX(5px); }

/* ABOUT */
.about { background:var(--navy-d); padding:120px 60px; }
.about-inner { display:grid; grid-template-columns:1fr 1fr; gap:100px; align-items:start; }
.about .s-label { color:rgba(247,244,238,.3); }
.about .s-label::before { background:rgba(247,244,238,.18); }
.about-heading { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(52px,7vw,96px); line-height:.95; color:var(--off-white); letter-spacing:.02em; margin-bottom:52px; }
.about-heading em { font-style:normal; color:var(--accent); }
.about-stats { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid rgba(247,244,238,.07); }
.a-stat { padding:28px 22px; border-right:1px solid rgba(247,244,238,.07); }
.a-stat:last-child { border-right:none; }
.a-stat-n { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:52px; line-height:1; color:var(--off-white); letter-spacing:.02em; }
.a-stat-n sup { font-size:26px; }
.a-stat-l { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:rgba(247,244,238,.28); margin-top:6px; }
.about-info { border-top:1px solid rgba(247,244,238,.07); }
.info-row { display:grid; grid-template-columns:110px 1fr; gap:20px; padding:18px 0; border-bottom:1px solid rgba(247,244,238,.06); font-size:13px; }
.info-label { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:rgba(247,244,238,.28); padding-top:2px; }
.info-value { color:rgba(247,244,238,.65); line-height:1.7; letter-spacing:.04em; }

/* WORKS */
.works { background:var(--off-white); padding:120px 60px; }
.works-head { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:56px; }
.works-heading { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(52px,7vw,96px); line-height:.95; color:var(--navy); letter-spacing:.02em; }
.works-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:2px; }
.work-card { aspect-ratio:3/4; position:relative; overflow:hidden; background:var(--navy-d); }
.wc-bg { position:absolute; inset:0; transition:transform .6s cubic-bezier(.25,.46,.45,.94); }
.wc-bg-1 { background:linear-gradient(155deg,#1a2340,#0e1525); }
.wc-bg-2 { background:linear-gradient(155deg,#0e1525,#1e2d4a); }
.wc-bg-3 { background:linear-gradient(155deg,#131b30,#1a2340); }
.work-card:hover .wc-bg { transform:scale(1.06); }
.wc-inner { position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; justify-content:flex-end; padding:32px; background:linear-gradient(to top,rgba(8,10,20,.88) 0%,transparent 55%); }
.wc-num { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.2em; color:var(--accent); text-transform:uppercase; margin-bottom:10px; }
.wc-name { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:26px; color:var(--off-white); line-height:1.2; letter-spacing:.02em; margin-bottom:8px; }
.wc-type { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.16em; color:rgba(247,244,238,.33); text-transform:uppercase; }

/* CONTACT */
.contact {
  background: var(--white);
  padding: 160px 60px;
  position: relative;
  overflow: hidden;
  /* text-align:center は削除 → フォームの左寄せ問題の原因だったため */
}
.contact-deco { position:absolute; bottom:-50px; left:50%; transform:translateX(-50%); font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(120px,18vw,240px); color:rgba(26,35,64,0.03); white-space:nowrap; pointer-events:none; letter-spacing:-.02em; line-height:1; }
.contact-inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center; /* 中央揃え */
  text-align: center;  /* テキストは中央のまま */
}
.contact-label { font-family:'DM Mono',monospace; font-size:10px; letter-spacing:.28em; text-transform:uppercase; color:var(--navy-l); margin-bottom:36px; }
.contact-title { font-family:'Barlow Condensed',sans-serif; font-style:italic; font-weight:700; font-size:clamp(60px,10vw,130px); line-height:.95; letter-spacing:.02em; color:var(--navy); margin-bottom:36px; }
.contact-body { font-size:14px; line-height:2.1; color:var(--text-sub); max-width:440px; margin:0 auto 52px; }
.contact-info { margin-top:52px; display:flex; justify-content:center; gap:60px; }
.ci-label { font-family:'DM Mono',monospace; font-size:9px; letter-spacing:.22em; text-transform:uppercase; color:var(--navy-l); opacity:.6; margin-bottom:6px; }
.ci-val { font-size:13px; color:var(--text-sub); letter-spacing:.04em; }

/* FOOTER */
footer {
  background: var(--white);
  border-top: 1px solid var(--border);
  padding: 44px 60px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.footer-logo img {
  height: 22px;
  width: auto;
  display: block;
}
.footer-links a {
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--navy-l);
  text-decoration: none;
  transition: color .2s;
}
.footer-links a:hover { color: var(--navy); }
.footer-copy {
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: .15em;
  color: var(--navy-l);
  opacity: .5;
}

/* REVEAL */
.reveal { opacity:0; transform:translateY(30px); transition:opacity .9s ease, transform .9s ease; }
.reveal.visible { opacity:1; transform:none; }
.rd1{transition-delay:.1s} .rd2{transition-delay:.2s} .rd3{transition-delay:.3s} .rd4{transition-delay:.4s}

/* RESPONSIVE */
@media(max-width:960px){
  nav, nav.scrolled { padding:20px 28px; }
  .nav-links { display:none; }
  .hero, .philosophy, .services, .about, .works, .contact { padding-left:28px; padding-right:28px; }
  .hero { padding-top:110px; }
  .philosophy-inner, .about-inner { grid-template-columns:1fr; gap:52px; }
  .service-item { grid-template-columns:40px 1fr; gap:16px; }
  .si-tags, .si-arrow { display:none; }
  .works-grid { grid-template-columns:1fr 1fr; }
  footer { flex-direction:column; gap:20px; text-align:center; }
  .contact-info { flex-direction:column; gap:20px; }
}

@media(max-width:960px){
  .nav-logo img {
    height: 20px;
    width: auto;
    max-width: 160px;
  }

  nav, nav.scrolled {
    padding: 20px 20px;
  }
}

@media(max-width:960px){
  .hero-logo img {
    max-width: 100%;
    height: auto;
  }
}

/* ===== CF7 コンタクトフォーム スタイル ===== */

.wpcf7 label {
  display: block;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: #888;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 textarea {
  width: 100%;
  box-sizing: border-box;
  background: #f7f7f8;
  border: 0.5px solid #d0d0d0;
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 15px;
  color: #1a1a1a;
  outline: none;
  transition: border 0.15s, box-shadow 0.15s;
}

.wpcf7 input[type="text"]:focus,
.wpcf7 input[type="email"]:focus,
.wpcf7 input[type="tel"]:focus,
.wpcf7 textarea:focus {
  border-color: #1B3A6B;
  box-shadow: 0 0 0 3px rgba(27, 58, 107, 0.15);
}

.wpcf7 textarea {
  min-height: 120px;
  resize: vertical;
}

.wpcf7 .wpcf7-form p {
  margin-bottom: 1.25rem;
}

.wpcf7 input[type="submit"] {
  background: #1B3A6B;
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 11px 40px;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: opacity 0.15s, transform 0.1s;
  margin-top: 0.5rem;
}

.wpcf7 input[type="submit"]:hover {
  opacity: 0.85;
  transform: translateY(-1px);
}