:root{
  --ink:#1b1b18;
  --navy:#12213B;
  --navy-2:#1c3355;
  --steel:#3D6E8F;
  --steel-light:#7FA6BE;
  --paper:#F6F3EC;
  --paper-2:#EFEAE0;
  --rule:#DAD4C6;
  --brass:#B98A45;
  --brass-2:#C79A56;
  --white:#FFFFFF;
  --max:1180px;
  --serif: "Zen Old Mincho", serif;
  --sans: "Noto Sans JP", "Zen Kaku Gothic New", sans-serif;
  --label: "Zen Kaku Gothic New", sans-serif;
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  line-height:1.9;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* faint ruled-paper texture across the whole site */
body::before{
  content:"";
  position:fixed; inset:0;
  pointer-events:none;
  z-index:0;
  background-image:
    linear-gradient(var(--rule) 1px, transparent 1px);
  background-size: 100% 44px;
  opacity:0.35;
  mix-blend-mode:multiply;
}

img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
.wrap{max-width:var(--max); margin:0 auto; padding:0 32px; position:relative; z-index:1;}
section{position:relative; z-index:1;}

h1,h2,h3,h4{font-family:var(--serif); font-weight:600; letter-spacing:.02em; color:var(--navy);}

.eyebrow{
  font-family:var(--label);
  font-size:12.5px;
  letter-spacing:.22em;
  color:var(--steel);
  text-transform:uppercase;
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
  font-weight:500;
}
.eyebrow::before{
  content:"";
  width:22px; height:1px;
  background:var(--brass);
  display:inline-block;
}

/* reveal on scroll */
.reveal{opacity:0; transform:translateY(22px); transition:opacity .8s ease, transform .8s ease;}
.reveal.is-visible{opacity:1; transform:translateY(0);}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1; transform:none; transition:none;}
  html{scroll-behavior:auto;}
}

/* ===== HEADER ===== */
header{
  position:fixed; top:0; left:0; right:0; z-index:50;
  background:rgba(246,243,236,0.86);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(218,212,198,0.9);
  transition:background .3s ease;
}
.nav{
  max-width:var(--max); margin:0 auto; padding:16px 32px;
  display:flex; align-items:center; justify-content:space-between;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand-logo{height:26px; width:auto; display:block;}
.nav-links{display:flex; align-items:center; gap:30px; font-size:13.5px; letter-spacing:.03em;}
.nav-links a{color:var(--navy); position:relative; padding:4px 0; white-space:nowrap;}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--brass);
  transition:width .3s ease;
}
.nav-links a:hover::after{width:100%;}
.nav-cta{
  background:var(--navy); color:var(--paper) !important; padding:9px 20px; border-radius:2px;
  font-size:13px; letter-spacing:.05em;
}
.nav-cta::after{display:none;}
.nav-cta:hover{background:var(--steel);}
.menu-toggle{display:none; background:none; border:none; cursor:pointer; z-index:60;}
.menu-toggle span{display:block; width:24px; height:1.5px; background:var(--navy); margin:6px 0; transition:.3s;}

@media (max-width:920px){
  .nav-links{
    position:fixed; top:0; right:0; height:100vh; width:78%; max-width:340px;
    background:var(--navy); flex-direction:column; justify-content:center; align-items:flex-start;
    padding:40px; gap:26px; transform:translateX(100%); transition:transform .4s ease;
  }
  .nav-links.open{transform:translateX(0);}
  .nav-links a{color:var(--paper); font-size:16px;}
  .nav-cta{background:var(--brass); order:99;}
  .menu-toggle{display:block;}
}

/* ===== HERO ===== */
.hero{
  padding:168px 0 100px;
  overflow:hidden;
}
.hero .wrap{
  display:grid; grid-template-columns:1.15fr 0.85fr; gap:64px; align-items:center;
}
.hero-copy .eyebrow{margin-bottom:22px;}
.hero h1{
  font-size:clamp(30px, 4vw, 46px);
  line-height:1.55;
  color:var(--navy);
  margin-bottom:26px;
}
.hero h1 em{
  font-style:normal;
  position:relative;
  white-space:nowrap;
}
.hero h1 em::after{
  content:"";
  position:absolute;
  left:-2px; right:-2px; bottom:2px; height:9px;
  background:rgba(183,138,69,0.28);
  z-index:-1;
}
.hero-sub{
  font-size:15.5px; color:#4b4a42; max-width:46ch; margin-bottom:38px;
}
.hero-ctas{display:flex; gap:16px; flex-wrap:wrap; align-items:center;}
.btn-primary{
  background:var(--navy); color:var(--paper); padding:15px 30px; font-size:14px;
  letter-spacing:.05em; border-radius:2px; display:inline-block; transition:.25s ease;
  border:1px solid var(--navy);
}
.btn-primary:hover{background:transparent; color:var(--navy);}
.btn-ghost{
  padding:15px 26px; font-size:14px; letter-spacing:.05em; border-bottom:1px solid var(--navy);
  display:inline-flex; align-items:center; gap:8px; transition:.25s ease;
}
.btn-ghost:hover{gap:14px;}

.hero-visual{position:relative;}
.hero-frame{
  position:relative; border:1px solid var(--rule); padding:14px;
  background:var(--white);
  box-shadow:0 30px 60px -30px rgba(18,33,59,0.35);
}
.hero-frame img{width:100%; height:auto; display:block;}
.hero-frame .cap{
  font-family:var(--label); font-size:11px; letter-spacing:.12em; color:var(--steel);
  padding-top:12px; text-align:right; text-transform:uppercase;
}
.hero-corner{
  position:absolute; width:64px; height:64px; border:1px solid var(--brass);
  z-index:-1;
}
.hero-corner.tl{top:-16px; left:-16px; border-right:none; border-bottom:none;}
.hero-corner.br{bottom:-16px; right:-16px; border-left:none; border-top:none;}

@media (max-width:860px){
  .hero .wrap{grid-template-columns:1fr; gap:48px;}
  .hero{padding-top:140px;}
  .hero-visual{max-width:420px; margin:0 auto;}
}

/* ===== SECTION HEADINGS ===== */
.sec-head{max-width:640px; margin-bottom:56px;}
.sec-head h2{font-size:clamp(24px,3vw,32px); line-height:1.5;}
.sec-head p{margin-top:16px; color:#4b4a42; font-size:15px;}

.section-pad{padding:110px 0;}
.divider-line{border:none; border-top:1px solid var(--rule); width:100%;}

/* ===== PAIN POINTS ===== */
.pain{background:var(--paper-2);}
.pain-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:70px; align-items:center;}
.pain-image-wrap{position:relative;}
.pain-image-wrap img{border:1px solid var(--rule);}
.mark-annotation{
  position:absolute; top:-30px; right:-30px; width:130px; height:130px; pointer-events:none;
}
.mark-annotation circle, .mark-annotation path{
  stroke:var(--brass); stroke-width:2; fill:none;
  stroke-dasharray:400; stroke-dashoffset:400;
  transition:stroke-dashoffset 1.4s ease 0.3s;
}
.mark-annotation.is-visible circle, .mark-annotation.is-visible path{stroke-dashoffset:0;}

.pain-list{list-style:none;}
.pain-list li{
  display:flex; gap:16px; padding:20px 0; border-bottom:1px solid var(--rule);
  font-size:15.5px; color:#302f2a;
}
.pain-list li:first-child{padding-top:0;}
.pain-list li .mk{
  font-family:var(--serif); color:var(--brass); font-size:18px; flex:0 0 auto; line-height:1.7;
}
.pain-note{
  margin-top:32px; font-size:14px; color:#5c5b52; border-left:2px solid var(--steel-light);
  padding-left:18px;
}

@media (max-width:860px){
  .pain-grid{grid-template-columns:1fr;}
  .mark-annotation{display:none;}
}

/* ===== SERVICES ===== */
.services-grid{
  display:grid; grid-template-columns:repeat(2, 1fr); gap:1px; background:var(--rule);
  border:1px solid var(--rule);
}
.service-card{
  background:var(--paper); padding:38px 36px; position:relative;
}
.service-card h3{font-size:19px; margin-bottom:14px; color:var(--navy);}
.service-card p{font-size:14.5px; color:#4b4a42;}
.service-num{
  font-family:var(--label); font-size:12px; letter-spacing:.1em; color:var(--steel);
  margin-bottom:16px; display:block;
}
@media (max-width:700px){.services-grid{grid-template-columns:1fr;}}

.tools-block{margin-top:70px;}
.tools-block h4{
  font-family:var(--label); font-weight:500; font-size:13px; letter-spacing:.12em;
  color:var(--steel); text-transform:uppercase; margin-bottom:22px;
}
.tag-list{display:flex; flex-wrap:wrap; gap:10px;}
.tag{
  border:1px solid var(--rule); padding:9px 18px; font-size:13.5px; border-radius:2px;
  color:#302f2a; background:var(--white);
}

/* ===== PROCESS ===== */
.process{background:var(--navy); color:var(--paper);}
.process .sec-head h2{color:var(--paper);}
.process .sec-head p{color:#c7cede;}
.process .eyebrow{color:var(--brass-2);}
.process .eyebrow::before{background:var(--brass-2);}
.timeline{position:relative;}
.timeline::before{
  content:""; position:absolute; left:29px; top:12px; bottom:12px; width:1px;
  background:rgba(255,255,255,0.18);
}
.tl-item{display:grid; grid-template-columns:60px 1fr; gap:28px; padding:28px 0;}
.tl-num{
  font-family:var(--serif); font-size:22px; color:var(--brass-2);
  width:60px; height:60px; border:1px solid rgba(199,154,86,0.5); border-radius:50%;
  display:flex; align-items:center; justify-content:center; background:var(--navy);
  position:relative; z-index:1; flex-shrink:0;
}
.tl-body h3{color:var(--paper); font-size:18px; margin-bottom:10px;}
.tl-body p{color:#c7cede; font-size:14.5px; max-width:60ch;}

/* ===== ACHIEVEMENTS ===== */
.ach-grid{display:grid; grid-template-columns:1fr 1fr; gap:60px;}
.ach-text p{font-size:15px; color:#302f2a; margin-bottom:18px;}
.ach-confid{
  margin-top:26px; padding:22px 24px; background:var(--paper-2); border-left:2px solid var(--brass);
  font-size:13.5px; color:#5c5b52;
}
.ach-samples h4{
  font-family:var(--label); font-weight:500; font-size:13px; letter-spacing:.1em; color:var(--steel);
  text-transform:uppercase; margin-bottom:18px;
}
.sample-list{list-style:none;}
.sample-list li{
  padding:18px 0 18px 0; border-bottom:1px solid var(--rule); font-size:14.5px; color:#302f2a;
  display:flex; justify-content:space-between; gap:20px;
}
.sample-list li span.tag-mini{
  font-family:var(--label); font-size:11px; color:var(--steel); letter-spacing:.06em; white-space:nowrap;
}
@media (max-width:860px){.ach-grid{grid-template-columns:1fr;}}

/* ===== AMPLIA ===== */
.amplia{
  background:linear-gradient(180deg, var(--navy) 0%, var(--navy-2) 100%);
  color:var(--paper); position:relative; overflow:hidden;
}
.amplia::after{
  content:"";
  position:absolute; right:-120px; top:-120px; width:420px; height:420px;
  border:1px solid rgba(199,154,86,0.18); border-radius:50%;
}
.amplia-grid{display:grid; grid-template-columns:1fr 1fr; gap:70px; align-items:center;}
.amplia .eyebrow{color:var(--brass-2);}
.amplia .eyebrow::before{background:var(--brass-2);}
.amplia h2{color:var(--paper); font-size:clamp(24px,3vw,32px); margin-bottom:22px; line-height:1.5;}
.amplia p{color:#c7cede; font-size:15px; margin-bottom:18px;}
.amplia-list{list-style:none; margin:26px 0;}
.amplia-list li{
  padding:10px 0 10px 24px; position:relative; color:#dfe3ec; font-size:14.5px;
}
.amplia-list li::before{
  content:""; position:absolute; left:0; top:19px; width:10px; height:1px; background:var(--brass-2);
}
.amplia-quote{
  margin-top:40px; padding:30px 0 0; border-top:1px solid rgba(255,255,255,0.15);
}
.amplia-quote .tag-en{
  font-family:var(--label); letter-spacing:.14em; font-size:12px; color:var(--brass-2);
  text-transform:uppercase; margin-bottom:10px; display:block;
}
.amplia-quote .tagline-jp{font-family:var(--serif); font-size:19px; color:var(--paper); line-height:1.7;}
.amplia-quote .tagline-en{font-size:13px; color:#98a3bd; margin-top:8px; font-style:italic;}
.amplia-note{margin-top:26px; font-size:12.5px; color:#8994ae;}
.amplia-visual img{border:1px solid rgba(255,255,255,0.15);}
@media (max-width:860px){.amplia-grid{grid-template-columns:1fr;} .amplia-visual{order:-1; max-width:380px;}}

/* ===== ABOUT ===== */
.about-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:70px;}
.about-image img{border:1px solid var(--rule);}
.about-image .cap{font-family:var(--label); font-size:11px; letter-spacing:.1em; color:var(--steel); margin-top:14px;}
.about-lead{font-size:15.5px; color:#302f2a; margin-bottom:36px; max-width:56ch;}
.bio-tl{border-top:1px solid var(--rule);}
.bio-row{
  display:grid; grid-template-columns:110px 1fr; gap:24px; padding:20px 0; border-bottom:1px solid var(--rule);
  font-size:14.5px;
}
.bio-row .yr{font-family:var(--label); color:var(--steel); font-weight:500;}
.bio-row .desc{color:#302f2a;}
.strengths{margin-top:44px;}
.strengths h4{
  font-family:var(--label); font-weight:500; font-size:13px; letter-spacing:.1em; color:var(--steel);
  text-transform:uppercase; margin-bottom:20px;
}
.strengths ul{list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:14px 30px;}
.strengths li{
  font-size:14px; color:#302f2a; padding-left:20px; position:relative; line-height:1.7;
}
.strengths li::before{content:"—"; position:absolute; left:0; color:var(--brass);}
@media (max-width:860px){.about-grid{grid-template-columns:1fr;} .strengths ul{grid-template-columns:1fr;}}

/* ===== PRICING ===== */
.pricing{background:var(--paper-2);}
.price-box{
  border:1px solid var(--rule); background:var(--paper); padding:52px; text-align:center; max-width:640px; margin:0 auto;
}
.price-box .figure{font-family:var(--serif); font-size:clamp(34px,5vw,52px); color:var(--navy);}
.price-box .figure span{font-size:16px; font-family:var(--sans); color:#4b4a42; margin-left:8px;}
.price-box .desc{margin-top:18px; font-size:14.5px; color:#4b4a42; max-width:48ch; margin-left:auto; margin-right:auto;}
.price-box .foot{margin-top:22px; font-size:13.5px; color:var(--steel);}

/* ===== CONTACT ===== */
.contact{text-align:center;}
.contact .sec-head{margin:0 auto 44px; text-align:center;}
.contact-checklist{
  list-style:none; max-width:520px; margin:0 auto 46px; text-align:left; display:grid; gap:12px;
}
.contact-checklist li{font-size:14.5px; color:#302f2a; padding-left:22px; position:relative;}
.contact-checklist li::before{content:"□"; position:absolute; left:0; color:var(--brass);}
.contact-cards{display:flex; gap:24px; justify-content:center; flex-wrap:wrap; margin-bottom:44px;}
.contact-card{
  border:1px solid var(--rule); padding:30px 40px; min-width:220px; background:var(--white);
}
.contact-card .lbl{font-family:var(--label); font-size:11px; letter-spacing:.12em; color:var(--steel); text-transform:uppercase; margin-bottom:10px;}
.contact-card .val{font-size:15px; color:var(--navy);}

/* ===== FOOTER ===== */
footer{background:var(--navy); color:#98a3bd; padding:50px 0 30px; font-size:13px;}
.footer-inner{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:20px;}
.footer-brand{display:flex; align-items:center; gap:12px; color:var(--paper); font-family:var(--serif); font-size:14px;}
.footer-logo{height:20px; width:auto; opacity:.95;}
footer .copyright{color:#6c7794; margin-top:26px; font-size:12px; text-align:center;}

/* generic */
.center-text{text-align:center; margin:0 auto;}
